From 2f5493642be163bcda8567db4a06730cdff0a1f6 Mon Sep 17 00:00:00 2001 From: Hydrus Network Developer Date: Wed, 21 Feb 2024 15:09:02 -0600 Subject: [PATCH] Version 563 closes #1511 --- docs/changelog.md | 99 ++++++++++--------- docs/old_changelog.html | 41 ++++++++ hydrus/client/ClientAPI.py | 4 +- hydrus/client/ClientController.py | 6 +- hydrus/client/ClientDefaults.py | 93 +++-------------- hydrus/client/ClientOptions.py | 4 + hydrus/client/ClientThreading.py | 19 ++-- hydrus/client/db/ClientDB.py | 48 +++++++++ hydrus/client/gui/ClientGUI.py | 69 +++++++------ hydrus/client/gui/ClientGUICore.py | 8 +- hydrus/client/gui/ClientGUIDialogs.py | 7 +- hydrus/client/gui/ClientGUIFileSeedCache.py | 15 ++- hydrus/client/gui/ClientGUIFunctions.py | 8 +- .../gui/ClientGUIScrolledPanelsManagement.py | 20 +++- .../client/gui/ClientGUIShortcutControls.py | 29 +++++- hydrus/client/gui/ClientGUIShortcuts.py | 37 +++++-- hydrus/client/gui/ClientGUISubscriptions.py | 2 +- hydrus/client/gui/ClientGUITime.py | 18 +++- hydrus/client/gui/ClientGUITopLevelWindows.py | 17 +++- .../gui/ClientGUITopLevelWindowsPanels.py | 9 +- hydrus/client/gui/lists/ClientGUIListBoxes.py | 57 ++++++----- .../gui/pages/ClientGUIManagementPanels.py | 69 ------------- .../client/gui/search/ClientGUIACDropdown.py | 53 ++++++---- hydrus/client/gui/search/ClientGUILocation.py | 24 ++++- .../gui/search/ClientGUIPredicatesOR.py | 21 +++- hydrus/client/gui/search/ClientGUISearch.py | 10 +- .../client/importing/ClientImportFileSeeds.py | 19 ++++ hydrus/client/importing/ClientImportLocal.py | 26 ----- .../importing/ClientImportSimpleURLs.py | 26 ----- hydrus/client/search/ClientSearch.py | 1 + hydrus/core/HydrusConstants.py | 2 +- hydrus/server/ServerDB.py | 19 +++- hydrus_client.sh | 10 +- setup_desktop.sh | 30 +++--- setup_help.command | 10 +- setup_help.sh | 10 +- setup_venv.bat | 10 ++ setup_venv.command | 5 + setup_venv.sh | 5 + 39 files changed, 541 insertions(+), 419 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 783eafc5..7873b4fa 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -7,6 +7,56 @@ title: Changelog !!! note This is the new changelog, only the most recent builds. For all versions, see the [old changelog](old_changelog.html). +## [Version 563](https://github.com/hydrusnetwork/hydrus/releases/tag/v563) + +### macOS improvements + +* Thanks to a user, we have multiple improvements for macOS! +* There is a new icon for the macOS .app build of hydrus +* The macOS app will now appear as "Hydrus" in the menu bar instead of "Hydrus Network" +* - Use the native global menu bar on macOS and some Linux desktop environments +* - "options" will now appear as "Preferences..." and be under the Hydrus menu on macOS +* - "exit" will now appear as "Quit Hydrus" and be under the Hydrus menu on macOS +* "exit and force shutdown maintenance", "restart", and "shortcuts" will now be under the Hydrus menu on macOS +* The hydrus system tray icon is now enabled for macOS and "minimise to system tray" will be in the Hydrus menu when in advanced mode +* macOS debug dialog menus are now disabled by default +* The macOS build of hydrus now uses pyoxidizer 0.24.0 and Python 3.10 +* The command palette and hyperlinks colors in the default Qt stylesheet now use palette based colors that should change based on the Qt style +* one thing hydev did: on macOS, Cmd+W _should_ now close any dialog or non-main-gui window, just like the Escape key + +### shortcuts + +* by default, Alt+Home/End/Left/Right now does the new thumbnail rearranging. **assuming they do not conflict with an existing mapping, all users will recieve this on update** +* by default, the shortcuts system now converts all non-number 'numpad' inputs (e.g. 'numpad Home', 'numpad Return', 'numpad Left') to just be normal inputs. a bunch of different keyboards have whack numpad assignments for non-numpad keys, so if it isn't a number, let's not, by default, make a fuss over the distinction. you can return to the old behaviour by unchecking the new checkbox under _file->shortcuts_ +* the default shortcuts now no longer spam numpad variants anywhere. existing users can delete the surplus mappings (under 'thumbnails' and maybe some of the 'media' sets) if they like + +### some UI QoL + +* the _tag service_ menu button that appears in the autocomplete panel and sometimes some other places in advanced mode now shows a proper check mark in its menu beside its current value +* the _location context_ menu button on the other side of an autocomplete panel and some other places also now shows a check mark in its menu beside its current value +* the `OR` button on search autocomplete that creates new OR predicates now inherits the current file search domain. it was previously defaulting at all times to the fallback file domain and 'all known tags' +* the current search predicates list also now inherits the file search domain when you edit an OR predicate currently in use, same deal +* removed the 'favourites' submenu from the taglist menu when no tags are selected +* in any import context, the file log's arrow menu now supports deleting all the 'unknown' (outstanding, unstarted) items or setting them all to 'skipped'. the 'abort imports' button (with the stop icon) in HDD and urls import pages is removed + +### misc + +* fixed yet another dumb problem with the datetime control's paste button--although the paste was now 'working' on the UI side, the control wasn't saving that result on dialog ok. the fixes both the datetime button and the modified/file service time multi-column list editing +* a core asynchronous thread-checking timer in the program has been rewritten from a 20ms-resolution busy-wait to a <1ms proper wait/notify system. a bunch of stuff that works in a thread is now much faster to recognise that blocking UI work is done, and it is more thread-polite about how it does it! +* in the `setup_venv` scripts, if it needs to delete an old venv directory but fails to do so, the script now dumps out with an error saying 'hey, you probably have it open in a terminal/IDE, please close that and try again'. previously, it would just charge on and produce an odd file permission error as, e.g., the new venv setup tried to overwrite the in-use python exe +* added a `help->debug->gui->isolate existing mpv widgets` command to force regeneration of mpv windows and help test-out/hack-fix various 'every other of my mpv views has no audio' and 'my mpv loses xxx property after a system sleep/wake cycle' problems. if I've been working with you on this stuff, please give it a go and let me know if new mpv window creation is good or what! +* added a `BUGFIX: Disable off-screen window rescue` checkbox to `options->gui` that stops windows that think they are spawning off-screen from repositioning to a known safe screen. several Qt versions have had trouble with enumerating all the screens in a multiple monitor setup and thus the safe coordinate space, so if you have been hit by false positives here, you can now turn it off! (issue #1511) +* fixed another couple instances of error texts with empty formatting braces `{}` + +### tag repository + +* mapping petitions fetched from the server will now max out at 500k mapping rows or 10k unique tags or ten seconds of construction time. we had a 250k-unique-tag petition this last week and it broke something, so I'm slapping a bunch of safety rails on. let me know if these are too strict, too liberal, or if it messes with the fetch workflow at all--I don't _think_ it will, but we'll see + +### build stuff + +* now they have had time to breathe, I optimised the recently split Github build scripts. the 'send to an ubuntu runner and then upload' step is now removed from all three, so they are natively uploaded in the first runner step. it works just a little nicer and faster now, although it did require learning how to truncate and export a variable to the Github Environment Variables file in Powershell, aiiieeeee +* also, Github is moving from Node 16 to Node 20 soon, and I have moved two of the four actions we rely on to their newer v20 versions. a third action should be ready to update next week, and another, a general download file function, I have replaced with curl (for macOS) and Powershell's magical Invoke-WebRequest adventure + ## [Version 562](https://github.com/hydrusnetwork/hydrus/releases/tag/v562) ### misc @@ -433,52 +483,3 @@ title: Changelog * thanks to a user, the Client API now has the ability to see and interact with the current popup messages in the popup toaster! * fixed a stupid typo that I made in the new Client API options call. added a unit test to catch this in future, too * the client api version is now 57 - -## [Version 553](https://github.com/hydrusnetwork/hydrus/releases/tag/v553) - -### animated gif fixes - -* fixed the **false positive** "serious I/O Error! This is a significant hard drive problem" problems saw in last week's animated gif 'has transparency' rescanning. it turns out the PIL animated gif renderer we rarely use was raising overly serious errors on a truncated frame (i.e. some borked file, not a borked OS hard drive access), and this was escalating up to the overall maintenance system, which was shutting down in panic. truncated gifs in the PIL renderer should now just either render the last frame over and over or rewind as soon as they hit a super problem -* as well as rendering, the duration and frame-counter code also handles these borked frames better, so animated gifs that have a single borked frame should now A) import without an error and B) get more accurate frame counts -* you may have seen this sort of error before where an mpv window seems to keep rendering the gif despite the scanbar hitting its right end. if you see a file like that, try right-clicking and hitting _manage->maintenance->regenerate file metadata_. might just fix it up! -* if mpv encounters one of these busted gifs, a selection of quiet-but-spammy "I don't know what happened, but MPV just reported a weird error, here it is" logging no longer happens. we basically know what happened, and mpv seems good at recovering -* fixed some PIL alpha gif rendering on backwards seek and loop - -### slideshow tech - -* _options->media_ has a new 'slideshow' section with five new options regarding slideshows and media with duration (video, audio). if you don't care too much, just leave them alone--they make slideshows transition better! -* first, there's a checkbox to say 'always play duration-having media completely once through before moving on'. this was the previous behaviour, now default off -* then there are two options, for a percentage of the current slideshow period and a flat seconds value, to say 'if the duration-having media is shorter than this amount of time, then move the slideshow on early'. this allows short gif loops to play a bit, but not for 15 minutes -* then there is an option, for a percentage of the current slideshow period, to say 'if the duration-having media has a duration between this amount and 100% of the slideshow period, then move on once it has played once through'. this allows for clean slideshow transitions for media that is just a bit shorter than the slideshow period -* then there is an option, again for a percentage of the slideshow period, to say 'if the duration-having media is _longer_ than the slideshow period plus this amount of time, then delay moving on until it is played once through'. this allows 35 second videos to complete fully in a 30 second slideshow while stopping a ten minute vid hogging its turn -* completely rewrote the slideshow timer tech -* did a little work bringing the experimental Qt media player up to proper slideshow capability, and neatened the associated code -* yes, hydev did write all these options for his repurposed slideshow computer because he was annoyed about his vidya captures and 500ms loops playing jank on a 30m slideshow period - -### misc - -* the file-info-summary lines that appear in the top row thumbnail menu submenu now show if a file has audio/transparency/exif/other metadata/icc profile -* the file-info-summary lines that appear in the top row thumbnail menu submenu and the top-center of the media viewer no longer list 'removed from x 5 days ago' for files that were moved internally between local file services. these statements were spammy and not helpful! if you really need them, are available in the 'manage times' dialog. sorry for the annoyance here -* trying to move a file from local file service x to y no longer triggers the archive delete lock, if you have that enabled (this was prohibiting the delete from x after the copy to y is done) -* the 'import options' button now labels itself with 'all default', 'all set', or 'some set' to quick-review what it is holding -* the stupidly named advanced users' `OR*` button is now just `advanced` -* the 'manage->regenerate' thumbnail menu is now called 'maintenance', and it always contains the whole file maintenance job list just as it appears in the main file maintenance panel. tooltips are the longer descriptions -* if you reduce a static check time in a checker options (watchers or subscriptions), the next check time should now recalculate correctly immediately. previously, the new check period wasn't kicking in until the next, delayed cycle. I have preserved the logic that tries to keep a static check time regular (which was the core problem here), where if you check every 7 days on saturday night, then delaying one time and running it on sunday night won't delay the check time phase along to next sunday--the next week it will be due on saturday again -* the system:rating edit panel has some tooltips that say 'Set "is" and leave rating null to search for "unrated".'. maybe this is annoying, maybe I should just add redundant 'unrated' checkboxes, let me know what you think -* when the file maintenance routine runs into a serious error (like we had with the false positive transparent gifs), the popup messages now include a file button for the problem file for easy referral -* if a file breaks MPV in a crashy-looking way, hydrus now makes a popup with a file button to it for easy referral -* fixed a typo issue with the recent temp folder recovery code that broke the temp folder for file imports on the hydrus file repository. sorry for the trouble, this slipped through unit testing because that too has a hacky temp folder solution! - -### weird/specific stuff - -* I've spaced out many of the initial library loads across the core boot init routine. fingers crossed, the splash screen will open earlier and report more as things each import, rather than taking ages to appear and then suddenly initialising everything real quick (on slow computers). also, a monolithic UI init job is broken up into pieces, which should let the splash update itself a little smoother as your client loads its style and stuff -* the file and database maintenance managers are now initialised in a better stage, and, like the subscription manager, they now do not start any work until the first session is fully loaded -* while pouring over the server code trying to find a petition miscount bug and/or a petition summary fetch bug (which I was entirely unsuccessful at), I stopped it 404ing when there are unexpectedly no petitions to fetch--it should now just give an empty list and reset the count serverside, which is an old behaviour that wasn't working quite right in the modern system. this will cost less CPU than commanding the full service service_info number reset. I will have to investigate the core problem of miscounts more closely to figure out the base problem here -* if two subscription jobs publish files to the same popup label (which merges the popup button to include both sets of files), this file list is now properly deduplicated (so if both subs picked up the same file(s), it now won't try to publish the same file twice). the basic popup button instantiation also clears out dupes -* the 'additional tags'-only tag import options in a subscription query can now no longer be set 'default'. this choice was unintended and has no current meaning if set -* building on last week, there are even fewer duplicate menu tooltips -* updated and clarified the text in _options->external programs_. also, if you try to put a command that does not include "%path%", it'll moan at you with a yes/no dialog -* when 'confirm sending files to trash' is off but 'use advanced file delete dialog' is also on, the advanced file delete dialog will now not pop up if there is only one normal local file service to delete from (it was always popping up before, since it exposes the physical file delete options and the dialog thought it wasn't a 'one-choice' delete) -* the forced-wait throttle that happens on several exception catches is reduced from 1s to 200ms -* I made the new job status queue properly thread-safe with a lock. I forgot to do it last week, whoops! -* fixed the build script to construct a file named .tar.zst for the Ubuntu release, not .tar.gz diff --git a/docs/old_changelog.html b/docs/old_changelog.html index d66ca89b..a8fe893a 100644 --- a/docs/old_changelog.html +++ b/docs/old_changelog.html @@ -34,6 +34,47 @@

changelog