windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v294/Hydrus.Network.294.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v294/Hydrus.Network.294.-.Windows.-.Installer.exe
os x
app: https://github.com/hydrusnetwork/hydrus/releases/download/v294/Hydrus.Network.294.-.OS.X.-.App.dmg
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v294/Hydrus.Network.294.-.OS.X.-.Extract.only.tar.gz
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v294/Hydrus.Network.294.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v294.tar.gz
I had a good week. My IRL stuff went well, and I cleaned and fixed several important things.
video scan and import folders
I pushed it too hard in the week running up to v293 and broke some things without thinking. In this release, I have fixed the broken video scan (I was so tired I swapped some booleans without thinking) and the import folders popup-button spam (which I didn't test in a large enough environment). So, Import folders will work like they used to again, trying to sync all in one go (although they are now better about saving their progress on big jobs and responding to interruptions and application shutdown events).
Furthermore, I have added some better presentation for import folders. They can now have a progress popup while they work–much like subscriptions have–that also has a simple cancel button. This defaults to ON, so anyone with import folders should notice them pretty quick after updating.
Their popup file buttons will also merge (this is true of subscription popup buttons as well!), so you won't get spammed with lots of small-count buttons if you if you leave your client idle for a long time or end up repeatedly pausing or interrupting your import folders and subs.
I have also written a new option to tell import folders to publish their files to a page. In this case, when the import folder is done importing, the client will create a regular thumbnail page with the import folder's name and then send files straight to that (essentially skipping the button step). This same page will be reused in future, appended with anything new. If you are often going through your import folder's files as they come in, you might like to try this and just leave it a page to publish to in the background that you can visit when convenient.
If this 'publish to page' option goes well, I think I will add it to subscriptions. The two systems are quite similar, so I want to bring their feedback ui and debug and so on a bit more together. One of the frustrations of recent import folder work has been the lack of feedback as they look for and import files. This new 'working popup' should be a step forward to improving that.
idle CPU and crashes
Rather than try to fix them for the fourth time, I have completely removed the crashing timer objects from the autocomplete text input control. I can't promise anything, but I do not expect the manage tags dialog or any other dialog that uses the autocomplete input to crash.
I have moved these timers' jobs and many similar timing calls to a completely new job scheduling system I have written that reduces active thread count and slashes idle CPU by about half. There is more work I can do here in the coming weeks, particularly for import-page-heavy clients.
I also fixed some crashes that could occur during or after running some duplicate filter maintenance operations.
If you still get crashes, please let me know. I am, however, pretty confident that this build will improve the situation for most people still having trouble. If you have been hovering on v287, waiting for the time to jump up, then you might like to try this in a few days (once it is a bit more certain that I have truly boshed the problem this time).
bit of downloader help
I started some help for the new downloader engine. It isn't finished, but the new system isn't either! If you are interested in eventually making something for the new downloader engine, please keep an eye out as I flush out the new section here:
http://hydrusnetwork.github.io/hydrus/help/index.html
I want to continue working on this over the next few weeks and expect to make a few tweaks to what I already have, so don't take this first version as complete gospel. I also want to improve the edit parser ui layout (which is still a bit of a usability hellscape) as I go.
full list
- fixed video scan
- fixed up some import folder logic–they now run 'look for new files' checks separate from 'import anything still in the queue', so they can now catch up on outstanding files more easily
- the ten minute file-processing break is reverted–import folders now just 'save' every ten minutes, to forestall lost work on a crash
- import folders now have an explicit 'check regularly' checkbox to control whether you want it to check regularly or only when you tell it to. the paused status now means 'do not ever work'
- import folders now make a 'working' popup, like subscriptions do, that shows new file discovery progress and found file import progress. it has a cancel button that will stop the current job and can be hidden in the import folder's options. existing import folders will default to ON for this, so you'll likely see one of these right after you update
- import folders can now publish their files to a new page! this effectively cuts out the button step. furthermore, if a page already exists with the import folder's name (e.g. a previous page the import folder created is still around), the import folder will publish the new files to _that_ page, updating it
- file popup buttons with the same name will now 'merge'! multiple work cycles of a subscription or import folder will now just update the first button rather than spamming several
- running import folders will respond faster to a client shutdown event
- wrote some better controller-level thread management, including surplus thread deletion–idle CPU should be reduced on import-busy clients
- wrote some code to deal with sub-second times a bit better in certain places
- finished off a new scheduled job queue that collapses an old multiple-thread-when-idle system down into just one
- many things are moved to the new job scheduling system–all the old calllater calls, and the popup message timers as well
- completely removed the old wx timers the autocomplete input was using, as they were just too much of a hassle. any crashing these were causing is now gone–it all works on the simpler scheduled job queue now
- the autocomplete dropdowns are better at judging when to engage their timers and so now use far less idle CPU
- fixed a crash that could occur sometime after starting a duplicate filter maintenance task from the dupe filter page
- fixed several unlikely but plausible crashes on the admin-side of petition processing
- wrote a bunch of help for the url classes and new parsing system–it isn't finished yet, but then neither is the new system!
- if the client fails to initialise the db, it will now try to present the error in a bit of screenshottable-gui before the program quits
- improved thread watcher error handling when the given url is unwatchable
- lots of timer related cleanup and tiny fixes
- misc fixes
next week
I've been trying to do too much recently, rushing to get the downloader overhaul done and putting bad code out as a result. I also let this crashing situation go on too long–I think I should have stopped pretty much everything else and given it my full attention. In any case, I have decided to scale things back just slightly going forward with the intention of double-chechking a bit more and reducing stupid mistakes and too many iterations of "I think I have it fixed this time, not sure". I will try to schedule more reasonably and budget more time for overheads like testing and messages and so on, rather than just trying to plough through as much as possible.
I enjoyed putting the help together this week, so I will continue that. It would also be nice to get some more imageboard parsers out, and maybe improve the parsing ui while I am at it, but there is also more idle CPU reduction to do and the subscription presentation improvements.