windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v217/Hydrus.Network.217.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v217/Hydrus.Network.217.-.Windows.-.Installer.exe
os x
app: https://github.com/hydrusnetwork/hydrus/releases/download/v217/Hydrus.Network.217.-.OS.X.-.App.dmg
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v217/Hydrus.Network.217.-.OS.X.-.Extract.only.tar.gz
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v217/Hydrus.Network.217.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v217.tar.gz
I had a fantastic week! I fixed some important problems with last week's video renderer update, caught a big source of lag for pages with many thumbnails, and prototyped a 'related tags' tag suggestion control.
A user created a discord server for hydrus discussion. I don't usually do chat, but if you are interested, you can check it out at: https://discord.gg/vy8CUB4
first, new builds
I updated some important libraries, and my Windows python, and my Ubuntu dev machine from 14.04 to 16.04. This should generally mean improvements for everyone, but I had some new hurdles putting the Linux and Windows builds together today. I have it all working for my dev and test machines, but please let me know if you have any trouble. There are no db updates this week, so you should be able to downgrade back to v216 no prob, although I would, as always, recommend that you maintain a weekly backup before you update, just in case.
The Linux build has now grown to 125MB as well, for some reason! I guess 16.04 has larger libraries?
video renderer
Although I was pleased with last week's progress on the video renderer, I was honestly rushed. There were some big mistakes that meant certain situations would bloat with memory or spam laggy threads, which meant the whole thing was five steps forward and four back. I've now given it a full pass and am much happier with it. Small gifs should scale up even to very large screens no problem and multi-minute webms should correctly buffer without any huge hitches. Let me know if you discover any new bugs!
I've added a bit of gui feedback for this–the current frame buffer (i.e. the span of frames that are rendered and ready to put on the screen very quick) is now drawn straight on the scanbar below any animation! Small and short animations will be able to hold the entire image in memory, while larger ones will have a 'chasing' buffer that will keep up with the scan caret. It gives a nice indication of how well the client is currently keeping up rendering things, and if you like to drag the caret back and forth, it lets you know if and when the stream will hitch to regen a new buffer. This sounds more complicated than it is, so just check it out–I really like it.
Also, semi-related: If you set a mime to show the 'open externally' button, it'll now also show its thumbnail, if it has one, above the button. I'd like to do similar for the 'embed' button as well, just to give a preview of what you are launching if you are browsing through a fullscreen media viewer.
thumbnail lag
There's been a quiet bug in for a while that meant doing a large selection change, like hitting ctrl+a, would queue up all the thumbnails selected for renderering. This was fine when there were only 500 files in view, but when there were 10,000 it could be a cause of subtle client slowdown for several minutes as every thumbnail was individually loaded from disk.
I apologise for this–it was, like most of these difficult-to-spot problems, a simple mistake of one similar variable name for another. I've fixed it now, and when the current selection of thumbnails undergoes a visible state change, only those that are visible in the scroll buffer will be checked and redrawn.
suggested tags
I had a bit of extra time to spend on hydrus this week, so I also managed to get a decent first version of a 'related tags' tag suggestion control done. This sits on the manage tags window and does 'files tagged abc are also often tagged xyz', presenting xyz in a list so you can easily double-click them.
So, if you have a file with the two tags 'character:ayanami rei' and 'series:neon genesis evangelion', it will reliably suggest 'blue hair', 'red eyes' 'plugsuit', 'character:ikari shinji' and other useful related tags. This was quite tricky to get right! Once I got it counting and filtering correctly, I was surprised at how good its suggestions sometimes were. I'm enthusiastic about the potential of other similar time-saving workflows in future.
To test this control, you can turn it on by going to file->options->tags and hitting the 'related' checkbox at the bottom. If you are interested in this stuff, please check it out and let me know where it works well and where it fails. There are three numbered buttons that control how long to spend polling the db for suggestions–longer time tends to give more accurate and comprehensive results.
I don't want manage tags to end up huge, so I'm thinking of collapsing the various new suggested tags controls into a notebook control with tabs. I can also see that some people with larger screens might still want several columns in a row, or perhaps stacked on top of each other for a portrait monitor, so I'll also add other layout preferences.
full list
- fixed some high-res video streaming thread scheduling problems with the new video renderer
- fixed a cause of huge memory bloat with greatly upscaled videos
- to improve seek response time, streaming buffer for the video renderer has a much smaller cap
- renderer throttling calculations are more sensible and reliable
- the video renderer discards frames to save time if they happen to still be in its buffer
- the video scanbar now displays the current frame buffer around the caret!
- video canvas now recycles the same frame blit bitmap to save a little time
- wrote a prototype related-tags suggestion 'service' for the suggested tags control
- you can turn it on and set some options for it at options->tags, feedback would be appreciated
- munged increasingly complicated components of the suggested tags control into a clean and proper self-hiding panel
- fixed a very important bug that was failing to filter visible thumbnail fetch on mass select and thus massively slowing down the client on large ctrl+a-like operations
- open externally button now shows the media's thumbnail, if it has one
- open externally and embed buttons now use hand cursor
- the simple path tagging dialog panel now cuts off .jpg extensions from filenames on filename parse
- if the string component of a generated file export path already ends in the correct .jpg extension, a second will not be added
- ipfs unpin will no longer break if the file was already unpinned
- the hydrus server now gives filename (for a file save as dialog) correctly on a content-disposition header (this affects the client's local booru as well)
- the secondary sort can now be a namespace or rating sort
- fixed some potential init problems with some dropdown controls
- an edge case object-missing cache retrieval bug is fixed
- updated openssl on os x, which might have fixed some problems
- updated python on windows, which updated openssl and a bunch of other stuff
- updated sqlite on windows
- updated linux dev machine to ubuntu 16.04, so a variety of packaged libraries are updated
- fixed auto server setup if the client is launched from a windows cmd window
- misc cleanup
next week
I've got some long emails/posts waiting for me, so I'll put some time aside for that, and I'd like to do some general bugfixing and polishing of existing stuff.