diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 36fd0596..ae503b46 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -345,28 +345,13 @@ jobs: pyinstaller server-win.spec pyinstaller client-win.spec dir -r - - - # yo pretty sure we'll need to install this manually once we are on windows server 2022 - # https://github.com/actions/virtual-environments/issues/4856 - name: InnoSetup - run: | - move hydrus\static\build_files\windows\InnoSetup.iss InnoSetup.iss - ISCC.exe InnoSetup.iss /DVersion=${{ github.ref_name }} - name: Compress Client run: | cd .\dist 7z.exe a -tzip -mm=Deflate -mx=5 ..\Windows-Extract5.zip 'Hydrus Network' cd .. - - - name: Upload a Build Artifact - uses: actions/upload-artifact@v2 - with: - name: Windows-Install - path: dist\HydrusInstaller.exe - if-no-files-found: error - retention-days: 2 - - + - name: Upload a Build Artifact uses: actions/upload-artifact@v2 with: @@ -447,12 +432,27 @@ jobs: pyinstaller server-win.spec pyinstaller client-win.spec dir -r + - + # yo pretty sure we'll need to install this manually once we are on windows server 2022 + # https://github.com/actions/virtual-environments/issues/4856 + name: InnoSetup + run: | + move hydrus\static\build_files\windows\InnoSetup.iss InnoSetup.iss + ISCC.exe InnoSetup.iss /DVersion=${{ github.ref_name }} - name: Compress Client run: | cd .\dist 7z.exe a -tzip -mm=Deflate -mx=5 ..\Windows-Extract6.zip 'Hydrus Network' cd .. + - + name: Upload a Build Artifact + uses: actions/upload-artifact@v2 + with: + name: Windows-Install + path: dist\HydrusInstaller.exe + if-no-files-found: error + retention-days: 2 - name: Upload a Build Artifact uses: actions/upload-artifact@v2 @@ -485,7 +485,7 @@ jobs: mkdir ubuntu windows mv MacOS-DMG5/HydrusNetwork5.dmg Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.macOS.Qt5.-.App.dmg mv MacOS-DMG6/HydrusNetwork6.dmg Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.macOS.Qt6.-.App.dmg - mv Windows-Install/HydrusInstaller.exe Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Windows.Qt5.-.Installer.exe + mv Windows-Install/HydrusInstaller.exe Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Windows.Qt6.-.Installer.exe mv Windows-Extract5/Windows-Extract5.zip Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Windows.Qt5.-.Extract.only.zip mv Windows-Extract6/Windows-Extract6.zip Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Windows.Qt6.-.Extract.only.zip mv Ubuntu-Extract5/Ubuntu-Extract5.tar.gz Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Linux.Qt5.-.Executable.tar.gz @@ -496,7 +496,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/') with: files: | - Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Windows.Qt5.-.Installer.exe + Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Windows.Qt6.-.Installer.exe Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Windows.Qt5.-.Extract.only.zip Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Windows.Qt6.-.Extract.only.zip Hydrus.Network.${{ steps.meta.outputs.version_short }}.-.Linux.Qt5.-.Executable.tar.gz diff --git a/docs/changelog.md b/docs/changelog.md index 6a1db93e..9dddba07 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -3,6 +3,42 @@ !!! note This is the new changelog, only the most recent builds. For all versions, see the [old changelog](old_changelog.html). +## [Version 497](https://github.com/hydrusnetwork/hydrus/releases/tag/v497) + +### misc +* I bulked out the 'star' rating shape a bit more, since the new pentragram, while it looked better than my old 'by-eye' star, was a bit thin. if you prefer the pentagram, this is now selectable as a new shape type under manage services +* the Windows installer is now Qt6 exclusively. there are no special update instructions, it should all just work™ +* the 'manage tag siblings/parents' dialogs now have explicit delete buttons, which should make mass-deletes a little easier to do. some of the background code is cleaned up too, and the 'add' button is moved up to the main button row +* you can now hide all sibling and/or parent text-suffix 'decorators' in the manage tags and autocomplete dropdown taglists, with four new checkboxes under _options->tags_. the right-click menus of these lists let you temporarily show/hide too, just like 'hide/show parent rows' +* when you change the namespace sort in the options, the existing collect-by dropdowns now update instantly (previously, existing pages needed a client restart to see any changes) +* I updated how the media viewer 'note' hover window lays out and does its 'how tall should I be?' estimate. it fits better, being exactly just tall enough in more cases, but it still seems to have trouble with multiple notes that include wrapping text +* added a link to the new flatpak release (easy Linux running-from-source setup) that a user made to the install help +* fixed an issue with the new 'default' file import options when you right-click a watcher/gallery download--the 'show files' menu now correctly adapts to you having a default file import options +* if you are set to elide page tab names, then all pages will tooltip their names on mouseover +* new clients now start with (ctrl+page up/down) as 'move page selection left/right' + +### client api +* the Client API routine that fetches file statuses for a given URL no longer double-checks 'already in db' results against your actual file system. this check is more appropriate to an actual working import process, so it now defaults off in the Client API +* if you want to do this check because you are searching for missing files, you can turn it back on with the new 'doublecheck_file_system' parameter. +* the client api help has been updated to reference this +* the client api's Server header is now "client api/32 (497)". NOT "client api/17". it was stating the hydrus network version erroneously. it now states client api version and software version. if you are able to parse this header, it makes '/api_version' request superfluous +* the client api version is now 32 + +### multiline parsing +* the parser now supports limited multiline parsing. the main changes are hardcoded: the formulae beneath note content parsers and those that do subsidiary page parser splitting no longer remove newlines when they parse. all the parsing UI and the test panels and so on are now aware of this and set flags in all the right places, and parsed notes are now washed through the new trimming/cleaning method, and everything _seems_ to basically work. the main remaining problems is the complicated string processing UI has mixed single/multi-line testing support. some looks great, most gets coerced to single-line just for the previewed test results +* as an example, the default hentai foundry downloader now grabs the artist description as a multi-line note +* the parsing sub-system that extracts cohesive strings from complex html blocks now inserts newlines at 'p' and 'br' tags +* trying to parse clean multiline notes still caused several formatting issues this week, so I have updated the automatic note-washing routine to standardise hydrus notes in several new ways that I hope will not be too disruptive to manually written notes: +* the note washing routine now coerces all newline characters to 'backslash-n', regardless of platform +* the note washing routine now trims each line, so no leading or trailing whitespace anywhere. I am open to changing this in future, maybe for handwritten notes where you really want an indent somewhere, but parsing from complex nested html tags is making a heap of weird extra whitespace, for which this is a clean solution +* the note washing routine now trims newline gaps that are greater than two-newlines. you can split paragraphs by one empty line, but no more +* there may be other issues figuring out cleanly formatted strings from nested html tags--so give it a go and let me know what you think. maybe p and br blocks should always make two newlines, so we have separated paragraphs, maybe I need to parse more blocks, like h1 and friends. any specific example html blocks would also be helpful + +### cleanup +* refactored ClientGUIParsing to its own 'parsing' module and split everything into four less tangled files +* cleaned up a bunch of taglist text presentation code, mostly simplicity and clarity in prep for future updates +* updated the checker options button to use a Qt signal instead of a callable + ## [Version 496](https://github.com/hydrusnetwork/hydrus/releases/tag/v496) ### note import options @@ -307,43 +343,3 @@ * last week's update also gives a time estimate in its pre-popup, based on 60k files per minute * removed some old database cache data that wasn't cleared in a previous update * a variety of misc UI text fixes and cleanup - -## [Version 486](https://github.com/hydrusnetwork/hydrus/releases/tag/v486) - -* **This week's release is for advanced users only! I make a big change, and I want to make sure the update is fast and there are no unusual problems before rolling it out to all users.** -### all my files -* the client adds a new virtual file service this week, 'all my files', which is an umbrella covering all your local file domains. if you do not engage the multiple local file services system, you won't see it much, but if you do, you'll now have a convenient tool for saying 'all my stuff' without including trash and repository updates -* **it will take a minute or two to generate this new service on update. if you have a client with millions of files, it may take a while** -* 'all my files' now appears in the file domain selector button on your tag entry box if you have more than one local file domain. selecting this searches the union of all your local file domains with fast and precise count (as opposed to 'multiple locations' of the full union, which will have imprecise counts and be slower). it also does duplicate file work laser-fast (again, unlike 'multiple locations', which is often slow due to UNION complexity) -* 'all my files' also appears in review and manage services, very similarly to 'all local files' -* a heap of hacks I instituted when getting multiple local file services ready are now replaced with this clean 'yeah this file is valued and worth looking at' domain. for instance, downloader pages now view files in this way. -* mr bones and the file history chart also use 'all my files', and are significantly faster to calculate. the chart also excludes repo update files and trash now -* calls to delete or undelete on 'all my files' (this is mostly Client API and some 'default' situations) will be converted to a blanket 'force send to trash' and 'force undelete all deleted records' -* the 'undelete files?' dialog is now a button selection dialog. it also now has an 'all the above' option when more than one local service may apply, which tells the client to undelete to all services the files have been deleted from -* updated multiple local file services help to talk a little about the new domain -* rearranged the sort in a couple of places where the different local file services appear. they should now be: local file domains, all my files, trash, repo updates, all local files -* ADVANCED: the 'presentation import options' under 'file import options' now allows a full-fledged location context using the new multiple local file services system rather than the previous 'in your files(and trash too)' choice. it defaults to the new 'all my files' domain - -### misc -* thanks to a user, the 'getting started with downloading' help has had a full pass. if you have had trouble with downloaders, particularly if you are unsure about what file import options are for, or what subscriptions are, please check it out! -* the 'media viewers' shortcut set gets three new zoom actions: 'switch between 100% and max', 'switch between canvas and max', and 'zoom to max' (issue #1141) -* if a media type is set to do 'exact zooms', it will now not exceed the otherwise specified max zoom -* the file sort widget will now preserve ascending/descending status on sort type changes (rather than resetting to default) if the asc/desc strings do not change. so, if you are on 'import time'/'oldest first', and switch to 'archive time', it will now stay on 'oldest' rather than resetting to 'newest' -* the manage tag siblings dialog now tries to automatically break loops for you, just like it will automatically break A->B, A->C conflicts. this works on manual entry or mass import -* the manage tag siblings dialog now shows the stated 'reason' for any pair change (e.g. "AUTO-PETITION TO BREAK LOOP") in the 'note' column -* the 'short' animation scanbar--when your mouse is away--now keeps a short disabled volume button beside it. I found it very annoying how the scan nub would jump a few pixels left/right as this popped up and down, so now it is the same width big and small -* right-clicking on files when in pages with 'multiple locations' file domains is now much much faster -* the filename tagging dialog now starts with the 'tags for all' focused, and the 'press up/down on empty input' shortcuts are now plugged in, so pressing up/down will change service -* I believe I may have completely eliminated the additional superlag that sometimes occurs when adding or deleting a service. it was a database maintenance routine getting carried away with other outstanding work -* move/add actions in the new multiple local file system now operate asynchronously and politely, spreading their work time out when the client is busy, and for large jobs they will also make a cancellable progress popup -* cleaned up how the autocomplete entry sends some of its signals to other parts of the program -* did some misc help and code edits/refactoring, including brushing up the Windows install section with more advanced options -* removed the 'hydrus zooms big bad' warning from the 'media' options page. hydrus zooms big good now! - -### some database stuff -* tl;dr: database cleans up after itself better now -* some users have had trouble with database journal files (the 'wal' files in your db directory) on certain clients getting huge after lots of work, multiple GB, and causing the OS a headache if the journal is doing work through a computer sleep. these journals are 'supposed' to checkpoint and clean themselves up naturally, but I think a busy database chokes them. therefore, I have improved the hydrus maintenance this week: 1) the 'journal size limit' PRAGMA, which applies softly after every 30 seconds or so, is now 128MB down from 1GB. 2) databases in PERSIST (rare) mode will now specifically zero out their journal fifteen minutes. 3) databases in WAL mode (the default), in addition to regular PASSIVE checkpointing now every five minutes, will force an additional TRUNCATE checkpoint every fifteen. this should force a regular full flush and maybe help some other problems like gigantic memory bloat the same users sometimes saw. if you are a very advanced user and do active debug on the database while hydrus is using it, please note this new TRUNCATE command is aggressive and may block itself or you inconveniently. let me know how you get on! -* moved the recent 'be careful of usb drives' section in 'installing' help to 'help my db is broke.txt'. it is very likely this problem was related to the above WAL stuff, and it was not just usb drives, I rewrote it as generalised help for anyone who gets 'delayed write failed' errors at the OS level -* massively optimised several critical duplicate files filtering methods if the current location context has more than one file domain, and I think I cleared out the basic 'get duplicate info for this file' call of all slow calls in complex location contexts -* the repair routine that regenerates mapping caches if any tables are missing on boot is now more reliable and covers the entirety of the mappings cache system using the new modules system. it also now regenerates just for the tag services with missing tables, not the whole cache -* if multiple types of mapping cache tables are missing on boot, and multiple waves of regenerations covering different areas are planned, duplicate regenerations will now be skipped diff --git a/docs/developer_api.md b/docs/developer_api.md index b68ab78b..96379862 100644 --- a/docs/developer_api.md +++ b/docs/developer_api.md @@ -120,7 +120,8 @@ Required Headers: n/a Arguments: n/a Response: -: Some simple JSON describing the current api version (and hydrus client version, if you are interested). +: 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)". ```json title="Example response" { @@ -670,6 +671,7 @@ Required Headers: n/a Arguments: : * `url`: (the url you want to ask about) + * `doublecheck_file_system`: true or false (optional, defaults False) Example request: : for URL `http://safebooru.org/index.php?page=post&s=view&id=2753608`: @@ -691,17 +693,18 @@ Response: ] } ``` - - The `url_file_statuses` is a list of zero-to-n JSON Objects, each representing a file match the client found in its database for the URL. Typically, it will be of length 0 (for as-yet-unvisited URLs or Gallery/Watchable URLs that are not attached to files) or 1, but sometimes multiple files are given the same URL (sometimes by mistaken misattribution, sometimes by design, such as pixiv manga pages). Handling n files per URL is a pain but an unavoidable issue you should account for. - - `status` is the same as for `/add_files/add_file`: - - * 0 - File not in database, ready for import (you will only see this very rarely--usually in this case you will just get no matches) - * 2 - File already in database - * 3 - File previously deleted - - `hash` is the file's SHA256 hash in hexadecimal, and 'note' is some occasional additional human-readable text you may recognise from hydrus's normal import workflow. - + +The `url_file_statuses` is a list of zero-to-n JSON Objects, each representing a file match the client found in its database for the URL. Typically, it will be of length 0 (for as-yet-unvisited URLs or Gallery/Watchable URLs that are not attached to files) or 1, but sometimes multiple files are given the same URL (sometimes by mistaken misattribution, sometimes by design, such as pixiv manga pages). Handling n files per URL is a pain but an unavoidable issue you should account for. + +`status` is the same as for `/add_files/add_file`: + + * 0 - File not in database, ready for import (you will only see this very rarely--usually in this case you will just get no matches) + * 2 - File already in database + * 3 - File previously deleted + +`hash` is the file's SHA256 hash in hexadecimal, and 'note' is some occasional additional human-readable text you may recognise from hydrus's normal import workflow. + +If you set `doublecheck_file_system` to `true`, then any result that is 'already in db' (2) will be double-checked against the actual file system. This check happens on any normal file import process, just to check for and fix missing files (if the file is missing, the status becomes 0--new), but the check can take more than a few milliseconds on an HDD or a network drive, so the default behaviour, assuming you mostly just want to spam for 'seen this before' file statuses, is to not do it. ### **GET `/add_urls/get_url_info`** { id="add_urls_get_url_info" } diff --git a/docs/getting_started_installing.md b/docs/getting_started_installing.md index a16c5dd5..9d5ead7a 100644 --- a/docs/getting_started_installing.md +++ b/docs/getting_started_installing.md @@ -49,7 +49,9 @@ I try to release a new version every Wednesday by 8pm EST and write an accompany 5. If it still doesn't work, see if you can do the same for libmpv.so and libcdio.so--or consider [running from source](running_from_source.md) * You can also try [running the Windows version in wine](wine.md). * **Third parties (not maintained by Hydrus Developer)**: - If you use Arch Linux, you can check out the AUR package a user maintains [here](https://aur.archlinux.org/packages/hydrus/). + * (These both run from source, so if you have trouble with the built release, they may work better for you!) + * [AUR package](https://aur.archlinux.org/packages/hydrus/) + * [flatpak](https://flathub.org/apps/details/io.github.hydrusnetwork.hydrus) === "From Source" diff --git a/docs/old_changelog.html b/docs/old_changelog.html index 52eeb870..0846c7d2 100644 --- a/docs/old_changelog.html +++ b/docs/old_changelog.html @@ -33,6 +33,42 @@

changelog