ugoiras
- thanks to a user who put in a lot of work, we finally have Ugoira rendering! all ugoiras will now animate using the hydrus native animation player. if the ugoira has json timing data in its zip (those downloaded with PixivUtil and gallery-dl will!), we will use that, but if it is just a zip of images (which is most older ugoiras you'll see in the wild), it'll check a couple of note names for the timing data, and, failing that, will assign a default 125ms per frame fallback. ugoiras without internal timing data will currently get no 'duration' metadata property, but right-clicking on them will show their note-based or simulated duration on the file info line
- all existing ugoiras will be metadata rescanned and thumbnail regenned on update
- technical info here: https://hydrusnetwork.github.io/hydrus/filetypes.html#ugoira
- ugoira metadata and thumbnail generation is cleaner
- a bug in ugoira thumbnail selection, when the file contains non-image files, is fixed
- a future step will be to write a special hook into the hydrus downloader engine to recognise ugoiras (typically on Pixiv) and splice the timing data into the zip on download, at which point we'll finally be able to turn on Ugoira downloading on Pixiv on our end. for now, please check out PixivUtil or gallery-dl to get rich Ugoiras
- I'd like to bake the simulated or note-based durations into the database somehow, as I don't like the underlying media object thinking these things have no duration, but it'll need more thought
misc
- all multi-column lists now sort string columns in a caseless manner. a subscription called 'Tents' will now slot between 'sandwiches' and 'umbrellas'
- in 'favourite searches', the 'folder' name now has hacky nested folder support. just put '/' in the folder name and it'll make nested submenus. in future this will be implemented with a nicer tree widget
- file logs now load faster in a couple of ways, which should speed up UI session and subscriptions dialog load. previously, there were two rounds of URL normalisation on URL file import object load, one wasteful and one fixable with a cache; these are now dealt with. thanks to the users who sent in profiles of the subscriptions dialog opening; let me know how things seem now (hopefully this fixes/relieves #1612)
- added 'Swap in common resolution labels' to
options->media viewer
. this lets you turn off the '1080p' and '4k'-style label swap-ins for common resolutions on file descriptor strings - the 'are you sure you want to exit the client? 3 pages say "I am still importing"' popup now says the page names, and in a pretty way, and it shows multiple messages nicer
- the primary 'sort these tags in a human way m8' routine now uses unicode tech to sort things like ß better
- the String Converter can decode 'hex' and 'base64' again (so you can now do '68656c6c6f20776f726c64' or 'aGVsbG8gd29ybGQ=' to 'hello world'). these functions were a holdover from hash parsing in the python 2 times, but I've brushed them off and cleared out the 'what if we put raw bytes in the parsing system bro' nonsense we used to have to deal with. these types are now explictly UTF-8. I also added a couple unit tests for them
- fixed an options initialisation bug where setting two files in the duplicate filter as 'not related' was updating the A file to have the B file's file modified time if that was earlier!! if you have files in this category, you will be asked on update if you want to reset their file modified date back to what is actually on disk (the duplicate merge would not have overwritten this; this only happens if you edit the time in the times dialog by hand). a unit test now checks this situation. sorry for the trouble, and thank you to the user who noticed and reported this
- the hydrus Docker package now sets the 'hydrus' process to
autorestart=unexpected
. I understand this makesfile->exit
stick without an automatic restart. it seems like commanding the whole Docker image to shut down still causes a near-instant unclean exit (some SIGTERM thing isn't being caught right, I think), butfile->exit
should now be doable beforehand. we will keep working here
more OR preds
- the new 'replace selected with their OR' and the original 'add an OR of the selected' are now mutually exclusive, depending on whether the current selection is entirely in the active search list
- added 'start an OR with selected', which opens the 'edit OR predicate' panel on the current selection. this works if you only select one item, too
- added 'dissolve selected into single predicates', when you select only OR predicates. it does the opposite of the 'replace'
- the new OR menu gubbins is now in its own separated menu section on the tag right-click
- the indent for OR sub preds is moved up from two spaces to four
urls
- wrote some help about the 'force page refetch' checkboxes in 'tag import options' here: https://hydrusnetwork.github.io/hydrus/getting_started_downloading.html#force_page_fetch
- added a new submenu
urls->force metadata refetch
that lets you quickly and automatically create a new urls downloader page with the selected files' 'x URL Class' urls with the tag import options set to the respective URLs' default but with these checkboxes all set for you. we finally have a simple answer to 'I messed up my tag parse, I need to redownload these files to get the tags'! - the urls menu offers the 'for x url class' even when only one file is selected now. crazy files with fifty of the same url class can now be handled
duplicates auto-resolution
- wrote some placeholder UI for the new system. anyone who happens to be in advanced mode will see another tab on duplicate filter pages. you can poke around if you like, but it is mostly just blank lists that aren't plugged into anything
- wrote some placeholder help too. same deal, just a placeholder that you have to look for to find that I'll keep working on
- I still feel good about the duplicates auto-resolution system. there is much more work to do, but I'll keep iterating and fleshing things out
client api
- the new
/get_files/file_path
command now returns thefiletype
andsize
of the file - updated the Client API help and unit tests for this
- client api version is now 73
new build stuff
- the library updates we've been testing the past few weeks have gone well, so I am rolling them into the normal builds for everyone. the libraries that do 'fetch stuff from the internet' and 'help python manage its packages' are being updated because of some security problems that I don't think matter for us at all (there's some persistent https verification thing in requests that I know we don't care about, and a malicious URL exploit in setuptools that only matters if you are using it to download packages, which, as I understand, we don't), but we are going to be good and update anyway
requests
is updated from2.31.0
to2.32.3
setuptools
is updated from69.1.1
to70.3.0
PyInstaller
is updated from6.2
to6.7
for Windows and Linux to handle the newsetuptools
- there do not appear to be any update conflicts with dlls or anything, so just update like you normally do. I don't think the new pyinstaller will have problems with older/weirder Windows, but let me know if you run into anything
- users who run from source may like to reinstall their venvs after pulling to get the new libraries too
boring cleanup
- refactored
ClientGUIDuplicates
to a newduplicates
gui module and renamed it toClientGUIDuplicateActions
- harmonised some duplicates auto-resolution terminology across the client to exactly that form. not auto-duplicates or duplicate auto resolution, but 'duplicates auto-resolution'
- fixed some bad help link anchors
- clarified a couple things in the 'help my db is broke.txt' document
- updated the new x.svg to a black version; it looks a bit better in light & dark styles