misc
- fixed the gallery downloader and thread watcher loading with the 'clear highlight' button enabled despite there being nothing currently highlighted
- to fix the darkmode tooltips on the new Qt 6.5.2 on Windows (the text is stuck on a dark grey, which is unreadable in darkmodes), all the default darkmode styles now have an 'alternate-tooltip-colour' variant, which swaps out the tooltip background colour for the much brighter normal widget text colour
- rewrote the apng parser to work much faster on large files. someone encountered a 200MB giga apng that locked up the client for minutes. now it takes a second or two (unfortunately it looks like that huge apng breaks mpv, but there we go)
- the 'media' options page has two new checkboxes--'hide uninteresting import/modified times'--which allow you to turn off the media viewer behaivour where import and modified times similar to the 'added to my files xxx days ago' are hidden
- reworked the layout of the 'media' options page. everything is in sections now and re-ordered a bit
- the 'other file is a pixel-for-pixel duplicate png!' statements will now only show if the complement is a jpeg, gif, or webp. this statement isn't so appropriate for formats like PSD
- a variety of tricky tags like
:>=
are now searchable in normal autocomplete lookup. a test that determined whether to use a slower but more capable search was misfiring - the client api key editing window has a new 'check all permissions' button
- fixed the updates I made last week to the missing-master-file-id recovery system. I made a stupid typo and didn't test it properly, fixed now. sorry for the trouble!
- thanks to a user, the help has a bunch of updated screenshots and fixed references to old concepts
- did a little more reformatting and cleanup of 'getting started with downloading' help document and added a short section on note import options
- cleaned up some of the syntax in our various batch files. fingers crossed, the setup_venv.bat script will absolutely retain the trailing space after its questions now, no matter what whitespace my IDE and github want to trim
string joiner
- the parsing system has a new String Processor object--the 'String Joiner'. this is a simple concatenator that takes the list of strings and joins them together. it has two variables: what joining text to use, e.g. ', ', or '-', or empty string '' for simple concatenation; and an optional 'group size', which lets you join every two or three or n strings in 1-2-3, 1-2-3, 1-2-3 style patterns
new file types
- thanks to a user; we now have support for QOI (a png-like lossless image type) and procreate (Apple image project file) files. the former has full support; the latter has thumbnails
- QOI needs Pillow 9.5 at least, so if you are on a super old 'running from source' version, try rebuilding your venv; or cope with you QOI-lessness
client api
- thanks to a user, we now have
/add_tags/get_siblings_and_parents
, which, given a set of tags, shows their sibling and parent display rules for each service - I wrote some help and unit tests for this
- client api version is now 51
file storage (mostly boring)
- the file storage system is creaky and ugly to use. I have prepped some longer-term upgrades, mostly by writing new tools and cleaning and reworking existing code. I am nowhere near to done, but I'd like us to have four new features in the nearish future:
- dynamic-length subfolders (where instead of a fixed set of 256 x00-xff folders, we can bump up to 4096 x000-xfff, and beyond, based on total number of files)
- setting fixed space limits on particular database locations (e.g. 'no more than 200GB of files here') to complement the current weight system
- permitting multiple valid locations for a particular subfolder prefix
- slow per-file background migration between valid subfolders, rather than the giganto folder-atomic program-blocking 'move files now' button in database maintenance
- so, it is pretty boring so far, but I did the following:
- wrote a new class to handle a specific file storage subfolder and spammed it everywhere, replacing previous location and prefix juggling
- wrote some new tools to scan and check the coverage of multiple locations and dynamic-length subfolders
- rewrote the file location database initialisation, storage, testing, updating, and repair to support multiple valid locations
- updated the database to hold 'max num bytes' per file storage location
- the feature to migrate the SQLite database files and then restart is removed from the 'migrate database' dialog. it was always ultrajank in a place that really shouldn't be, and it was completely user-unfriendly. just move things manually, while the client is closed
- the old 'recover and merge surplus database locations into the correct position' side feature in 'move files now' is removed. it was always a little jank, was very rarely actually helpful, and had zero reporting. it will return in the new system as a better one-shot maintenance job
- touched up the migrated database help a little