https://www.youtube.com/watch?v=JKPDFQRmG_M
windows
zip:
https://github.com/hydrusnetwork/hydrus/releases/download/v392/Hydrus.Network.392.-.Windows.-.Extract.only.zip
exe:
https://github.com/hydrusnetwork/hydrus/releases/download/v392/Hydrus.Network.392.-.Windows.-.Installer.exe
macOS
app:
https://github.com/hydrusnetwork/hydrus/releases/download/v392/Hydrus.Network.392.-.macOS.-.App.dmg
linux
tar.gz:
https://github.com/hydrusnetwork/hydrus/releases/download/v392/Hydrus.Network.392.-.Linux.-.Executable.tar.gz
source
tar.gz:
https://github.com/hydrusnetwork/hydrus/archive/v392.tar.gz
I had a mixed week, but I am happy with my work. Some large database jobs are faster and tag autocomplete results have better sibling support.
tag sibling database cache
I was not able to get as much done here as I had hoped, but I was able to finish the first step and fix some sibling bugs. The client now keeps a cache for fast sibling lookups, which will be a great tool going forward.
The tag autocomplete system now uses this new cache. When you type in the start of a tag, possible matches' siblings are added to the results list, even if they do not strictly match what you typed. These siblings used to be computed on the fly, but now it is looked up using fast pre-generated data. I have also improved the accuracy of the search and added 'pending' siblings in.
As I was working here, I also fixed some sibling presentation and search bugs. If you discovered that a 'series:blah' search was delivering some unexpected 'cosplay:blah' results, this should now be fixed. There is still more to do here, which I hope to naturally fix as I replace more old systems with nice new caches.
There are two next steps here: first to write a 'what file tags should look like with siblings collapsed' cache, which will speed up tag search and file load and also eliminate many of the uncertain counts you get with autocomplete results like 'character:samus aran (500-700)'. Second is to write a full-featured 'which siblings apply to this service?' options system, so you can say 'ignore the ptr's siblings, use mine instead' and other clever combinations, rather than the current 'always apply all to all, or one to one'.
the rest
e621 and sankaku get revised default downloaders, fixed for getting 'rating' and 'genre' tags respectively.
The system tray icon got some bug fixes. It is also more stable under non-Windows, but doesn't seem to hide reliably yet.
The hydrus server and the client's API and booru now try to host their services on IPv6 as well as IPv4. This is new stuff to me, so let me know if you come across any problems!
full list
- db-level tag sibling cache:
- the hydrus client db now maintains a fast cache of current+pending tag-to-ideal-tag sibling relationships. it works for specific services and 'all known tags'. this is a nice tool and the first step in having a proper hard-baked siblings mappings cache
- the new sibling cache can be regenerated under _database->regenerate_. the 'autocomplete cache' entry under that menu is also renamed to the now more appropriate 'tag mappings cache'
- the db repair system can regenerate this new cache if any part is missing on boot
- the lookup that finds tag sibling matches for autocomplete uses this and is now faster, specific to the searched service, more accurate about status, and now includes pending siblings
- wrote a new unified object to manage a collection of tag siblings, it is now in use at the db level
- as I continue to develop this new fast tech, the old 'apply all sibs to all services' option, which was always buggy, may sometimes not apply in it. I will ultimately replace it with a fuller per-service choice system that will work quickly and properly and in the same unified way
- fixed a bug where only one local tag service's siblings would be matched at the ui level when looking at 'all known tags'
- fixed a bug in the file search code where searching for a tag that had an unnamespaced sibling going to it would result in searching for all possible namespaces of that sibling (e.g. searching for 'character:samus aran' when 'samus aran'->'character:samus aran' sibling existed would result in effectively 'anything:samus aran')
- when tag services are deleted, they are now better about cleaning up their siblings and parents quickly
- optimised some tag and hash id->value database cache population routines to improve performance for large queries (e.g. when fetching all the tag parents/siblings on boot). also these caches are now larger, 100k instead of 25k
- all cache regen code now forces an immediate analyze of the new tables to speed up imminent access
- .
- the rest:
- updated the default e621 file page parser to get rating tags again (looks like their markup just changed again)
[Expand Post]
- updated the default sankaku file page parser to get their recently redefined 'genre' tags
- in edit subscriptions, the 'overwrite tag import options/check options' actions now initialise their dialogs with the current value for the first subscription, rather than the global program default
- in the edit subscription panel, the checker options button is moved down to the file/tag import options
- when not in advanced mode, the edit tag import options panel now has some red-text at the top to reinforce to new users that they should generally use the defaults
- the tag import options blacklist now secondarily checks against all known siblings of the parsed tags, rather than just the 'collapsed' ideal siblings
- subscriptions are now more aggressive about clearing out old urls from their file import caches–instead of clearing the 251st url after it has aged twice the death period, now they use just one DP. also, checkers with static checker timings will use five times that check period as DP if that is smaller. static checkers, or those that never die, will use a flat value of six months as DP if that is smaller
- moved a bunch of the debug 'data actions' to a new 'memory actions' menu
- significantly reduced how often the system tray regenerates its menu, which seems to improve stability
- fixed an issue where guis that were maximised before a minimise were restoring from a system tray icon click to normal view
- double-clicking the system tray when the ui is hidden should no longer do a fast show/hide
- fixed an issue where if the gui was minimised, the main animation timer would not run for other windows (e.g. a separate media viewer)
- improved ui shown/hidden tracking logic for the new system tray icon for different OSes
- fixed the 'refresh_page_of_pages_pages' shortcut action, which had faulty old wx code in it
- fixed a wx->Qt bug where modal popups that cannot be cancelled, and thus pop up a 'sorry, you can't dismiss this' text when you try to close them, were nonetheless still closing afterwards
- the hydrus client and server now attempt to listen their servers on both IPv4 and IPv6, failing gracefully if IPv6 is not available
- the 'is this a localhost request?' check now understands IPv6 localhost (::1 or ::ffff:127.0.0.1)
- may have solved a 100% cpu repaint issue with the a/c dropdown in some qt environments
- added info to installing help about Windows N and clean installs
- misc media viewer wx->Qt code cleanup
- misc code cleanup
- .
- experimental hellzone, be wary ye scabs:
- added an experimental 'sub-gallery url' url content type to the parsing and downloading system. this url is queued into the gallery log even if the primary gallery page found no file/post urls, and is meant for galleries that link to galleries. not yet ready for primetime, but feedback would be appreciated
- added an experimental ui-hang relief mode, activated under _help->debug->data actions->db ui-hang relief mode_, which _should_ stop the ui hanging in unusual long-time ui-synchronous db jobs. it may cause other problems, so it is default off. it also prints begin/end statements to log for additional info. users who experience ui hang due to db job processing time are invited to play with this mode and report back results
next week
Next week is a small jobs week. I fell behind on messages this week, so my main job is to catch up on those and then to clear out my bugs queue.