windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v403/Hydrus.Network.403.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v403/Hydrus.Network.403.-.Windows.-.Installer.exe
macOS
app: https://github.com/hydrusnetwork/hydrus/releases/download/v403/Hydrus.Network.403.-.macOS.-.App.dmg
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v403/Hydrus.Network.403.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v403.tar.gz
Despite losing a couple days to sickness, I had a great two weeks doing small jobs.
shortcuts
I reworked some of the behind the scenes of shortcut commands, most importantly cleaning up a bad decision I made when I first moved to the new system. There are about 120 'simple' commands in the system, and now all of them are defined in a neater way that allows me to change and expand things more easily in future.
Every shortcut now has a nicer 'label' when you select it in the edit shortcuts UI (and anywhere else the command is shown). Rather than the old 'focus_media_viewer', you'll get something like 'keyboard focus: to the media viewer'. Rating shortcuts will also display their service's rating as it understands it, like 'set to 3/5' instead of the ugly internal data of 'set to 0.6'.
Although I have been wanting to add more actions to the systemmpv commands have been delayed far longer than I wantedI have been putting that off until this was done. I hope to push on this more in the near future.
the rest
The options->gui pages page now has options to set the height of the autocomplete dropdown results lists, which were previously hardcoded. It only applies to new lists atm, so restart the client once you find a nice height for new pages.
All 'tag import options' attached to downloaders now have an explicit optional 'tag whitelist'. It is just below the blacklist button. If the whitelist is populated, then any file that does not have at least one of the given tags at the download source will not be imported. This is a specific tool, generally not as commonly useful as a blacklist, but it does allow you to filter downloaders that only let you download by an artist username (e.g. "I want Artist A's Evangelion and Metroid content, but nothing else.").
Right-clicking on many files should now give combined 'times viewed' and 'total viewtime' info lines on the menu. It is cool to see on a big selection of favourites!
An important issue where the Client API could duplicate-add tags to multiple tag services on an 'add url' call is fixed. Thanks to a user for finding the solution here.
Thanks to a user's work, there is a new stylesheet, Hydracula, under options->style. It is a darkmode theme.
The hydrus client no longer does the 'background disk cache' job by default. This routine has become less important over time, and as more users have moved to SSDs anyway, where it has little to no benefit, I am now relegating it to a special mode just for HDD users with larger dbs who need it. All users will be reset to not using it on update, so if it is still important to you, please check options->speed and memory to set it back to what you want.
I neatened layout and menu code in several different places. The 'gui' and 'gui pages' options pages had some attention, and the 'network' menu particularly have been shuffled around. The duplicates page now starts on the 'prep' tab if work needs doing, review service panels now highlight repository errors in red text, the edit subs panel is cleaned and has less spammy help, migrating your database files now hides the main gui window while it works, and the 'restore from backup' command now works with and reports text updates to the exit splash.
A handful of users have had trouble in recent versions getting the windows hydrus executable to run. There are different problems for different users with both the old and new versions of the exe bundler I use, and I am moving back up to the latest this week, as it seems to be less bad overall. If you had trouble booting since v400 and v403 again does not boot for you, please roll back to the last version that did work and let me know. There does not seem to be a great solution here, but maybe with more info I can figure something out, or at least properly diagnose it.
client api for advanced users
We need to experiment with this more, so feel free to play with this if you know what it is about, but for now this is mostly just for Client API developers, so we know what we need to do to get this working nicely.
The Client API (and the ancient and less-used local booru) now tentatively support https. You turn it on under services->manage services. It works like the hydrus server, and the same caveats apply: the certificates behind the https are 'self-signed', which means they work but are imperfect, and any program that wants to talk to them may have to access in a 'do-not-verify' way, or only after adding a specific exception rule, like you sometimes see in web browsers. If your Client API is actually hosted on a domain and you have a proper cert for it, feel free to replace the client.crt and client.key files that will be created in the db dir–the client should pick them up and use them no problem when it next boots.
full list
- shortcuts:
- shortcuts have a backend update this week. a bunch of hacky stuff is now cleaner behind the scenes, and the related UI has some cleanup as well
- converted all 100-odd simple shortcut commands from hacky text ids to a proper enumerated id system, and across every single instance across the program
- wrote nicer descriptive labels for all simple shortcuts. gone is 'focus_media_viewer', now is 'keyboard focus: to the media viewer'
- if you have no like/dislike or numerical services, the respective application command edit panels now say so and do not allow an ok action
- like/dislike rating sub-panels now start with 'like' checked
- when a like/dislike or numerical rating sub-panel is set to 'remove', the action dropdown is set to 'set' (rather than flip) and is disabled, as is the numerical slider
- application commands now state better "3/5" information about rating actions, rating than the underlying "0.6" float implementation
- all application commands existing in shortcuts or elsewhere are updated to the new enumerated id system
- refactored ApplicationCommand (the side of shortcuts that holds the actual action to be done) and its edit UI to new separate files
- completely refactored the application command edit panel, pulling the simple/tag/rating sub-panels into their own decoupled classes, simplifying the tangle and permitting easier future expansion
- rearranged some application command functions and contant definitions to more appropriate locations
- improved how application commands are interrogated by the objects that process them
- added plenty of type hinting around application command processing code
- cleaned up a bunch of shortcut and application command code, including some wx->Qt updates as well
- .
- menu and UI cleanup:
- removed an old wx hack that prohibited last-second ui updates. the exit splash screen now reports final db shutdown info
- if a service or account is currently non-functional (e.g. all repositories are paused), the appropriate status text is now in red
- if there is work to do the first time a duplicate page is opened or looked at, it now moves to the 'preparation' tab
- doing a 'migrate database' file migration now temp-closes the migrate db dialog and hides the main gui while it goes on
- brushed up the tag filter ui a bit–now only one of the tag_filter/blacklist test phrases only show up, in the appropriate context, and the test text input now supports multiple newline-separated tags (e.g. if you want to paste a bunch)
- every panel on review services now has a refresh button to force an update
- the 'clear trash' button on the trash review services panel is now disabled when there is nothing to clear
- updated edit subscription panel to point to the main html help and brushed up that help to talk about file limits more, also the earlier downloader help has a little section to highlight subscriptions and their use
- reworked the 'restore from db backup' command–it is now integrated into client shutdown proper, and reports its basic restore progress to the exit splash screen
- reorganised the 'network' menu. manage subs is now up top, downloader submenus are now split better into high-level vs component-level, and login stuff is pulled to its own submenu
- put 'network traffic' at the top of the network->pause menu
- rearranged some of the 'gui' and 'gui pages' option pages and tucked everything into box sections for clarity
- the search pause/play button on search page tag autocomplete now has a simpler 'search paused' label when paused. the code has a similar nomenclature change, and eventually this will turn into a simple pause/play icon button or similar
- fixed some weirdness with floating autocomplete dropdowns sometimes not appearing on dialogs on first load
- fixed some focus logic so set-focus calls on downloader pages should work again on the query input text box and elsewhere
- unified all numerical rating->stars and stars->rating calculations across the program. this may have fixed some edge-case bugs
- unified all rating string generation across the program
- .
- the rest:
- the disk cache options under _options->speed and memory_ are now default off and force-set off for all users on update. as more users are on decent ssds where these options are of limited value (and sometimes negative value), I now only recommend them for users on HDDs
- added two options for autocomplete results list height to 'gui pages' option page, under the new 'controls' section
- fixed a critical issue where the client api could duplicate-add tags with url imports to multiple services. the potential service duplicate cascade order was pseudorandom and particular to a client. thanks to a user for figuring this issue out (issue #317)
- added a 'tag whitelist' to downloader tag import options. its edit button is below the blacklist. when there are no tags in the list, it does nothing, but if tags are added, then files that do not have at least one of the given tags at the download source will not be imported. for instance, if you have a username-based downloader (where you can't add more tags to the query to filter serverside), and you only want their metroid content, you can now filter it simply hydrusside (issue #279)
- if you are both in advanced mode and a mad lad, the basic blacklist tag filter now allows you to show the 'whitelist' and 'advanced' panels again, if you have a complicated blacklist to set
- the local booru and client api now support the same https as the hydrus server, using self-signed certificates stored in the db directory. just set the checkbox in manage services and you should be good. self-signed certificates are free and will work on a server hosted off an IP address, but they are imperfect. they are also likely to require special permission to be accepted by the web browser or whatever you want to talk to the https service. however, if you host your client from a real DNS domain and have your own fully signed cert+key files, you can swap them in no problem
- local booru and client api urls adjust scheme for the new option, and unified and cleaned up how booru share urls are generated internally
- the way cert+key files are generated is moved from server code to common hydrus code
- cleaned up how additional db files like certificate files and the mpv conf are managed for backup/restore operations
- cleaned up some ancient http urls to https. mostly stuff like the regex tutorial links
- when files are appended to a regular search page (e.g. from a subscription publish to an existing page, or from a mouse drag and drop), the search context will now pause. this is to stop accidental F5 or mass refresh signals wiping out the changed page
- to break advanced-case gallery search loops, gallery url jobs now have a 'run' identity token. galleries pass their token down to 'next page' or 'sub-gallery' urls they generate, meaning all urls of a particular search run share the same url. gallery logs now ignore to-be-added urls that already exist for their token, terminating loops. new tokens are generated if a search is restarted or similar, meaning duplicate urls can exist in a gallery log, just not from the same starting point (issue #302)
- improved simple gallery url deduplication in several stages of the downloader pipeline
- when right-clicking on multiple thumbs, the info lines off the top menu item now list the files' combined viewtimes (this previously only showed when one file was selected)
- fixed some error reporting problems with adding urls to import via the client api–some url class exceptions were being converted from 400 to 500 errors unintentionally
- a new stylesheet, 'Hydracula', is added to the default install. check it out under options->style. thank you to a user for contributing this
- subscriptions are better about calculating a 90 second forgiveness window for bandwidth rules. they should schedule and startup more effectively, and the edit subscriptions and single edit subscription panels should also no longer show bandwidth delays below the next 90s, which are often a technical situation of regular work breaks that are better ignored for the purposes of the dialog
- went back up to pyinstaller 3.6 again on windows, as 3.5 caused its own Qt bindings dll problems. if you had trouble with 3.6 (401), let me know how this works for you, as there are additional dll-finding fixes included (issue #329)
- fixed an issue where under some conditions, file save dialogs were only happy with filenames that already existed (issue #319)
- fixed an issue with the 'client already running' system sometimes not closing the client process correctly when told to cancel the boot
- bumped the 'space needed for vacuum' estimate up to 120% (was 100%) of estimated final file size, just to catch some edge cases
- rolling out updated danbooru parsers that pull associable urls correctly, thank you to a user for this fix
- rolling out an updated deviant art parser that finds some unusual file urls when other methods fail, thank you to another user for this fix (issue #295)
- upgraded cloudscraper to 1.2.42
- improved some type hinting
- fixed up some unit tests for new command and rating data
next week
Next week is a 'medium sized job' week. I want to write a 'list manager' to manage and remember presentation options for all the multi-column lists across the program. The ideal here will be to have selectable columns and columns that remember their last width. It will open the program to supporting clever and specific columns, initially hidden due to size constraints, for things like the edit subscriptions list in future. There are many lists in the program, and a lot of code here, so I am not sure how far I will get, but I think I'll be able to do column width memory at the least.