mpcjanssen / simpletask-android

GNU General Public License v3.0
545 stars 124 forks source link

syncing with nextcloud does not always work correctly #1023

Closed srednax closed 4 years ago

srednax commented 4 years ago

I installed Simpletask Nextcloud (again), and it works fine except it does not sync correctly. If I edit the file on the server, adding a line, this sometimes shows up very briefly in the app, but then dissapears. Pressing "Sync" in the menu does not help. Just now, I added a task using the nextcloud built-in editor, and after starting simpletask it showed up, along with earlier changes. This does not feel safe. I plan to use simpletask on at least one more android device, using the same nextcloud file. Maybe the issue has to do with differences in dates on device and server?

srednax commented 4 years ago

Next I created a new task using simpletask. It showed up in the app very brievly, then dissapeared. The file on the nextcloud server does show the new line. I saw it's mod date at some point saying "in a few seconds". Pressing "Sync" does not help.

srednax commented 4 years ago

THIS SHOULD NOT BE CLOSED!!!!!

srednax commented 4 years ago

Adding a task in the app while it is out of sync whith the NC server, the server isn't updated. Pressing "Sync" does not help.

srednax commented 4 years ago

Now after some time, the file on the server is overwritten with the old version of the file, used by the app on my phone. Changes made to the file on the server is now lost. I did press "Sync" on the app a few times, in the hope of seing it update to the latest version, but no luck. Does the "Sync" button do anything at all? (either it deleted the file on the server, or the app did that for some other reason). I think it is wise to check if the file on the server is newer than the one on the phone, before overwriting it. In that case, I believe the phone should be responsible for merging. To compensate for possible time differences, I assume the value of the last-modified http header could be a help, if NC sends it.

srednax commented 4 years ago

The file on the NC server is updated correctly. But I don't think it is feasible to use the same file on more devices, or to edit the file on the NC server. And I consider this a relatively bad bug, as it may lead to data loss.

mpcjanssen commented 4 years ago

Indeed a very bad bug. I suspect the code which tries to determine if the server version of the file is newer is not working correctly. I will look into this.

mpcjanssen commented 4 years ago

Could you provide some logging (Settings->Other->View debug log) ?

mpcjanssen commented 4 years ago

THIS SHOULD NOT BE CLOSED!!!!!

As far as I can see you closed it yourself :) Be assured I take possible data loss very seriously.

srednax commented 4 years ago

torsdag den 7. november 2019 09.26.58 CET skrev Mark Janssen:

THIS SHOULD NOT BE CLOSED!!!!!

As far as I can see you closed it yourself :) Be assured I take possible data loss very seriously. Yes, I am not very fluent in github theese days... I tried to reopen, which appearently worked. :)

srednax commented 4 years ago

torsdag den 7. november 2019 09.26.13 CET skrev Mark Janssen:

Could you provide some logging (Settings->Other->View debug log) ?

Absoltely, here goes:

--------- beginning of system 11-06 20:28:46.682 25692 25692 D TextClassifierService: No configured system TextClassifierService --------- beginning of main 11-07 09:58:47.862 17245 17245 I AlarmReceiver: Executing Alarm callback 11-07 09:58:47.864 17245 17245 I Util : Sending file changed broadcast 11-07 09:58:47.867 17245 17245 I TodoApplication: Received broadcast FILE_SYNC 11-07 09:58:47.867 17245 17245 I TodoApplication: Loading todolist 11-07 09:58:47.868 17245 17245 D TodoList: Reload: From BROADCAST_FILE_SYNC 11-07 09:58:47.869 17245 17245 I Util : Sending file sync start broadcast 11-07 09:58:47.871 17245 17245 I FSQ : -> Reload 11-07 09:58:47.897 17245 17245 I Util : Sending file sync done changed broadcast 11-07 09:58:47.897 17245 17447 I FSQ : <- Reload 11-07 09:58:47.918 17245 17447 D OwnCloudClient #0: REQUEST PROPFIND / remote.php/webdav/Todo.txt 11-07 09:58:47.922 17245 17447 D AdvancedSslSocketFactory: Creating SSL Socket with remote nc.alweb.dk:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@9b7a0ea 11-07 09:58:47.923 17245 17447 D AdvancedSslSocketFactory: ... with connection timeout 5000 and socket timeout 40000 11-07 09:58:47.926 17245 17447 I ServerNameIndicator: SNI done, hostname: nc.alweb.dk 11-07 09:58:48.827 17245 17447 I TodoList: Remote version is same, load from cache 11-07 09:58:48.852 17245 17447 I Config : Getting 23 items todoList from cache 11-07 10:00:00.131 17245 17245 I Simpletask: onNewIntent: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=nl.mpcjanssen.simpletask.nextcloud/ nl.mpcjanssen.simpletask.Simpletask bnds=[540,729][810,1059] } 11-07 10:00:00.140 17245 17245 I Simpletask: onResume 11-07 10:00:00.140 17245 17245 D TodoList: Reload: Main activity resume 11-07 10:00:00.140 17245 17245 I Util : Sending file sync start broadcast 11-07 10:00:00.140 17245 17245 I FSQ : -> Reload 11-07 10:00:00.141 17245 19437 I FSQ : <- Reload 11-07 10:00:00.141 17245 17245 I Util : Sending file sync done changed broadcast 11-07 10:00:00.142 17245 17245 I Simpletask: handleIntent: from m_prefs state 11-07 10:00:00.144 17245 19437 D OwnCloudClient #0: REQUEST PROPFIND / remote.php/webdav/Todo.txt 11-07 10:00:00.146 17245 19437 D AdvancedSslSocketFactory: Creating SSL Socket with remote nc.alweb.dk:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@9b7a0ea 11-07 10:00:00.146 17245 19437 D AdvancedSslSocketFactory: ... with connection timeout 5000 and socket timeout 40000 11-07 10:00:00.150 17245 19437 I ServerNameIndicator: SNI done, hostname: nc.alweb.dk 11-07 10:00:00.152 17245 17245 I TaskAdapter: Text size = 14.0 11-07 10:00:00.152 17245 17245 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 10:00:00.152 17245 17245 D TodoList: Getting sorted and filtered tasks 11-07 10:00:00.157 17245 17245 D TodoList: Sorting and filtering tasks took 5 ms 11-07 10:00:00.161 17245 17245 D Simpletask: Scroll selection 11-07 10:00:00.161 17245 17245 D Event : update UI for event RESUME 11-07 10:00:00.162 17245 17245 D Simpletask: Update applyFilter bar 11-07 10:00:00.172 17245 17245 D Simpletask: Update applyFilter bar 11-07 10:00:01.633 17245 19437 I TodoList: Remote version is same, load from cache 11-07 10:00:01.639 17245 19437 I Config : Getting 23 items todoList from cache 11-07 10:00:15.640 17245 17245 I Simpletask: onMenuItemSelected: 2131296478 11-07 10:00:15.672 17245 17245 I Simpletask: Saving scroll offset 0, 0 11-07 10:00:15.687 17245 17245 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@ba69ed3 11-07 10:00:15.723 17245 17245 I Preferences: Registering broadcast receiver 11-07 10:00:15.977 17245 17265 D OpenGLRenderer: endAllActiveAnimators on 0x74a7d16100 (MenuPopupWindow$MenuDropDownListView) with handle 0x749729e860 11-07 10:00:21.051 17245 17245 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@1e2a8f5

mpcjanssen commented 4 years ago

Could you try your scenarios again with the Nextcloud release version from https://www.mpcjanssen.nl/artifacts/ ? It has better logging.

srednax commented 4 years ago

Here is a log from the new package, similar result.

--------- beginning of system 11-06 20:28:46.682 25692 25692 D TextClassifierService: No configured system TextClassifierService --------- beginning of main 11-07 14:23:30.458 9853 9853 I Simpletask: onResume 11-07 14:23:30.458 9853 9853 D TodoList: Reload: Main activity resume 11-07 14:23:30.458 9853 9853 I Util : Sending file sync start broadcast 11-07 14:23:30.459 9853 9853 I FSQ : -> Reload 11-07 14:23:30.459 9853 9853 I Util : Sending file sync done changed broadcast 11-07 14:23:30.459 9853 10725 I FSQ : <- Reload 11-07 14:23:30.462 9853 9853 I Simpletask: handleIntent: from m_prefs state 11-07 14:23:30.464 9853 10725 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:23:30.464 9853 9853 I TaskAdapter: Text size = 14.0 11-07 14:23:30.464 9853 9853 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 14:23:30.464 9853 9853 D TodoList: Getting sorted and filtered tasks 11-07 14:23:30.466 9853 10725 D AdvancedSslSocketFactory: Creating SSL Socket with remote nc.alweb.dk:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@9111e86 11-07 14:23:30.466 9853 10725 D AdvancedSslSocketFactory: ... with connection timeout 5000 and socket timeout 40000 11-07 14:23:30.467 9853 9853 D TodoList: Sorting and filtering tasks took 2 ms 11-07 14:23:30.467 9853 9853 I TaskAdapter: Restoring scroll offset 16, -101 11-07 14:23:30.467 9853 9853 D Event : update UI for event RESUME 11-07 14:23:30.468 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:23:30.470 9853 10725 I ServerNameIndicator: SSLSocket implementation: com.android.org.conscrypt.Java8FileDescriptorSocket 11-07 14:23:30.470 9853 10725 I ServerNameIndicator: SNI done, hostname: nc.alweb.dk 11-07 14:23:30.475 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:23:30.582 9853 9853 I Simpletask: Saving scroll offset 16, -101 11-07 14:23:30.583 9853 9853 I chatty : uid=10157(nl.mpcjanssen.simpletask.nextcloud) identical 54 lines 11-07 14:23:30.583 9853 9853 I Simpletask: Saving scroll offset 16, -101 11-07 14:23:32.177 9853 9853 I Simpletask: Saving scroll offset 16, -93 11-07 14:23:32.178 9853 9853 I Simpletask: Saving scroll offset 16, -93 11-07 14:23:32.190 9853 9853 I Simpletask: Saving scroll offset 16, -23 11-07 14:23:32.190 9853 9853 I Simpletask: Saving scroll offset 16, -23 11-07 14:23:32.207 9853 9853 I Simpletask: Saving scroll offset 15, -49 11-07 14:23:32.207 9853 9853 I Simpletask: Saving scroll offset 15, -49 11-07 14:23:32.224 9853 9853 I Simpletask: Saving scroll offset 14, -28 11-07 14:23:32.225 9853 9853 I Simpletask: Saving scroll offset 14, -28 11-07 14:23:32.242 9853 9853 I Simpletask: Saving scroll offset 12, -62 11-07 14:23:32.243 9853 9853 I Simpletask: Saving scroll offset 12, -62 11-07 14:23:32.258 9853 9853 I Simpletask: Saving scroll offset 9, -80 11-07 14:23:32.259 9853 9853 I Simpletask: Saving scroll offset 9, -80 11-07 14:23:32.276 9853 9853 I Simpletask: Saving scroll offset 7, -92 11-07 14:23:32.276 9853 9853 I Simpletask: Saving scroll offset 7, -92 11-07 14:23:32.292 9853 9853 I Simpletask: Saving scroll offset 5, -119 11-07 14:23:32.292 9853 9853 I Simpletask: Saving scroll offset 5, -119 11-07 14:23:32.308 9853 9853 I Simpletask: Saving scroll offset 3, -81 11-07 14:23:32.308 9853 9853 I Simpletask: Saving scroll offset 3, -81 11-07 14:23:32.325 9853 9853 I Simpletask: Saving scroll offset 1, -44 11-07 14:23:32.325 9853 9853 I Simpletask: Saving scroll offset 1, -44 11-07 14:23:32.341 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:23:32.341 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:23:33.892 9853 9853 I Simpletask: Saving scroll offset 0, -2 11-07 14:23:33.893 9853 9853 I Simpletask: Saving scroll offset 0, -2 11-07 14:23:33.906 9853 9853 I Simpletask: Saving scroll offset 0, -79 11-07 14:23:33.907 9853 9853 I Simpletask: Saving scroll offset 0, -79 11-07 14:23:33.923 9853 9853 I Simpletask: Saving scroll offset 1, -93 11-07 14:23:33.924 9853 9853 I Simpletask: Saving scroll offset 1, -93 11-07 14:23:33.939 9853 9853 I Simpletask: Saving scroll offset 2, -100 11-07 14:23:33.940 9853 9853 I Simpletask: Saving scroll offset 2, -100 11-07 14:23:33.960 9853 9853 I Simpletask: Saving scroll offset 4, -28 11-07 14:23:33.960 9853 9853 I Simpletask: Saving scroll offset 4, -28 11-07 14:23:33.973 9853 9853 I Simpletask: Saving scroll offset 5, -81 11-07 14:23:33.974 9853 9853 I Simpletask: Saving scroll offset 5, -81 11-07 14:23:33.992 9853 9853 I Simpletask: Saving scroll offset 6, -74 11-07 14:23:33.992 9853 9853 I Simpletask: Saving scroll offset 6, -74 11-07 14:23:34.007 9853 9853 I Simpletask: Saving scroll offset 7, -125 11-07 14:23:34.007 9853 9853 I Simpletask: Saving scroll offset 7, -125 11-07 14:23:34.025 9853 9853 I Simpletask: Saving scroll offset 9, -46 11-07 14:23:34.025 9853 9853 I Simpletask: Saving scroll offset 9, -46 11-07 14:23:34.040 9853 9853 I Simpletask: Saving scroll offset 10, -112 11-07 14:23:34.040 9853 9853 I Simpletask: Saving scroll offset 10, -112 11-07 14:23:34.057 9853 9853 I Simpletask: Saving scroll offset 12, -26 11-07 14:23:34.057 9853 9853 I Simpletask: Saving scroll offset 12, -26 11-07 14:23:34.074 9853 9853 I Simpletask: Saving scroll offset 13, -94 11-07 14:23:34.074 9853 9853 I Simpletask: Saving scroll offset 13, -94 11-07 14:23:34.090 9853 9853 I Simpletask: Saving scroll offset 14, -118 11-07 14:23:34.091 9853 9853 I Simpletask: Saving scroll offset 14, -118 11-07 14:23:34.107 9853 9853 I Simpletask: Saving scroll offset 16, -20 11-07 14:23:34.107 9853 9853 I Simpletask: Saving scroll offset 16, -20 11-07 14:23:34.124 9853 9853 I Simpletask: Saving scroll offset 16, -101 11-07 14:23:34.124 9853 9853 I Simpletask: Saving scroll offset 16, -101 11-07 14:23:34.988 9853 9853 D Simpletask: Handle mode 11-07 14:23:34.997 9853 9853 I Simpletask: Saving scroll offset 16, -101 11-07 14:23:40.385 9853 9853 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@335772f 11-07 14:23:40.402 9853 9853 I Simpletask: onCreate 11-07 14:23:40.427 9853 9853 I Simpletask: onResume 11-07 14:23:40.427 9853 9853 D TodoList: Reload: Main activity resume 11-07 14:23:40.427 9853 9853 I Util : Sending file sync start broadcast 11-07 14:23:40.427 9853 9853 I FSQ : -> Reload 11-07 14:23:40.427 9853 9853 I Util : Sending file sync done changed broadcast 11-07 14:23:40.428 9853 10745 I FSQ : <- Reload 11-07 14:23:40.428 9853 9853 I Simpletask: handleIntent: from m_prefs state 11-07 14:23:40.429 9853 9853 I TaskAdapter: Text size = 14.0 11-07 14:23:40.429 9853 9853 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 14:23:40.429 9853 9853 D TodoList: Getting sorted and filtered tasks 11-07 14:23:40.431 9853 10745 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:23:40.432 9853 9853 D TodoList: Sorting and filtering tasks took 3 ms 11-07 14:23:40.433 9853 9853 I TaskAdapter: Restoring scroll offset 16, -101 11-07 14:23:40.433 9853 9853 D Event : update UI for event RESUME 11-07 14:23:40.433 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:23:40.437 9853 10745 D AdvancedSslSocketFactory: Creating SSL Socket with remote nc.alweb.dk:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@385245b 11-07 14:23:40.437 9853 10745 D AdvancedSslSocketFactory: ... with connection timeout 5000 and socket timeout 40000 11-07 14:23:40.443 9853 10745 I ServerNameIndicator: SNI done, hostname: nc.alweb.dk 11-07 14:23:40.445 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:23:40.555 9853 9853 I Simpletask: Recreating options menu 11-07 14:23:40.555 9853 9853 D Simpletask: Handle mode 11-07 14:23:40.572 9853 9853 I Simpletask: Saving scroll offset 16, -101 11-07 14:23:44.501 9853 9853 I Simpletask: onMenuItemSelected: 2131296576 11-07 14:23:44.501 9853 9853 I Util : Sending file changed broadcast 11-07 14:23:44.503 9853 9853 I TodoApplication: Received broadcast FILE_SYNC 11-07 14:23:44.504 9853 9853 I TodoApplication: Loading todolist 11-07 14:23:44.504 9853 9853 D TodoList: Reload: From BROADCAST_FILE_SYNC 11-07 14:23:44.504 9853 9853 I Util : Sending file sync start broadcast 11-07 14:23:44.504 9853 9853 I FSQ : -> Reload 11-07 14:23:44.505 9853 9853 I Util : Sending file sync done changed broadcast 11-07 14:23:44.505 9853 10284 I FSQ : <- Reload 11-07 14:23:44.518 9853 10284 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:23:44.522 9853 10284 D AdvancedSslSocketFactory: Creating SSL Socket with remote nc.alweb.dk:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@f922b56 11-07 14:23:44.522 9853 10284 D AdvancedSslSocketFactory: ... with connection timeout 5000 and socket timeout 40000 11-07 14:23:44.526 9853 10284 I ServerNameIndicator: SNI done, hostname: nc.alweb.dk 11-07 14:23:44.848 9853 9870 D OpenGLRenderer: endAllActiveAnimators on 0x7496551d00 (MenuPopupWindow$MenuDropDownListView) with handle 0x749735fd40 11-07 14:24:01.155 9853 10725 D FileStore: Remote versions of /Todo.txt: id: 00014956ochmfdmmq7nv tag: 14547031e2ea4e6fb325093753abebd6 modified: 1573132587000 11-07 14:24:01.155 9853 10725 I TodoList: Remote version: 14547031e2ea4e6fb325093753abebd6 (current local 14547031e2ea4e6fb325093753abebd6) 11-07 14:24:01.156 9853 10725 I TodoList: Remote version is same, load from cache 11-07 14:24:01.160 9853 10725 I Config : Getting 24 items todoList from cache 11-07 14:24:11.094 9853 10745 D FileStore: Remote versions of /Todo.txt: id: 00014956ochmfdmmq7nv tag: 14547031e2ea4e6fb325093753abebd6 modified: 1573132587000 11-07 14:24:11.095 9853 10745 I TodoList: Remote version: 14547031e2ea4e6fb325093753abebd6 (current local 14547031e2ea4e6fb325093753abebd6) 11-07 14:24:11.095 9853 10745 I TodoList: Remote version is same, load from cache 11-07 14:24:11.100 9853 10745 I Config : Getting 24 items todoList from cache 11-07 14:24:15.080 9853 10284 D FileStore: Remote versions of /Todo.txt: id: 00014956ochmfdmmq7nv tag: 14547031e2ea4e6fb325093753abebd6 modified: 1573132587000 11-07 14:24:15.081 9853 10284 I TodoList: Remote version: 14547031e2ea4e6fb325093753abebd6 (current local 14547031e2ea4e6fb325093753abebd6) 11-07 14:24:15.081 9853 10284 I TodoList: Remote version is same, load from cache 11-07 14:24:15.086 9853 10284 I Config : Getting 24 items todoList from cache 11-07 14:24:43.685 9853 9853 I Simpletask: onMenuItemSelected: 2131296576 11-07 14:24:43.686 9853 9853 I Util : Sending file changed broadcast 11-07 14:24:43.689 9853 9853 I TodoApplication: Received broadcast FILE_SYNC 11-07 14:24:43.689 9853 9853 I TodoApplication: Loading todolist 11-07 14:24:43.689 9853 9853 D TodoList: Reload: From BROADCAST_FILE_SYNC 11-07 14:24:43.689 9853 9853 I Util : Sending file sync start broadcast 11-07 14:24:43.689 9853 9853 I FSQ : -> Reload 11-07 14:24:43.690 9853 9853 I Util : Sending file sync done changed broadcast 11-07 14:24:43.690 9853 10267 I FSQ : <- Reload 11-07 14:24:43.701 9853 10267 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:24:43.705 9853 10267 D AdvancedSslSocketFactory: Creating SSL Socket with remote nc.alweb.dk:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@f922b56 11-07 14:24:43.705 9853 10267 D AdvancedSslSocketFactory: ... with connection timeout 5000 and socket timeout 40000 11-07 14:24:43.710 9853 10267 I ServerNameIndicator: SNI done, hostname: nc.alweb.dk 11-07 14:24:44.026 9853 9870 D OpenGLRenderer: endAllActiveAnimators on 0x7493479400 (MenuPopupWindow$MenuDropDownListView) with handle 0x7497391c60 11-07 14:24:45.342 9853 9853 D TodoList: Select 11-07 14:24:45.343 9853 9853 I Simpletask: Highligh selection 11-07 14:24:45.349 9853 9853 I Simpletask: Recreating options menu 11-07 14:24:45.350 9853 9853 D Simpletask: Handle mode 11-07 14:24:46.901 9853 9853 I Simpletask: Recreating options menu 11-07 14:24:46.901 9853 9853 D Simpletask: Handle mode 11-07 14:24:50.320 9853 9853 I Simpletask: Recreating options menu 11-07 14:24:50.320 9853 9853 D Simpletask: Handle mode 11-07 14:24:52.609 9853 9853 I Simpletask: Saving scroll offset 16, -81 11-07 14:24:52.622 9853 9853 I Simpletask: Saving scroll offset 16, -2 11-07 14:24:52.642 9853 9853 I Simpletask: Saving scroll offset 14, -103 11-07 14:24:52.661 9853 9853 I Simpletask: Saving scroll offset 13, -118 11-07 14:24:52.674 9853 9853 I Simpletask: Saving scroll offset 12, -57 11-07 14:24:52.689 9853 9853 I Simpletask: Saving scroll offset 11, -37 11-07 14:24:52.706 9853 9853 I Simpletask: Saving scroll offset 10, -10 11-07 14:24:52.724 9853 9853 I Simpletask: Saving scroll offset 8, -81 11-07 14:24:52.740 9853 9853 I Simpletask: Saving scroll offset 7, -59 11-07 14:24:52.756 9853 9853 I Simpletask: Saving scroll offset 6, -50 11-07 14:24:52.773 9853 9853 I Simpletask: Saving scroll offset 5, -84 11-07 14:24:52.789 9853 9853 I Simpletask: Saving scroll offset 4, -74 11-07 14:24:52.806 9853 9853 I Simpletask: Saving scroll offset 3, -76 11-07 14:24:52.823 9853 9853 I Simpletask: Saving scroll offset 2, -82 11-07 14:24:52.839 9853 9853 I Simpletask: Saving scroll offset 1, -85 11-07 14:24:52.855 9853 9853 I Simpletask: Saving scroll offset 0, -61 11-07 14:24:52.872 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:24:54.444 9853 9853 I Simpletask: onMenuItemSelected: 16908332 11-07 14:24:54.445 9853 9853 D Simpletask: Handle mode 11-07 14:24:54.446 9853 9853 D TodoList: Clear selection 11-07 14:24:54.446 9853 9853 D Event : update UI for event CLEAR_SELECTION 11-07 14:24:54.447 9853 9853 I Simpletask: Highligh selection 11-07 14:24:54.458 9853 9853 I Simpletask: Recreating options menu 11-07 14:24:54.458 9853 9853 D Simpletask: Handle mode 11-07 14:24:54.523 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:24:56.946 9853 9853 I Simpletask: onMenuItemSelected: 16908332 11-07 14:24:56.947 9853 9853 D Simpletask: Handle mode 11-07 14:24:57.394 9853 9853 I Simpletask: Recreating options menu 11-07 14:24:57.395 9853 9853 D Simpletask: Handle mode 11-07 14:24:58.628 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:24:58.637 9853 9853 D TodoList: Clear selection 11-07 14:24:58.637 9853 9853 D Event : update UI for event QUICK_FILTER_ITEM_CLICK 11-07 14:24:58.647 9853 9853 I Simpletask: Highligh selection 11-07 14:24:58.648 9853 9853 I TaskAdapter: Text size = 14.0 11-07 14:24:58.649 9853 9853 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 14:24:58.649 9853 9853 D TodoList: Getting sorted and filtered tasks 11-07 14:24:58.657 9853 9853 D TodoList: Sorting and filtering tasks took 8 ms 11-07 14:24:58.659 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:24:58.661 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:24:58.666 9853 9853 I Simpletask: Recreating options menu 11-07 14:24:58.667 9853 9853 D Simpletask: Handle mode 11-07 14:24:58.717 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:25:00.264 9853 9853 I Simpletask: Recreating options menu 11-07 14:25:00.264 9853 9853 D Simpletask: Handle mode 11-07 14:25:03.555 9853 9853 I Simpletask: onMenuItemSelected: 2131296576 11-07 14:25:03.556 9853 9853 I Util : Sending file changed broadcast 11-07 14:25:03.558 9853 9853 I TodoApplication: Received broadcast FILE_SYNC 11-07 14:25:03.558 9853 9853 I TodoApplication: Loading todolist 11-07 14:25:03.558 9853 9853 D TodoList: Reload: From BROADCAST_FILE_SYNC 11-07 14:25:03.558 9853 9853 I Util : Sending file sync start broadcast 11-07 14:25:03.559 9853 9853 I FSQ : -> Reload 11-07 14:25:03.559 9853 9853 I Util : Sending file sync done changed broadcast 11-07 14:25:03.559 9853 10475 I FSQ : <- Reload 11-07 14:25:03.571 9853 10475 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:25:03.576 9853 10475 D AdvancedSslSocketFactory: Creating SSL Socket with remote nc.alweb.dk:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@385245b 11-07 14:25:03.576 9853 10475 D AdvancedSslSocketFactory: ... with connection timeout 5000 and socket timeout 40000 11-07 14:25:03.582 9853 10475 I ServerNameIndicator: SNI done, hostname: nc.alweb.dk 11-07 14:25:03.889 9853 9870 D OpenGLRenderer: endAllActiveAnimators on 0x74a63b3a00 (MenuPopupWindow$MenuDropDownListView) with handle 0x7497391fa0 11-07 14:25:14.295 9853 10267 D FileStore: Remote versions of /Todo.txt: id: 00014956ochmfdmmq7nv tag: 00cdc878577702ebaabee8f0fdd27173 modified: 1573133075000 11-07 14:25:14.295 9853 10267 I TodoList: Remote version: 00cdc878577702ebaabee8f0fdd27173 (current local 14547031e2ea4e6fb325093753abebd6) 11-07 14:25:14.295 9853 10267 I TodoList: Remote version is different, sync 11-07 14:25:14.301 9853 10267 I Config : Getting 24 items todoList from cache 11-07 14:25:14.310 9853 10267 I FileStore: Loading file from Nextcloud: /Todo.txt 11-07 14:25:14.311 9853 10267 D OwnCloudClient #0: REQUEST GET /remote.php/webdav/Todo.txt 11-07 14:25:14.447 9853 10267 I DownloadFileRemoteOperation: Download of /Todo.txt to /data/data/nl.mpcjanssen.simpletask.nextcloud/cache/Todo.txt: Operation finished with HTTP status code 200 (success) 11-07 14:25:14.457 9853 10267 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:25:20.592 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:25:20.650 9853 9853 I Simpletask: onCreate 11-07 14:25:20.679 9853 9853 I Simpletask: onResume 11-07 14:25:20.679 9853 9853 D TodoList: Reload: Main activity resume 11-07 14:25:20.679 9853 9853 I Util : Sending file sync start broadcast 11-07 14:25:20.679 9853 9853 I FSQ : -> Reload 11-07 14:25:20.679 9853 9853 I Util : Sending file sync done changed broadcast 11-07 14:25:20.679 9853 10482 I FSQ : <- Reload 11-07 14:25:20.680 9853 9853 I Simpletask: handleIntent: from m_prefs state 11-07 14:25:20.681 9853 9853 I TaskAdapter: Text size = 14.0 11-07 14:25:20.681 9853 9853 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 14:25:20.681 9853 9853 D TodoList: Getting sorted and filtered tasks 11-07 14:25:20.684 9853 9853 D TodoList: Sorting and filtering tasks took 2 ms 11-07 14:25:20.684 9853 10482 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:25:20.684 9853 9853 I TaskAdapter: Restoring scroll offset 0, 0 11-07 14:25:20.684 9853 9853 D Event : update UI for event RESUME 11-07 14:25:20.684 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:25:20.688 9853 10482 D AdvancedSslSocketFactory: Creating SSL Socket with remote nc.alweb.dk:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@9111e86 11-07 14:25:20.691 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:25:20.692 9853 10482 D AdvancedSslSocketFactory: ... with connection timeout 5000 and socket timeout 40000 11-07 14:25:20.696 9853 10482 I ServerNameIndicator: SNI done, hostname: nc.alweb.dk 11-07 14:25:20.753 9853 9853 I Simpletask: Recreating options menu 11-07 14:25:20.753 9853 9853 D Simpletask: Handle mode 11-07 14:25:20.769 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:25:21.727 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:25:21.774 9853 9853 I Simpletask: onCreate 11-07 14:25:21.795 9853 9853 I Simpletask: onResume 11-07 14:25:21.795 9853 9853 D TodoList: Reload: Main activity resume 11-07 14:25:21.795 9853 9853 I Util : Sending file sync start broadcast 11-07 14:25:21.796 9853 9853 I FSQ : -> Reload 11-07 14:25:21.796 9853 9853 I Util : Sending file sync done changed broadcast 11-07 14:25:21.796 9853 9872 I FSQ : <- Reload 11-07 14:25:21.797 9853 9853 I Simpletask: handleIntent: from m_prefs state 11-07 14:25:21.797 9853 9853 I TaskAdapter: Text size = 14.0 11-07 14:25:21.798 9853 9853 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 14:25:21.798 9853 9853 D TodoList: Getting sorted and filtered tasks 11-07 14:25:21.798 9853 9872 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:25:21.800 9853 9853 D TodoList: Sorting and filtering tasks took 3 ms 11-07 14:25:21.800 9853 9853 I TaskAdapter: Restoring scroll offset 0, 0 11-07 14:25:21.800 9853 9853 D Event : update UI for event RESUME 11-07 14:25:21.800 9853 9872 D AdvancedSslSocketFactory: Creating SSL Socket with remote nc.alweb.dk:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@6ce5a3e 11-07 14:25:21.801 9853 9872 D AdvancedSslSocketFactory: ... with connection timeout 5000 and socket timeout 40000 11-07 14:25:21.801 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:25:21.801 9853 9872 I ServerNameIndicator: SNI done, hostname: nc.alweb.dk 11-07 14:25:21.808 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:25:21.881 9853 9853 I Simpletask: Recreating options menu 11-07 14:25:21.881 9853 9853 D Simpletask: Handle mode 11-07 14:25:21.892 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:25:27.825 9853 9853 I Simpletask: onMenuItemSelected: 2131296514 11-07 14:25:27.876 9853 9853 I Simpletask: Saving scroll offset 0, 0 11-07 14:25:27.892 9853 9853 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@5ceb683 11-07 14:25:27.927 9853 9853 I Preferences: Registering broadcast receiver 11-07 14:25:28.192 9853 9870 D OpenGLRenderer: endAllActiveAnimators on 0x749451df00 (MenuPopupWindow$MenuDropDownListView) with handle 0x749428fc00 11-07 14:25:29.365 9853 9863 I etask.nextclou: Background concurrent copying GC freed 245081(9MB) AllocSpace objects, 27(796KB) LOS objects, 61% free, 7MB/19MB, paused 10.507ms total 99.238ms 11-07 14:25:33.840 9853 9853 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@a7fceda 11-07 14:25:34.340 9853 10475 D FileStore: Remote versions of /Todo.txt: id: 00014956ochmfdmmq7nv tag: 00cdc878577702ebaabee8f0fdd27173 modified: 1573133075000 11-07 14:25:34.340 9853 10475 I TodoList: Remote version: 00cdc878577702ebaabee8f0fdd27173 (current local 14547031e2ea4e6fb325093753abebd6) 11-07 14:25:34.341 9853 10475 I TodoList: Remote version is different, sync 11-07 14:25:34.345 9853 10475 I Config : Getting 24 items todoList from cache 11-07 14:25:34.363 9853 10475 I FileStore: Loading file from Nextcloud: /Todo.txt 11-07 14:25:34.364 9853 10475 D OwnCloudClient #0: REQUEST GET /remote.php/webdav/Todo.txt 11-07 14:25:34.499 9853 10475 I DownloadFileRemoteOperation: Download of /Todo.txt to /data/data/nl.mpcjanssen.simpletask.nextcloud/cache/Todo.txt: Operation finished with HTTP status code 200 (success) 11-07 14:25:34.504 9853 10475 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:25:44.921 9853 10267 D TodoList: Fill todolist 11-07 14:25:44.959 9853 10267 D TodoList: Notified changed 11-07 14:25:44.959 9853 10267 D TodoList: Clear selection 11-07 14:25:44.960 9853 10267 I TodoList: TodoList loaded from dropbox 11-07 14:25:44.961 9853 9853 I Simpletask: Highligh selection 11-07 14:25:44.961 9853 9853 I TodoApplication: Received broadcast TASKLIST_CHANGED 11-07 14:25:44.962 9853 9853 I TodoApplication: Redrawing widgets 11-07 14:25:44.963 9853 9853 I Simpletask: Tasklist changed, refiltering adapter 11-07 14:25:44.964 9853 9853 I TaskAdapter: Text size = 14.0 11-07 14:25:44.964 9853 9853 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 14:25:44.964 9853 9853 D TodoList: Getting sorted and filtered tasks 11-07 14:25:44.968 9853 9853 D TodoList: Sorting and filtering tasks took 3 ms 11-07 14:25:44.969 9853 9853 I TaskAdapter: Restoring scroll offset 0, 0 11-07 14:25:44.969 9853 9853 D Event : update UI for event TASK_LIST_CHANGED 11-07 14:25:44.971 9853 9853 I Simpletask: Recreating options menu 11-07 14:25:44.972 9853 9853 D Simpletask: Handle mode 11-07 14:25:44.988 9853 9853 I TaskAdapter: Text size = 14.0 11-07 14:25:44.988 9853 9853 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 14:25:44.989 9853 9853 D TodoList: Getting sorted and filtered tasks 11-07 14:25:44.992 9853 9853 D TodoList: Sorting and filtering tasks took 4 ms 11-07 14:25:44.993 9853 9853 I TaskAdapter: Restoring scroll offset 0, 0 11-07 14:25:44.994 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:25:44.995 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:25:51.317 9853 10482 D FileStore: Remote versions of /Todo.txt: id: 00014956ochmfdmmq7nv tag: 00cdc878577702ebaabee8f0fdd27173 modified: 1573133075000 11-07 14:25:51.318 9853 10482 I TodoList: Remote version: 00cdc878577702ebaabee8f0fdd27173 (current local 00cdc878577702ebaabee8f0fdd27173) 11-07 14:25:51.318 9853 10482 I TodoList: Remote version is same, load from cache 11-07 14:25:51.322 9853 10482 I Config : Getting 24 items todoList from cache 11-07 14:25:51.895 9853 9853 I AlarmReceiver: Executing Alarm callback 11-07 14:25:51.895 9853 9853 I Util : Sending file changed broadcast 11-07 14:25:51.896 9853 9853 I TodoApplication: Received broadcast FILE_SYNC 11-07 14:25:51.897 9853 9853 I TodoApplication: Loading todolist 11-07 14:25:51.897 9853 9853 D TodoList: Reload: From BROADCAST_FILE_SYNC 11-07 14:25:51.897 9853 9853 I Util : Sending file sync start broadcast 11-07 14:25:51.897 9853 9853 I FSQ : -> Reload 11-07 14:25:51.897 9853 9853 I Util : Sending file sync done changed broadcast 11-07 14:25:51.898 9853 10256 I FSQ : <- Reload 11-07 14:25:51.908 9853 10256 D OwnCloudClient #0: REQUEST PROPFIND /remote.php/webdav/Todo.txt 11-07 14:25:55.485 9853 9872 D FileStore: Remote versions of /Todo.txt: id: 00014956ochmfdmmq7nv tag: 00cdc878577702ebaabee8f0fdd27173 modified: 1573133075000 11-07 14:25:55.485 9853 9872 I TodoList: Remote version: 00cdc878577702ebaabee8f0fdd27173 (current local 00cdc878577702ebaabee8f0fdd27173) 11-07 14:25:55.485 9853 9872 I TodoList: Remote version is same, load from cache 11-07 14:25:55.488 9853 9872 I Config : Getting 24 items todoList from cache 11-07 14:26:04.962 9853 10760 D CalendarSync: Checking whether calendar sync is needed 11-07 14:26:05.151 9853 10475 D TodoList: Fill todolist 11-07 14:26:05.232 9853 10475 D TodoList: Notified changed 11-07 14:26:05.232 9853 10475 D TodoList: Clear selection 11-07 14:26:05.232 9853 10475 I TodoList: TodoList loaded from dropbox 11-07 14:26:05.232 9853 9853 I Simpletask: Highligh selection 11-07 14:26:05.233 9853 9853 I TodoApplication: Received broadcast TASKLIST_CHANGED 11-07 14:26:05.234 9853 9853 I TodoApplication: Redrawing widgets 11-07 14:26:05.235 9853 9853 I Simpletask: Tasklist changed, refiltering adapter 11-07 14:26:05.236 9853 9853 I TaskAdapter: Text size = 14.0 11-07 14:26:05.236 9853 9853 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 14:26:05.236 9853 9853 D TodoList: Getting sorted and filtered tasks 11-07 14:26:05.240 9853 9853 D TodoList: Sorting and filtering tasks took 3 ms 11-07 14:26:05.240 9853 9853 I TaskAdapter: Restoring scroll offset 0, 0 11-07 14:26:05.240 9853 9853 D Event : update UI for event TASK_LIST_CHANGED 11-07 14:26:05.241 9853 9853 I TaskAdapter: Text size = 14.0 11-07 14:26:05.241 9853 9853 I TaskAdapter: setFilteredTasks called: nl.mpcjanssen.simpletask.task.TodoList@25a2816 11-07 14:26:05.241 9853 9853 D TodoList: Getting sorted and filtered tasks 11-07 14:26:05.244 9853 9853 D TodoList: Sorting and filtering tasks took 3 ms 11-07 14:26:05.244 9853 9853 I TaskAdapter: Restoring scroll offset 0, 0 11-07 14:26:05.245 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:26:05.246 9853 9853 D Simpletask: Update applyFilter bar 11-07 14:26:05.249 9853 9853 I Simpletask: Recreating options menu 11-07 14:26:05.249 9853 9853 D Simpletask: Handle mode 11-07 14:26:22.521 9853 10256 D FileStore: Remote versions of /Todo.txt: id: 00014956ochmfdmmq7nv tag: 00cdc878577702ebaabee8f0fdd27173 modified: 1573133075000 11-07 14:26:22.521 9853 10256 I TodoList: Remote version: 00cdc878577702ebaabee8f0fdd27173 (current local 00cdc878577702ebaabee8f0fdd27173) 11-07 14:26:22.521 9853 10256 I TodoList: Remote version is same, load from cache 11-07 14:26:22.523 9853 10256 I Config : Getting 24 items todoList from cache 11-07 14:26:25.234 9853 10760 D CalendarSync: Checking whether calendar sync is needed

Den 7. november 2019 11.40.27 CET, Mark Janssen notifications@github.com skrev:

Could you try your scenarios again with the Nextcloud release version from https://www.mpcjanssen.nl/artifacts/ ? It has better logging.

-- You are receiving this because you modified the open/close state. Reply to this email directly or view it on GitHub: https://github.com/mpcjanssen/simpletask-android/issues/1023#issuecomment-551023690

-- Sendt fra min fairphone

mpcjanssen commented 4 years ago

It seems the change is detected but the new remote contents are never persisted in the local cache.

mpcjanssen commented 4 years ago

If you changed the remote file, used sync and then terminating simpletask by swiping it from the app list. Do you then see the remote changes when you reopen simpletask?

srednax commented 4 years ago

torsdag den 7. november 2019 20.04.23 CET skrev Mark Janssen:

If you changed the remote file, used sync and then terminating simpletask by swiping it from the app list. Do you then see the remote changes when you reopen simpletask?

That has worked some times, but sometimes the file on the server has been overwritten by the file from the android device.

My nc server at nc.alweb.dk is currently not working, but I got an account on thegood.cloud, which appears to work better. I will do some tests with that tomorrow.

-- Anders

mpcjanssen commented 4 years ago

I have made some more changes and uploaded an updated version to https://www.mpcjanssen.nl/artifacts could you try with that version again.

srednax commented 4 years ago

I'm testing, but meanwhile I updated nextcloud, and that made things much better, l do not experience problems now.

I do have a suggestion though, an that is to automatically create pr list views, and to navigate them by swiping horizontally.

I also think the default order should be order of creation/order in file, and it should be possible to reorder items by dragging them. Ordering by using priority manually is quite tedious.

Kindly, Anders

Den 8. november 2019 12.07.36 CET, Mark Janssen notifications@github.com skrev:

I have made some more changes and uploaded an updated version to https://www.mpcjanssen.nl/artifacts could you try with that version again.

-- You are receiving this because you modified the open/close state. Reply to this email directly or view it on GitHub: https://github.com/mpcjanssen/simpletask-android/issues/1023#issuecomment-551593576

-- Sendt fra min fairphone

mpcjanssen commented 4 years ago

I am a bit hesitant to change defaults, because it will break someone's workflow. So making file order the default is not an options.

pr list views sound like a good idea, but:

There is already an issue for dragging: #39

srednax commented 4 years ago

Hi Mark,

Thanks for being so helpful. Read on if you are interrested in my opinion on the app, og leave it be if you want to!

søndag den 10. november 2019 18.27.18 CET skrev Mark Janssen:

I am a bit hesitant to change defaults, because it will break someone's workflow. So making file order the default is not an options.

Too bad. Especially since there is no way to configure this in a persistant way. Maybe it would be an idea to add that.

pr list views sound like a good idea, but:

  • You want pr views someone else wants context views etc. so there is no one way which will work well for everybody and this breaks one of the design principles of simpletask - It will collide with the swiping for the drawers.

The point is to make it as easy as possible to navigate one's items.

The most logic views are @lists and some sort of "what to do next" view, which would be stuff due soon - all items due today (and overdue) and after that sorted by priority and then file order - that sort order would actually most often be correct for lists as well.

As the app works now, there is no built in way to switch between lists easily, you need to pull out the left drawer and tap at least twice. I save filters pr list as I add new ones, but I think that functionality should be automated somehow.

Currently it is quite difficult to set up a meaningful view of a list, and even when done, there is a grouping that does not make much sense when looking at a single list, and that does not behave in any obviously meaningful way, eg if I create a filter of a single list, and then sorts by completed, priority and due date, items are grouped by priority, instead of just listed by priority, while alphabetical sorting in the top does not cause a grouping.

The best possible view of a list needs to be set up pr list as it is now, and saved to access it easily. Tedious.

There is already an issue for dragging: #39

Nice, but probably challenging to decide how to implement :)

Kindly, Anders

mpcjanssen commented 4 years ago

Fix is live in 10.3.2.

mpcjanssen commented 4 years ago

For faster list switching see #1020 for some ideas. I really do want to implement single select mode. Also, are you aware of the right drawer?

srednax commented 4 years ago

tirsdag den 12. november 2019 18.32.04 CET skrev Mark Janssen:

For faster list switching see #1020 for some ideas. I really do want to implement single select mode. Also, are you aware of the right drawer?

Yes. I manually created "quick filters" for parts of my lists, but they are still somehow missorted, and there is no way of persistantly save a sane sorting. So now I use the sorting panel excluseively. Its lists and tags panels does the same thing as the quick filters but scrolling is less likely as they are separated in two panels. This way my sane sorting order stays, currently it is List, Completed, Priority, Tag, File Order. AFAICS antying put below file order have no effect, which is of course correct behavior.

-- Anders

srednax commented 4 years ago

tirsdag den 12. november 2019 18.32.04 CET skrev Mark Janssen:

For faster list switching see #1020 for some ideas. I really do want to implement single select mode. Also, are you aware of the right drawer? Oh, and did I thank you for your work? I can't thank you enough, as this is a really nice app, something I have been looking for for a long time :)

-- Anders

smichel17 commented 4 years ago

Oh, and did I thank you for your work?

I'll also chime in and say it's really impressive how long and consistently you've maintained ST.

I haven't been around as much recently because my life has been simpler → less need of ST (mostly just using index cards at the moment) → fewer itches to scratch. But I guess I will probably be back at some point when index cards don't cut it anymore :)