- client api:
- added /add_tags/add_tags, which does several kinds of tag content updates
- added /add_tags/clean_tags, which shows how hydrus will handle potential tags
- added /add_urls/associate_url, which allows you to associate urls with files
- added 'destination_page_name' to /add_urls/add_url, which will choose which destination watcher/url importer to place the url (or create a new one with that name)
- updated client api version to 2
- updated client help and unit tests for the above
- added a linked contents to the client api help
- improved some server error handling, mostly moving 403s to more correct 400s
- improved how missing parameter 400 errors are reported from the server vs deeper keyerrors that should be 500
- .
- the rest:
- tag repository update processing now saves progress to disk every million rows or every minute, whichever comes first. this reduces journaling bloat, improves recovery when the process quits unexpectedly, and makes for significantly faster cancel when requested by the user
- when processing duplicates and copying/merging/moving ratings, the 'source' file will now also overwrite the 'destination' file's rating if that destination rating is lower (previously, the rating would only go over if the dest had no rating set)
- added a new 'thumbnail experiment mode' under help->debug->gui. this will load fullsize thumbs and resize them in memory, please see release post for more details
- reduced menubar replacement flicker while, I believe, keeping and strengthening recent menubar indexing stability improvements
- the tag autocomplete dropdown will now always embed (instead of floating) in non-Windows
- when data seems non-decodable, the fallback encoding format is now that given by chardet, rather than utf-8
- improved serialisability of some pending tag data
- watchers can now hold and pass on fixed pending tag data
- gallery log objects can now hold and pass on fixed pending tag data
- file import objects can now hold and action fixed pending tag data
- hard drive imports now store their paths-to-tags info in this new format, directly in the file import objects
- improved some url-import page drop-target-selection logic
- improved error reporting when dropping/api-adding urls
- adjusted some url import workflow so big 'already in db' download lists should work a bit faster
- attempting to start the program with some external database files but not the main 'client.db/server.db' file will now cause a boot-fail exception with an explanation before any stub db files can be made
- tightened up some hydrus service login-capability-testing code that was previously stopping certain error states from recovering promptly, even on a force account refresh, while the service was maxed on bandwidth
- fixed a source of linux CRITICAL logspam related to several common dialogs
- improved ui stability on boot when file folders are missing (particularly for linux)
- improved stability for the various async tasks on the duplicates processing page, particularly for linux. I am not sure I got everything here, but it is definitely better
- did some more misc stability improvements, particularly in various boot fail scenarios
- completely removed an ancient and janky focus catcher widget from the main gui frame
- now various db caching is improved on the python side, removed a sqlite instruction to force temp information to always stay in memory--hot data returns to staying mostly in memory to start and then spools to disk if the transaction gets too large
- fixed approx bitrate sorting for malformed video files with explicitly '0' duration
- daemon_profile_mode now spams some more info about export folders
- fixed an issue that meant client db maintenance was firing its jobs too aggressively, regardless of idle status
- updated windows build to cv 4.0
- misc refactoring and fixes