re-applied a more rigorously tested 'invalid subtag' replacement for any user that has experienced incomplete update code in the past few weeks
added some tag rendering options to options->tags that affect most user-facing, non-editing windows:
added custom namespace-subtag connector (i.e. instead of ':')
added 'show namespaces' checkbox (i.e. to keep the colour but lose the namespace, like how most boorus display tags)
created a basic framework for the duplicate filter--it doesn't do anything yet, but you can launch it from the duplicates page to check it out
updated 'reset processing cache' action and added it to review services repository pages
review services now always starts on 'my files'
review services will try to stay looking at the currently selected service through a refresh_services event
fixed some thread-gui refresh interaction in review services
all listctrl-attached delete/remove buttons will now ask if you are sure before they go
reenabled db->maintenance->clear orphans, which it turns out I had already fixed by accident
serverside services will lock themselves more efficiently while generating updates, ensuring 'server busy' responses can always return promptly
fixed tag manage parents a/c entry to remove tags when they already exist in the box (previously, the a/c would only ever add, so a double-click was required to remove)
tuned adminside petition processing so it approves/denies in reasonable-sized chunks
refactored all the taglist gui code to focus on the underlying tag rather than the string representation
plenty of misc taglist cleanup besides
started a unit test suite for listboxes and wrote a thorough test for namespace colour listbox
fixed a problem with deleting more than 256 files at once
furthermore, deleting from thumbnail view or after a filter will split delete jobs into chunks of 64 files at a time to reduce gui hang from deleting many tag-heavy files
rewrote canvas media container code to recycle containers, embed windows, animation bars, static image windows, and animation windows. scrolling through all kinds of media is less flickery (less 'grey box' window initialise flicker) and scrolling through static images should be completely flickerless! William Gibson slideshow speed works again!
this flickerless static image transition will be particularly useful in the forthcoming duplicate image filter!
got adminside petition processing working again
petition counts and fetching is now split by content_type and status
the approve/deny colour hint is more obvious on the petition panel
petitions now process off the main gui thread and throw up a popup message
added 'check all' and 'check none' buttons to petition panel
several serverside petition processing fixes
generalised and improved dynamic menu check item initialisation and inversion support
moved the 'get tags even if file already in db' option into a cog button on regular downloader pages
added a default menu option for 'get tags even if file already in db' to the same cog button
added this cog button to the edit subscription panel as well
fixed exporting tags to Hydrus Tag Archives
fixed exporting 'all known tags' to HTAs
cleaned some HTA and related code
fixed namespace based tag censorship
fixed autocomplete not filtering out current/pending counts if they are set to 'excluded'
fixed generation of non-expiring new accounts
fixed some v245->v246 tag improvement code that was replacing invalid tags with the incorrect namespace
patched a problem with '-:' dirty tag in the v245->v246 update code--I'm not sure what it was doing, but it catches the unusual problem and puts it in the 'invalid tags' category, so let me know if you get trouble with this in future
wrote unit tests for bytesdictionary and shortcuts serialisable objects
harmonised and improved how separators are appended to menus
fixed a critical bug in serverside content deserialisating that meant servers were not processing most client-submitted data properly
fixed a critical bug in 'all known tags' autocomplete regeneration--please run database->regen->a/c cache when it is convenient and let me know if your numbers are still off
fixed the pre-v238 update problem for good by abandoning update attempts and advising users to try v238 first
clientside invalid tags will now be collapsed like with the server last week. if a tag is invalid (typically something with an extra space, like "series: blah"), the update code will attempt to replace existing mappings with the collapsed valid version. some unusual cases may remain--they will be replaced with 'invalid namespace "series "' and similar. Please remove and replace these when convenient and contact me if there are way too many for you to deal with
duplicates pages now have a file domain for the filtering section, and they remember this domain through session loads
this file domain is accurate--counting potential duplicates and fetching pairs for 'show some pairs' only from those domains. the issue of remote files appearing should be gone!
there is now only one 'idle' entry in the duplicates page cog menu--it combines the three previous into one
fixed numerous irregularities across the wildcard code. all search input now has an implicit '*' on the end unless you put a '*' anywhere else, in which case it acts exactly as you enter it, with a non-* beginning matching beginning of string, whitespace, or colon, and non-* end matching end of string or whitespace
autocomplete now searches namespace, so entering 'char' will load up all the 'character:' tags along with 'series:di gi charat'. this can lag to hell and back, so it may either need some work or be optional in the future. feedback would be appreciated
typing 'namespace:' will include all the series tags below the special optimised 'namespace:*anything*' tag
autocomplete searches recognise an explicit '*' no matter where it is in the entry text. typing 'a*' will load up all the a tags and present a 'a*' wildcard option
quickly entering a wildcard entry will now submit the correct wildcard predicate ('rather than a literal 'hel*' or whatever tag)
review services panel now reports total mappings info on tag services
review services panel now reports total files info on file services
manage services's listctrl is now type | name | deletable and initially sorts by type. the strings used for hydrus service types are also improved
manage serverside services (called by server admins to manage their services) have fixed setnondupe port and name on edit service events
new popup messages will now also appear if there were previously no popup messages to display if the current focus is on a child on_top frame, such as review services (you'll now see the processing popup appear when you click 'process now' on review services)
the popup message manager now initialises its display window with a single message that is quickly dismissed. this helps set up some variables in a safe environment so they don't have to be generated later when the gui might be minimised or otherwise unusual
hid hydrus update files from 'all local files' searches
added 'media_view' entries for hydrus update files, just in case they are still visible in some unusual contexts (and they may be again in a future update anyway)
fixed 'recent tags' being returned from the database out of order
by default, 'recent tags' is now on for new users
'get tags even if file already in db' now defaults to False
file import status now allows a 'delete' action below the 'skip' action
file import status right-click event processing is more sane
fixed the new raw width/height sort choices, which were accidentally swapped
cleaned the media sort code generally
cleared out some redundant rows that are in some users' client_files_locations
namespaced predicates are no longer count-merged with their namespaceless versions in 'write' autocomplete dropdowns
'unknown' accounts should now properly resync after clientside service change
improved how registration keys are checked serverside when fetching access keys
fixed a v244 update problem when unexected additional tag parent/sibling petitions rows exist
improved my free space test code and applied it to the old v243->v244 free space test (it'll now test free space on your temporary path and report problems appropriately)
to improve log privacy and cleanliness, and to make it easier to report profiles, db/pubsub profiles now write to a separate log file named appropriately and labelled with the process's start time
profiles are more concise and formatted a little neater
across the program, three-period ... ellipses are now replaced with their single character unicode … counterpart (except to the console, where any instance of the unicode ellipsis will now be converted back to ...)
cleaned up some log printing code
cleaned up some experimental static serialisation code, still thinking if I like it or not
started on some proper unit tests for hydrus serialisable objects
fixed and otherwise updated a heap of unit test code to account for the v245 changes
cleaned up a bunch of old database table join code
started some databse-query-tuple-stripping code cleaning
fixed a v244 update problem for clients updating from<v238< li=""></v238<>
some misc stuff:
if you start editing many subscriptions, cancelling a single dialog will break the chain of loading new dialogs
reduced some redundancy in regular client file import
improved how the dialog for selection from a list of strings works
if the client ever merges one directory to another (such as in external file locations migration) and any files fail to merge, the source will no longer be deleted
created new flexible bandwidth tracking and ruling objects
updated how repository updates work, splitting the old explicit and self-contained content update package system to a new implicit definitions/content split system and an improved one-step-sync metadata propagation
updating now takes approximately 23% as much bandwidth as before
update files are now stored in client_files and server_files like any other file (client_updates and server_updates folders will be deleted on update)
the server will print update generation info to its log
unfortunately, updates cannot be converted, so a complete resync of update files is required. the smaller update size and better bandwidth controls should mitigate the problem somewhat
the server has been compacted across all content types--its mappings db file should shrink about 12%
due to new service-specific ids, server.master.db should increase in size, typically about 50%
harmonised how GET and POST/response args are built and parsed across the network
server administration initialisation is now simpler, done with 'init' registration key
leading and trailing spaces are now removed from both the namespace and subtag components of namespaced tags, meaning 'title: blah' will be collapsed to 'title:blah'. tag repositories will clean their existing tags on update
invalid serverside tags will be replaced with valid placeholders on server update
refactored, harmonised and simplified some server request code
Eris makes a triumphant return to the root welcome page ('/' request of any service) with improved self-description text as well
updated how bandwidth is tracked and overseen
all requests now consume bandwidth
fewer requests are actually constrained by bandwidth--at the moment, it is only update files and file/thumbnail downloads, as these represent the overwhelming majority of bandwidth consumption and are not at all critical to service operation--this may change in the future, but it suits our purposes for now
bandwidth tracking code is more sane across the board
the server's administration service now tracks server-wide bandwidth as it happens
service and server-wide bandwidth rules are consulted as soon as the request begins
improved some server response rendering
permissions are more flexible and content-specific
improved how file repositories check and process file requests
created a gui control for managing bandwidth rules
updated the serverside service object
the serverside service object now contains bandwidth rules and tracking
updated how the server deals with services on a db level
refactored and cleaned a ton of server db code
updated how services are edited over the network
updated how the server associates its services with its http pipeline
converted clientside server service management gui to the new panel system
updated gui code for clientside server service management
converted clientside server service management db code to the new system
improved how bandwidth errors are reported
updated the account type object
the account type object now contains bandwidth rules and a more flexible permissions system
updated how the server deals with account types on a db level
converted clientside server account type management gui to the new panel system
updated gui code for clientside server account type management
serverside account types are now fetched from a cache, reducing memory sprawl
updated the account object
the account object now contains a bandwidth tracker
updated how the server deals with accounts on a db level
updated the clientside server object
the clientside server object now contains bandwidth rules and a tracker and has improved error management, recovery, and reporting
updated how the client deals with services on a db level
improved how serverside bandwidth errors are caught
all clientside services start with a 50MB/day bandwidth limit
existing repositories will get a 250MB/month, 50MB/day default bandwidth limit, just to help us get over the hump--see the release post for info on how to get all the updates anyway
updated manage services dialog extensively
service account registration now occurs through a simple button on the normal clientside service edit panel
all services can now be renamed
updated the content processing pipeline
prepared code for future merging of file and tag repositories
added future support for pend-petitions for files and mappings and simple creation permissions for tag siblings and parents
the clientside content processing pipeline now operates inside a single database transaction, reducing a great deal of previously redundant hard drive activity
the serverside content processing pipeline now creates per-service timestamped content definitions
the clientside content processing pipeline now maintains and appropriately consults a cache for server definitions
pre-process disk cache is more intelligent
updated review services to match the new service objects
service review panels now show more information about error state and so on
service review panels should now update as soon as services change
you can now force sync repositories from review services
you can now pause/resume repositories from review services
you can now export repository update files from review services
you can now import repository update files from the services menu
repository thumbnail download now uses a cache for faster thumbnail ownership testing
culled a lot of old code and experiments
deleted all the old messaging depot code and db table cruft
removed optimised petition processing
serverside deleteorphans is temporarily disabled
hydrus client-repository relationship no longer supports news
removed the 'stats' admin service call--it will come back as a account review page
clientside clear orphans is temporarily disabled
clientside local file/thumbnail server is disabled for now
custom service 'messages' for the root page are no longer available
some things are not working yet--they will be back in soon
content presentation on review services
service reset, other advanced content service controls
ipfs controls on review services
local booru controls on review services
most service-specific panels on manage services
petition resolution
serverside account modification, including banning
finished updating all main gui menubar and thumbnail menu code
all brackets, braces, parentheses, and single and double quotes are now ignored when matching search text to tag. inputting 'mercy' matches 'character:angela "mercy" ziegler' and entering '[[[intensifies]]]' matches '[intensifies]'
'*' searches will now return no autocomplete results, rather than trying to load absolutely everything
made wildcard searching significantly more permissable--it now implicitly applies a '*' to the beginning as well as the end of your search input
the main gui's notebook pages will now be disabled while a session loads
might have fixed a first-boot layout issue--otherwise added a layout entry to the debug menu for further testing of this problem
improved progress layout on file import dialog
created a more efficient way for threads to update gui elements
the file import dialog uses this new update system and parses lots of small files much faster as a result
the edit import folder dialog will now complain if you try to put in an import path that includes the install or db directory
ffmpeg mime parsing now catches and reports audio formats without any hassle
thread downloader no longer fetches file extension in filename tag 'filename:blah' instead of 'filename:blah.jpg'
changed png default zoom rules to copy jpg--the unusual zoom as default was more confusing than helpful
updated sqlite for windows--should be a decent bit faster
deleted a lot of old code that'll never be needed again
optimised 'exact match' similar file queries to run a lot faster
optimised similar file queries in general, particularly for larger cycle queries
optimised hamming distance calculation, decreasing time by roughly 45%!
the similar files tree maintenance idle job will not trigger while there are phashes still to regenerate (this was redundantly and annoyingly blatting the new dupes page as soon as phash regen was paused)
removed similar files tree maintenance entry from db->maintain menu, as it can be done better from the new dupes page
adjusted the duplicate search and file phash regen progress gauges to reflect total number of files in cache, not the current batch job
all maintenance jobs on the duplicates search page will now save their progress (and free up a hanging gui) every 30 seconds
the duplicates page's cog menu button now lets you put phash regen and tree rebalancing on the normal idle routine, defaulting both to off
the cog menu can also put duplicate searching on idle time!
added a very rough 'just show me some pairs!' button to the dupe page--it is pretty neat to finally see what is going on
I may have reduced the memory use explosion some users are getting during file phash regen maintenance
wrote an unclose_page action and added it to the shortcuts options panel--it undoes the last page close, if one exists. ctrl+u will be the default for new users, but existing users have to add it under options
added ascending/descending sort choices for width, height, ratio, and num_pixels
the client can no longer talk to old http hydrus network servers--everything is now https
in prep for a later network version update, the client now supports gzipped network strings (which compress json a lot better than the old lz4 compression)
fixed gif rendering in the Windows build--I forgot to update a build script dll patch for the new version of opencv
the export file dialog's neighbouring .txt taglist file stuff now allows you to select a specific combination of tag services
if an hdd import's original file is due to be deleted, any existing neighbouring taglist .txt file will now also be deleted
the inter-thread messaging system has a new simple way of reporting download progress on an url
the handful of things that create a downloading popup (like the youtube downloader) now use this new download reporting system
sankaku seems to be 503-broke due to cloudflare protection--I have paused all existing sankaku subscriptions and removed the sankaku entry for new users (pending a future fix on my or their end)
I've also removed danbooru for new users for now--someone can fix the long-running sample size file issue in the new downloader engine
removed unnamespaced tag support from the hentai-foundry parser--maybe someone can try to fix that mess in the new downloader engine
menubuttons can now handle boolean check menu items that are tied straight into hydrus's options
menus launched from the newer frame and dialog code will now correctly display their help text on the main gui frame's statusbar! (at least on Windows! Linux and OS X remain borked!)
fixed a unicode error parsing bug in the gallery downloader
the server stop (or restart) command now correctly uses https!
the server test code now works on https as appropriate
fixed the 'setnondupename' problem that was affecting 'add' actions on manage subscriptions, scripts, and import/export folders
added some more tests to catch this problem automatically in future
cleaned up some similar files phash regeneration logic
cleaned up similar files maintenance code to deal with the new duplicates page
wrote a similar files duplicate pair search maintenance routine
activated file phash regen button on the new duplicates page
activated branch rebalancing button on the new duplicates page
activated duplicate search button on the new duplicates page
search distance on the new duplicates page is now remembered between sessions
improved the phash algorithm to use median instead of mean--it now gives fewer apparent false positives and negatives, but I think it may also be stricter in general
the duplicate system now discards phashes for blank, flat colour images (this will be more useful when I reintroduce dupe checking for animations, which often start with a black frame)
misc phash code cleanup
all local jpegs and pngs will be scheduled for phash regeneration on update as their current phashes are legacies of several older versions of the algorithm
debuted a cog menu button on the new duplicates page to refresh the page and reset found potential duplicate pairs--this cog should be making appearances elsewhere to add settings and reduce excess buttons
improved some search logic that was refreshing too much info on an 'include current/pending tags' button press
fixed pixiv login--for now!
system:dimensions now catches an enter key event and passes it to the correct ok button, rather than always num_pixels
fixed some bad http->https conversion when uploading files to file repo
folder deletion will try to deal better with read-only nested files
tag parent uploads will now go one at a time (rather than up to 100 as before) to reduce commit lag
updated to python 2.7.13 for windows
updated to OpenCV 3.2 for windows--this new version does not crash with the same files that 3.1 does, so I recommend windows users turn off 'load images with pil' under options->media if they have it set
I think I improved some unicode error handling
added LICENSE_PATH and harmonised various instances of default db dir creation to DEFAULT_DB_DIR, both in HydrusConstants
improved how the client analyzes itself, reducing maintenance latency and also overall cpu usage. syncing a big repo will no longer introduce lingering large lag, and huge analyze jobs will run significantly less frequently
the analyze cache will be reset on update, so you will have one big round of analyze the next time you maintain, and then you are good
added data structures to support auto-discovery of duplicate files
improved how some similar files maintenance occurs
flushed out duplicate status reporting
added a new page type, currently under pages->search pages->duplicates, to handle duplicate discovery and filtering
created a gui skeleton for the new duplicates page
started some handles and update code for the new duplicates page
wrote a new txt file in the db dir about the new emergency extract scripts
wrote an emergency extract script to migrate subscriptions to a new db
wrote an emergency extract script to migrate options to a new db
the trash clearing daemon now runs in the foreground, and a little of its code is improved
the trash clearing daemon now makes a popup message when it does work
the server's ssl keys are now set to read-only on Windows and user read-only only (i.e. chmod 400) on Linux and OS X on creation and update
added a explicitly unicode popup message to the debug test
fixed some network error catching code that was using Windows-only error codes
converted more of the thumbnail right-click menu over to the new system
finished up similar files search data maintenance code
similar files search data maintenance will now run during idle time
similar files search data maintenance can be called from database->maintain menu
the crowded database->maintenance menu is now split into maintain, regenerate, check
improved the similar files tree generation code, speeding searches significantly
wrote a new listctrl class to handle more complicated objects and also sort by underlying data
the new listctrl now handles object name non-duplication
cleaned a bunch of crap old listctrl code
manage export folders now uses the new listctrl
manage import folders now uses the new listctrl
manage subs now uses the new listctrl
manage scripts now uses the new listctrl
options media viewer options now uses the new listctrl
file import status panel now uses the new listctrl
the new listctrl can now quickly fetch item index from the underlying object
the file import status panel should now cope with extremely huge lists a bit better now!
multiple parsing child nodes can now import from/export to clipboard as lists
export folders now have names, so you can have multiple export folders pointing to the same path! existing export folders will get their path as their name, but this can be changed no prob
cleaned import/export folder dialogs
cleaned import/export folder dialog workflow
several misc import/export folder improvements
hydrus servers are now exclusively https with self-signed certificates
hydrus servers now create server.crt and server.key in their db folders for SSL--these files will be backed up along with everything else on an admin backup command
system:hash now ignores the file domain and any other predicate. it now returns very quickly, no matter the context
improved system:hash search logic
all the awkward choice dropdowns in system predicate panels are replaced with radioboxes
improved system:rating panel grid layout
wrote a better subclass of radiobox to handle more data
moved first half of thumbnail menu to new menu system
cleaned up a little thumbnail menu logic
improved the different ways services are added to thumbnail menu
thumbnail 'select' menu is logically cleaned up and allows for better file domain selection
the thumbnail menu's copy files and copy hashes to clipboard will now send them ordered (they were previously pseudo-random)
added 'paths' to the share->copy thumbnail menu for copying multiple files' paths. these are also ordered.
if the popup message manager does not have any errors, it will no longer unhide (which can annoyingly raise the main gui window) when the gui window does not have focus
removed some old redundant error reporting stuff in popups
improved and quietened some some mime detection failure code, sped up mime failure loop in all cases
massively simplified and atomised how new serialisable-object management panels can save their data
the manage subscription dialog now saves in a single, faster transaction
the manage script dialog now saves in a single, faster transaction
reduced redundant index work from analyze jobs
improved tag parse error handling
fixed media removal rules when deleting from the 'all local files' domain
polished and clarified some of the help's tag schema
added 'all local files' service that spans all local file domains
improved trash service code
trashed files now report their trashed timestamp in right-click menus
trash views will sort oldest/newest by the trash timestamp
renamed 'local files' to 'my files' to reduce initial confusion
if you don't like 'my files', you can now rename the local files service under manage services!
improved how some local file service metadata is stored
cleaned and possibly fixed up some delete code
cleaned up a bunch of misc service and file service code
the client is more intelligent about what local files are -- you can now 'open externally' trashed files, for instance
on multiple monitor systems, the new sizing system now bounds itself by the appropriate monitor's dimensions (previously, it was always consulting the primary, I think)
if an expansion event causes a frame to grow off screen, the new sizing system will now attempt to move it up and left so it is completely visible
fixed an important bug in the specific service autocomplete cache that was leading to several kinds of miscount--please regen your autocomplete cache at your convenience
the client can now post additional messages on boot (you'll see one!)
improved how errors with unusual characters are applied to failed import file status objects
left double-click on the main gui greyspace now opens the new page chooser as well
restored session pages now recover more gracefully from missing services
shortened the 'stop after this many files' phrase, which was mis-sizing downloader panels
changed several bits of old jank in the 'import options - files' collapsible. it is also now thinner
misc gui improvements
updated more of the menu system code
the selection tags box now sizes its height more reasonably
fixed 'check now' and 'reset cache' buttons on edit sub dialog
subscriptions report better file import status on their popup
in prep for a network https upgrade, the client can now detect and escalate to https when making connections to hydrus services
import/export to png and clipboard now supports multiple objects at once!
rewrote the manage subscriptions dialog to work on the new panel system
the new manage subscriptions dialog has a listctrl and a sub edit dialog
the new manage subscriptions dialog has the same add/export/import/dupe/edit/delete buttons as the manage scripts dialog
subscriptions are now importable/exportable, including en masse with the new multiple object import/export support!
the new manage subscriptions dialog has retry failed/pause-resume/check now/reset buttons for easy mass subs management
the edit subscription panel has a bit of a layout makeover
the edit subscription panel now updates itself as its buttons are hit
the edit subscription panel disables buttons that are not applicable
subscriptions can now be renamed!
cleaned some misc subscription code
relabelled initial and periodic file limit in the subscription edit panel
middle-clicking on the main gui's greyspace (e.g. to the right of the notebook tabs) will spawn the new page chooser!
created a simple HydrusRatingArchive class--will do more with it in future
added ffmpeg, python, and sqlite versions to the help->about window
harmonised daemon code
added a new class of daemon that will not fire while a session load is occuring
subscriptions, import and export folders, and file repo downloads now use this new daemon
cleaned the way background daemons check for idle
expand/collapse panels now notify the new kind of toplevelwindow that a resize may be needed when they switch state
time deltas (like on subs edit panel or a thread watcher) now render more concisely ('7 days' instead of '7 days 0 hours')
serialisable object png export panel now has a width parameter
fixed a bug where tags that begin with unicode digits were accidentally identifying as numbers for the purposes of sorting and throwing errors on convert fail
the media viewer can handle some more unusual content update combinations--for instance, if it cannot figure out which media to show next, it will revert back to the first image rather than displaying an undefined null mess
updated and cleaned a bunch of my old misc encryption code
fixed the 'add' buttons on the import files dialog
fixed linux manage tags text input
reduced incidence of linux media viewer post-manage tags key event swallowing
fixed an issue where if the manage tags dialog was launched from the media viewer while a hover window was displaying, the main gui would often be raised when the manage tags frame was closed, annoyingly obscuring and de-focusing the underlying media viewer
fixed manage tags action workflow when no valid tag choices exist
entering a tag petition reason now has several common 'suggestions' for quick entry
removed ffmpeg binary from default linux release (as basically every linux has a decent ffmpeg by default)
fixed the incorrect ffmpeg version for os x
added an option to options->media to prefer to use the system ffmpeg over any in the hydrus bin directory
fixed linux arrow key navigation of the page picker dialog
cleaned up the page picker dialog's gross old code
the edit file lookup script panel now has a script management control on its test page to better report on and control tests
scripts will new correctly attempt to decode unicode and other encoded text in responses
if non-text data is accidentally fetched in the file lookup script panel's test page, it is now caught and a small summary of that event is printed to the text box instead
added the same non-text catch to the edit link node panel
improved how some script errors and status updates are handled so the new test window script management controls will see and report more useful information
removed 'restart' option from linux for now--looks like a bug in pyinstaller
improved how the new GET request read reattempt works
the action choice workflow in the manage tags dialog now merges decisions for multiple tag entry events
the button dialog that pops up on the new merge manage tags workflow has button tooltips to better describe the proposed action's tag and file combinations
the manage tags dialog only requests one petition reason for an above merged multitag petition event
perceptual hashes are now stored in the cache db (moved from the preferably leaner main db)
the database now supports multiple perceptual hashes per file
fleshed out the perceptual hash vptree generation and maintenance code
added option for main gui title to options->gui--it even updates live
added unicode path support when importing serialised pngs
added unicode path support when exporting serialised pngs
exporting a serialised png now reports success via the export button, which will temporarily relabel itself
added discord links to help files and help->links menu
when a GET network connection fails during the read phase due to an unexpected timeout, the request will be reattempted a couple of times, like failed connection initialisations currently are
escape key now closes scrolledpanelframes (review services or import status frames)
manage tags dialog and frame now closes due to escape key correctly
fixed a size calculation bug that was not initially drawing scrollbars on manage options and any other listbook-containing scrolling panel when the screen is too small to show the whole dialog
undo menu now works on the new menu system
cleaned up some bad gui-thread interaction in the file import dialog
fixed file->restart in the built release, including when the install path includes a space
the trash service no longer records which files it has physically deleted, as this information is not used and is redundant compared to the existing local files' deleted record (existing records will be deleted on update)
the subscription daemon will wait 90 seconds after boot before triggering--quitting the client before then will result in subs not being checked
created skeleton of db tables for faster dupe search
wrote out search algorithm for faster dupe search when the rest is ready
updated search algorithm and skeleton to support a future multiframe (i.e. gif/video) similar files comparison
the os x release now has 'client' as the main client executable
the os x release now includes the server, under the 'server' executable
added studio (128,0,0) and meta (0,0,0) default namespace colours
the 'add all' button on the file lookup tag suggestions panel now will only ever add--it won't remove/rescind pend
the password system now supports non-ascii input (be careful though, as even a subtle change in keyboard encoding that nonetheless may have the same visual characters will likely be considered a different password)
fixed the 'nonetype has no dtype' rendering problem introduced by last week's 16-bit channel fix (this mostly affected static gifs)
fixed non-null ratings changes in the numerical ratings dialog
fixed culling and adding variables not initialising on the edit html formula panel
fixed the htmlparser attribute fetcher to deal with both single value attrs ('id') and multiple value attrs ('class'). in the latter case, the many values will be joined up, as how they appear in html
tweaked disk cache timings a little more to account for more scenarios--it now also reports itself to the shutdown splash screen
finished png object sharing system, created some gui for it
switched the top half of the new png export to wx code, which can render with prettier system fonts
you can now 'export' parsing scripts to png from manage parsing scripts for easy sharing
you can also 'import' parsing script pngs in the same dialog!
the file lookup tag suggestions panel now listens for media update events (so if you browse the media viewer with manage tags open, it'll keep up with the current file)
added a 'add all' button to quickly add all tags from file lookup suggested tags panel
created a 'script management' control for file lookup suggested tags panel and added some script text status updates for it (progress gauge doesn't do anything yet)
added basic 'cancel' support to script management control--mid-http cancel support will come with the gauges
added url support to thread notification objects, and hooked script code into it
added a url menu button to script management control, so you can launch any parsed urls the script found in your browser
html parsing formulas now support positive and negative front and end character culling
html parsing formulas now support prepending and appending arbitrary text
added some more pretty text to the html formula summary to explain when they do the new culling or adding
script 404s and other network errors are now caught neatly and reported
link node 404s and other network errors are now reported and recovered from
fixed favourite file lookup script selection on initialisation
fixed parsing veto test to include membership of search string in result, not just exact match
fixed html formula tag attribute fetching
updated os x release to python 2.7.10
fixed os x about window
fixed v231 linux release image rendering crash
updated linux release to wx 3.0.2.0
updated linux release to opencv 3.1.0
fixed rendering for 16-bit-per-channel images
fixed a potential out-of-order settagboxfocus event issue on panel initialisation
created a 'menubutton' control and switched existing code over
created some 'nullipotent panel' dialog code to handle some new stuff
edit html formula dialog can now be launched from edit content node panel
edit html tag rule dialog can now be launched from edit formula panel
edit formula panel test now works
edit content node panel test now works
edit script panel test now works
html formula now filters out missing content rather than complaining
misc parsing work
fixed some listctrl resize columns to be more helpful
attempting to size a resizing listctrl column will now move the resizing column to the last column, which will avoid the flickering scrollbar sperg-out of previous
attempts to resize the final column of a listctrl while it is the resizing column will be silently vetoed, which will avoid more resize event flickering
frame location options panel now allows for negative position coordinates (for multi-monitor setups)
all the new resizing panels now handle certain size updates in a more unified and reliable way
fixed an issue with hover windows' mouse position check breaking during media window init/shutdown edge cases
avc1 mp4 support added
ftypFACE mp4 support added
ftypdash mp4 support added
mpegts mpeg support added
to help migration, paths are now only stored as portable (i.e. relative to the base path) if they are beneath the base path (previously, this was true for any path on the same partition, permitting PITA '../../my_files' portable paths)
to help migration, portable paths are now relative to db_dir, not installation base_dir (existing client_files_locations, ideal client_files/thumbs_locations, export_path, and HTA paths will be updated)
started work on cleaning up button code across the program
created a better way to bind menu events that shouldn't suffer the id overflow bug
started work on replacing the old id_to_action_cache menu mess with the new system
too-many redirect exceptions are now richer and caught more sensibly
circular redirects are caught as soon as they occur
reduced sqlite cache size (with the new disk cache, this is now less important)
client.py is now included in the source and windows frozen releases
both the client and server now use standard command line input and will produce a proper help with a -h switch (although the 'windowed' frozen client executable can't print back to console)
both the client and server now support a -d or --db_dir to set a db directory outside of the install directory. you can now run multiple clients off the same install!
critical boot error reporting is more reliable
if the admin port is in use on server boot, the error is handled better and the program will quit more easily
fixed mime parsing for some unusual webms
added support for even more unusual webms
added support for SonyPSP mp4s
fixed system:hash when searching for a non-existent non-sha256 hash
fixed layout of the 'dismiss all' popup button
preview windows will no longer update in the background if the 'hide preview window' option is set
fleshed out a bunch of parsing script engine and gui framework and added an 'under construction' entry to the services menu. feel free to play around with it!
results will build faster due to an improvement in how tag rows are fetched
results will build faster due to an improvement in how tag strings are fetched
incidence taglist sorting now secondary sorts by lexicographic in the 'correct' direction (a-z for desc, z-a for asc)
all listctrls now support ctrl+a to select all
cleaned up some superfluous and possibly buggy canvas zoom calc when using the open externally button
the zoom_switch event will now reset the drag coordinates (recentering the image) if the resultant zoom fits into the canvas frame
the mouse cursor hides itself more quickly on media drag on Windows (so warppointer jitter is hidden)
the popup message manager will be careful about switching from hide to show while the parent gui is minimised on windows, which should reduce the grey box problem
the popup message manager will specifically re-layout on a transition from hidden to shown to stop the 'crushed into a corner' layout problem that would sometimes happen here
popup message manager will now consider a minimsed gui as unfocused for the purposes the of the focus BUGFIX option
added a new delayed popup message item to the debug menu for testing minimised popup creation
vacuum maintenance period option is moved, reset to larger default of 30 days
'last session' will now always be updated on client close, even if it is not the default session
system:numtags is now much faster when applied to 'local files' or a file repository
system:numtags now correctly counts same-tag-different-namespace tags as distinct (for instance, [page:1, chapter:1] was previously being counted as only one)
refactored fast db integer iterable access code into a context manager
media result building is faster
added namespace-grouped incidental tag sorting
fixed the OpenCV image loader for monochrome images
fixed a thread interaction issue when drawing popup messages
popup messages should no longer flicker while static
popup debug test is richer
fixed editing of some taglists such as in explicit tags and import tag editing
SSL EOF errors are now caught by the networking engine
rewrote the static image rendering and caching pipeline -- images are now resized on the fly, and only the master image is cached
all image rendering and zooming is faster and consumes less memory
image rendering now obeys the zoom quality options in the 'media' options page!
static image zooming will take advantage of OpenCL (video card acceleration) wherever available
added an option to the 'media' panel to allow fast but potentially unstable opencv image loading
fixed the tumblr gallery downloader (tumblr put an extra character in their API response, wew)
the debug code profiler now prints more information
cleaned and updated reducing lag help page to match new profiler
'recent' suggested tags are now sorted by recency
the thread watcher now checks url history as well as md5 match to compensate for cloudflare optimisation making for unreliable api and causing dupe downloads
fixed the popup message manager's bad minimise recovery
added an option to automatically 'hide' the popup message manager on main gui minimise (which has patchy multiplat support--some mindow managers don't do this automatically, some do but break when you force it)
added an option to automatically hide the popup message manager on main gui dofocus, which may help with window managers that minimise to the system tray, which wx cannot detect
added a 'make some popups' test job to the help->debug menu
siblings will now present in a more service-specific way
many gui elements that display tags are now aware of their tag service for the purpose of collapsing siblings
simplified a whole load of the siblings code
in some conditions, media will load faster
autocomplete tag censorship will now also apply on in a service-specific way in 'all known tags' queries
another remote connection reset exception is now properly caught by the network engine
the embed button will now draw the correct background colour behind transparent thumbnails
the animation scanbar will no longer scan if it has not previously experienced a mouse_down event--it could sometimes inherit this status from a previous media filter or embed reveal, resulting in undesired instant scan and undefined animation canvas behaviour
advanced content update panel will no longer list 'copy' as an action if 'local tags' is the only tag service
fixed a bug when performing a 'go!' action in the advanced content update panel when 'local tags' is the only tag service
created a 'raw url' downloader page that just downloads urls and tries to import the result. it has a 'paste urls' button to make mass import of a list of urls easy
fixed an options update bug when updating to v221 from any version before v220
added support for 'ftypqt' quicktime (usually .mov) video
embed button now uses system gui colours
embed button now puts the thumbnail of the media, if one exists, behind the 'play' button
sped up an inefficient existing mapping check that was slowing new pending mappings for popular tags
'last session' will no longer be listed on the gui session delete menu
cleaned up the main gui's initialisation events--a sizing bug often triggered after system reboot may be fixed
popup messages are initialised in a safer way
popup messages are dismissed in a safer way
popup messages will hide/restore themselves more reliably when the main gui window is minimised/restored
the pending popup message queue is now regularly purged of already deleted messages
new popup messages will no longer raise the main gui window to the top
subscription http errors during the gallery sync phase are now caught and handled gracefully, with exact error text written quietly to the log
network timeouts during successful response read are caught and converted to a hydrus network exception that will be caught and handled more reliably up the chain
the client's upnp daemon will now silence upnp mapping errors that are due to the router being too busy or full or any other unknown errors. a simple statement about the error and an instruction to explore the problem with the manual upnp manager will be written to the log
finished flexgrid refactoring
the new automatic flexgrid creation detects subsizers and lines them up more accurately with standard controls
wrapped the different sections of the 'speed and memory' options panel into staticboxes
wrapped the misc crap up top the 'tags' options panel into a neater staticbox
taglists with unusual tags will copy them more reliably and present fewer invalid menu options
fixed the 8chan thread parser for the new sha256 file urls. legacy links should still work!
created a 'x recent tags' suggested tags control and all the db and so on to go with it
recent tags defaults to off--turn it on under options->tags
replacing the previously basic zoom_in_to_canvas, the zoom options now support 100%, max regular zoom, or canvas fit for scaling up and down and for the media and preview windows!
cleaned up some garbage zoom code
refactored and harmonised how default zooms are calculated
harmonised and improved how canvas zooms are set
zoom_switch now works for flash
if it looks like the last instance of the client did not shut down cleanly, a new client will now present a dialog to choose whether to attempt opening the default session or just a blank page.
all listctrls across the program have better secondary sort
added an isatty() stub to the HydrusLogger for any unusual error handlers wanting to call it (youtube parser pafy was doing this)
removed some accidental (123) counts from some predicate menu and clipboard rendering
refactored a bunch of redundant flexgrid creation code
fixed collection selection show action lookup for the preview window
files added through the normal import dialog or import folders will be not be fed into the import pipeline if it looks like they are already in use by another process
(hence setting an import folder to a browser download destination should be more reliable)
rewrote some critical phash generation code that was running extremely slow when importing large pngs with transparency
all listctrls that have an edit button now also trigger the edit event on item activate (e.g. double-click/enter key on an item)
added zoom in/out/switch to edit shortcut action dropdowns, can't promise it works everywhere
'stopping' a gallery page search will now correctly make sure the search queue is unpaused so it can move on to any subsequent search
the way excess messages are added to the popup message manager is quicker, improving gui responsivity on message spam
fixed a potential race condition when a file import occurs at the same time as client_files rebalancing
fixed a potential race condition when a check_file_integrity db maintenance occurs at the same time as client_files rebalancing
the client will no longer suppress some core debug stuff
fixed an invalid event handler on canvas close bug
fixed a long-time wx locale issue
fixed a misc main gui parent assert issue
fixed some invalid non-wx-thread calllater calls
cleaned up some inartful showmessage calls
cleaned up some datacache init code
fixed some shutdown event handling
generally improved and fixed in some cases how threads signal job status
improved some thread-interaction timings
improved how files and thumbnails are deleted
file imports add their files to the client_files structure in a more sensible way
wrote framework for per-mime zoom options--mimes now have separate show actions for the media viewer and the preview window and zoom in to fit
added 'half/double zoom' to limit a mime's zoom to only 25%, 50%, 100%, 200%, 400% and so on (png defaults to this)
added placeholders for zoom in/out algorithm quality, but they don't do anything yet
added a listctrl to edit all this to options->media
added a scrappy zoom values option to options->media
cleaned up a bunch of zoom code
added video/mpeg support
fixed some mime layout stuff
duplicate tag predicates across the 'all known tags' space are merged into more accurate (3-5)-type counts
refactored and simplified how predicate counts are merged
if launched from the manage tags dialog, the advanced content update dialog now correctly filters hta imports to only the files the manage tags dialog was launched with
the advanced content update dialog has a bit of better text to explain this
in prep for a complete rewrite of the image rendering pipeline, merged the fullscreen and preview image caches and cleaned up some related code
added resume recovery to the v215->v216 update code for users for whom this update was interrupted
directory creation is improved across the program
fixed the optimised merge-move file code, which was forgetting to clean up the source when no move was needed
the optmised merge-move directory code will now be much quicker in some situations
all file moves across the program should be less stupid-error prone, and repeating/resuming many maintenance or update tasks that require a lot of moves will be much faster
manual exports, which use copy rather than move, should also be more sensible and faster when repeated
improved database exception rendering, which in some cases was being truncated
related tags control now updates on new media events (i.e. if the parent media viewer scrolls to different media)
related tags also initialises with suggestions and refreshes the list on media change
related tags now properly filter out dupe suggestions caused by siblings
went over all the gui colours in the client, cleared some redundancies and replaced all the static whites and blacks with appropriate system defaults or chosen custom colours
full size thumbnails can now also be stored in a different location, like resized thumbs, under options->file storage locations
fixed false positive shutdown maintenance checking due to vacuums projected to take longer than the given maintenance time
fixed false positive shutdown maintenance checking due to sqlite_stat1 creeping in
pasting tags or otherwise editing many in at once in the manage tags frame will immediately commit all the changes in one db transaction, rather than one for each tag laggily in turn
removed 'import tags' from file menu--this advanced stuff is now done in and better left to the advanced content update dialog
restoring from an old db backup with a simpler db structure will no longer create conflicts
deleting currently rendering files from the trash should be slightly more reliable
fixed some high-res video streaming thread scheduling problems with the new video renderer
fixed a cause of huge memory bloat with greatly upscaled videos
to improve seek response time, streaming buffer for the video renderer has a much smaller cap
renderer throttling calculations are more sensible and reliable
the video renderer discards frames to save time if they happen to still be in its buffer
the video scanbar now displays the current frame buffer around the caret!
video canvas now recycles the same frame blit bitmap to save a little time
wrote a prototype related-tags suggestion 'service' for the suggested tags control
you can turn it on and set some options for it at options->tags, feedback would be appreciated
munged increasingly complicated components of the suggested tags control into a clean and proper self-hiding panel
fixed a very important bug that was failing to filter visible thumbnail fetch on mass select and thus massively slowing down the client on large ctrl+a-like operations
open externally button now shows the media's thumbnail, if it has one
open externally and embed buttons now use hand cursor
the simple path tagging dialog panel now cuts off .jpg extensions from filenames on filename parse
if the string component of a generated file export path already ends in the correct .jpg extension, a second will not be added
ipfs unpin will no longer break if the file was already unpinned
the hydrus server now gives filename (for a file save as dialog) correctly on a content-disposition header (this affects the client's local booru as well)
the secondary sort can now be a namespace or rating sort
fixed some potential init problems with some dropdown controls
an edge case object-missing cache retrieval bug is fixed
updated openssl on os x, which might have fixed some problems
updated python on windows, which updated openssl and a bunch of other stuff
updated sqlite on windows
updated linux dev machine to ubuntu 16.04, so a variety of packaged libraries are updated
fixed auto server setup if the client is launched from a windows cmd window
video rendering pipeline rewritten to be much smoother
canvas video render timing rewritten to be more frame accurate and smoother
video rendering pipeline will deal with 100% CPU rendering bottlenecks much better
videocontainers will rush to render towards clicked cursor and then slow down
videocontainers will stop rendering as soon as they are replaced on zoom
videocontainers will stop rendering as soon as their parent canvas is closed
added a video buffer size option to options->speed and memory
client_files subfolders are now split into f, t, and r groups for files, full size thumbnails, and resized thumbnails
added an option to override resized thumbnail storage location under options->file storage locations
added secondary sort option to options->sort/collect
fixed a bug where automatically pended tags could exist on top of current tags, forming redundant (1) (+1) situations
fixed a bug when sorting by namespace and a respective namespaced tag has a sibling that de-namespaces it
relatedly, namespace sorting will now filter correctly by collapsed siblings when those sibling pairs' namespaces differ
and collecting will now collect correctly with sibling pairs where the pairs' namespaces differ
simplified how the server caches its account sessions
improved how the server refreshes specific account sessions
the server now refreshes cached session accounts immediately when an admin actions an account type
neatened a little server db account fetching code
fixed file repository petition denial
added a better catch for upnp addmapping error when the mapping already exists as a port forward
the media canvas will no longer accept any mouse or key event if a menu is open anywhere in the program (this circumstance is difficult to pull off, but does cause a crash)
wrote a new resizing dialog 'edit' class for simple resizing dialogs
added comprehensive frame size and position options for the new system to the gui options panel
moved review services frame to the new sizing system
windows that initialise maximised will correctly return to their last remembered size and position on a restore event
maximising a window by dragging it to the top edge of the screen should remember last position as the initial drag start position more reliably
positioning code is a little safer
fixed some missing recalculation of best/min size for wx.notebooks after page change
fixed missing recalculation of scrolledpanel's virtualsize after child wx.notebook's page change
fixed bad parentage for file import status frames
hid file import status button in manage import folders and subscriptions dialogs for non-Windows, as this is very broken, and the parentage fix wasn't enough
improved fuzzy padding on size calculations
refactored and cleaned and harmonised a bunch of the new window resizing code
suggested tags - favourites tag entry in options is now a live autocomplete dropdown
cleaned suggested tags - favourites layout in options
suggested tags listbox now sets its width to exactly fit its tags
improved workflow logic of removing/petitioning siblings and parents (shouldn't get stuck in loops as much now)
tag listboxes will update when tag siblings change
the 'auto-replace siblings' state on manage tags will no longer incorrectly apply to removal actions
import status caches now display errors in a more straightforward way
errors sent to import status caches are now also printed to the log
simplified how database exceptions are caught and displayed
database exceptions now preserve the original exception type
fixed db-side traceback line spacing in database exceptions
improved general database exception rendering
fixed imports for videos with negative start time
deleting videos from the trash that are currently rendering should be more reliable
crash.log now goes to the db dir, unless that isn't determined yet or is unwritable, in which case the traceback goes to console
created a new tag listbox for the new suggested tags control
added a extremely basic and prototype suggested tags control for favourite tags to options->tags and manage tags dialog
off-screen position detection is now more lenient to account for window managers that position slightly off screen to cut off border
new dialog sizing code adds a little more fuzzy padding on all min size calcs, reducing superfluous scrollbars
hydrus's custom listbook now informs parent scrollable panels of need to recalc scrollbars on page change
the new flexible dialog and frame now catch these events and will expand their size if they need to and have the space
the client options dialog now works on the new sizing system--it will automatically resize when you change pages
some frame resize save event code is improved
the media viewer is no longer aggressive about claiming focus
stacked manage tags panel buttons to allow for thinner dialog
misc dialog cleanup
corrected some bad logic that was excluding transparent gifs from the new thumbnail handling
all gifs and pngs will have their thumbnails regenerated on both the client and server, taking advantage of the recent thumbnail improvements
fixed a bug if you click cancel when choosing an hta path to sync a tag service with on manage tags dialog
fixed a bug where noneditable services (local tags and local booru) could sometimes become editable on manage services dialog. the edit buttons should now disable correctly on init, and there's an additional check in the add code in case of future problems
any superfluous local files/booru services will be deleted on update
wrote a neat flexible system for recording and restoring a variety of window size and position information
moved the manage tags dialog to the new size and position system
moved the main gui and the media viewer to the new size and position system
the manage tags window launched from a media viewer is now a non-modal frame, allowing interation with the underlying media viewer while floating on top of it
the new manage tags frame commits changes immediately!
review services and file import status will now stay on top of the main gui
fixed some bad advanced content update dialog launch code
the hydrus tag archives in hta syncs can now be anywhere, not just in the client_archives folder
whole bunch of hta sync cleanup
paletted images are now dequantized to RGB(A) before thumbnail generation, enhancing scale quality
'LA' (greyscale+transparency) images will now render with correct transparency
png files will now always generate png thumbnails (previously it was just ones with transparency)
trivial options changes are less frequently saved
rule34@booru.org now parses namespaced tags
fixed a bug in thumbnail resize error recovery code
added options for disk cache init and maintenance to 'speed and memory' page of options
abstracted the manage tags dialog into a general purpose 'apply' dialog and a scrollable manage tags panel
the 'auto-replace entered siblings' checkbox now remembers how it was last set
uncertain sibling tag counts will now appear like 'tag (1,234-1,456)', showing the range of possible results they represent
fixed a bug where siblings would be collapsed inside the tag manager object if a specific tag search domain was set
altering the search text on an autocomplete from 'tag' to '-tag' or vice versa should graphically update more reliably, and an exact-matching predicate will be promoted to the top of the list correctly either way
calls to upnpc will now kill the process and raise an exception if it hangs for more than thirty seconds
if the currently focused thumbnail is removed from view, the earliest non-selected thumbnail will be remembered as a 'ghost' focus if the user then presses the arrow keys to continue to navigate
if the user presses an arrow key to navigate the thumbs when there is no known focus thumb, the first will be assumed
the listbook now supports duplicate display names
services of the same type can now have the same name
cleaned some listbook code
inbox or custom filters will now render first-file animations correctly on initialisation
fixed the 'change' event on the new timedeltabutton, which was not updating the thread checker on dialog ok
subscriptions will now naturally terminate their gallery sync on a 404, rather than dumping out with an error
fixed some false positive 'paths are different' testing in default directory mirroring code (used in db backup, restore) that was slowing these operations down
if database files have the same file and modified timestamp, they won't be re-copied in a backup or restore
client external storage location recovery/rebalancing will now skip over files with the same size and modified date
if you backup the client and have external file storage locations, a popup will remind you to back those locations up manually
did a quick pass over some help stuff, and added a 'can the client manage files from their origial locations' bit to the faq
created a simple no-reward patreon, wrote some help about it, and added links in the usual places
empty 'read' a/c dropdowns will be more careful about idly refreshing their system preds, hopefully leading to less accidental gui hang on large jobs
main gui menus will be more careful about refreshing themselves when called, hopefully leading to less accidental gui hang on large jobs
text snippets are stored inside the client db in a better way
added flat service directory structure storage support to the client db
current, deleted, pending, and petitioned mappings are now stored on service-separated dynamic tables
any tag service deletion or reset should now only take a few seconds
fixed a physical file deletion bug that seems to have affected (some?) versions of linux and os x
reintroduced a revamped 'clear orphans' database->maintenance routine for the client, which will delete or move orphaned files and delete orphaned thumbnails. run this if you are on os x or linux
improved misc file deletion code
fixed some multiplatform path conversion, and generally improved how paths are stored and retrieved
the network application of a parent tag to all files with the child tag now happens serverside, and only on petitioner-approval of a tag parent relationship. it still occurs locally to the uploader, but is now wrapped up in the parent commit
fixed some numtags search logic
fixed an issue when mixing system:age with any tag-based predicate
media_results db calls no longer require a file domain
'hide inbox and archive preds if either has no files' now defaults to off
added an option to disable OpenCV for gif rendering
the selection tags panel now initialises with the correct tag domain (it was previously always starting as 'all known tags', which is not always true for session pages)
thumbnail resize now happens on the fly--feel free to change it as often as you like, it takes no time at all
added 'lexicographic (grouped by namespace)' tag sorting to the selection tags box
added an option to disable OpenCV for static images under the media options page
panning with the shortcut keys now pans by a twelfth of the media size or canvas size, whichever is smaller
cleared the analyze timestamp cache for both client and server, which will force a reanalyze of the new db files on the next db maintenance run
improved some misc analyze code--primary keys are analyzed again
added an explicit analyze command to the client's database maintenance menu
the server now analyzes attached database files
improved an unhelpful server thumbnail error message
added an invalid NULL check-and-skip to hash cross-referencing
fixed some invalid a/c write dropdown search domain initialisation
fixed some borked zoom calculation code that was sometimes lagging the media viewer and leading to 100% zoomed images being sent unneccessarily and then being nastily scaled down
fixed a file import error if a synced tag archive is missing
added a bad error catch in the vacuum step in v200->v201
added some rollback exception handling for unusual situations
the autocomplete caches under the client_cache subdirectory are dynamically folded into a single client.caches.db file, and that file is folded into the main db journal like the other attached dbs
ac_cache file and tag processing lag and edge-case autocomplete miscounting should be removed as a result
cache generation is optimised for empty services
specific file_caches' add and delete file commands now modify their tables directly, saving a whole load of time that was previously done superfluously filtering
the specific ac_caches' add mappings command is a bit more logically efficient
increased cache size for each attached database
folded all 'attached' db update code into the main update_db routine
folded all 'attached' db init code into the main create_db routine
made the vacuum checking routine safer
reduced analyze log spam
analyze maintenance breaks its larger jobs up better
analyze mainenance now analyzes external databases
the db connection now refreshes every half hour, to regularly clear out journal files
the hydrus db assumes it generally has exclusive control over its db, so it no longer wraps its read-only requests in transactions
session load now happens off the main gui thread, and media generation is broken into 256-file chunks, which reduces startup db and gui lag for large sessions
the youtube video downloader now lists a webm option if youtube provides one (they seem to offer 360p webms on everything(?) now)
the timedeltacontrol (where you set the period for the thread checker and import folders and so on) is replaced by the more compact timedeltabutton, which will launch a dialog with the old control when clicked
the server will no longer revisit old updates and cull since-deleted content, as this was proving cpu-burdensome and not helpful to future plans for update dissemination, which will rely on static update files
misc cleanup of some server db stuff
content update processing will not spam menu updates throughout, but only notify once at the end, which should reduce idle gui hang due to db access choke
the autocomplete tag entry will not refresh system pred menu during idle, which should reduce idle gui hang due to db access choke
shutdown repo sync will now report the update summary text and will not spam the intervening statuses to the log
moved timestamp out of the serviceless media_result and into the locations_manager, to reflect the database's knowledge of each current service having a different timestamp
local and trash timestamps are generated from the locations_manager now, and non-local file service timestamps will soon follow (e.g. 'pinned to ipfs_service 3 days ago')
if the timestamp is unknown for the current service context, it will not be displayed
file repositories will now only sync thumbnails when their updates are completely synced (to stop 404s from since-deleted files)
fixed a ( 0, 0 ) resize event bug that was sometimes causing borked media containers on media viewer shutdown
syncing to a sha256 tag archive will still import the data as requested, but a popup note will explain that as everything will be imported, further syncing is pointless., and the sync will not be saved
fixed a bug in hta export if you click cancel on the hash_type choosing dialogs
exported hash and tag master tables to external database files for both client and server
the client's 'mappings' table is split into 'current_mappings' and 'pending_mappings', saving about 20% of space and speed for almost all mappings operations
removed superfluous rowid column from client mappings tables, saving about another 20% of space
removed superfluous rowid column from server mappings tables, saving about 20% of space
to save time, service mapping counts now only aggregate current mappings, not current and pending
exporting to tag archive now only exports current_mappings, not pending
'all known files' queries will more cleverly discern their current/pending search domain
tag count queries will more cleverly discern their current/pending search domain
cleaned up a lot of mapping-related query code, and any ugly status leftovers from current/pending union
num_namespaces is no longer tracked for tag services
unified clientside service deletion code, fixing several orphan-generation issues
db update will remove all mappings orphans created by a recent tag service deletion
some db settings init is harmonised into one location
fixed up some external db settings init
db connection settings are now applied to all attached db files
db vacuum code is harmonised into one location
vacuum cleans up after itself better
db vacuum is now preceded by a hard drive free space check
db vacuum can now predict how long it will take
if a vacuum fails for an unexpected reason, the db will now recover better
the db recovers from failed backups better
the server db will vacuum all its databases on a backup, except any that it thinks will take total vacuum time to more than five minutes
server backup will report roughly how long it took, clientside
significantly sped up system-tag-only 'all known files' queries for tag services that have many mappings
significantly sped up system:numtags for =0 or >0 when tag services have many mappings
the status bar has some improved grammar, reporting overall common mime as appropriate
the status bar reports single-thumbnail info text when one file is selected
fixed an image cache key type-matching bug
data cache now tracks objects with dynamic memory usage
the static image rendering-cache relationship has been slightly dejanked
added a couple of checkboxes to the options->gui page to hide/show thumbnail title banner and page indicator
the manage tags censorship dialog now defaults to the 'all known tags' service on init
slideshows will not progress if the current media is either a static image that has yet to render or an unpaused animation that has yet to run through once
service content package status messages now summarise their final commit status better
this nice new line is printed to the log as a record of repo sync rows/s speed
the client will shut down faster if big jobs are running
cleaned tag censorship a bit and moved from the gui down to the db layer
fixed tag censorship for multiple services
sped up tag censorship a bit
improved some tag censorship logic for unusual namespace situations
tag censorship now applies to siblings and parents, even in their management dialogs!
fixed the missing fit zoom when scrolling through zooms and when flipping between 100% and fit zoom
cleaned some canvas init code, which was loading bad initial zoom values due to other recent changes
restored standard static image zoom mode for cv-supported images to high, inter_area quality
cleaned up some image/animation container init code
cleaned up some image cache image tracking code
fixed ipfs pin, which was conflicting with the new ac caches
extracted client deleted_mappings to their own db table
prepped mappings processing to work with status-separate mappings tables--it is also a lot cleaner now
because of the deleted_mappings extraction, a bunch of mappings membership tests are much simpler now
upped the db cache size to a semi-ludicrous 150MB, which nonetheless seems to improve processing speed
improved how hydrus databases manage their db file locations
improved how the client and server databases backup/restore
improved some non-local thumbnail fetching code
converted some old YAML stuff to JSON
improved big job polite pausing code
cleaned up some clientside imports, and set the client to only import its server code if it needs to boot a local service
when an import folder needs to rename a file it is about to move because of a conflict, it will now add autoincrementing numbers, starting at 0, and before the file extension
added some missing shortcut actions (pan_x and set_media_focus) to the shortcut input entry dialog
tags and siblings that match the current WRITE autocomplete tags entry will no longer have doubled parents!
No Comments