diff --git a/auto_update_installer.bat b/auto_update_installer.bat new file mode 100644 index 00000000..d52e9d73 --- /dev/null +++ b/auto_update_installer.bat @@ -0,0 +1,36 @@ +@ECHO off + +pushd "%~dp0" + +ECHO r::::::::::::::::::::::::::::::::::r +ECHO : : +ECHO : :PP. : +ECHO : vBBr : +ECHO : 7BB: : +ECHO : rBB: : +ECHO : :DQRE: rBB: :gMBb: : +ECHO : :BBBi rBB: 7BBB. : +ECHO : KBB: rBB: rBBI : +ECHO : qBB: rBB: rQBU : +ECHO : qBB: rBB: iBBS : +ECHO : qBB: iBB: 7BBj : +ECHO : iBBY iBB. 2BB. : +ECHO : SBQq iBQ: EBBY : +ECHO : :MQBZMBBDRBBP. : +ECHO : .YBB7 : +ECHO : :BB. : +ECHO : 7BBi : +ECHO : rBB: : +ECHO : : +ECHO r::::::::::::::::::::::::::::::::::r +ECHO: +ECHO hydrus +ECHO: + +SET /P ready="This will download the latest exe installer using winget and install it to this location! As always, make a backup before you update. Hit Enter to start." + +winget install --id=HydrusNetwork.HydrusNetwork -e --location "./" + +popd + +SET /P done="Done!" diff --git a/docs/changelog.md b/docs/changelog.md index 574e3d4d..a6857baf 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -7,6 +7,46 @@ title: Changelog !!! note This is the new changelog, only the most recent builds. For all versions, see the [old changelog](old_changelog.html). +## [Version 548](https://github.com/hydrusnetwork/hydrus/releases/tag/v548) + +### user contributions + +* thanks to a user, krita files are now renderable! we've got the defaults set like psds for now, where the preview viewer will show 'open externally', but the media viewer tries to load the full thing. let's see how it goes, and as always, if you have one that doesn't work, please send it in! note that krita are now eligible for the similar files system, so I've queued them up to get entered into it +* thanks to a user, setting an IPFS 'nocopy' path including your home directory (~) should now expand correctly (issue #1320) +* thanks to a user, newly-IPFS-pinned files are properly aware of their multihashes now (previously you needed a client restart or media reload after a delay) (issue #1328) +* thanks to a user, the url and hdd downloaders now have 'stop/abort' buttons, which will stop current work and cancel the rest of the queue. I added a yes/no dialog where you can choose to skip or delete the remainder of the queue and a couple of bells and whistles like disabling the button when the current queue has no remaining work + +### misc + +* fixed an issue with successive drag and drop file exports that gave different files the same filename. previously, the successive files were being replaced with the first instance with the shared name (basically the original files were not being 'overwritten'), but it should be fixed now! +* various places that were sorting services pseudorandomly now do so alphabetically (the F9 new page selector was doing this with local file domains (the first buttons in 'file search'), if you had multiple set up. sorry if I mess with your muscle memory here, but things should be more reliable here going forward!) +* added a first version of an auto-update script, `auto_update_installer.bat`, to the main install directory. it will download the latest Windows exe installer using winget and install it to the current location. if you use the installer, you might want to experiment with it (make a backup first!) as an easy hands-free update solution. let me know how it goes, and if there are no problems in a couple of weeks, I'll add it to the help +* added some more mpv error handling. if the mainloop behind your mpv window halts (which happens on various internal problems), we now detect it and more gracefully disable the viewer and its commands (previously it would escalate to error popups and try to keep working) +* fixed an issue in the newer 'missing file storage recovery' code if there is more than one base location missing + +### thumbnail shortcuts + +* I converted all the old hardcoded thumbnail keyboard shortcuts (thumbnail focus movement, open-media-viewer, and select-files) to the newer user-editable system under _file->shortcuts_, under a new set called 'thumbnails'. there are some new file-filters too, so you can set up 'select inbox' and similar beyond the default ctrl+a to 'select all' and escape to 'select none' +* I don't expect many people will want to even touch the giganto list of (shift+)(numpad)left/right/up/down/page up/page down/home/end selection combinations, but if you want to, you can! +* the thumbnails set also now allows 'launch the archive/delete filter', which had an odd home in 'media' before. new users now start with F12 set up in 'thumbnails', not 'media' +* I removed the jank semi-secret 'ctrl+space' hardcoded 'deselect current focused thumbnail' shortcut. that tech will probably return when I figure out more sensible logic and user settings around shift+ and ctrl+ behaviour +* this cleanup reduces three different shortcut handling routines down to one, and it particularly clears the last place where I was using ancient grandfathered wx-based 'accelerator table' tech. it should be easier to update the thumbnail shortcuts in future, and I hope to plug the mouse into it also, so you can edit middle-click to launch media etc.. + +### client api + +* after much discussion and personal vacillating, I have decided to include the `version` and `hydrus_version` in every JSON Client API response. CBOR responses are not affected. if you need to hook into these numbers for a completely stateless interface, it is now super convenient. I'm not delighted with the spamminess of this, but it is just a handful of characters and it adds value for several situations, so I'm willing to try it out +* updated the documentation and unit tests regarding this +* the client api version is now 54 + +### boring stuff + +* file filter objects are now serialisable +* application commands can now hold serialisable objects in their 'simple data' slot +* I made a new 'slightly more than simple' application command to hold a 'thumbnail move' that has both a direction and a selection status. I expect it will be expanded in future to handle ctrl+ selection and other logic preferences +* 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 @@ -356,53 +396,3 @@ title: Changelog * a bunch of simple `image`->`animation` renames, like IMAGE_APNG is now ANIMATION_APNG * cleaned up some other confusing code handles for 'image' vs 'static image', to handle whether we are talking about strictly images or viewable raster image-likes (for now including PSD files) but I think it'll need more work * deleted some ancient and no longer used imageboard profile code - -## [Version 538](https://github.com/hydrusnetwork/hydrus/releases/tag/v538) - -### important note on index regeneration - -* **if you get a note on update about missing indices that need to be regenerated, don't panic! everything is fine, nothing to worry about, let it do its work** - -### new libraries today - -* **if you run from source, I recommend you rebuild your venv today. the setup script points at new versions of Qt, OpenCV, and a HEIF module that adds new filetype support** - -### new Qt and OpenCV - -* all release builds and normal source installations move up to PySide6 (Qt) 6.5.2 today. we've done a good bit of testing in different situations, and it seems to be a good and reliable upgrade from 6.4.1, which has given us a mix of annoying trouble at times, like mismatched UI scaling and mpv-related flickering -* let me know if you have any trouble with the overall feel of the program, particularly if you are running on an older or un-updated version of your OS -* the last version of Qt that was generally without caveats was 6.3.1. if you do have trouble with today's release (I suspect old and un-updated OSes, or source users on older Python), one option is to move to running from source and using this older version, which I have updated my setup_venv scripts to offer as a stable 'Qt6 (o)lder' option -* similarly, we are moving from OpenCV (an image library) 4.5.5.64 to 4.7.0.72. we've tested this in several rounds of future-builds and had no reports of trouble, and this also improves some build compatibility with FFMPEG 5.0 (issue #1419) -* the 'test' version of Qt stays at 6.5.2 for now, since this is the latest version -* the 'old' OpenCV compatability version remains at 4.5.3.56, the new 'test' version is now 4.8.0.74 - -### deferred delete system - -* the first full version of the deferred delete system is complete. your no-longer-needed tables lying around after a big operation like a PTR delete/reset will now be shrunk in the background until they are small enough to delete in trivial time -* the menu entry under _database->database maintenance_ has a new submenu for the job and 'work in idle/normal' time checkboxes just like file maintenance -* the new review window UI is now fleshed out. it can refresh itself, and automitically does so on changes, and the 'work hard' button functions -* I discovered a bug in last week's code that stopped some indices from being recreated in certain regeneration jobs. if you did a 'regenerate tag text search cache' or similar operation last week, you'll encounter the above 'need to regen some indices' note. no worries, it'll all fix itself, and, if you noticed any slowdown, the affected system should work at the proper speed again - -### user contributions - -* thanks to a user, we now have full support for HEIF, HEIC, and AVIF image files. they will import and render just like any other image. furthermore, we have support for HEIF, HEIC, and AVIF 'sequences', which are basically like an animated gif or apng and are under the 'animations' filetype category (and they seem to play in mpv great! although I don't have an example HEIC sequence to test with, lol). all users who use the normal build will get this on update--anyone running from source will want to rebuild their venv this week to get the functionality. you can double-check _help->about_ to see if you have the required 'pillow-heif' library -* thanks to a user, the various help links in the program now redirect to the online help (and/or direct to a guide to build the local help) if the local help is missing (fixes #1360) -* thanks to a user, an addititonal final network transfer size check is now in place. if a server says it will deliver x bytes and actually delivers y, the job now raises an error. this can happen with various twitter solutions, where vid downloads will sometimes stealth-stop-working, leaving a valid but truncated mp4. fingers crossed this will now catch that situation and trigger a re-attempt -* thanks to a user, fixed TIFF files not showing EXIF correctly. just to be safe, all tiffs will be scheduled for a 'has EXIF?' rescan on update, and I silenced another bit of tiff-related PIL warning-logspam -* mkv files with AV1 video (and no/worbis/opus audio) are now correctly identified as webms. all mkvs will be scheduled for a metadata rescan on update - -### misc - -* when transferring mappings, _tags->migrate tags_ now supports a full location context file filter (like the file domain button you see in an autocomplete). previously it was just a list of single locations to pick from, but now, if you want to grab tags for all files deleted from x, or all files in either y or z, it is simple to set up. relatedly, the 'multiple/deleted' dialog picker launched from that menu now sizes itself to try and fit all its stuff in, rather than always being scrolled -* fixed a bug that meant you could ok the 'edit predicate' dialog despite the regex string being invalid when editing an existing 'system:known url=(regex)' predicate. the 'check valid' test is now caught correctly and cancels dialog ok, rather than escalating to the popup message catcher -* fixed a bug in table analyze code that was causing empty tables to be unintentionally re-analysed over good existing data -* a file_system_type-checking call that is used in file-export is now cached. previously it was hit for every pending file path to be calculated, and on systems with a 50ms response time to this call (I presume because of NAS/RAID-style gubbins), it meant opening the file export window could take minutes (issue #1413) -* APNG metadata parsing no longer requires FFMPEG, greatly accelerating their import -* I think I fixed the root cause of a weird bug we encountered and hacked around a couple weeks ago, where if a certain sort of downloaded page produced nothing via its parser, and it was detected initially as actually a valid file to import, but then that file import failed (e.g. ffmpeg went full bananas and thought a json file was an mp4), the import attempt would loop. the error handling now catches the unusual import failure gracefully, and the import object should be set to 'skipped' appropriately -* fixed a harmless but annoying desync error popup that sometimes occurs when deleting a repository service - -### misc boring notes - -* to deal with the deferred delete system clashing with SQLite not allowing index renames, I moved the database index testing and creation system to a dynamic name format. it works but is a little hacky, so maybe we'll move to direct sqlite_master interrogation in future -* unfortunately, the table shrink method I had planned to employ was not feasible (I wanted to do 'delete n rows', but it turns out that isn't compiled by default in all normal SQLite releases wew). I then experimented with several other strategies and settled on the KISS of 'select n, delete these n' in two queries, which worked out far better than my cleverer attempts anyway. the thing doesn't use much CPU time, and it cautiously autothrottles itself, and I've tested it in a bunch of situations, and I'm super happy with the performance, but if you do happen to get noticeable bumps of lag, most likely in PTR removal when the current_mappings giga-table is shrunk, turn off all database maintenance under the menu, for both idle and normal time, and let me know, and we'll figure it out -* refactored APNG parsing code to the new 'HydrusAnimationHandling.py' and took out the ffmpeg code. now OpenCV/PIL figures out the resolution diff --git a/docs/developer_api.md b/docs/developer_api.md index e2b35b78..2e4f9de8 100644 --- a/docs/developer_api.md +++ b/docs/developer_api.md @@ -46,7 +46,7 @@ In general, the API deals with standard UTF-8 JSON. POST requests and 200 OK res ``` -The API returns JSON for everything except actual file/thumbnail requests. For errors, you'll typically get 400 for a missing/invalid parameter, 401/403/419 for missing/insufficient/expired access, and 500 for a real deal serverside error. +The API returns JSON for everything except actual file/thumbnail requests. Every JSON response includes the `version` of the Client API and `hydrus_version` of the Client hosting it (for brevity, these values are not included in the example responses in this help). For errors, you'll typically get 400 for a missing/invalid parameter, 401/403/419 for missing/insufficient/expired access, and 500 for a real deal serverside error. !!! note For any request sent to the API, the total size of the initial request line (this includes the URL and any parameters) and the headers must not be larger than 2 megabytes. @@ -309,7 +309,7 @@ Note: If you need to do some quick testing, you should be able to copy the `serv ### **GET `/api_version`** { id="api_version" } -_Gets the current API version. I will increment this every time I alter the API._ +_Gets the current API version. This increments every time I alter the API._ Restricted access: NO. @@ -319,7 +319,10 @@ Arguments: n/a Response: : Some simple JSON describing the current api version (and hydrus client version, if you are interested). -: Note that this is mostly obselete now, since the 'Server' header of every response (and a duplicated 'Hydrus-Server' one, if you have a complicated proxy situation that overwrites 'Server') are now in the form "client api/{client_api_version} ({software_version})", e.g. "client api/32 (497)". +: Note that this is not very useful any more, for two reasons: + +: 1. The 'Server' header of every response (and a duplicated 'Hydrus-Server' one, if you have a complicated proxy situation that overwrites 'Server') are now in the form "client api/{client_api_version} ({software_version})", e.g. "client api/32 (497)". +: 2. **Every JSON response explicitly includes this now.** ```json title="Example response" { diff --git a/docs/faq.md b/docs/faq.md index 2d8e8ec4..edc66462 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -113,7 +113,7 @@ So, when you delete a file from 'my files', none of its tag mappings in 'my tags This is an important part of how the PTR works--when you sync with the PTR, your client downloads a couple billion mappings for files you do not have yet. Then, when you happen to import one of those files, it appears in your importer with its PTR tags 'apparently' already set--in truth, it always had them. -When you feel like playing with some more advanced concepts, turn on _help->advanced mode_ and open a new search page. Change the file domain from 'my files' to 'all known files' or 'deleted from my files' and start typing a common tag--you'll get autocomplete results with counts! You can even run the search, and you'll get a ton of 'non-local' and therefore non-viewable files that are typically given a default hydrus thumbnail. These are files that your client is aware of, but does not currently have. You can run the _manage x_ dialogs and edit the metadata of these ghost files just as you can your real ones. +When you feel like playing with some more advanced concepts, turn on _help->advanced mode_ and open a new search page. Change the file domain from 'my files' to 'all known files' or 'deleted from my files' and start typing a common tag--you'll get autocomplete results with counts! You can even run the search, and you'll get a ton of 'non-local' and therefore non-viewable files that are typically given a default hydrus thumbnail. These are files that your client is aware of, but does not currently have. You can run the _manage x_ dialogs and edit the metadata of these ghost files just as you can your real ones. The only thing hydrus ever needs to attach metadata to a file is the file's SHA256 hash. If you really want to delete the tags or other data for some files you deleted, then: diff --git a/docs/old_changelog.html b/docs/old_changelog.html index 3b88b2db..5cd4c662 100644 --- a/docs/old_changelog.html +++ b/docs/old_changelog.html @@ -34,6 +34,39 @@

changelog