github hydrusnetwork/hydrus v657
Version 657

2 hours ago

misc

  • the 'edit header' dialog panel, where you configure custom http headers, is given a usability pass. this thing never got out of debug-tier and none of the widgets were labelled lol. it has a grid with labels and some nicer strings for the enigmatic 'approved' status
  • added some safety code for the new tldextract test I added last week. one of the calls I make is newer than I expected (issue #1953)

QtMediaPlayer

  • I revisited the QtMediaPlayer, which is an experimental alternate to the mpv embed that I haven't touched in ages. I may have strongly succeeded
  • I am rolling out a new type of QtMediaPlayer. the old one is called (Test 1 - VideoWidget); this new one is (Test 2 - GraphicsView). both are listed in the options->media playback settings for audio/video/animation. this new GraphicsView solution does not have the 'always on top' rendering problem the old one had, meaning the seek bar is shown and behaves properly!! this guy basically looks just like mpv, although it is less customisable and your performance and interpolation quality etc.. may be a little worse (issue #1883)
  • if you have had trouble with mpv, please try this new GraphicsView player out. I don't know how crashy it is, so brace yourself. I'm interested in performance, errors, what filetypes it cannot handle, which mouse interactions fail to register, anything you think pertinent. if we can nail it down, I can polish all this as the new mpv fallback for macOS and Wayland and anyone else with mpv trouble
  • one thing I did notice btw is that it spams some debug-warning stuff to your log when it loads files with unusual metadata. I silenced a bunch of it with Qt logging options, but there's more to do
  • all users can now see the experimental QtMediaPlayer options. previously it was blocked behind source users in advanced mode
  • the volume button now appears for QtMediaPlayers (although obviously still hidden by the 'on top' behaviour of the old one)
  • fixed volume application for the experimental QtMediaPlayer--because of a type problem, it was either doing mute at 0 or 100% everywhere else
  • fixed an unload media bug in the QtMediaPlayer for PyQt6

new hydrus API web-based browser

Client API rating colours

  • the Services Object in the Client API now provides the pen and brush colours for different rating service states, in #ffffff format, and bools for show_in_thumbnail and show_in_thumbnail_even_if_null, and for numerical ratings, a convenience allows_zero.
  • updated the unit tests to check for this and the help to talk about it
  • the Client API version is now 87

python 3.14 and opencv

  • tl;dr: you can now get setup with hydrus on the (new) python 3.14 easily--just do setup_venv as normal and select (a)dvanced and then (t)est for everything
  • it has been previously tricky to run hydrus on python 3.14 because of some funny library stuff. you could fudge things manually, but it wasn't nice, there were image rendering bugs, and the setup_venv script didn't have a path for it. this situation improved in just the last week, which is good because some users on bleeding edge OSes are getting rollouts of 3.14 right now (issue #1950)
  • the 'test' version of opencv-python-headless is bumped from 4.12.0.88 to 4.13.0.90, which is the first version of OpenCV that is ok with the newer numpy
  • the 'normal' vs 'test' OpenCV requirement bundles now include numpy, with respective versions of ~2.3.1 and 2.4.1
  • as a side thing, the new 'test' Qt, PySide6 6.10.1, seems to be the first version that installs nicely on 3.14
  • all the setup_venv scripts now ask if you want the (n)ormal rather than the (n)ew version of things. 'new' was originally to contrast to the 'old' version, but these days it is more confusing vs 'test'
  • all the setup_venv scripts now direct users on Py 3.14 to go in (a)dvanced mode. get the (t)est versions of things and you should be good, but I'll be interested to hear where not
  • all the setup_venv scripts now temporarily ask a fourth question in (a)dvanced mode, for the new domain-parsing tldextract library, which I added test code for last week
  • as a side thing, in the setup_venv.bat script, the secret (d)ev mode that adds some unit test and build gubbins now allows you (me) to make the (a)dvanced choices
  • I also maintain a 3.14 test environment here in my IDE. I can do 3.10-3.14 and PyQt6 and regularly do simple tests in all of them, so I hope we'll catch bigger version-specific issues, and we'll know when 3.10 is no longer supportable

network domain management overhaul, mostly boring

  • a push on better per-domain settings and status tracking went well. like with other recent rewrites, I've mostly just done behind the scenes prep work, with no large changes yet, but I'm feeling good about it. in the end of this, I hope to have domain-specific settings for most of the stuff in the 'general' panel of options->connection. again, like with other settings overhauls, I'm planning to have a global default which you then override with custom settings for a particular domain if you wish. ideally we'll have favourites/templates and the ability to bundle these settings with a downloader, like you can headers and bandwidth rules
  • the 'halt new jobs as long as this many network infrastructure errors on their domain' setting now applies to all levels of the domain. if site.com gets a bunch of connection errors, a request to subdomain.site.com will now also wait on that option. the domain vs second-level domain logic here was previously spotty, and some subdomain stuff wasn't waiting when it was supposed to
  • sketched out DomainSettings and DomainStatus objects to track the settings and basic event history on a per-domain basis in an easily future-extendable way. they don't work yet, but I'm prepping for it
  • wrote some unit tests for the new objects
  • domain errors are now reported with an event type, in prep for the new objects

boring code cleanup

  • retired my older directory picker dialog in favour of my newer 'quick' select, replacing use in the file import window; move media files; repair file locations; clear orphan files; review services manual export update files; manual import update files; select backup location; restore backup location
  • updated my 'quick' directory select call to remember the last directory selected this session (defaulting to install dir for now), and if the caller doesn't have a specific location in mind, to use that last selection as the starting dir of the next dialog open. it also handles cancel results a little nicer
  • removed one or two 'is the user in Qt5?' checks with the QtMediaPlayer work. I'm not sure when, but I think I'll purge the rest of these completely in the next month or so, probably at the next 'future build' commit. it is basically time to move on

Don't miss a new hydrus release

NewReleases is sending notifications on new releases.