notes
- duplicate metadata merge options now supports note merging. you can copy from worse to better or in both directions, with a couple extra conflict-resolution options that are a subset of note import options and have reasonable defaults.
- the default note merge options are to go from worse to better for 'set as better' and both directions for 'they are the same', renaming notes on conflicts. your existing duplicate metadata merge options will receive these settings on update, so if you don't want this, update your settings from the duplicate filter page
- the manage notes dialog gets copy and paste buttons. these will copy all the current notes and paste them to another instance of the panel, using the default (extend if possible, otherwise rename) conflict resolution rules
- if an automatic system like a parser gives a note text that already exists on the file, the Note Import Options now discards it in all cases, no matter the names involved. no more automatic dupes!
- ADVANCED: note import options (and related note add/merge operations that use it) now scan all prefix-matching note names for 'new note is already in file' and 'new note is an extension of a note already in file' tests. this improves a former fix to the 'successive parses of two sites with the same note name but different note text cause one of them to be dupe-added as (2), (3), (4), renames etc...' bug. the initial (1) rename will be scanned and recognised as 'already in file' and ignored or now extended as the settings say, just as if the desired name were hit. thanks to the reports here--I missed the logic the first time around
- it would be nice to have 'manage notes' for multiple files at once--this is still a future goal
notes client api
- the
/add_notes/set_notes
now takes some new parameters if you want to apply the adapted Note Import Options merge logic rather than figure out renames and extensions yourself /add_notes/set_notes
now returns the changes it made, which in the new mode may not be exactly what you instructed- added unit tests and help to reflect the above
- client api version is now 38
misc
- I fixed up how shift/ctrl/drag selection works on taglists. like with the recent thumbnail selection update, you can now 'undo' a shift-select with subsequent clicks or 'drag undo', and the list remembers what was selected beforehand. ctrl-shift-select is also a more reliable 'deselect range'. both mouse drag selection and ctrl-drag selection use this logic, have fewer index bugs, and the ctrl-drag now chooses at the start whether this drag will be selection or deselection based on your initial click that started the drag. have a play with it--overall it just feels better now
- the 'file log' menu now shows a 'reverse' command, which reverses all the imports in the log. if you want to import from oldest to newest with a typical booru, just start your downloader with file imports paused (check the cog icon), and then allow the gallery search to fully populate the list as normaly. once done, hit this new reverse and then unpause the files, and you should be good
- any image files or thumbnails that are completely transparent and have a non-completely-black image now have their alpha channel stripped, just like files that are completely opaque. I believe the instances where this is a mistake outweigh the instances where it is legit, but let me know how we get on--maybe there are some weird mid-gif thumbs or something where this misfires. in the same thing, I reverted the 'psd thumbnails now have no transparency' change from last week. the issue where ffmpeg was sometimes being confused about psd layer masks from earlier should be fixed while letting legit transparency work correctly. the ultimate fix here will be to roll imagemagick into the program, which I am now planning and will start 'running from source' experiments with soon
- the three 'additional fixed time...' settings in options->downloading now have a max value of 3600, for extreme situation testing
boring code cleanup
- updated my serialisabledict/list objects again--they can now handle bytes objects in any position. I will slowly migrate my existing hardcoded bytes serialisation and the old serialisablebytesdict to these freshly flexible classes
- for clarity, across the code, renamed 'duplicate action options' to 'duplicate content merge options'
- refactored duplicate content merge options initialisation, clearing the stuffed init and totuple to nicer get/set
- broke apart how NoteImportOptions does its main note filtering for easier low-level access
- cleaned a ton of note import options code up. the logic here was not great, now it is a bit tidier
- undid whatever nonsense I was doing with taglist ctrl-drag-selection and cleaned up the main click and drag event handling along with its index calculation and 'what was clicked last time' record
- fixed numerous weird logical/position index issues with the taglist and clicking/dragging