diff --git a/docs/access_keys.md b/docs/access_keys.md index f96b6055..8e40d92e 100644 --- a/docs/access_keys.md +++ b/docs/access_keys.md @@ -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 diff --git a/docs/changelog.md b/docs/changelog.md index ec7d7609..f563d602 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -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 @@ -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! diff --git a/docs/getting_started_installing.md b/docs/getting_started_installing.md index 5b005ba3..83268a33 100644 --- a/docs/getting_started_installing.md +++ b/docs/getting_started_installing.md @@ -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. @@ -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. diff --git a/docs/images/local_booru_dialog.png b/docs/images/local_booru_dialog.png deleted file mode 100644 index f2db86ca..00000000 Binary files a/docs/images/local_booru_dialog.png and /dev/null differ diff --git a/docs/images/local_booru_html.png b/docs/images/local_booru_html.png deleted file mode 100644 index c30f0110..00000000 Binary files a/docs/images/local_booru_html.png and /dev/null differ diff --git a/docs/images/local_booru_services.png b/docs/images/local_booru_services.png deleted file mode 100644 index 958c8a1b..00000000 Binary files a/docs/images/local_booru_services.png and /dev/null differ diff --git a/docs/images/screenshot_booru.png b/docs/images/screenshot_booru.png deleted file mode 100644 index 1682c0f8..00000000 Binary files a/docs/images/screenshot_booru.png and /dev/null differ diff --git a/docs/images/screenshot_booru_thumb.png b/docs/images/screenshot_booru_thumb.png deleted file mode 100644 index 287cea2a..00000000 Binary files a/docs/images/screenshot_booru_thumb.png and /dev/null differ diff --git a/docs/index.md b/docs/index.md index 36968e59..c6ccd703 100644 --- a/docs/index.md +++ b/docs/index.md @@ -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.") diff --git a/docs/local_booru.md b/docs/local_booru.md deleted file mode 100644 index 62eff377..00000000 --- a/docs/local_booru.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Local Booru ---- - -# local booru - -!!! warning - This was a fun project, but it never advanced beyond a prototype. The future of this system is other people's nice applications plugging into the [Client API](client_api.md). - -The hydrus client has a simple booru to help you share your files with others over the internet. - -First of all, this is **hosted from your client**, which means other people will be connecting to your computer and fetching files you choose to share from your hard drive. If you close your client or shut your computer down, the local booru will no longer work. - -## how to do it { id="setting_up" } - -First of all, turn the local booru server on by going to _services->manage services_ and giving it a port: - -![](images/local_booru_services.png) - -It doesn't matter what you pick, but make it something fairly high. When you ok that dialog, the client should start the booru. You may get a firewall warning. - -Then right click some files you want to share and select _share->local booru_. This will throw up a small dialog, like so: - -![](images/local_booru_dialog.png) - -This lets you enter an optional _name_, which titles the share and helps you keep track of it, an optional _text_, which lets you say some words or html to the people you are sharing with, and an _expiry_, which lets you determine if and when the share will no longer work. - -You can also copy either the internal or external link to your clipboard. The internal link (usually starting something like `http://127.0.0.1:45866/`) works inside your network and is great just for testing, while the external link (starting `http://[your external ip address]:[external port]/`) will work for anyone around the world, **as long as your booru's port is being forwarded correctly**. - -If you use a dynamic-ip service like [No-IP](https://www.noip.com/), you can replace your external IP with your redirect hostname. You have to do it by hand right now, but I'll add a way to do it automatically in future. - -!!! danger - Note that anyone with the external link will be able to see your share, so make sure you only share links with people you trust. - -## forwarding your port { id="port_forwarding" } - -Your home router acts as a barrier between the computers inside the network and the internet. Those inside can see out, but outsiders can only see what you tell the router to permit. Since you want to let people connect to your computer, you need to tell the router to forward all requests of a certain kind to your computer, and thus your client. - -If you have never done this before, it can be a headache, especially doing it manually. Luckily, a technology called UPnP makes it a ton easier, and this is how your Skype or Bittorrent clients do it automatically. Not all routers support it, but most do. You can have hydrus try to open a port this way back on _services->manage services_. Unless you know what you are doing and have a good reason to make them different, you might as well keep the internal and external ports the same. - -Once you have it set up, the client will try to make sure your router keeps that port open for your client. If it all works, you should see the new mapping appear in your _services->manage local upnp_ dialog, which lists all your router's current port mappings. - -If you want to test that the port forward is set up correctly, going to `http://[external ip]:[external port]/` should give a little html just saying hello. Your ISP might not allow you to talk to yourself, though, so ask a friend to try if you are having trouble. - -If you still do not understand what is going on here, [this](http://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/) is a good article explaining everything. - -If you do not like UPnP or your router does not support it, you can set the port forward up manually, but I encourage you to keep the internal and external port the same, because absent a 'upnp port' option, the 'copy external share link' button will use the internal port. - -## so, what do you get? { id="example" } - -The html layout is very simple: - -* * * - -![](images/local_booru_html.png) - -* * * - -It uses a very similar stylesheet to these help pages. If you would like to change the style, have a look at the html and then edit install\_dir/static/local\_booru_style.css. The thumbnails will be the same size as in your client. - -## editing an existing share { id="editing_shares" } - -You can review all your shares on _services->review services_, under _local->booru_. You can copy the links again, change the title/text/expiration, and delete any shares you don't want any more. - -## future plans { id="future" } - -This was a fun project, but it never advanced beyond a prototype. The future of this system is other people's nice applications plugging into the [Client API](client_api.md). diff --git a/docs/old_changelog.html b/docs/old_changelog.html index 2f6976d7..4bc8c064 100644 --- a/docs/old_changelog.html +++ b/docs/old_changelog.html @@ -34,6 +34,41 @@

changelog