more UI updates
- thanks to a user, we have a slew of additional UI improvements: (#2037)
- per-viewer mute under media viewer right-click menu!
- slideshows can now shuffle and 'play media once through' on a per-viewer basis
- the 'stop' slideshow menu entry now shows the current slideshow period
- a new type of 'interactive' shortcut action, for the media shortcut set. you set a tag or rating service but nothing else. when you hit the shortcut, it asks you which tag or rating you want to set!
- new options to choose which types of zoom 'zoom switch' switches between and configure how collapsed the 'eye menu' is under
options->media viewer hovers, in the newtop hover button/menu controlspanel - persistent 'be silent on crashy stuff' mpv option unher
help->debug->debug modes
misc
- the
-dlaunch parameter for the program now expands a userpath db path correctly.-d=~/hydrusnow resolves to your user dir properly - in the parsing UI, the 'test' panel's preview area, where it shows what you downloaded/pasted, will now show up to 500,000 characters before clipping (up from 65536 chars), and the upper description is now clear when this happens
- added
TEST: import local files directly from source, do not copy to temp dir beforehandoption to let some advanced users try out direct import. we needed to copy to tempdir in the old days so that some media scanning libraries would not have to deal with cyrillic or other uncode characters in paths, but this situation seems to be resolved these days, so let's try without. if it works ok IRL, I'll keep this for those who do still need a temp dir interim but flip the default behaviour
stylesheet paths
- me and the guys who make qss stylesheets have been fighting an issue for a while regarding loading external assets, like a little .svg for a button. I solve this today, and it will make loading up stylesheets with assets from your db dir or in the built release much more reliable
- anyone who was on the
_built_releaseversions of the stylesheets will be migrated to the normal ones on update. the_built_releaseversions are deleted from the defults qss dir as the problem they addressed is solved in a better way - for the specific change, the new 'absolute path qss test mode' proved successful, so it is now the norm. stylesheets now have to specify their paths in one particular way and I handle the path juggling on my end, on load. the readme.txt in the qss dir is now explicit about this, so if you make qss stylesheets and haven't seen it yet, check it out
opening new pages with the client api
- thanks to a user who did a really comprehensive job, the Client API gets a new
/manage_pages/new_pagecommand. it covers pretty much everything, including, say, a new local import page with a list of files. check out the new documentation here: https://hydrusnetwork.github.io/hydrus/developer_api.html#manage_pages_new_page - the user also fixed Client API file sorts not defaulting to asc=true and a focus issue when pages are closed
- the Client API version is now 93
parsing logic fixes
- this is for advanced users who make downloaders
- with the help of a couple users who poked around my tangle of gallery parsing code, I think we've fixed some stupid parent-child inheritance stuff where a gallery object would take too manytagsfromcertainpostparsesandthenpassthatontoa'nextpage'galleryurl,particularly,say,ifthatnextpageurlwasauto-generatedbtwmyspacebarbrokewhenwritingthis (issue #2035)
- keyboard fixed. so, I KISSed how gallery objects create child file import objects and sub-gallery urls and next-page gallery urls. there is less overlap of responsibility between an object passing metadata down and a post parse passing metadata down (this latter system is much better these days, and old hacks in the former pipeline were causing the main issues here). gallery import objects will now not update themselves with parsed tags and referral urls after the fact; only their children will get the metadata from their parses
- relatedly, I cleaned up how file objects create child file download objects. previously, there were separate pathways for file parses that uses subsidiary parsers vs those that simply had a flat content parser that produced multiple urls and then another for a single url that turned out to match a post url class. this has all been collapsed into a single KISS route that says 'if one file url, eat up the metadata from the parsed post and then download it; else create n child objects'. some bespoke error states like 'hey I grabbed one url, it was a post url, but there's no parser for that url' are now deferred and will just get processed as a normal child file import object
- also cleaned up some crazy python module inheritance happening here
- overall, things should be more reliable, and the inheritance of metadata from one import object to the next should be clearer. let me know how it all goes for you
source setup
setup_venv.pynow takes an optional-iparameter for non-interative (i.e. automated) installs.-i=swill do the simple mode,-i=awill do the advanced mode with all test/yes choicessetup_venv.pynow expands a userpath venv path correctly.-v=~/hydrusvenvs/venv313now resolves to your user dir properly
safer builds
- thanks to a user, our github build scripts, including Docker, now freeze the various github actions we use (e.g. a thing that says 'ok grab that build zip you just made and upload it to the release') to known good sha256 hashes, rather than getting the latest, say, 'v6'. this insulates against a supply attack, like we've seen recently, ensuring we won't use an action that was updated two hours ago by a bad guy to do bad things
- there's a script also that updates the hashes. I'll be running this regularly to keep up and verifying every time it does. dependbot apparently interrupts whenever it is a big deal, too
startup/shutdown
- the
twistedlibrary, which we use to host the client api and server services, is now started and stopped in a nicer way. previously, it was hacked into the boot scripts. now the main hydrus controller handles it and delivers some additional hydrus shutdown signals twistednow only spins up on the client if you actually start up the Client API- when 'shutdown report mode' is on, the final client exit moment now prints all alive threads with their name and daemon status. if you have been working with me on the 'program is down but process is still alive', let's see if this catches it
some help docs work
- rearranged and brushed up the Linux section in 'getting started - installing' and added more notes/links to 'hey running from source is over here'
- removed the old Win 7 support comments and updated the Win 10 bits to be 'time to move to Linux m8'
- updated the 'running from source' help to talk about
pyenv, which makes it easy to install and use a different version of python with hydrus - updated the 'running Windows version in Wine' help document for the newest version and added info about Bottles: https://hydrusnetwork.github.io/hydrus/wine.html . I managed to get v675 up with a minimum of fuss and not too much weirdness (even ffmpeg and mpv worked!?!), so I now have a basic Windows test environment, hooray. doing it manually with winetricks on my system wine-9.0 did not work, it needed Bottles's newer wine-11.0
- added easy copy buttons to the command quotes in 'running from source' help