Skip to content

Commit

Permalink
Version 594
Browse files Browse the repository at this point in the history
closes #1610, closes #1590
  • Loading branch information
hydrusnetwork committed Oct 16, 2024
1 parent ca81c77 commit 739591d
Show file tree
Hide file tree
Showing 43 changed files with 1,037 additions and 642 deletions.
63 changes: 29 additions & 34 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,35 @@ title: Changelog
!!! note
This is the new changelog, only the most recent builds. For all versions, see the [old changelog](old_changelog.html).

## [Version 594](https://github.com/hydrusnetwork/hydrus/releases/tag/v594)

### misc

* fixed an error that was stopping files from being removed sometimes (it also messed up thumbnail selection). it could even cause crashes! the stupid logical problem was in my new list code; it was causing the thumbnail grid backing list to get pseudorandomly poisoned with bad indices when a previous remove event removed the last item in the list
* the tag `right-click->search` menu, on a multiple selection of non-OR predicates that exists in its entirely in the current search context, now has `replace selected with their OR`, which removes the selection and replaces it with an OR of them all!
* the system predicate parser no longer removes all underscores from to-be-parsed text. this fixes parsing for namespaces, URLs, service names, etc.. with underscores in (issue #1610)
* fixed some bad layout in the edit predicates dialog for system:hash (issue #1590)
* fixed some content update logic for the advanced delete choices of 'delete from all local file domains' and 'physically delete now', where the UI-side thumbnail logic was not removing the file from the 'all my files' or 'all local files' domains respectively, which caused some funny thumbnail display and hide/show rules until a restart rebuilt the media object from the (correct) db source
* if you physically delete a file, I no longer force-remove it from view so enthusiastically. if you are looking at 'all known files', it should generally still display after the delete (and now it will properly recognise it is now non-local)
* I may have fixed an issue with page tab bar clicks on the very new Qt 6.8, which has been rolling out this week
* wrote out my two rules for tagging (don't be perfect, only tag what you search) to the 'getting started - more tags' help page: https://hydrusnetwork.github.io/hydrus/getting_started_more_tags.html#tags_are_for_searching_not_describing

### shutdown improvements

* I cleaned up and think I fixed some SIGTERM and related 'woah, we have to shut down right now' shutdown handling. if a non-UI thread calls for the program to exit, the main 'save data now' calls are now all done by or blocked on that thread, with improved thread safety for when it does tell Qt to hide and save the UI and so on (issue #1601, but not sure I totally fixed it)
* added some SIGTERM test calls to `help->debug->tests` so we can explore this more in future
* on the client, the managers for db maintenance, quick downloads, file maintanence, and import folders now shut down more gracefully, with overall program shutdown waiting for them to exit their loops and reporting what it is still waiting on in the exit splash (like it already does for subscriptions and tag display). as a side thing, these managers also start faster on program boot if you nudge their systems to do something

### boring cleanup

* wrote some unit tests to test my unique list and better catch stupid errors like I made last week
* added default values for the 'select from list of things' dialogs for: edit duplicate merge rating action; edit duplicate merge tag action; and edit url/parser link
* moved `FastIndexUniqueList` from `HydrusData` to `HydrusLists`
* fixed an error in the main import object if it parses (and desires to skip associating) a domain-modified 'post time' that's in the first week of 1970
* reworked the text for the 'focus the text input when you change pages' checkbox under `options->gui pages` and added a tooltip
* reworded and changed tone of the boot error message on missing database tables if the tables are all caches and completely recoverable
* updated the twitter link and icon in `help->links` to X

## [Version 593](https://github.com/hydrusnetwork/hydrus/releases/tag/v593)

### misc
Expand Down Expand Up @@ -361,37 +390,3 @@ title: Changelog

* the new `/manage_services/get_pending_counts` command now includes the 'Services Object' in its response
* the client api version is now 67

## [Version 584](https://github.com/hydrusnetwork/hydrus/releases/tag/v584)

### misc

* fixed a logical hole in the recent 'is this URL that is saying (deleted/already in db) trustworthy, or does it have weird mappings to other files?' pre-download check that was causing Pixiv, Kemono, and Twitter and any other multiple-URL Post URL Class to, on re-encountering the URL in a downloader, classify the underlying file URL as untrustworthy and re-download the files(l!!)
* the 'copy all' and paste buttons in the manage known urls dialog are replaced with icon buttons, and the copy button now copies the current selection if there is one
* the newish Regex input widget (the one that goes green/red based on current text validity) now propagates an Enter key into a dialog ok event when appropriate
* when you ctrl+double-click a taglist, the program now ensures the item under the mouse is selected before firing off the double-click nega-activation event. this is slightly awkward, but I hope it smoothes out the awkward moment where you want to invert a selection of tags but doing a normal ctrl+double-click on them causes the one of them to be deselected and then messes up the selection
* regex URL searches are now always the last job to run in a file query. if you mix in any other predicate like filesize or just some tag, your regex URL searches should run massively massively faster
* improved some boot error handling when Qt fails to import
* fixed the whack alignment of the 'filename'/'first directory'/etc.. checkbox-and-text-edit widgets in the filename tagging panel, and set 'namespace' placeholder text
* force-selecting a null value in a 'select one from this list of things' dialog should no longer raise errors
* thanks to a user, the new shimmie parser gets tags in a simpler, more reliable way

### client api

* added a new permission, `Commit Pending` (12), which allows you to see and commit pending content for each service
* added `/manage_services/get_pending_counts`, which basically returns the content of the client's 'pending' menu
* added `/manage_services/commit_pending`, which fires those commands off
* added `/manage_services/forget_pending`, which does the same 'forget' command on that menu
* added `/manage_file_relationships/remove_potentials`, which clears any known potential pairs off the given files
* the `/manage_pages/get_pages` and `/manage_pages/get_page_info` commands now return `is_media_page` boolean, which is a simple shorthand for 'not a page of pages'
* added the above to the Client API help
* wrote unit tests covering the above
* the client api version is now 66

### boring cleanup

* fixed up how some lists deliver their underlying data to various methods
* `CallBlockingToQt` no longer spams encountered errors to the log--proper error handling should (and does now) occur elsewhere
* the way the initial focus is set on system predicate flesh-out panels (when you double-click on like 'system:dimensions' and get a bunch of sub-panels) is more sane. should be, fairly reliably, on the first editable panel's ok button. I want it to be on an editable widget in the panel in future, I think, but I need to do some behind the scenes stuff to make this work in a nicer way
* pulled some stuff out of `HydrusData`, mostly to `HydrusNumbers`, `HydrusLists`, and the new `HydrusProcess`, mostly for decoupling purposes
* renamed some `ConvertXToY` stuff to just `XToY`
15 changes: 15 additions & 0 deletions docs/getting_started_more_tags.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,21 @@ title: More Tags

Tags are powerful, and there are many tools within hydrus to customise how they apply and display. I recommend you play around with the basics before making your own new local tag services or jumping right into the PTR, so take it slow.

## Tags are for Searching not Describing

Hydrus users tend to be nerds of one sort or another, and we all like thinking about categorisation and semantic relationships. I provide several clever tools in this program, and it is not uncommon for newer users to spend hours sketching out intricate tree-charts and idiosyncratic taxonomy algebra in a One True Plan and then only tagging five actual files of anime cat girls before burning out. Try not to let this happen to you.

In making hydrus, I have discovered two rules to stop you going crazy:

1. Don't try to be perfect.
2. Only add those tags you actually use in searches.

There is always work to do, and it is easy to exhaust onesself or get lost in the bushes agonising over whether to use 'smile' or 'smiling' or 'smirk'--before you know it, you have been tagging the same file for four minutes, and there are twelve thousand to go. The details are not as important as the broad strokes, and problems are easy to correct in future. There is often also no perfect answer, and even if there were, we would never have time to apply it everywhere. The ride never ends.

The sheer number of tags can also be overwhelming. Importing all the many tags from boorus is totally fine, but if you are typing tags yourself, I suggest you try not to exhaustively tag [everything](http://safebooru.org/index.php?page=post&s=list&tags=card_on_necklace) [in](http://gelbooru.com/index.php?page=post&s=list&tags=collarbone) [the](https://e621.net/post/index?tags=cum_on_neck) [image](http://danbooru.donmai.us/posts?tags=brown_vest). You will go crazy and burn out!

Ultimately, tags are a medium for _searching_, not describing. Anyone can see what is in an image just by looking at it, so--for the most part--the only use in writing any of it down is if you would ever use those particular words to find the thing again. Character, series and creator namespaces are a great simple place to start. After that, add whatever you are most interested in, be that 'blue sky' or 'midriff' or fanfic ship names, whatever you would actually use in a search, and then you can spend your valuable time actually using your media rather than drowning-by-categorisation.

## Tag services
Hydrus lets you organise tags across multiple separate 'services'. By default there are two, but you can have however many you want (`services->manage services`). You might like to add more for different sets of siblings/parents, tags you don't want to see but still search by, parsing tags into different services based on reliability of the source or the source itself. You could for example parse all tags from Pixiv into one service, Danbooru tags into another, Deviantart etc. and so on as you chose. You must always have at least one local tag service.

Expand Down
26 changes: 26 additions & 0 deletions docs/old_changelog.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,32 @@
<div class="content">
<h1 id="changelog"><a href="#changelog">changelog</a></h1>
<ul>
<li>
<h2 id="version_594"><a href="#version_594">version 594</a></h2>
<ul>
<li><h3>misc</h3></li>
<li>fixed an error that was stopping files from being removed sometimes (it also messed up thumbnail selection). it could even cause crashes! the stupid logical problem was in my new list code; it was causing the thumbnail grid backing list to get pseudorandomly poisoned with bad indices when a previous remove event removed the last item in the list</li>
<li>the tag `right-click-&gt;search` menu, on a multiple selection of non-OR predicates that exists in its entirely in the current search context, now has `replace selected with their OR`, which removes the selection and replaces it with an OR of them all!</li>
<li>the system predicate parser no longer removes all underscores from to-be-parsed text. this fixes parsing for namespaces, URLs, service names, etc.. with underscores in (issue #1610)</li>
<li>fixed some bad layout in the edit predicates dialog for system:hash (issue #1590)</li>
<li>fixed some content update logic for the advanced delete choices of 'delete from all local file domains' and 'physically delete now', where the UI-side thumbnail logic was not removing the file from the 'all my files' or 'all local files' domains respectively, which caused some funny thumbnail display and hide/show rules until a restart rebuilt the media object from the (correct) db source</li>
<li>if you physically delete a file, I no longer force-remove it from view so enthusiastically. if you are looking at 'all known files', it should generally still display after the delete (and now it will properly recognise it is now non-local)</li>
<li>I may have fixed an issue with page tab bar clicks on the very new Qt 6.8, which has been rolling out this week</li>
<li>wrote out my two rules for tagging (don't be perfect, only tag what you search) to the 'getting started - more tags' help page: https://hydrusnetwork.github.io/hydrus/getting_started_more_tags.html#tags_are_for_searching_not_describing</li>
<li><h3>shutdown improvements</h3></li>
<li>I cleaned up and think I fixed some SIGTERM and related 'woah, we have to shut down right now' shutdown handling. if a non-UI thread calls for the program to exit, the main 'save data now' calls are now all done by or blocked on that thread, with improved thread safety for when it does tell Qt to hide and save the UI and so on (issue #1601, but not sure I totally fixed it)</li>
<li>added some SIGTERM test calls to `help-&gt;debug-&gt;tests` so we can explore this more in future</li>
<li>on the client, the managers for db maintenance, quick downloads, file maintanence, and import folders now shut down more gracefully, with overall program shutdown waiting for them to exit their loops and reporting what it is still waiting on in the exit splash (like it already does for subscriptions and tag display). as a side thing, these managers also start faster on program boot if you nudge their systems to do something</li>
<li><h3>boring cleanup</h3></li>
<li>wrote some unit tests to test my unique list and better catch stupid errors like I made last week</li>
<li>added default values for the 'select from list of things' dialogs for: edit duplicate merge rating action; edit duplicate merge tag action; and edit url/parser link</li>
<li>moved `FastIndexUniqueList` from `HydrusData` to `HydrusLists`</li>
<li>fixed an error in the main import object if it parses (and desires to skip associating) a domain-modified 'post time' that's in the first week of 1970</li>
<li>reworked the text for the 'focus the text input when you change pages' checkbox under `options-&gt;gui pages` and added a tooltip</li>
<li>reworded and changed tone of the boot error message on missing database tables if the tables are all caches and completely recoverable</li>
<li>updated the twitter link and icon in `help-&gt;links` to X</li>
</ul>
</li>
<li>
<h2 id="version_593"><a href="#version_593">version 593</a></h2>
<ul>
Expand Down
2 changes: 1 addition & 1 deletion hydrus/client/ClientConstants.py
Original file line number Diff line number Diff line change
Expand Up @@ -632,7 +632,7 @@ def _Initialise( self ):

self.hydrus = QG.QIcon( os.path.join( HC.STATIC_DIR, 'hydrus_black_square.svg' ) )
self.github = QG.QIcon( os.path.join( HC.STATIC_DIR, 'github.svg' ) )
self.twitter = QG.QIcon( os.path.join( HC.STATIC_DIR, 'twitter.svg' ) )
self.x = QG.QIcon( os.path.join( HC.STATIC_DIR, 'x.svg' ) )
self.tumblr = QG.QIcon( os.path.join( HC.STATIC_DIR, 'tumblr.svg' ) )
self.discord = QG.QIcon( os.path.join( HC.STATIC_DIR, 'discord.svg' ) )
self.patreon = QG.QIcon( os.path.join( HC.STATIC_DIR, 'patreon.svg' ) )
Expand Down
Loading

0 comments on commit 739591d

Please sign in to comment.