windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v340/Hydrus.Network.340.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v340/Hydrus.Network.340.-.Windows.-.Installer.exe
os x
app: https://github.com/hydrusnetwork/hydrus/releases/download/v340/Hydrus.Network.340.-.OS.X.-.App.dmg
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v340/Hydrus.Network.340.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v340.tar.gz
I had a great if busy week. The Client API does more, several bugs are fixed, some new features and options are in, and stability and memory use should be a bit better.
client api
This is still somewhat advanced, but users who are interested may want to start looking in.
The first version of the Client API last week went ok! There were a couple of bugs, but thanks to feedback from some advanced users, I've improved reliability and carved out a better spec. This week brings JSON everywhere, fixes the add_file crash, and adds two neat calls:
/add_urls/get_url_files now looks up which files are attached to a URL
/add_files/add_file lets you import a file, either from a path or raw bytes
Please check the updated help here for more details:
https://hydrusnetwork.github.io/hydrus/help/client_api.html
the rest
I fixed the stupid 'page of pages' closing bug. I apologise if you were hit by this. I got a little blackpilled about all these typo errors not being caught, so I wrote a new testing suite to better test core ui functionality. I will expand this over the coming weeks and hope to completely eliminate the most blockheaded problems.
I have added nijie.info to the downloader defaults. It needs a login to access. I also updated the default danbooru parsers to get 'rating:' tags. I'd like to fold in some more downloaders to the client defaults in the near future. sfw FurAffinity should be doable next week. If you have a simple working downloader that you think would be worth rolling in for all new users, please suggest/submit it.
I added a semi-hacky checkbox to options->files and trash that pauses all new file/thumbnail requests for 15 seconds after your computer wakes from sleep. If you store your client's files over a NAS or other network solution (that may take a couple of seconds to reconnect after wake), give it a go and let me know if you like it.
I did a bunch of little work on stability and memory management and failure recovery this week. If you have had trouble with the menubar or a bloaty client or invalid website encodings or subs that fail to load, see if any of it is better here. OS X users with retina (i.e. high-dpi) screens may also see less blurry ui–I'd particularly like feedback in this case, good or bad.
full list
- client api:
- fixed up some api permissions object stuff so that /verify_access_key response can always serialise correctly
- fixed the 'add_url' api call's instability
- the API will now always return JSON on 200. anything else should be presumed to be raw text
- '/api_version' now returns JSON, and after talking with users, it will now start incrementing with every api change. it remains 1 just for this week
- '/request_access_permissions' now returns JSON
- '/add_url' now results JSON on success with more info, 403 on failure
- '/get_url_info' now returns the 'normalised_url' in the response JSON
- added '/get_url_files', which returns 'url_file_statuses', listing known hashes and file import status for that url
- added '/add_files/add_file', which can import a file from a path or bytes
- added '/add_tags/get_tag_services', which will return info on the client's tag services
- updated client api help to reflect the above changes and fleshed out the intro a bit
- fixed the client api permissions enum values in the help, which I somehow transcribed wrong first time
- updated the client api tests to check the above
- refactored client api tests to be neater and in their own file
- .
- the rest:
- fixed the page of pages close bug
- added a downloader for nijie.info to the client defaults (it needs a login)
- updated danbooru file page parsers to get 'rating' tag
- added gelbooru 0.1.11 parser for future application
- fixed an issue that was stopping advanced content updates from fully copying all the desired mappings in the transaction
- added a semi-hacky checkbox to 'options->files and trash' that will delay all new file/thumb requests for 15s after the computer resumes from sleep (useful if your files are on a NAS that takes a few seconds to reconnect on wake)
- wrote some more graceful fallback decoding handling code that attempts original assumed encoding and 'utf-8' if different and returns the one with the fewest ' ' replacement characters
- the network engine and the ffmpeg info parsing now use this new 'safe' decoding, so even if a site has borked bytes or the video file has unexpected Shift-JIS title metadata, it'll still go through, albeit with some question marks
- moved some more old daemons to the new job scheduler, deleted some old daemon code
- improved some daemon job wake and shutdown code
- wrote a proper upnp manager object and improved all-around reliability of the auto upnp-service-mapping code
- simplified the upnp check code so it now only ever checks/does anything if the respective services actually want upnp mappings. surplus mappings are now wiped immediately on service update
- fixed upnp mapping fetching to cope with ipv6 results
- improved some memory clearing code to deal with some semi-stubborn objects
- improved some 'iterate through this giant list of single numbers from the db without using a lot of memory' code and applied it to the autocomplete cache regeneration routine
- improved menubar stability, both in finding menus and swapping them out
- if a serialised json object fails to load from the db, this is now caught, the bad object deleted and written to a new file in the db dir, and all logging info captured along with an explanatory popup thrown on screen. so, if a subscription fails to load, it will now be extracted so that a subsequent subscription edit/run will work with the remaining good objects. in the case of backed-up objects (gui sessions atm), reattempting the load should restore the next most recent backup
- fixed an issue with login script validation when the given credentials have surplus ( key, value ) pairs to the script's credential definitions
- fixed two login invalid cookie error handling bugs
- maybe made some dupe filter searching more stable
- fixed a py2 datatype issue that made the client unbootable when updating the client from <296
- the client now pauses to nag and moan about backups if you try to update more than 15 versions in one go
- slightly sped up discord bugfix file drag and drops and expanded file limit up to 25 files/200MB
- added experimental secret discord bugfix dnd mode checkbox
- improved how html parsing deals with some unexpected bad tag data
- turned on primitive high-dpi support for OS X. let me know if it fixes any blurry issues on retina displays
- wrote a new 'ui test' under the debug->gui menu to help catch common-action bugs that slipped through weekly work
- improved how the test code does some wx/ui stuff, but also broke some more and ran out of time to clean it up–this is an ongoing project
- improved how some text import line splitting works
- misc fixes
next week
I pushed it too hard this week, and while I am overall happy with the work, I am going to return to normal schedule so I don't burn myself out. I'd like to keep pushing on the Client API, probably getting add_tags done, and otherwise just flesh out the new test code and do some small QoL stuff.