Important
Users who use the extract builds who are updating from v661 or earlier to v662 or later need to do a clean install!
https://hydrusnetwork.github.io/hydrus/getting_started_installing.html#clean_installs
future build committed, clean install needed
- This release commits the changes tested with the recent future build. The test went well but for the new mpv dll, which we will try again later.
- Windows and Linux users who extract must perform a 'clean install' this week! https://hydrusnetwork.github.io/hydrus/getting_started_installing.html#clean_installs
- Windows users who use the installer can update as normal
- In this new build, we have--
- build folder structure now tucks dlls and such into a 'lib' dir
- the Docker packages are updated to Alpine 3.23
- SQLite on Windows is updated to 3.51.2
- thanks to the clean install, the Windows mpv dll is no longer renamed, but now
libmpv-2.dll - and for the build scripts, the client and server specs are now merged into one, the gubbins in the spec is pushed to the new content_dir 'lib', Docker builds are cached better, and everything is cleaner
duplicates auto-resolution
- I wrote a new Comparator type that does weird hardcoded jobs on just one file, debuting 'A/B/either is a progressive jpeg/is a non-progressive jpeg'
- wrote an edit panel for these
- added some unit tests for this new type
tag menu and inversion
- the tag/active predicates list 'search' menu is now split into 'open' and 'search'
- the 'invert' item in 'search' is updated for clarity--previously, it was trying to tapdance over some 'require/exclude' verbiage, but it wasn't clean. now it just says 'invert'
- after talking with some people and looking at the code, I'm making
system:(like rating) is xno longer invertible (this is a special state that acts as a perfect 'not' and feeds into some UI actions and menu labels, for instance system:inbox/archive are inverts of each other). previously it did a 'like/dislike' flip, but that doesn't include files not rated. 'has rating' and 'no rating' still flip as before system:rating less/greater than xis now only invertible for inc/dec services, and it now does precise>3/<4switching- 'system:all/any x y z ratings rated' now invert correctly (they were previously just flipping the rated part, not the all/any too. the 'only' version is no longer invertible--I think we just don't support this with existing logic??
misc
- the 'edit subscriptions' dialog now has an 'overwrite downloader' button to mass-set a new downloader for a selection of subs
- if the media viewer has not had a slideshow yet, the 'pause/play slideshow' shortcut will now start a new slideshow at the first defined custom time (default 1.0 seconds)
- if you stop a slideshow, the slideshow menu now provides 'resume at x seconds', firing off the 'pause/play' action
- the
resize window to fit media at specified zoom and recenter it in the viewershortcut action now says that specified zoom in its text where it is set (e.g. in the edit shortcuts UI)
setup_venv.py updates
- only important to advanced source users
- after talking about it with several users, we are doing a bit more
pyproject.tomlandsetup_venv.pywork. - the
groupsstuff inpyproject.tomlis not really working out nice. it breaks a simplepip install .and other managers' install lines that many users are going to default to. trying to maintain thesetup_venv.pychoices in apyproject.tomlfile was a nice idea but is not proving a good fit - THEREFORE: I am planning to make the
pyproject.tomlnice and KISS so it works out the box, with only thedevgroup surviving.setup_venv.pywill be the place to do weird/test venv setup - this will happen on v673, a little under three months from now. I was previously planning just some
newtonormalrenaming, but instead we'll do a bigger clearout. if you use the groups in the currentpyproject.tomlin any way, migrate away before then, likely tosetup_venv.py - I did the
setup_venv.pystuff for today though; it now hardcodes all its decisions, entirely within the .py. no more relying on some other requirements definition standard; I just hack it with code for whatever I need, pipe it all to a pip install call, and it all installs in one clean step - also brushed up the
setup_venv.pycode and prompts and all that a bit - I wrote a
setup_help.pyfor building the help and agit_pull.pyconvenience script to multiplat-replace the other .bat/.command/.sh stuff in the base dir. all the old scripts will be deleted on v673
boring stuff
- fixed an issue hitting 'cancel' on note import options via the subscription or duplicate merge import options dialogs
- all temp files that hydrus makes in its tempdir now have a job-respective prefix rather than always
hydrus, for instancefile_download_ - updated the Linux install help regarding Wayland/X11 environment variables. both
unset WAYLAND_DISPLAYandexport QT_QPA_PLATFORM=xcbseem to be the trick to run in X11 - misc 'running from source' help brush-up
- updated some stuff in the 'installing' help about clean installs
boring import options overhaul progress
- rewrote my new container and manager to have a stricter swiss-cheese/full dichotomy. rather than navigating layers of swiss cheese over and over, for every request, the manager now compresses the slices into a 'full' import options container that can answer any questions further down the file import chain
- moved
FilenameTaggingOptionsout of the legacyTagImportOptionsstuff to its own file - moved
ServiceTagImportOptionsout of the legacyTagImportOptionsstuff to a new file that holds the newTagImportOptionsobject - updated the legacy
TagImportOptionsto now hold the newTagFilteringImportOptionsandTagImportOptionsin prep for the big migration, just like I've done forFileImportOptions. the whole import pipeline is updated to talk to these two guys as appropriate - wrote specific edit panels for the new objects
- also updated the unit tests for all this
- all the options objects are now ready to migrate. next I need to write a bunch of UI to handle the new edit panels I've written and manage my 'swiss cheese' defaults model in a user-friendly way. all the defaults setup and the 'import options' buttons in all downloaders need a rework. then I need to rejigger the file import path to pass around one container object rather than the current scatter. I feel pretty good about it. two more pushes on this, I think, and I can flip the switch