misc
- optimised large tag filter edit UI. you can now paste 5,000 items into an empty tag filter blacklist in less than a second, and if you have a big tag filter, removing or adding one thing is now instant (previously, this stuff would lag 4 seconds or more, sometimes multiple minutes!!)
- the ugoira 'num frames' counting method now discludes files ending in .js/.json, to catch future bundling of frame timings
- the cbz scanning tech should now recognise cbzs with four or fewer pages
- a legacy 'is this image all good?' check that happens on PIL-loading is now gone. this improves rendering for a variety of truncated files and clarifies some error messages (previously, this thing was just failing silently)
- fixed the delete file pre-flight logic so users on the non-advanced delete dialog can now delete repository updates. previously, they saw the menu entry, but hitting it was a no-op
better hash predicate parsing
system:hash
labels are a little different now. they'll saysystem:hash (md5) is abcd...
, with the algorithm after the "hash". hash is omitted for sha256 (the hydrus default). this eases parsingsystem:similar to data
labels are a little different. they'll say 'distance' instead of 'max hamming', and the number and type of hashes they hold, and if they hold only pixel hashes, the distance is not statedsystem:hash
predicate parsing is now more flexible. you can put the hash type pretty much anywhere now.system:similar to
andsystem:similar to data
predicate parsing is now more flexible. more combinations are allowed, and you can not include distance and it'll be fine- these three hash predicates now copy to clipboard with all their hashes explicitly enumerated, making strings that are fully parsable! this is a big step forward in a completely sealed import-export predicate parsing loop; now I have the tech set up to export a different phrase to clipboard than what you see in the label, I just need the examples of where it goes wrong. if there is a system predicate that copies to clipboard in a way that won't parse back, let me know and I'll see if I can fix it.
- added more unit tests for this parsing
documentation and cleanup
- wrote a guide on how to install 'Git for Windows' for the 'running from source' help. although most of the settings in its marathon 12-page install wizard can be left as default, the technical questions can be intimidating, so I've written them all out for a nice simple install. also brushed up some of the surrounding help here
- added a warning to the regular 'installing and updating' help regarding the danger of test-running extract releases before updating (you can overwrite your database by accident)
- thanks to a user, the filetypes help document is updated with Ugoira and CBZ info
- all the 'HydrusFiletypeHandling' files are refactored to a new 'files' module. there's a bunch of them these days!
- the hydrus.core.images module is moved beneath this 'files' module too
- the file log list panel right-click menu now says 'open URLs'/'open files' locations' depending on whether you are looking at a URL import log or local HDD import log
client api
- the
file_metadata
call now returnsfiletype_forced
and, if so, alsooriginal_mime
to talk about the new forced filetype system - the client api help and unit tests are updated to test this is working ok
- fixed a typo that was causing too much work in the updated file info manager call (and was often returning 'null' results for half-cached
file_metadata
requests withonly_return_basic_information=true
) - thanks to a user, the
/add_urls/get_url_info
Client API call now has a cache timeout of ten minutes, and the/add_urls/get_url_files
call now has a timeout of 30 seconds if all the files are 'already in db'. this should automatically reduce some overhead for several programs that talk to the Client API a lot about URLs - the client api version is now 58