windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v394/Hydrus.Network.394.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v394/Hydrus.Network.394.-.Windows.-.Installer.exe
macOS
app: https://github.com/hydrusnetwork/hydrus/releases/download/v394/Hydrus.Network.394.-.macOS.-.App.dmg
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v394/Hydrus.Network.394.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v394.tar.gz
I had an ok week mostly cleaning code.
The bug from last week where subscriptions that had incomplete file queues were unable to start is fixed. I apologise, this was a typo that was not caught by my code checker or my testing routine.
autocomplete cleanup
The tag autocomplete code has seen many updates and expansions over time, and the code had become a mess of hardcoded hooks and logical duct-tape. This week I went into it and pulled all the text parsing and results caching code out to single separate dedicated objects. Essentially most of the big changes this week are all behind the scenes, and you can check the changelog for more detailed info, but multiple small bugs and odd situations with autocomplete entry are now fixed.
A user recently contributed code that parses system predicates from text input. Now I have this nice new parsing system, I hope to integrate this new feature soon.
If you encounter new bugs or certain complicated wildcard lookups that do not work, please report them–it is now much easier for me to fix this stuff and support new search types.
environment changes
If you patch my source code, please note that the source structure has changed. The single flat directory of py files is now split into some basic subdirectories. This is one more step forward in getting the structure more manageable, and I expect to do more in future cleanup weeks.
full list
- autocomplete cleanup:
- the text you type into tag autocomplete is now parsed in a unified object. all the variants of empty text, invalid text, valid text, namespace text, and wildcard text are all tested and fetched in one simple location with better code
- autocomplete results caching is now a unified object that tracks and filters results in one location. wildcard searches are now never cached by accident, and switching from tag cache to system predicate cache and to non-initialised cache is instant and more reliable
- when an autocomplete, either in a search page or a context that manages tags, has results include multiple sibling variants of the typed text, they are now all elevated to the top of the list. the ideal is at the top, the entered text is next, and any known siblings follow
- the search character 'collapse' that ensures quote marks and hyphens and other odd characters are unified across tags now applies uniformly to all non-complicated-wildcard search tags, with namespace not collapsed and subtag always collapsed
- when entering an explicit wildcard search, both strict and autocomplete versions (whether they end with an asterisk) are now displayed
- the way tag results are filtered is now more accurate for some unusual wildcards
- it is now more difficult to slip cpu-killer search tags (weird asterisk combinations) through
- the quick-broadcast that happens when the user hits enter before any results have started loading now uses the unified object and chooses a safer and more reliable broadcast value. the test whether to do the quick-broadcast is also more reliable, particularly in unusual situations where a recent search was cancelled or delayed. note that for many users, the cache and search tech is fast enough that this very rarely triggers
- searching with a wildcard below the autocomplete threshold can no longer trigger a full search, nor an invalid exact-text search
- namespace count merging is now unified across db tag fetches and media fetches
- include current/pending buttons now filter down to media-based tag autocomplete counts
- namespace tag autocomplete queries will no longer show up some unusual siblings below the 'anything' tag
- deleted a whole bunch of old a/c and caching code
- added comprehensive unit tests for the new parsed autocomplete text object
- added comprehensive unit tests for the new predicate results cache object
- .
- the rest:
- fixed a stupid typo bug in the new domain checking code that was stopping subscriptions with incomplete file queues from starting. I apologise for this
- network error responses 502 (Bad Gateway) and 503 (Service Unavailable) are now treated as a retryable. the 503 is assuming it is not a CF challenge page. if they fail all retries, they are considered a network infrastructure error
- all other misc 5xx http responses are now treated as instant network infrastructure errors and will be logged in the new domain health tracker
- the exit splash screen now opens a bit earlier, so you now shouldn't have any momentary uncertainty where no windows are open
- clients that start minimised to system tray _should_ be better about restoring splitter positions on first show
- the various 'management panels', the panels on the left of main gui pages, now have smaller minimum width where available. the gallery and watcher panels are still the widest, which is a limitation of the current list tech. when it gets better column sizing code and selection memory, this will improve
- fixed an issue loading gifs with some OpenCV versions
- brushed up some running from source help
- deleted the Py2To3 script that attempts to detect a legacy python 2 install
- improved all the gui files' import order
- cleaned up and refactored some subscription code
- added a bunch of type hints to edit panel code
- misc code cleanup
- .
- environment updates:
- did second step of hydrus project structure improvement–now the project is split into subdirectories for core/client/server/misc and some client subdirs. work here will continue
- linux build gets some new libraries, cv is up to 4.2.0
- it isn't important, but hydrus is now built in python rather than directly from command line. my build scripts now include cloudscraper and the new hydrus source code tree in the build as they are, rather than hardcoded copying
next week
I would like to catch up on small jobs and bug fixes. I feel pretty exhausted due to IRL stuff, so I want to take my foot off the throttle a little. I hope you are hanging in there and staying healthy.