- if the currently focused thumbnail is removed from view, the earliest non-selected thumbnail will be remembered as a 'ghost' focus if the user then presses the arrow keys to continue to navigate
- if the user presses an arrow key to navigate the thumbs when there is no known focus thumb, the first will be assumed
- the listbook now supports duplicate display names
- services of the same type can now have the same name
- cleaned some listbook code
- inbox or custom filters will now render first-file animations correctly on initialisation
- fixed the 'change' event on the new timedeltabutton, which was not updating the thread checker on dialog ok
- subscriptions will now naturally terminate their gallery sync on a 404, rather than dumping out with an error
- fixed some false positive 'paths are different' testing in default directory mirroring code (used in db backup, restore) that was slowing these operations down
- if database files have the same file and modified timestamp, they won't be re-copied in a backup or restore
- client external storage location recovery/rebalancing will now skip over files with the same size and modified date
- if you backup the client and have external file storage locations, a popup will remind you to back those locations up manually
- did a quick pass over some help stuff, and added a 'can the client manage files from their origial locations' bit to the faq
- created a simple no-reward patreon, wrote some help about it, and added links in the usual places
- empty 'read' a/c dropdowns will be more careful about idly refreshing their system preds, hopefully leading to less accidental gui hang on large jobs
- main gui menus will be more careful about refreshing themselves when called, hopefully leading to less accidental gui hang on large jobs
- text snippets are stored inside the client db in a better way
- added flat service directory structure storage support to the client db
- fixed a mapping petition rescind sql typo
- fixed the v198->v199 server update code
- misc cleanup