misc
- fixed the regression where the top-right hover window was not showing in the archive/delete or duplicate filters (issue #1755)
- fixed some volume/rating rendering stuff in the filters, too
- the new '3/5' numerical ratings texts are now drawn in the normal text colour for your stylesheet, not from the rating colours
- you can now select the 'aggregate modified time' as the source timestamp when setting up a sidecar export. this is the reasonable minimum of all known modified times and what you generally see in the UI when it only shows one modified time
- if you try to import a Canon RAW CR3, it is no longer recognised in the initial path scanning routine as an mp4. many still images that ffmpeg can somewhat parse but isn't sure on should be fixed here--I was reading back the ffmpeg output badly and falling to a 'generic mp4?' assumption (issue #1756)
- the optional library lines in
help->about
now say a little more than just True/False, and the process by which this dialog says 'hey, mpv failed to import for this reason' on window launch is now generalised, recognises the difference between a module not being available and an actual error during import, and covers mpv, QtCharts, QtPDF, dateparser, dateutil, and psutil
duplicates
- fixed an issue where the duplicates auto-resolution system would work way too hard and not take long enough breaks in many cases. it was notifying itself there was new work due while doing work, leading it to keep waking itself up as soon as it went to sleep. it now ignores these signals while it is doing work. you will generally see the system working much slower from now on. let me know how this goes--now the clock behind all this isn't busted, it needs a re-tuning and/or options regarding how hard it wants to work, and we may want to bring back 'work hard' mode
- the 'A and B are visual duplicates' test has a more sophisticated edge-detection routine. it can now detect paler watermarks or other artist edits by tiling the images' average edge differences and calculating a skew metric to notice unusual regional shifts
- the duplicates auto-resolution system (and the database maintenance manager) now force breaks of at least 250ms between each job when things are busy
- the duplicates auto-resolution system now runs with significantly less overhead any time it needs to consult rules
- the list on the main duplicates filter 'auto-resolution' tab updates itself significantly faster now, only needing to hit the database on rule edits or the refresh button
- rules are now better at reporting if they are doing work in this list. they'll say 'waiting' (want to work but settings say no working right now) and 'working' (taking available work slots right now) a lot more now. also instead of 'idle', they now say 'done'
- the 'test' phase of a duplicates auto-resolution rule, which is CPU expensive for 'A and B are visual duplicates', now occurs outside the database transaction
- fixed the 'work on these rules during idle time' cog menu, which was wired up to the 'do search for potential duplicates in idle time' options boolean due to a typo
- the 'edit rules' dialog is now much more aggressive at interrupting and pausing ongoing work so it can launch
more invalid export path fixes
- the new routine that elides subdirectory names generated by a export filename pattern is now careful to trim the directory name of leading/trailing whitespace. previously, when you were unlucky enough to get elided to
tag, tag, tag,
, the export operation would fail in Windows and simply be ugly everywhere else. the base filename is stripped of whitespace too, so you won't gettag, tag, tag .jpeg
any more (issue #1751 again) - it now also removes periods from the end of windows file/dirnames, which it turns out are also not allowed
- it now also excludes some windows reserved names like 'AUX' and 'COM1'
AVIF
- the Pillow guys released the 11.3 that adds nice native AVIF support. all builds will fold this in and it should all just work. users who run from source might like to rebuild their venvs this week. this fixes some bugs we had with the interim plugin library, including one with unusual rotation (issue #1728)
- in the v629 update, all AVIFs are scheduled for: a metadata rescan, the 'has exif/icc profile/other human-readable embedded metadata?' checks, and forced thumb, pixel hash, and phash regen (there are several legacy issues from this saga to catch up on)
- the code that imports the heif, avif, and jpegxl plugin libraries now asks Pillow if it can do the respective thing (turns out it has a nice call for this) before importing the plugin, making for a much more natural and foolproof update process as we go forward here
- the
help->about
window now shows if you have heif, avif, or jpegxl support natively in Pillow or via a plugin
dateparser fixes
- dateparser, which we use to do the 'easy date parse' solution, updated to
1.2.2
and suddenly wouldn't import correct in the Linux and Windows builds (maybe macOS too, not sure, but it seems to have been a PyInstaller issue), breaking a bunch of cool date parsing - I have rolled back dateparser to
1.2.1
in all requirements files and it should import again ok in v629 builds. to check, you can see it underhelp->about
- it looks like the new version had additional locale issues, too, or it aggravated an older known one. computers that are in locales where the local time is strictly 24-hour, such as Polish or Russian, were having trouble parsing any date with AM/PM info, even when I told dateparser 'hey, if that failed, just do it in EN mate'. the program now initialises dateparser right at the very start of the program, before other imports sink their teeth into app locale, and this appears to fix dateparser's timezone cache initialisation. thanks to the user who figured this out!
- the 'easy date parse' system now has a fallback to dateutil's very good parser if dateparser fails
- all the above addresses issue #1754
cleanup/boring stuff
- fixed a deprecated Pillow fromarray mode param
- think I fixed an issue with Arch running the Ubuntu-built release relating to a bad 'wakeUp' call in some event dispatching code
- added some painter save/restore stuff to ensure 'draw rating here' calls are non-destructive to painter state
- auto-resolution rules' counts are now updated at the object on any change and do not have to be reloaded when a daemon wants to consult them. also made it more thread-safe
- added some sidecar modified timestamp unit tests
- added unit tests for the new export path stuff, and improved my path unit tests to better work on any OS
- deleted the old integrated 'do duplicates auto-resolution work' db code
- removed the 'TEST: stop mpv on media transitions' option. this test failed and caused other bugs, but I have some other ideas I'm going to play with