- misc:
- the new siblings and parents taglist menus now copy just the actual tag when you click, excluding the 'ideal/child/parent:' prefixes
- added a checkbox to options->files and trash that allows you to automatically prefix hashes copied to clipboard with their hash type in a booru-lookup friendly manner, such as "md5:2496dabcbd69e3c56a5d8caabb7acde5"
- the media viewer now remembers if it was previously maximised when you set it to un-fullscreen (before, it would always restore-window-ise)
- fixed the 'test address' button in manage services for hydrus administration services
- improved the 'add upnp mapping' error handling to better catch 'already mapped' error, with separate errors for redundant, already-on-but-wrong-port, and already-on-another-computer
- improved error handling when saving objects to the database, particularly for encoding or giganto-size-session errors
- rewrote my tag sibling lookup unit tests to deal with more situations
- wrote similar fairly comprehensive tag parent lookup unit tests
- .
- new downloaders:
- rolling in a user-created thread watcher for warosu. it may be CloudFlare hampered depending on your situation
- rolling in a prolikewoah thread watcher
- rolling in a smuglo.li thread watcher
- .
- multi-column lists:
- spent a bunch of time cleaning out how I calculate multi-column list preferred initial width/preferred current width/minimum width, and made the final column more flexible in its resizing. instances of dialog suddenly getting gigantic because of a final column that wants to size itself at 1,000px should be completely gone, and lists that are shrunk due to non-last-column resizing will now adapt to this situation and not try to flex back to total initial width.
- multi-column lists now have horizontal scrollbars again for those situations where the parent window is thinner than their (now better calculated) minimum size
- improved the multi-column list num_rows height calculation, it should have less empty space at the bottom for lists that grow as items are entered into them (such as in the download pages)
- .
- manage tags megajob speedup:
- sped up manage tags final application step when entering many tags for many thousands of files at once
- optimised UI-side per-file tag cache (re)generation, reducing overhead and surplus work
- granularised UI-side per-file tag cache (re)generation based on the four current tag display contexts--now, if a system (e.g. manage tags dialog) only needs storage tags, the different display tags do not need to be regenerated
- optimised all tag filtering, which is also used in UI-side tag cache regen
- overall, giganto manage tag dialog jobs should now be faster in several ways. on my dev machine, adding 6 tags to 10k reasonably tagged files went down from 52s to 4.8. even larger jobs will still need a lump of CPU time, but they should scale more efficiently (what was previously O( num_tag_changes x num_total_mappings ) is now O( num_total_mappings ), and better at that)
- when a huge number of tags is added at once in the manage tags dialog, 'recent tags' is now populated more carefully