github hydrusnetwork/hydrus v662
Version 662

one hour ago

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 x no 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 x is now only invertible for inc/dec services, and it now does precise >3/<4 switching
  • '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 viewer shortcut 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.toml and setup_venv.py work.
  • the groups stuff in pyproject.toml is not really working out nice. it breaks a simple pip install . and other managers' install lines that many users are going to default to. trying to maintain the setup_venv.py choices in a pyproject.toml file was a nice idea but is not proving a good fit
  • THEREFORE: I am planning to make the pyproject.toml nice and KISS so it works out the box, with only the dev group surviving. setup_venv.py will 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 new to normal renaming, but instead we'll do a bigger clearout. if you use the groups in the current pyproject.toml in any way, migrate away before then, likely to setup_venv.py
  • I did the setup_venv.py stuff 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.py code and prompts and all that a bit
  • I wrote a setup_help.py for building the help and a git_pull.py convenience 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 instance file_download_
  • updated the Linux install help regarding Wayland/X11 environment variables. both unset WAYLAND_DISPLAY and export QT_QPA_PLATFORM=xcb seem 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 FilenameTaggingOptions out of the legacy TagImportOptions stuff to its own file
  • moved ServiceTagImportOptions out of the legacy TagImportOptions stuff to a new file that holds the new TagImportOptions object
  • updated the legacy TagImportOptions to now hold the new TagFilteringImportOptions andTagImportOptions in prep for the big migration, just like I've done for FileImportOptions. 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

Don't miss a new hydrus release

NewReleases is sending notifications on new releases.