Deployed abaea811 with MkDocs version: 1.5.3

This commit is contained in:
2024-04-10 20:50:10 +00:00
parent 5aa45a9fbd
commit b9d741f0dc
6 changed files with 285 additions and 435 deletions

View File

@ -1988,6 +1988,57 @@
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#version_570" class="md-nav__link">
<span class="md-ellipsis">
Version 570
</span>
</a>
<nav class="md-nav" aria-label="Version 570">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ui_stuff" class="md-nav__link">
<span class="md-ellipsis">
UI stuff
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#misc" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#more_url_stuff_advanced_can_be_ignored_by_most" class="md-nav__link">
<span class="md-ellipsis">
more URL stuff (advanced, can be ignored by most)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#boring_stuff" class="md-nav__link">
<span class="md-ellipsis">
boring stuff
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#version_569" class="md-nav__link">
<span class="md-ellipsis">
@ -2017,7 +2068,7 @@
</li>
<li class="md-nav__item">
<a href="#misc" class="md-nav__link">
<a href="#misc_1" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -2026,7 +2077,7 @@
</li>
<li class="md-nav__item">
<a href="#boring_stuff" class="md-nav__link">
<a href="#boring_stuff_1" class="md-nav__link">
<span class="md-ellipsis">
boring stuff
</span>
@ -2131,7 +2182,7 @@
</li>
<li class="md-nav__item">
<a href="#boring_stuff_1" class="md-nav__link">
<a href="#boring_stuff_2" class="md-nav__link">
<span class="md-ellipsis">
boring stuff
</span>
@ -2173,7 +2224,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_1" class="md-nav__link">
<a href="#misc_2" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -2242,7 +2293,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_2" class="md-nav__link">
<a href="#misc_3" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -2293,7 +2344,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_3" class="md-nav__link">
<a href="#misc_4" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -2362,7 +2413,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_4" class="md-nav__link">
<a href="#misc_5" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -2404,7 +2455,7 @@
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#misc_5" class="md-nav__link">
<a href="#misc_6" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -2464,7 +2515,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_6" class="md-nav__link">
<a href="#misc_7" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -2524,7 +2575,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_7" class="md-nav__link">
<a href="#misc_8" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -2571,126 +2622,6 @@
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#version_559" class="md-nav__link">
<span class="md-ellipsis">
Version 559
</span>
</a>
<nav class="md-nav" aria-label="Version 559">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#millisecond_timestamps" class="md-nav__link">
<span class="md-ellipsis">
millisecond timestamps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#time_details" class="md-nav__link">
<span class="md-ellipsis">
time details
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#what_still_has_second-resolution" class="md-nav__link">
<span class="md-ellipsis">
what still has second-resolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#client_api_4" class="md-nav__link">
<span class="md-ellipsis">
client api
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#misc_8" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#version_558" class="md-nav__link">
<span class="md-ellipsis">
Version 558
</span>
</a>
<nav class="md-nav" aria-label="Version 558">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#user_contributions_2" class="md-nav__link">
<span class="md-ellipsis">
user contributions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#misc_9" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#systemnumber_of_urls" class="md-nav__link">
<span class="md-ellipsis">
system:number of urls
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#more_cbz_rules" class="md-nav__link">
<span class="md-ellipsis">
more cbz rules
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cleanup_and_boring_stuff" class="md-nav__link">
<span class="md-ellipsis">
cleanup and boring stuff
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
@ -2756,6 +2687,57 @@
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#version_570" class="md-nav__link">
<span class="md-ellipsis">
Version 570
</span>
</a>
<nav class="md-nav" aria-label="Version 570">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ui_stuff" class="md-nav__link">
<span class="md-ellipsis">
UI stuff
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#misc" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#more_url_stuff_advanced_can_be_ignored_by_most" class="md-nav__link">
<span class="md-ellipsis">
more URL stuff (advanced, can be ignored by most)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#boring_stuff" class="md-nav__link">
<span class="md-ellipsis">
boring stuff
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#version_569" class="md-nav__link">
<span class="md-ellipsis">
@ -2785,7 +2767,7 @@
</li>
<li class="md-nav__item">
<a href="#misc" class="md-nav__link">
<a href="#misc_1" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -2794,7 +2776,7 @@
</li>
<li class="md-nav__item">
<a href="#boring_stuff" class="md-nav__link">
<a href="#boring_stuff_1" class="md-nav__link">
<span class="md-ellipsis">
boring stuff
</span>
@ -2899,7 +2881,7 @@
</li>
<li class="md-nav__item">
<a href="#boring_stuff_1" class="md-nav__link">
<a href="#boring_stuff_2" class="md-nav__link">
<span class="md-ellipsis">
boring stuff
</span>
@ -2941,7 +2923,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_1" class="md-nav__link">
<a href="#misc_2" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -3010,7 +2992,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_2" class="md-nav__link">
<a href="#misc_3" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -3061,7 +3043,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_3" class="md-nav__link">
<a href="#misc_4" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -3130,7 +3112,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_4" class="md-nav__link">
<a href="#misc_5" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -3172,7 +3154,7 @@
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#misc_5" class="md-nav__link">
<a href="#misc_6" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -3232,7 +3214,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_6" class="md-nav__link">
<a href="#misc_7" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -3292,7 +3274,7 @@
</li>
<li class="md-nav__item">
<a href="#misc_7" class="md-nav__link">
<a href="#misc_8" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
@ -3339,126 +3321,6 @@
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#version_559" class="md-nav__link">
<span class="md-ellipsis">
Version 559
</span>
</a>
<nav class="md-nav" aria-label="Version 559">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#millisecond_timestamps" class="md-nav__link">
<span class="md-ellipsis">
millisecond timestamps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#time_details" class="md-nav__link">
<span class="md-ellipsis">
time details
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#what_still_has_second-resolution" class="md-nav__link">
<span class="md-ellipsis">
what still has second-resolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#client_api_4" class="md-nav__link">
<span class="md-ellipsis">
client api
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#misc_8" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#version_558" class="md-nav__link">
<span class="md-ellipsis">
Version 558
</span>
</a>
<nav class="md-nav" aria-label="Version 558">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#user_contributions_2" class="md-nav__link">
<span class="md-ellipsis">
user contributions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#misc_9" class="md-nav__link">
<span class="md-ellipsis">
misc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#systemnumber_of_urls" class="md-nav__link">
<span class="md-ellipsis">
system:number of urls
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#more_cbz_rules" class="md-nav__link">
<span class="md-ellipsis">
more cbz rules
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cleanup_and_boring_stuff" class="md-nav__link">
<span class="md-ellipsis">
cleanup and boring stuff
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
@ -3489,6 +3351,54 @@
<p class="admonition-title">Note</p>
<p>This is the new changelog, only the most recent builds. For all versions, see the <a href="old_changelog.html">old changelog</a>.</p>
</div>
<h2 id="version_570"><a href="https://github.com/hydrusnetwork/hydrus/releases/tag/v570">Version 570</a><a class="headerlink" href="#version_570" title="Permanent link">&para;</a></h2>
<h3 id="ui_stuff">UI stuff<a class="headerlink" href="#ui_stuff" title="Permanent link">&para;</a></h3>
<ul>
<li>wrote a thing to wrap tooltips and applied it everywhere. every tooltip in the program should now wrap to 80 characters</li>
<li>the thumbnail view is now better about pausing the current video if you open it externally in various ways</li>
<li>the 'open' submenu you get off of a file right-click is now exactly the same for the thumbnail menu and the media viewer menu, with all commands working in either place, the labels are also brushed up a little</li>
<li>added a shortcut action for 'open file in web browser' to the media shortcut set</li>
<li>added a shortcut action for 'open files in a new duplicates filter page' to the media shortcut set</li>
<li>added/updated the shortcut action for 'open similar looking files in a new page' in the media shortcut set. this is now one job that lets you set any distance, and it now works from the media viewer too. all existing <code>show similar files: 0 (exact)</code> fixed-distance simple actions will be converted to the new action when you update</li>
<li>I removed 'open externally' and 'open in file explorer' shortcuts from the media viewer/preview viewer/thumbnails sets. these sets are technically awkward and were really meant for a different thing, like pause/play or 'close media viewer', and having the media command code duplicated here was getting spammy. if you have any of these now-defunct commands set, please move them up to the general 'media' set, where it'll work everywhere. sorry if this breaks a very complicated set you have, but let's KISS!</li>
<li>the 'files' submenu off thumbnails or the media viewer is flattened one level. the 'upload to' remote services stuff still isn't available for the media viewer, but I'll do the same as I did above for that in the near future</li>
</ul>
<h3 id="misc">misc<a class="headerlink" href="#misc" title="Permanent link">&para;</a></h3>
<ul>
<li>fixed an issue with the 'manage tag siblings/parents' dialogs where the mass-import button was, in 'add or delete' mode, not doing any deletes/rescinds if there were any new pairs in what was being imported. this was probably applying to large regular adds in the UI, also</li>
<li>this mass-import button of 'manage tag siblings/parents' also dedupes the pairs coming in. it now shouldn't do anything like 'add, then ask to remove' if you have the same pair twice!</li>
<li>the nitter downloaders are removed from the defaults. I can't keep up with whatever the situation is there</li>
<li>the style and stylesheet names in the options are now sorted</li>
<li>sidecar importers will now work on sidecars that have uppercase .TXT or .JSON extensions</li>
</ul>
<h3 id="more_url_stuff_advanced_can_be_ignored_by_most">more URL stuff (advanced, can be ignored by most)<a class="headerlink" href="#more_url_stuff_advanced_can_be_ignored_by_most" title="Permanent link">&para;</a></h3>
<ul>
<li>fixed up the recent URL encoding tech to properly follow the encoding exceptions as under RFC 3986. an '@' in an URL shouldn't get messed up now. thanks to the user(s) who helped here</li>
<li>incoming URLs can now have a mix of encoded and non-encoded characters and the 'ensure URL is encoded' process will accept it and encode the non-encoded parts, idempotently. it only fails on ingesting a legit decoded percent character that happens to be followed by two hex chars, but that's rare enough we don't really have to worry</li>
<li>you can similarly now enter multiple tags in a query text that are a mix of encoded and non-encoded, a mix of %20 and spaces, and it should figure it out</li>
<li>the 'ensure URL is encoded' process now applies to GUG-generated URLs, and in the edit GUG UI, you now see the normalised 'for server' URL, with any additional tokens or whatever the URL class has</li>
<li>GUGs also try to recognise if their replacement phrase is going into the path or the parameters now, and only force-encodes everything if it looks like our tags are going into a query param</li>
<li>ensured that what you paste into an 'edit URL Class' panel's 'example url' section gets encoded before normalisation just as it would in engine</li>
<li>the file log right-click now shows both the normalised and request urls under the 'additional urls' section, if they differ from the pretty human URL in the list</li>
<li>right-clicking a single item in the downloader search log now previews the specific request URL to be copied</li>
</ul>
<h3 id="boring_stuff">boring stuff<a class="headerlink" href="#boring_stuff" title="Permanent link">&para;</a></h3>
<ul>
<li>all instances of URL path or parameter encoding now go through one location that obeys RFC 3986</li>
<li>replaced my various uses of the unusual <code>ParseResult</code> with <code>urllib.parse.urlunparse</code></li>
<li>added a couple unit tests for the improved URL encoding tech</li>
<li>added some unit tests for the GUGs' new encoding tech</li>
<li>harmonised how a file is opened in the OS file explorer in the media results and media canvas pages. what was previously random hardcode, duplicated internal method calls, and ancient pubsub redirects now all goes thorugh the application command system to a singular isolated media-actioning method</li>
<li>did the same harmonisation for opening files externally</li>
<li>and for opening files in your web browser, which gets additional new infrastructure so it can plug into the shortcuts system</li>
<li>and to a lesser degree the 'open in a new page' and 'open in a new duplicates filter page' commands</li>
<li>moved the various gui-side media python files to a new 'gui.media' module. renamed <code>ClientGUIMedia</code> to <code>ClientGUISimpleActions</code> and <code>ClientGUIMediaActions</code> to <code>ClientGUIModalActions</code> and shuffled their methods back and forth a bit</li>
<li>cleaned up <code>ClientGUIFunctions</code> and <code>ClientGUICommon</code> and their imports a little with some similar shuffle-refactoring</li>
<li>broke up <code>ClientGUIControls</code> into a bunch of smaller, defined files, mostly to untangle imports</li>
<li>cleaned up how some text and exceptions are split by newlines to handle different sorts of newline, and cleaned up how I fetch the first 'summary' line of text in all cases across the program</li>
<li>replaced <code>os.linesep</code> with <code>\n</code> across the program. Qt only wants <code>\n</code> anyway, most logging wants <code>\n</code> (and sometimes converts on the fly behind the scenes), and this helps KISS otherwise. I might bring back <code>os.linesep</code> for sidecars and stuff if it proves a problem, but most text editors and scripting languages are very happy with <code>\n</code>, so we'll see</li>
<li>multi-column lists now show multiline tooltips if the underlying text in the cell was originally multiline (although tbh this is rare)</li>
</ul>
<h2 id="version_569"><a href="https://github.com/hydrusnetwork/hydrus/releases/tag/v569">Version 569</a><a class="headerlink" href="#version_569" title="Permanent link">&para;</a></h2>
<h3 id="user_contributions">user contributions<a class="headerlink" href="#user_contributions" title="Permanent link">&para;</a></h3>
<ul>
@ -3506,7 +3416,7 @@
<li>improved the 'is this query text pre-encoded?' test to check for <code>%hh</code>, where <code>h</code> is a hexadecimal character, instead of the hackier 'is % in it while not followed by whitespace or end of string?'</li>
<li>improved/simplified/optimised the overall procedure that figures out if an entered URL is pre-encoded or not. this routine now only runs at the stage where a URL is ingested and it obeys the <code>%hh</code> rule. these ingestion points are currently: the text boxes in a urls downloader/simple downloader page; the 'import new sources' function of file log menus; a URL <code>ContentParser</code> in the parsing system; the test box in <code>manage url classes</code>; and the main gui's 'import url' landing pad, which is used by the drag and drop system, the clipboard watcher, and the client api's 'import url' command. note that this does not occur on 'manage known urls' editing, where you can do what you want with whatever, and I won't coerce it to anything</li>
</ul>
<h3 id="misc">misc<a class="headerlink" href="#misc" title="Permanent link">&para;</a></h3>
<h3 id="misc_1">misc<a class="headerlink" href="#misc_1" title="Permanent link">&para;</a></h3>
<ul>
<li>fixed a variety of logical cases around &gt;0, =0, !=0, &lt;0 for the <code>NumberTest</code> objects I recently applied to system:duration and elsewhere. when it comes to file searching, files that have 'None' duration are now considered equivalent to files that have an explicit 0 duration in all cases. previously, I was trying to thread a needle where '=0' would find null results but &lt;x would not, and it was a mess. now it all works the same way. if you want to search for 'duration &lt; x' and want to exclude still images, either add a filetype pred or slap on 'has duration'</li>
<li>improved the stability of the manual file exporter process. it was consulting an object in a thread that it shouldn't have</li>
@ -3516,7 +3426,7 @@
<li>the 'find potential duplicate pairs' routine that runs in idle time now properly obeys the work/rest times in <code>options-&gt;maintenance and processing</code>. previously, it was just the 'run now' routine that was resting in that way, and the idle thing was just doing a hardcoded 'work for 60 seconds every 10 mins or so'. thanks to the reporting user who cleverly noticed this</li>
<li>the <code>options-&gt;connection</code> page now mentions your proxy needs to be <code>http://</code></li>
</ul>
<h3 id="boring_stuff">boring stuff<a class="headerlink" href="#boring_stuff" title="Permanent link">&para;</a></h3>
<h3 id="boring_stuff_1">boring stuff<a class="headerlink" href="#boring_stuff_1" title="Permanent link">&para;</a></h3>
<ul>
<li>updated the windows setup_venv.bat to allow for custom python or venv locations using parameters. this was so I could set up a multi-python testing situation easier</li>
<li>added some unit tests for the new URL encoding gubbins</li>
@ -3590,7 +3500,7 @@
<li>updated api help docs and unit tests for the above</li>
<li>client api version is now 63</li>
</ul>
<h3 id="boring_stuff_1">boring stuff<a class="headerlink" href="#boring_stuff_1" title="Permanent link">&para;</a></h3>
<h3 id="boring_stuff_2">boring stuff<a class="headerlink" href="#boring_stuff_2" title="Permanent link">&para;</a></h3>
<ul>
<li>the client is now much more robust if any of its URL Classes do not match their own example URLs. it will boot, to start with (lol), and you can now open the 'manage url classes' dialog without UI error popups. manage url classes now notes which URL Classes do not match their own example URLs, for easy skimming</li>
<li>the 'URL Class' class has a new buddy 'Parameter' class to handle param testing</li>
@ -3612,7 +3522,7 @@
<li>the prefix and suffix are remembered between dialog opens</li>
<li>a status text gives you a live preview of what you will be adding and says whether any of the files already have exactly those tags or have different tags under the same namespace (which would be possible conflicts, suggesting you are not lined up correct)</li>
</ul>
<h3 id="misc_1">misc<a class="headerlink" href="#misc_1" title="Permanent link">&para;</a></h3>
<h3 id="misc_2">misc<a class="headerlink" href="#misc_2" title="Permanent link">&para;</a></h3>
<ul>
<li>added import support for .docx, .xlsx, and .pptx files (the Microsoft Open XML Formats). they get icons, not much else. they are secretly zips, so <strong>on update, you will be asked if you want to scan your existing zips for these formats</strong></li>
<li>when you move a window to another screen in a maximised state (e.g. on Windows you can do this with win+shift+arrow), the system that remembers window coordinates will now register and save this. the 'restore' window size is preserved from whatever it was on the previous screen while the 'restore' position will try to stay the same on the new monitor (e.g. if it was at (200, 400) on the old monitor, it will try to do the same on the new) as long as the window fits, otherwise it is moved to (20,20) on the new screen</li>
@ -3653,7 +3563,7 @@
<li>some tooltips and stuff are updated around here to better explain what the hell is going on</li>
<li>added a unit test to test the forced name</li>
</ul>
<h3 id="misc_2">misc<a class="headerlink" href="#misc_2" title="Permanent link">&para;</a></h3>
<h3 id="misc_3">misc<a class="headerlink" href="#misc_3" title="Permanent link">&para;</a></h3>
<ul>
<li>to help the recent shortcuts change that merged <code>numpad</code> variants of + and left arrow and so on into being seen as the <code>unmodified</code> variants, if you have a saved shortcut that <em>is</em> still the <code>numpad</code> variant, it will now match the <code>unmodified</code> input when the merge mode is on. just means you don't have to remap everything with this mode on--everything merged matches everything</li>
<li>added 'copy file known urls' to the 'media' shortcut set</li>
@ -3687,7 +3597,7 @@
<li>for now, the parsing system is not updated to specify the % or absolute ± values. it will remain the same as the old system, with ±15% as the default for a <code>~=</code> input</li>
<li>there's still a little borked logic in these combined types. if you search <code>&lt; 3 URLs</code>, that will return files with 0 URLs, and same for <code>num_notes</code>, but if you search <code>&lt; 200px width</code> or any of the others I changed this week, that won't return a PDF that has no width (although it will return a damaged file that reports 0 width specifically). I am going to think about this, since there isn't an easy one-size-fits-all-solution to marry what is technically correct with what is actually convenient. I'll probably add a checkbox that says whether to include 'Null' values or not and default that True/False depending on the situation; let me know what you think!</li>
</ul>
<h3 id="misc_3">misc<a class="headerlink" href="#misc_3" title="Permanent link">&para;</a></h3>
<h3 id="misc_4">misc<a class="headerlink" href="#misc_4" title="Permanent link">&para;</a></h3>
<ul>
<li>I have taken out Space as the default for archive/delete filter 'keep' and duplicate filter 'this is better, delete other'. Space is now exclusively, by default, media pause/play. <strong>I am going to set this to existing users too, deleting/overwriting what Space does for you, if you are still set to the defaults</strong></li>
<li>integer percentages are now rendered without the trailing <code>.0</code>. <code>15%</code>, not <code>15.0%</code></li>
@ -3755,7 +3665,7 @@
<li>removed the 'favourites' submenu from the taglist menu when no tags are selected</li>
<li>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</li>
</ul>
<h3 id="misc_4">misc<a class="headerlink" href="#misc_4" title="Permanent link">&para;</a></h3>
<h3 id="misc_5">misc<a class="headerlink" href="#misc_5" title="Permanent link">&para;</a></h3>
<ul>
<li>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</li>
<li>a core asynchronous thread-checking timer in the program has been rewritten from a 20ms-resolution busy-wait to a &lt;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!</li>
@ -3774,7 +3684,7 @@
<li>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</li>
</ul>
<h2 id="version_562"><a href="https://github.com/hydrusnetwork/hydrus/releases/tag/v562">Version 562</a><a class="headerlink" href="#version_562" title="Permanent link">&para;</a></h2>
<h3 id="misc_5">misc<a class="headerlink" href="#misc_5" title="Permanent link">&para;</a></h3>
<h3 id="misc_6">misc<a class="headerlink" href="#misc_6" title="Permanent link">&para;</a></h3>
<ul>
<li>page tab drag and drops will now not start unless the click has lasted more than 100ms</li>
<li>same for thumbnail drag and drop--it perviously did a 20 pixel deadzone, but time checks detect accidental/spastic clicks better and stops false negatives when you start dragging on certain edges</li>
@ -3813,7 +3723,7 @@
<li>on the thumbnail menu, there is a new 'move' submenu. you can move the current selection of files to the start or end of the media list, or to one before or after the earliest selected file, or to the file you right-clicked on to create the menu, or to the first file's position if the selection is not contiguous. if the selection is non-contiguous, it will be made so in the move</li>
<li>added these rearrange commands to the shortcuts system, as 'move thumbnails' under the 'thumbnails' set. I wasn't sure whether to add some default shortcuts, like ctrl+numpad 7/&frac34;/6 for home/end/left/right or something--let me know what you think</li>
</ul>
<h3 id="misc_6">misc<a class="headerlink" href="#misc_6" title="Permanent link">&para;</a></h3>
<h3 id="misc_7">misc<a class="headerlink" href="#misc_7" title="Permanent link">&para;</a></h3>
<ul>
<li>thanks to user help, fixed a stupid typo from last week that caused some bad errors (including crashes, in some cases) when doing non-simple duplicate filtering (issue #1514). this is the issue the v560a hotfix was made for</li>
<li>fixed another stupid content update typo that was causing 'already in db' results to not get metadata updates</li>
@ -3857,7 +3767,7 @@
<li>when the edit times dialog is set to change more than 100 total times, it now verifies with the user that this is correct on dialog ok</li>
<li>when the edit times dialog sets a lot of modified dates to files (i.e. actually writing them to your file system), this now happens in a non-gui thread and now makes a cancellable progress popup after a few seconds</li>
</ul>
<h3 id="misc_7">misc<a class="headerlink" href="#misc_7" title="Permanent link">&para;</a></h3>
<h3 id="misc_8">misc<a class="headerlink" href="#misc_8" title="Permanent link">&para;</a></h3>
<ul>
<li>fixed the 'imported to' timestamp for files migrated to other local file domains, which were one of the ones incorrectly set, as expected, to 54 years ago. in the database update, I also fix all the wrongly saved ones from v559</li>
<li>mr bones and the file history chart are now under the 'database' menu</li>
@ -3902,110 +3812,6 @@
<li>updated the client api unit tests and help to account for this</li>
<li>the client api is now version 60</li>
</ul>
<h2 id="version_559"><a href="https://github.com/hydrusnetwork/hydrus/releases/tag/v559">Version 559</a><a class="headerlink" href="#version_559" title="Permanent link">&para;</a></h2>
<h3 id="millisecond_timestamps">millisecond timestamps<a class="headerlink" href="#millisecond_timestamps" title="Permanent link">&para;</a></h3>
<ul>
<li>since the program started, the database and code has generally handled timestamps as an integer (i.e. whole number, no fractions) count of the number of seconds since 1970. this is a very common system, but one drawback is it cannot track any amount of time less than a second. when a very fast import in hydrus imports two files in the same second, they then get the exact same import time and thus when you sort by import time, the two files don't know which should be truly first and they may sort either way. this week I have moved the database to store all file timestamps (archived time, imported time, etc...) with millisecond resolution. you do not have to do anything, and very little actually changes frontend, but your update may take a minute or two</li>
<li>whenever you sort by 'import time' now, we shouldn't get anymore switcheroos</li>
<li>the 'manage times' dialog now has millisecond display and edit widgets to reflect this, but in most places across the client, you'll see the same time labels as before</li>
<li>I changed a <strong>ton</strong> of code this week. all simple changes, but I'm sure a typo has slipped through somewhere. if you see a file with a 'last viewed time' of '54 years ago', let me know!</li>
</ul>
<h3 id="time_details">time details<a class="headerlink" href="#time_details" title="Permanent link">&para;</a></h3>
<ul>
<li>this section is just a big list so I have somewhat of a record of what I did. you can broadly ignore it</li>
<li>updated <code>vacuum_timestamps</code> to <code>timestamp_ms</code> and adjusted read/write and the dialog handling to ms</li>
<li>updated <code>analyse_timestamps</code> to <code>timestamp_ms</code> and adjusted read/write to ms</li>
<li>updated <code>json_dumps_named</code> to <code>timestamp_ms</code> and adjusted read/write and some UI-level gubbins around session loading and saving to ms</li>
<li>updated <code>recent_tags</code> to <code>timestamp_ms</code> and adjusted the whole system to ms</li>
<li>updated <code>file_viewing_stats</code> to <code>last_viewed_timestamp_ms</code> and adjusted read/write to ms</li>
<li>updated <code>file_modified_timestamps</code> to <code>file_modified_timestamp_ms</code> and adjusted read/write to ms, including to and from the disk</li>
<li>updated <code>file_domain_modified_timestamps</code> to <code>file_modified_timestamp_ms</code> and adjusted read/write to ms</li>
<li>updated <code>archive_timestamps</code> to <code>archived_timestamp_ms</code> and adjusted read/write to ms</li>
<li>updated all the current- and deleted-file tables for all file services to use ms (<code>timestamp_ms</code>, <code>timestamp_ms</code>, and <code>original_timestamp_ms</code>) and adjusted <em>all</em> database file storage, search, and update to work in ms</li>
<li>updated the <code>ClientDBFilesTimestamps</code> db module to use ms timestamps throughout</li>
<li>updated the <code>ClientDBFilesViewingStats</code> db module to use ms timestamps throughout</li>
<li>updated the <code>ClientDBFilesStorage</code> db module to use ms timestamps throughout</li>
<li>updated the controller timestamp tracker and all callers to use ms timestamps throughout</li>
<li>renamed <code>TimestampsManager</code> to <code>TimesManager</code> and <code>times_manager</code> across the program</li>
<li>updated the <code>TimesManager</code> and all of its calls and callers in general to work in ms. too much stuff to list here</li>
<li>the <code>TimestampData</code> object is now converted to ms, and since it does other jobs than a raw number, the various calls it is involved in are generally renamed from 'timestamp' to 'time'</li>
<li>the file viewing stats manager now tracks 'last viewed time' as ms, and the update pipeline is also updated</li>
<li>the locations manager now handles all file times in ms, and all the archive/add/delete pipelines are also updated</li>
<li>wrote some MS-based variants of the core time functions for spamming around here, including for both Qt <code>QDateTime</code> and python <code>datetime</code></li>
<li>updated the main datetime edit panel, button, and widget to handle millisecond display and editing</li>
<li>fleshed out a ton of ambiguous variable names to the new strict time/timestamp/timestamp_ms system</li>
<li>wrote a clean transition method between ms&lt;-&gt;s that accounts for various None situations and spammed it everywhere</li>
<li>fixed up some ill-advised timestamp data juggling in the time edit UI</li>
</ul>
<h3 id="what_still_has_second-resolution">what still has second-resolution<a class="headerlink" href="#what_still_has_second-resolution" title="Permanent link">&para;</a></h3>
<ul>
<li>the parsing system (and hence downloaded files' source times)</li>
<li>the sidecar system's time stuff, both import and export</li>
<li>the server and the hydrus network protocol in general</li>
<li>Mr. Bones and the File History chart</li>
<li>almost all the actual UI labels. I'm not going to spam milliseconds at you outside of the time edit UI</li>
<li>almost all the general maintenance timers, sleepers, and grunt-work code across the program</li>
</ul>
<h3 id="client_api_4">client api<a class="headerlink" href="#client_api_4" title="Permanent link">&para;</a></h3>
<ul>
<li>the <code>file_metadata</code> call has a new parameter, <code>include_milliseconds</code>, which turns the integer <code>1704419632</code> timestamps into floats with three sig figs <code>1704419632.154</code>, representing all the changes this week</li>
<li>a new permission, <code>edit file times</code> is added, with value <code>11</code></li>
<li>a new command, <code>/edit_times/set_time</code> now lets you set any of the file times you see in the <em>manage times</em> dialog. you can send it second- or millisecond-based timestamps</li>
<li>the client api help is updated for all this, particularly the new section here https://hydrusnetwork.github.io/hydrus/developer_api.html#edit_times_set_time </li>
<li>added unit tests for this</li>
<li>the client api version is now 59</li>
</ul>
<h3 id="misc_8">misc<a class="headerlink" href="#misc_8" title="Permanent link">&para;</a></h3>
<ul>
<li>the sankaku parsers, GUGs, and custom header/bandwidth rules are removed from the defaults, so new users will not see them. none of this stuff works well/at all any more, especially in recent weeks. for sites that are so difficult to download from, if there isn't a nice solution on the shared downloader repo, https://github.com/CuddleBear92/Hydrus-Presets-and-Scripts, I recommend going with a more robust solution like gallery-dl or just finding the content elsewhere</li>
<li>when there are multiple 'system:known url' predicates in a search, I now ensure the faster types run first, reducing the search domain for the slower, later ones. if you have a 'regex' 'known url' predicate, try tossing in a matching 'domain' one--it should accelerate it hugely, every time</li>
<li>fixed a bug in the autocomplete dropdown where it was not removing no-longer-valid file services from the location button after their deletion from <em>manage services</em> until program restart (which was causing some harmless but unwelcome database errors). it should now remove them instantly, and may even end up on the rare 'nothing' domain</li>
<li>the duplicate filter will no longer mention pixel-perfect pngs being a waste of space against static gifs--this isn't necessarily true</li>
<li>the default height of the 'read' autocomplete result list is now 21 rows, so <code>system:time</code> and <code>system:urls</code> are no longer subtly obscured by default. for existing users, that's under <em>options-&gt;search</em></li>
<li>in the 'running from source' requirements.txts, I bumped the 'new' and 'test' versions for python-mpv to 1.0.4/1.0.5. the newest python-mpv does not need you to rename libmpv-2.dll to mpv-2.dll, which will be one less annoying thing to do in future. I've also been testing this extremely new dll this week and ran into no problems, if you are also a Windows source user and would like to try it too: https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-20231231-git-abc2a74.7z . I also tried out Qt 6.6.1, but I just discovered a column-sizing bug I want to sort out before I roll it out to the wider community</li>
<li>updated the sqlite dll that gets bundled into the windows release to 3.44.2. the sqlite3.exe is updated too</li>
</ul>
<h2 id="version_558"><a href="https://github.com/hydrusnetwork/hydrus/releases/tag/v558">Version 558</a><a class="headerlink" href="#version_558" title="Permanent link">&para;</a></h2>
<h3 id="user_contributions_2">user contributions<a class="headerlink" href="#user_contributions_2" title="Permanent link">&para;</a></h3>
<ul>
<li>thanks to a user, we now have rtf support! no word count yet, but it should be doable in future.</li>
<li>thanks to a user, ctrl+p and ctrl+n now move the tag listbox selection up and down, in case the arrow keys aren't what you want. it also works on the tag autocomplete results from the text input</li>
<li>added a link to 'Hydra Vista', https://github.com/konkrotte/hydravista, a macOS booru-like browser that talks to a hydrus client, to the main Client API help</li>
</ul>
<h3 id="misc_9">misc<a class="headerlink" href="#misc_9" title="Permanent link">&para;</a></h3>
<ul>
<li>if you right-click on a selection of multiple tags, you can now hide them or their namespaces en masse</li>
<li>if you right-click on a selection of multiple tags, you can now add or remove them from the favourites list en masse. if you select a mix of tags that are part-in, part-out of the list, you'll get both add and remove menu entries summarising what's going on. also, this command is now wrapped in a yes/no confirmation with full summary of what's being added/removed</li>
<li>the 'favourites' "tag suggestions" section is renamed to 'most used'. this was often confused with the favourites that sit under a tag autocomplete, and these tags aren't really 'favourite' anyway, just most-used, so they are renamed</li>
<li>if you have 'remove files from view when they are sent to the trash' set, then moving a file from one local file domain to another or removing one of multiple local file domains will no longer trigger a 'remove media'! sorry for the trouble, it was dumb logic on my part</li>
<li>fixed the 'known urls' menu's url class section ('open all blahbooru urls' etc...) not appearing when right-clicking a single 'collection' thumbnail</li>
<li>fixed the 'known urls' menu's open/copy specific urls not appearing when right-clicking any collection. it now shows the front 'display media's' urls</li>
<li>if you change the darkmode in <em>options-&gt;colours</em>, the <em>help-&gt;darkmode</em> menu item now updates correctly. just a side note: I hate much of this system and will eventually unify it with the style system</li>
<li>fixed a bunch of 'number of x' tests at the database level when the operator is <code></code></li>
</ul>
<h3 id="systemnumber_of_urls">system:number of urls<a class="headerlink" href="#systemnumber_of_urls" title="Permanent link">&para;</a></h3>
<ul>
<li>added <code>system:number of urls</code>! note this counts raw URLs at the moment--I just don't have fast database filtering of post urls vs file urls or url-classless urls or whatever. it does a raw count.</li>
<li><code>system:known urls</code> is now tucked with this new <code>system:number of urls</code> under a new stub predicate called <code>system:urls</code></li>
<li>a variety of 'system:number of words: has/no words' predicates now parse correctly when typed</li>
<li>wrote some new system predicate parsing tests</li>
</ul>
<h3 id="more_cbz_rules">more cbz rules<a class="headerlink" href="#more_cbz_rules" title="Permanent link">&para;</a></h3>
<ul>
<li>cbzs' non-image files must now have an appropriate extension like .txt, .nfo, or .xml</li>
<li>the test regarding the count of non-image files (typically allowing up to 5 non-image files per directory) is more precise with regards to subdirectories, meaning a cbz with a single subdirectory and three non-image files now counts as a cbz</li>
<li>every cbz must now have at least two image files that contain a number of some sort</li>
</ul>
<h3 id="cleanup_and_boring_stuff">cleanup and boring stuff<a class="headerlink" href="#cleanup_and_boring_stuff" title="Permanent link">&para;</a></h3>
<ul>
<li>I split the github workflow build file into three, so the windows, linux, and macOS builds now all happen and upload in parallel. previously, the upload step was blocked on the slowest of the three, which was typically the macOS build by about ten minutes; now they all upload whenever they are ready. this will also help some future testing situations. the newly split scripts are a little unclean/inefficient, so there is also more work to do here</li>
<li>I think I fixed the non-Windows executable permission bits for the various .sh and .command files in the base directory, which were lacking them, and I removed it from a couple dozen pngs across the docs and static directories, which somehow had them. let me know if I missed anything or messed anything up!</li>
<li>if you click one of the static system predicate buttons that appear in the system pred edit UI, for instance 'system:has duration', this no longer gets promoted to the 'recent' predicates list the next time you open the panel</li>
<li>some sytem predicate edit panels should stretch vertically a bit better</li>
<li>some 'number of tags' queries should be a little faster</li>
<li>the 'tag suggestions' options page has a bit of brushed up UI and some new explanation labels</li>
<li>unified the various thumbnail generation error reporting for all the different filetypes. it should also print the file's hash, too, since most of these error contexts only have a temporary path to talk about at this stage, which isn't useful after the fact</li>
</ul>
@ -4026,7 +3832,7 @@
<span class="md-icon" title="Last update">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1-2.1-2M12.5 7v5.2l4 2.4-1 1L11 13V7h1.5M11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2v1.8Z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">April 3, 2024</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">April 10, 2024</span>
</span>

View File

@ -3977,7 +3977,7 @@
</li>
<li>
<p>In python, converting your tag list to the URL encoded string would be:</p>
<div class="highlight"><pre><span></span><code>urllib.parse.quote( json.dumps( tag_list ) )
<div class="highlight"><pre><span></span><code>urllib.parse.quote( json.dumps( tag_list ), safe = &#39;&#39; )
</code></pre></div>
</li>
<li>
@ -7111,7 +7111,7 @@ This request will also return any cookies for subdomains. The session system in
<span class="md-icon" title="Last update">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1-2.1-2M12.5 7v5.2l4 2.4-1 1L11 13V7h1.5M11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2v1.8Z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">April 3, 2024</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">April 10, 2024</span>
</span>

View File

@ -34,6 +34,50 @@
<div class="content">
<h1 id="changelog"><a href="#changelog">changelog</a></h1>
<ul>
<li>
<h2 id="version_570"><a href="#version_570">version 570</a></h2>
<ul>
<li><h3>UI stuff</h3></li>
<li>wrote a thing to wrap tooltips and applied it everywhere. every tooltip in the program should now wrap to 80 characters</li>
<li>the thumbnail view is now better about pausing the current video if you open it externally in various ways</li>
<li>the 'open' submenu you get off of a file right-click is now exactly the same for the thumbnail menu and the media viewer menu, with all commands working in either place, the labels are also brushed up a little</li>
<li>added a shortcut action for 'open file in web browser' to the media shortcut set</li>
<li>added a shortcut action for 'open files in a new duplicates filter page' to the media shortcut set</li>
<li>added/updated the shortcut action for 'open similar looking files in a new page' in the media shortcut set. this is now one job that lets you set any distance, and it now works from the media viewer too. all existing `show similar files: 0 (exact)` fixed-distance simple actions will be converted to the new action when you update</li>
<li>I removed 'open externally' and 'open in file explorer' shortcuts from the media viewer/preview viewer/thumbnails sets. these sets are technically awkward and were really meant for a different thing, like pause/play or 'close media viewer', and having the media command code duplicated here was getting spammy. if you have any of these now-defunct commands set, please move them up to the general 'media' set, where it'll work everywhere. sorry if this breaks a very complicated set you have, but let's KISS!</li>
<li>the 'files' submenu off thumbnails or the media viewer is flattened one level. the 'upload to' remote services stuff still isn't available for the media viewer, but I'll do the same as I did above for that in the near future</li>
<li><h3>misc</h3></li>
<li>fixed an issue with the 'manage tag siblings/parents' dialogs where the mass-import button was, in 'add or delete' mode, not doing any deletes/rescinds if there were any new pairs in what was being imported. this was probably applying to large regular adds in the UI, also</li>
<li>this mass-import button of 'manage tag siblings/parents' also dedupes the pairs coming in. it now shouldn't do anything like 'add, then ask to remove' if you have the same pair twice!</li>
<li>the nitter downloaders are removed from the defaults. I can't keep up with whatever the situation is there</li>
<li>the style and stylesheet names in the options are now sorted</li>
<li>sidecar importers will now work on sidecars that have uppercase .TXT or .JSON extensions</li>
<li><h3>more URL stuff (advanced, can be ignored by most)</h3></li>
<li>fixed up the recent URL encoding tech to properly follow the encoding exceptions as under RFC 3986. an '@' in an URL shouldn't get messed up now. thanks to the user(s) who helped here</li>
<li>incoming URLs can now have a mix of encoded and non-encoded characters and the 'ensure URL is encoded' process will accept it and encode the non-encoded parts, idempotently. it only fails on ingesting a legit decoded percent character that happens to be followed by two hex chars, but that's rare enough we don't really have to worry</li>
<li>you can similarly now enter multiple tags in a query text that are a mix of encoded and non-encoded, a mix of %20 and spaces, and it should figure it out</li>
<li>the 'ensure URL is encoded' process now applies to GUG-generated URLs, and in the edit GUG UI, you now see the normalised 'for server' URL, with any additional tokens or whatever the URL class has</li>
<li>GUGs also try to recognise if their replacement phrase is going into the path or the parameters now, and only force-encodes everything if it looks like our tags are going into a query param</li>
<li>ensured that what you paste into an 'edit URL Class' panel's 'example url' section gets encoded before normalisation just as it would in engine</li>
<li>the file log right-click now shows both the normalised and request urls under the 'additional urls' section, if they differ from the pretty human URL in the list</li>
<li>right-clicking a single item in the downloader search log now previews the specific request URL to be copied</li>
<li><h3>boring stuff</h3></li>
<li>all instances of URL path or parameter encoding now go through one location that obeys RFC 3986</li>
<li>replaced my various uses of the unusual `ParseResult` with `urllib.parse.urlunparse`</li>
<li>added a couple unit tests for the improved URL encoding tech</li>
<li>added some unit tests for the GUGs' new encoding tech</li>
<li>harmonised how a file is opened in the OS file explorer in the media results and media canvas pages. what was previously random hardcode, duplicated internal method calls, and ancient pubsub redirects now all goes thorugh the application command system to a singular isolated media-actioning method</li>
<li>did the same harmonisation for opening files externally</li>
<li>and for opening files in your web browser, which gets additional new infrastructure so it can plug into the shortcuts system</li>
<li>and to a lesser degree the 'open in a new page' and 'open in a new duplicates filter page' commands</li>
<li>moved the various gui-side media python files to a new 'gui.media' module. renamed `ClientGUIMedia` to `ClientGUISimpleActions` and `ClientGUIMediaActions` to `ClientGUIModalActions` and shuffled their methods back and forth a bit</li>
<li>cleaned up `ClientGUIFunctions` and `ClientGUICommon` and their imports a little with some similar shuffle-refactoring</li>
<li>broke up `ClientGUIControls` into a bunch of smaller, defined files, mostly to untangle imports</li>
<li>cleaned up how some text and exceptions are split by newlines to handle different sorts of newline, and cleaned up how I fetch the first 'summary' line of text in all cases across the program</li>
<li>replaced `os.linesep` with `\n` across the program. Qt only wants `\n` anyway, most logging wants `\n` (and sometimes converts on the fly behind the scenes), and this helps KISS otherwise. I might bring back `os.linesep` for sidecars and stuff if it proves a problem, but most text editors and scripting languages are very happy with `\n`, so we'll see</li>
<li>multi-column lists now show multiline tooltips if the underlying text in the cell was originally multiline (although tbh this is rare)</li>
</ul>
</li>
<li>
<h2 id="version_569"><a href="#version_569">version 569</a></h2>
<ul>

File diff suppressed because one or more lines are too long

View File

@ -2,287 +2,287 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://hydrusnetwork.github.io/hydrus/index.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/Fixing_Hydrus_Random_Crashes_Under_Linux.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/PTR.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/Understanding_Database_Synchronization.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/about_docs.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/access_keys.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/adding_new_downloaders.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/advanced.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/advanced_multiple_local_file_services.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/advanced_parents.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/advanced_siblings.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/advanced_sidecars.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/after_disaster.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/changelog.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/client_api.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/contact.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/database_migration.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/developer_api.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/docker.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_completion.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_gugs.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_intro.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_login.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_parsers.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_parsers_content_parsers.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_parsers_formulae.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_parsers_full_example_api.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_parsers_full_example_file_page.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_parsers_full_example_gallery_page.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_parsers_page_parsers.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_sharing.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/downloader_url_classes.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/duplicates.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/faq.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/filetypes.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/gettingStartedOverview.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/getting_started_downloading.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/getting_started_files.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/getting_started_importing.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/getting_started_installing.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/getting_started_more_tags.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/getting_started_ratings.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/getting_started_searching.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/getting_started_subscriptions.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/getting_started_tags.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/introduction.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/ipfs.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/launch_arguments.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/local_booru.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/petitionPractices.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/privacy.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/reducing_lag.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/running_from_source.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/server.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/support.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/wine.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://hydrusnetwork.github.io/hydrus/youDontWantTheServer.html</loc>
<lastmod>2024-04-03</lastmod>
<lastmod>2024-04-10</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>

Binary file not shown.