win32
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v171/Hydrus.Network.171.-.Win32.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v171/Hydrus.Network.171.-.Win32.-.Installer.exe
os x
app: https://github.com/hydrusnetwork/hydrus/releases/download/v171/Hydrus.Network.171.-.OS.X.-.App.dmg
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v171/Hydrus.Network.171.-.OS.X.-.Extract.only.tar.gz
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v171/Hydrus.Network.171.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v171.tar.gz
I had a great week, spending most of my time making the laggy parts of the program less annoying.
isalreadyrunning on linux
The 'new and improved' program-is-already-running detection code was misfiring for the Linux executable due to some odd pid behaviour. I have fixed it.
maintenance and processing
From now on, the client will not do its CPU-heavy stuff while you are doing searches and browsing media. This includes general database maintenance and repository processing. The client will wait until it is idle, or it will try to run them for a bit on shutdown.
If you happen to catch the client while it is doing some tag processing, it should detect you are back faster and automatically stop working on the processing in a few seconds. Ideally, you won't have to think about processing any more–it will just happen in the background. This is especially true if you leave the client on all the time.
Furthermore, I have moved repository processing to a lower, faster db level. I get anything from 1000-8000 rows/s on my dev machine. I am not sure how fast a real client with 100,000+ files will go, but it should be at the very least twice as fast as previously.
I have shuffled some file->options things around a little because of this. You can customise the idle and shutdown behaviour in the new maintenance and processing option page.
Having sync only run in the background is a big change, and I tried this this week as a bit of a test. I am really pleased with the speed increase it allows, but I think I may want to revisit the exact workflow. I might add a button on review services for 'sync now' or something. Maybe my default idle options should be something else. And maybe I need to write some more help, for new users. Anyway, let me know how it works for you!
full list
- improved isalreadyrunning code
- fixed isalreadyrunning code for the Linux frozen build
- the client's isalreadyrunning splash check will respond more quickly if you choose to wait
- repository processing sync will no longer update the frontend, which approx doubles its speed
- repository processing sync now only occurs when the client is idle, so it won't slow your browsing down
- if you catch the client while it is processing, doing pretty much any action will make it quit out nice and quick
- repository processing sync now occurs at a lower db level, meaning less laggy popup ui update and overall faster processing time
- repository popup disappears after a few seconds once it is done–if you leave your client on all the time, you probably won't see it again.
- split 'maintenance and memory' options panel into 'maintenance and processing' and 'speed and memory'
- added 'cpu busy' option to options->maintenance and processing
- added 'run stuff on shutdown' option to options->maintenance and processing to set whether pending db maintenance and repo processing can happen on shutdown
- added 'max minutes on shutdown' option to options->maintenance and processing to limit how much shutdown processing can be done in one sitting
- repositories can now sync on shutdown–they will report through the splash window
- shutdown maintenance is checked and run in a better way
- moved to a two-stage shutdown procedure
- daemons are better kept track of, and they talk to the controller in a better way
- daemons shut down in a better way
- improved a bunch of idle/busy/just woke from sleep logic
- improved how the controller maintains the db and memory
- improved force_idle mode in the client
- idle calculation is more accurate, and resets on more user-driven events
- improved responsivity for processing popup
- fixed a serious bug that was counting some unprocessed content as done when the service processing window was cancelled
- misc code improvements
- misc maintenance code improvements
- fixed a bug with parentless center-positioned dialogs not sizing themselves properly
- removed delete_orphans timespan param option
- fixed bugs selecting and media-viewering collected media
- fixed a missing thumbnail selection bug
- fixed some os x dialog interaction and z-order problems when the splash screen is open
- os x splash screen is no longer stay_on_top
- fixed the 110.00% display bug
- removed wx from pubsub code
- pubsubs now route through the controller
- reduced some pubsub overhead, we'll see if it smooths out some of the gritty stuff
- misc thread worker pool is now managed by and routed through controller
- some other thread-wx interaction is now routed through clientcontroller
- db now interacts with controller directly, not through wx
- all other indirect references to controller go through hydrusglobals, not wx
- refactored everything wx away from everything hydrus/server except controller code
- about window now says the client's network version
next week
I also did a lot of code cleaning this week. The server is almost completely divorced from wx–I just need to refactor the controller object, and then I can make it properly headless, so that is my first priority. After that, I have a lot of small things to do.