Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
hydrusnetwork committed May 1, 2024
2 parents c63273e + 41ad702 commit e820b5e
Show file tree
Hide file tree
Showing 58 changed files with 776 additions and 1,278 deletions.
4 changes: 2 additions & 2 deletions docs/access_keys.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ Most users should have very few worries about privacy. The general rule is that
## a note on resources { id="ssd" }

!!! danger
**If you are on an HDD, or your SSD does not have at least 64GB of free space, do not add the PTR!**
**If your database files are stored on an HDD, or your SSD does not have at least 96GB of free space, do not add the PTR!**

The PTR has been operating since 2011 and is now huge, more than a billion mappings! Your client will be downloading and indexing them all, which is currently (2021-06) about 6GB of bandwidth and 50GB of hard drive space. It will take _hours_ of total processing time to catch up on all the years of submissions. Furthermore, because of mechanical drive latency, HDDs are too slow to process all the content in reasonable time. Syncing is only recommended if your [hydrus db is on an SSD](database_migration.md). Even then, it is healthier and allows the client to 'grow into' the PTR if the work is done in small pieces in the background, either during idle time or shutdown time, rather than trying to do it all at once. Just leave it to download and process on its own--it usually takes a couple of weeks to quietly catch up. You'll see tags appear on your files as it proceeds, first on older, then all the way up to new files just uploaded a couple days ago. Once you are synced, the daily processing work to stay synced is usually just a few minutes. If you leave your client on all the time in the background, you'll likely never notice it.
The PTR has been operating since 2011 and is now huge, more than two billion mappings! Your client will be downloading and indexing them all, which is currently (2021-06) about 6GB of bandwidth and 50GB of hard drive space. It will take _hours_ of total processing time to catch up on all the years of submissions. Furthermore, because of mechanical drive latency, HDDs are too slow to process all the content in reasonable time. Syncing is only recommended if your [hydrus db is on an SSD](database_migration.md). It doesn't matter if you store your jpegs and webms and stuff on an external HDD; this is just your actual .db database files (normally in install_dir/db folder). Note also that it is healthier if the work is done in small pieces in the background, either during idle time or shutdown time, rather than trying to do it all at once. Just leave it to download and process on its own--it usually takes a couple of weeks to quietly catch up. If you happen to see it working, it will start as fast as 50,000 rows/s (with some bumps down to 1 rows/s as it commits data), and eventually it will slow, when fully synced, to 100-1,000 rows/s. You'll see tags appear on your files as processing continues, first on older, then all the way up to new files just uploaded a couple days ago. Once you are synced, the daily processing work to stay synced is usually just a few minutes. If you leave your client on all the time in the background, you'll likely never notice it.

## easy setup

Expand Down
77 changes: 42 additions & 35 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,48 @@ title: Changelog
!!! note
This is the new changelog, only the most recent builds. For all versions, see the [old changelog](old_changelog.html).

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

### new autocomplete tab, children

* **this is an experiment. it is jank in form and workflow and may be buggy**
* the search/edit tag autocomplete dropdowns now have a third tab, 'children', which shows the tag children of the current tag context, whether that is the current search tags or what you are editing
* the idea is you type 'series:evangelion' but can't remember the character names; now you have a nice list of a bunch of stuff related to what was already entered
* note you can select this tab real quick just by hitting 'left arrow' on an empty text input
* this is a first draft, and I would like feedback and ideas, mostly around workflow improvement ideas. it seems to work ok if you have one or two tags with interesting children, but against a big list of stuff, it just becomes another multi-hundred list of spam blah that is difficult to navigate. maybe I could filter it to (and sort by?) the top n most count-heavy results?
* I wonder if it could also show children on the same level, so if you have 'shinji', it'll also show 'rei' and 'asuka'. I would call this relationship 'siblings', but then we'd be in an even bigger semantic mess
* also obviously please let me know if this fails anywhere. I think I have it hooked up correct, but some of the code around here is a bit old/messy so some scenario may not update properly
* don't worry about background lag if you regularly manage lots of tags--it only actually fetches the list of children when you switch to the tab, so you're only spending CPU if you actively engage with it

### misc

* a user and I figured out a new twitter tweet downloader using the excellent fxtwitter mirror service. it doesn't do search, but dropping a tweet URL on the client should work again. should handle quoted media and works for multi/mixed-image/video posts, too. note it will nest-pursue quoted tweets, so if there's like fifty in the nested chain, it'll get them all--let me know if this is a big pain and I'll figure out a different solution. I learned that there is another twitter downloader made by a different user on the discord; I have made the update code check for this and not replace it with this if you have it already, and I expect I'll integrate what that can do into these defaults next week
* the archive/delete and duplicate filters now yes/no confirm when you say to 'forget' at the end of a filtering run
* the duplicate filter page now only allows you to set the search location to local file domains--so it'll only ever try to search and show pairs for files you actually have
* fixed the system predicate parsing of `system:duration: has duration` and `system:duration: no duration` when entered by hand, and added a unit test to catch it in future
* the manage siblings/parents dialogs now have a little shorter minimum height
* updated some text around the PTR processing in the help--it is only the database proper, the .db files normally in `install_dir/db`, that needs to be on an SSD, and temporary processing slowdowns to 1 row/s are normal
* touched up some of the 'installing' and 'running from source' help, particularly for some Linux vagaries

### some build stuff

* all the builds and the setup_venv scripts are moved from 'python-mpv' to 'mpv', the new name for this library, and the version is updated to 1.0.6, which supports libmpv version >=0.38.x. if you are a windows user and want to live on the edge, feel free to try out this very new libmpv2.dll here, which I have been testing and seems to work well: https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-20240421-git-b364e4a.7z/download
* updated the setup_venv scripts' Qt step to better talk about which Qt version to use for which Python version. it turns out Python 3.12 cannot run something I was recommending for >=3.11, so the whole thing is a lot clearer now

### boring stuff

* refactored some question/button dialog stuff
* fixed up some file domain filtering code in the autocomplete filter and variable names to better specify what is being filtered where

### local booru deconstruction

* _reminder: I am removing the local booru, an ancient, mostly undocumented experiment._ if you used it, please check out https://github.com/floogulinc/hyshare for a replacement!
* the local booru service no longer boots as a server
* deleted the local booru share cache
* the local booru review services panel no longer shows nor allows management of its shares
* deleted the local booru unit tests
* deleted the local booru help and ancient screenshots

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

### misc
Expand Down Expand Up @@ -401,38 +443,3 @@ title: Changelog

* 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

* page tab drag and drops will now not start unless the click has lasted more than 100ms
* 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
* added a 'BUGFIX: disable page tab drag and drop' setting to _options->gui pages_. while adding this, I may have accidentally fixed the issue I wanted to investigate (rare hangs on page DnD)
* the manage tags dialog now shows the current count of tags for each page tab, and, if there are outstanding changes, shows an asterisk
* the `migrate database` dialog is renamed `move media files`

### fixes

* fixed the basic copy/paste in the single 'edit datetime' panel, wich was often raising a dumb error. this thing also now exports millisecond data (issue #1520)
* I am pretty sure I fixed the column-resizing problem in the very new PySide6 (Qt) 6.6.1, which it seems AUR users were recently updated to in an automatic OS update. all columns were setting to 100px width on initialisation. I think it is now safe to try out 6.6.1. I am still not sure why it was doing this, but some extra safeguards seem to have fixed it and also not broken things for <=6.6.0, so let me know what you run into! if you were affected by this, recall that you can right-click on any multi-column list header and say 'reset widths' to get something sensible back here
* when exporting files, the max size is now clipped another 84 characters (64 + 20 more, which usually ends up about 150 characters max for the output filename), in order to give padding for longer sidecar suffixes and also avoid going right to the filesystem limit, which broadly isn't sensible
* I think I fixed an issue where the mouse could stay hidden, perhaps, just on Wayland, after closing the media viewer with your keyboard (issue #1518)
* fixed inc/dec ratings in the media viewer not updating their tooltips on new media correctly
* if you hit 'open this location' on the export files window and the location does not exist, you now get a nice messagebox rather than a semi-silent error

### analyze

* background: some databases that process the PTR superfast or otherwise import a lot of data to a new file domain sometimes encounter massively massively slow tag update actions (typically tag-delete when the tags involved have siblings/parents), so I want to make the critical 'ANALYZE' call more timely
* the 'analyze' database maintenance call will be soft-called far more regularly during normal repository processing, not just on first sync
* sped up how some pre-analyze calculation is done
* the size limit for automatic database analyze maintenance is raised from 100k rows to 10M
* I hope to do more work here in future, probably making a review panel like we did for vacuum
* if your repository processing sometimes hangs your whole damn client for 10-15 minutes, hit _database->db maintenance->analyze->full_! this job may take 30-60 minutes to finish

### boring code cleanup

* finished the HG->CG.client_controller refactor I started last week. this was a thousand lines changed from one braindead format to another, but it will be a useful step towards untangling the hell-nest import hierarchy
* did a scattering of the clientinterface typing, getting a feel for where I want to take this
* deleted the old in-client server-test's 'boot' variant; this is no longer used and was always super hacky to maintain
* I removed an old basic error raising routine that would sometimes kick in when a hash definition is missing. this routine now always fills in the missing data with garbage and does its best to recover the invalid situation automatically, with decent logging, while still informing the user that things are well busted m8. it isn't the user's job to fix this, and there is no good fix anyway, so no point halting work and giving it to the user to figure out!
15 changes: 10 additions & 5 deletions docs/getting_started_installing.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ I try to release a new version every Wednesday by 8pm EST and write an accompany

## Installing

!!! warning ""
The hydrus releases are 64-bit only. If you are a python expert, there is the slimmest chance you'll be able to get it running from source on a 32-bit machine, but it would be easier just to find a newer computer to run it on.

=== "Windows"

* If you want the easy solution, download the .exe installer. Run it, hit ok several times.
Expand All @@ -40,9 +37,17 @@ I try to release a new version every Wednesday by 8pm EST and write an accompany

!!! warning "Wayland"
Unfortunately, hydrus has several bad bugs in Wayland. The mpv window will often not embed properly into the media viewer, menus and windows may position on the wrong screen, and the taskbar icon may not work at all. [Running from source](running_from_source.md) may improve the situation, but some of these issues seem to be intractable for now. X11 is much happier with hydrus.


!!! note "XCB Qt compatibility"

If you run into trouble running Qt6, usually with an XCB-related error like `qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.`, try installing the packages `libicu-dev` and `libxcb-cursor-dev`. With `apt` that will be:

* `sudo apt-get install libicu-dev`
* `sudo apt-get install libxcb-cursor-dev`


* Get the .tag.gz. Extract it somewhere useful and create shortcuts to 'client' and 'server' as you like. The build is made on Ubuntu, so if you run something else, compatibility is hit and miss.
* If you have problems running the Ubuntu build, users with some python experience generally find running from source works well.
* If you have problems running the Ubuntu build, [running from source](running_from_source.md) is usually an improvement, and it is easy to set up these days.
* You might need to get 'libmpv1' to get mpv working and playing video/audio. This is the mpv _library_, not the necessarily the player. Check _help->about_ to see if it is available--if not, see if you can get it like so:
* `apt-get install libmpv1`
* Use _options->media_ to set your audio/video/animations to 'show using mpv' once you have it installed.
Expand Down
Binary file removed docs/images/local_booru_dialog.png
Binary file not shown.
Binary file removed docs/images/local_booru_html.png
Binary file not shown.
Binary file removed docs/images/local_booru_services.png
Binary file not shown.
Binary file removed docs/images/screenshot_booru.png
Binary file not shown.
Binary file removed docs/images/screenshot_booru_thumb.png
Binary file not shown.
1 change: 0 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,4 @@ If you would like to try hydrus, I _**strongly**_ recommend you check out the **
[![](images/screenshot_gunnerkrigg_collect_thumb.png)](images/screenshot_gunnerkrigg_collect.png "Files can be sorted and collected by their tags.")
[![](images/screenshot_fullscreen_blame_thumb.png)](images/screenshot_fullscreen_blame.png "The media viewer can work as a resizable window or completely fullscreen. It is clean and fast.")
[![](images/screenshot_video_thumb.png)](images/screenshot_video.png "Many file formats are supported.")
[![](images/screenshot_booru_thumb.png)](images/screenshot_booru.png "You can run your own (simple!) booru")
[![](images/screenshot_advanced_autocomplete_thumb.png)](images/screenshot_advanced_autocomplete.png "The client can get complicated if you want it to. This screenshot shows a tag sibling, where one tag is immediately swapped with another, and a non-local search, where results that are known but not on the computer are shown.")
Loading

0 comments on commit e820b5e

Please sign in to comment.