- the duplicate filter will now maintain zoom on files with the same ratio
- split the duplicate merge options into separate tag/rating controls--you may see some duplicate service entries, but these will be cleaned on your next shutdown
- duplicate merge options now allow syncing 'archive' status
- duplicate merge options now allow 'delete both files', which you may find use for in custom actions
- created a tag censorship object to handle and action a rich tag censorship ruleset
- tag duplicate merge options now have and use this tag censorship object to filter which tags are merged, with an initial value of 'let everything through'
- wrote a tag censorship edit panel and tied it into the duplicate action edit panel so these new tag censorship objects can be edited
- added an optimisation to the duplicate status setting code--if two files are better/worse, they are inherantly duplicates and so 'not dupe' and 'alternate' relationships apply to both equally and can be duplicated
- fixed and culled and normalised the 'this has more tags' dupe filter statements to be more accurate and useful
- added 'this has a larger filesize' type-statements to the dupe filter
- created a 'system:duplicate relationships' predicate that can find files based on how many duplicate relationships of a particular type they have
- cleaned up some misc duplicate filter code and added some tooltips to the top hover window dupe action buttons
- added 'move to left/right end' to main gui page tab right-click menu
- added 'new page' and 'new page here' to main gui page tab right-click menu
- you can now right-click for a menu from empty tab space on the main gui
- the main gui statusbar now updates more efficiently when under heavy refresh load
- the main gui statusbar now shows db read/write/commit status and sets the current db job summary as its tooltip--if you experience persistent hangs, please hover over the statusbar and report what you see!
- export tags to .txts checkbox will now default to 'all services on' when checked
- fixed the thread watcher, which was accidentally disabling its text input early
- 'similar files' searches launched from the thumbnail menu will now default to 'my files' file domain rather than 'all local files'
- downloader pages will now correctly sort their files on initialisation
- refactored and generally cleaned up some collect and sort code
- fixed some unlikely-but-possible collect/sort bugs
- fixed some bad layout in the top-right hover window that was making it grow unreasonably tall when many urls were shown
- on the different download import pages, the progress gauge that shows file download progress will now reset back to 0 as soon as the file download is complete
- fixed a problem where video imports with unicode characters in their path were failing to mime-parse
- improved the file import status update pipeline to better deal with large transactions (like skipping/deleting/retrying a thousand rows at once). all these big transactions should lag the gui far less
- improved some misc import status cache code
- made first step in a big size rewrite job that will size many elements according to local system font size rather than specific pixel values
- hydrus servers now explicitly default to TLSv1.2--we'll see if that clears up some of the handshake timeout problems we have recently seen
- cleaned up a bunch of possible pydeadobjecterrors when the new review services panel is closed
- improved and rescheduled gelbooru redirect url purge
- added a catch-and-recovery to hydrus network session initialisation, which may sometimes receive invalid data after a service deletion
- added similar catches to tag parent/sibling initialisation, which apparently can be vulnerable to a similar invalid data problem
- I think I cleaned up some more Linux ClientToScreen console errors
- refactored and cleaned some frame size event responsibility
- refactored and cleaned the panel and controls that display file import status
- did a little more menu code cleanup
- misc cleanup
- misc fixes