a random hydrus banner

/hydrus/ - Hydrus Network

Bug reports, feature requests, and other discussion for the hydrus network.


New Thread
X
Max 20 files0 B total
[New Thread]

Page: Prev [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] Next | [Index] [Catalog] [Banners] [Logs]


https://youtube.com/watch?v=D5T9RByz9i8
windows
Qt5 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v498/Hydrus.Network.498.-.Windows.Qt5.-.Extract.only.zip
Qt6 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v498/Hydrus.Network.498.-.Windows.Qt6.-.Extract.only.zip
Qt6 exe: https://github.com/hydrusnetwork/hydrus/releases/download/v498/Hydrus.Network.498.-.Windows.Qt6.-.Installer.exe
macOS
Qt5 app: https://github.com/hydrusnetwork/hydrus/releases/download/v498/Hydrus.Network.498.-.macOS.Qt5.-.App.dmg
Qt6 app: https://github.com/hydrusnetwork/hydrus/releases/download/v498/Hydrus.Network.498.-.macOS.Qt6.-.App.dmg
linux
Qt5 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v498/Hydrus.Network.498.-.Linux.Qt5.-.Executable.tar.gz
Qt6 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v498/Hydrus.Network.498.-.Linux.Qt6.-.Executable.tar.gz

I had a good week. I got started on some long-delayed serverside janitor improvements, and I got so stuck it in was all I worked on! This release has nothing important for regular users, so if you are not involved in running a hydrus server, you can skip it entirely!

server stuff

Only for server admins and janitors!

Improving the janitor workflow is now my 'big job' for the rest of the year. This is the first step of what I'd like to fit in to spare days over the coming weeks and months.

This week I update the repositories so they cache counts of their various metadata. They can now quickly say 'I have 2,124,543 mappings' and so on. If you have a large server, it will take a few minutes to update as it counts everything up for the first time.

Once you are booted, make sure you are in help->advanced mode, and on review services you will have a new 'service info' button. Click it and you can see all the numbers, including the current lengths of the petition queues. Anyone with an account can see these for now. If you want more privacy, I can figure something out, but tbh I think it is probably good for users to be able to see everything here.

The numbers in the petition processing page are fed by this too. No longer will it manually count up and max out at 1,000 petitions--it will deliver the actual number real fast.

Also, a sibling petition can now have both ADD and DELETE rows. This happens if the same account gives the same reason (like 'replacing a->b with a->c') to a sibling petition and a sibling pend. You now see those together, with that shared reason, and action it as one item.

I suspect we'll need some more UI clientside to encourage using the same reason, but for now I have updated manage tag siblings to give the same 'reason' when you replace an existing sibling. Previously, this is where it would give a 'AUTO-CONFLICT...' style reason. Now, those things should be bundled into the same thing you see.

This stuff changes some of the hydrus network protocol. Normally, I would update the network version number, but that requires everyone to update. Since this only affects advanced users, and I expect I'll be doing more in coming weeks, I am not updating the version number. An old client will run into errors if it tries to pull petitions from a new server, but I think a new client will be able to work with an old server. In any case, if you are a server admin or janitor, please update your clients and servers at roughly the same time this week, or you'll get some harmless but annoying parse/404 errors.

As a side thing, as a server admin, if the service info numbers ever get borked, please hit 'regen service info' in your 'administrate services' menu. I've added extensive testing this week to ensure the update routines are mostly good, but I'm sure there are some complicated situations where the counting logic is dodgy. Let me know how you get on with it!
full list

almost all the changes this week are only important to server admins and janitors. regular users can skip updating this week
- overview:
- the server has important database and network updates this week. if your server has a lot of content, it has to count it all up, so it will take a short while to update. the petition protocol has also changed, so older clients will not be able to fetch new servers' petitions without an error. I think newer clients will be able to fetch older servers' ones, but it may be iffy
- I considered whether I should update the network protocol version number, which would (politely) force all users to update, but as this causes inconvenience every time I do it, and I expect to do more incremental updates here in coming weeks, and since this only affects admins and janitors, I decided to not. we are going to be in awkward flux for a little bit, so please make sure you update privileged clients and servers at roughly the same time
- .
- server petition workflow:
- the server now maintains an ongoing fast count of its various repository metadata, such as 'number of mappings' and 'number of petitions of type x'. when you fetch petition counts, no longer will it count live and max out at 1,000, it'll give you good full numbers every time, and real fast
- you can see the current numbers from the new 'service info' button on review services, which only appears in advanced mode. any user with an account key can see these numbers, which include number of petitions in the queue. I can make this more private if you like, but for now I think it is good if advanced users can see them all
- in the petition processing page, sibling and parent petitions will now include both delete and add rows if the account and reason are the same. I'm aiming to get better 'full' coverage of a replace petition, so you can see and approve/deny both the add and the remove parts in one go. for fetching, these combined petitions count as 'delete' petitions, and won't appear in the 'add' petition queue
- when users encounter an automatic conflict resolution in the manage siblings dialog, those auto-petitioned pairs are now assigned the same reason as the original conflicting pended pairs. they _should_ show up together in the new petition processing UI
- as part of this, sibling and parent petitions are no longer filtered by namespace. you will see everything with that same account and reason in one go. let's try it out, and if it is too much, I will add filters clientside or something. since we are now starting to see add and remove together, we'll want to at least have the option to see everything
- boring server stuff:
- the petition object is updated to handle multiple actions per petition, and the clientside petition UI is updated appropriately
- the server tracks 'actionable' petition counts as separate to the number of raw petition rows. some of this was happening before, but the logic is improved, including clever counting of the new petitions that include both add and delete rows
- for when my count-update logic inevitably fails, there is now a 'regen service info' entry in the 'administrate services' menu for all repositories. numbers generated will be printed to server log
- some unusual repo upload logic is cleaned up, e.g. if a user with 'create permission' uploads a sibling or parent, any pending rows for that content will now be properly cleared)
- fixed a stupid swap logical bug where janitors who could only moderate siblings (and not parents) were only being given parent numbers and vice versa
- all server services now respond to /busy check. it requires no authentication and just returns 1 or 0 depending on the current lock state
- fixed a bug where tag siblings or parents that were denied would still make a new definition record for the child/bad tag
- with all the fine number changes, fleshed out the server unit tests with more examples of submitting and altering content and then checking for numbers afterwards. now checked are: file add, file admin delete, mapping add, mapping admin delete, mapping petition, mapping petition approve+deny, parent add, parent admin delete, parent pend, parent pend approve+deny, parent petition, parent petition approve+deny
- significant refactoring of the tail end of server content update pipeline. more things now go through logic-harmonised update methods that ensure count is reliable
- did some misc server db and constant enum code cleanup
- .
- misc:
- to match the new change in the server, in the client, tag and rating services now store their 'num_files' service info count as the new 'num_file_hashes'. existing numbers will be converted over during update
- fixed a probably ten year old bug where 'num pending/petitioned files' had the same enum as 'num pending/petitioned mappings'. never noticed, since no service has done both those things
- if the upload pending process fails due to an unusual permission error or similar, the pending menu should now recover and update itself (previously it stayed greyed out)

next week

Back to small jobs. I had planned to do a little janitor stuff this week and then do regular work, but these number updates killed me and I ended up in a rabbit hole of unit tests making sure everything was good enough. The goods news is I fixed some other long-time server issues in doing that, but the bad is I did nothing else. So, I'll do some small work and try to get to some github issues too.

It would be nice if I could hammer out some final Qt6 problems so we can move to it fully in a couple weeks.

https://youtube.com/watch?v=0KrpZMNEDOY
windows
Qt5 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v497/Hydrus.Network.497.-.Windows.Qt5.-.Extract.only.zip
Qt6 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v497/Hydrus.Network.497.-.Windows.Qt6.-.Extract.only.zip
Qt6 exe: https://github.com/hydrusnetwork/hydrus/releases/download/v497/Hydrus.Network.497.-.Windows.Qt6.-.Installer.exe
macOS
Qt5 app: https://github.com/hydrusnetwork/hydrus/releases/download/v497/Hydrus.Network.497.-.macOS.Qt5.-.App.dmg
Qt6 app: https://github.com/hydrusnetwork/hydrus/releases/download/v497/Hydrus.Network.497.-.macOS.Qt6.-.App.dmg
linux
Qt5 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v497/Hydrus.Network.497.-.Linux.Qt5.-.Executable.tar.gz
Qt6 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v497/Hydrus.Network.497.-.Linux.Qt6.-.Executable.tar.gz

I had a good week working on a variety of different things.

The Windows Installer is now Qt6. You do not have to do anything special to update, just do your normal routine. If you are a Windows 7 user, it is very likely you will not be able to run it. You can use the Qt5 extract release for another week or two, but please plan to either stop updating hydrus, move to a newer OS, or consider running hydrus from source.

highlights

I bulked out the 'star' rating shape. The pentagram was a little thin, so I've fattened it back up while still keeping the coordinates good. If you liked the thinner star, you can now set it explicitly as a new shape choice under services->manage services.

Manage tag siblings/parents now has a proper delete button, which should make removing many rows at once easy.

I did some more note parsing work this week, and I updated the Hentai Foundry downloader to grab artist description notes. If you download from HF, you should see new files get notes. I would like to slowly update most of the client default downloaders with note parsing support, so let me know where all this succeeds and fails, and I'll adapt things as we go.

Since we are doing more note work, I also improved the size calculations for the media viewer's note hover window. It still isn't perfect in all cases, but it'll clip the last line of text less often.

New clients now start with ctrl+page up/down as 'move page selection left/right'.

multi-line parsing

This is only for advanced users who make downloaders.

The parsing system now has basic multi-line support. Any formula on a 'notes' content parser or the formulae that do subsidiary page parser 'splitting' will now no longer remove newlines when it grabs text. It makes it possible to parse a multi-paragraph artist comment and have it all end up nicely formatted in the file note you end up with.

I have hardcoded in some additional formatting rules, too. When you select 'string' as the parsing result from a nested tree of html tags, I now insert newlines on 'p' or 'br' tags. I also strip leading and trailing whitespace from every line of a note, and I only allow two consecutive newlines to clip very large paragraph breaks.

The main remaining frustration is the string processing UI has mixed multi-line parsing support in its testing UI. Some of it shows and converts well, but most of it collapses multi-line test content down to a single line.

I have updated the Hentai Foundry parser this week to grab notes. It is ultimately pretty simple, if you want to check it out as an example. I'd like to know what is most frustrating about this. I would like to chip away at the string processing test UI (and any rules that simply do not work well on multi-line content) in future.
1 replies omitted. Click to expand viewer
- multiline parsing:
- the parser now supports limited multiline parsing. the main changes are hardcoded: the formulae beneath note content parsers and those that do subsidiary page parser splitting no longer remove newlines when they parse. all the parsing UI and the test panels and so on are now aware of this and set flags in all the right places, and parsed notes are now washed through the new trimming/cleaning method, and everything _seems_ to basically work. the main remaining problems is the complicated string processing UI has mixed single/multi-line testing support. some looks great, most gets coerced to single-line just for the previewed test results
- as an example, the default hentai foundry downloader now grabs the artist description as a multi-line note
- the parsing sub-system that extracts cohesive strings from complex html blocks now inserts newlines at 'p' and 'br' tags
- trying to parse clean multiline notes still caused several formatting issues this week, so I have updated the automatic note-washing routine to standardise hydrus notes in several new ways that I hope will not be too disruptive to manually written notes:
- the note washing routine now coerces all newline characters to 'backslash-n', regardless of platform
- the note washing routine now trims each line, so no leading or trailing whitespace anywhere. I am open to changing this in future, maybe for handwritten notes where you really want an indent somewhere, but parsing from complex nested html tags is making a heap of weird extra whitespace, for which this is a clean solution
- the note washing routine now trims newline gaps that are greater than two-newlines. you can split paragraphs by one empty line, but no more
- there may be other issues figuring out cleanly formatted strings from nested html tags--so give it a go and let me know what you think. maybe p and br blocks should always make two newlines, so we have separated paragraphs, maybe I need to parse more blocks, like h1 and friends. any specific example html blocks would also be helpful
- .
- cleanup:
- refactored ClientGUIParsing to its own 'parsing' module and split everything into four less tangled files
- cleaned up a bunch of taglist text presentation code, mostly simplicity and clarity in prep for future updates
- updated the checker options button to use a Qt signal instead of a callable

next week

I have more small work like this to catch up on, including github issues.
Qt6 version is kinda broken on Wayland / Fedora 36, all pop-ups are in top left corner. Is this a Qt or Hydrus issue?

I can force Hydrus to run on X so it isn't a huge problem.
 >>/1350/
Thank you for this report. I am not sure, as I haven't heard this problem yet, but this is probably a hydrus issue. I expect Qt6 is delivering the coordinates in a different way in Wayland / Fedora 36, or one of the conversion routines the translates coordinates from global space to relative-to-main-window space is not working. The popups are working fine on other platforms, so it probably is fundamentally a Qt interface problem, but it would still be nice if I could fix it.

I'll have a quick look at the logic here, see if I can see an obvious way to fix it.

I'm actually planning to rewrite how the popup toaster works in the nearish future, some behind the scenes technical stuff, that may completely fix this naturally anyway, so please keep me updated on how this works for you in future.
I had a good week, finally getting around to some server updates I had been planning for a long time. Unfortunately, I didn't have time to get to anything else, so tomorrow's release is only for users who run a hydrus repository, and their janitors. The server now reports some fast counts of its content, and petition processing has a couple small improvements.

The release should be as normal tomorrow.

 >>/1352/
Thanks, I've saved this. I completely ran out of time this week, but I will work on this.

https://youtube.com/watch?v=2jzugX2NMnk
windows
Qt5 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v496/Hydrus.Network.496.-.Windows.Qt5.-.Extract.only.zip
Qt6 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v496/Hydrus.Network.496.-.Windows.Qt6.-.Extract.only.zip
Qt5 exe: https://github.com/hydrusnetwork/hydrus/releases/download/v496/Hydrus.Network.496.-.Windows.Qt5.-.Installer.exe
macOS
Qt5 app: https://github.com/hydrusnetwork/hydrus/releases/download/v496/Hydrus.Network.496.-.macOS.Qt5.-.App.dmg
Qt6 app: https://github.com/hydrusnetwork/hydrus/releases/download/v496/Hydrus.Network.496.-.macOS.Qt6.-.App.dmg
linux
Qt5 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v496/Hydrus.Network.496.-.Linux.Qt5.-.Executable.tar.gz
Qt6 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v496/Hydrus.Network.496.-.Linux.Qt6.-.Executable.tar.gz

I had a great week. There's more Qt6 work, and the first version of note parsing is finished.

UI Scaling and Qt6

The media viewer now understands UI scale and will draw images with all available pixels and state the current zoom correctly.  Previously, if you were on 150% UI scale, it would draw at the smaller 100% size and then nearest-neighbour scale up. Now it compensates for the UI scale completely, drawing at that size, so if you look at a 4k image on a 4k screen, it'll look the same no matter what your UI scale is.

Some funny math went into this, particularly as I stitched the image tiles together through several different coordinate spaces, so if you are >100% UI scale and see a grey or white line flickering anywhere as you pan an image around, let me know your details.

After last week's nicer thumbnails at >100%, a user let me know that the thumbnail banner text was actually looking pretty bad at 100%. Looking at screenshots of the two situations made it obvious. I chased down what was going on, which turned out to be an annoying technical problem with no easy solutions, and figured out an ok solution. If all your monitors are 100% UI scale, the thumbnail banner text should now be antialiased. It isn't perfect (and even looks blurry with some semi-transparent background colours), so I may revisit this, and it may be the underlying Qt issue causing the ugly font gets fixed one day anyway.

The rating shapes (circles, squares, stars) are now antialiased too, and I re-did the star shape to look better.
note parsing

This is still for advanced users, but if you know the downloader system, feel free to try it out!

Note parsing works now! All the downloaders have note import options, there's a defaults system, and it is all wired into the parsing system. The main remaining limitation is the parsing system still can't handle multi-line text, but if you make a note parser and download, it now gets added to the file. If you are a downloader maker, please try it out and let me know where it falls short. I intend to get multi-line parsing working in the coming weeks, and then I will update the default parsers for hydrus to grab artist notes.

For the defaults, I updated the 'manage default tag import options' dialog to also do note import options, so you can grab and rename notes from specific sites in different ways. The initial defaults I set are fairly simple 'get everything' options. I would like to see how these new systems shake out in the real world, especially as we deploy new downloaders to many users, and maybe I will revisit them.

full list

- note import options:
- the client now has a system to set default note import options. it works exactly the same as default tag import options and shares the same UI, now named _network->downloaders->manage default import options_. you now set tag and/or note import options for a particular domain. I don't think you'll have to touch the note defaults until this system is really going and we learn more about what we want. I have made the initial defaults get all notes with some simple conflict resolution that won't discard any data
- all url pages, watchers, watcher pages, gallery queries, gallery downloader pages, and subscriptions now have a note import options. by default, they are 'default'
- the edit subscription dialog now has a button to set note import options _en masse_
- all the behind the scenes stuff that connects and powers these systems is done. note parsing now works! advanced users, especially downloader makers, are encouraged to play around with this for real. the remaining hurdle is still multiline parsing support
- notes now have a cleaning system before they are saved. to start with this week, they are now trimmed of leading or trailing whitespace or newlines
- .
- Qt6:
- the media viewer now draws correctly on UI scaled displays. If you are at >100% UI scale, it will now render images beautifully, using all available pixels, and state the correct zoom percentage. you look at a 4k image on a 4k screen, you now see 4k, no matter the UI scale. previously it was rendering at 100% UI scale coordinates and being nearest-neighbour scaled up
- after several sad hours banging my head against font metrics, I finally discovered the magic flag needed and have improved the font quality of the thumbnail banners when you boot the client with only 100% UI scale monitors. should be anti-aliased now, although if you have a semi-transparent banner colour it may look slightly jank for reasons I still need to investigate.
- I fixed the 'don't process the click that activates a media viewer into the shortcuts system' hook for Qt6 (and still working on Qt5). it is a little smarter now, too
- misc:
- the new import options button is now an arrow-menu button. the secret right-click menu is no longer hidden. I also did some behind the scenes stuff to make it so all these arrow buttons spawn their menus on your cursor when you click, rather than hanging off the bottom-left corner of the button proper
- rating stars of all shapes are now anti-aliased
- greatly improved the shape of the 'star' rating star
- moved the 'checker options' button on watcher highlight panels down a bit. maybe it'll get integrated into other import options one day--I am still thinking about it
- archive/delete filters will not present 'delete from hard disk' as a final choice if the current domain is 'all local files'. I thought I fixed this a couple weeks ago, but there was a legacy issue
- fixed some real jank logic when setting the tag domain in autocomplete dropdown widgets. this got messed up a little with recent updates to file and tag domain searching. I reworked the signal path and fixed some weird update bugs and situations where you could seemingly set 'all known files'/'all known tags'
- .
- boring code cleanup:
- refactored all zoom code from the media viewer canvas to the media viewer container. the canvas no longer manages zoom numbers or container size
- refactored all container-position-tracking code from the media viewer canvas to the media viewer container and cleaned it
- updated the media viewer container to recognise UI scaling and adapt the stated zoom to reflect the raw pixels on screen, not the device independent coordinate system
- updated the native animation widget to recognise UI scaling, adapt its underlying renderer resolution appropriately, and draw that super-resolution frame to the canvas
- updated the static image widget to recognise UI scaling, adapt its tile coordinate system and resolution appropriately, and scatter the ethereal powder of the cleansed ancients across the QPainter in order to stitch the arbitrarily zoomed super-resolution tiles together on a sub-pixel canvas with no visible seams
- the animation and static image widgets also recognise changes in the current UI scale--if the current monitor changes or you move across monitors with differing UI scale
- updated some old pubsub update calls in the canvas code to Qt signals
- cleaned up some old const definitions in canvas code
- refactored and simplified some test methods related to the canvas container and media show actions
- cleaned up some old painter code and hacks to simpler alternatives
- cleaned a tangle of file/tag domain update code in the autocomplete dropdowns
- cleaned up some options getting/setting methods in the downloaders

next week

After three weeks at this, I am now super behind on other work. I would like to just kick out some normal bug fixes and so on, keep multiline text parsing in mind, and also turn to some long-delayed serverside admin workflow improvements. I would also like to switch the installer exe over to Qt6 next week.
I had a good week doing a variety of different work. I cleared out a bunch of little improvements and bug fixes, moved the Windows installer to Qt6, and rounded out the new note parsing system with multi-line parsing support.

The release should be as normal tomorrow.

https://youtube.com/watch?v=qBJRJvHYS_k
windows
Qt5 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v495/Hydrus.Network.495.-.Windows.Qt5.-.Extract.only.zip
Qt6 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v495/Hydrus.Network.495.-.Windows.Qt6.-.Extract.only.zip
Qt5 exe: https://github.com/hydrusnetwork/hydrus/releases/download/v495/Hydrus.Network.495.-.Windows.Qt5.-.Installer.exe
macOS
Qt5 app: https://github.com/hydrusnetwork/hydrus/releases/download/v495/Hydrus.Network.495.-.macOS.Qt5.-.App.dmg
Qt6 app: https://github.com/hydrusnetwork/hydrus/releases/download/v495/Hydrus.Network.495.-.macOS.Qt6.-.App.dmg
linux
Qt5 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v495/Hydrus.Network.495.-.Linux.Qt5.-.Executable.tar.gz
Qt6 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v495/Hydrus.Network.495.-.Linux.Qt6.-.Executable.tar.gz

I had a great week working on more Qt6 support and getting Note Import Options ready for advanced users to try out.

Qt6

The Qt6 launch last week went generally well. There were a couple of little typo bugs as expected, but most users reported nothing drastic.

I have fixed several issues and also improved graphical quality at >100% UI scale. Qt6 handles UI scale tech much better, but that also exposed all the better where my custom UI was failing. Thumbnails at 125% were looking pretty ugly, with nearest-neighbour scaling, so I knuckled down and did my homework on how all this is supposed to work, and I think I have it fixed. Thumbnails should look ok at any UI scale in Qt6, and their banner text too. My fixes apply to Qt5 too, but as far as I can tell that only really works comprehensively for 100%/200% scale. I will try to tackle the media viewer next week.

If you are an experienced user with a backup, please feel free to try Qt6 out on your real install. If both Qt5 and Qt6 are available, the client will now default to Qt6, so you shouldn't need to do a 'clean install' like last week. My test of this went fine, but if there is some odd dll conflict when you try to boot, check here on how to clear things out and either revert to Qt5-only or try Qt6-only:

https://hydrusnetwork.github.io/hydrus/getting_started_installing.html#clean_installs

Any reports on failures here would be useful so I can write in any needed 'delete these old files' rules to the Qt6 Win installer.

As a reminder, afaik Windows 7 cannot run Qt6, so don't try it out if that's you. I will switch over to Qt6 exclusively in a few weeks, at which point I'll update the help and talk more about your future options, which will be: stop updating the client; move to a newer OS; run in Win7/Qt5 from source.

Note Import Options

Unfortunately I couldn't fit all this in again, but I've done work I'm happy with and have parts of it ready for advanced users to play with. Fingers crossed, the first simple version of this will be completely integrated next week.

The File Import Options update last week went ok. I messed something up with the Presentation Options, so highlighting a gallery or watcher with a default FIO was always showing the same thing (new or all files) instead of what the default actually said. This is fixed.

I have pushed FIO and TIO further together this week. File Import Options and Tag Import Options are now merged into one button and one dialog across the program. The dialog is tabbed, so you edit both sets of options at the same time, and in future, any new Import Options will work through the same interface.
Note Import Options is going to do that very soon. I need to figure out how NIO defaults are going to work (probably the same way TIO does, based on network domain to allow for finicky per-site options as needed) and do some more parsing stuff, and then it should all link together. If you would like to check out what NIO looks like, please hit up network->downloader components->EXPERIMENTAL: check out Note Import Options. Read the help and tooltips, and let me know if it is crazy confusing or if you think I have missed anything simple, obvious, and important.

Downloader creators can also play with note parsing. It isn't linked to anything yet, but you can see how it works. It is pretty simple, just a new Content Parser type. You set the name of the note and parse the text. It'll get washed through the NIO and then applied to the file. The main remaining problem is the parsing system can't yet do multi-line results. I'd like to tackle that in the coming week(s). If you make downloaders, please have a think about what notes if any you would like to parse and what tech I can add to make that easier. However to stop myself going crazy, I have decided for this first version to not allow parsed note names.

full list

- Qt6:
- if available, Qt6 is now the default. specifically, if the QT_API environment variable is not set, the default is now PySide6, and if that is not available, then PySide2 (Qt5). previously, the opposite was true
- fixed a bug in last week's File Import Options default update with the new 'default' FIOs always showing 'new' files on a gallery/watcher highlight. the Presentation Import Options and the check to see if the pending local file domains actually exist now correctly look up the 'default' FIOs
- Qt6 has much better UI scaling support than Qt5 for zooms other than 100%/200%. many Windows users are at 125%/150%, which revealed some pretty ugly thumbnails and thumb banner text in Qt6. thank you for the reports. I did my homework and read up on how this is _supposed_ to work and I have hacked pretty thumbnails at unusual UI scales. it also redraws itself correctly when I move from a 100% screen to a different one at 125%; let me know how you get on. I'm quite pleased
- the media viewer is still slightly borked at >100%. the fix will be slightly different, but I have a plan and hope to have it sorted for next week.
- fixed setting a mouse scroll wheel shortcut in shortcut options in Qt6
- as a reminder, as far as I know, Windows 7 cannot run Qt6. I will be dropping the Qt5 build in a few weeks, so if you are a Windows 7 user, have a think on what you want to do--either stop updating, move hydrus to a newer OS, or run from source on Win 7/Qt5
- .
- note import options and note parsing:
- note parsing is ready in parts. I am rolling them out for feedback from advanced users and hope to link it all up into a working system next week!
- the different 'x import options', previously file and tag import options, and this week adding 'note import options', are now edited through one combined button and dialog. this 'import options' button dynamically adjusts to deal with how many types of import options the importer has and will relabel and tooltip and right-click-menu itself appropriately
- this new button and multi-edit-panel show '(is default)' status in menus and tabs for quick referral
- if you want to play with note import options, check out the new EXPERIMENTAL menu option under _network->downloader components_. read the help and tooltips and let me know if I have missed anything simple, obvious, and important
- I have no default system for Note Import Options set up yet, so I have not added it for real. I will do something domain-based, similar to Tag Import Options.
- I did however write simple note parsing support. any Content Parser can now have a 'note' parsing type, with a note name. downloader creators, please feel free to play with this, although it isn't complicated and isn't plugged in yet. I think we should review what sites have parseable notes and plan for that rather than start implementing for real just yet. the main limitation is that the parsing system can't do multi-line results yet
- I'd like to see if I can get NIO defaults going next week, and this should suddenly all lock into place. multi-line parsing may be easy or a massive pain, I'm not sure yet
- .
- misc:
- added two new checkboxes to _options->files and trash_ to turn off the yes/no confirmation when you copy/move file across multiple local file services
- the 'overwrite this session?' confirmation dialog now says the session name you are overwriting
- fixed a bug where thumbnails were not immediately updating their banner text on changes to the summary generator objects in _options->tag presentation_
- moved the 'focus thumbnail in preview window' checkboxes from 'gui pages' options page to 'thumbnails'
- updated the text and enabled status of the 'BUGFIX: discord DnD' stuff in _options->gui_
- updated the job description texts in the file maintenance dialog, improving formatting and clarifying what happens in each missing/incorrect job, and what 'remove record' means precisely (it leaves no deletion record)
- fixed a bug from last week when trying to edit your default tag import options
- .
- boring note import options cleanup and refactoring:
- moved ClientGUIImport code up to a new hydrus.client.gui.importing module, refactored it into multiple files, and merged in some other edit panels for various import gui
- merged the file/tag import options buttons into one cleverer and cleaner class. changed its update callables into nicer Qt signals. wrote a new tabbed edit panel for it to work with, and replaced all old import option buttons across the program with the new system
- fixed an issue where the 'import options' buttons (now merged) would allow you to set them as 'default' through the right-click menu even when the button was set to not allow defaults (this state occurs in the options dialog, when you _set_ what the defaults are)
- fixed the same when you try to paste default options into the button
- brushed up and completed the note import options object
- wrote a 'edit note import options' panel
- fixed a small thing where the 'string-to-string' list widget wasn't setting the custom 'value' column header name correctly

next week

More of this, I'm afraid! I regret focusing on this for so long, but the work is going well and I want both done properly. I'll see if I can get the media viewer displaying good at >100% UI scale, knock off any other Qt6 problems, and then hammer out Note Import Options defaults so we can actually start parsing real stuff.
 >>/1338/
> I will switch over to Qt6 exclusively in a few weeks, at which point I'll update the help and talk more about your future options, which will be: stop updating the client; move to a newer OS; run in Win7/Qt5 from source
I feel like Hydrus would be better at self sustaining itself if sites, cookies, downloaders, logins, ect. were updated automatically instead of needing to download a whole new client for those sites and scripts to be updated. Sort of like Jdownloader. I mean yeah you could manually update them yourself but it seems like it would be more convenient to have Hydrus pull updated site/scripts from a source.

Unless Qt6 makes a dramatic change to how the scripts work(I don't know much about programing or scripting) then yeah the only options would be to move on to a newer os.
I had a great week making Qt6 work better, including making the media viewer work well at >100% UI scale, and getting the first version of note parsing finished.

The release should be as normal tomorrow.

 >>/1341/
That's the ideal of the next big iteration of the downloader system. You can manually update each object in it now using the UI, but it is super awkward to work with on any large or repeated scale. I'd really like to have the ability to dial up online repositories, like a github folder or whatever, and proper versioning and author/naming of downloaders so the client can check itself if there is an updated version of a downloader. In my mind, I think of it like how most vidya mod managers work, where you can see the new available versions and update with just a couple clicks.

That said, I don't do many updates to the default downloaders any more. Probably one every few months. The updates people will be missing out on if they stay on Win 7 or similar will be the changelog every week.

https://youtube.com/watch?v=85bvcndvEpo
windows
Qt5 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v494/Hydrus.Network.494.-.Windows.Qt5.-.Extract.only.zip
Qt6 zip: https://github.com/hydrusnetwork/hydrus/releases/download/v494/Hydrus.Network.494.-.Windows.Qt6.-.Extract.only.zip
Qt5 exe: https://github.com/hydrusnetwork/hydrus/releases/download/v494/Hydrus.Network.494.-.Windows.Qt5.-.Installer.exe
macOS
Qt5 app: https://github.com/hydrusnetwork/hydrus/releases/download/v494/Hydrus.Network.494.-.macOS.Qt5.-.App.dmg
Qt6 app: https://github.com/hydrusnetwork/hydrus/releases/download/v494/Hydrus.Network.494.-.macOS.Qt6.-.App.dmg
linux
Qt5 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v494/Hydrus.Network.494.-.Linux.Qt5.-.Executable.tar.gz
Qt6 tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v494/Hydrus.Network.494.-.Linux.Qt6.-.Executable.tar.gz

I had a great week with two big changes. First, there is an optional 'Qt6' version of the program for advanced users to try out, and second, File Import Options has some important updates.

Qt5 and Qt6

If you are a regular user, stick with the Qt5 versions of the release this week. It is the same as before.

Hydrus is moving up to a new version of its UI library, Qt. The new version has a ton of bug fixes and generally better support for newer OS concepts like UI scaling. I am going to be putting out releases for both 5 and 6 for a month or two, testing it with advanced and then normal users, and then will switch to 6 exclusively. Everything seems to be going well, and you don't have to do anything.

If you are an advanced user though, please try out the Qt6 builds. They work exactly the same as the old ones. Just to be careful, I recommend you not try them on your real database first off, and doubly so if you do not have a great backup. I am not worried about database damage, but you never know, and if there are problems, I don't want to give you inconvenience on your main install. Try a fresh extract on your desktop first to make sure it boots ok, and then delete that extract. Then, if you want to try it on your real database, try doing a 'clean install' as here: https://hydrusnetwork.github.io/hydrus/getting_started_installing.html#clean_installs

If you don't do a clean install, you'll still have Qt5 dlls in your install folder and the client will default to the older version (for now). If you are a macOS user, you don't have the concept of 'clean install', so just run the App as normal, but make sure you have a backup of your database first. There's also no Windows Qt6 installer yet. You can check help->about to see what version of Qt is currently running.

So far, the update has been remarkably smooth for me, with very few bugs. A user has been watching the situation for me and kindly provided a patch to deal with the most important syntax changes, so moving over has not been a massive pain in the neck. I've been using it IRL for a few days now and I think things are just that bit smoother and less flickery.

I am particularly interested in Linux and macOS users' feedback. So far, the main limitation I know about is that Windows 7 can't run Qt6 (it is just too old), but there may be other issues in other platforms. Let me know, and we'll see if we can iron them out.

I am going to keep hydrus Qt5 compatible, so anyone who needs to stay on it but wants to keep updating will have the option of running from source.
file import options

My other plan for this week was getting 'note parsing' working for the downloader. I laid out everything I would have to do, and the first bulky thing I have to do is get 'Note Import Options' integrated. That will be a surprising amount of work, and over some ugly areas, so I decided to take things a little slower and do some cleanup beforehand so I could do it properly.

So, this week I overhauled some of how File Import Options works. There is some behind the scenes work to make all the import options work a little nicer, and also, on the front end, File Import Options now does two new things:

First, File Import Options now has a filetype filter. You can say 'only allow jpegs' or 'only allow video' or whatever you like, just like the 'system:filetype' search predicate. Import Folders used to have this too, but they send those settings down to their File Import Options when they update this week.

Second, File Import Options now have the idea of being 'default' like Tag Import Options do. All your existing File Import Options will stay as they are, but any new ones will be in 'default' state, meaning at the time of import, your settings under options->importing will be used instead. This makes it easier to edit your File Import Options en masse, since there is only one place to go for most changes you ever want to make.

The manage subscriptions dialog now has a 'overwrite file import options' button too, if you do want to mass-set some specific File Import Options across your subs. You might like to just set them all to default this week--I think I will.

This 'default' concept is going to be applied to Note Import Options too. I am still thinking about how extensive the defaults system should be for File and Note Import Options. At the moment, File Import Options still just has the 'quiet' and 'loud' defaults in the options dialog, but I could expand things so you can set a default File Import Options for particular domains as you can for Tag Import Options. I'm thinking of combining them all into one tabbed edit dialog, so I may also extract the Presentation Options out of File Import Options, since those may have a different shape of 'defaults' than File Import Options most of the time. If you care about this stuff, let me know what you think.

full list

- QT6:
- thanks to a user's help, we are rolling out a Qt6 test build this week. we've been running Qt5 for a few years now. 6 is mostly a very large bugfix patch, and I am hopeful this update will relieve several legacy issues related to UI scale, colour support, draw flickering, and other unusual stuff. so far, it is working for me great. I'll be putting out joint 5 and 6 builds for 4-8 weeks, to iron out any big problems, and then I'll switch over to 6 releases exclusively. if you are an advanced user, please give it a go this or next week and let me know if you run into any traceback errors about deprecated method names or completely jank layout in the less used parts of the program
- the actual changes you'll see are mostly style, just slightly different font spacing, things like that. if you have a system-baked Qt5 style that hydrus magically inherits, this will no longer work, you need to get a Qt6 version of the style (although I understand this is happening already for the popular styles, so you may already have them)
- users on Windows 7 and similarly old OS versions are unable to run Qt6 programs, sorry!
- I intend to keep the code 5-compatible, and users who run from source can choose whichever version of Qt they prefer, as here in the help: https://hydrusnetwork.github.io/hydrus/running_from_source.html#qt
- the linux Qt6 build also goes up from ubuntu 18.04 to 20.04. let me know if you have any trouble, but it feels like it is time to update this too
- file import options overhaul:
- I wanted to do note parsing this week, but when I reviewed the whole job, there wasn't enough time to do it properly. so, in prep for a cleaner introduction of 'note import options' next week, I am overhauling how the other import options do some stuff
- all file import options now support filetype filtering! it uses the same control as system:filetype or in import folders, but with some improved logic. on update, existing import folder filetype settings will be copied down to the file import options
- file import options now work on a similar 'default' system as tag import options. existing file import options will stay as-is, but new ones will begin in a 'use the default settings at time of import' state. those defaults are editable under _options->importing_. for now I am not adding a 'use this file import options default for this web domain' system, but it might happen in future. let's see how this all shakes out first
- the file import options button now has a right-click menu like the tag import options button
- the manage subscriptions panel now has a 'overwrite file import options' button to mass-set FIO
- cleaned up a bunch of old file import and import options code
- .
- misc:
- system:filetype now remembers meta filetypes better. if you select 'all video', it will now still select all video even if hydev adds support for a new video type in future. also if you select 'video + animations', it'll say that rather than listing out every possible specific-type
- fixed an issue where loading a favourite search wasn't always setting 'include current/pending' values on the buttons correct
- fixed up a status display in the gallery downloader and watcher pages--if you pause an importer while it is doing work, it now says 'pausing...' as its status until any current jobs are finished. it was giving empty text before, as if it were finished already
- fixed some unusual behaviour with downloader highlighting where the first query pended to an empty page was secretly highlighted for the next session load, and fixed the 'subscription gap downloader' also doing this and not obeying the normal 'highlight new downloaders if nothing already highlighted' option
- improved the error when the 'make sure this directory exists' function runs into a file with that pathname
- fixed a rare selection position error, maybe Qt6 only, when clicking in the thumbnail grid as it is loading
- .
- boring Qt6 code cleanup:
- as a side thing, I set up quick-launch environments for QtPy5, QtPy6, PySide2, and PySide6 in my IDE this week, so I can now test all these situations and jump back in time no problem in future
- integrated a user's patch to bring us up to Qt6 compatibility and did a little more work to get it backwards compatible with older qtpy and Qt5
- refactored the critical Qt boot setup and monkeypatching from QtPorting to a new QtInit module
- migrated the hydrus code for keyboardModifiers, event-pos, and globalPos all to the Qt6 equivalents so the monkeypatching is always going to be on older versions looking forward
- fiddled with QPoint and QPointF conversions a little so I _think_ Qt5 and Qt6 is always talking about the same type
- updated build scripts and requirements.txts for the new situation
- updated the help a bit for the new situation

next week

Note Import Options! I'm going to focus on it. I'll see if I can merge all the Import Options together, get the note merge tech we need working and tested, and then get some actual note parsing working in the downloader so we can play around with it.
I had a great week continuing the Qt6 work and Import Options overhaul. I fixed several Qt6 bugs, including fuzzy thumbnails at >100% UI scale, and collapsed all File/Tag Import Options into one button and dialog. Advanced users will be able to play with prototype Note Import Options and note parsing.

The release should be as normal tomorrow.

https://youtube.com/watch?v=5VygwTBgph4
windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v493/Hydrus.Network.493.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v493/Hydrus.Network.493.-.Windows.-.Installer.exe
macOS
app: https://github.com/hydrusnetwork/hydrus/releases/download/v493/Hydrus.Network.493.-.macOS.-.App.dmg
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v493/Hydrus.Network.493.-.Linux.-.Executable.tar.gz

I had a great week working on some fixes and prototype EXIF support.

EXIF

EXIF are metadata labels embedded in some media files, usually JPEG. They might say the make of camera that took a picture, or its aperture/ISO, the GPS coordinates it was taken at, how an image is rotated, or the DPI of a logo for printing purposes. There are many different possible fields. I have wanted to add support to view and even search this data for a long time, and this week we start with something simple but not user-friendly.

The media viewer now has a 'cog' icon on the top hover. On JPEGs, it lets you check for EXIF data. Most files don't have it, but if it does (usually this is photos or professional art exported from Photoshop etc...), it now throws up a little window to see every field.

The duplicate filter now actively scans for EXIF data and says if one or both files have it, just like the recent addition for ICC Profiles. Many websites strip EXIF data on upload, so if you have two exact dupes, the one with EXIF data is probably closer to the 'original' version.

Now I have this framework, I would like to extend it. Beyond general polish like replacing the cog icon with something nicer, and only enable it when I know there is some EXIF to show, I want to cache 'has exif data yes/no' in the database and allow you to search by that. I expect I'll also add the actual EXIF data itself to the database one day, so you'll be able to search all your pictures for iPhone 6 photos or whatever.

So, if you are interested in EXIF, please give this a go and let me know what you think. This feature was taking so long to happen that I decided to just spam out a rough v1.0 that I can keep improving.

full list

- EXIF:
- in the first step of 'official' EXIF support, the media viewer now has a 'cog' button on the top hover, enabled when looking at a jpeg, that will check the file for EXIF data. if found, it will throw it up on a simple new window that shows EXIF id, label, and value. this is a hacked-together prototype, not super user-friendly, but it works. let me know what you think, and please send me any files that have weird EXIF that doesn't parse right but you think should. I already discovered a file with a null character that wouldn't display in UI, that sort of thing
- GPS EXIF values are also parsed and extracted
- made it so you can double-click a row in this new window to copy an EXIF value to clipboard
- in the duplicate filter, if one or both files have exif data, this is now noted in the comparison statements, just like ICC profile! (issue #469)
- obvious future extensions here will be storing 'has exif' in the database and allowing its presence to be searchable and enabling the cog button (or a nicer 'exif' button) only when there is known data to see. a subsequent step would be actually caching the data in the database for full EXIF search
- as a side thing, we're now set up on the hydrus end to pull TIFF EXIF, but PIL doesn't seem to offer it, so we'll have to wait for a different solution there
- fixes and misc:
- fixed a problem that made saved page file sorts reset their sort order one time on update to v492. thank you to a user for noticing this and discovering the fix, and I'm very sorry for the inconvenience of changing your session and favourite search sorts. unfortunately there is no easy fix other than rolling back to a backup and jumping forward to this version
- fixed a v492 message display error when setting various duplicate relationships to three or more thumbnails at once. it was a stupid typo, sorry for the trouble! (issue #1199)
- if a page tab name elides to a 'shorter...' length, it now has its full name as the tooltip
- fixed a typo in update code error handling (issue #1192)
- the duplicate filter page now remembers if you are 'searching immediately'/'search paused' (issue #1193)
- if you are on non-Windows and export files manually or with an export folder to an NTFS or exFAT partition, this is now detected, and NTFS-invalid characters in the pattern-generated folders or filename are now replaced with underscores (issue #1194)
- 'fixed' a system predicate bug in the 'OR*' advanced predicate parser--entering a logical expression that results in a negated system tag now causes an error. previously, it would strip the 'system:' and just enter the given text as an unnamespaced tag. furthermore, that dialog now reports specific error reasons when it fails to parse. I hope to improve support for negated system tags in future--some stuff, like archive/inbox, should be easy.
- I think I fixed an instance where the archive/delete filter's confirmation dialog could present 'delete from hard disk' as an option when it wasn't appropriate
- in an attempt to reduce the media-change flickering we've recently seen in the media viewer, I untangled a bunch of the canvas size/position code this week. I'm preparing a complete overhaul and neat Qt layout integration, which this starts. I _think_ I've made some things less flickery on occasion, but we'll see IRL. much more to do
- added a '--profile_mode' launch argument, which allows you to capture the performance of boot and also try out profile mode on the server (although support there is very limited atm)

next week

Next week is a medium size job week. I want to put some time into note parsing. I am not sure how far I can get, but fingers crossed I can actually get 'note import options' and a note content parser working, and we'll be able to update the existing downloaders to grab artist notes and things.
thumbnail of Screenshot_7315.png
thumbnail of Screenshot_7315.png
Screenshot_7315 png
(3.79 KB, 387x74)
Don't know what I'm supposed to do to fix this or if it was broken before.
Hydrus v464, first time I've opened it in a few months and says you want feedback.
 >>/1327/
Ah, damn, I think that login script does not work any more, I think I remember another user saying this recently. If any script suddenly breaks, I recommend you disable the login (set it to 'active: no' under manage logins) and use Hydrus Companion instead, which will sync your cookies over from your logged-in browser and works a lot better for all unusual situations:

https://gitgud.io/prkc/hydrus-companion

I will see about removing that rule34.xxx link in the defaults so new users don't get hit by this either.
Is there a way to change the upper limit on gifs from 32?
I'm trying to save a 52Mb sized gif and I got prompted with this message.
I had a great week with two big changes. First, there are Qt6 test builds for advanced users to try out, and second, in prep for a soon-to-come Note Import Options, I added filetype filtering and 'use default at time of import' tech to File Import Options.

The release should be as normal tomorrow.

 >>/1331/
Sure, check the 'File Import Options' of the importer you are working on. There's a setting in there just for gif size. options->importing for your default settings.

Is there a way to change the upper limit on gifs from 32?
I'm trying to save a 52Mb sized gif and I got prompted with this message.
thumbnail of 32mb.png
thumbnail of 32mb.png
32mb png
(54.15 KB, 745x869)
for anyone who comes across this thread here's how i fixed it
> import file
> click file import options
> click on the drop down and select the "set custom file import options"
> change maximum gif filesize or check no limit
> click apply
hopefully this helps someone

thumbnail of 1504861.png
thumbnail of 1504861.png
1504861 png
(151.32 KB, 600x842)
It would be great to allow unrestricted file extensions.
I want to import into Hydrus many 3D models (.stl; .step; .prt; .x_t; .obj; et cetera) and some others like .txt and .html.
Viewers for non supported files are not necessary if a custom screenshot (provided by the user) of the file content is showed in Hydrus.
Then the workflow would be to import, to tag, to add a screenshot, to search, and then to execute with an external program.
thumbnail of 1504861.png
thumbnail of 1504861.png
1504861 png
(151.32 KB, 600x842)
It would be great to allow unrestricted file extensions.
I want to import into Hydrus many 3D models (.stl; .step; .prt; .x_t; .obj; et cetera) and some others like .txt and .html.
Viewers for non supported files are not necessary if a custom screenshot (provided by the user) of the file content is showed in Hydrus.
Then the workflow would be to import, to tag, to add a screenshot, to search, and then to execute with an external program; or to export and then to execute.
I have three suggestions:

I wish there was some kind of favorites functionality. Nothing fancy, just a system tag for favorites, a quick-add button for said tag the right-click menu, and maybe a star on the thumbnails.

The current workflow for importing large queries (artists) is shit. Subscriptions aren't for large imports, but if you want to grab an artists stuff you're going to need one. So you have to manually do a run with the importer and manually make an identical subscription. I'd like to be able to right-click on an import query and pick an option to just make it a subscription.

It would be nice if there was a way or preserve generic metadata. I am thinking specifically of descriptions on pages like FA or e621. Nothing huge, just text box basically where importers could dump whatever into.
 >>/997/
And one more thing! Currently when you import things they get their modified and imported dates set to when they're downloaded. Usually that means it's backwards slightly out of order from chronological. Subsequent imports will have the same issue but also all be 'after' that. Effectively there's no way to sort by chronological order. I want items had a 'posted date' (that importers would need to parse) that you could sort on.
Hi,

I am curious to know your thoughts on my proposal below.

I welcome your feedback or rejection ( I pray not : - ) )

======Original message=======


Hey,

The new normal seems to be daunting but it's high time for us to shift our focus on innovative ways to start a business.

I noticed that you shared https://mode.com/blog/python-interactive-plot-libraries/.

i'd like to offer http://endchan.net/hydrus/res/25.html an https://www.guru99.com/ article that may help a start-up business take off in these challenging times.

Of course, I don’t want a free from you. I wouldn't reply to this kind of email if there wasn’t anything for me, so here’s what you can get:

• Social sharing of your article to our 50k social followers

Or

• I am happy to do Cross-Promotion.
• You will update the content and we all know Google likes that
• You will make me extremely hap

That's it. What do you think?

Happy Thoughts,
Vinay 
PS: I am real a person... here is a number to contact me +1 302 308 5151

https://youtube.com/watch?v=N9LFp_brHvE
windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v492/Hydrus.Network.492.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v492/Hydrus.Network.492.-.Windows.-.Installer.exe
macOS
app: https://github.com/hydrusnetwork/hydrus/releases/download/v492/Hydrus.Network.492.-.macOS.-.App.dmg
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v492/Hydrus.Network.492.-.Linux.-.Executable.tar.gz

I had a good week mostly cleaning code and adding some things for advanced users.

highlights

If you are in advanced mode, the file sort and collect controls now have a 'tags' button. This lets you determine which tag service that particular sort/collect applies to. If you are this tag-clever, let me know how it works for you. This tag button is the same thing that autocomplete dropdowns use, and I expect it to soon get a 'multiple location' makeover like the file button did with multiple file services.

The archived file delete lock (under options->files and trash) gets a pass this week. If you try to delete files that are currently locked, it now makes a popup with a button to see those specific files, so you can decide what to do. The duplicate filter also handles the different situations (like 'archive both files' + 'delete the worse file') better.

The duplicate filter also now shows if one or both files have an ICC profile.

The shortcut actions to 'move page selection home/left/right/end' now try to stay on the same level if you hit them several times. If you use these actions, try them out through a mix of page of pages and you'll see how it works now. It remembers the current level within three seconds of the last move event. This was requested by several users, and there isn't a nice way to do it so I hacked an answer, so let me know what you think.

full list

- sort and collect updates:
- for big brain users, the collect control now has a tag domain button. it only shows if you are in advanced mode (issue #572)
- the sort control also has a tag domain button hidden behind advanced mode. it applies to system:num tags and namespace sorting
- the collect control now appears on all import pages
- .
- archived file delete lock:
- the duplicate processing action code now no longer archives files that are due for deletion right before that deletion. this was hitting the archive delete lock
- if archive delete lock is on and the 'other' file in the duplicate filter is archived, the option to 'this is better, delete the other' is now disabled
- if you attempt to delete a delete-locked file during normal browsing, or if an automatic system like export folders wants to but fails on some, a popup is now made with a button to show the files that were filtered out so you can review the situation and fix it if you want
- I am considering adding a dialog to say 'hey, this is locked, want to send back to inbox?' to fix these situations in a nice way, but I think this is probably a bad idea in terms of workflow, design, and my sanity given all the edge cases and potential future expansions of lock rules. maybe I'll add a simple 'delete and override lock checks' option, but a lock is a lock tbh. for now, I will focus on this better UI feedback of currently delete-locked files and make it simpler for humans to remove any locks
- misc:
- using black magic, I have made it so the shortcuts for 'move left/right one page' 'and 'move home/end' do not dip down to the lowest level of a neighbouring page of pages for the next command. it now stays on the current tab level for three seconds after the most recent move command. this works in testing but may be jank in some IRL situations, so if this matters to you, let me know how it works out
- fixed a bug in 'do a full metadata resync' that meant unprocessed row orphans were not being deleted, which lead to lingering 1950/2000-style processed gauges that didn't actually cause any work to be done on 'process now'
- the duplicate filter now shows if one or both files have an icc profile. for now the score for this is always 0, neutral
- I think I have reduced general lag on some busy clients
- .
- code cleaning and minor fixes:
- refactored file viewing stats management to a new database module
- refactored file physical storage management to a new database module
- cleaned up an ugly bridge that made inbox/archive work and moved it all to a clean new separate database module
- improved some client file physical storage repair code, both in how it repairs and how it recovers in the current boot
- updated the yes/no dialog texts when you apply 'not related' or 'alternates' to a selection
- added a bunch of tooltips to the 'speed and memory' options panel. also clarified the example image sizes in number of pixels
- improved how my grid layout propagates tooltips from the widget to the text when the widget is compound and in its own layout
- consolidated where the delete lock test occurs to just one location for db, gui
- added infrastructure to filter and report delete-locked files. callers no longer care about specific lock rules, opening this up to future expansion
- cleaned and simplified some duplicate action processing code
- cleaned up some file collect code, optimised it a bit too
- the sort control now only changes sort type on mouse wheel events if the mouse is over that button
- renamed 'tag search context' to 'tag context' across the program, mirroring a recent change with the location context, and gave it some bells and whistles. in future, the tag context will hold multiple tag services
- wrote a new button to edit tag contexts

next week

Next week is small jobs. I have a bunch of different things piled up that I want to get to, and I'll see if I can catch up with some longer term bug reports too.

https://youtube.com/watch?v=OQEDWiM-QRI
windows
zip: https://github.com/hydrusnetwork/hydrus/releases/download/v491/Hydrus.Network.491.-.Windows.-.Extract.only.zip
exe: https://github.com/hydrusnetwork/hydrus/releases/download/v491/Hydrus.Network.491.-.Windows.-.Installer.exe
macOS
app: https://github.com/hydrusnetwork/hydrus/releases/download/v491/Hydrus.Network.491.-.macOS.-.App.dmg
linux
tar.gz: https://github.com/hydrusnetwork/hydrus/releases/download/v491/Hydrus.Network.491.-.Linux.-.Executable.tar.gz

I had a good couple of weeks doing a behind the scenes overhaul and a variety of quality of life work. I was ill last week and put off the release, but I am feeling great now.

metadata import/export

As is often the case, an important overhaul makes few actual changes front end. I've been trying to do this for a while, but now the 'export/import tags in a neighbouring .txt file' routine now works on completely new tech. Rather than hardcoded tags into .txt files, it now uses a modular system that I will be able to expand in future to support filtering and string processing, more metadata types like ratings and URLs, JSON and XML as the file formats, and will even allow funky migrations like converting tags to URLs.

As a side benefit, Export Folders now support tags .txt export.

For now, all the UI front-end looks the same, but please expect this to change in future. I'll be writing some nice unified panels and dialogs to handle the new objects as I write them.

advanced user highlights

The 'OR*' advanced tag input now supports system predicates! It uses the same system predicate parser as the Client API, so you can now type or copy/paste most system predicate text and get something both useful and complicated. The text that parses isn't always exactly the same as the predicate label, so check out the big list of example parseable system predicates here: https://hydrusnetwork.github.io/hydrus/developer_api.html#get_files_search_files

Also, if you are a parser creator, String Processing now has a Tag Filter processing step. Let's say you can grab all the tags from somewhere but you need to filter out a handful of non-tag text like '+' and '?', or you are able to create hydrus namespaced tags and want to filter by namespace, just insert this into your string processing and it should be much easier than messing around with long regexes.
full list

- system predicates:
- the advanced OR input, where you can type tags in complicated logical expressions, now supports system predicates! most system predicates are supported using their typical display strings. it uses the same engine as the client api, so check the examples here https://hydrusnetwork.github.io/hydrus/developer_api.html#get_files_search_files sorry for the delay here
- the advanced input also runs tags better through the hydrus tag 'cleaning' process, so things like whitespace between the namespace colon and the subtag are cleaned up correctly, and invalid tags should be excluded
- it also starts with the keyboard focus in the text input
- and I think I fixed an issue with '!'', 'not', or '-' negation prefixes not parsing
- highlighted the example parseable system predicate texts in the Client API help, and added 'last viewed' to it
- .
- misc:
- altering your services in _manage services_ no longer causes a full page refresh for all currently open search pages
- in a related thing, if you click the file or tag domain of a file search page to be the same as it just was, you no longer get a page refresh
- the rating widgets now show their current rating value on their tooltips
- when setting a numerical rating by a drag, it no longer matters if your mouse strays above or below the widget--it will still set
- the String Processing system has a new 'String Tag Filter' processing step. this applies the normal tag filtering object to your list of strings and also performs the hydrus 'tag cleaning' process on them, making them all lowercase and trimming whitespace and so on
- the sibling/parent sync is now even more polite when told to do work in 'normal' time. this has been hitting a lot of new users really hard, so it should now really trickle work during normal time, throttling down when it hits a bump to avoid stunlocking you but also responding quickly to recent changes if you are fully synced
- the database repair code is now better at healing damaged fast-text-search (FTS) tables. previously, in cases of partial damage to the virtual table, the repair code would error out
- fixed a bug where certain search predicate calendar dates that are acceptable in Linux but not in Windows caused Windows to fail to load the session. if you put in 1965 as a search date, it should now revert to the current time one next load etc...
- the test to see if a directory is writeable-to is improved and now handles Windows's Program Files directory correctly
- improved how the boot scripts handle incorrect/bad database directory paths. the error handling works better, and it figures out a fallback location for crash.log better
- a new button on 'review services' now lets advanced users copy the service key to the clipboard
- the migrate tags dialog now lists file repositories, ipfs services, and 'all my files' as potential file filter domains
- when checking it has space for a large transaction like a vacuum, hydrus now tries to check if you are running on a ramdisk or other severely space-limited temp dir and offers more text if this is true
- updated the '4chan style thread api parser' to handle posts with multiple files, which fixes tvchan.moe and probably anything else running NPFchan
- some logic testing around showing 'return to inbox' and the actual operation is fixed so it only applies to local files. in some weird advanced situations, you could previously send deleted files to inbox
- new import/export framework:
- started a new modular metadata import/export pipeline. this thing starts out today by doing the work of newline-separated tags in a .txt sidecar file and will expand to do all sorts of metadata in other formats like JSON and XML. it will also, eventually, support arbitrary cross-type conversions like tags to urls or ratings to tags
- export folders now support '.txt' sidecar tag exporting!
- the '.txt' sidecar tag importing in import folders or manual imports is now handled by the new pipeline
- the '.txt' sidecar exporting in the manual export dialog is now handled by the new pipeline
- please expect the UI around '.txt' sidecar importing and exporting to change significantly in future. you'll be selecting different metadata types to import or export, make string processing steps to alter or filter what you get, and of course be able to compile it all into more complicated filetypes
- .
- cleanup and refactoring:
- mr bones gets two new columns to line up the numbers better
- a bunch of export code got moved around. created a new module 'exporting', and moved ClientExporting.py to it, renaming to ClientExportingFiles.py
- removed an old prototype for sidecar exporting and related plans for UI
- the 'missing file folders on boot' dialog now points users to 'help my media files are broke.txt'
- brushed up the 'help my x is broke.txt' documents in the database directory a little
- fixed some surplus double backslashes in the help
- a secret tiny label change/fix, let's see if anyone notices
- cleaned up how the rating widgets manage and update rating state. it was ancient bad code
- updated how different rating values are converted to UI text
- misc cleanup of some free space checking code
- fixed some bad quote characters in client api help JSON examples
- improved some error handling for uploading pending content and sped up file uploads a little

next week

Next week is a cleanup week. I'll try and break up some more monolithic database code.
I had a good week. I did a mix of background cleanup along with quality of life and other improvements, mostly for advanced users.

The release should be as normal tomorrow.

Post(s) action:


Moderation Help
Scope:
Duration: Days

Ban Type:


New Thread
Max 20 files0 B total
Refresh