diff --git a/docs/changelog.md b/docs/changelog.md index ff25df817..0d3863ea5 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -7,6 +7,42 @@ title: Changelog !!! note This is the new changelog, only the most recent builds. For all versions, see the [old changelog](old_changelog.html). +## [Version 557](https://github.com/hydrusnetwork/hydrus/releases/tag/v557) + +### misc + +* optimised large tag filter edit UI. you can now paste 5,000 items into an empty tag filter blacklist in less than a second, and if you have a big tag filter, removing or adding one thing is now instant (previously, this stuff would lag 4 seconds or more, sometimes multiple minutes!!) +* the ugoira 'num frames' counting method now discludes files ending in .js/.json, to catch future bundling of frame timings +* the cbz scanning tech should now recognise cbzs with four or fewer pages +* a legacy 'is this image all good?' check that happens on PIL-loading is now gone. this improves rendering for a variety of truncated files and clarifies some error messages (previously, this thing was just failing silently) +* fixed the delete file pre-flight logic so users on the non-advanced delete dialog can now delete repository updates. previously, they saw the menu entry, but hitting it was a no-op + +### better hash predicate parsing + +* `system:hash` labels are a little different now. they'll say `system:hash (md5) is abcd...`, with the algorithm after the "hash". hash is omitted for sha256 (the hydrus default). this eases parsing +* `system:similar to data` labels are a little different. they'll say 'distance' instead of 'max hamming', and the number and type of hashes they hold, and if they hold only pixel hashes, the distance is not stated +* `system:hash` predicate parsing is now more flexible. you can put the hash type pretty much anywhere now. +* `system:similar to` and `system:similar to data` predicate parsing is now more flexible. more combinations are allowed, and you can not include distance and it'll be fine +* these three hash predicates now copy to clipboard with all their hashes explicitly enumerated, making strings that are fully parsable! this is a big step forward in a completely sealed import-export predicate parsing loop; now I have the tech set up to export a different phrase to clipboard than what you see in the label, I just need the examples of where it goes wrong. if there is a system predicate that copies to clipboard in a way that won't parse back, let me know and I'll see if I can fix it. +* added more unit tests for this parsing + +### documentation and cleanup + +* wrote a guide on how to install 'Git for Windows' for the 'running from source' help. although most of the settings in its marathon 12-page install wizard can be left as default, the technical questions can be intimidating, so I've written them all out for a nice simple install. also brushed up some of the surrounding help here +* added a warning to the regular 'installing and updating' help regarding the danger of test-running extract releases before updating (you can overwrite your database by accident) +* thanks to a user, the filetypes help document is updated with Ugoira and CBZ info +* all the 'HydrusFiletypeHandling' files are refactored to a new 'files' module. there's a bunch of them these days! +* the hydrus.core.images module is moved beneath this 'files' module too +* the file log list panel right-click menu now says 'open URLs'/'open files' locations' depending on whether you are looking at a URL import log or local HDD import log + +### client api + +* the `file_metadata` call now returns `filetype_forced` and, if so, also `original_mime` to talk about the new forced filetype system +* the client api help and unit tests are updated to test this is working ok +* fixed a typo that was causing too much work in the updated file info manager call (and was often returning 'null' results for half-cached `file_metadata` requests with `only_return_basic_information=true`) +* thanks to a user, the `/add_urls/get_url_info` Client API call now has a cache timeout of ten minutes, and the `/add_urls/get_url_files` call now has a timeout of 30 seconds if all the files are 'already in db'. this should automatically reduce some overhead for several programs that talk to the Client API a lot about URLs +* the client api version is now 58 + ## [Version 556](https://github.com/hydrusnetwork/hydrus/releases/tag/v556) ### misc @@ -419,30 +455,3 @@ title: Changelog * I made a new application command to hold the file filter. I just pre-populate the UI with a dropdown with commond choices for now, but in future it could hold a customisable file filter, once, ha ha, I have some UI to actually edit one! * cleaned up various shortcut code * misc linting cleanup - -## [Version 547](https://github.com/hydrusnetwork/hydrus/releases/tag/v547) - -### mpv crash fixes - -* tl;dr: mpv less crashy now -* if mpv fails to load a file but not in an outright 'error' manner (this appears to mean a file using a rare format that a submodule of mpv can't handle), the client now recognises this has happened, either right after the first load, or, if the error takes longer to occur, a subsequent status interrogation, and makes several new steps to restore program stability: disconnecting the mpv window from all commands, freezing the scanbar, loading the default hydrus.png as emergency backstop, and making a popup to let the user know what just happened. previously, Qt would get rapidly unhappy as it asked things to draw on screen over the null-state player, particularly if you show/hid the scanbar several times, and it would, if not removed promptly from screen, typically lead to a program crash -* furthermore, the scanbar now never interrogates the mpv window during its paint event. a mysterious interaction of C++ level objects during error state was causing the underlying instability here, and now I cannot reproduce this even if I try -* I also hardened the mpv window's 'no-media' state. now, rather than showing 'nothing' when media is unloaded, each mpv player now actually idles on a black png lol -* this tech will kick in for more extreme file failures, too, which have a different handler but seem to give the same detectable dump-out state -* fixed a silent-but-for-debug-mode error while destroying damaged mpv windows right when the program is terminating - -### misc - -* thanks to a user, we now have import support for 'djvu' files. basically an open source PDF style format -* fixed pasting an image into 'system:similar files', which I missed updating in last week's code cleanup! -* a light but spammy legacy job that refreshed every search page's empty autocomplete every five minutes (to get updated system predicates/numbers) now only occurs to autocompletes on the current page. relatedly, when you switch to a search page you haven't looked at in five minutes, it triggers the same update immediately. this should save a tiny bit of idle CPU time and, more importantly, clear out the background job queue on larger-session clients -* I _think_ I fixed some instances of the media viewer notes window initialising with a gigantic width on some OSes. if you often get a super wide notes window when you first open the media viewer, with it fixing itself when you cycle to a different file and back, let me know if things are any better -* when you have a popup message that has a 'show x files' button, usually from a subscription, that routine now excludes files that have been deleted since the button was created. it updates its existing file count on a click, also, to how many files it actually will generate. if you click one of these buttons, delete some files, and then click it again, it should no longer produce ghost files in the new search page. I'm going to add some more tech to optionally handle the system:hash predicate in a page in similar ways, 'locking' it to the current page content and preserving file sort so it works nice with 'remove files' etc.. -* fixed a stupid typo that was swapping the 'allow non-local connections' server setting when making the interface for IPv6 hosts. there is a secondary check of all client IPs on every request, so I am confident this was not enabling non-local connections when undesired on IPv6, but it was disabling them by deploying the loopback interface when they should have been allowed! sorry for the trouble, and well done to the person who noticed this -* while pursing an odd and rare problem where a download job can start even though it should be waiting on a login process, I cleaned some of the login code and logic, lowering the timeout for session cookie expiring from 60 to 45 minutes and smoothing out some confusing status-checking in the pre-login stage. I could never reproduce the problem, though, so if you have had this issue, please let me know more and I'll see if I can reproduce this reliably - -### simple cleanup - -* cleaned up some filetype parsing code that was getting a little messy, also reduced some overhead -* unified the thumbnail/file filetype parsing a little, with better fallback states when a hydrus thumbnail happens for some reason not to be a jpeg or png -* fixed an out of date menu reference in the 'help my media files are broke.txt' document. 'clear orphan files' is under 'file maintenance' now, not 'db maintenance' diff --git a/docs/developer_api.md b/docs/developer_api.md index 4927f18fc..c0ed6c6d4 100644 --- a/docs/developer_api.md +++ b/docs/developer_api.md @@ -1563,6 +1563,7 @@ Response: "hash" : "4c77267f93415de0bc33b7725b8c331a809a924084bee03ab2f5fae1c6019eb2", "size" : 63405, "mime" : "image/jpeg", + "filetype_forced" : false, "filetype_human" : "jpeg", "filetype_enum" : 1, "ext" : ".jpg", @@ -1617,6 +1618,7 @@ Response: "hash" : "3e7cb9044fe81bda0d7a84b5cb781cba4e255e4871cba6ae8ecd8207850d5b82", "size" : 199713, "mime" : "video/webm", + "filetype_forced" : false, "filetype_human" : "webm", "filetype_enum" : 21, "ext" : ".webm", @@ -1735,6 +1737,7 @@ Response: "hash" : "4c77267f93415de0bc33b7725b8c331a809a924084bee03ab2f5fae1c6019eb2", "size" : 63405, "mime" : "image/jpeg", + "filetype_forced" : false, "filetype_human" : "jpeg", "filetype_enum" : 1, "ext" : ".jpg", @@ -1750,6 +1753,7 @@ Response: "hash" : "3e7cb9044fe81bda0d7a84b5cb781cba4e255e4871cba6ae8ecd8207850d5b82", "size" : 199713, "mime" : "video/webm", + "filetype_forced" : false, "filetype_human" : "webm", "filetype_enum" : 21, "ext" : ".webm", @@ -1778,6 +1782,8 @@ The `thumbnail_width` and `thumbnail_height` are a generally reliable prediction If the file has a thumbnail, `blurhash` gives a base 83 encoded string of its [blurhash](https://blurha.sh/). `pixel_hash` is an SHA256 of the image's pixel data and should exactly match for pixel-identical files (it is used in the duplicate system for 'must be pixel duplicates'). +If the file's filetype is forced by the user, `filetype_forced` becomes `true` and a second mime string, `original_mime` is added. + #### tags The `tags` structure is similar to the [/add\_tags/add\_tags](#add_tags_add_tags) scheme, excepting that the status numbers are: diff --git a/docs/getting_started_installing.md b/docs/getting_started_installing.md index 7c3c98a4a..554d0a12a 100644 --- a/docs/getting_started_installing.md +++ b/docs/getting_started_installing.md @@ -119,7 +119,7 @@ To run the client: ## Updating !!! warning - Hydrus is imageboard-tier software, wild and fun but unprofessional. It is written by one Anon spinning a lot of plates. Mistakes happen from time to time, usually in the update process. There are also no training wheels to stop you from accidentally overwriting your whole db if you screw around. Be careful when updating. Make backups beforehand! + Hydrus is imageboard-tier software, wild and fun--but also unprofessional. It is written by one Anon spinning a lot of plates. Mistakes happen from time to time, usually in the update process. There are also no training wheels to stop you from accidentally overwriting your whole db if you screw around. Be careful when updating. Make backups beforehand! **Hydrus does not auto-update. It will stay the same version unless you download and install a new one.** @@ -142,9 +142,14 @@ The update process: * If the client is running, close it! * If you maintain a backup, run it now! * If you use the installer, just download the new installer and run it. It should detect where the last install was and overwrite everything automatically. -* If you extract, then just extract the new version right on top of your current install and overwrite manually. +* If you extract, then just extract the new version right on top of your current install and overwrite manually. *It is wise to extract it straight from the archive to your install folder.* * Start your client or server. It may take a few minutes to update its database. I will say in the release post if it is likely to take longer. +??? warning "Be extremely careful making test runs of the Extract release" + **Do not test-run the extract before copying it over your install!** Running the program anywhere will create database files in the /db/ dir, and if you then copy that once-run folder on top of your real install, you will overwrite your real database! Of course it doesn't really matter, because you made a full backup before you started, right? :^) + + If you need to perform tests of an update, make sure you have a good backup before you start and then remember to delete any functional test extracts before extracting from the original archive once more for the actual 'install'. + Unless the update specifically disables or reconfigures something, all your files and tags and settings will be remembered after the update. Releases typically need to update your database to their version. New releases can retroactively perform older database updates, so if the new version is v255 but your database is on v250, you generally only need to get the v255 release, and it'll do all the intervening v250->v251, v251->v252, etc... update steps in order as soon as you boot it. If you need to update from a release more than, say, ten versions older than current, see below. You might also like to skim the release posts or [changelog](changelog.md) to see what is new. diff --git a/docs/old_changelog.html b/docs/old_changelog.html index eecf18ee5..a6ac2cd97 100644 --- a/docs/old_changelog.html +++ b/docs/old_changelog.html @@ -34,6 +34,37 @@

changelog