win32
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v180/Hydrus.Network.180.-.Win32.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v180/Hydrus.Network.180.-.Win32.-.Installer.exe
os x
app: https://github.com/hydrusnetwork/hydrus/releases/download/v180/Hydrus.Network.180.-.OS.X.-.App.dmg
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v180/Hydrus.Network.180.-.OS.X.-.Extract.only.tar.gz
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v180/Hydrus.Network.180.-.Linux.-.Executable.tar.gz
source
tar.gz: https://github.com/hydrusnetwork/hydrus/archive/v180.tar.gz
I had a great week fixing a ton of bugs, some quite serious. If you have reported something in the past few weeks, there is a decent chance it is fixed today!
middle click to open new search page
Middle clicking on a list of tags will now quickly open a page for the selected tags like right-click->open a new search page for selection. I added this to be like middle-clicking on a tag when browsing a booru. This also supports opening a page with multiple tags.
fixes to recent bugs
I have rewritten a lot of stuff in recent weeks, and while I am pleased with the new code, I did introduce some fresh bugs. I think I am getting on top of them now–thank you for reporting everything.
Last week's addition of a mouse idle check added a really bad random crash-bug for Linux (or at least anything running X11). The current theory is that I was accessing the current mouse coordinates from an improper location. I assumed it was not a problem since it was only two numbers, but it turned out differently! I have moved the code to the correct thread and I no longer get the crash on my Linux laptop. If you got this bug, I am sorry for the inconvenience. My laptop didn't seem to do it as much as other people's, so I never noticed in my normal testing. If you still get it or anything like it, please let me know!
I also recently rewrote how all predicates were passed around the client. Everything works much better behind the scenes now, except for removing system predicates from the active search. You may have noticed, if you tried to double click a 'system:duration>0' or similar in the past week, that trying to remove a system predicate with an internal value launched the 'enter the value' dialog again. This was a mistake, and is now fixed.
Also, I managed to quietly break the application of most system predicates in searches where tag or namespace predicates also exist. If you had a query of 'series:star trek' and 'system:mime=flash' or whatever (as one reporting user had), the mime predicate was not being applied. This too is fixed.
unicode and paths
Unicode (bits of text with unusual characters) has proved a continuing pain, and something I didn't wholly understand in python, so I decided to read up on it properly this week and go over almost every single line that deals with it. I am really pleased with the result, as several awful old bugs based on my misunderstanding are now fixed. If you have recently seen any UnicodeDecode errors, they should now be gone (or replaced with different, hopefully more helpful errors!).
I've also gone over all my interactions between hydrus and the OS's file system and made sure that everything is correctly converted to and continuously handled as unicode, which should mean that no instance of importing or exporting files with japanese characters or anything else unusual should be a problem any more. Also the basic way that bits of file paths are constructed has been moved to a more proper method, so if you have had any errors about odd, non-existent paths, please let me know if that is fixed now.
full list
- middle click on any taglist now does 'open a new search page for selection'
- moved mouse idle checking code to the wx thread, which seems to have fixed a serious X11 crash
- memory gunk should now be painted over when transparent animations are resized on linux
- fixed some page up/down index calculation on the autocomplete dropdown
- system predicates will remove themselves from the active predicate list silently again
- system predicates will work again in queries that include tags!
- greatly improved my string/unicode conversion code
- dropped many inefficient unicode conversions from db code
- improved the sql-grammar of some specifically efficient db code
- removed incorrect unicode conversions from url/network request code
- removed unicode conversion code from network response code
- all directory iteration should now occur in unicode
- all inputted paths should now be converted to unicode
- replaced every single ugly raw path concatenation with a better method
- improved some bitmap placeholder initialisation that was causing Linux terminal spam
- added an option to always hide the preview window to options->gui
- the preview window will not accept setmedia calls if it is hidden
- if the preview window is actively hidden due to an unsplitting event, it will null its current media
- fixed a shutdown calculation that was under-remembering the height of the preview window by four pixels every time
- improved thumbnail waterfall code–it should be a little faster. less subject to lag when taxed, and waterfall with more genuine randomness
- improved some thumbnail page drawing and clean/dirty conversion code
- when pages are dirtied, any to-be-waterfalled thumbnails are cancelled, making superfast scrolling less crashtastic
- new dirty thumbnail pages are now generated as needed, rather than precached
- subscriptions will now correctly do a polite wait after fetching tags for redundant files
- splash screen will now explicitly raise itself to the front on init
- the export tag txts function of the export dialog now exports the tag txt to [filename].jpg.txt, rather than [filename].txt
- the server now stores its updates in service specific subdirectories, like the client
- some importers will better report when they are waiting politely
- OS X (and anything else with OpenCV 3.0.0) now uses OpenCV to render gifs by default, falling back to PIL on error (like only Windows used to)
- 'open externally' from thumbnails now defocusses the preview window
- refactored away a bunch of bad global controller references
- added some shutdownexceptions
- silenced shutdownexception terminal spam
- reworded the 'maintenace and processing' options panel a little to explain things better
- improved how the base_dir is figured out on program boot
- improved serverside 'should I clean dirty updates?' check code
- deleted some old code
- split path-specific functions off from HydrusFileHandling to HydrusPaths and de-looped my import tree appropriately
- general refactoring
next week
I feel better than I did two weeks ago about the bugs in the program, so I think I might have a go at adding some sort of IPFS support. At the least, I will make a proper plan. Other than that, I would like to make sure the media viewer's contradictory background/hover taglists actually say the same thing, and that that thing is useful, and I'll look at making things fit better on small screens.