github hydrusnetwork/hydrus v652
Version 652

11 hours ago

misc

  • the advanced rating system predicate (the new one that lets you do all/any/only) is now fully parsable, so you can type system:any rating rated, and it should work. if you need to stack up multiple specific rating services, split them by commas for something like system:only rating service 1, rating service 2 (amongst like/dislike ratings) rated. against all probability, I think I support everything here
  • options->command palette now lets you set a number of characters to type before any results come in. default is 0
  • fixed some selection issues with the command palette. I just cleaned up the select logic a bunch and fixed things like: if you select something with arrow keys and then click on the text box and start selecting again, the old selected guy is now properly deselected; scrolling to the topmost item via a wraparound or home now ensures any non-selectable title is in view; page up from text input now jumps up a page from bottom rather than just selecting the bottommost item; page up/down events that land on a title now spill over to the next selectable item and are a bit faster if you have like 500 results in the background
  • I cleared up some initial UI lag when when you highlight a very large downloader or watcher (say 5,000+ files) with presentation options that care about inbox status (requiring a db hit). the db hit now happens on the worker thread, not the Qt setup phase. the popup window showing progress now appears if this job takes longer than two seconds for the whole thing (previously three seconds for the results building step). let me know how it feels
  • when hydrus calls other programs and wants text back, it now forgives invalid utf-8 with the replacement character �. previously it strictly raised an error, and this broke imports of mp4s and so on that had damaged utf-8 in their metadata description (which ffmpeg faithfully passes along) etc..

default downloaders

  • updated the danbooru gallery parser to not get a load of gumpf links if you have 'show scores' set on in your account/cookies and sync that to hydrus

boring cleanup

  • all my custom paintEvents across the program now have completely safe exception handling and unified reporting in all cases. if there is an exception, the user is notified once per boot about what is happening, why it is important (unhandled exceptions in paint events are crash-city), and to please send the trace on to me
  • some 'media result' tag access is now a touch more thread-safe. this effects the client api add_tags and file_metadata calls. I'm not sure if this will solve some add_tags crashes we've seen, but it is the only candidate I can see
  • I've cleaned up the system predicate parsing system a bit. this thing started out as a clever neat routine, and I and others have hacked at it so many times for new preds that it is a mess. I've worked on making the pipeline less brittle, with a common workspace shared by all methods rather than fiddly params. much of the old stuff is still in there, but I've been able to undo some hacks and feel overall good about the direction. I've slowly been moving my basic system preds to a new unified 'numbertest' object, and the next step here is to integrate this into the parsing so we can finally specify absolute and percentage uncertainty, which atm is locked at +/-15%
  • the hacks cleaned up are: an uppercase/lowercase thing for url class and regex parsing; a non-consuming operator thing to make non-sha256 system:hash preds parse correct; and some value/operator juggling to handle the conversion to taller than|=|wider than 1:1 for 'ratio is portrait/square/landscape'
  • fixed an issue with the newer ffmpeg error handling when your ffmpeg gives no stderr on a file parse
  • cleaned up some ffmpeg error exception handling to be nicer to linters
  • removed some ancient python 3.6 and 3.7 compatibility code in the subprocess stuff
  • when the initial url parser fails to figure out what is going on with an incoming URL, the exception now states the URL text that caused the failure
  • fixed up some client api unit tests that were doing dodgy media result prep
  • fixed a checker options unit test that I accidentally broke last week with a last-minute change
  • updated the versions of the github actions in the runner workflows to be ready for Node24. I think that migration triggers on Github around April 2026, so we are way early. it looks like some of the docker stuff isn't 24 compat yet, so there may be another round of this early next year
  • deleted an old duplicate of the docker.yml workflow in 'build_files' that had fallen behind the master

Don't miss a new hydrus release

NewReleases is sending notifications on new releases.