hydrus/help/changelog.html

8518 lines
758 KiB
HTML
Executable File
Raw Blame History

<html>
<head>
<title>changelog</title>
<link href="hydrus.ico" rel="shortcut icon" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="content">
<h3>changelog</h3>
<ul>
<li><h3>version 334</h3></li>
<ul>
<li>wrote a system:file viewing stats to comprehensively search the new viewing stats--it _should_ also be synced with the exact current values</li>
<li>but for system:everything, inbox, and archive, which remain where they were, system predicates are now sorted alphabetically!</li>
<li>added a _database->file viewing stats_ menu that lets you suspend file view tracking and clear all records permanently</li>
<li>mr. bones now welcomes all users under the help menu</li>
<li>fixed mr. bones's confusion at those who have yet to board the ride</li>
<li>also mr. bones now makes sure to get the latest file viewing stats</li>
<li>moved confirm trash/archive from _options->gui_ to _options->files and trash_</li>
<li>moved a bunch of 'pages' related stuff from _options->gui_ to the new _options->gui pages_</li>
<li>added an option to options->gui pages to change the number of session rolling backups</li>
<li>subscription popups now provide an x/y query progress string in their popup text</li>
<li>the edit subs/sub panels are now a bit shorter by default and the edit sub has its own frame position data, under 'edit_subscription_dialog', and remembers its last size and position by default</li>
<li>fixed an issue where some dupe watcher urls (like url and url#12345) were not being correctly merged on a mouse drag and drop watcher-import</li>
<li>the client will now print up to 512KB of server error info to the log (previously 4KB)</li>
<li>removed the youtube download prototype--if it returns, we'll do a proper youtube-dl solution. as a result, pafy is no longer needed to run the client</li>
<li>network report mode now shows more network error information</li>
<li>gave the 'getting started with subscriptions' help page a complete pass. it now reflects the new system and has up-to-date advice based on my new experience</li>
<li>wrote a 'logins' section to the bottom of the 'getting started with downloading' help page</li>
<li>misc fixes</li>
</ul>
<li><h3>version 333</h3></li>
<ul>
<li>added a first version of file viewing statistics! the client db now keeps track of how many times a file is loaded in the preview and full media viewers, and for how long!</li>
<li>you can see the media and preview stats on any single media right-click menu. there are multiple options for how this displays, including hiding it completely, under options->media</li>
<li>viewing stats update as they happen! (although viewtime typically only updates on the end of viewing. I'll likely make this more live, especially if I end up showing this info in the media media viewer)</li>
<li>you can now sort files by total media views/viewtime!</li>
<li>mr. bones's wild ride continues, as well</li>
<li>deleted the old 'file list' way of updating in-ui media objects in favour of a long-planned global media cache. there is now only ever one active copy of any particular media, and all data-level updates need only occur once on that single copy. this saves a bunch of CPU, memory, and overall hassle behind the scenes! various search results/lookups for media already loaded elsewhere now load super fast!</li>
<li>tag siblings refresh is quicker and less memory heavy thanks to this as well</li>
<li>furthermore, the complicated tag changes from tag repository processing and advanced content updates are now reflected immediately in the gui on the job's completion! (as long as you have fewer than 10k files open, ha ha) previously, these required a search refresh to show the results</li>
<li>the file sort choice dropdown on all pages is now sorted alphabetically. it has always been a mess picking what you want from here, so let's see if this helps!</li>
<li>tag and rating sort options are now listed as 'tag:' and 'rating:' respectively</li>
<li>fixed some misc file sort choice code, which was failing to keep certain defaults in certain situations</li>
<li>fixed the tag import options' new 'load from defaults' button to correctly load the tag blacklist</li>
<li>the keyboard icon on the media viewer's top hover window now permits activation of current/default shortcut sets under submenus. it now also omits these entries if no custom shortcut sets exist</li>
<li>cleaned up some of the hover_window-canvas interaction code</li>
<li>fixed some long-time sperg-out buffer-drawing when changing position in a long video</li>
<li>the database->backup actions are now hidden if the current db has non-default file/thumbnail locations. for now, in these cases, only a custom backup is appropriate</li>
<li>fixed some ancient repository admin code that fetches summary account info given an account key</li>
<li>the filename tagging dialog now has a much shorter listctrl by default, so should fit better on smaller monitors</li>
<li>fixed the 'review session cookies' dialog's clear button, which was not deleting sessions after clear. it now also wraps the operation in a yes/no confirmation</li>
</ul>
<li><h3>version 332</h3></li>
<ul>
<li>the client serialisation system now supports multiple rolling backups!</li>
<li>client sessions (like the 'last session' that typically loads on boot) are now automatically backed up to ten times in rolling backups! you can review and append the backups if you need to recover from _pages->sessions->append session backup_, where they are listed by their timestamp!</li>
<li>when the client closes, an additional 'exit session' is now saved. this differs to 'last session', which is overwritten every x minutes, and is now available (especially with the new backup) for various error recovery situations</li>
<li>gallery import pages now have a little cog icon to control if new import queues will start with files and/or galleries paused. these states persist through a session reload</li>
<li>tag import options that are 'defaultable' now have a button to let you load in a specific default, so you can easily quickly edit in a one-time slight alteration of the default rather than having to create everything from scratch</li>
<li>under options->downloading, you can now set the 'delay' times on gallery/watcher network error, subscription network error, and subscription other error, now defaulting to 90mins, 12hours, and 36 hours respectively</li>
<li>attempting to launch a client with db version > software version now spawns a blocking messagebox on pre-launch informing the user of the risks and advising task manager force-kill of the process</li>
<li>did a little cleanup on the new tag id database cache and merged some other, older semi-laggy tag-fetching code to use the same system</li>
<li>wrote a similar 'file id' database cache for caching file hashes and also merged some old hash-fetching code into it. a variety of file operations are now significantly faster</li>
<li>export folders can now delete files from the client after export. the edit panel will warn you on selecting this and oking the panel. it can't be set if the export type is 'synchronise'.</li>
<li>fixed the edit export folders dialog's old buttons, which were semi-working due to some recent update work</li>
<li>when checking for file integrity, you can now choose to export a .txt file listing all the missing files' known urls, so you can try to recover by feeding them all back into a new url downloader!</li>
<li>the physical file deletion process is now a little simpler and deals with larger jobs in smaller batches, no longer hogging the file read lock the whole time. clearing a large trash should no longer hang other media loads</li>
<li>adding ngugs in the 'export downloaders' dialog now attempts to add the respective gugs as well</li>
<li>fixed an issue where the listctrl would accept certain kinds of duplicate data and hence confuse its indices</li>
<li>fixed all the add buttons on the export downloader panel to exclude all items already in the list when figuring out what additional objects to add</li>
<li>the 'scroll thumbs at this rate per tick' option now _rounds_ the pixel result, rather than always _floor_ing it</li>
<li>wrote a new mass-selection database routine that should reduce memory footprint of autocomplete regeneration. if it works out, I will use it in some other places</li>
<li>improved the errors when a network job that cannot wait fails on an invalid login, and added a separate error when it refers to a hydrus service</li>
<li>fixed a small typo bug when trying to auto-add url classes and parsers</li>
<li>updated an old deprecated checkboxlist call</li>
<li>clarified the integrity section of 'help my db is broke.txt'</li>
<li>misc fixes</li>
</ul>
<li><h3>version 331</h3></li>
<ul>
<li>added a 'do login now' button to the manage logins dialog. it only enables when the selected logins are active and not invalid and so on, and will ok the dialog and queue up some login attempts, which will make report popups as normal</li>
<li>'review session cookies' panels now support drag and drop cookies.txt import! cookies.txt importing will also handle errors a bit better and report total number of added cookies</li>
<li>the 'review session cookies' panel now defaults to not showing sessions with zero cookies. a new checkbox controls this</li>
<li>login scripts can now be rolled into easy import pngs! should work for export and import just like the other objects (although they won't be auto-added based on domain in export dialog)</li>
<li>brushed up some of the 'change login script' code--particularly, it now puts login scripts that have matching domains first in the selection list, for easier selection</li>
<li>after striking a reckless bargain with a daemon from the database-plane, system:num_tags now runs significantly faster and produces accurate tag counts even when searching over multiple tag services that have duplicate tags. if this works out, the immaterial beast promises greater gains for similar jobs with no possibility of anything going wrong</li>
<li>prototyped a new tag cache in the db that affects (and should speed up) many tag fetching routines. let's see how it goes</li>
<li>added complete, global proxy support for the new network engine! there are new options under options->connection (with some explanation text) to handle it. if pysocks is installed, socks4/5 proxies are also available!</li>
<li>updated the e-hentai.org login script to the new one on the github. your existing mappings for e-hentai.org _should_ all be updated right. exhentai.org is likely too difficult to properly support in the current system</li>
<li>the different panels where you enter system predicate information now all run on the new panel sizing system--if you have had problems with these, please let me know how they size now!</li>
<li>added a '4channel thread' url class to support watchers for the new 4channel sfw domain. it works for now, but let's see if their api changes when the split actually happens</li>
<li>the list right-click menu on gallery import and thread watcher panels now has three options to show combined importers' files--presented, new, and all. it also now shows the files (more smoothly) in the same page, clearing any existing highlight.</li>
<li>misc ui improvements</li>
<li>updated 'running from source' in help</li>
</ul>
<li><h3>version 330</h3></li>
<ul>
<li>login:</li>
<li>added a proper username/password login script for hentai foundry--double-check your hf filters are set how you want in your profile, and your hydrus should inherit the same rules</li>
<li>fixed the gelbooru login script from last week, which typoed safebooru.com instead of .org</li>
<li>fixed the pixiv login 'link' to correctly say nsfw rather than everything, which wasn't going through last week right</li>
<li>improved the pixiv file page api parser to veto on 'could not access nsfw due to not logged in' status, although in further testing, this state seems to be rarer than previously/completely gone</li>
<li>added login scripts from the github for shimmie, sankaku, and e-hentai--thanks to Cuddlebear and any other users who helped put these together</li>
<li>added safebooru.donmai.us to danbooru login</li>
<li>improved the deviant art file page parser to get the 'full' embedded image link at higher preference than the standard embed, and only get the 'download' button if it looks like an image (hence, deviant art should stop getting 140MB brush zips!)</li>
<li>the manage logins panel now says when a login is expected to expire</li>
<li>the manage logins dialog now has a 'scrub invalidity' button to 'try again' a login that broke due to server error or similar</li>
<li>entering blank/invalid credentials is now permitted in the manage logins panel, and if entered on an 'active' domain, it will additionally deactivate it automatically</li>
<li>the manage logins panel is better at figuring out and updating validity after changes</li>
<li>the 'required cookies' in login scripts and steps now use string match names! hence, dynamically named cookies can now be checked! all existing checks are updated to fixed-string string matches</li>
<li>improved some cookie lookup code</li>
<li>improved some login manager script-updating code</li>
<li>deleted all the old legacy login code</li>
<li>misc login ui cleanup and fixes</li>
<li>.</li>
<li>other:</li>
<li>sped up tag searches in certain situations (usually huge inbox) by using a different optimisation</li>
<li>increased the repository mappings processing chunk size from 1k to 50k, which greatly increases processing in certain situations. let's see how it goes for different users--I may revisit the pipeline here to make it more flexible for faster and slower hard drives</li>
<li>many of the 'select from a list of texts' dialogs--such as when you select a gallery to download from--are now on the new panel system. the list will grow and shrink depending on its length and available screen real estate</li>
<li>.</li>
<li>misc:</li>
<li>extended my new dialog panel code so it can ask a question before an OK happens</li>
<li>fixed an issue with scanning through videos that have non-integer frame-counts due to previous misparsing</li>
<li>fixed a issue where file import objects that have been removed from the list but were still lingering on the list ui were not rendering their (invalid) index correctly</li>
<li>when export folders fail to do their work, the error is now presented in a better way and all export folders are paused</li>
<li>fixed an issue where the export files dialog could not boot if the most previous export phrase was invalid</li>
<li>the duplicate filter page now has a button to more easily edit the default merge options</li>
<li>increased the sibling/parent refresh delay for 1s to 8s</li>
<li>hydrus repository sync fails due to network login issues or manual network user cancel will now be caught properly and a reasonable delay added</li>
<li>additional errors on repository sync will cause a reasonable delay on future work but still elevate the error</li>
<li>converted import folder management ui to the new panel system</li>
<li>refactored import folder ui code to ClientGUIImport.py</li>
<li>converted export folder management ui to the new panel system</li>
<li>refactored export folder ui code to the new ClientGUIExport.py</li>
<li>refactored manual file export ui code to ClientGUIExport.py</li>
<li>deleted some very old imageboard dumping management code</li>
<li>deleted some very old contact management code</li>
<li>did a little prep work for some 'show background image behind thumbs', including the start of a bitmap manager. I'll give it another go later</li>
</ul>
<li><h3>version 329</h3></li>
<ul>
<li>login:</li>
<li>the login manager is fully turned on! hentai-foundry click-through and pixiv login now occur fully on the new system</li>
<li>wrote a Deviant Art login script for NSFW downloading--however, it only seems to work on a client that has done some logged-out downloading first (otherwise it thinks you are a robot)</li>
<li>updated the DA file page parser to only NSFW-veto if the user is currently logged out</li>
<li>wrote a danbooru login script for user prefs and special files if you have a gold account</li>
<li>wrote a gelbooru 0.2.x login script for user prefs</li>
<li>pixiv recently(?) allowed non-logged in users to see sfw content, so the login script is updated to reflect this. the login script doesn't detect a failed login any more, so I will revisit this</li>
<li>logging in in the regular order of things now makes a temporary popup message with the overall login status and final result. ~it is cancellable~--and if cancelled, future login attempts will be delayed</li>
<li>logging in in the regular order of things now prints simple started/result lines to the log</li>
<li>deleted old network->login menu and related code such as the custom pixiv login management. gdpr click-through is now under downloaders</li>
<li>subscription login errors will now specify the given login failure reason</li>
<li>subscription login tests will now occur at a better time, guaranteeing the sub will be correctly saved paused if the test fails</li>
<li>login errors will now always specify the domain for which they failed</li>
<li>testing a login script on a fresh edit login script dialog now pre-fills the alphabetically first example domain</li>
<li>the login script test ui now restores its 'run test' button correctly if the test is abandoned early</li>
<li>misc improvements to login error handling and reporting</li>
<li>.</li>
<li>other:</li>
<li>any texts across the program that ellipsize when they are too thin to display what they have will now tooltip their text (this most importantly includes the status on the network job control, which will now display full login problem info)</li>
<li>the copy button on manage tags goes back to copying all if no tags are selected</li>
<li>the remove button on manage tags now removes only selected if some tags are selected. it still removes all if none are selected</li>
<li>the remove button on manage tags is now wrapped in a yes/no dialog (as is hitting the delete key on the list's selection). this can be turned off under the cog button</li>
<li>filename tagging panels now support directory tagging for the last, second last, and third last directories. the related code for handling directory tagging is cleaned up significantly</li>
<li>the export files panel now lets you delete the files from the client after export. this value will be remembered, and if on will prompt a capital letters warning on export, either via the button or the quick-export shortcut</li>
<li>in manage tag parents, where there are multiple parents in a pending action (either by importing via clipboard/file or by putting multiple parents in right-hand box), the action will now be treated as one transaction with one 'enter a reason' confirmation!</li>
<li>in manage tag siblings, when multiple 'better' values are pended in one action via a clipboard/file import, they will now be treated as one transaction with one 'enter a reason' confirmation!</li>
<li>.</li>
<li>misc:</li>
<li>added a new url class that api-links .gifv-style imgur links so they are downloadable like regular imgur single media pages</li>
<li>the pixiv manga page url class now redirects to the new api, so mode=manga pages should now be drag-and-drop importable and generally downloadable if you have any still hanging around in any queues</li>
<li>clients now come with an additional danbooru parser that fetches the webm version of ugoiras</li>
<li>after discovering a pdf that ate indefinite 100% CPU while trying to parse, I have decided to stop pulling num_words for pdfs. it was always a super inaccurate number, so let's wait for a better solution at a later date. hydrus hence no longer requires pypdf2</li>
<li>fixed an issue with monthly bandwidth estimates rolling over to the new year incorrectly</li>
<li>in an attempt to chase down a duplicate files content move/copy bug, the duplicate action content updates got a bit of cleanup work. if you have noticed duplicate actions not copying tags/urls, please let me know the exact process in the ui, including services and merge options, you went through</li>
<li>tag lists should now update their sibling appearance correctly after a tag siblings dialog ok--previously, they were checking for new sibs too early</li>
<li>tag siblings and parents should now refresh their data more efficiently when spammed with new data notifications (this usually happens janitor-side, which approving dozens at once)</li>
<li>copy queries/watcher urls on the download pages' lists' right-click menus no longer double-spaces the copied texts (it just does single spaces)</li>
<li>fixed an issue where certain initialised watchers were erroring out when asked to provide next-check time estimates--in all cases, null timestamps will be dealt with better here</li>
<li>misc tag parents/siblings ui code cleanup</li>
<li>wrote some code to catch and report on an unusual dialog dismissal error</li>
</ul>
<li><h3>version 328</h3></li>
<ul>
<li>wrote test ui for edit login script panel</li>
<li>the login system now works and is turned on, although the legacy hardcoded pixiv and hf logins remain in place. it will not do anything very new this week--it is strictly only for advanced users to experiment with for now</li>
<li>cleaned up some messy network code</li>
<li>all subscription and hydrus jobs will no longer wait indefinitely on an invalid login--they will cancel immediately</li>
<li>network jobs will report a bit more info when they are cancelled</li>
<li>subscriptions will now attempt to test login validity before and during file downloads and syncing. if they fail, the sub will pause and stop work and a message will be presented to the user</li>
<li>made a 'thumbnails' options page and moved some things to it</li>
<li>added thumbnail border and margin to that thumbnails page! you can even set 0 border and/or margin and it works</li>
<li>fixed up a heap of bad thumbnail drawing code that didn't work with thicker borders</li>
<li>the tag sibling and parent dialogs now have suggestion buttons in their 'give a reason' dialogs! if your petitions are simple and fit into one of these categories (which is most of them), please use these buttons as they will let janitors (e.g. hydrus dev for the PTR) process them in batches, in fewer clicks</li>
<li>manage tags dialog's checkboxes and advanced buttons are now wrapped into a cog icon! remove/copy/paste buttons are compacted and put on the same row!</li>
<li>manage tags dialog's copy button now only copies selected, not all tags</li>
<li>manage tags dialog now uses the new sizer. some components are smaller by default but will eat up spare pixels better</li>
<li>misc manage tags code cleanup</li>
<li>added 'paged file import queues' to the network->pause menu. this will pause any, hdd, url, simple, gallery, or watcher page from processing its file import queue. it is a bit hacky and will take up to 30s to unpause unless you joggle the respective downloader to wake it up--see how it goes!</li>
<li>added a similar 'gallery searching' to that menu, to pause any url, simple, or gallery page from actioning its gallery-side queue</li>
<li>and 'watcher checking' for watchers</li>
<li>fixed a stupid bug that was causing false-positive and _mostly_ harmless errors for certain pixiv and artstation multi-page downloads</li>
<li>fixed an issue where multi-page data was being mis-metadata'd (mostly, this meant thread watchers were giving the last filename tag to all files, and I think similarly getting the latest source time) due to a mistake in some recent de-duping code</li>
<li>fixed the new pixiv file page api parser to parse source time, which I must have accidentally deleted previously</li>
<li>fixed a no-expand bug in my new sizer when in horizontal orientation</li>
<li>fixed a small bug when making an easy-import downloader png and cancelling the add url class dialog</li>
<li>misc fixes</li>
</ul>
<li><h3>version 327</h3></li>
<ul>
<li>login stuff:</li>
<li>finished off some login script data stuff</li>
<li>fleshed out how login credentials and other linked data is stored in the login manager, including script link recovery when the script changes but name does not</li>
<li>improved some initialisation login validation error handling</li>
<li>improved login failure validation error handling</li>
<li>wrote a dialog panel for managing login credentials and reviewing validity and so on</li>
<li>a heap of related session and login tie-in/fix-up work</li>
<li>the login manager will now save changes to the db. it will get the HF and pixiv scripts on db creation/update, and if you have a pixiv login, the login system will pre-fill that info and 'activate' the script (although the login manager will not fire any login scripts yet--if so configured, it'll just delay on a polite error message)</li>
<li>.</li>
<li>other stuff:</li>
<li>with the subscriptions' new more liberal syncing logic, the periodic file limit will now only pop up if the sub does not see any already-seen files</li>
<li>to give more buffer for the new syncing logic, file import caches will now store 250 entries minimum on compaction (was 100 previously)</li>
<li>subscription merging now lets you choose the primary subscription into which the other subs will be merged</li>
<li>cancelling a subscription merge action mid-merge is now safely nullipotent</li>
<li>post urls that use subsidiary page parsers (such as the new pixiv manga parser) will now correctly insert (rather than append) their manga urls into the file import cache</li>
<li>removed a couple of places where urls could accidentally be duplicated in a file import cache</li>
<li>cleaned up some areas where successful file import objects were presumed to have file hashes when they might not (this was causing errors when importing urls that split into multiple url children, like pixiv manga, while also having 'additional tags' set)</li>
<li>updated tag censorship, parents, and siblings dialogs to the new panel system</li>
<li>tag censorship, parents, and siblings panels now use a notebook instead of the layout-borked listbook</li>
<li>tag parents and siblings panels now use the new small-resolution-friendly sizer, are more tight by default, and expand more neatly</li>
<li>refactored a bunch of tag ui code to clientguitags</li>
<li>the client video renderer will now deal with videos with (invalid) duration of 0 more gracefully</li>
<li>finished the 'getting started with downloading' help page, sans the login stuff</li>
<li>bit of other help work</li>
</ul>
<li><h3>version 326</h3></li>
<ul>
<li>login:</li>
<li>finished the new login objects. they can deal with multi-step single second-level domain login problems, can pass variables from step to step, and use cookies as success verification</li>
<li>wrote an ton of ui for the new login objects, now under network->downloader definitions and network->logins. it is not 'active' yet, but advanced users are invited to check it out. there is no good test ui yet, which I think I'll have to figure out in the coming weeks</li>
<li>wrote a first attempt at HF and pixiv replacement login scripts--please try importing from defaults on the manage login scripts dialog and look through them to see what I am going for. once the system is flipped on and we are happy these work, I'll remove the old hardcoded legacy login stuff</li>
<li>when a network job that needs a login cannot login, it now waits (rather than bombing out completely), presenting the related error, and checks again every 60 seconds</li>
<li>if a network job thinks it can login but fails to generate a login process, the network engine now catches the error safely and recovers. the job is put on hold as above</li>
<li>.</li>
<li>subs:</li>
<li>the subscription 'have we caught up to where we were before' test is now more complicated--rather than just stopping after five 'already seen' urls are found, it now only stops if at least the _last_ five contiguous urls of the page are already seen. this will catch more late-tagged files that get inserted out of order</li>
<li>fixed the 'get quality info' button on edit sub panel to only get the current selection, not all queries wew</li>
<li>subscriptions can now optionally publish/present their files to a specific label! this is a great way to merge multiple subs to the same final landing page</li>
<li>.</li>
<li>layout:</li>
<li>after a long time thinking about it, wrote a new custom boxsizer that handles resizing multiple expanding items of different reasonable min size by expanding them _beyond minimum size_ by their proportion, rather than forcing them all to have total proportional width/height. I expect to polish this and apply it in multiple locations around the program where tall things were being too tall because something else was forcing it to be (the management panel on the left of most pages was terrible at this, causing a giganto taglist just because the upper panel was tall as well).</li>
<li>changed my custom boxsizer (the box with a bold header) to the new custom boxsizer, so it is all over now--please report any bad layouts you see</li>
<li>in an effort to improve layout, the manage tag parents and siblings panels' preview boxes have shorter minimum height--it will get a bigger layout overhaul soon</li>
<li>.</li>
<li>bigger misc:</li>
<li>thanks to work of user kourraxspam on the discord, fixed the pixiv downloader to use a more stable api and added pixiv tag search</li>
<li>watchers and gallery imports now have a list right-click menu entry to show all selected importers' files in a new page! use this to clear out a bunch of finished queues all at once!</li>
<li>the tag right-click menu now offers 'open new search pages for each in selection' if multiple tags are selected--this will open three search pages each with one tag, as opposed to the original entry, which would only open one page with all three</li>
<li>the edit nested gug panel now uses a checklistbox rather than the menu to select gugs to add, which is more reliable and allows for multiple selections</li>
<li>sped up autocomplete tag fetches' tag sibling integration--irl this may be a reduction in total a/c search time of approx 33%</li>
<li>page parsers will now generate next gallery urls absent any file/post urls if the only type of url they can generate is gallery urls (so a meta-gallery-search like board->threads that only generates subsidiary gallery pages will now work, whereas before it never could because it was missing post urls)</li>
<li>the gallery log now provides a shorthand way to restart and resume failed searches from its right-click menu (if the most recent log entry failed)</li>
<li>'try again (and allow search to continue)' reattempt jobs will now generate next page urls even if no new urls are found (which can happen if a search stopped due to the file limit exactly lining up with the number of files found, for instance, so a reattempt finds nothing new)</li>
<li>gallery downloaders will now specify their 'delay work for a bit' error states in the ui. this usually means 'could not connect', which has a 4-hour timer (I'll prob add a scrub delays button here at some point)</li>
<li>the watcher will now show its 'delay work for a bit' error state in more places in the ui</li>
<li>added a 'media' shortcut 'export_files_quick_auto_export', which will open the export files frame and give you a quick yes/no to confirm you want to export as set. if yes, it will export. then it will close the frame</li>
<li>added a 'show a "N" to short import summaries' option to options->downloading, which will extend the typical 'x/y' status string to 'x/y - zN' for z 'new files' (as opposed to already in db)</li>
<li>improved how the video parser estimates frame rate--it _should_ fix some of those low-framerate, low-framecount slideshow-vids where at current they render everything in a rush and then sit on the last frame for ten secs</li>
<li>.</li>
<li>smaller misc:</li>
<li>network report mode now reports url_to_fetch and parser-to-parse-with info</li>
<li>when the server fails to accept a file upload due to a file parsing issue, it now prints the hash of the file in the error</li>
<li>if the client sees a possible file hash in a server error message from a file upload, ~it will try to show that file in a new page~</li>
<li>fixed an issue where wildcard searches were not finding results if the search text included the normally discarded characters [](){}"'</li>
<li>fixed some domain handling for localhost and other undotted network names</li>
<li>content parsers will now only launch with permissable content types, which for the legacy 'lookup scripts' scripts system means only tags and vetoes, and for the new login system means only temp variables and vetoes</li>
<li>as compaction now happens automatically on sync, removed the 'compact' button from edit subs panel</li>
<li>an unusual network error related to hydrus update files sometimes being cut off mid-stream is now glossed over silently, with the download reattempted after a delay</li>
<li>the initial gui session load now occurs after a 0.25s delay--let's see if it cleans up some initial layout issues some users have had</li>
<li>maybe fixed an odd dictionary-initialisation error related to tag siblings/parents dialog boot</li>
<li>ruggedised against an unusual bandwidth load bug</li>
<li>gave some of the index help a pass</li>
<li>did most of a 'getting started with downloaders' page in the help--I'll finish it next week</li>
<li>updated discord share link to https://discord.gg/3H8UTpb , which should not expire</li>
<li>some listbox add/edit code cleanup</li>
<li>some listctrl delete code cleanup</li>
<li>misc help work</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 325</h3></li>
<ul>
<li>added a 'show a popup while working' checkbox to edit subscription panel--be careful with it, I think maybe only turn it off after you are happy everything is set up right and the sub has run once</li>
<li>advanced mode users will see a new 'get quality info' button on the edit subscription panel. this will some ugly+hacky inbox/archived/deleted info on the selected queries to help you figure out if you are only archiving, say, 2% of one query. this is a quickly made but cpu-expensive way of calculating this info. I can obviously expand it in future, so I would appreciate your thoughts</li>
<li>subscription queries now have an optional display name, which has no bearing on their function but if set will appear instead of query text in various presentation contexts (this is useful, for instance, if the downloader query text deals in something unhelpful like integer artist_id)</li>
<li>subscription queries now each have a simple tag import options! this only allows 'additional tags', in case you want to add some simple per-query tags</li>
<li>selecting 'try again' on file imports that previously failed due to 'deleted' will now pop up a little yes/no asking if you would like to first erase these files' previously deleted file record!</li>
<li>the watcher and gallery import panels now have 'retry failed' buttons and right-click menu entries when appropriate</li>
<li>the watcher and gallery import panels will now do some ui update less frequently when they contain a lot of data</li>
<li>fixed the new human-friendly tag sorting code for ungrouped lexicographic sort orders, where it was accidentally grouping by namespace</li>
<li>downloader easy-import pngs can now hold custom header and bandwidth rules metadata! this info, if explicitly present for the appropriate domain, will be added automatically on the export side as you add gugs. it can also be bundled separately after manually typing a domain to add. on the import side, it is now listed as a new type. longer human-friendly descriptions of all bandwidth and header information being bundled will be displayed during the export and import processes, just as an additional check</li>
<li>for advanced users, added 'do not skip downloading because of known urls/hashes' options to downloader file import options. these checkboxes work like the tag import options ones--ignoring known urls and hashes to force downloads. they are advanced and should not be used unless you have a particular problem to fix</li>
<li>improved how the pre-import url/hash checking code is compared for the tag and file import options, particularly on the hash side</li>
<li>for advanced users, added 'associate additional source urls' to downloader file import options, which governs whether a site's given 'source urls' should be added and trusted for downloaded files. turn this off if the site is giving bad source urls</li>
<li>fixed an unusual problem where gallery searches with search terms that included the search separator (like '6+girls skirt', with a separator of '+') were being overzealously de/encoded (to '6+girls+skirt' rather than '6%2bgirls+skirt')</li>
<li>improved how unicode quoted characters in URLs' query parameters, like %E5%B0%BB%E7%A5%9E%E6%A7%98 are auto-converted to something prettier when the user sees them</li>
<li>the client now tests if 'already in db' results are actually backed by the file structure--now, if a the actual file is missing despite the db record, the import will be force-attempted and the file structure hopefully healed</li>
<li>gallery url jobs will no longer spawn new 'next page' urls if the job yielded 0 _new_ (rather than _total_) file urls (so we should have fixed loops fetching the same x 'already in file import cache' results due to the gallery just passing the same results for n+1 page fetches)</li>
<li>in the edit parsing panels, if the example data currently looks like json, new content parsers will spawn with json formulae, otherwise they will get html formulae</li>
<li>fixed an issue with the default twitter tweet parser pulling the wrong month for source time</li>
<li>added a simple 'media load report mode' to the help debug menu to help figure out some PIL/OpenCV load order stuff</li>
<li>the 'missing locations recovery' dialog that spawns on boot if file locations are missing now uses the new listctrl, so is thankfully sortable! it also works better behind the scenes</li>
<li>this dialog now also has an 'add a possibly correct location' button, which will scan the given directory for the correct prefixes and automatically fill in the list for you</li>
<li>fixed some of the new import folder error reporting</li>
<li>misc code cleanup</li>
</ul>
<li><h3>version 324</h3></li>
<ul>
<li>downloaders:</li>
<li>after adding some small new parser tools, wrote a new pixiv downloader that should work with their new dynamic gallery's api. it fetches all an artist's work in one page. some existing pixiv download components will be renamed and detached from your existing subs and downloaders. your existing subs may switch over to the correct pixiv downloader automatically, or you may need to manually set them (you'll get a popup to remind you).</li>
<li>wrote a twitter username lookup downloader. it should skip retweets. it is a bit hacky, so it may collapse if they change something small with their internal javascript api. it fetches 19-20 tweets per 'page', so if the account has 20 rts in a row, it'll likely stop searching there. also, afaik, twitter browsing only works back 3200 tweets or so. I recommend proceeding slowly.</li>
<li>added a simple gelbooru 0.1.11 file page parser to the defaults. it won't link to anything by default, but it is there if you want to put together some booru.org stuff</li>
<li>you can now set your default/favourite download source under options->downloading</li>
<li>.</li>
<li>misc:</li>
<li>the 'do idle work on shutdown' system will now only ask/run once per x time units (including if you say no to the ask dialog). x is one day by default, but can be set in 'maintenance and processing'</li>
<li>added 'max jobs' and 'max jobs per domain' to options->connection. defaults remain 15 and 3</li>
<li>the colour selection buttons across the program now have a right-click menu to import/export #FF0000 hex codes from/to the clipboard</li>
<li>tag namespace colours and namespace rendering options are moved from 'colours' and 'tags' options pages to 'tag summaries', which is renamed to 'tag presentation'</li>
<li>the Lain import dropper now supports pngs with single gugs, url classes, or parsers--not just fully packaged downloaders</li>
<li>fixed an issue where trying to remove a selection of files from the duplicate system (through the advanced duplicates menu) would only apply to the first pair of files</li>
<li>improved some error reporting related to too-long filenames on import</li>
<li>improved error handling for the folder-scanning stage in import folders--now, when it runs into an error, it will preserve its details better, notify the user better, and safely auto-pause the import folder</li>
<li>png export auto-filenames will now be sanitized of \, /, :, *-type OS-path-invalid characters as appropriate as the dialog loads</li>
<li>the 'loading subs' popup message should appear more reliably (after 1s delay) if the first subs are big and loading slow</li>
<li>fixed the 'fullscreen switch' hover window button for the duplicate filter</li>
<li>deleted some old hydrus session management code and db table</li>
<li>some other things that I lost track of. I think it was mostly some little dialog fixes :/</li>
<li>.</li>
<li>advanced downloader stuff:</li>
<li>the test panel on pageparser edit panels now has a 'post pre-parsing conversion' notebook page that shows the given example data after the pre-parsing conversion has occurred, including error information if it failed. it has a summary size/guessed type description and copy and refresh buttons.</li>
<li>the 'raw data' copy/fetch/paste buttons and description are moved down to the raw data page</li>
<li>the pageparser now passes up this post-conversion example data to sub-objects, so they now start with the correctly converted example data</li>
<li>the subsidiarypageparser edit panel now also has a notebook page, also with brief description and copy/refresh buttons, that summarises the raw separated data</li>
<li>the subsidiary page parser now passes up the first post to its sub-objects, so they now start with a single post's example data</li>
<li>content parsers can now sort the strings their formulae get back. you can sort strict lexicographic or the new human-friendly sort that does numbers properly, and of course you can go ascending or descending--if you can get the ids of what you want but they are in the wrong order, you can now easily fix it!</li>
<li>some json dict parsing code now iterates through dict keys lexicographically ascending by default. unfortunately, due to how the python json parser I use works, there isn't a way to process dict items in the original order</li>
<li>the json parsing formula now uses a string match when searching for dictionary keys, so you can now match multiple keys here (as in the pixiv illusts|manga fix). existing dictionary key look-ups will be converted to 'fixed' string matches</li>
<li>the json parsing formula can now get the content type 'dictionary keys', which will fetch all the text keys in the dictionary/Object, if the api designer happens to have put useful data in there, wew</li>
<li>formulae now remove newlines from their parsed texts before they are sent to the StringMatch! so, if you are grabbing some multi-line html and want to test for 'Posted: ' somewhere in that mess, it is now easy.</li>
</ul>
<li><h3>version 323</h3></li>
<ul>
<li>wrote first version of the new downloader easy-import drop-panel. you drop downloader-encoded pngs on it, and it maybe asks you a question and jumbles its way through auto-importing all the required data to the client</li>
<li>extended this file import to do some cleverer 'example url merging' when parsers are otherwise dupes, rather than spamming similar dupes on import</li>
<li>wrote first version of the new downloader export panel. it takes gugs, url classes and parsers, and predicts sensible sub-objects to include to make functional downloaders, and bundles it into one png</li>
<li>fleshed out help for the new easy import/export system</li>
<li>the client now slows down gallery and watcher processing when the network engine is under heavy load, aiming for no more than 50 jobs in system at once. the solution is a bit hacky for now, but it should alleviate the deadlock issue when there are ~180+ simultaneous gallery/watcher network jobs pending</li>
<li>the multi-watcher panel's list of watchers now supports right-click menu to copy/open urls and pause/play files/checking</li>
<li>the multi-downloader panel's list of downloaders now supports right-click menu to copy query texts and pause/play files/searching</li>
<li>added a 'derpibooru tag search - no filter' GUG that disables the default derpi no-explicit-files rule</li>
<li>added basic gfycat support to default client--drag and drop any typical video page, and it should import ok</li>
<li>fixed the canvas/hover window tag sorting discrepancy--all tags are now sorted with the same code, and the media view sort order should be the same as your default sort order (although in this case incidence has no effect as there are no tag counts)</li>
<li>rewrote the network job control's cog menu to be a bit more dynamic, and added 'override gallery slot requirements for this job' if appropriate</li>
<li>fixed a stupid typo bug in the shutdown maintenance jobs test code that was causing pending repository work to not report right</li>
<li>fixed gallery searches that include unicode characters that end up in the path of the url (rather than the query parameters)</li>
<li>fixed an issue where highlighting a watcher would unpause its checking</li>
<li>generalised the way the new listctrl class can produce right-click menus</li>
<li>fixed some api link calculation that was over-prescribing api link display pairs (this affected the artstation file page url class by default). these pairs are now also sorted in the links dialog</li>
<li>misc png-export improvements to present better with the new easy import/export stuff</li>
<li>the summary texts in the tag filter panel now ellipsize (...), so if the tag filter is complicated, it won't try to boot a superwide edit panel!</li>
<li>the manage subscriptions panel now correctly initially sorts in a case-insensitive way (previously, it was usually sorting A-Za-z, which is different to regular aA-zZ resorting behaviour, so it always sort-flickered after the first edit)</li>
<li>the status bar has a new segment for reporting when the client is 'busy' with different jobs. for most typical usage, it'll just stay blank. let's see how it goes.</li>
<li>fixed mr. bones's wild review when the client currently has no files</li>
<li>punched up the new file report mode to specify full paths where available</li>
<li>improved some misc downloader code</li>
</ul>
<li><h3>version 322</h3></li>
<ul>
<li>wrote gugs help</li>
<li>gave url classes and parsers help a pass</li>
<li>wrote e621 html gallery page example help</li>
<li>wrote gelbooru html file page example help</li>
<li>wrote artstation json file page example help</li>
<li>wrote url class links help</li>
<li>gallery logs for the gallery downloader and url downloader now support 'try again' and 'skip' right-click menu for gallery log entries. the try again allows just the one page or also allowing search to continue) so, if a gallery query fails for some reason, you can now try again/continue where it broke. subs/watcher/simple downloader work on more complicated gallery search logic, so their gallery logs will remain read-only for now</li>
<li>all gallery log buttons now support right-click menu to mass-export urls to png or clipboard. non read-only also support import</li>
<li>fixed an issue with gallery searches that rely on both api url conversions and url class next gallery page urls (I think just artstation and tumblr by default) not generating the next page url correctly</li>
<li>improved some misc gallery url processing logic</li>
<li>fixed some issues with gallery url generators with invalid example urls causing problems opening the edit gug and gallery selector panels</li>
<li>fixed an issue where you could only delete a gug if it was in an ngug, ha ha</li>
<li>thanks to a different submission by prkc on the discord, collections now have a _right-click->set collections as groups of alternates_ duplicate action (note the duplicate menu only appears in advanced mode). the related shortcut action duplicate_media_set_alternate_collections is also added</li>
<li>export phrases now support '\' ('/' in linux) in the path export phrase in order to create folders. you should also be able to do \[series]\ to create optional namespace folders. slashes in tags will still be replaced with _</li>
<li>to stop the client sometimes doing laggy vacuum checks every maintenance cycle, vacuums that cannot occur due to limited disk space now will still count as 'done' for the purposes of rescheduling</li>
<li>added 'file report mode' to the help debug menu. This will spam popups as file and thumbnail actions are requested</li>
<li>tightened up some network job status setting to help us debug the 'there are a ton of jobs in network engine, but the three active on this domain seem stalled' issue</li>
<li>wrote a simple 'review threads' panel under help->debug->data actions->review threads. I knocked it together in about ten minutes, and it's likely unstable as hell, but it's pretty neat!</li>
<li>some instances where many file paths are copied quickly (exporting paths to clipboard and drag and drop) no longer do a safety check for file existence, so should be much faster to go. this particularly reduces startup lag for large file drag and drops!</li>
<li>the 'would you like to do maintenance work in this shutdown?' dialog now lists a summary of what it thinks it'll be working on. I _could_ make this more detailed, so let me know how it works for you</li>
<li>tags with numbers should now sort according to the new improved human sorting method--it now shouldn't matter where the numbers are in the tag--as long as the text-and-number-breaks lines up with another tag, they'll be compared each part in turn correctly</li>
<li>fixed some human sorting code for unusual number characters like ?. they will be treated as text, not a number, for now</li>
<li>misc fixes</li>
</ul>
<li><h3>version 321</h3></li>
<ul>
<li>downloader overhaul:</li>
<li>the basic downloader overhaul is complete! at this point, any user can create and share the objects required for a completely new downloader! it is still rough in some places, so a round of EZ-import is coming to make adding new downloaders a single easy drag and drop action</li>
<li>rounded out the ngug (nested gugs, which contain multiple gugs) code</li>
<li>updated the edit gug panel to deal with gugs and ngugs on different notebook pages</li>
<li>added a bunch of logic to this panel and backend data handling to deal with missing gugs in ngugs</li>
<li>if an ngug cannot find a gug by its internal identifier key, it will now attempt to fallback to its simple name, and will silently fail if no gug can be found. all gug tracking now uses this 'key first, name later' id method, so downloaders and subs should generally survive gug renames and same-name overwrites</li>
<li>the gallery selector now works in gugs. it has two 'pages', depending on which gugs are set to 'display', and will note if the chosen gug is cannot be found in the current definitions. the gugs have slightly more specific names ('gelbooru tag search', 'hentai foundry artist lookup', etc...) than before</li>
<li>the gallery selector also puts 'non-functional' gugs (i.e. those with no parsable gallery url class) to a third page</li>
<li>moved the gallery downloader gallery and file pipeline completely over to the new system</li>
<li>the gallery downloader will now bundle nested gugs (like hentai foundry artist, which searches both works and scraps) into a single downloader</li>
<li>moved the subs gallery and file pipeline comppletely over to the new system</li>
<li>the subs gallery sync now handles nested gugs (like hentai foundry artist, which searches both works and scraps) in an interleaved manner and make behind-the-scenes checking decisions in a clearer and more logical way</li>
<li>subs should now make correct 'hit limit' stop reason reports and not generate new gallery pages when the current page has exactly enough results to hit the current file limit</li>
<li>artstation artist lookup is now available as a default downloader</li>
<li>newgrounds artist lookup makes a triumphant return. it works pretty well, given how flash and NG has changed since</li>
<li>derpibooru tag lookup is now available as a default downloader. due to unusual search syntax on derpibooru, please enter queries exactly as you would on derpi, using ',' or ' AND ' to separate tags (such as 'rainbow dash,straight')</li>
<li>pixiv now has multiple artist lookup options--either images, manga, ugoira (doesn't work yet!), or everything</li>
<li>the old downloader code is deleted!</li>
<li>the old manage booru dialog is deleted!</li>
<li>'custom' boorus (i.e. new ones you created or imported to 'manage boorus'), cannot be completely automatically updated to the new system. I've figured out a way to generate new gugs and gallery&post parsers, but they will miss url classes to get working again. your custom-booru subs will notice this and safely pause until the issue is fixed. if you rely on custom boorus, please check the release post for info on this--you might like to put off updating</li>
<li>many misc changes and fixes to gugs and overall gallery url handling pipeline</li>
<li>some misc refactoring and concept-renaming in gallery pipeline r.e. gugs</li>
<li>when the downloader tries to import what looks like a raw html file, its error notes will specify this and suggest a parser may be needed</li>
<li>moved the 'media viewer url display' options panel from the manage url match links dialog to the new network->downloaders->manage downloader and url display</li>
<li>this new dialog also hosts a list for managing which downloaders to show in the first list of the downloader selector</li>
<li>.</li>
<li>misc:</li>
<li>gave the video rendering pipeline communication logic a quick pass, cleaning up a bunch of bad code and other decisions. the video renderer should be quicker to respond to various changes in scanbar position, and incidences of the frame buffer suddenly sperging out (usually inexplicably falling behind the current frame position or deciding to regen for no apparent reason) should be greatly reduced if not completely eliminated</li>
<li>the test that stops repository processing if there is not enough disk space now uses half the current size of client.mappings.db for its estimate (previously 1GB) and also tests temp folder location free space (just as the vacuum test does) and reports this nature of the error along with pausing the repo, stopping further attempts</li>
<li>might have fixed another out-of-order dialog close/open event combination during manage tags close->advanced content update open</li>
<li>fixed gallery queries that include '/' (or some other unusual characters) that end up in the 'path' of the url (as opposed to the query). this fixes 'male/female' on e621, for instance</li>
<li>'advanced mode' users now have a 'nudge subs awake' menu entry below 'manage subs'. this simply wakes the subs daemon (which usually only checks once every four hours), in case any subs are due</li>
<li>'db report mode' now reports every db job as it comes in (formerly, it only reported some optimisation esoterica). this makes it a more lightweight version of 'db profile mode' for several debugging tasks</li>
<li>fixed a tiny issue in fetching the 'how boned am I?' stats when the user had zero inbox/everything count</li>
<li>fixed a typo in the default new url class object that was breaking the edit ui panel</li>
<li>highlighted the quiet filename tagging options on edit import folder panel</li>
</ul>
<li><h3>version 320</h3></li>
<ul>
<li>clients should now have objects for all default downloaders. everything should be prepped for the big switchover:</li>
<li>wrote gallery url generators for all the default downloaders and a couple more as well</li>
<li>wrote a gallery parser for deviant art--it also comes with an update to the DA url class because the meta 'next page' link on DA gallery pages is invalid wew!</li>
<li>wrote a gallery parser for hentai foundry, inkbunny, rule34hentai, moebooru (konachan, sakugabooru, yande.re), artstation, newgrounds, and pixiv artist galleries (static html)</li>
<li>added a gallery parser for sankaku</li>
<li>the artstation post url parser no longer fetches cover images</li>
<li>url classes can now support 'default' values for path components and query parameters! so, if your url might be missing a page=1 initialsation value due to user drag-and-drop, you can auto-add it in the normalisation step!</li>
<li>if the entered default does not match the rules of the component or parameter, it will be cleared back to none!</li>
<li>all appropriate default gallery url classes (which is most) now have these default values. all default gallery url classes will be overwritten on db update</li>
<li>three test 'search initialisation' url classes that attempted to fix this problem a different way will be deleted on update, if present</li>
<li>updated some other url classes</li>
<li>when checking source urls during the pre-download import status check, the client will now distrust parsed source urls if the files they seem to refer to also have other urls of the same url class as the file import object being actioned (basically, this is some logic that tries to detect bad source url attribution, where multiple files on a booru (typically including alternate edits) are all source-url'd back to a single original)</li>
<li>gallery page parsing now discounts parsed 'next page' urls that are the same as the page that fetched them (some gallery end-points link themselves as the next page, wew)</li>
<li>json parsing formulae that are set to parse all 'list' items will now also parse all dictionary entries if faced with a dict instead!</li>
<li>added new stop-gap 'stop checking' logic in subscription syncing for certain low-gallery-count edge-cases</li>
<li>fixed an issue where (typically new) subscriptions were bugging out trying to figure a default stop_reason on certain page results</li>
<li>fixed an unusual listctrl delete item index-tracking error that would sometimes cause exceptions on the 'try to link url stuff together' button press and maybe some other places</li>
<li>thanks to a submission from user prkc on the discord, we now have 'import cookies.txt' buttons on the review sessions panels! if you are interested in 'manual' logins through browser-cookie-copying, please give this a go and let me know which kinds of cookies.txt do and do not work, and how your different site cookie-copy-login tests work in hydrus.</li>
<li>the mappings cache tables now have some new indices that speed up certain kinds of tag search significantly. db update will spend a minute or two generating these indices for existing users</li>
<li>advanced mode users will discover a fun new entry on the help menu</li>
<li>the hyperlinks on the media viewer hover window and a couple of other places are now a custom control that uses any custom browser launch path in options->files and trash</li>
<li>fixed an issue where certain canvas edge-case media clearing events could be caught incorrectly by the manage tags dialog and its subsidiary panels</li>
<li>think I fixed an issue where a client left with a dialog open could sometimes run into trouble later trying to show an idle time maintenance modal popup and give a 'C++ assertion IsRunning()' exception and end up locking the client's ui</li>
<li>manage parsers dialog will now autosort after an add event</li>
<li>the gug panels now normalise example urls</li>
<li>improved some misc service error handling</li>
<li>rewrote some url parsing to stop forcing '+'->' ' in our urls' query texts</li>
<li>fixed some bad error handling for matplotlib import</li>
<li>misc fixes</li>
</ul>
<li><h3>version 319</h3></li>
<ul>
<li>started the new convert-query-text-to-gallery-urls object. these objects, which I was thinking of calling 'Searchers', will be called the more specific and practical 'Gallery URL Generators', or GUGs for short</li>
<li>the first version of GUGs is done, and I've written some test ui for advanced users under network->downloader definitions->manage gugs. this ui doesn't save anything yet, but lets you mess around with different values. if we don't think of anything else needed in the next week, I will fix this code for v320 and start filling in defaults</li>
<li>watchers now have a checking slot, much like the recent change to galleries and subs. it safely throttles dozens of threads so they don't rudely hammer your (or the destination server's) CPU if they all happen to want to go at once (like just after your computer wakes up). the option is similarly under options->downloading</li>
<li>moved the new gallery delay/token management code to the better-fit bandwidth manager (it was in domain manager before)</li>
<li>the gallery delay/token code now works per-domain!</li>
<li>moved the gallery delay/token checking code into the network job proper, simplifying a bunch of import-level code and making the text display now appear in the network job control. token consumption now occurs after bandwidth (it is now the last hoop to jump through, which reduces the chance of a pileup in unusual situations) I expect to soon add some kind of 'force-go' action to the cog menu</li>
<li>the network engine will now not permit more than three jobs active per domain, and the overall limit has been raised from ten to fifteen</li>
<li>the media right-click menu now supports copying: all of a files recognised urls; all of a files urls; all selected files' urls of a specific url class; and all selected files urls</li>
<li>reworked and harmonised a bunch of urlparsing and generation code--all urls should now appear as full unicode across the program, generally without %20-type encoding characters unless explicitly entered by the user. character encoding now all happens on the backend in requests</li>
<li>non-url-class-matched urls now have their query parameters alphabetised as part of the normalisation process</li>
<li>all urls in the db will have their query params alphabetised on update, and any file relationships merged to the new/existing normalised url</li>
<li>the manage urls dialog will now normalise newly added urls (but should also still permit the removal of non-normalised urls)</li>
<li>reworked how gallery hits update file import object caches, particularly for subscriptions</li>
<li>fixed an issue in subscriptions gallery logging where the gallery log would always state it had found the max number of files and typically redundantly generate an 'ignored' stub--it should now say something like 'found 7 files - saw 5 previously seen urls, so assuming we caught up' as originally intended</li>
<li>simplified some gallery->file import object creation</li>
<li>galleries now compact until 100 entries (was 25)</li>
<li>watchers now gallery-compact after a successful check</li>
<li>watchers now show the 'just added'/'already watching' status for 15s, up from 5s</li>
<li>network report mode now reports three time--once each for job addition, start, and successful completion</li>
<li>fixed an issue with the new 'max width' popup sizing calculation that was sometimes not fitting for new height requirements correctly</li>
<li>fixed an issue with the new url class next page generation code</li>
<li>fixed an issue where TIOs with data regarding since-deleted services were failing to initialise at the ui level</li>
<li>misc status text cleanup</li>
</ul>
<li><h3>version 318</h3></li>
<ul>
<li>downloaders:</li>
<li>extended url classes to support 'next gallery page' generation--a fallback that predicts next gallery page url if the parser cannot provide it (as is often the case with APIs and unreliable next-page-url galleries such as gelbooru)</li>
<li>integrated this new next page generation into new gallery processing pipeline</li>
<li>updated gelbooru, tumblr api and artstation gallery api url classes to support the new next gallery page business</li>
<li>fixed the url class for xbooru, which wasn't recognising gallery urls correctly</li>
<li>wrote new gallery parsers for rule34.paheal and mishimmie (which are both shimmie but have slightly different gallery layout). this should finally solve the 'one paheal gallery url is being parsed into the file list per page' problem</li>
<li>'fixed' the tumblr parser to fetch the 1280px url (tumblr killed the raw url trick this past week)</li>
<li>misc text/status fixes</li>
<li>wrote a gallery parser for tumblr that fetches the actual tumblr post urls and hence uses the new tumblr post parser naturally! (tumblr post urls are now more neatly associated as 'known urls' on files!)</li>
<li>note that as the tumblr downloader now produces different kinds of urls, your tumblr subs will hit your periodic limits the next time they run. they will also re-download any 1280px files that are different to the previously fetched raws due to the above raw change (protip: keep your subscription periodic file limits low)</li>
<li>cut the 'periodic limit' subscription warning popup down to a much simpler statement and moved the accompanying help to a new help button on the edit sub panel</li>
<li>multi-gallery pages now have an 'added' column like multi-watchers</li>
<li>the new 'pause' ? and 'stop' ? characters shown in the multi-downloader pages are now customisable under options->downloading (some users had trouble with the unicode)</li>
<li>the watcher now shows the 'stop character' if checking is 404/DEAD</li>
<li>fixed an issue where the new gallery imports on the same multi-page were all sharing the same identifier for their ephemeral 'downloader instance' bandwidth tracker, which meant they were all sharing the same '100rqs per 5mins' etc... rules</li>
<li>the page and subscription downloader 'gallery page delay' is now program-wide (since both these things can run in mass parallel). let's see how it goes, maybe we'll move it to per-site</li>
<li>subscription queries now auto-compact on sync! this means that surplus old urls will be removed from their caches, keeping the whole object lean and quick to load/save</li>
<li>gallery logs now also compact! they will remove anything older than twice the current death velocity, but always keep the newest 25 regardless of age</li>
<li>.</li>
<li>misc:</li>
<li>the top-right hover window will now always appear--previously, it would only pop up if the client had some ratings services, but this window now handles urls</li>
<li>harmonised 'known urls' view/copy menu to a single code location and added sorted url class labels to entries (which should reduce direct-file-url misclicks)</li>
<li>greatly sped up manage tags dialogs initial calculation of possible actions on a tag alteration event, particularly when the dialog holds 10k+ tags</li>
<li>greatly sped up the second half of this process, when the action choice is applied to the manage tag dialog's current media list</li>
<li>the buttons on the manage tags dialog action popup dialog will now only show a max of 25 rows on their tooltips</li>
<li>some larger->smaller selection events on large pages with many tags should be significantly faster</li>
<li>subscription popups should now 'blank' their network job controls when not working (rather than leaving them on the old job, and without flickery-ly removing the job control completely)</li>
<li>the file cache and gallery log summary controls now have ... ellipsized texts to reduce their max width</li>
<li>fixed an issue where larger 'overriding bandwidth' status wait times would sometimes show instead of legit regular smaller bandwidth wait times</li>
<li>removed a now-superfluous layer of buffering in the thumbnail grid drawing pipeline--it seems to have removed some slight lag/flicker</li>
<li>I may have fixed the issue where a handful of thumbs will sometimes remain undrawn after several fast scrolling events</li>
<li>gave the some-linux-flavours infinitely-expanding popup message problem another pass. there _should_ be an explicit reasonable max width on the thing now</li>
<li>added a 'html5lib not found!' notification to the network->downloaders menu if this library is missing (mostly for users running from source)</li>
<li>help->about now states if lz4 is present</li>
<li>gave 'running from source' help page another pass, including info on running a virtual environment</li>
<li>in file lookup scripts, the full file content now supports string transformations--if this is set to occur, the file will be sent as an addition POST parameter and the content-type set to 'application/x-www-form-urlencoded'. this is a temp fix to see if we can get whatanime.ga working, and may see some more work</li>
<li>if the free space on the db dir partition is < 500MB, the program will not boot</li>
<li>if the free space on the db dir partition is < 1GB, the client will not sync repositories</li>
<li>on boot the client can now attempt to auto-heal a missing local_hashes table. it will give an appropriate error message</li>
<li>misc post-importing-cleanup refactoring</li>
</ul>
<li><h3>version 317</h3></li>
<ul>
<li>completely overhauled the tag filter panel:</li>
<li>the tag filter panel now has 'whitelist' and 'blacklist' pages beside the old 'advanced' sub-panel. these new simple pages are much more human friendly for common workflows and provide easy-select checkboxes for namespace classes (which are compiled from all the namespaces your parsers can currently do)</li>
<li>the tag filter rule entering workflow now stops you from creating overcomplicated rulesets: when adding a blacklist rule, it will now only add an explicit entry if it is not already blocked by a higher rule (otherwise it will just discard from whitelist, if there)--and when adding a whitelist rule, it will now only add an explicit entry if it is already blocked by a higher blacklist rule (otherwise it will just discard from blacklist, if there)</li>
<li>tag filters now provide more human-friendly summary statements</li>
<li>misc improvements to tag filter ui logic</li>
<li>the various help texts surrounding the tag filter panel all got passes</li>
<li>the tag filter panel now uses text-and-paste controls for mass-adding of tags</li>
<li>namespace checkboxes have been completely removed from the tag import options panel and various other related places. any existing TIO with checked namespaces will be automatically updated to 'get tags' with an appropriate filter. this is an important step in the rewrite--everything is now handled in the new tag filter panel</li>
<li>simplified and sped up the actual tag filtering code</li>
<li>.</li>
<li>numerous multi-importer improvements:</li>
<li>the gallery and watcher page lists will now ~dynamically~ resize in height based on number of entries, from roughly four columns to twenty four. this relayout code somehow seems to work on all platforms</li>
<li>sped up the 'results loading' step of gallery/watcher highlighting immensely--on a typical list of a couple hundred files, it should now be about 50ms total (before, depending on presentation rules, it could be 0.8-3s)</li>
<li>added an additional db-skipping optimisation for calculating presentation status</li>
<li>watcher and gallery highlights will now filter out trash and completely deleted files (the ones that appear with a dark default 'hydrus' icon) on reloads</li>
<li>added two checkboxes to options->downloading for 'if nothing is highlighted when I add a new X, highlight that new X' for watchers and galleries</li>
<li>adding or removing a query or watcher from the new multi-lists should now be reflected in the list ui instantly, rather than after a <=1s delay</li>
<li>added url classes and parsers for imgur single and multiple urls--thanks to the community for providing some examples</li>
<li>added url class and parser for derpibooru single file pages--again thanks to the community. derpibooru hence now supports basic drag and drop import</li>
<li>fixed an issue where the watcher was often still checking despite 404 status</li>
<li>watchers and galleries use a little less CPU to update some of their ui</li>
<li>added simple subsidiary page parsing support to file import objects (previously, this only worked in the gallery log)</li>
<li>.</li>
<li>gave the thumbnail scrolling code a pass--it is now a bit cleverer about drawing and uses a larger number of smaller 'tile' bmps rather than pages</li>
<li>added an 'EXPERIMENTAL' option to options->gui to change the number of thumbnails each scroll tick scrolls. it defaults to 1.0, but you _should_ be able to set 0.5, 0.37, whatever. please report any bugs!</li>
<li>added a thumbnail debug mode to help see the new thumbnail layout boundaries</li>
<li>.</li>
<li>misc:</li>
<li>the max subscription file limits are now 10,000 for users in advanced mode</li>
<li>the default subs initial/periodic limit is now 100/100 (bumped up from 100/50)</li>
<li>the file import dialog now has a little cog icon to change whether human sort is applied on path addition events (for e.g. if you want to add in some date order from an explorer window)</li>
<li>humansort now sorts case-insensitive</li>
<li>by default, unmatched urls will no longer display in the top-right of the media viewer. see how you like this and let me know if you would like an option to put them back</li>
<li>the speed text on the right-side of the network job control now dynamically resizes to its min size, which gives the text on the left side (where it is often cut off, saying 'overriding bandwidth ...') more space when available</li>
<li>I think I fixed an issue where the popup frame could spam-resize in odd ways (such as growing a pixel wider every update tick)</li>
<li>watchers will no longer include the '* ' highlight prefix in subject-based sort comparisons</li>
<li>in prep for an eventual major code refactoring, the thumbnails' underlying media object now stores a faster db-based numeric file identifier</li>
<li>'duplicate' calls on the new listctrl will now insert the dupes in the current correct sort location, rather than tacking them on the end</li>
<li>drag and drop imports to the new listctrl will also now insert like this</li>
<li>caught up edit subscriptions panel to the finalised common listctrl panel code, including the import/export/duplicate buttons</li>
<li>the multiple checkboxlist selection dialog now sorts by label</li>
<li>converted all old checkboxlist dialogs to the new panel system</li>
<li>massively sped up certain kinds of parsing that were wasting time hitting a cache test way too often</li>
<li>fixed an old hash filtering system</li>
<li>moved to a simpler and more stable way of calculating certain text extents</li>
<li>fixed an issue where the include directory (which has the original source, which isn't a big deal but is nice to have) wasn't being correctly copied into the linux build</li>
<li>the os x .tar.gz build now has the include directory</li>
<li>refactored some client tags code around</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 316</h3></li>
<ul>
<li>gallery:</li>
<li>gallery url classes can now be linked to parsers!</li>
<li>if parsers are linked, gallery pagewalk can now work on the new parsing system. gallery import pipeline has been significantly updated to reflect this</li>
<li>gallery import objects are now 'multiple' gallery imports, much like the multi-watcher, with each separate query having its own entry in a list (they also run in parallel!)</li>
<li>the multi-gallery list will show file/gallery pause status in slender columns, and will show a 'stop' character when gallery parsing is done</li>
<li>wrote a 'gallery selector' button and added it to the new multi-gallery page, so you can spawn queries for ~different sites~ on the same import page! it always defaults to 'deviant art' for now, but when the next 'searcher' overhaul step is done, this will be customisable</li>
<li>the new page selector and related 'pages' menu is now simpler--with the new selector, you just select 'gallery'</li>
<li>added 'new_gallery_downloader_page' shortcut action to the 'main gui' set to allow quick opening of this new page type</li>
<li>wrote a 'gallery import panel', which reviews a single gallery import stream, and added it to the multi-gallery page to show the current highlighted query</li>
<li>as all gallery imports now run in parallel and work on the new system, the now almost-useless 'cancel' gallery pagewalk button is now removed</li>
<li>with the wider availability of the new gallery log for file count and error reports, shifted around and smoothed out some gallery status text presentation</li>
<li>improved the auto url_class->parser linking 'try to fill in gaps' logic to work with gallery urls (this was surprisingly complicated)</li>
<li>fixed a misc stupid waste of time in auto url_class->parser linking</li>
<li>many misc updates to gallery pipeline</li>
<li>.</li>
<li>subscriptions:</li>
<li>wrote a new gallery pagewalk pipeline for subscriptions, which still does oldest-to-newest url addition and obeys file limits and so on</li>
<li>numerous subscription pipeline and error handling tweaks and improvements, particularly in regards to the new code</li>
<li>subscriptions now have max initial and periodic file limits of 1000. existing subs with >1000 or infinite will be cut to 1000. there is a help button on the edit sub panel to explain why you should do large syncs with the manual downloader and not subs</li>
<li>the ugly and dangerous-if-you-scroll-in-the-wrong-place gallery selector mismash control in the edit subscription panel is now replaced with the new gallery selector button</li>
<li>fixed an issue where the edit subs panels could sometimes say '48 years ago' (i.e. displaying a literal time delta since 0, 1970) on initial timestamps</li>
<li>juggled some 'periodic limit' reporting logic to skip an unusual false positive that affect hentai foundry subs for now and more in future</li>
<li>.</li>
<li>urls:</li>
<li>the url downloader now accepts gallery urls and will receive drag-and-dropped gallery urls. at the moment, it only parses the one page (i.e. it doesn't start a new 'searching' pagewalk) and sends the parsed links to its file queue</li>
<li>.</li>
<li>watcher:</li>
<li>finished 'watcher panel', which reviews a watcher, and added it to the multi-watcher page to show the current highlighted watcher</li>
<li>the single watcher page is completely removed--it is only the multiple watcher now. all singles will be converted to multiples on update</li>
<li>some single-watcher options (like watchers naming their own page tabs and the [404]-style page name prefixes) are removed</li>
<li>multiple watcher panel now lists file/checking pause status and has separate buttons to control these paused statuses</li>
<li>fixed some misc watcher highlight code--highlighted watchers should correctly publish to the page from the start of session load now</li>
<li>improved some 'repage' logic in how highlighted threads get removed</li>
<li>.</li>
<li>misc:</li>
<li>discovered a scroll-setup parameter that stops janky scroll-to-click-focus behaviour on all the new scrolling panels, thank the LORD</li>
<li>improved some 'can't parse' error handling for post url parsing</li>
<li>reworked how all importers present their network jobs to the ui, including fast response if the switch happens during a job</li>
<li>in prep for searcher switchover where all downloader sources will be harmonised into one system, booru identifiers now present in several ui locations as 'name', not 'booru: name'</li>
<li>updated the danbooru parser to deal with the new 'next page' markup they use</li>
<li>wrote a gelbooru gallery parser that works with 0.2.0 and 0.2.5 gelb sites--an ancillary issue where gelb-related downloaders could sometimes not accurately figure out the magic '42' next-page offset is hence now fixed</li>
<li>wrote an e621 gallery page parser</li>
<li>these sites hence now support single-page gallery drag-and-drop</li>
<li>added url classes for artstation gallery url and its api counterpart, but didn't go further yet--we aren't quite there with api pagewalking just yet</li>
<li>updated deviant art gallery url classes</li>
<li>added an e621 'search initialisation' gallery url class to improve some future drag-and-drop stuff</li>
<li>url normalisation no longer cuts off 'www.'-style prefixes</li>
<li>url comparison is more careful to test 'www.'-style prefixes, so a file import cache should recognise that 'http://www.blah.com/blah' is the same as 'https://blah.com/blah'</li>
<li>did a bunch of refactoring to further split up the bloated ClientImporting.py</li>
<li>fixed some misc downloader layout that may have been hiding some texts previously</li>
<li>some multi-watcher and multi-gallery events like add/pause query should be a bit snappier</li>
<li>in the parsing ui, url and title priorities are now 50 by default</li>
<li>prepped a little subscription unit test code for when searcher object is done</li>
<li>misc downloader layout improvements</li>
<li>misc listctrl refactoring</li>
</ul>
<li><h3>version 315</h3></li>
<ul>
<li>got started on the big gallery update, but decided not to pull the trigger just yet. I hope to do it next week, switching the whole thing over to a two-object multi-watcher kind of deal</li>
<li>updated to wxPython 4.0.3 for all platforms</li>
<li>cleaned up some menubar replacement code, and the update to the new wxPython should also fix a "event for a menu without associated window" bug some gtk2 users were seeing on quick menubar changes</li>
<li>manage default tag import options panel now has copy/paste buttons that work on the listctrl</li>
<li>added some 'paste tag import options' safety code to make sure no one accidentally pastes a subscription or something in there, wew</li>
<li>added default checker options for subscriptions to options->downloading</li>
<li>unified how checker options are edited from their button, much like how file and tag import options work. it also has a summary tooltip on the button</li>
<li>the checker options under options->downloading are now these slimmer buttons</li>
<li>in the manual import dialog (which pops up when you drop a folder/files on the client), the files will now be added in 'human friendly' number sorting, so files of the sort 'Favourites - 10.jpg' will sort [10, 11, ..., 99, 100] rather than the purely lexicographic [10, 100, 11, ..., 99]</li>
<li>gave the migrate database dialog a pass--a bunch of misc presentation changes and a general simplification of workflow, now based more on just increase/decrease location weight</li>
<li>a bunch of texts on page management (left-hand) panels that share horizontal space with buttons should now ellipsize ("downlo...") when they get too long for the width instead of drawing in an ugly way over the buttonspace</li>
<li>moved the manage import folders dialog to the new listctrl and added a 'paused' and better 'check period' column</li>
<li>if a user tries to run a 'paused' import folder specifically from the menu, the import folder will now unpause (I will probably remove this old paused variable in the future--it isn't of much use any more)</li>
<li>tightened up some repository reset code that wasn't deleting all service tables and hence recovering from some service id malformation errors correctly</li>
<li>wrote a 'clear orphan tables' db maintenance routine that kills some spare tables some users who have previously deleted/reset repositories may have floating around</li>
<li>fixed an issue with parsing folders after hitting cancel button on the import files pre-dialog</li>
<li>if watchers encounter non-404 network errors during check, they should now just delay checking for four hours (before, they were also pausing checking completely)</li>
<li>if watchers are in 'delay' mode, they'll also not work on files.</li>
<li>file and gallery downloads that hit a 403 (Forbidden) will now present a simpler error status, like they do for 404</li>
<li>the new post downloader will no longer fail if one of the parsed source urls is not a url. the borked string will also not be associated as a url</li>
<li>regular gallery downloads now override bandwidth for the file download step, which is almost always the second half of a pair of post_url/file downloads, just to keep things in sync in edge cases</li>
<li>cleaned up some timestamp generation and 'overriding in x seconds' strings to be more human friendly</li>
<li>improved some serverside file parse error handling to propagate the actual error description up to the client a bit better</li>
<li>fixed typo causing incorrect num_ignored count in file import status button right-click menu</li>
<li>parseexceptions will now present more data about which page and content parser caused the problem. I am not totally happy about how this solution works and may revisit it</li>
<li>the lz4 import error catching is now more broad to catch some odd problem I discovered in new Linux build environment</li>
<li>the moebooru parser now fetches the original png of an image, if available</li>
<li>added a new tumblr parser that also gets post tags--it _shouldn't_ be the default</li>
<li>the new login pipeline now kicks in for the legacy logins--pixiv and hentai foundry--on a per-url basis, so adding pixiv/hf urls to the url downloader will trigger a login even if needed (previously, this was tied to legacy gallery initialisation, which explains some pixiv 'missing' login stuff some users and I were having trouble with)</li>
<li>if the legacy login system fails in the new pipeline, it now sets a flag and won't try again that client boot</li>
<li>the old 'default tag import options' panel is now completely removed from options->importing. please check 'network->downloaders->manage default tag import options' for the new url-based settings</li>
<li>misc fixes</li>
</ul>
<li><h3>version 314</h3></li>
<ul>
<li>tag import options can now be set to 'default', meaning 'use whatever the default is at the time of import', which will be an easier way of managing TIOs for many subs that you'd prefer all share the same TIO settings anyway</li>
<li>updated tag import options ui to enable this default setting where appropriate</li>
<li>updated the newer import pipeline to work with 'default'-set tag import options</li>
<li>new downloaders, subscriptions, watchers, and multi-watchers now start with 'default' tag import options</li>
<li>deleted the old default tag import options management code and put some text up on options->importing making notice about the impending shift. a popup message will also say this on update</li>
<li>tag import options buttons now have a right-click menu with copy/paste/default options for quick assignment and duplication!</li>
<li>added 'overwrite tag import options' to manage subscriptions--once you are comfortable with the new 'default' TIO mode, and after some small tests, you might want to switch all your subs over to 'default'</li>
<li>the 'urls' downloader now has a tag import options--it initialises as 'default'</li>
<li>added furry.booru.org to gelbooru 0.2.0 parser</li>
<li>wrote a hentai foundry file page parser</li>
<li>wrote a moebooru file page parser (this works for konachan, yande.re, and sakugabooru)</li>
<li>wrote a shimmie parser (this works for rule34.paheal, rule34hentai, and mishimmie)</li>
<li>wrote a newgrounds parser</li>
<li>integrated the user-created sankaku parser</li>
<li>wrote a tumblr parser that handles photo, photoset, and video posts, auto-converts to 'raw' urls for those post-2012 urls that can handle it, figures out a creator tag (reverting to the reblog root if it is a reblog post!), and cooks you breakfast</li>
<li>(hence all these above sites now support drag and drop!)</li>
<li>rolled out some new tumblr url classes to handle all this.</li>
<li>added sakugabooru url classes</li>
<li>fixed an issue where url classes were not normalising api urls in all cases, meaning some url classes would not api-link correctly in 'manage url class links' panel</li>
<li>fixed an issue with deviant art legacy gallery parser pulling some funky 'creator:' tags</li>
<li>some misc new downloader error handling improvements</li>
<li>the watcher now uses the new gallery object to parse and generate file import objects</li>
<li>the downloaders with gallery logs should now report non-success gallery fetches, along with error tracebacks (this will include some no-worry 404s the legacy downloader sometimes uses to terminate searches)</li>
<li>added image and thumbnail cache timeout time delta buttons to options->speed and memory</li>
<li>added a 'show the D on short file import summaries' checkbox to options->downloading--it defaults to off</li>
<li>the 'I' on short file import summaries is now 'Ig' to clear up 1/I confusion</li>
<li>added 'copy queries' to the edit subscription panel, which lets you copy all the selected queries' search texts to clipboard, newline separated</li>
<li>added a checkbox to options->gui that commands 'last session' only be autosaved during idle time. this is useful if you usually have a huge (200k+ file) session and your client is always on</li>
<li>fixed file import status button right-click, which I messed up somehow last week with the 'retry ignored' add</li>
<li>shook up and collapsed the network menu into neater categories</li>
<li>tightened-up the rarely used pre-parsing conversion panel on the edit page parser panel to just a button with a bit of explaining text</li>
<li>if database errors include the word 'malformed', the client now throws a little extra error text pointing people to the help.txt in the db dir</li>
<li>cleared out some legacy download code</li>
<li>cleared out legacy hard drive import error handling, moving it all to the new file import object</li>
<li>misc refactoring and cleanup</li>
</ul>
<li><h3>version 313</h3></li>
<ul>
<li>fleshed out the new gallery log and its constituent log entry objects</li>
<li>added gallery logs to gallery downloaders, subscriptions, url downloaders, simple downloaders and watchers</li>
<li>added very simple gallery log reporting to these downloaders</li>
<li>added first, read-only version of gallery log ui to these downloaders</li>
<li>fleshed out some new gallery/file-object pipeline stuff</li>
<li>wrote a simple danbooru gallery page parser and added it on update. it doesn't do anything yet, but if you are into the new parsing system, please check it out as an example</li>
<li>the url downloader now has a full file import status control with status text</li>
<li>fixed a url count issue on completely fresh gallery downloads that was stopping gallery searches one file (like 199 vs 200) before the file limit</li>
<li>the pixiv downloader now fetches 'type=all' gallery pages, which include specifically manga file pages (as opposed to merely multi-file 'illustrations')</li>
<li>added 'retry ignored' to the file import status button's right-click menu</li>
<li>fixed the deviant art url class and parser to use the new file page format. also added an '(old format)' class to match the old way for legacy purposes (this legacy class also uses an api conversion to connect to the new parser--we'll also figure out a way to convert all these over at the db level en masse later!)</li>
<li>updated some similar deviant art gallery stuff as well</li>
<li>tag import options now has a tag filter to go along with the 'get all tags' checkbox! ('get all tags' is now renamed to 'get all' as a result). this filter lets you make more complicated tag filtering decisions like 'get all tags except "species:" tags'.</li>
<li>the new 'only get tags if they already exist' checkbox now also has a filter, if you want to only apply this test to a subset of tags (like the unwashed mess of unnamespaced tags many boorus and sites provide)</li>
<li>generalised a 'tag filter' button class to make it simpler to edit tag filters across the program, and cleaned up some related status code</li>
<li>fixed a problem with deriving tag import options for specific url classes when that url class was part of an api-url-class chain</li>
<li>if the domain manager cannot now find a url match for a pending download, it now assigns the file post default tag import options to that import</li>
<li>added a new 'duplicates' options page that has a hacky way to edit the weighted scores used to determine which of the pair of files to present file in the duplicates filter</li>
<li>unifed how some file import status generation works, adding a new 'simple status' string to briefly summarise progress in multi-watcher and edit subscriptions columns</li>
<li>cleared out some old redundant status caching in the urls downloader</li>
<li>simplified how almost all timestamp strings are generated</li>
<li>simplified how time delta strings are generated</li>
<li>brushed up some simple common ways to present timestamps as 'human pretty' strings</li>
<li>all places where timestamps would be presented as a mix of '5 days ago' and complete datetime strings will now present as '5 days ago' unless you set the new options->gui 'always show iso' checkbox. going back to simple to clear up confusion in workflow and code. I may revisit this, as turning on ISO mode now spams it all over the place</li>
<li>cleaned up the 'looks like the computer just woke from sleep' check and reduced its grace period to fifteen seconds. foreground daemons (like the subscription daemon) and the network engine will now also obey it</li>
<li>added a 'simulate wake from sleep' debug action to better test the sleep-wake detection code</li>
<li>improved my custom statictext class to auto-wrap text without flickering</li>
<li>used this new autowrapping to improve wrapping and layout of popup message texts</li>
<li>replaced all other st wrapping with this new code</li>
<li>wrote a little helper function to better dedupe lists in future</li>
<li>did a bunch of refactoring to neaten some long common func names</li>
<li>deleted some old unused code</li>
</ul>
<li><h3>version 312</h3></li>
<ul>
<li>converted much of the increasingly complicated tag import options to a new sub-object that simplifies a lot of code and makes things easier to serialise and update in future</li>
<li>tag import options now allows you to set whether tags should be applied to new files/already in inbox/already in archive, much like the file import options' 'presentation' checkboxes</li>
<li>tag import options now allows you to set whether tags should be filtered to only those that already have a non-zero current count on that tag service (i.e. only tags that 'already exist')</li>
<li>tag import options now has two 'fetch if already in db' checkboxes--for url and hash matches separately (the hash stuff is advanced, but this new distinction will be of increasing use in the future)</li>
<li>tag import options now applies sibling and parent collapse/expansion before tag filtering, which will improve filtering accuracy (so if you only want creator tags, and a sibling would convert an unnamespaced tag up to a creator, you will now get it)</li>
<li>the old 'all namespaces' checkbox is now removed from some 'defaults' areas, and any default tag import options that had it checked will instead get 'get all' checked as they update</li>
<li>caught up the ui and importer code to deal with these tag import option changes</li>
<li>improved how some 'should download metadata/file' pre-import checking works</li>
<li>moved all complicated 'let's derive some specific tag import options from these defaults' code to the tag import options object itself</li>
<li>wrote some decent unit tests for tag import options</li>
<li>wrote a parser for deviant art. it has source time now, and falls back to the embedded image if the artist has disabled high-res downloading. if it finds a mature content click-through (due to not being logged in), it will now veto and set 'ignored' status (we will revisit this and get high quality nsfw from DA when the login manager works.)</li>
<li>if a check timings object (like for a subscription or watcher) has a 'static' check interval, it will now apply that period to the 'last next check time', so if you set it to check every seven days, starting on Wednesday night, it will now repeatedly check on Wed night, not creep forward a few minutes/hours every time due to applying time to the 'last check completed time'. if you were hit by this, hit 'check now' to reset your next check time to now</li>
<li>the multiple watcher now sorts by status by default, and blank status now sorts below DEAD and the others, so you should get a neat subject-alphabetical sort grouped by interesting-status-first now right from the start</li>
<li>added 'clear all multiwatcher highlights' to 'pages' menu</li>
<li>fixed a typo bug in the new multiple watcher options-setting buttons</li>
<li>added 'retry ignored' buttons to edit subscription/subscriptions panels, so you can retry pixiv manga pages en masse</li>
<li>added 'always show iso time' checkbox to options->gui, which will stop replacing some recent timestamps with '5 minutes ago'</li>
<li>fixed an index-selection issue with compound formulae in the new parsing system</li>
<li>fixed a file progress count status error in subscriptions that was reducing progress rather than increasing range when the post urls created new urls</li>
<li>improved error handling when a file import object's index can't be figured out in the file import list</li>
<li>to clear up confusion, the crash recovery dialog now puts the name of the default session it would like to try loading on its ok button</li>
<li>the new listctrl class will now always sort strings in a case-insensitive way</li>
<li>wrote a simple 'fetch a url' debug routine for the help->debug menu that will help better diagnose various parse and login issues in future</li>
<li>fixed an issue where the autocomplete dropdown float window could sometimes get stuck in 'show float' mode when it spawned a new window while having focus (usually due to activating/right-clicking a tag in the list and hitting 'show in new page'). any other instances of the dropdown getting stuck on should now also be fixable/fixed with a simple page change</li>
<li>improved how some checkbox menu data is handled</li>
<li>started work on a gallery log, which will record and action gallery urls in the new system much like the file import status area</li>
<li>significant refactoring of file import objects--there are now 'file seeds' and 'gallery seeds'</li>
<li>added an interesting new 'alterate' duplicate example to duplicates help</li>
<li>brushed off and added some more examples to duplicates help, thanks to users for the contributions</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 311</h3></li>
<ul>
<li>wrote a new parser that muddles its way through pixiv's new dynamic javascript layout. it seems to get everything working again. it gets tags in kanji, although the unnamespaced pixiv tags remain low quality, and you may wish to just not parse them at all anyway</li>
<li>fixed some misc parser text handling, unicode conversion etc...</li>
<li>the new pixiv parser has a 'page' tag stub that should inform tag import options in the old downloader</li>
<li>the multiple watcher now remembers the highlighted watcher through a session restart</li>
<li>the multiple watcher now shows the highlighted watcher's url up top</li>
<li>the multiple watcher now has checker, file import, and tag import options, which it will assign to all new watchers it creates</li>
<li>the multiple watcher now has a 'set options to watchers' button that will force-set the current options to all the selected watchers</li>
<li>the multiple watcher now has an 'added' column with watcher creation time listed. storing this creation time is new, so any existing watchers will get a new creation time of their next load time, but it is remembered henceforth. the listctrl here is now pretty crushed for width, so maybe we'll rejigger some stuff here</li>
<li>watchers added to a multiple watcher will now have a status of 'just added' for five seconds</li>
<li>watchers that are added to a multiple watcher that is already watching them will now have the status of 'already watching' for five seconds</li>
<li>the multiple watcher list now has a much taller minimum height--layout here is another work in progress</li>
<li>fixed the inkbunny parser (and a related tweak to the inkbunny url class)--it now uses the new 'multiple-file-per-post' import object generation to actually walk through the pages of the mini-gallery (which for inkbunny have -p2- suffixes on the url) to fetch only the correct files and url-associate them neatly</li>
<li>tag import options now has a 'get all tags' checkbox, which can override the normal namespace checkboxes. it gets all tags, even those with namespaces not listed, which happens for several reasons in the new download system. (eventually, the namespace list may be replaced with a slightly different system)</li>
<li>watcher tag import options no longer list 'filename' under their namespace checkboxes--they just have this 'get all tags', which works for everything (so watching yiff.party pages should now get tags)</li>
<li>simplified and sped up similar files search at the db level</li>
<li>sped up some ratings search code</li>
<li>generalised some common file search optimisations, meaning they now apply in more situations and can take advantage of some other speed-ups:</li>
<li>similar files system predicate is now faster</li>
<li>inclusive ratings searches are now faster</li>
<li>duplicate relationship count searches with non-zero-inclusive count are now faster</li>
<li>removed some clumsy old ratings search optimisation code</li>
<li>exporting serialised objects as pngs is a bit easier--now, it displays current export path better, will remember the last export location used, and for single png exports will pre-fill the filename and 'title' value with a reasonable default</li>
<li>the content parser, page parser, and url class listctrls now accept serialised png files when drag and dropped!</li>
<li>the simple downloader should recover and continue better from malformed urls during a page parse</li>
<li>the url downloader should now recover better from various situations where it cannot not derive some tag import options (including urls with a 'file' url class, such as 4ch/8ch direct file links)</li>
<li>parse test results will now state the priority value of urls</li>
<li>gave the 'updating' section of help a pass and wrote a little more on how to do a big-version-gap update</li>
<li>when a new multi-file import object inserts its child file import objects while being looked at in the ui, the listctrl should now correctly refresh the displayed indices</li>
<li>subscriptions will now wait up to 90s for bandwidth (was 30s before, I think) before quitting, which should avoid a few more early-quit events</li>
<li>cleaned up some server decompression bomb testing</li>
<li>users with admin-level accounts can now upload decompression bombs to file repositories, better options on this will be avaliable in future</li>
<li>the manage urls dialog will now OK on the same 'manage_file_urls' shortcut action that can open it (like manage tags and ratings already do)</li>
<li>fixed the string converter for new file lookup parsing scripts</li>
<li>started work on some in-the-background mass file reparsing, but I want to get some nicer ui going before I pull the trigger on any of it</li>
<li>file reparsing now repopulates the table for md5, sha1, and sha512 hashes if they are missing</li>
<li>improved some ffmpeg error parsing</li>
<li>moved from basic list to a pop-faster collections.deque for importable path parsing and duplicate search branch regen</li>
<li>added a BUGFIX option to options->gui that forces minimum width for popup messages in the continuing attempt to deal with some funny fit/layout calculation in certain Linux WMs</li>
<li>fixed how some 'unrepairable db' error messages are displayed in Linux systems</li>
<li>cleaned up a ton of old tuple-stripping code from the db</li>
<li>updated to new sqlite for windows build</li>
<li>misc improvements</li>
</ul>
<li><h3>version 310</h3></li>
<ul>
<li>updated the inkbunny file page url class to acknowledge that inbunny pages can have multiple files</li>
<li>updated the inkbunny file page parser to handle multiple file urls (although they may be out of order and possibly sometimes include the artist profile image--this was not super easy)</li>
<li>added a parser for twitter tweets (only images supported atm, but it can handle multiple!) (hence tweet drag and drop now works!)</li>
<li>updated the artstation file page url class to redirect to a new api url class</li>
<li>wrote an artstation file page parser that also handles multiple file urls</li>
<li>updated/added pixiv file page, manga page, and mange_big url classes</li>
<li>updated pixiv file page parsers to be ok with manga links</li>
<li>wrote parsers for pixiv manga and manga_big pages to fetch manga files (with page tags)!</li>
<li>file import objects can now create semi-duplicate children for multi-file post urls and insert them just after themselves in the file import queue.</li>
<li>file import objects can now receive and remember referral urls. this referral url is associated with the file if appropriate. the watcher and simple downloader now uses this in addition to the multi-file post system</li>
<li>jumbled around some parameters and merged the two new file import url commands (import 'file' vs import 'post') into one single simple 'work on this url, thanks' call that is now used across the program</li>
<li>the parsing system's 'content parser' no longer fetches file urls and post urls, but 'download urls' and 'source urls'. this helps some pipeline logic and also lets post urls be download urls</li>
<li>when file import objects parse post urls as the urls to download, it now creates 1-n new import objects, just like if multiple file urls.</li>
<li>improved some file import object file association code</li>
<li>the new parsing system will de-dupe parsed urls</li>
<li>refactored the 'seed' code, which handles all basic file import objects, to the new ClientImportSeeds.py</li>
<li>added a new string transformation type, 'integer addition', for shifting page number tags up and down</li>
<li>fixed thumbnail generation for some videos that failed to do the new x%-in generation--it reverts more reliably just to the old frame 0 method</li>
<li>file reparsing popup now has a stop button</li>
<li>fixed an issue where extremely thin or wide (ratio > 200:1) images would not generate a full-size or resized thumbnail</li>
<li>the file reparsing/re-thumbnailing now reports errors better (including with full path) and does not abandon the larger job as it works</li>
<li>misc thumbnail generation code improvements</li>
<li>improved some thumbnail and file regeneration/moving code when the existing file has read-only status</li>
<li>the multiple watcher now has a 'check now' button</li>
<li>added a checkbox to options->gui that will put new notebook page tabs on the left</li>
<li>for all file download network jobs working in the new download system, the file import options for min size, max size, and max size (gifs) are now applied _during the download_! if the server tells the client the exact file size in the response headers, it will test max and min size before the content is actually downloaded--otherwise, it will test the max size as it downloads. if the server clearly says the file is a gif, the max gif size rules will also be tested in the same way</li>
<li>cleaned up some bandwidth announcement code--now, if bandwidth is due in less time than override time, that will now correctly be the status text</li>
<li>the bandwidth status no longer says 'in in' typo</li>
<li>fixed up some tag repair code from last week</li>
<li>the 'print garbage' debug function now dumps a whole bunch more data to the log</li>
<li>the thumbnail cache should now be a bit more stoic about missing repository thumbnails--it should now just present the hydrus default backup without error popup spam</li>
<li>the repository thumbnail sync will now get as thumbs in blocks as high as 10k at a time, rather than the old 100</li>
<li>hydrus network requests no longer generate web domain network contexts (and so won't have a default one-request-per-second bandwidth limit and should stream through thumbnails a bit faster)</li>
<li>hydrus network services are now willing to wait longer for bandwidth, so big thumbnail queues should keep working even if other bottlenecks pause them for a bit</li>
<li>hydrus network services will no longer sometimes have double-sync popups if synced from the advanced 'sync now' button in review services</li>
<li>changed the default global 'stop-accidents' bandwidth rule of 120rqs per minute to 512MB per minute. this only affects new users, but users trying to sync to large file repos might like to make a similar change manually</li>
<li>doing giant full file delete (i.e. purge from trash) jobs should now be a bit gentler on the gui</li>
<li>improved how the client deletes paths, clarifying in the code when and when not to allow recycle (usually disabled for thumb disposal)</li>
<li>switched the hacky text widgets on the popup system to a newer object. seems to still render ok, so lets see if it fixes some unusual layout issues some users have seen</li>
<li>if the temp folder cannot be created on boot, the client will continue anyway</li>
<li>fixed some url-domain text handling in db storage that was also breaking v309 update for some users</li>
<li>fixed some additional domain generation error handling at the db level</li>
<li>the list of url classes in the system:url panel is now the list of all url classes that are considered associable (before, it was file and post urls)</li>
<li>if a url class now api-links to itself or otherwise forms a loop with n other api url classes, the client will now throw an error (rather than lock up in an infinite loop!)</li>
<li>in the parsing ui, tag parse test results are now cleaned before being displayed</li>
<li>fixed misc url matching error reporting bug</li>
<li>when consulting the current file limit, the gallery page downloader will now try, when it has that number, to consult the total number of urls found it the current search (old behaviour is to only consult the number of _new_ urls, which lead to some bad edge-case workflows)</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 309</h3></li>
<ul>
<li>wrote a fix for the tumblr GDPR issue under _network->DEBUG: misc->do tumblr GDPR click-through_. you will also get a popup about this on update</li>
<li>the tumblr downloader will try to detect the GDPR problem and present a similar popup guiding you to the GDPR click-through solution</li>
<li>the client and server now generate video (but not gif yet) thumbnails 35% in by default. the client can now change this percentage value under options->media. this was highly requested and was being put off for a longer rewrite, but I figured out a simple way to hack it in. please let me know if you get failures</li>
<li>on adding a parent, all files with the child tag will now also get all applicable grandparents (with no limit on recursive generations and dealing with accidental loops)</li>
<li>on adding a sibling, all files with any of the siblings will now also get all applicable parents and grandparents for the whole group. a maintenance call to retroactively fill in the sibling/parent gaps that are now filled will also come soon</li>
<li>this logic still does not apply in cross-service situations, which _will_ likely have to wait for a big data/gui overhaul and us figuring out what we actually want here</li>
<li>added a simple pause/play button to the multiple watcher</li>
<li>if the multiple watcher is set to catch watchable url drag and drop events and the current page is a multiple watcher, this current page will catch those new urls (as opposed to the _leftmost_ multiple watcher)</li>
<li>improved some thread unpause logic which was failing to lock pause during 404 status</li>
<li>the multiple watcher should now ignore case when it sorts by subject</li>
<li>added url class and file page parser for inkbunny (so this site is now supported in drag and drop!). it fetches creator tag, some artist-made unnamespaced tags, source time, and md5</li>
<li>added file page parser for gelbooru 0.2.0, which by default works for rule34.xxx, tbib, xbooru but certainly should work for a bunch of others. it fetches source time and source url</li>
<li>html formula parsing rules can now additionally test the tag 'string' using a standard StringMatch object. this greatly helps to parse otherwise indistinguishable 'a' tags that have string 'Original image' and so on</li>
<li>the 'have I seen this url's file before?' pre-import test is now much more strict and will cause fewer accidental false-positive 'already in db'/'deleted' results:</li>
<li>the url pre-import test now does not trust source urls if they do not have a url class</li>
<li>the url pre-import test now no longer trusts urls that are supposed to only be mapped to one file but are actually mapped to multiple</li>
<li>this url pre-import test now treats url-classless original post urls and intended file urls with a special level of trust</li>
<li>urls are now stored in the db in a more powerful and in-future easily searchable way--your db will take a moment to convert to the new format on update</li>
<li>did some prep work for multi-file post urls (like pixiv manga) but did not have time to finish it</li>
<li>the filename tagging options panel (in the 'add tags based on filename' of file import dialog and import folder dialog) now updates its tags/list 0.5s after the last change event, which means typing on a giant list will not cause megalag</li>
<li>improved stability of some client-screen coordinate conversion</li>
<li>misc bmp handling stability improvements</li>
<li>improved some parsing ui stability when example data gets set after the dialog is closed</li>
<li>improved some misc dialog close stability</li>
<li>converted all but one final ui update timer to the new job scheduling system</li>
<li>there are still problems with linux stability--I will continue to work on it</li>
<li>an ugly (but basically harmless) shutdown exception sometimes caused by Animations being a bit slow on deleting their underlying bmps _should_ be fixed</li>
<li>the export files dialog now generates its paths in sort order, meaning (1), (2) de-dupe filename suffixes should now be generated nicely in order</li>
<li>the network domain manager should now always chase API URL links to get the right parser</li>
<li>made some 'the db is broke, let's try to fix it' tag recovery code more forgiving</li>
<li>misc improvements to some media indexing backend, which may fix some unusual session ghost files</li>
<li>fixed the 'sure it is ok to close this importing page' dialog to also veto on a 'cancel' event, rather than just a 'no'</li>
<li>added a guide to database_migration.html on how to move the db from just an HDD to straddle both an SSD and HDD.</li>
<li>cleaned up the help->debug menu a bunch</li>
<li>added run fast/slow memory maintenance calls to help->debug->data actions</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 308</h3></li>
<ul>
<li>the multiple watcher will now discard new urls if it is already watching them</li>
<li>the multiple watcher will list x/y progress as just 'x' if x==y (making it easier to scan the list)</li>
<li>the multiple watcher now lists a couple of 'total' summary lines on its ui--the top lists total number of watchers and queue progress, the bottom lists the usual '23 successful, 3 deleted' line, but summed for all watchers</li>
<li>the multiple watcher will now warn you if you try to remove the highlit, alive or un-caught-up watchers</li>
<li>the multiple watcher will now resort if the thread subject (or rather, any data in the current sort column) changes (which usually happens right after it is added, when you see it change from from 'unknown subject' to 'mlp is kino')</li>
<li>fixed an issue where multiple watchers were not unscheduling down their update job correctly on page close</li>
<li>the booru selector in the edit subscription panel should now be in the tab traversal order for keyboard/automated focusing tasks</li>
<li>the boorus in that selector are now alphabetised</li>
<li>tag import options namespaces are now alphabetised</li>
<li>removed/renamed pretty much all references to 'thread' in the watcher code and ui presentation, since it can now do a bunch of other stuff. it is now just the 'watcher' and the 'multiple watcher'</li>
<li>deleted a bunch of old static thread watcher and page of images code from the old downloading system</li>
<li>added an experimental 'compact' button to advanced mode users' manage subscriptions panels. this removes urls from the selected subscriptions' caches that are no longer useful, keeping their load/save snappy. this is still in testing--be careful with it!</li>
<li>the hydrus splash screen now has a bare frame caption and will appear in the taskbar--which helps with some alt-tab and 'where the hell did it go?' stuff if you need to enter a password</li>
<li>wrote five 'reasonable defaults' buttons for the 'check timings' options panel for quick entry for different thread/subscription scenarios.</li>
<li>added a checkbox to this panel that will swap the reactive options with a simpler single checkbox</li>
<li>also clarified/fleshed out the help button on this panel</li>
<li>fixed an important source of program instability related to page alive/dead status checking that was inadvertantly talking subtly to the main gui frame even on non ui threads</li>
<li>improved how some 'page is closed but not destroyed' test logic for pages inside a closed-but-not-destroyed notebook</li>
<li>fixed another small place where the db was talking to the main gui object about status bar updates in a potentially unstable way</li>
<li>fixed another small place where the foreground daemons were talking to the main gui frame in a trivial but potentially unstable way</li>
<li>played around with some taglist sizer and layout settings</li>
<li>the gallery and simple download pages are now a little shorter--the pause and cancel buttons are now just to the right of the status texts, rather than on their own row beneath the network job controls.</li>
<li>the various bandwidth-overriding network jobs in the download system--like gallery page downloading--now wait 30s before overriding their bandwidth. hence these jobs will now obey the usual bandwidth rules up to a point</li>
<li>the simple downloader also obeys the usual bandwidth rules for 30s but no longer has a static wait, so it can run much faster in certain situations</li>
<li>network jobs that will override bandwidth in the future will now report that countdown in their status texts</li>
<li>fixed a bug in the old booru code that meant some boorus were superfluously requesting the 0th indexed page of a gallery more frequently than needed in order to reestablish a 'page size' cache. this value is now cached globally and will be replaced by a completely different system in the new gallery downloader</li>
<li>added a decent tooltip to the 'gallery fixed delay' widgets in the options->downloading panel</li>
<li>the autocomplete input should clear itself after a 'broadcast' event a bit quicker and stop some dupe inputs in certain edge cases</li>
<li>the tumblr url class now recognises that tumblr posts can have multiple files, which helps some source url lookup logic</li>
<li>added a url class for artstation file pages</li>
<li>the primary file import url (the one listed in the file import list) will now correctly not associate with the resulting file if its url class is so set</li>
<li>all the import objects now have much lower idle CPU time and thread needs and start in slightly offset times, smoothing out the thread count spikes</li>
<li>all the import objects will now respond quickly to changes to the underlying file import cache (like right-click->try again events)</li>
<li>the new job scheduling system now uses two queues--fast and slow, in order to reduce some resort/insert overhead</li>
<li>a couple more improvements to the new job scheduling system to smooth out spikes</li>
<li>if the temporary path override does not exist, the client will now compain with spammy popup messages and fall back to the default</li>
<li>if the temporary path override does not exist or is not writeable-to on options dialog ok, a veto exception will be raised</li>
<li>refactored the watcher and multiple watcher to their own file, ClientImportWatchers</li>
<li>misc fixes</li>
</ul>
<li><h3>version 307</h3></li>
<ul>
<li>wrote a gelbooru 0.2.5 (which matches gelbooru itself) parser in the new system. it now has some more redundancy and produces md5 hash and source urls</li>
<li>fixed the e621 parser for flash files</li>
<li>manage tags is now a notebook rather than a listbook!</li>
<li>a problem where OS X was displaying the wrong label in the manage tags listbook is now fixed (as it no longer uses the buggy old listbook)</li>
<li>improved autocomplete focus setting in OS X in general</li>
<li>moved all paged importer loops to the new job scheduling system, which will massively cut down on idle time thread count (and some idle CPU usage) on clients with a bunch of import pages open</li>
<li>the main thread pool (which the job scheduling system uses) can now temporarily grow much larger (200 threads) when it gets hammered</li>
<li>recalibrated some thread watcher code to deal with being embedded in a larger object better (and sharing a page with other watcher importers)</li>
<li>finished the first version of a multiple watcher. it is ugly and only for advanced users for now--please check release post for more information</li>
<li>added 'use the multiple watcher on DnD events' to options->downloading, which will send thread url drag and drops straight to a new/existing multiple watcher!</li>
<li>gui session load now 'shows' the first page but loads everything to the right in the background, which saves some CPU and memory for large sessions. this means it now starts focused on the leftmost page rather than the right--see if you like it or not</li>
<li>'clear and load session' now fully deletes old pages and takes a little break between the clear and load step to make sure old large sessions are deleted tidily before loading the new stuff</li>
<li>cleaned up the new leaner popup message display code to react better to (and re-layout) sub-changes in its popups (so now when a subscription popup spawns a new progress gauge, it _should_ be positioned in the right place immediately)</li>
<li>if an import folder/subscription publishes files to a page while the main gui is minimised (and the action would result in a new page creation), the page add will be delayed until the gui is no longer minimised (new page layout in this case was broken due to minimised parent frame)</li>
<li>the edit subscription query panel will now spawn with the query text input focused</li>
<li>added a patch to ensure new booru import pages get query input focus after a second if the focus attempt on init failed (this will be fixed better in the new downloader system)</li>
<li>restored the 'clear deleted files record' button to the 'combined local files' service on _review services_, which was previously hidden during a significant service rewrite.</li>
<li>if critical master tables are missing on boot, the client will warn and provide info and then abandon the boot</li>
<li>if cache similar files tables are missing on boot, the client will warn and provide info and offer to recreate them empty and try to boot the client anyway (this replaces some old repair code that wasn't always kicking in at a good time)</li>
<li>if cache autocomplete tables are missing on boot, the client will warn and provide info and offer to recreate and repopulate them</li>
<li>if mappings tables are missing on boot, the client will warn and provide info and offer to recreate them empty and try to boot the client anyway</li>
<li>the emergency 'repair missing file locations' panel now runs in a more stable way</li>
<li>this emergency dialog will now also recognise 'I fixed all the file paths but cannot do the thumbnail paths' situations and will present the same 'ok, make sure you run regen thumbs after boot' dialog as if all the missing paths were thumbnail related</li>
<li>you can now turn off x/y page name import progress under options->gui</li>
<li>fixed an issue where tags that begin with ':' like ':p' were not getting through the new importing system</li>
<li>fixed an issue where tags that begin with ':' like ':p' could sometimes get prepended extra escape characters and end up looking like ':::p'</li>
<li>fixed sibling tag searching (e.g. if a->b exists and you search for b, results with a but not b should also appear), which the recent tag search optimisation accidentally disabled</li>
<li>whole bunch of refactoring and cleanup of ClientData and ClientGUICommon</li>
<li>cleaned up some spammy splash text status setting that was flooding some debug info with useless garbage</li>
<li>gave getting_started_tags.html's tag repo section and access_keys.html a pass, updating the ancient screenshot and linking advanced users to the latest QuickSync location</li>
<li>some misc help updates</li>
<li>misc autocomplete logic improvements</li>
<li>misc ui display fixes</li>
<li>misc wx destroy code stability improvement</li>
<li>updated ffmpeg for windows builds to the new 4.0 release</li>
<li>updated sqlite for windows builds</li>
</ul>
<li><h3>version 306</h3></li>
<ul>
<li>the file import status list now has 'open selected import files in a new page', which should show up where it is possible. this is a bit prototype and ugly--it'll show _all_ files, including in-trash and permanently deleted (which will show up with the hydrus thumbnail)</li>
<li>the file import status list now prefixes the already in db/deleted notes with 'url' or the hash type that lead to the recognition</li>
<li>these redundant/deleted notes now also propagate up from 'during import' recognition phase as well</li>
<li>the 'delete seeds of type x' entries on the file import status button's right-click menu are now split into three smaller individual tyes and are more explicit about exactly which status types they will remove</li>
<li>like import folders, subscriptions can now optionally publish their files to pages as well as popup buttons. also, subscriptions can optionally publish their files separately for each query instead of all merged together</li>
<li>sped up multiple tag queries significantly</li>
<li>sped up simple (file size, mime, etc...) system predicate queries that also include a tag/namespace/wildcard predicate significantly</li>
<li>added a pixiv parser that pulls the japanese tags to the defaults--users can switch to this if they prefer under network->manage url class links</li>
<li>fixed the 4chan parser to get part of comment as backup subject/page title</li>
<li>removed the 'newgrounds' entry from the normal gallery page creation ui, as the basic gallery parser no longer works due to a dynamic loading change on their end. I hope to have it back with the new gallery parsing system I will soon be writing</li>
<li>the edit url classes panel now has a little text box to put in example urls and see which class, if any, that they match to</li>
<li>improved layout of edit url class links panel</li>
<li>all url types are now displayable in the media viewer--only post url classes are default on</li>
<li>the new (x/y) import page page_name progress count is now updated on all alterations to this value (previously, this was not updating when a user interacted with the import queue, only when the natural downloader loop cycled)</li>
<li>added 'can produce multiple files' option to post url url classes, which informs client url-checking logic whether the url can be relied upon for 'already in db/deleted' calculations</li>
<li>the pixiv file page url class now has 'can produce multiple files' checked, meaning some bad pixiv url association logic due to other sites referencing it as a source url is now fixed</li>
<li>added a 'twitter tweet' url class, which is also a 'can produce multiple files' post url</li>
<li>added a 'sync known urls?' action choice to the duplicate merge options panel, which governs whether urls should be copied from worse to better or in both directions</li>
<li>gave the edit duplicate merge options panel a layout pass</li>
<li>the edit duplicate merge options panel will now disable pointless/over-complicated choices on non-custom actions, let me know if this is a pain for your workflow</li>
<li>added a 'manual' web browser path override to the 'files and trash' options panel, which fixes the new share->open->in web browser option for Windows and also fixes some #anchor link propagation</li>
<li>consolidated all URL/Path web browser launching code to one location</li>
<li>'open in web browser' is now available for non-advanced_mode users and the 'open' submenu of the share menu is available in the preview window and the media viewer</li>
<li>fixed a bug that was causing import folders to publish incorrect file identifiers, which was poisoning popup buttons and import page destinations</li>
<li>gui sessions that fail to load a page will recover and continue to attempt loading the rest of their pages. some popups detailing the page's serialised data and error will be presented</li>
<li>gui sessions that fail to save a page will recover and continue to attempt saving the rest of their pages. some popups detailsing the page's rough info and error will be presented</li>
<li>the core controller inside all media pages will now present itself in a more beautiful way when asked to dump itself to a log (which should beautify the above save error a bit)</li>
<li>wrote a subsidiary database->check->just repo update files that tests integrity of only repository update files</li>
<li>fixed an issue where default tag import options were sometimes not being saved from the new dialog in the networking menu</li>
<li>wrote a couple of layers of bad tag protection to help the new downloader deal with some occasional bad output from the old downloader</li>
<li>network jobs can now reattempt connection attempts up to three times on POST requests (if you ever got inexplicable immediate 'could not connect' errors on repository uploads, this should now be fixed)</li>
<li>replaced some archaic misc old import code with the new system, cleaning up a bunch of stuff and making space for further refactoring along the way</li>
<li>fixed tags blacklist not being inherited in the old (through options dialog) system</li>
<li>improved some invalid domain error handling</li>
<li>fixed an animation update issue that would pause naturally updating controls on non-main-gui frames when there were no regular media pages open on the main gui</li>
<li>added a BUGFIX option to 'files and trash' option page to override the default temp path for almost all client temp path requests</li>
<li>the minimum value for the 'vacuum period' in maintenance and processing options is now 28 days. the control also has a little explanatory tooltip</li>
<li>the 'try to auto-link url classes and parsers' function now always preferences parsers alphabetically</li>
<li>fixed a typo in the string transformations prettyfication code that incorrectly summarised 'take the last x characters' as the opposite</li>
<li>misc fix to file hash generation and status checking code</li>
<li>the 'export tags to .txt files' checkbox on the export files panel will no longer bother you with a dialog as you uncheck it</li>
<li>wrote some code to make it easier and more fool-proof to update the domain manager with new url classes and parsers on my end</li>
<li>improved some popup message manager ok-to-alter-ui logic when the main ui is minimised and so on</li>
<li>fixed some potential crash conditions (affecting linux mostly, seems like) in the service credential testing and access key fetching ui code</li>
<li>fixed a bug when 'stopping' a gallery parse during a long error pause (like when it holds on '404')</li>
<li>sped up some old set intersection code</li>
<li>some import file presentation refactoring</li>
<li>some url content application pipeline cleanup</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 305</h3></li>
<ul>
<li>fixed the pixiv url class, which was unintentionally removing a parameter</li>
<li>wrote a pixiv parser in the new system, fixing a whole bunch of tag parsing along the way, and also parses 'source time'! by default, pixiv now fetches the translated/romaji versions of tags</li>
<li>finished a safebooru parser that also handles source time and source urls</li>
<li>finished an e621 parser that also handles source time and source urls and hash!</li>
<li>wrote a danbooru parser that also handles source time and source urls and hash!</li>
<li>as a result, danbooru, safebooru, e621, and pixiv post urls are now drag-and-droppable onto the client!</li>
<li>finished up a full yiff.party watcher from another contribution by @cuddlebear on the discord, including url classes and a full parser, meaning yiff.party artist urls are now droppable onto the client and will spawn thread watchers (I expect to add some kind of subscription support for watchers in the future). inline links are supported, and there is source time and limited filename: and hash parsing</li>
<li>fixed some thread watcher tag association problems in the new system</li>
<li>when pages put an (x) number after their name for number of files, they will now also put an (x/y) import total (if appropriate and not complete) as well. this also sums up through page of pages!</li>
<li>if a call to close a page of pages or the application would present more than one page's 'I am still importing' complaint, all the complaints are now summarised in a single yes/no dialog</li>
<li>url downloader pages now run a 'are you sure you want to close this page' when their import queues are unfinished and unpaused</li>
<li>if the subscriptions for 'manage subscriptions' take more than a second to load, a popup will come up with load progress. the popup is cancellable</li>
<li>added a prototype 'open in web browser' to the thumbnail right-click share menu. it will only appear in windows if you are in advanced mode, as atm it mostly just launches the file in the default program, not browser. I will keep working on this</li>
<li>harmonised more old download code into a single location in the new system</li>
<li>created a neater network job factory system for generalised network requests at the import job level</li>
<li>created a neater presentation context factory system for generalised and reliable set/clear network job ui presentation at the import job level</li>
<li>moved the new downloader simple-file-download-and-import to the new file object and harmonised all downloader code to call this single location where possible</li>
<li>did the same thing with download-post-and-then-fetch-tags-and-file job and added hooks for in the subscription and gallery downloader loops (where a parser match for the url is found)</li>
<li>the simple downloader and urls downloader now use 'downloader instance' network jobs, so they obey a couple more bandwidth rules</li>
<li>harmonised how imported media is then presented to pages as thumbnails through the new main import object</li>
<li>the new post downloader sets up referral urls for the file download (which are needed for pixiv and anything else picky) automatically</li>
<li>improved file download/import error reporting a little</li>
<li>entering an invalid regex phrase in the stringmatch panel (as happens all the time as you type it) will now present the error in the status area rather than spamming popups</li>
<li>fixed a bug in the new parsing gui that was prohibiting editing a date decode string transformation</li>
<li>fixed enabling of additional date decode controls in the string transformations edit panel</li>
<li>added a hyperlink to date decoding controls that links to python date decoding explainer</li>
<li>if a source time in the new parsing system suggests a time in the future, it will now clip to 30s ago</li>
<li>misc downloader refactoring and cleanup</li>
<li>fixed an issue where new file lookup scripts were initialising with bad string transformation rows and breaking the whole dialog in subsequent calls, fugg</li>
<li>hid the 'find similar files' menu entry for images that have duration (gifs and apngs), which are not yet supported</li>
<li>added 'flip_debug_force_idle_mode_do_not_set_this' to main_gui shortcut set. only set it if you are an advanced user and prepared for the potential consequences</li>
<li>silenced a problem with newgrounds gallery parser--will fix it properly next week</li>
<li>fixed some old busted unit test code</li>
<li>rejiggered some thumb dupe menu entry layout</li>
</ul>
<li><h3>version 304</h3></li>
<ul>
<li>renamed the new 'tagcensor' object to 'tagfilter' (since it will end up doing a bunch of non-censoring jobs) and refactored it into clienttags</li>
<li>attached a tag filter object to all tag import options to act as a tag blacklist. all tags that go through the import pipeline (except for a couple of old legacy instances) are now checked against the blacklist, and if a bad tag is found, the file vetoes! tag import options has some new ui to handle this and background code to deal with inheritance from defaults and so on</li>
<li>new file import urls that have url classes, no matter their source, are now normalised!</li>
<li>all new file import urls are now tested against both the original and normalised version of the url, so even though previously parsed urls remain un-normalised, new urls that are pre-normalised the same will not count as new! -fingers crossed-</li>
<li>on update, the db will get normalised copies of all existing urls. this means many files will now have two versions of its urls--some ui to collapse everything down to only the normalised version (after some human eyes have passed in front of this big change) will come in the coming weeks</li>
<li>some sites where normalisation is a consistent problem for later redownloads (like e621, which appends 'preview' tags to the post url) _should_ now be caught reliably!</li>
<li>the 'allow subdomains' on edit url class panel is now named 'match subdomains' and has a tooltip to better explain how it works</li>
<li>'keep subdomains' is now 'keep matched subdomains' and has a tooltip as well</li>
<li>the 'keep matched subdomains' enabled behaviour (and some normalisation calculation) is now additionally governed by the 'associate url with files' value and api url conversion info rather than just 'match subdomains' and raw url type</li>
<li>fixed an issue that was stopping the 'associate url with files' option sticking in edit url class panel</li>
<li>edit url matches now resorts after an add or edit action</li>
<li>all listctrls with a wrapper panel now resort after an import from clipboard, png, or defaults call</li>
<li>url matches now match against www*. versions of their domain regardless of 'match subdomains' settings</li>
<li>updated xbooru url classes to prefer https</li>
<li>the manage url class links panel now has a 'clear' button to clear a url_class->parser link</li>
<li>introduced three new simple downloader parsers for yiff.party, thanks to @cuddlebear on discord for the submission</li>
<li>the old 'uninteresting mime' status has been expanded to a wider 'vetoed' status to represent all file imports that are abandoned without a particular error (e.g. tag blacklist, wrong filesize or resolution)</li>
<li>the import system now reports the total of 'num vetoed' as 'num ignored' in its summary statements</li>
<li>it now also reports 'num skipped'</li>
<li>the 'num successful' and 'num already in db' are now folded more neatly together in import cache summary statements</li>
<li>file downloads that are cancelled will now set a 'veto' state rather than a 'skip' state</li>
<li>improved file import exception handling across the board</li>
<li>improved how single-file-result parsing vetoes propagate up to the file import status cache</li>
<li>404 network errors will now provide a 'veto' status rather than an 'error'</li>
<li>vetoes will not count as errors when deciding whether a subscription should be abandoned early (so a bunch of decomp bombs or 404s will no longer stutter a subscription!)</li>
<li>misc fixes and improvements to the new download stuff</li>
<li>wrote a new parsing cache that saves a lot of work in the new parsing system</li>
<li>improved the 'is this url known?' test to better deal with situations where all the given urls are galleries or unrecognised--a better aggregate of file status is formed, and 'already in db'/'deleted' statuses will apply if there is no evidence otherwise (the dev got the new logic for this from a legit nightmare about urls downloading over and over, so let's hope it works out)</li>
<li>the 'is this url known?' logic also recovers from 1->n url->hash relationships where it does not expect them, trying to find 'already in db' hashes over 'deleted' ones</li>
<li>to clear up some ambiguity, galleries or subscriptions now give a different 'checking in x seconds' status when waiting on the first page of a query</li>
<li>the 'noneablebytescontrol', as seen in edit file import options, will now correctly disable/enable its bytes sub-control when it is none'ed</li>
<li>a persistent issue with the new network engine sometimes failing to correctly error after certain broken connections (the computer going to sleep mid-download was a common cause here) should now be recovered from and the connection naturally reattempted</li>
<li>added three new shortcuts to the 'main_gui' shortcut set that allow for opening a new 'urls', 'simple', or 'thread watcher' downloader page</li>
<li>added two more shortcuts to 'main_gui' for new 'page of pages' and 'duplicate filter page'</li>
<li>moved some old 'new page' menu code to the new application command system</li>
<li>added numerous 'duplicates' shortcuts to the 'media' shortcut set that will work on selections of thumbnails</li>
<li>the thumbnail duplicates menu actions now go through the new application command system</li>
<li>fixed an issue where the current tag parents caches was not refreshing when notified</li>
<li>inputting a short invalid syntactic input on a 'read' tag autocomplete such as '-' will now clear the system predicates list--system preds should now only show on a completely empty input</li>
<li>fixed an issue where certain combinations of 'remove a tag, then re-add it' nullipotent actions in a single manage tags dialog transaction were not applying reliably (sometimes, the subsequent mirror action was not occuring due to a processing re-order optimisation at the db level)</li>
<li>made some animation code a little safer and quieter as a test for some users who were getting blitzed with some deadwindow error spam in certain situations--let's see if this changes anything</li>
<li>replaced all the em dashes in the help with double hyphens as github pages was rendering them wrong</li>
<li>added CrystalDiskInfo recommendation to 'help my db is broke.txt'</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 303</h3></li>
<ul>
<li>file post url classes can now be linked to parsers!</li>
<li>the 'raw url' downloader is now just the 'url' downloader. if a dropped url is matched as a 'file post' url and links to a parser, it will download it with that parser and default tag import options</li>
<li>url drag and drop now recognises file post urls that have linked parsers and will send them on to a url import page, just like 'raw' urls! they will use the new parsing system to parse tags and known urls and all that</li>
<li>wrote a way for the new download system to store and edit default tag import options--this can now be found under network->manage default tag import options, although it does not do much yet. eventually the old options will be transferred here, and the different downloaders will consult it more</li>
<li>refactored and cleaned up how some default tag import option calculation is done</li>
<li>the fixed 5 second wait time between gallery page fetches is now editable for downloader pages and subscriptions under options->downloading. subscriptions default remains 5s, gallery default is now 15s</li>
<li>the gallery downloader will present its 'x urls found so far' string in a more uniform and reactive way. it will also count down until the next page fetch</li>
<li>subscriptions will now similarly react quicker while the gallery parse step is ongoing, and it will count down to the next page fetch</li>
<li>the manage subscriptions dialog will now note in BIG RED TEXT if subscriptions are currently globally paused</li>
<li>subscriptions now consume less parallel-timeslot overhead, meaning they sync much faster when they have no work to do (which is most of the time)</li>
<li>separating subscriptions is now more sophisticated--if you wish, you can now choose just to separate a subset of the large subs's queries, and if you do so, you can decide whether to merge the extracted subs into a new larger sub or just have them as individuals. also, you will be asked for name/base_name for what to name the new subs</li>
<li>since separating subs is more complicated, the button is only enabled when a single large sub is selected. please do your separating one sub at a time!</li>
<li>merging subs will now ask if you want to rename the merged subs as it goes</li>
<li>refactored a giant heap of duplicate import code into single locations in the new file import object--things like applying tags and generating pre-import status are all now done in one place. a number of weird behaviours (like not applying known url associations in certain circumstances) should now be a lot better and unified</li>
<li>the way the db and other import testers handle whether a pending import is new or unknown is simplified</li>
<li>optimised the way the importers figure out whether to display a new import</li>
<li>the 'has the client seen this url before?' test used to figure out whether to download a file now explicitly ignores anything it isn't certain is a single-file File URL or Post URL (according to current url classes). associating 'gallery' known urls is no longer catastrophic to this system</li>
<li>the simple downloader now associates the entered url with the files subsequently imported</li>
<li>file import objects working in the new parsing system are aware of the new 'should this url be associated' option and will be given gallery urls to hold on to as appropriate</li>
<li>url classes now have an explicit option as to whether they should be associated with files imported from them, which is not appropriate for dynamic CDN File URLs but is appropriate for multi-image tweet links (which will likely be Gallery URLs in the new system), for instance</li>
<li>general importer code cleanup across the board</li>
<li>threw together some early ui to show current jobs in the network engine under network->review network jobs</li>
<li>popup messages will now try to set a max width of roughly 56 characters wide rather than 400 pixels. this value is editable under options->gui</li>
<li>updated the listctrl in the export files frame and the way this frame generates and stores export filenames. let's see if linux users who had crashes with this have better luck</li>
<li>refactored stuff out of the bloated ClientImporting file into seperate new files</li>
<li>refactored client network bandwidth and session code out to their own files as well</li>
<li>refactored client network objects to its own file</li>
<li>cleaned up some open externally debug code linked to callto report mode</li>
<li>a common grid layout used across the program will copy control tooltips to the string on the left</li>
<li>removed the 'downloader' network context type, which was never fully introduced and wasn't turning out to offer much in the new bandwidth tracking system</li>
</ul>
<li><h3>version 302</h3></li>
<ul>
<li>improved how simple downloader parsing formulae are stored and passed around</li>
<li>the edit simple downloader parsing formulae panel now has an 'add defaults' menu button</li>
<li>the simple downloader formula edit panel handles its buttons better and can now do import from/export to clipboard/png and reimport from the defaults, and fixes duplicate names automatically</li>
<li>simple downloaders now remember their current parser through a session save/load</li>
<li>simple downloaders will set a new default parser selection for new simple downloader pages on any choice event</li>
<li>renamed all the default simple downloader parsers to more clearly explain what they do</li>
<li>added 'all files linked by images in page' to the simple downloader, which does the old page of images' behaviour, and is hence pretty decent for most imageboards</li>
<li>added a simple mewch thread html parse formula to the simple downloader</li>
<li>added a very simple webmshare parse formula to the simple downloader</li>
<li>added 'imgur image album' to the simple downloader, which will fetch the first 'page' of results from an image album. full parsing will have to wait for the gallery downloader update</li>
<li>subscriptions can now run simultaneously! you can set the max number at options->downloading page--the default remains 1, so default behaviour will not change</li>
<li>if subscriptions guess they can eat some bandwidth in the next 30s but it turns out they can't, they will bandwidth-override that last job after the 30s expires. this will stop some edge cases from causing subs to potentially hang for hours just on one last request</li>
<li>'explicit tags' are now renamed to 'additional tags'</li>
<li>you can now set media to initially scale to 100% even when it is larger than the media or preview canvas</li>
<li>the html parsing formula can now 'ascend' as well as search down the DOM tree--so, for instance, you can find all 'img' below an 'a' and then jump back up to the 'a' to fetch the 'href' of that image link!</li>
<li>html parsing formulae can now search without a tag name--so, for instance, 'find all tags with class = "whatever"' is doable, without having to specify div or span etc..</li>
<li>the html parsing formula rule panel is hence a bit richer. it also presents a preview of the rule's string as you edit</li>
<li>the client no longer needs lxml to boot, and if html5lib is present, it will prefer that for html parsing. if both libraries are missing and html parsing is requested, it will raise an exception explaining the error</li>
<li>the builds now include html5lib, which is better at recovering from some bad markup than lxml, and as a result some parsing jobs that formerly did not work (such as 'akaiha_(akaihasugk)' on danbooru) now do</li>
<li>rewrote how services test their functional status to better account for different states. the logic here should be a bit better now--repositories will still be able to process if their network side is down, but everything will pause if any pause is set, and it should all propagate up to higher levels of error catching and status reporting better</li>
<li>hydrus can now deal with really big decompression bombs (>~180 megapixel)</li>
<li>filtered out en-dashes (as an alternative to standard hyphens in a "? + -" link-prefix) from booru tag parsing</li>
<li>fixed a string generation issue that was stopping date decode string transformations from summarising themselves</li>
<li>fixed some catastrophic boot failure gui reporting</li>
<li>cleaned up a double-exit error on dialogs that could occur when spamming exit events with a script like AutoHotkey</li>
<li>improved some dead cpu thread clearout code</li>
<li>updated misc old code</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 301</h3></li>
<ul>
<li>after discussions with Sankaku Complex about their recent bandwidth problems, added a new 64MB/day default bandwidth rule for sankakucomplex.com--please check the release post for more information</li>
<li>the 'page of images downloader' is now called the 'simple downloader' that uses the new parsing system (particularly, a single formula to parse urls)</li>
<li>the simple downloader supports multiple named parsers--currently defaulting to: html 4chan and 8chan threads, all images, gfycat mp4, gfycat webm, imgur image, imgur video, and twitter images (which fetches the :orig and also works on galleries!)</li>
<li>there is some basic editing of these parsing formulae, but it isn't pretty or easy to import/export yet</li>
<li>the new parsing test panel now has a 'link' button that lets you fetch test data straight from a URL</li>
<li>added a 'gather to this page of pages->dead thread watchers' menu to the page of pages right-click menu--it searches for all 404/DEAD thread watchers in the current page structure and puts them in the clicked page of pages!</li>
<li>cleaned up some page tab right-click menu layout and order</li>
<li>fixed tag parents, which I previously broke while optimising their load time fugg</li>
<li>the new favourites list now presents parents in 'write' tag contexts, like manage tags--see if you like it (maybe this is better if hidden?)</li>
<li>sped up known_url searches for most situations</li>
<li>fixed an unusual error when drag-and-dropping a focused collection thumbnail to a new page</li>
<li>fixed a problem that was marking collected thumbnails' media as not eligible for the archive/delete filter</li>
<li>wrote a 'subscription report mode' that will say some things about subscriptions and their internal test states as they try (and potentially fail) to run</li>
<li>if a subscription query fails to find any files on its first sync, it will give a better text popup notification</li>
<li>if a subscription query finds files in its initial sync but does not have bandwidth to download them, a FYI text popup notification will explain what happened and how to review estimated wait time</li>
<li>delete key now deletes from file import status lists</li>
<li>default downloader tag import options will now inherit the fetch_tags_even_if_url_known_and_file_already_in_db value more reliably from 'parent' default options objects (like 'general boorus'->'specific booru')</li>
<li>the db maintenance routine 'clear file orphans' will now move files to a chosen location as it finds them (previously, it waited until the end of the search to do the move). if the user chooses to delete, this will still be put off until the end of the search (so a mid-search cancel event in this case remains harmless)</li>
<li>the migrate database panel should now launch ok even if a location does not exist (it will also notify you about this)</li>
<li>brushed up some help (and updated a screenshot) about tag import options</li>
<li>fixed a problem that stopped some old manage parsing scripts ui (to content links) from opening correctly</li>
<li>improved some parsing test code so it can't hang the client on certain network problems</li>
<li>misc ui code updates</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 300</h3></li>
<ul>
<li>wrote system:known url to find files that have--or do not have--certain types of urls. it works but is still a little slow--I can optimise it later!</li>
<li>added exact match, domain, regex, and url class search types for system:known url</li>
<li>added a button to the top media viewer hover window that will start a file export drag and drop event if dragged from</li>
<li>moved the autocomplete dropdown results list down into a paged notebook</li>
<li>wrote a new 'favourites' page tab for the autocomplete dropdown results</li>
<li>hitting left or right arrow keys on an empty text input will move between the results tabs</li>
<li>hitting arrow up/down/page up/down/home/page or passing mouse scroll events will now go to the current selected page</li>
<li>typing regular search text into the input will automatically return the current page to the search results list</li>
<li>moved the 'tag suggestions' part of the 'tags' options page to a new page</li>
<li>added 'tag favourites' to the 'tags' options page to edit which tags show in this new tab</li>
<li>added import/export buttons to the tag siblings and parents dialogs. they'll export to clipboard or .txt file, and import from the same with an additional option to add_only (i.e. to not delete/petition conflicts with the existing list)</li>
<li>added some quick-and-dirty 'set as alternates/same/notdupes' buttons to the duplicate filter, which will quickly apply that status to the dupes and show some more dupes</li>
<li>sped up db loading time of tag siblings and parents significantly</li>
<li>added a short delay check to tag siblings/parents regeneration so rapid regenerations (such as when processing certain admin-side petitions) can be merged</li>
<li>fixed an issue where similar_to searches could return results not in the current file domain</li>
<li>fixed some spinctrls that were sizing to thin</li>
<li>fixed a bug in the manage server services dialog that was incorrectly dealing with port conflicts on edit service dialog ok</li>
<li>added a clientside and serverside assertion to test that all the services on a serverside modify services call have unique ports</li>
<li>fixed an issue where hydrus network services without access keys would sometimes try to sync their accounts (this was messing up some admin server setup)</li>
<li>fixed some misc dialog window structure</li>
<li>messed around a little with how the autocomplete dropdown hides and shows when in float mode--I _think_ it will now be less flickery and will otherwise position itself and receieve focus better</li>
<li>converted the 'export files' dialog to the new sizing system and also made it non-modal (i.e. you can now interact with the rest of the program while it is open)</li>
<li>wrote a more rigorous force-fit-all-tlws command to the debug menu</li>
<li>misc fixes</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 299</h3></li>
<ul>
<li>wrote ui to review and even edit session cookies by network context. it is still a bit rough but will help with future development.</li>
<li>added a 'open_selection_in_new_page' shortcut to the 'media' shortcut set that will work on the thumbnail view</li>
<li>added a 'export_files' shortcut to the 'media' shortcut set that will work on the thumbnail view</li>
<li>fudged manage siblings logic to not do the borked 'hey, that sibling already exists' as soon as you type the old sibling--it will now auto-petition any existing siblings when you click 'add' with a good automated petition reason that makes sense to the janitor</li>
<li>manage siblings now also only shows rows appropriate to the current selection like parents does. it gets a new 'notes' column to specify conflicts that will be auto-petitioned as above</li>
<li>manage siblings and parents now have a laggy 'show all pairs' checkbox to let you quickly review everything like you used to</li>
<li>fixed a database-level bug that meant petitioned and pending the same left-hand sibling tag (like petition a->b, pend a->c) would sometimes not both save together</li>
<li>when you middle-click or right-click->open a new page on a selection of tags/search predicates, the new page will now be named after the tags</li>
<li>if subscriptions hit their periodic file limit, they will now give a little popup message describing what happened and possible causes and actions the user can take</li>
<li>added a 'make a modal popup in five seconds' action to help->debug</li>
<li>modal popups will now hide/show other child frames (like review services) rather than minimise/restore, as this latter action can raise the entire progam to the front</li>
<li>added a 'make a parentless text control dialog' debug entry to test some key event catching</li>
<li>added a 'layout all tlws' debug entry to help->debug that'll hopefully help figure out some child window sizing/position issues</li>
<li>added a 'shortcut report mode', which will report caught shortcut keys and their matched commands, if any</li>
<li>fixed a little shortcut catching bug in the main gui</li>
<li>finished adding the new bytes control</li>
<li>updated ffmpeg for windows</li>
<li>improved sankaku default bandwidth rules to stop a subscription bandwidth rules mismatch that could sometimes make for subscription delays--existing users may like to add a 2GB/day rule for sankakucomplex.com</li>
<li>improved some service and account error handling to better propagate the exact problem up the exception handling chain</li>
<li>the clientside 'update A actually had hash B' repository sync error is now dealt with in a less severe way, and the bad update file is saved to disk with a request for it to be forwarded to hydrus dev for further investigation</li>
<li>file parsing is now more resistant to invalid negative values for properties like width, height, and duration</li>
<li>improved some focus code that may have been affecting linux stability</li>
<li>improved a deviant art url-not-found error</li>
<li>improved a wx version boot test</li>
<li>misc fixes</li>
</ul>
<li><h3>version 298</h3></li>
<ul>
<li>wrote a new 'bytescontrol' and related noneablebytescontrol that allows for a uniform way to choose a bytes size value with a wider range--and deployed it all over the place</li>
<li>hitting a mapped shortcut for 'manage file notes' should now ok the 'manage file notes' dialog as well as open it</li>
<li>the manage file notes text control will now start with its caret at the end of the document</li>
<li>manage siblings/parents now state how many pairs they have</li>
<li>as an experiment, manage parents now only lists pertinent information in its listctrl. this is hacky but potentially a big improvement to the workflow here, feedback would be appreciated</li>
<li>added a new menu entry, 'network->pause->all new network traffic', which will indefinitely pause any new network jobs. this value will persist through a restart</li>
<li>'pause subscriptions' is moved from 'services' to 'network'</li>
<li>'pause import/export folders' is moved to 'file' and all the import/export folder stuff is sent down to its own submenu</li>
<li>in lieu of proper session inspection gui, added some debug 'reset login' entries to the network menu for pixiv and hf</li>
<li>if a page has files but none are selected, it will now say the total size in the status bar</li>
<li>the edit bandwidth rules control and its subsidiary dialog use some saner and more user-friendly layout and presentation</li>
<li>the previous search distance on the 'review bandwidth usage' frame is now remembered</li>
<li>fixed some bad logic where a 'copy_bmp' event could trigger despite the current media being None or a non-static image</li>
<li>you can no longer open multiple copies of the subscriptions or import/export folder manage dialogs if you hit the menu entry multiple times while the first is waiting for the jobs to finish</li>
<li>like import folders and subscriptions, manage export folders now waits for currently running export folders to quit before opening</li>
<li>export folders run lighter and quit faster on client shutdown</li>
<li>the domain manager will give a better error if a URL submitted to it lacks a schema (the http or https part)</li>
<li>fixed a bunch of unicode error handling</li>
<li>fixed an issue with similar files metadata orphans prohibiting new file imports</li>
<li>finished up a simple shared shortcut processing object and replaced most old temp duplicate shortcut code with it</li>
<li>misc ui cleanup</li>
<li>misc text rendering fixes</li>
<li>misc shortcut code refactoring</li>
</ul>
<li><h3>version 297</h3></li>
<ul>
<li>finished a prototype 'file notes' system. thumbnails and media viewer canvas now support 'manage->file notes' in their right-click menus. this launches a simple text box which will save its contents to db</li>
<li>added 'manage_file_notes' shortcut to the 'media' shortcut set</li>
<li>tag summary generators now have a simple show/hide checkbox and (for thumbnails) custom colours for background and text including alpha channel!</li>
<li>fixed a variety of timing and display logic related to subscription query DEAD vs next check time calculation</li>
<li>all currently dead subscription queries will be revived on update, just in case they were formerly set dead by accident</li>
<li>the 'fetch tags even if url known and file already in db' option is moved from the download/subscription panel's cog icon to tag import options</li>
<li>cleaned up tag import options layout, controls, internal workflow, and help button</li>
<li>added 'select all/none' buttons to tag import options panels with multiple namespaces</li>
<li>if a subscription is blocked by bandwidth, the manage subscriptions dialog will display that in its 'recent error/delay' column</li>
<li>the edit subscription dialog will show similar bandwidth blocking info, on a per-query basis, under a new 'recent delays' column</li>
<li>the review bandwidth usage panel will no longer show some unusual results by default that you can see with 'show all' hit anyway</li>
<li>the review bandwidth usage panel will show the usage at the current search distance in a new column</li>
<li>the review bandiwdth usage panel will show number of requests after data usage. this might be info-overload, so I might alter the syntax or roll it back entirely</li>
<li>fixed an issue with hentai foundry parser pulling images placed in the image description area instead of main image. this particularly affected the artist 'teku'</li>
<li>tags for deviant art and tumblr and thread watchers, which were formerly stored in volatile session memory--meaning half-completed import queues were losing their tags through a program restart--are now saved to the new import object directly</li>
<li>removed all the old volatile session memory patch code</li>
<li>added the new import object through a larger part of the parsing pipeline</li>
<li>deleted the old remains of the giphy parser--if it comes back, it'll all be rewritten in the new system</li>
<li>harmonised some other import pipeline code to the new system</li>
<li>added a new 'management and preview panels' submenu to the 'pages' menu</li>
<li>added an option to control 'save sash positions on close' to this menu</li>
<li>added an entry to force-save the current sash positions to this menu</li>
<li>added an entry to 'restore' the currently saved sash positions to all pages to this menu (this is useful if your window resizes real small and all your pages get crushed up)</li>
<li>rejiggered how URL Classes are matched with URLs to make sure some Post URLs are not lost (this was affecting Hentai Foundry Post URLs, which were sometimes not displaying in the media viewer despite matching)</li>
<li>fixed an issue where the duplicate filter page's jobs would not trigger an update after a job finished</li>
<li>fixed an outside chance of a crash after running a duplicate filter page job</li>
<li>improved how strings are coerced to unicode--now the preferred system encoding will be tried before utf-16, which should improve support for <20>-type characters in various non-unicode sources (like neighbouring .txt files)</li>
<li>fixed an issue with the client's local booru and flash files (and some other file fetching and mime reporting is a bit faster and neater overall)</li>
<li>the options should be more reliable about redrawing all thumbnail banner summaries on an option ok now</li>
<li>the options->media->media zooms option will now remove any <=0.0 values when it saves</li>
<li>fixed up some old test code</li>
<li>improved how some thread-to-gui update reporting code works</li>
<li>deleted some old network object code</li>
<li>converted manage subscriptions panel to an edit panel--a decoupling refactor I will likely ultimately make across the program</li>
<li>wrote a help page for content parsers</li>
<li>did the first half of a help page for page parsers</li>
<li>misc refactoring</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 296</h3></li>
<ul>
<li>the 'allow decompression bombs' option is now moved to 'file import options'. it defaults to False</li>
<li>file import options now allow max size and max resolution rules. they default to None</li>
<li>file import options now allows a max gif size rule to deal with THE SFM COMMUNITY. it defaults to 32MB</li>
<li>file imports will give better quality errors if they fail due to file import option exclusion rules</li>
<li>file import fail errors will now also specify the incorrect amount--e.g. if a file is 64KB but the minimum limit is 256KB, it will state this in the error</li>
<li>wrote a bunch of unit tests to make sure the new complicated file import options object works good</li>
<li>finished the tag summary edit ui and added a new 'tag summaries' page to the options</li>
<li>you can set the thumbnail top, thumbnail bottom right, and media viewer top summaries here, and everything should link up right!</li>
<li>the old options to hide thumbnail top and thumbnail bottom right text are removed from the options->gui page</li>
<li>tag summaries now include pending tags again</li>
<li>tag summaries will order tags according to hydrus numeric tag sorting rules (0 < 0a < 0b < 1 < 9 < 10)</li>
<li>tag summaries will collapse namespace groups that all start with decimals into a "min-max" phrase instead of the whole list (so 'collecting' a chapter will list p1-23 for the page phrase instead of each number in turn)</li>
<li>fixed some potential error popups from the autocomplete dropdown when not in float mode (this hit non-windows users more often)</li>
<li>split the parser help pages up a bit more and updated the client ui html links</li>
<li>finished off the formulae help pages</li>
<li>updated to wx 4.0.1 on all platforms. it promises increased stability!</li>
<li>default tag import options are now moved to the 'importing' options panel, alongside the default file import options</li>
<li>the database will deal with and recover from rollback exceptions more reliably. rollback-loops should be fixed, but the original event will now also produce a request to restart the client (which will safely reset everything) anyway</li>
<li>improved how I create and layout the 'help for this panel -->' help buttons</li>
<li>the job scheduler now regularly checks for and clears out dead wx-related jobs (this saves a bit of memory)</li>
<li>cleaned up an old tag retrieval method that was wasting CPU. some larger pages with many thousands of tags should do tag calculation after selection and so on a bit faster</li>
<li>fixed a thread shutdown test that wasn't working until app shutdown time</li>
<li>improved some more thread shutdown code</li>
<li>deleted some old thread-inefficient calllater and wx-safe timer code</li>
<li>emergency server errors that occur during the response writing stage should be handled better by the client</li>
<li>emergency server errors are more robust in general serverside</li>
<li>improved the quality of the errors thrown by the new network engine's login system</li>
<li>improved some test timing and key press simulation code</li>
<li>misc refactoring</li>
<li>misc improvements</li>
</ul>
<li><h3>version 295</h3></li>
<ul>
<li>fixed the runtimeerror popups that would come up on restore from minimise or main gui move after the complete destruction of a general search page</li>
<li>cleaned up some main gui move code generally, and removed a memory leak on the way</li>
<li>file queries can now cancel at multiple checkpoints during the first phase, saving a bunch of CPU time on certain large queries that are replaced mid-search</li>
<li>after a file query has been going three seconds, a little 'stop' button will appear beside the regular autocomplete input. clicking this will cancel the current query! it will stop when it next hits one of the checkpoints above</li>
<li>the floating autocomplete dropdown should be less flickery in some circumstances</li>
<li>dejanked some more file query code</li>
<li>added a 'clear orphan file records' entry to the database->maintain menu. this looks for and purges orphan file rows as you may have seen a notification about recently. this mostly affects the duplicate filter system</li>
<li>fixed up the delete file code to be a bit more robust--it should lead to fewer orphans in future</li>
<li>all the parsing edit panels have new layout: they no longer have info panels but instead a help button that points to the html help, and the edit and test panels are now beside each other rather than in notebook pages</li>
<li>harmonised a bunch of the parser ui test panel code, refactored how the results are stored</li>
<li>the test panel now presents a better 'preview' of what it contains (the actual text control has like 64KB text limit on some OSes and has unreliable text encoding rules, so using it as the raw container for the example data has lead to problems), and we now read and write the example data with a couple of new copy to/paste from clipboard buttons</li>
<li>wrote another new test panel for subsidiary page parsers that does the separation formula stuff a bit better. the test results now come back for all posts as well, rather than just the first</li>
<li>added a new 'deeply_nested_dialog' frame key to options->gui for the parsing ui to better lay out five or six nested dialogs in a nice 'topleft' way</li>
<li>the 'topleft' frame padding is reduced from 50 to 24 pixels to better fit in deeply nested dialogs</li>
<li>misc parsing ui improvements and little fixes</li>
<li>the manage url classes and manager parsers dialogs now have a better 'add defaults' button that allows you to just select the defaults you want (by name) from a checklistbox</li>
<li>wrote a parser for 420chan and added it to the defaults. it should automatically add and link up when you update</li>
<li>if the install_dir/db directory is not writable-to (e.g. you have installed the program to a protected location like "C:\Program Files"), the client and server will default to ~/Hydrus as the db directory</li>
<li>wrote a new 'TagSummaryGenerator' class that will do 'bunch of tags'->'nice summary string' conversions for the thumbnail banners and export filenames</li>
<li>substituted some static tagsummarygenerators to do thumbnail banners</li>
<li>did the same for the media viewer top-center namespace summary</li>
<li>started some edit ui for tagsummarygenerators--I'll have some proper customisable stuff in the near future</li>
<li>moved the background memory maintenance and misc daemons to the new job scheduler, reducing thread count and idle CPU some more</li>
<li>added a debug 'show scheduled jobs' entry for the new job scheduler system</li>
<li>decompression bomb failures will no longer count towards a subscription's fail count, so having a bunch of them won't abandon a sync</li>
<li>fixed and otherwise improved a potential crash condition when a thumbnail panel closes while a menu is popup'd on it</li>
<li>to forestall this program instability, the thumbnail window will no longer replace while its menu is open. the behaviour after this delayed window delivery is slightly borked, but it isn't a crash so I'm ok with it for now</li>
<li>removed some other jank from the thumbnail media panel swap code</li>
<li>non-cancellable modal popups will no longer have the 'close' button. trying to close them with the dialog's X button will still give the 'sorry lad, can't cancel' error</li>
<li>rating and file service system predicates for services that no longer exist will now render a neat 'unknown x system predicate' presentation string rather than throwing an error</li>
<li>searches in 'all known tags'/'specific tag domain' no longer provide system:untagged, wew</li>
<li>some delayed events are now posted in a more thread-safe way</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 294</h3></li>
<ul>
<li>fixed video scan</li>
<li>fixed up some import folder logic--they now run 'look for new files' checks separate from 'import anything still in the queue', so they can now catch up on outstanding files more easily</li>
<li>the ten minute file-processing break is reverted--import folders now just 'save' every ten minutes, to forestall lost work on a crash</li>
<li>import folders now have an explicit 'check regularly' checkbox to control whether you want it to check regularly or only when you tell it to. the paused status now means 'do not ever work'</li>
<li>import folders now make a 'working' popup, like subscriptions do, that shows new file discovery progress and found file import progress. it has a cancel button that will stop the current job and can be hidden in the import folder's options. existing import folders will default to ON for this, so you'll likely see one of these right after you update</li>
<li>import folders can now publish their files to a new page! this effectively cuts out the button step. furthermore, if a page already exists with the import folder's name (e.g. a previous page the import folder created is still around), the import folder will publish the new files to _that_ page, updating it</li>
<li>file popup buttons with the same name will now 'merge'! multiple work cycles of a subscription or import folder will now just update the first button rather than spamming several</li>
<li>running import folders will respond faster to a client shutdown event</li>
<li>wrote some better controller-level thread management, including surplus thread deletion--idle CPU should be reduced on import-busy clients</li>
<li>wrote some code to deal with sub-second times a bit better in certain places</li>
<li>finished off a new scheduled job queue that collapses an old multiple-thread-when-idle system down into just one</li>
<li>many things are moved to the new job scheduling system--all the old calllater calls, and the popup message timers as well</li>
<li>completely removed the old wx timers the autocomplete input was using, as they were just too much of a hassle. any crashing these were causing is now gone--it all works on the simpler scheduled job queue now</li>
<li>the autocomplete dropdowns are better at judging when to engage their timers and so now use far less idle CPU</li>
<li>fixed a crash that could occur sometime after starting a duplicate filter maintenance task from the dupe filter page</li>
<li>fixed several unlikely but plausible crashes on the admin-side of petition processing</li>
<li>wrote a bunch of help for the url classes and new parsing system--it isn't finished yet, but then neither is the new system!</li>
<li>if the client fails to initialise the db, it will now try to present the error in a bit of screenshottable-gui before the program quits</li>
<li>improved thread watcher error handling when the given url is unwatchable</li>
<li>lots of timer related cleanup and tiny fixes</li>
<li>misc fixes</li>
</ul>
<li><h3>version 293</h3></li>
<ul>
<li>fixed the issue with options dialog not opening again after a save--I apologise for the inconvenience</li>
<li>the default system:time imported predicate (as set in options) is reset to the default '< 7 days'</li>
<li>fixed another potential crash with the manage tags dialog (in fact with any dialog that has an embedded autocomplete or any other autocomplete with a non-floating dropdown list, such as the import file path tagging dialog)</li>
<li>the sankaku user-agent has been updated to be a generic Firefox string "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0", which seems to work with their new rules. if your sank has been broken and you haven't touched the settings that do this stuff, your sank should be magically fixed on update</li>
<li>the default global hydrus user-agent has been updated to the more polite and compatible "Mozilla/5.0 (compatible; Hydrus Client)". if your previous global user-agent is currently 'hydrus client' (the old default), you'll be updated</li>
<li>import folders now deal with interruptions more skillfully and take a break and save their progress every ten minutes</li>
<li>the manage import folders dialog now waits properly for any currently running import folders to quit and save themselves before opening itself (like how the manage subs dialog does it)</li>
<li>import folders deal with some error states in a better way and are able to cancel out of their loops more reliably when an error occurs</li>
<li>added a new checkbox option to options->tags that lets your 'write' autocomplete inputs (ones where you can submit new tags, like in manage tags) select the first result with non-zero count by default. this means it will skip over the first result if it is just nonsense like 'boyp' that you typed to get the results</li>
<li>linked all the final behind the scenes stuff in the thread watcher together with the new parsing system. this stuff remains complicated and non-user-friendly, so please feel free to completely ignore it and the following batch of points:</li>
<li>-</li>
<li>wrote new url classes and parsers for 4chan and 8chan--they should all be automatically linked up on update</li>
<li>the new thread parsers will use the first part of the first post's comment if no subject is set</li>
<li>the domain manager can now cope with URL->API URL links</li>
<li>manage url class links now displays the current expected api pairs of URL class links and filters out what cannot be currently parsed as a result</li>
<li>manage url class links now only displays watchable urls in the bottom listctrl and permits parsers to be linked!</li>
<li>the domain manager can now try to link url classes with parsers based on example urls!</li>
<li>a button to fill in missing links is now available on the manage url class links panel</li>
<li>content parsers that produce urls now define different url types--file, post, and 'next gallery page'</li>
<li>content parsers can now parse a 'source timestamp' type</li>
<li>veto content parsers now use a StringMatch object to do their matching. existing veto content parsers will be updated and _should_ work about the same as before (unless the previous string was crazy in regex rules) using a regex match</li>
<li>html formulas now pick up the 'string' value more reliably in complicated or mangled html</li>
<li>html and json parsing formulas can now work without any rules, in which case they action the top level node (this is useful to replicate the json/html for subsidiary page parsing)</li>
<li>activated some of the new file import objects' features for the new parsing system--now, they store tags and known hashes as informed by what is parsed. this information is tested and used in import</li>
<li>the db can now test all the hash types--md5, sha1, sha256, sha512--during pre-import checking</li>
<li>the new parsing system now takes a temporary 'parsing context' that will eventually be able to receive and serve temporary variables but at the moment just holds a 'url' entry if the parser would like to use the url used to fetch the data anywhere</li>
<li>all the new parsing ui now has a button to edit the parsing context, and the example parsing context is saved to the topmost page parser object</li>
<li>wrote some url classes for 420chan.org--they will be added on update</li>
<li>fixed an issue with the 4chan thread url class</li>
<li>-</li>
<li>the standard new listctrl panel wrapper can now now provide a special 'export to pngs' for certain named objects that will quickly export one object per png</li>
<li>the 'import from png' dialog as launched from the standard new listctrl panel wrapper now allows multiple png selection</li>
<li>the default parsers (and now the url classes as well) are stored in install_dir/static/defaults. they are read from here when you create a db or ask to load from defaults, so feel free to play around with this</li>
<li>the manage services dialog now has an additional Yes/No warning/confirmation dialog if it expects to delete any services on dialog ok</li>
<li>page tabs escape mnemonic characters (typically '&', which in ui labelling rules makes the following character an underlined shortcut) more reliably</li>
<li>in an attempt to stop subs making so many separate small file popups, the subscription daemon will now only naturally check every four hours (previously one hour) and will wait up to ten minutes for bandwidth to free up before dumping out (previously 30 seconds). these values will be user-configurable in a future update</li>
<li>fixed import for some unusual apngs</li>
<li>corrected some more GMT/local time stuff with the new system:time imported 'date' mode</li>
<li>misc GMT/local time fixes (profile logs names themselves correctly, etc..)</li>
<li>improved how the thread watcher reports thread-check errors in unusual situations</li>
<li>fixed an issue generating network contexts when the initial domain is 'localhost'</li>
<li>improved some misc program stability</li>
<li>started a new job scheduler object to reduce idle thread count and CPU usage--will play around with it a bit more and see about integrating it in the coming weeks</li>
</ul>
<li><h3>version 292</h3></li>
<ul>
<li>extended system:age to support searching by fixed calendar date, e.g. "system:age > 2018/01/24"</li>
<li>'system:age' is also renamed to 'system:time imported' and presents nicer strings</li>
<li>I believe I have fixed the manage tags dialog crash</li>
<li>the manage tags dialog now loads related tags, file lookup script info, and recent tags off the main ui thread, meaning the dialog itself should launch much faster in almost all situations</li>
<li>cleaned up how a bunch of autocomplete<->manage tags events occur</li>
<li>'set_search_focus' works in the manage tags dialog again, drawing from the new shortcut system</li>
<li>fixed ctrl+scrollwheel on autocomplete entry, which now correctly scrolls the selection over the results again</li>
<li>cleaned up a bunch of the taglist scroll and selection code, particularly for tag children/parent selection events</li>
<li>fixed a potential crash bug initiated by en early exit from the export files dialog</li>
<li>fixed a potential crash bug initiated by an early petition processing page delete</li>
<li>fixed a potential crash bug initiated by an edit repository close during access key fetching</li>
<li>the thumbnail view should be a bit less jittery--the scrollbar should fade neater on mouseover, and maybe the thumbs are smoother as well (I turned off a now-superfluous double-buffering mode, please report any visual bugs)</li>
<li>added 'check_all_import_folders' to main_gui shortcut actions</li>
<li>menus off the main menubar that are out of date (this often happens to 'pages' after a session addition/delete) will now be disabled (greyed out) until they are back in sync</li>
<li>the duplicate filter now detects media it cannot display more carefully. if it runs across undisplayable media due to file orphan status, it will skip over it. if there is nothing else to display, it will ask the user to inform hydrus dev</li>
<li>added json support to the parsing engine!</li>
<li>wrote a new json parsing formula object</li>
<li>wrote a new 'compound' parsing formula object that combines multiple formulae together</li>
<li>wrote new panel for editing formulae with some cleaner button workflow</li>
<li>added multiple 'separated' content parsing solutions to page parsers and wrote all new gui to reflect that</li>
<li>expanded the new separated content parsing solutions to be full-blown nested sub-page-parsers, wew</li>
<li>put some more general work into the new parsing engine--the new page parser object now saves and serialises, so it can be imported and exported. I don't expect to change it much more, but don't rely on that! this is all still under construction</li>
<li>added 'file hash' content type to content parsers and improved ui support for when string conversion rules generate bytes data etc...</li>
<li>new parsing objects now render their parsable content correctly in the 'produces' column</li>
<li>misc cleanup of new and existing parsing dialogs</li>
<li>fixed the handling of escape/cancel events on the 'select from a list of strings' dialog</li>
<li>on update, users with a certain kind of orphaned file will be informed of the numbers and a request to inform hydrus dev</li>
<li>fixed exporting serialisable object to png, which was failing due to a bmp data change in the new wx</li>
<li>fixed a couple of places where I was switching GMT and local time around</li>
<li>deleted some old useless tag editing and commandevent code</li>
</ul>
<li><h3>version 291</h3></li>
<ul>
<li>expanded the permissible shortcut keys to all reasonable ASCII characters, such as comma and ampersand and the types of brackets</li>
<li>fixed a delayed crash sometimes caused by the file import frame (the one launched by dropping some files on the client or going file->import files)</li>
<li>the file import frame does its file parsing job in a generally more sensible way, particularly when new drops occur while parsing is ongoing</li>
<li>fixed a crash that could be initiated by the manage tags dialog setting the favourite tags late</li>
<li>fixed a crash that could be initiated by manage parents closing before results came in</li>
<li>fixed a rare possible crash that could be initiated by a review service panel delivering results late</li>
<li>when media pages load, they will be more thread-crash-polite to wx</li>
<li>wrote a new 'PageParser' object that will be the primary parser in the new downloader engine. this can deal with a variety of complicated parsing situations. it is still a work in progress, not yet ready for proper use</li>
<li>started new 'manage parsers' dialog for the new parsing system and arranged a bunch of things around that to make the eventual transition easier</li>
<li>edited some more old 'parsing scripts' ui to again make the transition easier. file lookup scripts will be converted to something new as we move to the new parsing system</li>
<li>fixed some bugs in contentparser instantiation</li>
<li>fixed a bug in the html tag rule edit dialog that wouldn't allow attribute pair editing</li>
<li>the names in the manage tags file lookup script dropdown are now sorted</li>
<li>removed some old redundant error-hiding code from the pubsub system</li>
<li>a common 'is my page closed' check is now a lot simpler and faster</li>
<li>fixed an edge shutdown bug where log messages were not able to be written to the log file</li>
<li>some media viewer objects delete themselves more safely</li>
<li>maybe fixed a rare menu refresh bug in linux</li>
<li>improved how hydrus deletes temp paths--if they are 'in use by another process', it will now put them aside and try again later. this error typically occurs when file mimetype parsing fails, and due to the error context hanging around, an open file handle is still in scope.</li>
<li>the client is better about recovering from missing tags in the db--in certain circumstances, it will now generate a 'unknown tag:random hex' as a simple placeholder that can be better used to investigate the error, rather than dumping out</li>
<li>downgraded os x opencv to 3.1.0 to hoyefully increase compatibility</li>
<li>the server closes a little more neatly</li>
<li>upnp errors are more verbose</li>
<li>misc code cleanup</li>
</ul>
<li><h3>version 290</h3></li>
<ul>
<li>content (tag and rating) shortcuts in the 'media' shortcut set now work on the thumbnail view!</li>
<li>tags in lexicophically sorted taglists will now sort numerically if their subtags start with decimals (e.g. page:3 will come before page:20 now)</li>
<li>trying to add/edit a subscription query that is a dupe will now give you a messagebox saying no, and pasting multiple queries will filter out the dupes and inform you (so, if you aren't sure if some of your list of ten artists to add is already in your big 'artist sub', just paste them anyway--it'll take out the dupes for you)</li>
<li>string converters now support regex substitution! (I expect to eventually integrate this into the filename tag parsing panel!)</li>
<li>'modal' popup messages (that create a new dialog and stop interaction with the program, like the one launched for repository processing) will now minimise non-main-gui frames while they work. these frames will be restored when the job is done (this should relieve the problem of this modal dialog sometimes letting other semi-stay_on_top frames obscure it while still prohibiting interaction, wew</li>
<li>simplified and sped up how importers decide whether to do file work or wait</li>
<li>made file importers do ui-polite pauses during the file import loop more intelligently--if the files make no big change to db or ui (e.g file was known already deleted because of its url), no wait will occur at all, meaning redundant lean queue-sections should work real quick</li>
<li>fixed an issue with multiply-nested submenus sometimes not deleting themselves neatly and resulting in highlight-related RuntimeErrors.</li>
<li>fixed an issue where the 'select from list' dialog could sometimes be ok'd without a valid entry--I believe this may be have been causing a delayed crash as well</li>
<li>added a 'ui timer profile' mode, which profiles some common unified ui update loops that draw animations and keep downloader ui synced and so on</li>
<li>the 'delete processed' file import status right-click menu entry will no longer show if it has the same count as the 'successful' line</li>
<li>the options->colours panel has some better layout and the namespace listbox asks a yes/no to delete if you double-click/enter a colour</li>
<li>dropping a raw file url onto the client will now automatically pend it to a raw url importer (previously, it would be put in the input box, but after rethinking how this could go wrong, I concluded it wasn't such a big deal). if you use this a lot, see how you like it, and let me know if you would want an option to revert to the old behaviour</li>
<li>updated domain manager so it tracks url class identity in a neater way (renaming them will no longer break links or display options)</li>
<li>improved some widget feedback of edit url class panel</li>
<li>simplified the manage url class links panel</li>
<li>url classes now normalise gallery and page urls differently (page urls strip all non-declared data, gallery urls just switch scheme). this may change in future</li>
<li>url classes can now convert a normalised url to an api url--for instance for informing the program that an imageboard thread url has an api version that'll be better to check</li>
<li>the domain manager can now determine arbitrary url parsability capability, and this is just starting to be integrated into url drag-and-drop--try dropping a known url class on the client, like a booru link: it'll now tell you it sees what it is but can't yet parse it!</li>
<li>the 4chan and 8chan thread url classes will reset to defaults again this week--replacing with url classes that convert to the api versions--and you'll get the new api url classes themselves</li>
<li>if missing, the primary tables in client.caches.db can now regenerate on boot. they aren't properly repopulated yet, but the client will boot and you'll get an error message telling you what to do next</li>
<li>improved .txt and clipboard tag import unicode support</li>
<li>removed leading BOM (byte order mark) from .txt and clipboard tag imports</li>
<li>improved some clipboard text fetching code</li>
<li>added a new 'hover window profile mode' to the debug menu--it will print the logic info behind any media viewer's hover window show/hide decision</li>
<li>tweaked the locale-setting code, which was stopping some users (on Win10 creator's update, it seems) from booting the client</li>
<li>added system:rating to 'all known files' query contexts (so you can now search for deleted files that have ratings)</li>
<li>the manage import folders dialog now has a redtext warning about subdirectories</li>
<li>some file importers deal with shutdown events more gracefully</li>
<li>lz4 is no longer required. if it is absent, or the version is too old, a simple statement will be printed to the log and it will not be used in either the client or server</li>
<li>updated to ffmpeg 3.4.1 on windows</li>
<li>updated opencv to 3.4 on windows and linux (had trouble with os x--will continue working on it next week)</li>
<li>fixed an important grammar typo in the help</li>
</ul>
<li><h3>version 289</h3></li>
<ul>
<li>fixed an issue where scrollbars were only appearing on taglists after a resize event</li>
<li>fixed the raw filename component of file drag and drop events from the client to external programs</li>
<li>fixed the tag lookup scripts</li>
<li>fixed some wx menuhighlight issues</li>
<li>improved some shutdown code</li>
<li>fixed the add/edit namespace colours options panel, which needed to be updated to deal with the new wx's better alpha channel reporting</li>
<li>fixed an issue when hitting 'open externally' on a media collection</li>
<li>fixed a crash on client shutdown whenever closed pages were in the undo menu</li>
<li>think I fixed another shutdown crash</li>
<li>fixed a rare issue with the collect by dropdown not being able to generate a string to display</li>
<li>misc wx fixes</li>
<li>added a 'importing' page to the options dialog, which now sets the default file import options for quiet and loud file import contexts</li>
<li>the old and no longer used 'exclude deleted files' option is now removed from the 'files and trash' panel</li>
<li>finished off default url matches for all downloaders that come with the program--these will be set on update, so if you have custom ones, please export them before you update so you can import them again!</li>
<li>improved how urls are matched and presented for the user in the media viewer</li>
<li>added a 'delete "successful" file imports from the queue' entry to the file import status button right-click menu--this only removes 'successful' and 'already in db', leaving anomalies</li>
<li>improved locale instantiation in the client and added locale strings to the help->about dialog</li>
<li>you can now set the page name prefix for a paused thread checker. it defaults to a unicode pause character: ?</li>
<li>thread watchers will no longer pause on a network error during a check--they now have a 'delay' system like subscriptions, and on a network error, they will delay four hours (unless you hit 'check now')</li>
<li>patched in some simple 'connection cutoff' network error handling, we'll see how it does</li>
<li>wrote in some more proper error handling for a specific connection cutoff error that is being produced</li>
<li>the similar files search tree regen code now clears out orphaned files. if you have had blank 'unknown' files appear in similar files searches, please run database->regen->similar files search tree</li>
<li>bitmap buttons on download pages will now update using less CPU and will flicker less</li>
<li>improved some video rendering error reporting</li>
<li>fixed the 'author name' regex favourite default, which had a superfluous asterisk. if you would like to fix it yourself, please try: [^\\]+(?=\s-)</li>
<li>added 'flush log' debug command</li>
<li>client.pyw now makes a safe 'system' ui error popup if it fails to boot</li>
</ul>
<li><h3>version 288</h3></li>
<ul>
<li>updated to wxPython Phoenix (4.0) build!</li>
<li>all builds now require the new wx, so if you run from source, please consult the help files for new info on figuring this out</li>
<li>did a ton of wx refactoring</li>
<li>merged a large number of timers</li>
<li>wrote a new wx-aware timer to replace some of the more awkward old timers that could not be neatly merged</li>
<li>replaced wx.calllaters (the new ones aren't always garbage collecting nicely) with the new custom timer object</li>
<li>misc wx deprecation refactoring</li>
<li>cleaned up some wx test code</li>
<li>fixed some crashing wx test code</li>
<li>fixed 'select from list of strings' object, which was no longer processing enter key properly</li>
<li>cleaned up a bunch of ui object interaction code</li>
<li>cleaned up a bunch of wx-related shutdown code</li>
<li>fixed an issue with the splash window not shutting down cleanly</li>
<li>fixed a shutdown db-gui status report crash</li>
<li>was unable to get flash embed windows working properly without edge-case crashing on windows, so they are disabled for now (you'll likely get an 'open externally' button instead)</li>
<li>animations now clean up their memory buffer faster in certain circumstances--all users who view animations in the preview window should notice significantly leaner 'idle' memory usage over time</li>
<li>fixed a very important inefficiency bug that meant select->inbox/archive on large pages with more than a handful of inbox files was taking extremely long periods of 100% CPU</li>
<li>wrote a faster way of fetching some media and their paths</li>
<li>copying files to clipboard is now much faster</li>
<li>initialising any large file drag-and-drop event is now much faster</li>
<li>certain redundant image pre-fetching will no longer be done</li>
<li>'open externally' panels will no longer draw a (slightly buggy and useless) animation bar if the underlying media would have had one</li>
<li>added a new 'menu profile mode' that will profile any menu click</li>
<li>cleaned up the debug menu</li>
<li>deleted some old options code that is no longer used</li>
</ul>
<li><h3>version 287</h3></li>
<ul>
<li>thumbnails can now be drag-and-dropped to other pages!</li>
<li>dragging and dropping thumbs to another page tab will remove them from the source and append them to the destination, maintaining file order!</li>
<li>DnDing thumbs to a 'page of pages' tab will put the files in the next lowest selected media page</li>
<li>DnDing thumbs to a blank notebook area (or a page of pages without a selected media page) will create a new page for the thumbs</li>
<li>holding down ctrl when you drop thumbnails will not remove them from the source</li>
<li>please forgive the thumbnail DnD cursor, which for now will be in the 'copy' state, despite the internal DnD being move by default</li>
<li>improved page tab drag and drop drop logic--dropping onto the page area itself will no longer send the page to the right-end of the current notebook</li>
<li>the 'file import options' object now supports three 'presentation' booleans--for new/already_in_inbox/already_in_archive files--so you can customise whether new thumbnails appear based on each state. page imports will by default show everything, while 'quieter' import queues like import folders and subscriptions will continue to just show only 'new' files in their files popup buttons. if you have a gui page with 10k+ items in its queue, try reducing the presentation to speed it up!</li>
<li>all existing import queues will be updated when they are next loaded--but please note that for simplicity and safety they will all initialise to the 'quiet' presentation method, so if you have ongoing download pages in any of your gui sessions (including thread watchers!), they will only add 'new' thumbnails unless you edit them. I apologise for the inconvenience</li>
<li>the regular hdd import now has a file import options button!</li>
<li>subscription query 'finished' file popups are now merged up to the subscription level--so, a sub with five queries that each get 20 new files in a run will now ultimately leave one popup with 100 files</li>
<li>file popups (as produced by subscriptions and a couple other places) now preserve their import order!</li>
<li>if a subscription with many queries runs out of bandwidth, it should now only give you one 'no more bandwidth to download files' message, rather than one for every outstanding query to sync</li>
<li>added a checkbox to turn on/off the new random subscription syncing to the options->downloading panel</li>
<li>the file import status button's menu now supports import/export of sources to clipboard/png! it _should_ also support unicode. be careful not to paste paths into a url cache, or urls from one gallery site to another, or you'll just get errors--this is prototype, so please keep like with like for now</li>
<li>the png import/export system now supports raw string payloads</li>
<li>the new listctrlpanel can now hang its buttons in multiple rows</li>
<li>the manage subscriptions panel now has an 'overwrite checker options' button to mass-set checker options</li>
<li>the manage subscriptions panel now has a 'select subs' button that selects subs based on a basic query text search</li>
<li>separating merged subscriptions now sets better new subscription names of 'old_sub_name: query_text'</li>
<li>saving a session from a page of pages with a custom name will no longer suggest a session name prepended by [USER]</li>
<li>doubled the subscription and downloader instance default bandwidth rules to 400 and 200 rqs/day</li>
<li>the 'load_images_with_pil' and 'disable_cv_for_gifs' options are now officially BUGFIX in the options--unless you know you need them on, turn them off!</li>
<li>added some safeguards to the new dialog-panel system's OK stuff, which sometimes catches a duplicate OK event</li>
<li>shuffled some db update status texts around</li>
</ul>
<li><h3>version 286</h3></li>
<ul>
<li>simplified how thread watcher assigns DEAD and 404 status--it should do it more reliably now</li>
<li>thread watchers now publish their page names (including updating dead/404 status) right after they check</li>
<li>the save session menu under pages now lists the exsting sessions for quick-save--if you select one of these, it will throw up a yes/no overwrite confirmation dialog</li>
<li>'appending' sessions now loads them in a new page of pages named as the session name!</li>
<li>right-clicking on a page of pages now gives you a 'save this page of pages to a session' option</li>
<li>right-clicking on the page tabs lets you append a session anywhere</li>
<li>'load' session is now 'clear and load', and it throws a yes/no dialog for confirmation</li>
<li>the gallery pending queries box now allows multiple selection with ctrl/shift clicks. it'll even move up/down correctly on non-contiguous selections!</li>
<li>the gallery query input is now a new combined textctrl-and-paste button control that will appear in other places across the program</li>
<li>the page of images input now also uses this new control</li>
<li>the page of images and raw urls queues will now ignore any input that does not start with 'http'</li>
<li>pasting a list of texts from the clipboard will now typically strip the pasted content of leading or trailing whitespace</li>
<li>some text and tag cleaning is a bit faster and neater</li>
<li>the file import status panel now supports 'open sources' on its right-click menu--it opens in your web browser or file explorer as appropriate. (linux can't do file explorer though)</li>
<li>thumbnails will no longer 'fade' when their pages are not visible, reducing CPU load in several contexts</li>
<li>thumbnail fade will use less CPU overhead on very fast computers</li>
<li>the timer loops that all import pages use to keep themselves updated are now harmonised into one loop at the top gui level (this should reduce some idle CPU overhead and improve some ui responsiveness)</li>
<li>content (tag and rating) shortcuts can now be set to 'flip on/off' or 'set'</li>
<li>the manage subscriptions dialog now waits for any currently syncing subs to cancel and save themselves before opening itself (keeping it all synced and rollback-proof)</li>
<li>added a 'watchable' url class type and wrote examples for 4chan/8chan thread urls</li>
<li>added 4chan/8chan file url classes to the examples, which if added will auto-hide them from the media viewer</li>
<li>fixed 'add parameter' in edit url match panel</li>
<li>simplified some stuff in the existing parsing system</li>
<li>added preliminary 'url type' support to the parsing system</li>
<li>the html formula parsing object can now return the full child html of the node it finds</li>
<li>the new url and html stuff doesn't do anything yet--but it will in the new downloader engine</li>
<li>added a bunch more booru entries to the url classes defaults. I will continue filling these out, hopefully setting comprehensive defaults next week</li>
<li>the advanced mode thumbnail right-click menu lets you reparse and regen thumbnails for any files! if you have rotated or stretched files, you can now fix them from the menu!</li>
<li>added new tools to let the client update media file metadata and thumbnails live!</li>
<li>the new reparse and regen should update file metadata and thumbnails live!</li>
<li>improved how some 'quiet' errors are printed to the log. they'll now have the full trace of the error as well as the stack</li>
<li>added a daemon_report_mode debug mode. it throws up a popup every time a daemon fires its callable</li>
<li>fixed an issue with the editstringtostringdictcontrol</li>
<li>fixed an issue with loading (and updating to a new version) import pages or import folders with some kinds of unicode paths</li>
<li>you can now set the 'woah, you should close some pages' warning value under options->gui. its default remains 165 pages</li>
<li>system:similar_to searches should be a lot faster on clients with many files</li>
<li>the manage subscriptions and edit subscription panels now both list their num_urls summary column as '22' if all done but '11/22' if not. this column also sorts based on percentage completion, then num total, then num done</li>
<li>the database migration dialog now uses the new listctrl--its buttons are now also clever, and will disable when they are invalid</li>
<li>misc fixes</li>
<li>fixed an index bug in the new listctrl after certain types of 'setdata' call</li>
<li>cleaned up some search code</li>
<li>some veto code cleanup</li>
<li>cleaned and harmonised how text is pulled from the clipboard</li>
</ul>
<li><h3>version 285</h3></li>
<ul>
<li>added 'network' main gui menu and moved network stuff from services to it</li>
<li>split the new domain manager stuff up into separate dialogs and menu entries on the new network menu</li>
<li>manage url classes dialog now lists url type in the listctrl</li>
<li>added url class links info (which will permit client-specific settings and downloader mappings for url classes) to the domain manager</li>
<li>wrote a 'url class links' dialog and added it to the new network menu (only the 'display on media viewer' part works atm)</li>
<li>the domain manager now filters urls on the media viewer depending on whether they have a url match and are set to display in the new links panel</li>
<li>updated the local booru service code to the new service system</li>
<li>the local booru's shares can be reviewed again under review services</li>
<li>the local booru's port and bandwidth settings can be set again under manage services</li>
<li>the different gui parts of the local booru are updated to new controls</li>
<li>fixed a local booru 404 reporting error</li>
<li>the edit subscription panel now has a 'paste queries' button that lets you add queries en masse</li>
<li>added 'manage_file_urls' to shortcuts system</li>
<li>added several 'get_similar_to_x' actions to the shortcuts system</li>
<li>the manage upnp dialog now initialises its mappings on another thread and fails better when UpnP mappings cannot be fetched</li>
<li>connection and readtimeout network exceptions are now recognised more specifically by the client. subscriptions will only delay for an hour on one of these exceptions</li>
<li>improved the resilience of the HF login code after wake from sleep (when networking is often not available for a couple of seconds)</li>
<li>like the recent subscription query randomisation update, subscriptions themselves are now synced in random order (this stops a subscription named 'aadvark' always getting first bite into available bandwidth)</li>
<li>fixed import for jpegs that have unparsable exif data</li>
<li>fixed a bug in 'next month' bandwidth estimate calculation when the month is December, wew</li>
<li>fixed some logic that was setting max page at 165 rather than the intended 200 and added a dialog that even lets you engage the debug override at 200 if you are insane</li>
<li>all audio mime detection and duration parsing is now done through ffmpeg. hsaudiotag is no longer needed to run the program</li>
<li>since the old listctrl sort crash bug is still hitting some people, I've disabled sort on the old listctrl class. feel free to try to sort any listctrls now, no matter your situation. I will continue replacing the old class with the new working class over time</li>
<li>updated another listctrl</li>
<li>a ton of misc controller options/manager access refactoring</li>
<li>cleared out some old code</li>
<li>moved Time controls to their own file and added velocity and checker options stuff as well</li>
<li>wrote a new edit panel for single controls and updated the time delta button to use it</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 284</h3></li>
<ul>
<li>fixed subscription queries turning dead on the initial sync</li>
<li>all dead subscription queries have been set to check again in case they can revive</li>
<li>added query file velocity to edit subscription panel</li>
<li>subscription network contexts now reflect the new multiple subscription query system, and are named "sub_name: query_text". as every query now counts as its own separate subscription network context, this will stop query-heavy subscriptions from throttling so much on bandwidth limits</li>
<li>finished URLMatch object, which matches and normalises URLs into certain 'classes' like 'gelbooru post url'</li>
<li>expanded some URLMatch subdomain options</li>
<li>fixed some test logic in URLMatch</li>
<li>finished the last of the EditURLMatchPanel</li>
<li>split the 'manage network rules' dialog into two panels--it now has a 'url classes' tab</li>
<li>wrote a panel for managing url matches</li>
<li>added export/import/duplicate buttons to EditURLMatchesPanel</li>
<li>wrote some URLMatches for hentai-foundry as an initial test of the system and added a temp button to add them--please check them out to see how it all works</li>
<li>all, invert, inbox, and archive (and none, lol) thumbnail 'select' menu items now have counts</li>
<li>invert is now at the bottom</li>
<li>the thumbnail select menu now has local/remote entries if applicable (this typically is only true in 'all known files' file domain)</li>
<li>added png/clipboard export/import/duplicate code to the generic new listctrl button wrapper panel, which will save a bunch of time as the png/clipboard sharing system expands</li>
<li>added a human-facing serialisable name to all objects on the new serialisation system and tied the new import/export code into it for png presentation</li>
<li>the edit import folder dialog will now complain (but not veto) on an ok event if any of the entered paths do not exist</li>
<li>if you attempt to manually run an import folder while import folders are globally paused, you'll get a little popup telling you so</li>
<li>added an experimental 'thumbnail fill' setting to options->gui. it zooms the existing thumbnails so they fill the whole thumb space. feedback on this from those who would be interested in a prettier system would be appreciated</li>
<li>added 'paste tags' buttons to filename tagging options panel</li>
<li>the paths/urls in the file import cache are now their own object that holds the creation/modified/source times and current status and note. this object can also hold prospective urls, tags, and hashes for future use</li>
<li>a bunch of file import actions are faster</li>
<li>all the different importers now use this new file import object</li>
<li>fixed a screen position calculation in the new drag and drop filtering code that was accidentally including too many possible drop candidates on drops in the top-left corner of the main gui (if you had trouble moving tabs to the left, this should be it fixed!)</li>
<li>fixed a problem display volume/chapter/page tags that included unicode characters in thumbnail banners and media viewers</li>
<li>fixed a rare media display bug in the dupe filter</li>
<li>fixed some 'C++ part of panel has been deleted' bugs in review services if the frame is shut down before delayed db info is fetched</li>
<li>cleaned up some more 'C++ deleted' errors in import files selection dialog</li>
<li>fixed the network context custom header panel 'add' action, which wasn't saving the value of the panel</li>
<li>fixed a bunch of bugs in the newish QueueListBox class</li>
<li>SynchroniseRepositories daemon will be better about quitting early on application shutdown</li>
<li>cleaned up some pending pretty timestamp grammar</li>
<li>when the client cannot clean up a temporary file, it will print more error information</li>
<li>added pylzma to the 'running from source' library recommendations. this is not required, but if available it adds ZWS flash support</li>
</ul>
<li><h3>version 283</h3></li>
<ul>
<li>subscription popups show a bit more info about their individual queries</li>
<li>subscription popups hide the sub-query info in text and file buttons if it is the same as the subscription name</li>
<li>subscriptions now work through their queries' downloading phases in random order (so a heavy query named 'aardvark' won't repeatedly choke the sub's other queries if bandwidth is tight)</li>
<li>if a subscription query dies, a notification popup will now be made</li>
<li>changed a logical edge case that may have been killing some subscription queries after the first sync</li>
<li>re-enabled pixiv artist search, as it still uses the old gallery style</li>
<li>added tentative support for 'ZWS' flash files</li>
<li>if there is more than one import folder, the 'check import folder now' submenu now has a 'check all' entry</li>
<li>TimeDelta controls that have the 'days' entry (as in thread/subscription checker options panels) now have a max period of 10 years for those _really_ slow threads</li>
<li>fixed an issue where the 'quick namespaces' section of the new filename tagging options panel was not initialising correctly when it loaded data from a previously serialised import folder (this was the "unhashable type: 'list'" bug in the edit import folder panel)</li>
<li>the filename tagging dialog now works on the new panel system. it also has an entry under options->gui: 'local_import_filename_tagging'</li>
<li>polished StringMatch object</li>
<li>polished EditStringMatchPanel</li>
<li>html formulas now have a string match object</li>
<li>improved parsing error system</li>
<li>miscellaneous improvements to the parsing system</li>
<li>misc fixes to StringMatch and parsing system</li>
<li>the main gui will no longer interpret text drops on child frames as url drops. this fix just quashes the drop--it doesn't allow the initially desired drop on the child frame to occur. I will keep thinking about this</li>
<li>the dupe filter's 'no media to display' text now says 'Looking for more pairs--please wait'</li>
<li>the 'remove' media action is now labelled 'remove from view' to reduce 'is it a delete?' confusion</li>
<li>fixed an icon initialisation order problem that meant pre-boot errors were unable to display</li>
<li>fixed a graceful-shutdown-on-boot-error bug</li>
<li>the custom 'listboxtags' controls now post an event on their contents changing</li>
<li>the tag censorship panel now updates its status text when its listboxes change due to a mouse double-click event</li>
<li>fixed file import 'source time' column sometimes showing '3e-05 years' kind of garbage that was due to a missed float->int conversion</li>
<li>cleaned up how some page names are thrown around, which should stop some stray [USER] prefixes slipping though</li>
<li>the adminside petition management checklistbox will now escape mnemonic characters (typically '&') and hence display them correctly on sibling pairs and so on</li>
<li>wrote a 'help my client will not boot.txt' that explains the new debug builds and some other common fixes to try</li>
<li>'all known files' file search domain is now hidden behind advanced mode</li>
<li>fixed another instance of flashwin causing a failed boot</li>
<li>cleaned up some old broken unit tests</li>
<li>some misc help improvements</li>
<li>updated Windows build to new version of sqlite</li>
</ul>
<li><h3>version 282</h3></li>
<ul>
<li>rolled back to an older version of pyinstaller that does not seem to have the embedded flash window problems windows users experienced</li>
<li>added an error handler to wx.lib.flashwin import--if it fails to import, the client will print the error to the log and thereafter show 'open externally' buttons instead of the embedded flash window</li>
<li>created a 'filename tagging options' object to handle the instance-non-specific auto-tagging parts of the filename tagging dialog</li>
<li>moved all the appropriate tag generation code to this new object</li>
<li>extracted the simple and advanced panels in the filename tagging dialog to a separate panel</li>
<li>wrote a new wrapper panel to edit filename tagging options objects directly</li>
<li>cleaned up some tag generation code--it'll now all be siblinged/parented/censored the same way</li>
<li>import folders now use the filename tagging options object, harmonising this tag parsing code</li>
<li>edit import folder gui now has an add/edit/delete listctrl to manage the new tag_service->filename_tagging_object relationship (this replaces the old .txt management button and summary text)</li>
<li>finished the StringConverter class in the new parsing engine. it applies a series of transformations to text</li>
<li>wrote a panel to edit string converters</li>
<li>wrote a panel to edit string converters' individual transformations</li>
<li>updated html formulas to use string converters instead of the old cull_and_add system</li>
<li>html formula edit panels can now edit their new string converters</li>
<li>file lookup scripts now 'stringconvert' their file identifier strings--this should allow the 'md5:md5_hash' fix we've been talking about (i.e. by first encoding to hex and then prepending 'md5:')</li>
<li>the help->about window now shows the client's default temp directory</li>
<li>thumbnail regeneration--particularly full-size regen and resized png gen--should be much faster in the client</li>
<li>the debug exes are now included in the windows build</li>
<li>the debug exes are now included in the non-windows builds</li>
<li>the test exe is no longer included in the windows install (can't remember it ever being useful, and it is like 10MB now)</li>
<li>unfortunately, a recentish change to how pixiv serves gallery page results has broken the hydrus pixiv downloader. this will have to wait for the downloader overhaul, and even then, it might be _slightly_ tricky. pixiv downloader entries are now hidden, and existing pixiv subscriptions will be paused on update</li>
<li>the thumbnail select submenu now clarifies 'all (all in x)' if all are in the inbox or archive</li>
<li>you can now archive/delete filter from the thumbnail menu on a single file</li>
<li>lowered the http session inactivity timeout even more, to 45 minutes</li>
<li>fixed a couple of instances of the new subscription dialogs being unable to mass-retry failures</li>
<li>ffmpeg parsing errors now print more info about broken file path</li>
<li>some daemons will be snappier about shutting down on application shutdown</li>
<li>took out the sometimes invalid 'booting' phrase in the during disk cache population status report</li>
<li>the client will now warn you about page instability at 165 pages after one user reported instability at 175. 200 is still the strict limit.</li>
<li>downloader pages and subscriptions will fail more gracefully if their downloaders cannot be loaded (e.g. they used a since-deleted booru)</li>
<li>fixed listctrl panel button enabled/disabled status when the child listctrl starts empty</li>
<li>the new listctrl can now select data in a cleverer way</li>
<li>misc fixes</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 281</h3></li>
<ul>
<li>subscriptions can now support multiple queries!</li>
<li>subscriptions now use the new thread checker system to set their check periods!</li>
<li>improved some check timing calculations to deal with subscription timestamps</li>
<li>existing subscriptions will update</li>
<li>subscriptions can now see any 'delay' reason on their edit page and can scrub it there as well</li>
<li>subscriptions no longer track 'last error'. everything goes through the delay system and keeps track of reason</li>
<li>added 'last new file time' to the subscription listctrls</li>
<li>subscriptions now generate separate 'file button' popups for each query, and file button popups now include their name in the button label</li>
<li>the subscription listctrl is now breddy wide. I will be adding some way of hiding columns (with persistent memory) on the new listctrl at some point in the future, so please bear with it for now</li>
<li>manage subs now has a wrapper panel and buttons that disable when invalid</li>
<li>tumblr simple 'video' posts should now be supported! turns out they are just mp4s</li>
<li>in the client, static image thumbnails are now generated with opencv</li>
<li>files that give truncated image errors should now import ok. they'll render with errors. if cv is up to date and working ok, they should have good thumbnails as well (otherwise they will have all-black thumbs)</li>
<li>updated manage regex favourites dialog to the new panel system</li>
<li>regex favourites are now editable under the new options->regex page</li>
<li>ongoing import or export folders will now stop working if their respective manage dialogs are opened</li>
<li>import folders can now stop working if the client shuts down during the initial file parse phase</li>
<li>export folders will now stop working immediately if the client shuts down</li>
<li>export folders can now stop working during the file copy stage</li>
<li>the splash screen is now a little wider and taller</li>
<li>the splash screen now has a subtext row for misc technical data</li>
<li>the boot and exit splash screens show a bit more data about several things</li>
<li>the repository sync daemons should be a bit snappier about responding to a client shutdown</li>
<li>the import files dialog is now a non-modal frame! (you can now continue to use the client while this frame parses files) you can even open up several at once!</li>
<li>the 'import file path tagging' dialog should now never be taller than its spawning screen and also slide up and left if it spawns with its bottom-right corner off-screen (this dialog is still on the old system, however, so the newer sizing stuff that does this stuff automatically is not yet available)</li>
<li>sliding up-and-left should now also occur on spawn for frames on the new system</li>
<li>the advanced 'process now' repository button will now disable itself if there is no work to do!</li>
<li>if simple downloads like gallery pages are larger than 100MB, the client will throw an error (this is a stopgap for an ongoing issue)</li>
<li>the 'maintenance and processing' page has a bit more warning text</li>
<li>the new listctrl wrapper panel now supports menu buttons</li>
<li>libpng's iccp terminal warnings from loading the flash/pdf/zip thumbnails should now be gone!</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 280</h3></li>
<ul>
<li>the client should now recognise EXIF file rotation and flipping in resolution discovery, thumbnail generation, and image rendering. existing files will be borked, so will have to either be manually deleted&reimported, or wait for a maintenance routine that will retroactively fix all these</li>
<li>videos with a non 1:1 sample aspect ratio (wew lad) should now import with correct resolutions</li>
<li>all 'tag import options' are now managed with the new button</li>
<li>deleted all old tag option management gui, including deleting ClientGUICollapsible entirely</li>
<li>with the simpler tag import options, increased max page count to 200</li>
<li>page of images downloader now has two pause separate buttons for queue and files processing</li>
<li>the page of images downloader should no longer too-quickly blank out its parser status at the end of queue processing</li>
<li>the default hydrus bandwidth rules now no longer has the choking 'requests per day' limitation that was messing up large mappings uploads. (it is now just 64MB/day)</li>
<li>your hydrus default bandwidth rules will reset to this on update</li>
<li>POST requests (which in for our purposes are always user-driven) no longer obey bandwidth rules</li>
<li>fixed a bug when sometimes hitting the file limit or hitting a siteside 404 in the gallery downloader</li>
<li>a rare bug due to empty string menu labels is now no longer possible. empty string labels, if they slip through, will be replaced with 'invalid label'</li>
<li>you can no longer choose the empty string as a gui session name</li>
<li>improved how network jobs keep track of all applicable network contexts vs the preferred session and login contexts</li>
<li>cleaned up a bunch of login code, improved verification testing</li>
<li>fleshed out domain login system</li>
<li>in the networking engine, the read timeout is now six times the connect timeout--we'll see if this reduces some hydrus and other read timeout problems we've seen</li>
<li>increased the server transaction period from 10s to 120s--we'll see if this helps reduce some spiky server POST lag or what</li>
<li>the default tag import options panel now edits on double-click, rather than deletes. it also yes/no dialogs on a delete action. this control is still trash, but it now works more like the rest of the program</li>
</ul>
<li><h3>version 279</h3></li>
<ul>
<li>moved the hydrus service object over to the new networking engine</li>
<li>hydrus services now appear in the bandwidth review panel</li>
<li>hydrus requests now obey larger network bandwidth rules (this mostly means 'global')</li>
<li>service bandwidth usage and rules are no longer managed from manage services--it is now under review bandwidth usage, like all other network contexts</li>
<li>updated some network engine stuff for misc hydrus states like 'server busy'</li>
<li>fixed a bug in the server code where the session key cookie had an invalid expiration timestamp--servers should update this week to make sure new clients can log in properly</li>
<li>hydrus network requests will force-set User-Agent as 'hydrus client/(network_version)' as the network version is used in the protocol to determine compatibility</li>
<li>fleshed out the hydrus specific network job, giving it the various bandwidth tracking and version checking responsibilities the service object used to have</li>
<li>moved session cookie decay (only matters for Hentai Foundry atm) to the new session manager (was previously hacked into the login manager)</li>
<li>moved some hydrus response parsing stuff around, added content type awareness to the new network job</li>
<li>updated several unusual hydrus 'static/test' requests used to test credentials and fetch access key and so on to the new system</li>
<li>added a special 'test service' service to better accomodate these requests</li>
<li>wrote a static login script for hydrus services</li>
<li>polished up login management system overall</li>
<li>import folders now support a 'check now' state, like subscriptions, that will cause them to check immediately</li>
<li>import folders can be 'check now'ed from the file menu under a new submenu! if you would like to have a 'manual' import folder, try pausing it and just running it from this menu!</li>
<li>added an optimisation to the file search algorithm to search ratings queries super fast when they lack tag or file system preds to otherwise speed them up</li>
<li>updated the booru presets that now support https to be https</li>
<li>added a 'restore defaults' button to the manage boorus dialog--you can restore specifics or all of them</li>
<li>optimised how fading thumbnails are blitted to screen, which may provide a huge performance boost for high-res/small-thumb clients</li>
<li>pages that have been renamed by the user will no longer be rename-overwritten by any auto-renaming system (currently just thread watchers, I think, but this will expand in future). unfortunately, this is not retroactive--only pages renamed from now on will be aware that they were user-renamed</li>
<li>in advanced mode, the pages menu now states how many pages are currently open</li>
<li>the 'page of images' downloader will now say '(x already in queue)' when it reports how many urls were found, if any were already in the queue. (this should clear up some confusion where it would previously say '0 new urls' even when it found some stuff)</li>
<li>the gallery downloader will do essentially the same, but on a per-page basis. the text is a little crushed, so I may revisit this</li>
<li>fixed an issue with the manage services dialog not being able to rename dupe-named services on edit subdialog ok</li>
<li>the manage services dialog now uses the new listctrl! the listed services are no longer a horrific unsorted mess!</li>
<li>fixed the file import status button not showing on raw url downloader or import folder edit dialog</li>
<li>improved how some directory tree merging code deals with read_only files in the source</li>
<li>maybe fixed some unusual selection behaviour with the booru selection popup dialog. it now has a real ok button, rather than a mickey-mouse hidden one</li>
<li>completely deleted the old networking engine!</li>
<li>cleaned out some unused imports from the networking code and related entries from running_from_source.html</li>
<li>changed up and fixed some odd bugs in how how repositories test some error/isfunctional stuff vs regular paused status</li>
<li>hydrus network contexts now have a prettier name</li>
<li>ip address-based network contexts will no longer spam the bandwidth tracker with their useless subdomains</li>
<li>network jobs that are unable to attempt validation or login will now error immediately rather than waiting indefinitely</li>
<li>fixed up a bunch of test code that was broken due to the mismatch of network engines</li>
<li>broke some other test code due to the network engine transfer!</li>
<li>the client is more resilient about broken 'twisted' installs, and _should_ be able to boot without it. this may or may not apply to the built release--more work can be done here</li>
<li>some network job refactoring</li>
<li>clientside service code cleanup</li>
<li>misc fix that I can't remember</li>
<li>misc cleanup</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 278</h3></li>
<ul>
<li>fixed the tumblr raw url converter to now point to the data.tumblr.com domain</li>
<li>added a hardcoded ssl verify exception for data.tumblr.com, which has an incorrectly defined ssl cert (at least for public-facing interactions), wew</li>
<li>all existing db urls and file import cache urls for media.tumblr.com will be updated to data.tumblr.com on update! (everything _should_ just magically work again)</li>
<li>fixed apng import, which the decompressionbomb detection code was not handling correctly</li>
<li>collapsed the different instatiations of the 'file import status' button down to one class</li>
<li>the file import status button now has a right-click menu that supports 'retry failures' and 'delete processed', if applicable</li>
<li>misc import status cache cleanup and refactoring</li>
<li>you can now edit or completely turn off the [404] and [DEAD] thread watcher page name prefixes under options->downloading</li>
<li>thread watchers should more reliably keep 404 status</li>
<li>'open selection in a new page' now preserves file order!</li>
<li>'view this file's duplicates' now sorts the files!</li>
<li>options->gui now has an option to change how often 'last session' is saved</li>
<li>'last session' will no longer autosave to the database if there are no changes</li>
<li>tags exported to neighbouring .txt files are now correctly sibling-collapsed</li>
<li>tags imported or exported via neighbouring .txt files are now correctly tag censored</li>
<li>the manage tags dialog will now protest with a yes/no dialog if you attempt to cancel it with uncommitted changes</li>
<li>the manage parents and siblings dialogs will now protest with a yes/no on an ok event if there are 'uncommitted' pairs in the lower boxes (e.g. if you forgot to click the 'add' button)</li>
<li>fixed an issue that would sometimes stop old sessions from loading properly</li>
<li>the duplicates page now does its maintenance jobs in modal popups!</li>
<li>attempting to apply a duplicate status to more than 100 pairs now throws up a warning yes/no dialog</li>
<li>the manage urls dialog now has copy/paste buttons</li>
<li>added a (somewhat debug) option to disable the mouse hide&anchor behaviour on slow Windows canvas drags to options->media</li>
<li>added a 'regen all phashes' command to the database regen menu</li>
<li>the disk cache options in help now have a help button to explain good values for ssd vs hdd</li>
<li>the edit bandwidth rules dialog now uses the new listctrl</li>
<li>merged the old and new login managers</li>
<li>misc login work</li>
<li>misc refactoring</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 277</h3></li>
<ul>
<li>expanded the domain manager into a legit serialisable object that holds data and saves itself on changes. to begin with, it supports custom http headers for particular on network contexts</li>
<li>the global User-Agent (which now defaults to 'hydrus client') is set through this new manager, as attached to the 'global' network context</li>
<li>wrote a basic panel to edit custom http headers under services->manage network rules (this panel will be fleshed out with more in future--please ignore if you are not an advanced user)</li>
<li>wrote a panel to edit an individual custom http header</li>
<li>wrote a panel to edit/select network contexts. this will get a bunch more use elsewhere as the overhaul continues</li>
<li>flushed out and tested the new popup yes/no button system</li>
<li>sanakucomplex.com has a User-Agent entry in the new custom header system--on the first sank request, you will be presented with a yes/no popup asking if it is ok to use.</li>
<li>if you ok the user-agent, sankaku now seems to work again!</li>
<li>sankakucomplex.com network context will get some specific conservative bandwidth rules (80 rqs per 7m, 1 rq per 4s) on update</li>
<li>added an option to options->gui to reverse the page tab shift behaviour</li>
<li>'don't scroll down on key navigation event if thumb is at least this % visible' value is now 75%. it is also editable under options->gui</li>
<li>the hydrus icon used on frames is now the non-transparent version that shows up better on dark backgrounds</li>
<li>the standard hydrus.ico used in web favicons and the executable builds is now also non-transparent (this should also propagate up to OS shortcuts and taskbar icons wherever the frame icon is not inherited)</li>
<li>file export drag and drop events will now defocus the currently focused media on successful drop (e.g. if you drag a video to an external media player, it will stop rendering clientside), just like for open externally</li>
<li>database analyze maintenance should be more reliable with respect to fresh repository syncs</li>
<li>reduced default impermanent session timeout in new networking engine to 60m (should fix/reduce some hentai foundry 503s)</li>
<li>misc ui improvements and speedup</li>
<li>misc fixes</li>
</ul>
<li><h3>version 276</h3></li>
<ul>
<li>the new thread watcher object will no longer produce check periods shorter than the time since the latest file. this effectively throttles checking on threads that were posting very fast but have since suddenly stopped completely</li>
<li>thread watchers now parse their thread subject and place this in the left management panel</li>
<li>thread watchers now name their pages based on the thread subject, if one exists</li>
<li>an option to permit or deny thread watchers renaming their pages is now under options->downloading</li>
<li>dead and 404 threads now disable their checker pause button--to attempt to revive, hit 'check now'</li>
<li>thread watchers now preface their page name with [DEAD] or [404] when appropriate</li>
<li>misc thread watcher code improvements</li>
<li>added basic import support for zip, rar, and 7z files. they get no useful metadata (yet) and have a default 'archive' thumbnail</li>
<li>the client will now by default detect and not import decompression bombs before they blat your computer. an option to allow them nonetheless is under options->media</li>
<li>the server will now not parse or accept decompression bomb uploads in POST requests</li>
<li>added a 'refresh all pages' entry to page of pages's right-click menu</li>
<li>added 'send this page down to a new page of pages' to page right-click menu</li>
<li>added 'send all pages to the right to a new page of pages' to page right-click menu</li>
<li>fixed a page of pages drag and drop issue when dropping the last page of a notebook onto the same notebook tab</li>
<li>fixed some index calculation problems when DnDing page tabs to the right on the same notebook</li>
<li>sending a refresh event to a 'show selection in a new page' page (which has no search predicates and so cannot 'refresh' its search) will now trigger a sort event (like importers got last week)</li>
<li>thumbnails at the bottom of the current view but are at least 90% in view will no longer scroll into view when selected</li>
<li>click events will no longer scroll thumbnails that are semi-out of view into view</li>
<li>improved how all 'wait until the client ain't so busy' checks work. importers that have a whole slew of 'already in db' to catch up on should now not clog the gui so much</li>
<li>similarly, under ideal conditions where nothing is busy, importers will iterate over their files more quickly</li>
<li>the network engine now has a 'verification' loop that doesn't do anything yet, and a stub domain engine is generated to be consulted in this</li>
<li>wrote some verification code, extended popup messages to support yes/no questions</li>
<li>polished some domain engine code</li>
<li>fixed an issue where file repositories were not recording deleted files in certain cases</li>
<li>all file repositories will be reset on update</li>
<li>the date entries on the review bandwidth bar chart now have leading zeroes on 0-9 months to ensure the sort correctly (this month's 2017-10 entry was sorting before 2017-8, wew!)</li>
<li>the migrate database dialog now shows approximate total thumbnail size</li>
<li>gave the migrate database help a quick pass</li>
<li>gave the 'help my db is broke.txt' file a quick pass</li>
</ul>
<li><h3>version 275</h3></li>
<ul>
<li>if you hold shift down while dropping a page tab, the client will not 'chase' that page to show it (try it out!)</li>
<li>the gui will be more snappy about dealing with drag-and-drop drops (of types file import, page tab rearrange, and url drop), returning the mouse to normal state instantly on drop and dealing with the event in a subsequent action</li>
<li>dropping url text on the client will specifically inform the source program not to delete the dragged text (that the operation was copy, not move), if it is interested in hearing that</li>
<li>page drag-and-drops should transition a little less flickerily</li>
<li>all file import status objects can now track 'source time', typically to represent upload time</li>
<li>file imports now populate 'source time' based on the earliest of creation/modified time! (this will be used later to parse as a tag)</li>
<li>thread watchers now populate 'source time' based on post time!</li>
<li>finished a watcher options object for the new thread checker system</li>
<li>wrote a panel to edit watcher options</li>
<li>converted the thread object to the new watcher system</li>
<li>thread watchers now have two pause buttons--one for the file queue, one for the checker</li>
<li>compressed thread watcher ui layout</li>
<li>converted the thread left-panel ui and options->downloading page to reflect the new watcher system</li>
<li>improved the watcher options to generate better timings for fresh threads</li>
<li>cleaned up some thread watcher check time code</li>
<li>the total/selected mime summary on the status bar is a little prettier and will now report by individual mime sometimes</li>
<li>generating the total/select mime summaries are now faster on pages with >1,000 files (it'll just use 'file')</li>
<li>a 'refresh' action on an import page now triggers a sort event</li>
<li>added 'flip_darkmode' shortcut command to 'main_gui' and 'media_viewer' shortcut sets</li>
<li>added copy_file/path/hash/bmp actions to the 'media' shortcut set, removed the hardcoded ctrl+c for copy_file. I added ctrl+c to the defaults, but existing users will have to re-add it manually if they want it!</li>
<li>simplified some page ui update code</li>
<li>import pages will no longer update their left-panel ui (which uses a bit of cpu) when they are not in view</li>
<li>polished some new string and url matching code the domain engine will be using</li>
<li>wrote a panel to edit string match objects</li>
<li>wrote a new panel to handle simple ordered lists of data in a better way</li>
<li>wrote most of a panel to edit url match objects</li>
<li>misc domain manager work</li>
<li>fixed an issue with the old listctrl where object name de-duplication was sometimes not permitting (1)-type names to be cleaned up</li>
<li>fixed some inelegant time duration->text conversions</li>
<li>improved complete process shutdown reliability when some downloads are waiting on bandwidth on shutdown</li>
<li>did some misc listctrl update work</li>
</ul>
<li><h3>version 274</h3></li>
<ul>
<li>the help menu now has an easy on/off check entry for the darkmode colourset</li>
<li>changing any individual colour or the entire colourset will now immediately refresh almost all custom-coloured controls with the new colour</li>
<li>added a BUGFIX option to options->gui to permanently fix all discord file drag-and-drop events (as long as they contain <= 10 files and total < 50MB)</li>
<li>you can now set specific 'open externally' launch paths on a per-mime basis under options->files and trash</li>
<li>improved error reporting on a bad file launch</li>
<li>improved the network engine to recover from and reattempt in-progress response read errors (previously reported as ReadTimeout)</li>
<li>fixed the 'scroll to focused thumbnail' calculations on key events (when hitting up/down arrow key on thumbnail grid, the page wasn't scrolling correctly as needed)</li>
<li>known urls no longer display with the scheme (http or https) in the media viewer top-right summary</li>
<li>known urls in the media viewer top-right summary now tooltip their full url</li>
<li>wrote a new button for editing tag import options. it has a good summary tooltip. it is only in the manage import folder dialog atm, but I will replicate it across the rest of the program in the coming weeks</li>
<li>in some situations, the file import status window will list some timestamp note info for 'already in db' and 'deleted' statuses. see if you like it</li>
<li>the new listctrl will generally give its data to other consumers in ui sorted order (this fixes some stuff like 'copy sources' in the file import status window, which was copying them in random order)</li>
<li>manage tag parents now uses the new listctrl (and is hence now safely sortable)</li>
<li>manage tag sibings now uses the new listctrl (and is hence now safely sortable)</li>
<li>some behind-the-scenes of manage parents/siblings is a bit neater</li>
<li>improved some thumbnail internal media structures to fetch specific media based on hash much much faster, particularly for pages with 10,000+ thumbs. this should speed up large imports and other content update events that can result in thumb redraws</li>
<li>fixed an issue where dismissing a popup message could spawn the entire result of the queue, ignoring the 'show 10 max' rule</li>
<li>completely finished the menu rewrite! all menus now work on the new system</li>
<li>deleted a ton of old and now obselete menu event processing code</li>
<li>some boot/shutdown terminal printing should be more reliable</li>
<li>misc refactoring</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 273</h3></li>
<ul>
<li>converted the gui colour options to the new options system</li>
<li>added a 'darkmode' colour set and extended the colour options page to support it!</li>
<li>added a secret discord-compatible drag and drop mode. start a file transfer drag and drop with ctrl held down to initiate. keep ctrl held down, as this is secretly a 'move' drag and drop, and you want to keep it a 'copy' one. it should work for discord dnd, at least to the web version. I have an idea on how to do this better, but feedback on this would be appreciated.</li>
<li>converted 'import options - files' collapsible panel to a button that launches a dialog. this reduces total gui object count when many importers are open and reduces overall ui lag and limits. the button shows a summary of its current options as its tooltip. furthermore, all of this sometimes confusing nomenclature is now uniformly presented as 'file import options'</li>
<li>added a BUGFIX option to gui options page to force hover windows to display at all times</li>
<li>improved last week's gelbooru 404 fix--page urls generated pre-v272 should now be more reliable</li>
<li>in a further attempt to improve workspace support, popup messages will no longer update in any way if the mouse is not on the same display as the main gui</li>
<li>fixed an issue where dupe import urls could be queued up in a file import queue if they came in the same batch. this was essentially harmless but lead to some mixed x/y progress counts and row indices</li>
<li>fixed an issue where url drops were not filling in the url entry when a new raw url page had to be created on a currently selected page of pages. this may have affected a couple of other page spawning situations</li>
<li>may have fixed an issue with the mouse shortcut-setting button, where for some users scroll events were not registering</li>
<li>manage subs dialog now has the new help button up top</li>
<li>manage subs dialog's sub verbs are now wrapping into a single menu button that I can expand more easily in future</li>
<li>sped up thumbnail access a bit on certain well-defragged hard disk drives</li>
<li>made thumbnail fading a little smoother in some situations</li>
<li>rendered images that aren't otherwise pushing any memory limits will now stay cached for less time (10 mins) while thumbnails will hang around for longer (24 hours)--this was previously 20 mins for both. you should now see less thumbnail page 'refreshing' after returning to the client after inactivity</li>
<li>sketched out basic classes for login and domain engines</li>
<li>sketched out basic class for url matching</li>
<li>sketched out basic classes for matching and transforming strings in certain login/domain situations</li>
<li>updated the manage export folders dialog's listctrl to the new control</li>
<li>updated the last media viewer menu code to the new system</li>
<li>removed some old proxy code that was sometimes intruding on the new networking engine. proper proxy support will come in a later version</li>
<li>fixed some test code</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 272</h3></li>
<ul>
<li>finished moving the last misc network consumers to the new networking engine</li>
<li>greatly simplified and harmonised some of the new network job response processing</li>
<li>the gelbooru 404 issue should be fixed!</li>
<li>added a parsing patch for rule34hentai.net's mp4 links, which was causing 'link not found' failures on the hydrus parsing end. please tell your R34 subs to retry their fails</li>
<li>wrote a patch (actually updated an existing patch that had fallen to bitrot) for the danbooru booru (and extended it to anything else with 'Running Danbooru' in its html) to try to fetch the full-size image if one exists. this may not last long, so I do not recommend regular users rely on it, but feel free to play with it until I have a better fix in the new downloader engine</li>
<li>you can now add 'thread watcher' to the default import tag options. it has 'filename' and explicit tags options. unlike gallery downloaders, thread watchers will not inherit from the 'default' import tag options entry--you need to set the specific entry</li>
<li>added regular number key support to the new shortcut system</li>
<li>fixed the borked splash screen drag coordinate calculation</li>
<li>heavy session loads should be more polite to CPUs and window managers</li>
<li>pages should generally spawn with their proper name (rather than a flicker of 'page') no matter their spawning context</li>
<li>fixed osx page tab drag-and-drop coordinate calculations</li>
<li>figured a way to make os x page tab drag-and-drop start on a single left-mouse-down event</li>
<li>in an effort to improve popup display on systems with virtual desktops, the popup message parent window will now not go from hidden to shown while the mouse is on a display screen other than the main gui</li>
<li>fixed a wacky bug where clicking on a page tab, then on its sort dropdown, then on a different tab, would invoke the Deep Ones to commence a page tab drag and drop event</li>
<li>fixed an index issue when unclosing some pages in certain orders</li>
<li>increased pre-processing disk cache population time</li>
<li>tweaked regular memory maintenance disk cache population timings</li>
<li>fixed shortcut-driven tag petition events when the tag has a sibling (e.g. if you have sibling pair (a->b) and a shortcut (key->flip a), hitting 'key' will now correctly flip a (appearing as b) on and off in the media viewer)</li>
<li>fixed some ugly layout sizing calculations on the path tagging dialog</li>
<li>updated the path tagging listctrl to the new control</li>
<li>updated the quick namespaces listctrl to the new control</li>
<li>updated the regexbutton's menu to the new menu system</li>
<li>fixed some typo errors with the regexbutton's entries!</li>
<li>removed the old gallery downloader unit tests, as these operated on the old network and downloader engine--new, granular tests will be reintroduced for the new parsing components as they are written</li>
<li>cleaned up some shortcut key code</li>
<li>misc refactoring</li>
<li>misc improvements</li>
</ul>
<li><h3>version 271</h3></li>
<ul>
<li>fixed an issue where the notebook 'motion' event was being consumed, disallowing the regular OS 'highlighting' on tab mouseover</li>
<li>fixed page tab drag and drop crash for Linux</li>
<li>fixed page tab drag and drop coordinate calculation for OS X</li>
<li>page tab drag and drop should now work for all platforms</li>
<li>new 'page of pages' pages now start with a blank file search page</li>
<li>fixed several issues with row display in the new listctrl</li>
<li>added a # index column to the file import status window, so you can resort the 'to be imported' order reliably</li>
<li>fixed an issue where the 'delete_file' application command was not firing on an appropriately mapped shortcut</li>
<li>fixed an issue where automatic bandwidth override would only fire if its page was in view. it now occurs at all times</li>
<li>fixed an issue where the file import status frame, as launched from manage subscriptions, would sometimes be non-responsive (typically for Linux)</li>
<li>fixed the 'pattern shortcuts' button on the export files dialog, which was misbehaving for certain choices for some window managers</li>
<li>fixed an unusual error where middle-clicking to create a new page while a menu was open would lock the application from receiving new key/mouse events until program focus was lost, wew lad</li>
<li>updated some old network code to the new engine</li>
<li>added some delay to network connection error reattempts so that instant fails due to local network disconnect (e.g. while computer is waking from sleep) do not consume all the reattempts too quickly</li>
<li>greatly simplified low-time-delta bandwidth testing and reporting, improving essential accuracy and overall feel</li>
<li>gallery download errors will now print additional info to the log--let's see if we can gather more info on the gelbooru 404s</li>
<li>wrote a patch for users of 2.X opencv who were running from source, who were unable to boot</li>
<li>due to hardware failure, had to make a new Linux build computer. some libraries are updated, but build _should_ be the same--let me know if not</li>
<li>updated to opencv 3.3 for all releases</li>
<li>misc old menu code updates</li>
</ul>
<li><h3>version 270</h3></li>
<ul>
<li>added page tab drag and drop (windows only, have to iron out critical bugs for linux/os x).</li>
<li>dragging onto the middle of a normal tab will put the source tab there</li>
<li>dragging onto the edge of a tab will try to insert the tab there</li>
<li>dragging onto the middle of a page of pages tab will insert the tab onto the end of that page's list</li>
<li>dragging a page up a notebook level will work ok</li>
<li>dragging a notebook into itself will do nothing and not crash the client :^)</li>
<li>new pages that come from the main gui level (such as from pages menu or file import) now open in the deepest open notebook (previously, they would always appear in the top row)</li>
<li>fixed some misc page of pages bugs</li>
<li>fixed a bandwidth calculation that meant 1s time delta rules were working at 50% capacity (e.g. 1rq per 1s rule for domains were actually running at 1rq per 2s)</li>
<li>improved a bandwidth estimate calculation that was cutting out early in some situations for large time deltas</li>
<li>tag manager's page up/down shortcuts no longer mistakenly navigate the archive/delete filter</li>
<li>added a network timeout option to the 'connection' options page</li>
<li>reduced some hover window show/hide flicker when the media viewer is fullscreen and the OS has a taskbar that pops in for non-fullscreen windows (this mostly affected Linux)</li>
<li>fixed a long-time issue with yes/no dialog layout</li>
<li>improved some rendering of EXIF-rotated and -flipped jpegs. I expect to add more support for this (and retroactive image metadata-parsing to figure out correct reversed resolution--atm rotated images remain stretched) in the coming weeks</li>
<li>fixed an error when cancelling the booru-picker dialog from the page chooser dialog</li>
<li>if no files or all files are selected, the 'invert' select choice will no longer be shown (in this case, it redundantly does the same job as 'all' and 'none')</li>
<li>fixed an issue where setting namespace sort as default would persist through a client reboot</li>
<li>fixed an issue where force idle debug mode was not waking sleeping daemons</li>
<li>increased frequency of mappings processing reporting</li>
<li>wrote an exception and the needed maintenance code for the 'repairfilesystem' dialog to allow a proceed action if the only remaining incorrect paths are thumbnail paths--in this case, the client will create empty prefix folders and prompt the user to regen thumbnails</li>
<li>export filenames are now clipped to make <255 total characters in path</li>
<li>removed the old 'processing phase' option, which was no longer in use</li>
<li>removed the proxy settings from the 'connection' options page--the new engine does not use this old system, but if there is demand, a more flexible system will return</li>
<li>misc image rendering pipeline updates</li>
<li>misc improvements</li>
</ul>
<li><h3>version 269</h3></li>
<ul>
<li>nested pages now supported!</li>
<li>moved all page management (session load/save, new/close page, page navigation, page name maintenance, etc...) code from the main gui to the new PagesNotebook object</li>
<li>expanded the session object to hold nested page information</li>
<li>added a 'page of pages' page to the 'special' new page entry!</li>
<li>numerous other gui-notebook page-related event fixes and improvements</li>
<li>figured out cross-platform menu and other mouse event support for nested notebooks, but there may still be holes--please let me know if your new pages ever appear in the wrong tier!</li>
<li>ways to move pages up and down rows will come in the coming weeks!</li>
<li>main gui status bar now shows total bandwidth this session as well as current speed</li>
<li>added a cog button to network job controls that allow for manual- and auto-bandwidth-override</li>
<li>added a 'blocked?' column to the review bandwidth panel to quickly see which network contexts are currently available to do work</li>
<li>added a button to reset 'default' and 'global' bandwidth rules to review bandwidth panel</li>
<li>merged the network request start test and consumption code into one transaction, stopping some accidental overconsumption when the engine was under heavy load</li>
<li>did some logic work to make sure unusual network context rule/usage situations are visible on the review bandwidth panel for editing</li>
<li>network jobs now report more information as they get ready to start, including while they are held up waiting for a download slot</li>
<li>added a simple 'network profile mode' to the debug menu that atm just prints a summary of new jobs</li>
<li>fixed an error that could sometimes be a crash when 'review services' was opened while no pages were open in the main gui</li>
<li>fixed the pixiv login test button with a hacky workaround--I will make extensive proper login testing gui when I move to the login engine</li>
<li>fixed an issue in the youtube downloader</li>
<li>if the bandwidth or session managers are missing on boot, empty defaults will be created in their stead</li>
<li>bumped the max page limit up to 150--I expect to increase it more in the coming months as I rejigger how some gui stuff is laid out</li>
<li>renamed 'sort by age' to 'time imported'</li>
<li>fixed and improved some test code</li>
<li>cleaned up some shutdown code</li>
<li>should have fixed a rare unicode conversion issue when printing to log</li>
<li>misc improvements</li>
</ul>
<li><h3>version 268</h3></li>
<ul>
<li>split the sort dropdown into two, splitting the sort type and sort order</li>
<li>file sorting works more intelligently behind the scenes in several ways</li>
<li>added 'sort by number of tags' to sort options</li>
<li>session pages now remember their sort status!</li>
<li>sessions also more reliably remember their actual thumbnail order for all pages (typically, this matters for importers atm)</li>
<li>network job controls now report an estimate of how long they will have to wait for bandwidth</li>
<li>subscriptions will now show some 'no more bandwidth to download files' text if they have to stop because of bandwidth rules</li>
<li>subscription 'should I start/continue' testing now has a little padding to forestall some potential unexpected long delays in operation due to edge cases</li>
<li>the edit subscription dialog now uses the new file import status control</li>
<li>fixed an issue with hentai foundry filters not applying (they added some categories since the downloader last worked, breaking the POST form), hence hiding most non-vanilla results</li>
<li>finished the 'database->migrate database' dialog and its help and removed the 'under construction' labels. the new help page is also now linked from the standard index.html</li>
<li>fixed an issue where pages would sometimes never initialise (due to being queued up after an infinite job like the network engine's mainloop!)</li>
<li>improved how all long-job threads are spawned</li>
<li>improved some more thread scheduling logic that meant some long-term jobs could be stacked undesirably</li>
<li>expanded how the new listctrl updates and deletes its data</li>
<li>reduced flicker on the new listctrl update events</li>
<li>the file import status window now uses the new listctrl</li>
<li>the manage subscriptions dialog now uses the new listctrl</li>
<li>collections now track their tags more accurately</li>
<li>moved the 'delete original files after success' checkbox up to reduce misclicks on ok'ing the file import dialog and added a bit of red warning text whenever it is on</li>
<li>sped up some behind-the-scenes content processing for large pages</li>
<li>improved how the program cleans some things up during exit</li>
<li>the issue with some clients not clearing their exit splash screen until a mouseover event should be fixed</li>
<li>at 120 open pages, the client will inform the user about the approaching max page limit</li>
<li>by default, import folders no longer delete anything. default is to ignore original files in all cases</li>
<li>deleted some old unusued code</li>
<li>misc cleanup</li>
<li>misc improvements</li>
</ul>
<li><h3>version 267</h3></li>
<ul>
<li>drag-and-dropping a 4chan or 8chan url onto the client will now automatically open a thread watcher for that url</li>
<li>fixed an issue where web domain or subscription network contexts that included unicode characters in their context data were unable to serialise and save to the db, causing error spam when the bandwidth manager attempted to save itself</li>
<li>subscriptions will now show a network job control in their popup as they do network work</li>
<li>subscriptions will cancel more reliably during gallery parse</li>
<li>subscriptions now have some 'delay' logic that will stop them sometimes restarting as soon as they are cancelled or otherwise have to stop mid-work</li>
<li>subscriptions will now tolerate up to five 'already in cache' urls per page parse until it considers the page 'already seen'. this is to catch the odd additional late insert and avoid the problem of a page updating and shuffling everything up one as the subscription walks through pages</li>
<li>maintenance modal popup messages should no longer appear if their jobs are very quick</li>
<li>queued up modal popup messages will no longer flicker their dialogs on a de-minimise</li>
<li>should have fixed an issue where modal popup messages could sometimes error out on a close attempt, locking the client's whole gui and requiring a force quit</li>
<li>fixed an issue where the modal popup message dialog was OKing on a close attempt of a non-cancellable job, despite presenting user text indicating otherwise</li>
<li>did a bunch of data work on pages</li>
<li>page tab names will now be clipped to 20 characters by default</li>
<li>pages now show (num_files) after their name by default, although you can set this for only import pages or turn it off completely</li>
<li>options for these new behaviours are in options->gui--and page names will update immediately on dialog ok</li>
<li>subscription and import folder 'show files' events (and a couple of other misc occasions) will now launch their page tab with the sub/folder name rather than a flat 'files'</li>
<li>wrote a new listctrl class with custom sort code that does not suffer from the 'crash when sorted while many pages open' bug. it also handles data in a simpler way for hydrus</li>
<li>review bandwidth listctrl now uses this new class and should now not crash your client. I will replace all the other listctrls with the new class over the coming weeks</li>
<li>temporarily, no old listctrls will auto-sort themselves (as this causes a crash for many users)! if you do not suffer from the crash, please sort them yourselves for now</li>
<li>reduced some large-scale gui import lag:</li>
<li>reduced content processing CPU load on clients with many thumbnails open</li>
<li>massively reduced content processing CPU load on non-current pages</li>
<li>offloaded newly-imported file thumbnail detection and generation to a non-gui thread</li>
<li>migrate database dialog now lets you move the whole database and all portable locations, which requires a client shutdown</li>
<li>the raw url downloader will no longer have a problem with pasted url lists that include empty newlines</li>
<li>all the downloaders/importers now sleep on cleverer event objects so they will burn less idle cpu and wake as soon as they have new work to do</li>
<li>fixed and otherwise improved some gallery downloader timing logic</li>
<li>hdd import pages now use the file import status control</li>
<li>the thread watcher's controls now try to wrap in a single sizer. it uses less space, but might sperg out, let me know if it is a problem. I'll replace the whole watcher timing system in the new engine anyway</li>
<li>fixed a gelbooru (and possibly others) booru parsing bug that meant half of the pages in the gallery walk were being skipped (e.g. 'mogudan' was producing ~350 files when there were actually 690 in the list)</li>
<li>fixed some dialog panel layout scrollbar-cutoff in sevaral Linux places and perhaps elsewhere</li>
<li>cleaned debug menu a little and added a save 'last session' entry</li>
<li>fixed an issue where some kinds of media would error on notification of new url association</li>
<li>clients will now save small transaction progress reliably within ten seconds no matter how idle they are</li>
<li>deleted the old 'gui capitalisation' option--I never got around to expanding it beyond a handful of menu labels, it was always too much to work on for too little reward</li>
<li>improved support for certain broken videos--these will import ok, but full rendering might be borked to different degrees, so let me know how it goes.</li>
<li>cleared out some old content processing code</li>
<li>cleared out some old unused db data</li>
<li>removed all old 'waiting politely' download settings and gui code</li>
<li>misc prep work for wx update</li>
<li>misc gui code refactoring</li>
<li>misc downloader cleanup and timing tweaks</li>
<li>misc improvements</li>
</ul>
<li><h3>version 266</h3></li>
<ul>
<li>converted gallery downloaders to the new network engine</li>
<li>greatly simplified how gallery downloaders report network activity and converted them to show the new network job control as well</li>
<li>subscriptions also work on the new engine but will not show network gui yet</li>
<li>hacked hentai foundry and pixiv login to use the new network engine</li>
<li>successful logins to hf or pixiv now print to the log</li>
<li>the new network engine now clears temporary session cookies after 90 mins of inactivity</li>
<li>gallery downloaders and subscriptions now use the new 'downloader instance' and subscription bandwidth rules. by default, this means downloaders will do small bursts every five minutes and that subscriptions will do at most 256MB per day</li>
<li>subscriptions' bandwidth use is now listed by name in the review bandwidth panel</li>
<li>subscriptions use a new bandwidth test to determine if they should start or continue based on current bandwidth limits. it should mean subs do a good bit of work and then stop when they are supposed to without ever waiting on bandwidth more than 30s or so</li>
<li>thread watcher and page of images now ignore bandwidth limits when doing their 'page' fetching part</li>
<li>gallery page fetching will ignore bandwidth rules (in order to stop gallery walk desyncs from having to wait a long time)--it will fetch one page per five seconds</li>
<li>the thread watcher and page of images importers now work on their files and page-checking simultaneously--also, the page of images will process its page queue at any time, not only when the current file queue is finished</li>
<li>the gallery downloader page now works on its files and gallery page parsing simultaneously!</li>
<li>wrote a 'file import status' control to better wrap up the import summary, progress gauge, and file import status button into one panel</li>
<li>thread watchers now use the new file status control</li>
<li>'page of images' downloaders now use the new file status control</li>
<li>the gallery downloaders now use the new file status control</li>
<li>all network jobs will now retry up to four times on the BadStatusLine ConnectionError, which seems to be a TLS (https) negotiation timeout/remote termination</li>
<li>all requests on the new network engine will now timeout after ten seconds</li>
<li>they will also retry on generic timeout errors</li>
<li>popup messages can now be shown in 'modal' mode as a dialog that prohibits interaction with the rest of the client.</li>
<li>these will not boot while the client is minimised</li>
<li>database maintenance routines will now all publish messages like this</li>
<li>'migrate database' panel now publishes a modal message when it does a file rebalance</li>
<li>rewrote the controller-side pubsub pipeline to respond faster and consume fewer program resources, particularly for the client</li>
<li>import pages now update themselves in a less spammy way behind the scenes, meaning more active pages can be open at once without them stepping on each other and clogging things up</li>
<li>simplified how importers set their status information in several ways</li>
<li>reduced a swath of pubsub spam related to content updates</li>
<li>improved how spammy small jobs are written to the profile log</li>
<li>reduced text flicker on all download pages</li>
<li>more misc pubsub improvements</li>
<li>reduced some gui update/refresh spam on hidden pages</li>
<li>cleaned up a bunch of database->gui message reporting and cleanup code</li>
<li>added close other/left/right pages to tab right-click menu</li>
<li>the top-right media hover window will no longer refit-flicker on a ratings change</li>
<li>wrote a new panel wrapper for listctrls that handles the underlying row of buttons in a neater way and automatically disables them if they are nullipotent (mostly, this means greying out 'delete' buttons when nothing is selected)</li>
<li>several listctrls use this new panel</li>
<li>when it is not strictly necessary, videos that are >30MB will no longer use the CPU-expensive manual frame count parsing</li>
<li>a problem where newly reloaded thread watchers could sometimes stick in a 1/1 initialisation state _should_ be fixed</li>
<li>fixed gelbooru url parsing (they stopped using the janky redirect.php urls)</li>
<li>fixed an issue that meant ipfs pin was erroring when trying to show gui-side</li>
<li>'page of images' downloaders now protest if they are told to close while working</li>
<li>some small layout and status text fixes</li>
<li>adminside petition processing now has a 'flip selected' box to flip checked status of all selected contents</li>
<li>adminside petition processing contents chechklistbox now supports multiple selection</li>
<li>improved the reliability of some shutdown code</li>
<li>cleared out some old unused code</li>
<li>misc new control cleanup</li>
<li>misc fixes</li>
<li>more misc fixes</li>
</ul>
<li><h3>version 265</h3></li>
<ul>
<li>the bandwidth engine now recognises individual thread watcher threads as a network context that can inherit default bandwidth rules</li>
<li>tweaked default bandwidth rules and reset existing rules to this new default</li>
<li>review all bandwidth frame now has a time delta button to choose how the network contexts are filtered</li>
<li>review all bandwidth frame now updates itself every 20 seconds or so</li>
<li>review all bandwidth frame now has a 'delete history' button</li>
<li>review all bandwidth frame now shows if services have specific rules</li>
<li>review all bandwidth frame now has an 'edit default rules' button that lets you select and set rules for default network contexts</li>
<li>review network context bandwidth frame now has a bar chart to show historical usage!</li>
<li>bar chart is optional based on matplotlib availability</li>
<li>review network context bandwidth frame now lists current bandwidth rules and current usage. it says whether these are default or specific rules</li>
<li>review network context bandwidth frame now has a button to edit/clear specific rules</li>
<li>rows of bandwidth rules and current usage, where presented in ui, are now ordered in ascending time delta</li>
<li>misc bandwidth code improvements</li>
<li>client file imports are now bundled into their own job object that generates cpu-expensive file metadata outside of the main file and database locks. file imports are now much less laggy and should generally block the feel of the ui much less</li>
<li>removed the database 'rebalance files' menu entry</li>
<li>removed the 'client files location' page from options</li>
<li>db client_files rebalance will no longer occur in idle or shutdown time</li>
<li>(this stuff is now handled in the migrate database dialog)</li>
<li>'migrate database' now uses a dialog, meaning you cannot interact with the rest of the program while it is open</li>
<li>migrate database now has file location editing verbs--add, remove, +/- weight, rebalance_now. thumbnail location and portable db migration will be added next week</li>
<li>flushed out the backup guide in the getting started help, including to reflect the new internal process</li>
<li>the client now saves the 'last session' gui session before running a database backup</li>
<li>the shutdown maintenance yes/no dialog will now auto-no after 15 seconds</li>
<li>gave status bar tabs a bit more space for their text (some window managers were cutting them off)</li>
<li>tumblr api lookups are now https</li>
<li>tumblr files uploaded pre-2013 will no longer receive the 68. subdomain stripping, as they are not supported at the media.tumblr.com domain (much like 'raw' urls)</li>
<li>pages will now not 'start' their download queues or thread checkers or whatever data checking loops they have until their initial media results are loaded</li>
<li>key events started from an autocomplete entry but consumed by a higher window (typically F5 or F9/ctrl+t for refresh or new page at the main gui level) will no longer be duplicated</li>
<li>fixed a shutdown issue with network job controls that could break a clean shutdown in some circumstances</li>
<li>if the user attempts to create more than 128 pages, the client will now instead complain with a popup message. Due to OS-based gui handle limits, more than this many pages increasingly risks a crash</li>
<li>if the client has more than 128 pages both open and waiting in the undo menu, it will destroy the 'closed' ones</li>
</ul>
<li><h3>version 264</h3></li>
<ul>
<li>converted the page of images downloader to the new network engine</li>
<li>converted the thread watcher downloader to the new network engine</li>
<li>rejiggered page of images and thread watcher management panels to better separate the two loops they work on</li>
<li>rejiggered some more downloader layout stuff in prep for a new control to better display url cache and overall import status--downloader-global pause button is now always at the top, for instance</li>
<li>removed 'waiting politely' indicator from download pages that use the new network engine</li>
<li>network job controls now have a simple border</li>
<li>network job controls will show current bytes progress and speed in a more intelligent and useful way--no longer spamming the initial 0KB/s, for instance, and flashing more useful summary information when downloading many small files</li>
<li>network job controls now display their current bytes progress and speed on a separate right-aligned text beside the main status text (to stop the speed text jumping around so much)</li>
<li>network job controls will not show the current download speed until some bytes are actually read</li>
<li>wrote a first version of 'services->review bandwidth' review frame, which lists all network contexts with data in the past month</li>
<li>wrote an independant and live-updating review frame for indivdual network contexts, launched from the review bandwidth frame, which shows current and historical bandwidth use for that context</li>
<li>the main gui status bar now reports current bandwidth usage! updated once a second</li>
<li>database->backup process now has some nicer gui, better and more reliable workflow, improved file copy notification, and now correctly obeys a popup-cancel command</li>
<li>started the new 'migrate database' gui under the database menu. it currently shows live usage and will gain some verb buttons to atomically alter things hopefully next week</li>
<li>moved from a strict begin/commit db model to a save/release system that only commits changes to disk at most every ten seconds or so. small 'write' transactions will now often have no disk-sync overhead and so are super fast, particularly when they come in a large batch.</li>
<li>simplified database connection, disconnection, begin, commit, and rollback code significantly</li>
<li>the url table in the client database is now non-unique (i.e. multiple files can have the same url). this may lead to undesired 'already in db' or 'deleted' statuses in some downloaders as they check for url status before starting their downloads. if this change turns out to a be a big pain in the future for pixiv manga or whatever, it may be revisited.</li>
<li>fixed a bug in deviant art parser that sometimes meant nsfw urls could not be found</li>
<li>fixed an issue where progress gauges could sometimes get stuck in a pulsing state</li>
<li>fixed a bug with the new optimised result building which sometimes occured when all the files in a batch had common ipfs service membership</li>
<li>improved support for unusual videos</li>
<li>improved accuracy of duration calculation for unusual videos</li>
<li>improved database optimisation after initial and ongoing repository processing</li>
<li>a 'wake subscriptions' event now occurs even on 'manage subscriptions' cancel (meaning temporarily-dialog-paused subs will always continue after the dialog is closed)</li>
<li>added a careful manual commit to stop the possibility of the definition-desync some users noticed after a power-loss during a big repository sync commit</li>
<li>removed some redundant old db compatibility code</li>
<li>permitted sqlite installations that allow in-memory temporary tables to use them (but not for vacuums, which tend to be a bit big for this stuff)</li>
<li>cleaned up some redundant timer id code</li>
<li>misc improvements</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 263</h3></li>
<ul>
<li>greatly improved how gui sessions are loaded--now the page tabs are loaded instantly, but the thumbnails are loaded in the background. session loaded should be significantly less laggy and buggy</li>
<li>the issue of pages sometimes initially sizing at zero size (which could be caused by minimising the client while a session load was ongoing) should hence be better/fixed completely!</li>
<li>gui sessions will now load their files in the exact order in which they were saved--behaviour that I think was not previously always reliable</li>
<li>more general network code work and polishing</li>
<li>added and improved unit tests for network code</li>
<li>improved how short-time-delta data bandwidth is reported</li>
<li>improved how short-time-delta data bandwidth is tested</li>
<li>wrote a networkjobcontrol to display and control the new network job object</li>
<li>tumblr parser now produces 68.-less urls</li>
<li>tumblr parser now produces https urls</li>
<li>cleaned up tumblr parser a little</li>
<li>url caches will clip existing tumblr urls of the 68.-subdomain and convert to the new raw format, clearing out dupes along the way</li>
<li>url caches will convert existing tumblr and pixiv urls to https, clearing out dupes along the way</li>
<li>the pixiv parser now deals with missing creator/title tags without errors</li>
<li>extended the specific file domain tag cache to also store deleted mappings, resulting in much faster request building for clients with large numbers of deleted mappings</li>
<li>improved some downloader page queue text display timing</li>
<li>added support for more types of mp4 file</li>
<li>improved how some memory maintenance calls work</li>
<li>improved how hydrus datacaches track their recently-used-data fifo list</li>
<li>pages now regularly clear out spare thumbnail canvas bmps</li>
<li>pages now regularly clear out cached thumbnail canvas bmps when they are not the currently viewed page</li>
<li>import caches, when asked for url membership, will now test both the http and https versions the url</li>
<li>maybe improved how 'open in file browser' works in windows</li>
<li>fixed the 'recount video frames' advanced thumbnail menu entry, which wasn't working with the new ffmpeg wrapper</li>
<li>moved some bloaty master hash data out of client.db and into client.master.db</li>
<li>pubsub profile will no longer profile 'message', as it just makes for spam</li>
<li>reduced some serverside pubsub spam</li>
<li>reduced some significant clientside pubsub spam that I think was smashing the gui event loop at inconvenient moments</li>
<li>improved some client shutdown object sync code</li>
<li>fixed an issue where some duplicate maintenance popups would not clear themselves up properly if interrupted mid-job</li>
<li>cleaned up some http-https conversion and comparison code</li>
<li>fixed some status-setting code that meant thumbnail pages were sometimes setting status after they were replaced and scheduled for deletion</li>
<li>misc improvements</li>
</ul>
<li><h3>version 262</h3></li>
<ul>
<li>added apng support!</li>
<li>sessions will now append from the default insertion index (e.g. right of current page)</li>
<li>sessions will now load in the correct order if the default insertion index is to the left of the current page!</li>
<li>fixed an issue with custom 'favorites' gelbooru parsers</li>
<li>manage parents/siblings dialogs now load their larger datasets on a thread, after initialising</li>
<li>sped up how some default thumbnails are generated on client boot</li>
<li>sped up how resized thumbnails are generated</li>
<li>refactored ffmpeg video parsing to be simpler and easier to maintain</li>
<li>improved some ffmpeg parsing to be much faster</li>
<li>ffmpeg can now parse video that reports no duration</li>
<li>fixed some more bad video framerate parsing</li>
<li>the 4chan/8chan thread watcher will now always generate https urls (even if you enter an http thread url)</li>
<li>pixiv will now produce https urls</li>
<li>the known url file status system will now check both http and https versions of an url it is given</li>
<li>refactored some core elements to simplify common controller requests</li>
<li>started on some database migration help and ui--should be finished next week</li>
<li>flushed out network engine a little</li>
<li>more refactoring and simplification of new network engine object coupling</li>
<li>flushed out bandwidth manager</li>
<li>misc logic tweaks in bandwidth management</li>
<li>wrote a network session manager</li>
<li>wrote a new class for identifying all future 'network contexts'</li>
<li>employed NetworkContext everywhere in the new engine, massively simplifying several things</li>
<li>wrote the first batch of tests for my new network engine and its network jobs</li>
<li>wrote tests for the bandwidth rules object, including covering the new short time delta support</li>
<li>improved reliability and speed of bandwidth unit tests</li>
<li>wrote tests for the new domain-based bandwidth manager</li>
<li>misc improvements</li>
<li>more misc improvements</li>
</ul>
<li><h3>version 261</h3></li>
<ul>
<li>wrote a new manage dialog for urls</li>
<li>added 'manage known urls' to media right-click menus!</li>
<li>double-left-clicking on any video animation will 'open externally'!</li>
<li>added an option to options->gui to set where new pages will appear by default--either far left/right or left/right of current page</li>
<li>the tumblr parser now produces '_raw' urls when the post was posted in 2013 or later</li>
<li>created a new 'number' subtag cache that will be populated on update</li>
<li>created a new 'tag as number' system predicate that can search for, say, all 'page:' tags > 200</li>
<li>bandwidth management now tracks requests and num_bytes more sensibly</li>
<li>bandwidth tracking objects can now better handle bandwidth usage and rule application in short intervals (i.e. sub-5-second) (however, the current networking engine cannot yet use this information accurately)</li>
<li>wrote unit test for bandwidth tracker, including for the new short interval timing</li>
<li>fleshed out the new network engine</li>
<li>fleshed out the new network job</li>
<li>thread watchers can now have a time delta that includes days (giving a max check period of 360 days, wew)</li>
<li>adminside mapping petition processing now has adaptive max total petition weight--lower file count range petitions will have much higher max total permitted weight</li>
<li>added a new 'callto' debug reporting mode that reports on current thread pool jobs</li>
<li>improved calltothread pre-spawning checks to reduce outside chance of deadlock in busy periods</li>
<li>the advanced review services repository panel buttons are now hidden unless in advanced mode</li>
<li>eliminated some animation buffer looping redundancy</li>
<li>fixed a little animation next-frame prediction code</li>
<li>fixed up some '1 minutes'-type time_delta->string conversion</li>
<li>fixed up label on time delta control button</li>
<li>fixed some shutdown thread interactions</li>
<li>fixed an issue where sometimes empty tags could be entered into the manage tags panel</li>
<li>added some pydeadobject error handling during client shutdown</li>
<li>refactored some db multi-tag->file search code, cleaned up wildcard searching</li>
<li>misc string cleanup</li>
<li>misc dialog cleanup</li>
</ul>
<li><h3>version 260</h3></li>
<ul>
<li>fixed video parsing when the video metadata includes random non-utf-friendly garbage</li>
<li>fixed video parsing when ffmpeg reports no fps at all</li>
<li>improved video frame counting accuracy</li>
<li>thumbnail waterfall process now adapts to the current speed of the cache and can hence use significantly less overhead</li>
<li>the thumbnail fading process now adapts to the current rendering speed, delivering smooth fade when CPU is available but otherwise skipping frames and more reliably filling in thumbnails within a quarter of a second</li>
<li>canvases now draw their thumbnails with slightly less overhead</li>
<li>increased database synchronous pragma to FULL to better safeguard against power loss during multiple-db commit--we'll see if it slows things down too much, and maybe add an option about it</li>
<li>cleaned up and improved some client gui pubsubs</li>
<li>made pubsub profile mode far less popup-spammy</li>
<li>if a profile takes less than 20ms, it now won't be fully printed to the log</li>
<li>tweaked some more server object maintenance code</li>
<li>added 'changelog' link to help menu</li>
<li>updated lz4 library and fixed some old deprecated calls</li>
<li>misc serverside pubsub cleanup</li>
<li>misc fixes</li>
<li>misc refactoring</li>
<li>misc code cleaning</li>
</ul>
<li><h3>version 259</h3></li>
<ul>
<li>planned out new networking engine and started the principal objects</li>
<li>renamed the 'exact match' duplicate status to 'same quality', to reduce confusion on what is appropriate for this status</li>
<li>the duplicate filter, on hitting the delete key, now offers the option of deleting both files</li>
<li>the duplicate system now combines duplicate status setting and the consequent batch of content updates into the same database transaction, speeding things up</li>
<li>the duplicate system now batches multiple duplicate status setting into a single transaction, massively speeding up large filters or thumbnail status set actions</li>
<li>misc duplicate help tweaks</li>
<li>you can now edit the default duplicate merge options from the new thumbnail duplicate menu</li>
<li>the duplicates page's jobs are less demanding on gui time and take better breaks if something else happens</li>
<li>renamed the new dupe system predicate to 'system:num duplicate relationships' to clarify what it searches</li>
<li>for normal queries, current and pending mappings are now fetched from a faster mappings cache. you should see faster result building across the board, particularly on fresh boots or otherwise slow-disk-access systems</li>
<li>added a prototype 'advanced mode' (defaulting to off, so experienced users will want to turn it on) under the help menu that will enable menu items that are often not helpful to new users. I will add more things to this in future, suggestions welcome</li>
<li>the new thumbnail menu dupe relationship set stuff is now considered advanced</li>
<li>thumbnail menu find similar files is now considered advanced</li>
<li>the thumbnail menu copy hash entries are now considered advanced</li>
<li>advanced content update buttons (on manage tags and review services) are now considered advanced</li>
<li>added an advanced mode 'open file location' entry to the thumbnail share menu, which will open the file in your OS's file explorer (not available on Linux)</li>
<li>added an advanced mode 'correct video frame count' thumbnail menu entry that will force-apply last week's more accurate video frame counter to correct and videos that render too fast and then cut off</li>
<li>fixed many entries on the media viewer menus, which were being blocked by an over-eager 'can continue' test and hence silently failing</li>
<li>fixed the youtube downloader on Linux and OS X--both now use youtube-dl</li>
<li>fixed an issue where the GetLighterDarkerColour function was producing very bright alternates to very dark colours (meaning dark dupe filters were having their bright background text rendered unreadable)</li>
<li>improved video frame number parsing accuracy</li>
<li>improved the accurate version of video frame number parsing accuracy, particularly for longer videos</li>
<li>the network engine now reports 5xx http status codes as ServerException to better contextualise to the user what went wrong</li>
<li>adminside mapping petitions are now sub-ordered by tag</li>
<li>adminside sibling/parent petitions are now ordered by the 'older' tag and sub-ordered by the 'newer' tag</li>
<li>censorship taglists are now roughly sorted</li>
<li>reduced default shutdown work max time to five minutes</li>
<li>improved how subprocesses are started</li>
<li>misc cleanup</li>
<li>misc refactoring</li>
</ul>
<li><h3>version 258</h3></li>
<ul>
<li>added a duplicate entry to the thumbnail right-click menu</li>
<li>the new duplicate menu will now attempt to fetch known duplicate counts for the focused file for the current file domain (if the db is locked, it will say so rather than block)</li>
<li>the new duplicate menu's counts in the thumbnail menu can be clicked to show those files in a new page</li>
<li>the new duplicate menu allows you to set the four main dupe statuses (with default merge options), or a customised verson of the same, or set unknown/potential, or delete dupe status completely, for all the possible pairs in the current selection</li>
<li>added tentative support for variable framerate files, manually counting up their frames and displaying them with an averaged constant framerate in the client renderer. this now permits a number of webms that were previously 'mime unsupported'. let me know how it works for you!</li>
<li>cleaned some server locking code, hopefully fixing the ssl handshake issue (which is actually a deadlocking issue)</li>
<li>export file dialogs will remember the last value of 'export tags to .txt files?', and clicking that checkbox will always launch the dialog for editing (rather than clearing if there are some set)</li>
<li>fixed the advanced content update (as used by service-wide update), which was not able to differentiate namespaces since the recent service changes. I apologise to anyone affected by this--I will add some unit tests to make sure it doesn't happen again</li>
<li>reworked and cleaned some canvas event handling code</li>
<li>the canvas will now accept mouse wheel events even when it does not have focus</li>
<li>the canvas frame will no longer accept keyboard events (and hence activate fullscreen_switch) if the mouse is over a flash window</li>
<li>hydrus servers now respond to /robots.txt with a 'disallow all'</li>
<li>servers will now provide mappings petitions to admins in groups of similar size, rather than mixing petitions of weight 5000 with a hundred of weight 1</li>
<li>fixed the back/skip buttons in the archive/delete filter's top hover window</li>
<li>the file path tagging dialog's namespace and regular regexes now support parenthesis groups, and in that case will take each of those submatches instead of the wider match</li>
<li>hence regexes with groups will now compile in that dialog</li>
<li>you can now 'new page here' on the final (rightmost) page tab</li>
<li>fixed an issue where media-viewer-launched manage tags frames would yield focus to the main gui if they had opened a sub-dialog while they were open</li>
<li>the tag censorship edit panel now has a 'help here -->' label in blue text</li>
<li>file imports will fail properly when the final temp_path->client_files file copy operation fails (due, for instance, to the destination being on a removable medium that was recently disconnected)</li>
<li>fixed serverside upnp maintenance, which was silently failing early, and also updated it to the new server object code</li>
<li>wrote a new checklistbox dialog that handles the underlying data explicitly rather than messing around with external text->data maps</li>
<li>replaced all the old string checklistbox dialog instances with the new one</li>
<li>subscriptions will now correctly clear their 'recent error' status on a successful sync</li>
<li>refactored and cleaned how basic mediaresult objects store and consult simple file information</li>
<li>locationsmanager objects now handle inbox status and the related content update events that affect it</li>
<li>fixed a bug in HydrusTagArchive when attempting to figure out hash type from an existing hash</li>
<li>removed the obsolete servertoclientcontentupdatepackage object</li>
<li>misc duplicate code cleanup</li>
<li>misc serverside service code improvements</li>
<li>misc small fixes</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 257</h3></li>
<ul>
<li>the duplicate filter will now maintain zoom on files with the same ratio</li>
<li>split the duplicate merge options into separate tag/rating controls--you may see some duplicate service entries, but these will be cleaned on your next shutdown</li>
<li>duplicate merge options now allow syncing 'archive' status</li>
<li>duplicate merge options now allow 'delete both files', which you may find use for in custom actions</li>
<li>created a tag censorship object to handle and action a rich tag censorship ruleset</li>
<li>tag duplicate merge options now have and use this tag censorship object to filter which tags are merged, with an initial value of 'let everything through'</li>
<li>wrote a tag censorship edit panel and tied it into the duplicate action edit panel so these new tag censorship objects can be edited</li>
<li>added an optimisation to the duplicate status setting code--if two files are better/worse, they are inherantly duplicates and so 'not dupe' and 'alternate' relationships apply to both equally and can be duplicated</li>
<li>fixed and culled and normalised the 'this has more tags' dupe filter statements to be more accurate and useful</li>
<li>added 'this has a larger filesize' type-statements to the dupe filter</li>
<li>created a 'system:duplicate relationships' predicate that can find files based on how many duplicate relationships of a particular type they have</li>
<li>cleaned up some misc duplicate filter code and added some tooltips to the top hover window dupe action buttons</li>
<li>added 'move to left/right end' to main gui page tab right-click menu</li>
<li>added 'new page' and 'new page here' to main gui page tab right-click menu</li>
<li>you can now right-click for a menu from empty tab space on the main gui</li>
<li>the main gui statusbar now updates more efficiently when under heavy refresh load</li>
<li>the main gui statusbar now shows db read/write/commit status and sets the current db job summary as its tooltip--if you experience persistent hangs, please hover over the statusbar and report what you see!</li>
<li>export tags to .txts checkbox will now default to 'all services on' when checked</li>
<li>fixed the thread watcher, which was accidentally disabling its text input early</li>
<li>'similar files' searches launched from the thumbnail menu will now default to 'my files' file domain rather than 'all local files'</li>
<li>downloader pages will now correctly sort their files on initialisation</li>
<li>refactored and generally cleaned up some collect and sort code</li>
<li>fixed some unlikely-but-possible collect/sort bugs</li>
<li>fixed some bad layout in the top-right hover window that was making it grow unreasonably tall when many urls were shown</li>
<li>on the different download import pages, the progress gauge that shows file download progress will now reset back to 0 as soon as the file download is complete</li>
<li>fixed a problem where video imports with unicode characters in their path were failing to mime-parse</li>
<li>improved the file import status update pipeline to better deal with large transactions (like skipping/deleting/retrying a thousand rows at once). all these big transactions should lag the gui far less</li>
<li>improved some misc import status cache code</li>
<li>made first step in a big size rewrite job that will size many elements according to local system font size rather than specific pixel values</li>
<li>hydrus servers now explicitly default to TLSv1.2--we'll see if that clears up some of the handshake timeout problems we have recently seen</li>
<li>cleaned up a bunch of possible pydeadobjecterrors when the new review services panel is closed</li>
<li>improved and rescheduled gelbooru redirect url purge</li>
<li>added a catch-and-recovery to hydrus network session initialisation, which may sometimes receive invalid data after a service deletion</li>
<li>added similar catches to tag parent/sibling initialisation, which apparently can be vulnerable to a similar invalid data problem</li>
<li>I think I cleaned up some more Linux ClientToScreen console errors</li>
<li>refactored and cleaned some frame size event responsibility</li>
<li>refactored and cleaned the panel and controls that display file import status</li>
<li>did a little more menu code cleanup</li>
<li>misc cleanup</li>
<li>misc fixes</li>
</ul>
<li><h3>version 256</h3></li>
<ul>
<li>the duplicate filter now loads new pairs off the gui thread. it will display 'loading pairs...' during this time</li>
<li>media viewers of all kinds are now more comfortable displaying no media (when this occurs, it is usually a frame or two during startup/shutdown)</li>
<li>the duplicate filter now responds to any media_viewer_browser navigation commands (like view_next) with a media switch action</li>
<li>you can now alter the duplicate filter's background lighten/darken switch intensity from its top hover window's cog icon</li>
<li>fixed a bug in the new dupe pair selection algorithm that was preventing pairs from being presented as groups</li>
<li>the duplicate filter will now speed up workflow by automatically skipping pairs when you have previously chosen to delete one of the files in the current batch</li>
<li>auto-skipped pairs _should_ be auto-reverse-skipped on a 'go back' action</li>
<li>added a |< 'go back' index navigation button to the duplicate filter top hover window</li>
<li>the duplicate filter now displays several 'this file has larger resolution'-type statements about the currently viewed file. it lists them on the top hover window and in the background details text underneath</li>
<li>the duplicate filter _roughly_ attempts to put the better file of the two first. this will always be indexed 'A'</li>
<li>the duplicate filter now shows done/total batch progress in its index string--not sure how clear/helpful this ultimately is, so may need to revisit</li>
<li>an unusual bug where Linux would spam the 'All pairs have been filtered!' duplicate filter message over and over and then crash _should_ be fixed--the filter no longer waits for that message to be OKed before closing itself</li>
<li>drag-and-dropping text onto the client will now a) open a url import page if none already exist and b) put the dropped text into the input box of the first open url import page (and focus it, so you can quickly hit enter)! This works when dragging text links from browsers, as well</li>
<li>you can now 'append' gui sessions, which will just append that session's tabs to whatever is already open--say, if you have several 'favourites' pages you want to be able to quickly load up without having to break your existing workflow</li>
<li>ipfs services now have a 'check daemon' button on their review services panel which will test the daemon is running and accessible and report its version</li>
<li>fixed the 'test address' button for ipfs services on their manage services panel</li>
<li>the client can now automatically download files it wants and knows are on an ipfs service</li>
<li>middle-click on an 'all known files' domain thumbnail will now correctly start a download (as long as a specific remote file service is known)</li>
<li>the multihash prefix option is reinstated on ipfs manage services panels</li>
<li>the gelbooru parser now discovers the correct page url to associate with its files</li>
<li>wrote some redirect fetching code to fix the gelbooru bad urls issue</li>
<li>discovered a quicker fix for the gelbooru issue--the redirect location is the garbage in the original url in base64</li>
<li>all downloader/subscription url caches will purge any old gelbooru 'redirect.php' urls on update</li>
<li>fixed an issue where 'previously deleted' gallery/thread imports were returning 'fail'</li>
<li>fixed a problem that was causing some redundant laggy work in adminside petition processing</li>
<li>thread watchers will now remember their file and tag import options through a session save even when no thread url has yet been entered</li>
<li>fixed an issue where media 'removed' from a media viewer view of a collection resulted in the entire collection being removed at the thumbnail level</li>
<li>fixed an issue where media deleted from a media viewer view of a collection resulted in the media not being correctly removed from selection tags</li>
<li>tag, namespace, and wildcard searches on a specific file domain (i.e. other than 'all known files') now take advantage of an optimisation in the autocomplete cache and so run significantly faster</li>
<li>fixed a hover window coordinate calculation issue after minimising the media viewer on some platforms</li>
<li>removed some 'all files failed to download' spam that could sometimes occur</li>
<li>misc fixes</li>
</ul>
<li><h3>version 255</h3></li>
<ul>
<li>the duplicate filter now supports shift+left-click to drag, like the archive/delete filter (this remains hardcoded for now)</li>
<li>if a pair in the dupe filter has the same resolution, they will now maintain zoom and pan when switching back and forth (I might increase this to work for same ratio as well, let me know how it works in the real world)</li>
<li>the duplicate filter will show a lighter/darker background colour as you scroll the current pair</li>
<li>the way lighter/darker and alternate lighter/darker colours are calculated is now centralised and should be more reliable in edge cases</li>
<li>improved the dupe filter pair selection algorithm--it now chooses pairs more reliably under edge case conditions and prioritises decision-groups that have high potential decision value. it should also run a little faster</li>
<li>increased the dupe filter batch size to 250, let's see if it causes any problems</li>
<li>the close button on the dupe filter's top hover window now works</li>
<li>fixed the duplicate filter disappearing pairs that were skipped (meaning you could not go back to revisit them)</li>
<li>fixed a frequent deadobject error when the dupe filter closes</li>
<li>the shutdown 'maintenance due' test is less sensitive to dupe search tree rebalancing, which typically only takes half a second</li>
<li>the archive/delete filter now uses the new shortcuts system for both keyboard and mouse input</li>
<li>the archive/delete filter now intercepts archive or delete commands from different sources ('media' shortcuts, top hover frame button presses) more reliably and converts them into filter actions (hence moving on to the next file)</li>
<li>you can now move pages one to the left or right from their menu!</li>
<li>on the top-right hover window (and the background underneath), ratings are now on the top, and hence will always be in the same location as you scroll through your media regardless of known urls, remote location, or inbox status</li>
<li>autocomplete searches for tags with apostrophes, quote marks, braces, brackets and paretheses should be more reliable</li>
<li>urls are now associated with files through the same 'content' pipeline as tags and ratings and so on</li>
<li>gui-level media is now aware of the 'new url content update' event and will update and redraw itself appropriately</li>
<li>fixed deviant art nsfw parsing, but it might not hold for long. proper fix here is to wait for the downloader overhaul</li>
<li>networking engine now uses the 'requests' module's CA .pem (which the overhaul will be moving to anyway), which should reduce the frequency of ssl verify failures (gelbooru on the relatively new 'Let's Encrypt' CA had this problem for many users)</li>
<li>fixed the networking engine redirect parsing for gelbooru's unusual location header. unfortunately, gelbooru is still giving mickey-mouse garbage redirect urls from its main thumbnail pages, for which in this engine there is no immediate fix</li>
<li>neighbouring .txt tags will now be properly cleaned and sibling-collapsed in the path tagging dialog</li>
<li>neighbouring .txt tags will now be properly sibling-collapsed in the import folder workflow</li>
<li>making a media viewer borderless fullscreen and back will now recenter the media (previously, the current drag delta was not reset, so this frequently put media off-screen)</li>
<li>fixed a serious issue where the media viewer could lock the client up on opening with a video if its gui options set 'remember size' to false</li>
<li>tag import options objects will cleanse themselves of missing services on options save/client shutdown</li>
<li>manage tags now defaults to cross-referencing 'my files' on the 'local tags' domain, where 'remote' (i.e. deleted) files' tags are not useful</li>
<li>reduced memory use when importing large pngs with transparency</li>
<li>improved adminside petition processing gui reporting</li>
<li>servers will now cap the size of their mapping petitions so as not to ovewhelm the admin processing them (they now won't be both >20 tags and >1000 total row weight)</li>
<li>the media viewer's manage tags frame now listens for content updates from outside, so if you alter an in-view file's tags (such as with a shortcut key), the manage tags dialog will update as it happens</li>
<li>moved a number of the buttons on the top hover windows to the new unified internal command engine (which the new shortcut system also uses)</li>
<li>disk cache maintenance uses fewer resources but now occurs in the foreground (and should hence more reliably maintain the cache)</li>
<li>critical repository service id lookup errors will now automatically reset the repository's processing cache and better inform the user of what has happened. if you see this, please let me know the details and how this error fired in the real world</li>
<li>updated and reinstated the ipfs service panel in review services</li>
<li>updated some ipfs service code for the new service system</li>
<li>misc refactoring and cleanup</li>
<li>more cleanup and deletion of redundant old pubsub command code</li>
<li>updated ubuntu build machine to 17.04 and opencv 3.2</li>
</ul>
<li><h3>version 254</h3></li>
<ul>
<li>the duplicate processing page is now on the new page picker, under the new menu 'special'</li>
<li>improved the dupe pair selection algorithm--it should be faster for everyone</li>
<li>added help icon to dupe processing page--it can launch of a couple of message boxes with simple help, or you can open some html help</li>
<li>wrote some dupe processing html help!</li>
<li>the dupe processing page now refreshes its numbers when the dupe filter closes</li>
<li>the archive, inbox, delete, and undelete buttons on the duplicate filter's top hover frame now work</li>
<li>delete and shift+delete keys now work to delete/undelete a file in the duplicate filter</li>
<li>the mouse cursor now hides/shows on halt and new movement on the duplicate filter</li>
<li>you can now set 'content' shortcut actions (adding tags or ratings) to shortcuts in the 'media' reserved shortcut set (which are always on in media contexts), although they don't yet work in the thumbnail view yet</li>
<li>added a help button to the manage shortcuts panel</li>
<li>the edit shortcuts dialog will now now allow you to name a custom shortcut set to one of the reserved names and will explain the problem in a message box</li>
<li>import pages update more efficiently during periods of busy cpu</li>
<li>import pages will use less idle cpu time generally</li>
<li>import pages will adaptively use less cpu time when they are in the undo deletion queue or have no files to import</li>
<li>the page of images downloader will spam a little less idle time</li>
<li>the canvas background details and the top-right hover window will now only show 10 urls max</li>
<li>added a help button to the tag import options panel to better explain the namespace selection and explicit tags</li>
<li>added 'gui report mode' to the help menu, which will report key and mouse shortcut events and and matched commands</li>
<li>the adminside petition panel now sorts multiple petitions by number of files descending</li>
<li>misc improvements</li>
<li>misc help cleanup</li>
<li>misc fixes</li>
</ul>
<li><h3>version 253</h3></li>
<ul>
<li>created a new object to hold tag and rating merging and 'worse file' deletion options</li>
<li>wrote a dialog to edit this new object</li>
<li>established some simple defaults for this object for different duplicate status actions</li>
<li>the cog icon on the duplicates filter now lets you edit these defaults</li>
<li>the 'custom' duplicate filter action now works--first by asking you what status you want to set, and then by throwing up the new merge options dialog to tune it to whatever you like</li>
<li>wrote comprehensive unit tests for the new object</li>
<li>fixed the super slow dupe filter launch time problem</li>
<li>added a 'known urls' submenu to thumbnail and browser canvas right-click menu that lists all known urls for a file with an option to launch or copy the url</li>
<li>added known urls' hosts to the top-right canvas details background, just below where known file repos are listed</li>
<li>added the same known urls' hosts as clickable hyperlinks to the ratings hover window that pops over that top-right area</li>
<li>added 'delete from deleted files' action to the local tags's service-wide update panel. it will limit the deletion to mappings that are currently on files that have been previously completely physically deleted from the program</li>
<li>fixed namespace filtering on service-wide update panel</li>
<li>the hentai foundry downloader broke, so the update code will pause all hf subs. the solution is not trivial (it is part of the downloader overhaul), but I will try to fix it soon</li>
<li>debuted a new question-mark help button to better explain .txt tag importing on the manual import tagging dialog and the manage import folders dialog</li>
<li>fixed a small potential error due to bad parsing in the 'page of images' downloader</li>
<li>fixed a typo bug that stopped the 'delete shortcuts set' action working in the manage shortcuts dialog</li>
<li>I may have fixed an issue where the server was sometimes not shutting cleanly with a keyboardinterrupt</li>
<li>fixed the media embed button not reliably updating its thumbnail</li>
<li>fixed an issue where a dummy animation bar was displaying on embed buttons that showed static images that included transparency</li>
<li>the serious db missing tag and hash states will now not throw an error but will inform/spam the user (and hence not prohibit a boot)</li>
<li>attempting to open a second manage tags frame from the media viewer will now instead put the focus on the first (previously, multiple manage tags frames could be made)</li>
<li>misc db code cleanup that should result in faster result building in certain situations</li>
<li>misc improvements</li>
<li>misc layout fixes</li>
</ul>
<li><h3>version 252</h3></li>
<ul>
<li>the duplicate filter now processes pairs in batches and hence supports 'back' actions to revisit decisions. you will be prompted every fifty or so pairs to commit and checkpoint your progress</li>
<li>the duplicate filter now presents related pairs together, rather than picking at random</li>
<li>fixed a bug in duplicate filter shortcuts initialisation</li>
<li>simplified duplicate filter default shortcuts (these will be overwritten on update) to only use simple left- and right-click for 'this is better' and 'alternates', since those are by far the most common actions. middle-click now goes back, like the archive/delete filter</li>
<li>converted old 'main shortcuts' system to the new shortcuts system, also splitting it up into 'media', 'main_gui', 'media_viewer', and 'media_viewer_browser' constituent parts that will be applied in different contexts</li>
<li>because the change is so significant, all clients will have their old 'options' shortcuts reset to the new default--I expect to expand shortcuts further in the next few weeks, so this default-overwriting will likely happen again, so you will likely wish to wait before recustomising your basic shortcuts</li>
<li>completely eliminated the old main shortcuts system--all references now bodge with the new system to varying neatness</li>
<li>as the old main shortcuts system no longer exists, the 'shortcuts' page on file->options is gone--all shortcuts are now managed through file->shortcuts, which is a completely revamped version of the custom filter shortcuts editing dialog</li>
<li>selecting shortcut commands is significantly simpler for the reserved shortcut sets</li>
<li>all media viewers with hover windows now have a 'keyboard' shortcuts icon button on their top hover window--it links to the manage shortcuts dialog as well as the current active custom shortcut sets and default custom shortcut sets</li>
<li>as the above system supercedes the old custom filter system, custom filters are completely removed from the program! your existing custom shortcut sets will survive, but you probably want to purge them of all the redundant junk they still have</li>
<li>all the media canvases use the new shortcuts system</li>
<li>the canvas frame uses the new shortcuts system</li>
<li>the thumbnails canvas uses the new shortcuts system</li>
<li>the main gui uses the new shortcuts system</li>
<li>some other misc places use the new shortcuts system</li>
<li>most simple shortcut command actions have been renamed to be more readable</li>
<li>some shortcut actions, like zoom stuff, is no longer hardcoded!</li>
<li>mouse shortcuts are still not widely supported!</li>
<li>the shortcut command edit dialog now throws a veto-driven error message if you try to ok on an invalid command (a blank services choice or action string, that sort of thing)</li>
<li>ctrl+r is now 'remove_files_from_view' by default. the old 'show_hide_splitters' is now ctrl+shift+r by default</li>
<li>the preview canvas, if focused, now responds to many normal media viewer shortcuts (content stuff like archive/manage tags, and canvas-specific like frame back/forth, zooming and panning)</li>
<li>the new shortcut system now interprets double-clicks of any mouse button to be a second single click</li>
<li>the new shortcut system correctly 'flips' ratings on and off, rather than always 'setting' to the chosen value. optional 'set only' support will come in the near future</li>
<li>more shortcuts will correctly and reliably propagate to canvases when any part of a hover frame has focus</li>
<li>fixed a conflict between the new shortcut system and taglists, which were no longer accepting otherwise interesting keys, like enter</li>
<li>created a shortcuts manager cache that deals with a bunch of the shortcut workflow centrally</li>
<li>completely eliminated the old accelerator table/menu command system for the main gui window</li>
<li>lots of misc shortcut-related work</li>
<li>fixed wildcard file search predicates that are on a specific file service and have no namespace (like 'mar*')</li>
<li>certain routines that can cause mass refreshing of the menubar (like import folders) will now not spam (and often queue this spam up and hang the gui) the menu so much. the menubar will now always collapse multple overlapping refresh calls to reduce cpu load</li>
<li>fixed a focus-None issue in the new hover window focus detection code</li>
<li>improved some more focus detection and comparison logic--quick rating-scrolling in the media viewer should be less janked</li>
<li>improved 'touch' drag event detection and improved media canvas cursor hide/show logic in general</li>
<li>fixed '&' display in notebook page names</li>
<li>fixed '&' display in some common dialogs' text</li>
<li>wrote a new statictext class that deals with '&' better and in future will autowrap and maybe some other stuff and then switched most of the simple instances of wx.statictext over</li>
<li>updated some out-of-date server help r.e. admin service initialisation</li>
<li>converted a little of the help on custom filter->custom shortcuts. I'll do more in future</li>
<li>wrote a simple checkboxlist dialog</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 251</h3></li>
<ul>
<li>started shortcut overhaul by updating shortcut storage and underlying objects</li>
<li>shortcuts will now support multiple modifiers (ctrl, alt, shift) in some places</li>
<li>the regular shortcut entry control now supports mouse events through a radiobox (although only the duplicate filter will capture and deal with mouse events on the new system!)</li>
<li>on db creation or update, a new 'duplicate_filter' shortcut set will be generated that includes mouse shortcuts and new duplicate_filter commands</li>
<li>the duplicate filter now obeys this shortcut set</li>
<li>duplicate filter shortcut edit cog menu now works, and the active shortcut set will update if edited</li>
<li>wrote simple duplicate pair status update db code</li>
<li>added dupe filtering optimisation--given A > B, anything else better than A will be set to be better than B, and anything worse than B will be set to be worse than A</li>
<li>added dupe filtering optimisation--after any duplicate status change affecting A and B, any 'same file' siblings of A and B will receive the same relationship</li>
<li>the 'process now' button on review services is now gated by a yes/no dialog that better explains what's about to happen</li>
<li>the repository buttons on review services will disable when they can't do anything</li>
<li>repository update processing will now cancel mid-job much faster</li>
<li>reintroduced the 'service-wide update' button to tag services in review services</li>
<li>reintroduced the 'clear trash' button to the trash file service in review services</li>
<li>reintroduced num_files rating service reporting in review services</li>
<li>fixed mouse scroll wheel events from the ratings hover window not being correctly processed by the main media canvas</li>
<li>added some 'touch' event detection to try to better deal with media dragging through a touchscreen</li>
<li>import folders will now 'action' their import paths as they go, rather than only at the end of their import run</li>
<li>the new taglists are now better at remembering their selection through a content change</li>
<li>opening a file or path from a non-windows client should now create a non-child process for open/xdg-open calls that block (so closing the client should not then close the child process movie player application or whatever)</li>
<li>added unit tests for the new shortcut object</li>
<li>added unit tests for the new application command object</li>
<li>fixed unit tests for the updated shortcuts object</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 250</h3></li>
<ul>
<li>improved 'file storage locations' help page descriptive text, including adding statements for actual current storage percentages</li>
<li>improved boot missing file storage error handling</li>
<li>wrote a 'repair file storage' dialog panel to manually fix missing folders during the boot phase</li>
<li>added some bells and whistles to the repair file storage dialog. it now shouldn't be possible to boot the client with an invalid file store--let me know how this works for you</li>
<li>added 'apply all siblings to all services' to options->tags</li>
<li>whenever combined-service siblings are consulted, local siblings will now always have precedence (so, you can now definitely overwrite any ptr siblings you don't like at the local level). this stuff remains a mess, however. more work is needed</li>
<li>fixed searching for 'like' ratings</li>
<li>rating predicates will now render their value as 'like'/'dislike' or '3/5' rather than the underlying float</li>
<li>fixed a variety of predicate string rendering errors when 'show namespace' is false</li>
<li>fixed delete key not firing on autocomplete text entry controls</li>
<li>the autocomplete entry's text box will now take home/end/up/down events when there is only one result in the dropdown, when navigation of that list is not important (previously, this was only true when there were no results)</li>
<li>fixed an issue where invalid typed 'system:' tags were not being correctly cleaned</li>
<li>improved tag cleaning code</li>
<li>fixed fetching autocomplete results for small and specific searches (e.g. putting in 'a' will return results just for 'a'</li>
<li>fixed small and specific searches to return namespaced instances as well (e.g. putting in '8' can now return 'chapter:8'</li>
<li>fixed an issue with showing collected media in the preview window</li>
<li>fixed the file import status button not laying out correctly on edit subscription dialog</li>
<li>cleaned up some focus checking code</li>
<li>harmonised all initial key event processing</li>
<li>cleaned some key event processing</li>
<li>adjusted some server daemon timings to prefer post-boot update generation catchup over db maintenance</li>
<li>corrected a bunch of slightly mistaken unit test code</li>
<li>added some 'like' and 'numerical' ratings search unit tests</li>
<li>the advanced content update dialog now uses the new sizing system (so the go! button should no longer wander out of frame!)</li>
<li>reduced what I believe is excess fuzzy padding on the new sizing system</li>
<li>optimised a common client db request, speeding up a number of tag operations</li>
<li>gui now asks for confirmation when you make to delete a gui session</li>
<li>improved some out of date unit tests</li>
</ul>
<li><h3>version 249</h3></li>
<ul>
<li>reintroduced shape and colour options to edit ratings service panels</li>
<li>reintroduced num_stars and allow_zero options to edit numerical ratings service panels</li>
<li>the export phrase--defaulting to '{hash}'--will now persist through export dialogs. it is saved whenever you click update or export</li>
<li>removed the unintended 'counts' that were appearing after related tags</li>
<li>fixed 'remove' action in custom filters</li>
<li>hitting the delete key on manage tags taglist now will always remove</li>
<li>added a BUGFIX option to not verify regular https traffic on the old networking engine for those non-Windows users who are getting SSL verify errors</li>
<li>refactored the top hover frame more, making it more flexible</li>
<li>created a new top hover frame for the duplicates filter</li>
<li>duplicates filter now also supports tag and ratings hover frames</li>
<li>duplicates filter now reports A or B as file index</li>
<li>added some placeholder buttons to the duplicates filter for actions and 'cog' customisation</li>
<li>reduced duplicate search shutdown logspam</li>
<li>improved duplicate search job cleanup</li>
<li>improved mime detection of thumbnail regeneration</li>
<li>improved some shutdown error handling</li>
<li>improved numerical rating search accuracy</li>
<li>improved some hdd import error handling</li>
<li>improved some unicode error handling</li>
<li>improved reliability of some database transaction processing</li>
<li>fixed animationbar having problems with single-frame videos</li>
<li>fixed namespace colour taglist not updating colour correctly</li>
<li>stopped the namespace colour taglist from deleting default namespace colours</li>
<li>made the new class of button more compact--not sure if I like it</li>
<li>refactored some db initialisation to avoid future transaction problems during special updates</li>
<li>tidied up some last incomplete taglist code from last week</li>
<li>did a little prep for some future shortucts overhaul</li>
<li>did some more menu code updating</li>
<li>added a simple subscription save/load unit test</li>
<li>moved outdated server unit tests forward</li>
<li>fleshed out some server certificate generation</li>
<li>some other misc v245 catchup work</li>
<li>cleaned up some pydeadobjecterrors caused by downloaders reporting progress to destroyed windows</li>
</ul>
<li><h3>version 248</h3></li>
<ul>
<li>fixed two more issues with recent update code!</li>
<li>re-applied a more rigorously tested 'invalid subtag' replacement for any user that has experienced incomplete update code in the past few weeks</li>
<li>added some tag rendering options to options->tags that affect most user-facing, non-editing windows:</li>
<li>added custom namespace-subtag connector (i.e. instead of ':')</li>
<li>added 'show namespaces' checkbox (i.e. to keep the colour but lose the namespace, like how most boorus display tags)</li>
<li>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</li>
<li>updated 'reset processing cache' action and added it to review services repository pages</li>
<li>review services now always starts on 'my files'</li>
<li>review services will try to stay looking at the currently selected service through a refresh_services event</li>
<li>fixed some thread-gui refresh interaction in review services</li>
<li>all listctrl-attached delete/remove buttons will now ask if you are sure before they go</li>
<li>reenabled db->maintenance->clear orphans, which it turns out I had already fixed by accident</li>
<li>serverside services will lock themselves more efficiently while generating updates, ensuring 'server busy' responses can always return promptly</li>
<li>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)</li>
<li>tuned adminside petition processing so it approves/denies in reasonable-sized chunks</li>
<li>refactored all the taglist gui code to focus on the underlying tag rather than the string representation</li>
<li>plenty of misc taglist cleanup besides</li>
<li>started a unit test suite for listboxes and wrote a thorough test for namespace colour listbox</li>
<li>misc canvas refactoring</li>
</ul>
<li><h3>version 247</h3></li>
<ul>
<li>fixed a problem with deleting more than 256 files at once</li>
<li>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</li>
<li>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!</li>
<li>this flickerless static image transition will be particularly useful in the forthcoming duplicate image filter!</li>
<li>got adminside petition processing working again</li>
<li>petition counts and fetching is now split by content_type and status</li>
<li>the approve/deny colour hint is more obvious on the petition panel</li>
<li>petitions now process off the main gui thread and throw up a popup message</li>
<li>added 'check all' and 'check none' buttons to petition panel</li>
<li>several serverside petition processing fixes</li>
<li>generalised and improved dynamic menu check item initialisation and inversion support</li>
<li>moved the 'get tags even if file already in db' option into a cog button on regular downloader pages</li>
<li>added a default menu option for 'get tags even if file already in db' to the same cog button</li>
<li>added this cog button to the edit subscription panel as well</li>
<li>fixed exporting tags to Hydrus Tag Archives</li>
<li>fixed exporting 'all known tags' to HTAs</li>
<li>cleaned some HTA and related code</li>
<li>fixed namespace based tag censorship</li>
<li>fixed autocomplete not filtering out current/pending counts if they are set to 'excluded'</li>
<li>fixed generation of non-expiring new accounts</li>
<li>fixed some v245->v246 tag improvement code that was replacing invalid tags with the incorrect namespace</li>
<li>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</li>
<li>wrote unit tests for bytesdictionary and shortcuts serialisable objects</li>
<li>harmonised and improved how separators are appended to menus</li>
<li>cleaned up some client db index creation</li>
<li>cleaned up some client tuple stripping</li>
<li>misc pylint warnings cleanup</li>
<li>misc fixes</li>
</ul>
<li><h3>version 246</h3></li>
<ul>
<li>fixed a critical bug in serverside content deserialisating that meant servers were not processing most client-submitted data properly</li>
<li>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</li>
<li>fixed the pre-v238 update problem for good by abandoning update attempts and advising users to try v238 first</li>
<li>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</li>
<li>duplicates pages now have a file domain for the filtering section, and they remember this domain through session loads</li>
<li>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!</li>
<li>there is now only one 'idle' entry in the duplicates page cog menu--it combines the three previous into one</li>
<li>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</li>
<li>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</li>
<li>typing 'namespace:' will include all the series tags below the special optimised 'namespace:*anything*' tag</li>
<li>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</li>
<li>quickly entering a wildcard entry will now submit the correct wildcard predicate ('rather than a literal 'hel*' or whatever tag)</li>
<li>review services panel now reports total mappings info on tag services</li>
<li>review services panel now reports total files info on file services</li>
<li>manage services's listctrl is now type | name | deletable and initially sorts by type. the strings used for hydrus service types are also improved</li>
<li>manage serverside services (called by server admins to manage their services) have fixed setnondupe port and name on edit service events</li>
<li>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)</li>
<li>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</li>
<li>hid hydrus update files from 'all local files' searches</li>
<li>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)</li>
<li>fixed 'recent tags' being returned from the database out of order</li>
<li>by default, 'recent tags' is now on for new users</li>
<li>'get tags even if file already in db' now defaults to False</li>
<li>file import status now allows a 'delete' action below the 'skip' action</li>
<li>file import status right-click event processing is more sane</li>
<li>fixed the new raw width/height sort choices, which were accidentally swapped</li>
<li>cleaned the media sort code generally</li>
<li>cleared out some redundant rows that are in some users' client_files_locations</li>
<li>namespaced predicates are no longer count-merged with their namespaceless versions in 'write' autocomplete dropdowns</li>
<li>'unknown' accounts should now properly resync after clientside service change</li>
<li>improved how registration keys are checked serverside when fetching access keys</li>
<li>fixed a v244 update problem when unexected additional tag parent/sibling petitions rows exist</li>
<li>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)</li>
<li>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</li>
<li>profiles are more concise and formatted a little neater</li>
<li>across the program, three-period ... ellipses are now replaced with their single character unicode <20> counterpart (except to the console, where any instance of the unicode ellipsis will now be converted back to ...)</li>
<li>cleaned up some log printing code</li>
<li>cleaned up some experimental static serialisation code, still thinking if I like it or not</li>
<li>started on some proper unit tests for hydrus serialisable objects</li>
<li>fixed and otherwise updated a heap of unit test code to account for the v245 changes</li>
<li>cleaned up a bunch of old database table join code</li>
<li>started some databse-query-tuple-stripping code cleaning</li>
<li>deleted more old unused code</li>
<li>misc timing improvements</li>
<li>misc code cleanup experimentation</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 245</h3></li>
<ul>
<li>fixed a v244 update problem for clients updating from <v238</li>
<li>some misc stuff:</li>
<li>if you start editing many subscriptions, cancelling a single dialog will break the chain of loading new dialogs</li>
<li>reduced some redundancy in regular client file import</li>
<li>improved how the dialog for selection from a list of strings works</li>
<li>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</li>
<li>created new flexible bandwidth tracking and ruling objects</li>
<li>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</li>
<li>updating now takes approximately 23% as much bandwidth as before</li>
<li>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)</li>
<li>the server will print update generation info to its log</li>
<li>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</li>
<li>the server has been compacted across all content types--its mappings db file should shrink about 12%</li>
<li>due to new service-specific ids, server.master.db should increase in size, typically about 50%</li>
<li>harmonised how GET and POST/response args are built and parsed across the network</li>
<li>server administration initialisation is now simpler, done with 'init' registration key</li>
<li>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</li>
<li>invalid serverside tags will be replaced with valid placeholders on server update</li>
<li>refactored, harmonised and simplified some server request code</li>
<li>Eris makes a triumphant return to the root welcome page ('/' request of any service) with improved self-description text as well</li>
<li>updated how bandwidth is tracked and overseen</li>
<li>all requests now consume bandwidth</li>
<li>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</li>
<li>bandwidth tracking code is more sane across the board</li>
<li>the server's administration service now tracks server-wide bandwidth as it happens</li>
<li>service and server-wide bandwidth rules are consulted as soon as the request begins</li>
<li>improved some server response rendering</li>
<li>permissions are more flexible and content-specific</li>
<li>improved how file repositories check and process file requests</li>
<li>created a gui control for managing bandwidth rules</li>
<li>updated the serverside service object</li>
<li>the serverside service object now contains bandwidth rules and tracking</li>
<li>updated how the server deals with services on a db level</li>
<li>refactored and cleaned a ton of server db code</li>
<li>updated how services are edited over the network</li>
<li>updated how the server associates its services with its http pipeline</li>
<li>converted clientside server service management gui to the new panel system</li>
<li>updated gui code for clientside server service management</li>
<li>converted clientside server service management db code to the new system</li>
<li>improved how bandwidth errors are reported</li>
<li>updated the account type object</li>
<li>the account type object now contains bandwidth rules and a more flexible permissions system</li>
<li>updated how the server deals with account types on a db level</li>
<li>converted clientside server account type management gui to the new panel system</li>
<li>updated gui code for clientside server account type management</li>
<li>serverside account types are now fetched from a cache, reducing memory sprawl</li>
<li>updated the account object</li>
<li>the account object now contains a bandwidth tracker</li>
<li>updated how the server deals with accounts on a db level</li>
<li>updated the clientside server object</li>
<li>the clientside server object now contains bandwidth rules and a tracker and has improved error management, recovery, and reporting</li>
<li>updated how the client deals with services on a db level</li>
<li>improved how serverside bandwidth errors are caught</li>
<li>all clientside services start with a 50MB/day bandwidth limit</li>
<li>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</li>
<li>updated manage services dialog extensively</li>
<li>service account registration now occurs through a simple button on the normal clientside service edit panel</li>
<li>all services can now be renamed</li>
<li>updated the content processing pipeline</li>
<li>prepared code for future merging of file and tag repositories</li>
<li>added future support for pend-petitions for files and mappings and simple creation permissions for tag siblings and parents</li>
<li>the clientside content processing pipeline now operates inside a single database transaction, reducing a great deal of previously redundant hard drive activity</li>
<li>the serverside content processing pipeline now creates per-service timestamped content definitions</li>
<li>the clientside content processing pipeline now maintains and appropriately consults a cache for server definitions</li>
<li>pre-process disk cache is more intelligent</li>
<li>updated review services to match the new service objects</li>
<li>service review panels now show more information about error state and so on</li>
<li>service review panels should now update as soon as services change</li>
<li>you can now force sync repositories from review services</li>
<li>you can now pause/resume repositories from review services</li>
<li>you can now export repository update files from review services</li>
<li>you can now import repository update files from the services menu</li>
<li>repository thumbnail download now uses a cache for faster thumbnail ownership testing</li>
<li>culled a lot of old code and experiments</li>
<li>deleted all the old messaging depot code and db table cruft</li>
<li>removed optimised petition processing</li>
<li>serverside deleteorphans is temporarily disabled</li>
<li>hydrus client-repository relationship no longer supports news</li>
<li>removed the 'stats' admin service call--it will come back as a account review page</li>
<li>clientside clear orphans is temporarily disabled</li>
<li>clientside local file/thumbnail server is disabled for now</li>
<li>custom service 'messages' for the root page are no longer available</li>
<li>some things are not working yet--they will be back in soon</li>
<li>content presentation on review services</li>
<li>service reset, other advanced content service controls</li>
<li>ipfs controls on review services</li>
<li>local booru controls on review services</li>
<li>most service-specific panels on manage services</li>
<li>petition resolution</li>
<li>serverside account modification, including banning</li>
</ul>
<li><h3>version 244</h3></li>
<ul>
<li>updated client database to compact ( namespace_id, tag_id ) pair into a single id for storage</li>
<li>added some bells and whistles to the update code</li>
<li>added a free space check and messagebox warning before the update</li>
<li>updated db, service, and a/c cache creation code to reflect new schema</li>
<li>updated absolutely everything else in the db to reflect the new schema</li>
<li>for users with plenty of tags, the db should now be about 33% smaller!</li>
<li>unified how unnamespaced tag searching counts are totalled</li>
<li>unnamespaced tag searching counts are now totalled when the tags are fetched from the in-view ui media</li>
<li>unified how tags are split into ( namespace, subtag ) across the program</li>
<li>fixed deviantart gallery thumbnail parser</li>
<li>fixed linux session load page key event handling bug</li>
<li>os x can now support notebooks with zero pages open</li>
<li>fixed an issue where os x was losing the first page of some session loads</li>
<li>fixed some similar files shutdown work false positive calculation</li>
<li>reduced server bandwidth check period from 24 hours to 1 hour</li>
<li>improved calltothread scheduling under heavy load</li>
<li>improved scheduling of how files are physically deleted</li>
<li>numerous laggy temp_table replacement/cleanup</li>
<li>more temp_table replacement</li>
<li>misc efficiency improvements and general db code cleanup</li>
<li>misc path code cleanup</li>
</ul>
<li><h3>version 243</h3></li>
<ul>
<li>updated more menu code to the new system</li>
<li>finished updating all main gui menubar and thumbnail menu code</li>
<li>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]'</li>
<li>'*' searches will now return no autocomplete results, rather than trying to load absolutely everything</li>
<li>made wildcard searching significantly more permissable--it now implicitly applies a '*' to the beginning as well as the end of your search input</li>
<li>the main gui's notebook pages will now be disabled while a session loads</li>
<li>might have fixed a first-boot layout issue--otherwise added a layout entry to the debug menu for further testing of this problem</li>
<li>improved progress layout on file import dialog</li>
<li>created a more efficient way for threads to update gui elements</li>
<li>the file import dialog uses this new update system and parses lots of small files much faster as a result</li>
<li>the edit import folder dialog will now complain if you try to put in an import path that includes the install or db directory</li>
<li>ffmpeg mime parsing now catches and reports audio formats without any hassle</li>
<li>thread downloader no longer fetches file extension in filename tag 'filename:blah' instead of 'filename:blah.jpg'</li>
<li>changed png default zoom rules to copy jpg--the unusual zoom as default was more confusing than helpful</li>
<li>updated sqlite for windows--should be a decent bit faster</li>
<li>deleted a lot of old code that'll never be needed again</li>
<li>misc refactoring</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 242</h3></li>
<ul>
<li>optimised 'exact match' similar file queries to run a lot faster</li>
<li>optimised similar file queries in general, particularly for larger cycle queries</li>
<li>optimised hamming distance calculation, decreasing time by roughly 45%!</li>
<li>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)</li>
<li>removed similar files tree maintenance entry from db->maintain menu, as it can be done better from the new dupes page</li>
<li>adjusted the duplicate search and file phash regen progress gauges to reflect total number of files in cache, not the current batch job</li>
<li>all maintenance jobs on the duplicates search page will now save their progress (and free up a hanging gui) every 30 seconds</li>
<li>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</li>
<li>the cog menu can also put duplicate searching on idle time!</li>
<li>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</li>
<li>I may have reduced the memory use explosion some users are getting during file phash regen maintenance</li>
<li>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</li>
<li>added ascending/descending sort choices for width, height, ratio, and num_pixels</li>
<li>the client can no longer talk to old http hydrus network servers--everything is now https</li>
<li>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)</li>
<li>fixed gif rendering in the Windows build--I forgot to update a build script dll patch for the new version of opencv</li>
<li>the export file dialog's neighbouring .txt taglist file stuff now allows you to select a specific combination of tag services</li>
<li>if an hdd import's original file is due to be deleted, any existing neighbouring taglist .txt file will now also be deleted</li>
<li>the inter-thread messaging system has a new simple way of reporting download progress on an url</li>
<li>the handful of things that create a downloading popup (like the youtube downloader) now use this new download reporting system</li>
<li>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)</li>
<li>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</li>
<li>removed unnamespaced tag support from the hentai-foundry parser--maybe someone can try to fix that mess in the new downloader engine</li>
<li>menubuttons can now handle boolean check menu items that are tied straight into hydrus's options</li>
<li>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!)</li>
<li>fixed a unicode error parsing bug in the gallery downloader</li>
<li>the server stop (or restart) command now correctly uses https!</li>
<li>the server test code now works on https as appropriate</li>
<li>fixed some misc server test code</li>
<li>misc fixes</li>
<li>misc cleanup</li>
<li>misc layout cleanup</li>
</ul>
<li><h3>version 241</h3></li>
<ul>
<li>fixed the 'setnondupename' problem that was affecting 'add' actions on manage subscriptions, scripts, and import/export folders</li>
<li>added some more tests to catch this problem automatically in future</li>
<li>cleaned up some similar files phash regeneration logic</li>
<li>cleaned up similar files maintenance code to deal with the new duplicates page</li>
<li>wrote a similar files duplicate pair search maintenance routine</li>
<li>activated file phash regen button on the new duplicates page</li>
<li>activated branch rebalancing button on the new duplicates page</li>
<li>activated duplicate search button on the new duplicates page</li>
<li>search distance on the new duplicates page is now remembered between sessions</li>
<li>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</li>
<li>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)</li>
<li>misc phash code cleanup</li>
<li>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</li>
<li>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</li>
<li>improved some search logic that was refreshing too much info on an 'include current/pending tags' button press</li>
<li>fixed pixiv login--for now!</li>
<li>system:dimensions now catches an enter key event and passes it to the correct ok button, rather than always num_pixels</li>
<li>fixed some bad http->https conversion when uploading files to file repo</li>
<li>folder deletion will try to deal better with read-only nested files</li>
<li>tag parent uploads will now go one at a time (rather than up to 100 as before) to reduce commit lag</li>
<li>updated to python 2.7.13 for windows</li>
<li>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</li>
<li>I think I improved some unicode error handling</li>
<li>added LICENSE_PATH and harmonised various instances of default db dir creation to DEFAULT_DB_DIR, both in HydrusConstants</li>
<li>misc code cleanup and bitmap button cleanup</li>
</ul>
<li><h3>version 240</h3></li>
<ul>
<li>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</li>
<li>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</li>
<li>added data structures to support auto-discovery of duplicate files</li>
<li>improved how some similar files maintenance occurs</li>
<li>flushed out duplicate status reporting</li>
<li>added a new page type, currently under pages->search pages->duplicates, to handle duplicate discovery and filtering</li>
<li>created a gui skeleton for the new duplicates page</li>
<li>started some handles and update code for the new duplicates page</li>
<li>wrote a new txt file in the db dir about the new emergency extract scripts</li>
<li>wrote an emergency extract script to migrate subscriptions to a new db</li>
<li>wrote an emergency extract script to migrate options to a new db</li>
<li>the trash clearing daemon now runs in the foreground, and a little of its code is improved</li>
<li>the trash clearing daemon now makes a popup message when it does work</li>
<li>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</li>
<li>added a explicitly unicode popup message to the debug test</li>
<li>fixed some network error catching code that was using Windows-only error codes</li>
<li>converted more of the thumbnail right-click menu over to the new system</li>
<li>improved some listctrl code</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 239</h3></li>
<ul>
<li>finished up similar files search data maintenance code</li>
<li>similar files search data maintenance will now run during idle time</li>
<li>similar files search data maintenance can be called from database->maintain menu</li>
<li>the crowded database->maintenance menu is now split into maintain, regenerate, check</li>
<li>improved the similar files tree generation code, speeding searches significantly</li>
<li>wrote a new listctrl class to handle more complicated objects and also sort by underlying data</li>
<li>the new listctrl now handles object name non-duplication</li>
<li>cleaned a bunch of crap old listctrl code</li>
<li>manage export folders now uses the new listctrl</li>
<li>manage import folders now uses the new listctrl</li>
<li>manage subs now uses the new listctrl</li>
<li>manage scripts now uses the new listctrl</li>
<li>options media viewer options now uses the new listctrl</li>
<li>file import status panel now uses the new listctrl</li>
<li>the new listctrl can now quickly fetch item index from the underlying object</li>
<li>the file import status panel should now cope with extremely huge lists a bit better now!</li>
<li>multiple parsing child nodes can now import from/export to clipboard as lists</li>
<li>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</li>
<li>cleaned import/export folder dialogs</li>
<li>cleaned import/export folder dialog workflow</li>
<li>several misc import/export folder improvements</li>
<li>hydrus servers are now exclusively https with self-signed certificates</li>
<li>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</li>
<li>system:hash now ignores the file domain and any other predicate. it now returns very quickly, no matter the context</li>
<li>improved system:hash search logic</li>
<li>all the awkward choice dropdowns in system predicate panels are replaced with radioboxes</li>
<li>improved system:rating panel grid layout</li>
<li>wrote a better subclass of radiobox to handle more data</li>
<li>moved first half of thumbnail menu to new menu system</li>
<li>cleaned up a little thumbnail menu logic</li>
<li>improved the different ways services are added to thumbnail menu</li>
<li>thumbnail 'select' menu is logically cleaned up and allows for better file domain selection</li>
<li>the thumbnail menu's copy files and copy hashes to clipboard will now send them ordered (they were previously pseudo-random)</li>
<li>added 'paths' to the share->copy thumbnail menu for copying multiple files' paths. these are also ordered.</li>
<li>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</li>
<li>removed some old redundant error reporting stuff in popups</li>
<li>improved and quietened some some mime detection failure code, sped up mime failure loop in all cases</li>
<li>massively simplified and atomised how new serialisable-object management panels can save their data</li>
<li>the manage subscription dialog now saves in a single, faster transaction</li>
<li>the manage script dialog now saves in a single, faster transaction</li>
<li>reduced redundant index work from analyze jobs</li>
<li>improved tag parse error handling</li>
<li>fixed media removal rules when deleting from the 'all local files' domain</li>
<li>polished and clarified some of the help's tag schema</li>
<li>misc cleanup</li>
<li>more misc cleanup</li>
<li>misc refactoring</li>
<li>more misc refactoring</li>
</ul>
<li><h3>version 238</h3></li>
<ul>
<li>added left/right equal ratio preference to the similar files search tree generation</li>
<li>added high standard deviation preference to the similar files search tree generation</li>
<li>added 'db profile mode' to the help menu, for briefer profiling in future</li>
<li>when a similar files search occurs with db report mode on, it'll popup a nice bit of text saying how many cycles it took</li>
<li>fixed a bug due to last week's 'all local files' change that meant archive/delete filtering would include any selected trashed files</li>
<li>'recent tags' will now only be populated by add/pend tag events, and only by those tags that were valid for that action</li>
<li>moved the help menu to the new menu system</li>
<li>added bitmapped menu item support to the new menu code</li>
<li>fixed and cleaned up some of the new menu code</li>
<li>improved a/c cache regen error reporting</li>
</ul>
<li><h3>version 237</h3></li>
<ul>
<li>added 'all local files' service that spans all local file domains</li>
<li>improved trash service code</li>
<li>trashed files now report their trashed timestamp in right-click menus</li>
<li>trash views will sort oldest/newest by the trash timestamp</li>
<li>renamed 'local files' to 'my files' to reduce initial confusion</li>
<li>if you don't like 'my files', you can now rename the local files service under manage services!</li>
<li>improved how some local file service metadata is stored</li>
<li>cleaned and possibly fixed up some delete code</li>
<li>cleaned up a bunch of misc service and file service code</li>
<li>the client is more intelligent about what local files are -- you can now 'open externally' trashed files, for instance</li>
<li>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)</li>
<li>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</li>
<li>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</li>
<li>the client can now post additional messages on boot (you'll see one!)</li>
<li>improved how errors with unusual characters are applied to failed import file status objects</li>
<li>left double-click on the main gui greyspace now opens the new page chooser as well</li>
<li>restored session pages now recover more gracefully from missing services</li>
<li>shortened the 'stop after this many files' phrase, which was mis-sizing downloader panels</li>
<li>changed several bits of old jank in the 'import options - files' collapsible. it is also now thinner</li>
<li>misc gui improvements</li>
<li>updated more of the menu system code</li>
<li>the selection tags box now sizes its height more reasonably</li>
<li>fixed 'check now' and 'reset cache' buttons on edit sub dialog</li>
<li>subscriptions report better file import status on their popup</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 236</h3></li>
<ul>
<li>in prep for a network https upgrade, the client can now detect and escalate to https when making connections to hydrus services</li>
<li>import/export to png and clipboard now supports multiple objects at once!</li>
<li>rewrote the manage subscriptions dialog to work on the new panel system</li>
<li>the new manage subscriptions dialog has a listctrl and a sub edit dialog</li>
<li>the new manage subscriptions dialog has the same add/export/import/dupe/edit/delete buttons as the manage scripts dialog</li>
<li>subscriptions are now importable/exportable, including en masse with the new multiple object import/export support!</li>
<li>the new manage subscriptions dialog has retry failed/pause-resume/check now/reset buttons for easy mass subs management</li>
<li>the edit subscription panel has a bit of a layout makeover</li>
<li>the edit subscription panel now updates itself as its buttons are hit</li>
<li>the edit subscription panel disables buttons that are not applicable</li>
<li>subscriptions can now be renamed!</li>
<li>cleaned some misc subscription code</li>
<li>relabelled initial and periodic file limit in the subscription edit panel</li>
<li>middle-clicking on the main gui's greyspace (e.g. to the right of the notebook tabs) will spawn the new page chooser!</li>
<li>created a simple HydrusRatingArchive class--will do more with it in future</li>
<li>added ffmpeg, python, and sqlite versions to the help->about window</li>
<li>harmonised daemon code</li>
<li>added a new class of daemon that will not fire while a session load is occuring</li>
<li>subscriptions, import and export folders, and file repo downloads now use this new daemon</li>
<li>cleaned the way background daemons check for idle</li>
<li>expand/collapse panels now notify the new kind of toplevelwindow that a resize may be needed when they switch state</li>
<li>time deltas (like on subs edit panel or a thread watcher) now render more concisely ('7 days' instead of '7 days 0 hours')</li>
<li>serialisable object png export panel now has a width parameter</li>
<li>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</li>
<li>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</li>
<li>updated and cleaned a bunch of my old misc encryption code</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 235</h3></li>
<ul>
<li>finished first version of new faster dupe search--'system:similar to' now uses it</li>
<li>finished faster dupe search tree creation</li>
<li>finished faster dupe search tree search</li>
<li>added faster dupe search tree leaf insertion</li>
<li>added faster dupe search tree rebalancing maintenance</li>
<li>added faster dupe search tree orphan deletion maintenance</li>
<li>added faster dupe search leaf-regeneration-as-scheduled maintenance</li>
<li>misc faster dupe search tree work</li>
<li>new search tree will be created on db update</li>
<li>fixed the 'add' buttons on the import files dialog</li>
<li>fixed linux manage tags text input</li>
<li>reduced incidence of linux media viewer post-manage tags key event swallowing</li>
<li>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</li>
<li>fixed manage tags action workflow when no valid tag choices exist</li>
<li>entering a tag petition reason now has several common 'suggestions' for quick entry</li>
<li>removed ffmpeg binary from default linux release (as basically every linux has a decent ffmpeg by default)</li>
<li>fixed the incorrect ffmpeg version for os x</li>
<li>added an option to options->media to prefer to use the system ffmpeg over any in the hydrus bin directory</li>
<li>fixed linux arrow key navigation of the page picker dialog</li>
<li>cleaned up the page picker dialog's gross old code</li>
<li>the edit file lookup script panel now has a script management control on its test page to better report on and control tests</li>
<li>scripts will new correctly attempt to decode unicode and other encoded text in responses</li>
<li>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</li>
<li>added the same non-text catch to the edit link node panel</li>
<li>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</li>
<li>removed 'restart' option from linux for now--looks like a bug in pyinstaller</li>
<li>improved how the new GET request read reattempt works</li>
<li>cleaned up some spammy error code</li>
<li>cleaned up spammy test code</li>
<li>misc error handling improvements</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 234</h3></li>
<ul>
<li>the action choice workflow in the manage tags dialog now merges decisions for multiple tag entry events</li>
<li>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</li>
<li>the manage tags dialog only requests one petition reason for an above merged multitag petition event</li>
<li>perceptual hashes are now stored in the cache db (moved from the preferably leaner main db)</li>
<li>the database now supports multiple perceptual hashes per file</li>
<li>fleshed out the perceptual hash vptree generation and maintenance code</li>
<li>added option for main gui title to options->gui--it even updates live</li>
<li>added unicode path support when importing serialised pngs</li>
<li>added unicode path support when exporting serialised pngs</li>
<li>exporting a serialised png now reports success via the export button, which will temporarily relabel itself</li>
<li>added discord links to help files and help->links menu</li>
<li>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</li>
<li>escape key now closes scrolledpanelframes (review services or import status frames)</li>
<li>manage tags dialog and frame now closes due to escape key correctly</li>
<li>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</li>
<li>undo menu now works on the new menu system</li>
<li>cleaned up some bad gui-thread interaction in the file import dialog</li>
<li>fixed file->restart in the built release, including when the install path includes a space</li>
<li>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)</li>
<li>the subscription daemon will wait 90 seconds after boot before triggering--quitting the client before then will result in subs not being checked</li>
</ul>
<li><h3>version 233</h3></li>
<ul>
<li>made a plan for faster dupe search</li>
<li>created skeleton of db tables for faster dupe search</li>
<li>wrote out search algorithm for faster dupe search when the rest is ready</li>
<li>updated search algorithm and skeleton to support a future multiframe (i.e. gif/video) similar files comparison</li>
<li>the os x release now has 'client' as the main client executable</li>
<li>the os x release now includes the server, under the 'server' executable</li>
<li>added studio (128,0,0) and meta (0,0,0) default namespace colours</li>
<li>the 'add all' button on the file lookup tag suggestions panel now will only ever add--it won't remove/rescind pend</li>
<li>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)</li>
<li>fixed the 'nonetype has no dtype' rendering problem introduced by last week's 16-bit channel fix (this mostly affected static gifs)</li>
<li>fixed non-null ratings changes in the numerical ratings dialog</li>
<li>fixed culling and adding variables not initialising on the edit html formula panel</li>
<li>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</li>
<li>tweaked disk cache timings a little more to account for more scenarios--it now also reports itself to the shutdown splash screen</li>
</ul>
<li><h3>version 232</h3></li>
<ul>
<li>finished png object sharing system, created some gui for it</li>
<li>switched the top half of the new png export to wx code, which can render with prettier system fonts</li>
<li>you can now 'export' parsing scripts to png from manage parsing scripts for easy sharing</li>
<li>you can also 'import' parsing script pngs in the same dialog!</li>
<li>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)</li>
<li>added a 'add all' button to quickly add all tags from file lookup suggested tags panel</li>
<li>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)</li>
<li>added basic 'cancel' support to script management control--mid-http cancel support will come with the gauges</li>
<li>added url support to thread notification objects, and hooked script code into it</li>
<li>added a url menu button to script management control, so you can launch any parsed urls the script found in your browser</li>
<li>html parsing formulas now support positive and negative front and end character culling</li>
<li>html parsing formulas now support prepending and appending arbitrary text</li>
<li>added some more pretty text to the html formula summary to explain when they do the new culling or adding</li>
<li>script 404s and other network errors are now caught neatly and reported</li>
<li>link node 404s and other network errors are now reported and recovered from</li>
<li>fixed favourite file lookup script selection on initialisation</li>
<li>fixed parsing veto test to include membership of search string in result, not just exact match</li>
<li>fixed html formula tag attribute fetching</li>
<li>updated os x release to python 2.7.10</li>
<li>fixed os x about window</li>
<li>fixed v231 linux release image rendering crash</li>
<li>updated linux release to wx 3.0.2.0</li>
<li>updated linux release to opencv 3.1.0</li>
<li>fixed rendering for 16-bit-per-channel images</li>
<li>fixed a potential out-of-order settagboxfocus event issue on panel initialisation</li>
<li>created a 'menubutton' control and switched existing code over</li>
<li>created some 'nullipotent panel' dialog code to handle some new stuff</li>
<li>misc fixes</li>
<li>bunch of misc refactoring</li>
</ul>
<li><h3>version 231</h3></li>
<ul>
<li>added file lookup scripts suggested tags control and appropriate options panel</li>
<li>added final bit of gui->filelookup script->content update pipeline conversion and tie-in code</li>
<li>moved all the suggested tag options into a notebook</li>
<li>added notebook layout for suggested tag control columns. it is now the default</li>
<li>suggested tag columns now have a unified set width</li>
<li>the parsing ui's add script and node buttons now spawn menus rather than the awkward listofstrings dialog</li>
<li>added 'iqdb danbooru' file lookup script. it hangs the ui pretty bad atm, but that will change in future</li>
<li>fixed a critical pyinstaller problem with the os x builds</li>
<li>log files will now be appending with 'year-month', and will roll over to a new file as the month turns</li>
<li>help->about dialog now has some library version information</li>
<li>converted more menu stuff to the new system</li>
<li>wrote the guts of a new png-based object sharing system</li>
<li>dropdown choices are more resistant to missing init and invalid defaults</li>
<li>tweaked some disk cache maintenance timing</li>
<li>fixed a multi-version update bug regarding external thumbnail paths not being initalised</li>
<li>misc cleanup</li>
<li>misc cleanup, improvements</li>
</ul>
<li><h3>version 230</h3></li>
<ul>
<li>all multiline text ctrls now support ctrl+a for select all, wew</li>
<li>added dynamic menu_item tracking to new menu id system</li>
<li>added submenu tracking to new menu id system</li>
<li>added comprehensive menu, submenu, and menu item destruction to new menu id system.</li>
<li>'pending' menu now works on the new menu id system--is likely a major cause of the menu id bugs</li>
<li>added 'info' tabs to the script/nodes/formula parsing gui panels</li>
<li>added a 'veto' content type for discovering undesired redirects</li>
<li>added special veto support to parsing engine</li>
<li>expanded the content node panel to handle and display multiple content types</li>
<li>added 'link' parsing node panel</li>
<li>expanded 'link' panel test page and tied in secondary layer example url and data forwarding to children</li>
<li>fixed the parsing node children control not forwarding example data up to nodes on edit</li>
<li>file lookup url is now explicitly stored in the file lookup script object</li>
<li>file lookup url is now passed to child parsing dialogs for test example data purposes</li>
<li>expanded internal 'requests' interface a little--it now also always includes the 'user-agent' request header as the typical 'hydrus/version_number'</li>
<li>wrote script GET/POST engine gubbins and tied it into the respective test page</li>
<li>wrote link GET engine gubbins and tied it into the respective test page</li>
<li>'person' namespace added to default namespace colours--it is RGB ( 0, 128, 0 ), a darker version of 'character' green</li>
</ul>
<li><h3>version 229</h3></li>
<ul>
<li>edit html formula dialog can now be launched from edit content node panel</li>
<li>edit html tag rule dialog can now be launched from edit formula panel</li>
<li>edit formula panel test now works</li>
<li>edit content node panel test now works</li>
<li>edit script panel test now works</li>
<li>html formula now filters out missing content rather than complaining</li>
<li>misc parsing work</li>
<li>fixed some listctrl resize columns to be more helpful</li>
<li>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</li>
<li>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</li>
<li>frame location options panel now allows for negative position coordinates (for multi-monitor setups)</li>
<li>all the new resizing panels now handle certain size updates in a more unified and reliable way</li>
<li>fixed an issue with hover windows' mouse position check breaking during media window init/shutdown edge cases</li>
<li>avc1 mp4 support added</li>
<li>ftypFACE mp4 support added</li>
<li>ftypdash mp4 support added</li>
<li>mpegts mpeg support added</li>
<li>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)</li>
<li>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)</li>
<li>started work on cleaning up button code across the program</li>
<li>created a better way to bind menu events that shouldn't suffer the id overflow bug</li>
<li>started work on replacing the old id_to_action_cache menu mess with the new system</li>
<li>too-many redirect exceptions are now richer and caught more sensibly</li>
<li>circular redirects are caught as soon as they occur</li>
<li>reduced sqlite cache size (with the new disk cache, this is now less important)</li>
<li>client.py is now included in the source and windows frozen releases</li>
</ul>
<li><h3>version 228</h3></li>
<ul>
<li>added support for RIFF .avi files</li>
<li>fleshed out parsing ui, made progress on node editing, moved edit/test panels to notebook pages to reduce clutter</li>
<li>the video renderer now initialises off the gui thread, which should reduce some video browsing chunkiness</li>
<li>trying to save a session that would overwrite another (from the same name) now throws up a yes/no warning</li>
<li>reintroduced '--no_daemons' and '--no_wal' to the new command line argument parser</li>
<li>you can now set the default tag service for new search pages under the file->options->tags page</li>
<li>since it can now be anywhere, added 'db directory' to the file->open menu</li>
<li>fixed a build capitalisation issue that was making the windows frozen exe release crash when trying to run from source</li>
<li>the 'too many redirects' error message is expanded to print the url called and its redirect request</li>
<li>errors from trying to delete files in use by another process will no longer make popups--they'll just write a note in the log</li>
<li>improved how some errors are written to the log</li>
<li>misc fixes</li>
</ul>
<li><h3>version 227</h3></li>
<ul>
<li>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)</li>
<li>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!</li>
<li>critical boot error reporting is more reliable</li>
<li>if the admin port is in use on server boot, the error is handled better and the program will quit more easily</li>
<li>fixed mime parsing for some unusual webms</li>
<li>added support for even more unusual webms</li>
<li>added support for SonyPSP mp4s</li>
<li>fixed system:hash when searching for a non-existent non-sha256 hash</li>
<li>fixed layout of the 'dismiss all' popup button</li>
<li>preview windows will no longer update in the background if the 'hide preview window' option is set</li>
<li>misc fixes</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 226</h3></li>
<ul>
<li>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!</li>
<li>fixed autocomplete same-service sibling count merging</li>
<li>sped up how autocomplete counts are put together</li>
<li>results will build faster due to an improvement in how tag rows are fetched</li>
<li>results will build faster due to an improvement in how tag strings are fetched</li>
<li>incidence taglist sorting now secondary sorts by lexicographic in the 'correct' direction (a-z for desc, z-a for asc)</li>
<li>all listctrls now support ctrl+a to select all</li>
<li>cleaned up some superfluous and possibly buggy canvas zoom calc when using the open externally button</li>
<li>the zoom_switch event will now reset the drag coordinates (recentering the image) if the resultant zoom fits into the canvas frame</li>
<li>the mouse cursor hides itself more quickly on media drag on Windows (so warppointer jitter is hidden)</li>
<li>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</li>
<li>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</li>
<li>popup message manager will now consider a minimsed gui as unfocused for the purposes the of the focus BUGFIX option</li>
<li>added a new delayed popup message item to the debug menu for testing minimised popup creation</li>
<li>vacuum maintenance period option is moved, reset to larger default of 30 days</li>
<li>'last session' will now always be updated on client close, even if it is not the default session</li>
</ul>
<li><h3>version 225</h3></li>
<ul>
<li>system:numtags is now much faster when applied to 'local files' or a file repository</li>
<li>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)</li>
<li>refactored fast db integer iterable access code into a context manager</li>
<li>media result building is faster</li>
<li>added namespace-grouped incidental tag sorting</li>
<li>fixed the OpenCV image loader for monochrome images</li>
<li>fixed a thread interaction issue when drawing popup messages</li>
<li>popup messages should no longer flicker while static</li>
<li>popup debug test is richer</li>
<li>fixed editing of some taglists such as in explicit tags and import tag editing</li>
<li>SSL EOF errors are now caught by the networking engine</li>
</ul>
<li><h3>version 224</h3></li>
<ul>
<li>rewrote the static image rendering and caching pipeline -- images are now resized on the fly, and only the master image is cached</li>
<li>all image rendering and zooming is faster and consumes less memory</li>
<li>image rendering now obeys the zoom quality options in the 'media' options page!</li>
<li>static image zooming will take advantage of OpenCL (video card acceleration) wherever available</li>
<li>added an option to the 'media' panel to allow fast but potentially unstable opencv image loading</li>
<li>fixed the tumblr gallery downloader (tumblr put an extra character in their API response, wew)</li>
<li>the debug code profiler now prints more information</li>
<li>cleaned and updated reducing lag help page to match new profiler</li>
<li>'recent' suggested tags are now sorted by recency</li>
<li>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</li>
<li>misc fixes</li>
</ul>
<li><h3>version 223</h3></li>
<ul>
<li>fixed the popup message manager's bad minimise recovery</li>
<li>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)</li>
<li>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</li>
<li>added a 'make some popups' test job to the help->debug menu</li>
<li>siblings will now present in a more service-specific way</li>
<li>many gui elements that display tags are now aware of their tag service for the purpose of collapsing siblings</li>
<li>simplified a whole load of the siblings code</li>
<li>in some conditions, media will load faster</li>
<li>autocomplete tag censorship will now also apply on in a service-specific way in 'all known tags' queries</li>
<li>another remote connection reset exception is now properly caught by the network engine</li>
<li>the embed button will now draw the correct background colour behind transparent thumbnails</li>
<li>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</li>
<li>advanced content update panel will no longer list 'copy' as an action if 'local tags' is the only tag service</li>
<li>fixed a bug when performing a 'go!' action in the advanced content update panel when 'local tags' is the only tag service</li>
</ul>
<li><h3>version 222</h3></li>
<ul>
<li>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</li>
<li>fixed an options update bug when updating to v221 from any version before v220</li>
<li>added support for 'ftypqt' quicktime (usually .mov) video</li>
<li>embed button now uses system gui colours</li>
<li>embed button now puts the thumbnail of the media, if one exists, behind the 'play' button</li>
<li>sped up an inefficient existing mapping check that was slowing new pending mappings for popular tags</li>
<li>'last session' will no longer be listed on the gui session delete menu</li>
<li>cleaned up the main gui's initialisation events--a sizing bug often triggered after system reboot may be fixed</li>
<li>popup messages are initialised in a safer way</li>
<li>popup messages are dismissed in a safer way</li>
<li>popup messages will hide/restore themselves more reliably when the main gui window is minimised/restored</li>
<li>the pending popup message queue is now regularly purged of already deleted messages</li>
<li>new popup messages will no longer raise the main gui window to the top</li>
<li>subscription http errors during the gallery sync phase are now caught and handled gracefully, with exact error text written quietly to the log</li>
<li>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</li>
<li>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</li>
<li>finished flexgrid refactoring</li>
<li>the new automatic flexgrid creation detects subsizers and lines them up more accurately with standard controls</li>
<li>wrapped the different sections of the 'speed and memory' options panel into staticboxes</li>
<li>wrapped the misc crap up top the 'tags' options panel into a neater staticbox</li>
<li>taglists with unusual tags will copy them more reliably and present fewer invalid menu options</li>
<li>misc layout fixes</li>
</ul>
<li><h3>version 221</h3></li>
<ul>
<li>fixed the 8chan thread parser for the new sha256 file urls. legacy links should still work!</li>
<li>created a 'x recent tags' suggested tags control and all the db and so on to go with it</li>
<li>recent tags defaults to off--turn it on under options->tags</li>
<li>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!</li>
<li>cleaned up some garbage zoom code</li>
<li>refactored and harmonised how default zooms are calculated</li>
<li>harmonised and improved how canvas zooms are set</li>
<li>zoom_switch now works for flash</li>
<li>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.</li>
<li>all listctrls across the program have better secondary sort</li>
<li>added an isatty() stub to the HydrusLogger for any unusual error handlers wanting to call it (youtube parser pafy was doing this)</li>
<li>removed some accidental (123) counts from some predicate menu and clipboard rendering</li>
<li>refactored a bunch of redundant flexgrid creation code</li>
<li>did a bunch more flexgrid refactoring</li>
<li>refactored some ugly global variables</li>
<li>misc mvc cleanup</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 220</h3></li>
<ul>
<li>fixed collection selection show action lookup for the preview window</li>
<li>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</li>
<li>(hence setting an import folder to a browser download destination should be more reliable)</li>
<li>rewrote some critical phash generation code that was running extremely slow when importing large pngs with transparency</li>
<li>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)</li>
<li>added zoom in/out/switch to edit shortcut action dropdowns, can't promise it works everywhere</li>
<li>'stopping' a gallery page search will now correctly make sure the search queue is unpaused so it can move on to any subsequent search</li>
<li>the way excess messages are added to the popup message manager is quicker, improving gui responsivity on message spam</li>
<li>fixed a potential race condition when a file import occurs at the same time as client_files rebalancing</li>
<li>fixed a potential race condition when a check_file_integrity db maintenance occurs at the same time as client_files rebalancing</li>
<li>the client will no longer suppress some core debug stuff</li>
<li>fixed an invalid event handler on canvas close bug</li>
<li>fixed a long-time wx locale issue</li>
<li>fixed a misc main gui parent assert issue</li>
<li>fixed some invalid non-wx-thread calllater calls</li>
<li>cleaned up some inartful showmessage calls</li>
<li>cleaned up some datacache init code</li>
<li>fixed some shutdown event handling</li>
<li>generally improved and fixed in some cases how threads signal job status</li>
<li>improved some thread-interaction timings</li>
<li>improved how files and thumbnails are deleted</li>
<li>file imports add their files to the client_files structure in a more sensible way</li>
<li>misc fixes</li>
<li>misc layout fixes</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 219</h3></li>
<ul>
<li>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</li>
<li>added 'half/double zoom' to limit a mime's zoom to only 25%, 50%, 100%, 200%, 400% and so on (png defaults to this)</li>
<li>added placeholders for zoom in/out algorithm quality, but they don't do anything yet</li>
<li>added a listctrl to edit all this to options->media</li>
<li>added a scrappy zoom values option to options->media</li>
<li>cleaned up a bunch of zoom code</li>
<li>added video/mpeg support</li>
<li>fixed some mime layout stuff</li>
<li>duplicate tag predicates across the 'all known tags' space are merged into more accurate (3-5)-type counts</li>
<li>refactored and simplified how predicate counts are merged</li>
<li>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</li>
<li>the advanced content update dialog has a bit of better text to explain this</li>
<li>in prep for a complete rewrite of the image rendering pipeline, merged the fullscreen and preview image caches and cleaned up some related code</li>
<li>added resume recovery to the v215->v216 update code for users for whom this update was interrupted</li>
<li>directory creation is improved across the program</li>
<li>fixed the optimised merge-move file code, which was forgetting to clean up the source when no move was needed</li>
<li>the optmised merge-move directory code will now be much quicker in some situations</li>
<li>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</li>
<li>manual exports, which use copy rather than move, should also be more sensible and faster when repeated</li>
<li>improved database exception rendering, which in some cases was being truncated</li>
<li>misc cleanup</li>
<li>misc small updates to help</li>
</ul>
<li><h3>version 218</h3></li>
<ul>
<li>related tags control now updates on new media events (i.e. if the parent media viewer scrolls to different media)</li>
<li>related tags also initialises with suggestions and refreshes the list on media change</li>
<li>related tags now properly filter out dupe suggestions caused by siblings</li>
<li>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</li>
<li>full size thumbnails can now also be stored in a different location, like resized thumbs, under options->file storage locations</li>
<li>fixed false positive shutdown maintenance checking due to vacuums projected to take longer than the given maintenance time</li>
<li>fixed false positive shutdown maintenance checking due to sqlite_stat1 creeping in</li>
<li>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</li>
<li>removed 'import tags' from file menu--this advanced stuff is now done in and better left to the advanced content update dialog</li>
<li>restoring from an old db backup with a simpler db structure will no longer create conflicts</li>
<li>deleting currently rendering files from the trash should be slightly more reliable</li>
<li>fixed some crash error reporting</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 217</h3></li>
<ul>
<li>fixed some high-res video streaming thread scheduling problems with the new video renderer</li>
<li>fixed a cause of huge memory bloat with greatly upscaled videos</li>
<li>to improve seek response time, streaming buffer for the video renderer has a much smaller cap</li>
<li>renderer throttling calculations are more sensible and reliable</li>
<li>the video renderer discards frames to save time if they happen to still be in its buffer</li>
<li>the video scanbar now displays the current frame buffer around the caret!</li>
<li>video canvas now recycles the same frame blit bitmap to save a little time</li>
<li>wrote a prototype related-tags suggestion 'service' for the suggested tags control</li>
<li>you can turn it on and set some options for it at options->tags, feedback would be appreciated</li>
<li>munged increasingly complicated components of the suggested tags control into a clean and proper self-hiding panel</li>
<li>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</li>
<li>open externally button now shows the media's thumbnail, if it has one</li>
<li>open externally and embed buttons now use hand cursor</li>
<li>the simple path tagging dialog panel now cuts off .jpg extensions from filenames on filename parse</li>
<li>if the string component of a generated file export path already ends in the correct .jpg extension, a second will not be added</li>
<li>ipfs unpin will no longer break if the file was already unpinned</li>
<li>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)</li>
<li>the secondary sort can now be a namespace or rating sort</li>
<li>fixed some potential init problems with some dropdown controls</li>
<li>an edge case object-missing cache retrieval bug is fixed</li>
<li>updated openssl on os x, which might have fixed some problems</li>
<li>updated python on windows, which updated openssl and a bunch of other stuff</li>
<li>updated sqlite on windows</li>
<li>updated linux dev machine to ubuntu 16.04, so a variety of packaged libraries are updated</li>
<li>fixed auto server setup if the client is launched from a windows cmd window</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 216</h3></li>
<ul>
<li>video rendering pipeline rewritten to be much smoother</li>
<li>canvas video render timing rewritten to be more frame accurate and smoother</li>
<li>video rendering pipeline will deal with 100% CPU rendering bottlenecks much better</li>
<li>videocontainers will rush to render towards clicked cursor and then slow down</li>
<li>videocontainers will stop rendering as soon as they are replaced on zoom</li>
<li>videocontainers will stop rendering as soon as their parent canvas is closed</li>
<li>added a video buffer size option to options->speed and memory</li>
<li>client_files subfolders are now split into f, t, and r groups for files, full size thumbnails, and resized thumbnails</li>
<li>added an option to override resized thumbnail storage location under options->file storage locations</li>
<li>added secondary sort option to options->sort/collect</li>
<li>fixed a bug where automatically pended tags could exist on top of current tags, forming redundant (1) (+1) situations</li>
<li>fixed a bug when sorting by namespace and a respective namespaced tag has a sibling that de-namespaces it</li>
<li>relatedly, namespace sorting will now filter correctly by collapsed siblings when those sibling pairs' namespaces differ</li>
<li>and collecting will now collect correctly with sibling pairs where the pairs' namespaces differ</li>
<li>simplified how the server caches its account sessions</li>
<li>improved how the server refreshes specific account sessions</li>
<li>the server now refreshes cached session accounts immediately when an admin actions an account type</li>
<li>neatened a little server db account fetching code</li>
<li>fixed file repository petition denial</li>
<li>added a better catch for upnp addmapping error when the mapping already exists as a port forward</li>
<li>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)</li>
</ul>
<li><h3>version 215</h3></li>
<ul>
<li>you can now set different suggested favourite tags for different tag services</li>
<li>added an option to tags option panel to set fixed suggested tags control width</li>
<li>file import status now works on the new window sizing system, and when launched from main gui uses file_import_status frame key</li>
<li>file import status is now a generic apply/cancel dialog when launched from import folder or subscription dialogs</li>
<li>these file import status dialogs are reenabled for linux and os x, as they work properly now!</li>
<li>very large images will render faster and more beautifully on a freshly launched fullscreen media window</li>
<li>all zooming in will be higher quality, particularly for sharper images</li>
<li>better zooming in code also works for very large animations/video</li>
<li>started a framework for better html parsing</li>
<li>updated sankaku downloader to support 'medium' namespace</li>
<li>analyze calls no longer analyze sqlite_stat1, which isn't needed and sometimes gives awkward maintenance timings</li>
<li>fixed server's deleteorphans, which wasn't working with the new thumbnail names</li>
<li>improved speed and weight of server's deleteorphans</li>
<li>fixed a missing foreign key in file_petitions</li>
<li>improved thread worker creation and job processing scheduling</li>
<li>fixed os x media viewer window float_on_parent status</li>
<li>default gui session now defaults to 'last session'</li>
<li>gui recovers from missing default session on boot more gracefully</li>
<li>crash log code improvements now applied to all boot scripts</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 214</h3></li>
<ul>
<li>wrote a new resizing dialog 'edit' class for simple resizing dialogs</li>
<li>added comprehensive frame size and position options for the new system to the gui options panel</li>
<li>moved review services frame to the new sizing system</li>
<li>windows that initialise maximised will correctly return to their last remembered size and position on a restore event</li>
<li>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</li>
<li>positioning code is a little safer</li>
<li>fixed some missing recalculation of best/min size for wx.notebooks after page change</li>
<li>fixed missing recalculation of scrolledpanel's virtualsize after child wx.notebook's page change</li>
<li>fixed bad parentage for file import status frames</li>
<li>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</li>
<li>improved fuzzy padding on size calculations</li>
<li>refactored and cleaned and harmonised a bunch of the new window resizing code</li>
<li>suggested tags - favourites tag entry in options is now a live autocomplete dropdown</li>
<li>cleaned suggested tags - favourites layout in options</li>
<li>suggested tags listbox now sets its width to exactly fit its tags</li>
<li>improved workflow logic of removing/petitioning siblings and parents (shouldn't get stuck in loops as much now)</li>
<li>tag listboxes will update when tag siblings change</li>
<li>the 'auto-replace siblings' state on manage tags will no longer incorrectly apply to removal actions</li>
<li>import status caches now display errors in a more straightforward way</li>
<li>errors sent to import status caches are now also printed to the log</li>
<li>simplified how database exceptions are caught and displayed</li>
<li>database exceptions now preserve the original exception type</li>
<li>fixed db-side traceback line spacing in database exceptions</li>
<li>improved general database exception rendering</li>
<li>fixed imports for videos with negative start time</li>
<li>deleting videos from the trash that are currently rendering should be more reliable</li>
<li>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</li>
</ul>
<li><h3>version 213</h3></li>
<ul>
<li>created a new tag listbox for the new suggested tags control</li>
<li>added a extremely basic and prototype suggested tags control for favourite tags to options->tags and manage tags dialog</li>
<li>off-screen position detection is now more lenient to account for window managers that position slightly off screen to cut off border</li>
<li>new dialog sizing code adds a little more fuzzy padding on all min size calcs, reducing superfluous scrollbars</li>
<li>hydrus's custom listbook now informs parent scrollable panels of need to recalc scrollbars on page change</li>
<li>the new flexible dialog and frame now catch these events and will expand their size if they need to and have the space</li>
<li>the client options dialog now works on the new sizing system--it will automatically resize when you change pages</li>
<li>some frame resize save event code is improved</li>
<li>the media viewer is no longer aggressive about claiming focus</li>
<li>stacked manage tags panel buttons to allow for thinner dialog</li>
<li>misc dialog cleanup</li>
<li>corrected some bad logic that was excluding transparent gifs from the new thumbnail handling</li>
<li>all gifs and pngs will have their thumbnails regenerated on both the client and server, taking advantage of the recent thumbnail improvements</li>
<li>fixed a bug if you click cancel when choosing an hta path to sync a tag service with on manage tags dialog</li>
<li>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</li>
<li>any superfluous local files/booru services will be deleted on update</li>
</ul>
<li><h3>version 212</h3></li>
<ul>
<li>wrote a neat flexible system for recording and restoring a variety of window size and position information</li>
<li>moved the manage tags dialog to the new size and position system</li>
<li>moved the main gui and the media viewer to the new size and position system</li>
<li>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</li>
<li>the new manage tags frame commits changes immediately!</li>
<li>review services and file import status will now stay on top of the main gui</li>
<li>fixed some bad advanced content update dialog launch code</li>
<li>the hydrus tag archives in hta syncs can now be anywhere, not just in the client_archives folder</li>
<li>whole bunch of hta sync cleanup</li>
<li>paletted images are now dequantized to RGB(A) before thumbnail generation, enhancing scale quality</li>
<li>'LA' (greyscale+transparency) images will now render with correct transparency</li>
<li>png files will now always generate png thumbnails (previously it was just ones with transparency)</li>
<li>trivial options changes are less frequently saved</li>
<li>rule34@booru.org now parses namespaced tags</li>
<li>fixed a bug in thumbnail resize error recovery code</li>
<li>fixed a bug in file repository petitions</li>
<li>updated to Pillow 3.2.0</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 211</h3></li>
<ul>
<li>added options for disk cache init and maintenance to 'speed and memory' page of options</li>
<li>abstracted the manage tags dialog into a general purpose 'apply' dialog and a scrollable manage tags panel</li>
<li>the 'auto-replace entered siblings' checkbox now remembers how it was last set</li>
<li>uncertain sibling tag counts will now appear like 'tag (1,234-1,456)', showing the range of possible results they represent</li>
<li>fixed a bug where siblings would be collapsed inside the tag manager object if a specific tag search domain was set</li>
<li>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</li>
<li>calls to upnpc will now kill the process and raise an exception if it hangs for more than thirty seconds</li>
<li>misc improvements and cleanup</li>
</ul>
<li><h3>version 210</h3></li>
<ul>
<li>manage tags dialog now launches much faster when thousands of thumbs are selected</li>
<li>manage tags dialog now has a prototype 'do this for all' checkbox to make mass selected-tag editing a bit quicker</li>
<li>polished the new disk cache turbo mode, added free memory limits and more options</li>
<li>a bit of disk cache population now runs on client boot, just to kick things off</li>
<li>a full disk cache population now runs before repo sync</li>
<li>the client now keeps about 200MB of itself in the disk cache during idle maintenance</li>
<li>the update files in client_updates are now stored compressed</li>
<li>the log files and 'already running' files are now stored in the db folder, meaning hydrus shouldn't have to write to anything but db dir and temp dir</li>
<li>'already running' files now delete themselves on program close if they can</li>
<li>the log directory is no longer needed</li>
<li>if there is only one booru to select, it will be auto-selected</li>
<li>client failed exit is less likely to hang, more likely to log error</li>
<li>client won't bother to save lest session regularly or on exit if this is not the default startup session</li>
<li>hotfixed an auto-vacuum bug</li>
<li>added a catch for any future vacuum mess-ups to save the db from collapse</li>
<li>added other catches for other close/reinit db calls</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 209</h3></li>
<ul>
<li>the advanced content update dialog can now be !aunched from manage tags, and will only affect the files the dialog was launched for</li>
<li>gave the advanced content update dialog a bit of a makeover</li>
<li>system:ratio now supports 'taller than' and 'wider than' operators</li>
<li>merged client thumbnails into the dynamic file directory structure</li>
<li>the client files manager now manages thumbnail paths exclusively</li>
<li>thumbnail import responsibility moved to the client files manager</li>
<li>thumbnail resizing responsibility moved to the client files manager</li>
<li>orphan clearing and thumbnail regeneration maintenance tasks moved to client files manager</li>
<li>'regenerate thumbnails' now has an 'only do missing' mode</li>
<li>thumbnail regen on resize is faster</li>
<li>copy file to clipboard responsibility moved to the client files manager</li>
<li>media file and thumbnail deletion responsibility moved to the client files manager</li>
<li>if a full size thumbnail is missing but regenerated ok, the client files manager will now only produce one, better error message</li>
<li>cleaned some bad error detection and reporting code</li>
<li>cleaned some regular 'thumbnail size has changed' code</li>
<li>fixed and cleaned a mix of file and thumbnail path code</li>
<li>client files rebalancing and recovery will now efficiently move-merge rather than copy-merge</li>
<li>fixed some bad portable->absolute path normalisation</li>
<li>improved missing external storage location error reporting</li>
<li>server thumbnails are similarly merged into server_files</li>
<li>to keep things simple, the client no longer keeps track of number of local vs. remote thumbnails for file repositories</li>
<li>perceptual hashes are now calculated from original file, not thumbnail, and only for jpegs and pngs (videos had too many black frames etc...)</li>
<li>the vacuum maintenance popup will now only appear if a vacuum can be completed in the time available</li>
<li>slideshows will now yield to any open popup menu, not just those launched from their own canvas</li>
<li>wrote a prototype turbo mode and put it on the debug menu</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 208</h3></li>
<ul>
<li>split the path tagging dialog's complex widgets into simple/advanced panels</li>
<li>added filename and directory 1, 2, and 3 easy tagging, with namespaces to path tagging dialog</li>
<li>fixed up some buggy 'tags just for selected files' behaviour</li>
<li>ipfs directories now support a note</li>
<li>the ipfs directory note can be edited from review services</li>
<li>added 'all namespaced tags' and 'all unnamespaced tags' to the advanced content update/service-wide operation dialog</li>
<li>added 'clear trash' button to trash panel on review services</li>
<li>separate timestamps for file repo upload and ipfs pin will be displayed on single-thumb right-click menu</li>
<li>the correct file domain timestamp will be used for newest/oldest sort</li>
<li>db integrity check now scans all attached database files</li>
<li>broke up mappings petitions in the server db into more efficient 'deleted' and 'petitioned' parts</li>
<li>cleared out some static refs in prep for external db location</li>
<li>simplified a bunch of file mirroring code and improved error handling of directory mirroring</li>
<li>fixed a rare thumbnail resolution calculation bug</li>
<li>misc smaller fixes and cleanup</li>
</ul>
<li><h3>version 207</h3></li>
<ul>
<li>finished ipfs directory creation</li>
<li>ipfs review services pane now shows current directory shares</li>
<li>cleaned up some content event responsibility in ipfs service code</li>
<li>fixed a file download bug when using ipfs 0.4.2</li>
<li>wrote some more ipfs help, for directories</li>
<li>popup messages can now hold arbitrary copy-to-clipboard text content</li>
<li>fixed the new listbook changes for Linux, which was having trouble tracking the client_data inside the sorted listbox</li>
<li>fixed an issue with the custom filter management dialog possibly duping the 'default' entry on ok, making impossible to again launch</li>
<li>offloaded tag parent generation responsibility in the a/c write tag pipeline</li>
<li>added a checkbox to manage tags dialog that will control if siblings are auto-replaced on entry</li>
<li>all the clunky 'add preferred sibling' workflow is removed from the manage tags dialog</li>
<li>fixed incidence tag sort order not initialising properly in the options dialog (and transferring to lexi (namespace) every time)</li>
<li>fixed too-eager quit during shutdown db analyze</li>
<li>fixed the db restorebackup call, which wasn't closing the gui correctly</li>
<li>the manage services dialog will now automatically re-check 'allow zero' on numerical ratings with only one star</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 206</h3></li>
<ul>
<li>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</li>
<li>if the user presses an arrow key to navigate the thumbs when there is no known focus thumb, the first will be assumed</li>
<li>the listbook now supports duplicate display names</li>
<li>services of the same type can now have the same name</li>
<li>cleaned some listbook code</li>
<li>inbox or custom filters will now render first-file animations correctly on initialisation</li>
<li>fixed the 'change' event on the new timedeltabutton, which was not updating the thread checker on dialog ok</li>
<li>subscriptions will now naturally terminate their gallery sync on a 404, rather than dumping out with an error</li>
<li>fixed some false positive 'paths are different' testing in default directory mirroring code (used in db backup, restore) that was slowing these operations down</li>
<li>if database files have the same file and modified timestamp, they won't be re-copied in a backup or restore</li>
<li>client external storage location recovery/rebalancing will now skip over files with the same size and modified date</li>
<li>if you backup the client and have external file storage locations, a popup will remind you to back those locations up manually</li>
<li>did a quick pass over some help stuff, and added a 'can the client manage files from their origial locations' bit to the faq</li>
<li>created a simple no-reward patreon, wrote some help about it, and added links in the usual places</li>
<li>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</li>
<li>main gui menus will be more careful about refreshing themselves when called, hopefully leading to less accidental gui hang on large jobs</li>
<li>text snippets are stored inside the client db in a better way</li>
<li>added flat service directory structure storage support to the client db</li>
<li>fixed a mapping petition rescind sql typo</li>
<li>fixed the v198->v199 server update code</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 205</h3></li>
<ul>
<li>fixed v201->v202 update code, which v204 retroactively broke</li>
<li>wrote a new maintenance routine to regenerate the ac cache if it ends up miscounting or not generating correctly</li>
<li>fixed specific ac_cache generation code, which was double-counting because of recent file-add optimisation</li>
<li>client db maintenance now vacuums attached databases according to their own vacuum clocks</li>
<li>client will more aggressively vacuum and analyze if the client has been idle for an hour</li>
<li>client vacuum now prints success statements, with duration, to the log</li>
<li>analyze now produces an auto-dismissing vacuum-like popup message</li>
<li>the 'is maintenance due' check on shutdown now accounts for the new vacuum logic and includes analyze needs as well</li>
<li>shutdown maintenance will use more of its allotted time if needed</li>
<li>tag archive sync now always filters to local files on initial sync</li>
<li>if you import a tag archive with sha256 hash, you are now given the option to filter to local files or import everything</li>
<li>the occasionally crashtastic opencv.imread call is now completely replaced with PIL, let's see if it's too slow</li>
<li>the new-but-now-redundant 'disable opencv for static images' option is removed as a result</li>
<li>fixed a redirection location parsing bug that was affecting sankaku subs with >1000 initial files</li>
<li>fixed some bad analyze timestamp tracking code</li>
<li>fixed advanced content update code, which still had some mapping service_ids floating around</li>
</ul>
<li><h3>version 204</h3></li>
<ul>
<li>current, deleted, pending, and petitioned mappings are now stored on service-separated dynamic tables</li>
<li>any tag service deletion or reset should now only take a few seconds</li>
<li>fixed a physical file deletion bug that seems to have affected (some?) versions of linux and os x</li>
<li>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</li>
<li>improved misc file deletion code</li>
<li>fixed some multiplatform path conversion, and generally improved how paths are stored and retrieved</li>
<li>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</li>
<li>fixed some numtags search logic</li>
<li>fixed an issue when mixing system:age with any tag-based predicate</li>
<li>media_results db calls no longer require a file domain</li>
<li>'hide inbox and archive preds if either has no files' now defaults to off</li>
<li>added an option to disable OpenCV for gif rendering</li>
<li>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)</li>
</ul>
<li><h3>version 203</h3></li>
<ul>
<li>thumbnail resize now happens on the fly--feel free to change it as often as you like, it takes no time at all</li>
<li>added 'lexicographic (grouped by namespace)' tag sorting to the selection tags box</li>
<li>added an option to disable OpenCV for static images under the media options page</li>
<li>panning with the shortcut keys now pans by a twelfth of the media size or canvas size, whichever is smaller</li>
<li>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</li>
<li>improved some misc analyze code--primary keys are analyzed again</li>
<li>added an explicit analyze command to the client's database maintenance menu</li>
<li>the server now analyzes attached database files</li>
<li>improved an unhelpful server thumbnail error message</li>
<li>added an invalid NULL check-and-skip to hash cross-referencing</li>
<li>fixed some invalid a/c write dropdown search domain initialisation</li>
<li>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</li>
<li>fixed a file import error if a synced tag archive is missing</li>
<li>updated sqlite for windows</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 202</h3></li>
<ul>
<li>fixed a problem with the v198->v199 update step</li>
<li>added a bad error catch in the vacuum step in v200->v201</li>
<li>added some rollback exception handling for unusual situations</li>
<li>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</li>
<li>ac_cache file and tag processing lag and edge-case autocomplete miscounting should be removed as a result</li>
<li>cache generation is optimised for empty services</li>
<li>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</li>
<li>the specific ac_caches' add mappings command is a bit more logically efficient</li>
<li>increased cache size for each attached database</li>
<li>folded all 'attached' db update code into the main update_db routine</li>
<li>folded all 'attached' db init code into the main create_db routine</li>
<li>made the vacuum checking routine safer</li>
<li>reduced analyze log spam</li>
<li>analyze maintenance breaks its larger jobs up better</li>
<li>analyze mainenance now analyzes external databases</li>
<li>the db connection now refreshes every half hour, to regularly clear out journal files</li>
<li>the hydrus db assumes it generally has exclusive control over its db, so it no longer wraps its read-only requests in transactions</li>
<li>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</li>
<li>the youtube video downloader now lists a webm option if youtube provides one (they seem to offer 360p webms on everything(?) now)</li>
<li>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</li>
<li>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</li>
<li>misc cleanup of some server db stuff</li>
<li>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</li>
<li>the autocomplete tag entry will not refresh system pred menu during idle, which should reduce idle gui hang due to db access choke</li>
<li>shutdown repo sync will now report the update summary text and will not spam the intervening statuses to the log</li>
<li>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</li>
<li>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')</li>
<li>if the timestamp is unknown for the current service context, it will not be displayed</li>
<li>file repositories will now only sync thumbnails when their updates are completely synced (to stop 404s from since-deleted files)</li>
<li>fixed a ( 0, 0 ) resize event bug that was sometimes causing borked media containers on media viewer shutdown</li>
<li>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</li>
<li>fixed a bug in hta export if you click cancel on the hash_type choosing dialogs</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 201</h3></li>
<ul>
<li>exported hash and tag master tables to external database files for both client and server</li>
<li>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</li>
<li>removed superfluous rowid column from client mappings tables, saving about another 20% of space</li>
<li>removed superfluous rowid column from server mappings tables, saving about 20% of space</li>
<li>to save time, service mapping counts now only aggregate current mappings, not current and pending</li>
<li>exporting to tag archive now only exports current_mappings, not pending</li>
<li>'all known files' queries will more cleverly discern their current/pending search domain</li>
<li>tag count queries will more cleverly discern their current/pending search domain</li>
<li>cleaned up a lot of mapping-related query code, and any ugly status leftovers from current/pending union</li>
<li>num_namespaces is no longer tracked for tag services</li>
<li>unified clientside service deletion code, fixing several orphan-generation issues</li>
<li>db update will remove all mappings orphans created by a recent tag service deletion</li>
<li>some db settings init is harmonised into one location</li>
<li>fixed up some external db settings init</li>
<li>db connection settings are now applied to all attached db files</li>
<li>db vacuum code is harmonised into one location</li>
<li>vacuum cleans up after itself better</li>
<li>db vacuum is now preceded by a hard drive free space check</li>
<li>db vacuum can now predict how long it will take</li>
<li>if a vacuum fails for an unexpected reason, the db will now recover better</li>
<li>the db recovers from failed backups better</li>
<li>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</li>
<li>server backup will report roughly how long it took, clientside</li>
<li>significantly sped up system-tag-only 'all known files' queries for tag services that have many mappings</li>
<li>significantly sped up system:numtags for =0 or >0 when tag services have many mappings</li>
<li>the status bar has some improved grammar, reporting overall common mime as appropriate</li>
<li>the status bar reports single-thumbnail info text when one file is selected</li>
<li>fixed an image cache key type-matching bug</li>
<li>data cache now tracks objects with dynamic memory usage</li>
<li>the static image rendering-cache relationship has been slightly dejanked</li>
<li>added a couple of checkboxes to the options->gui page to hide/show thumbnail title banner and page indicator</li>
<li>the manage tags censorship dialog now defaults to the 'all known tags' service on init</li>
<li>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</li>
<li>service content package status messages now summarise their final commit status better</li>
<li>this nice new line is printed to the log as a record of repo sync rows/s speed</li>
<li>the client will shut down faster if big jobs are running</li>
</ul>
<li><h3>version 200</h3></li>
<ul>
<li>added 'censor tag' to tag right-click menu</li>
<li>cleaned tag censorship a bit and moved from the gui down to the db layer</li>
<li>fixed tag censorship for multiple services</li>
<li>sped up tag censorship a bit</li>
<li>improved some tag censorship logic for unusual namespace situations</li>
<li>tag censorship now applies to siblings and parents, even in their management dialogs!</li>
<li>fixed the missing fit zoom when scrolling through zooms and when flipping between 100% and fit zoom</li>
<li>cleaned some canvas init code, which was loading bad initial zoom values due to other recent changes</li>
<li>restored standard static image zoom mode for cv-supported images to high, inter_area quality</li>
<li>cleaned up some image/animation container init code</li>
<li>cleaned up some image cache image tracking code</li>
<li>fixed ipfs pin, which was conflicting with the new ac caches</li>
<li>extracted client deleted_mappings to their own db table</li>
<li>prepped mappings processing to work with status-separate mappings tables--it is also a lot cleaner now</li>
<li>because of the deleted_mappings extraction, a bunch of mappings membership tests are much simpler now</li>
<li>upped the db cache size to a semi-ludicrous 150MB, which nonetheless seems to improve processing speed</li>
<li>improved how hydrus databases manage their db file locations</li>
<li>improved how the client and server databases backup/restore</li>
<li>improved some non-local thumbnail fetching code</li>
<li>converted some old YAML stuff to JSON</li>
<li>improved big job polite pausing code</li>
<li>cleaned up some clientside imports, and set the client to only import its server code if it needs to boot a local service</li>
<li>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</li>
<li>added some missing shortcut actions (pan_x and set_media_focus) to the shortcut input entry dialog</li>
<li>tags and siblings that match the current WRITE autocomplete tags entry will no longer have doubled parents!</li>
<li>improved how system:limit is applied to searches</li>
</ul>
<li><h3>version 199</h3></li>
<ul>
<li>added 'all known files' autocomplete caches, so manage tags dialogs' autocompletes should now always appear quickly</li>
<li>the now caches will be created on startup, which may take a few minutes</li>
<li>deleted the old tag autocomplete cache</li>
<li>wrote a faster initialisation routine for all known files caches</li>
<li>fixed an ac_cache cleanup typo</li>
<li>the client's (usually gigantic) mappings table is temporarily extracted to an external db file, which should have numerous benefits and perhaps a few drawbacks for now</li>
<li>the update will take a few more minutes, and will need lots of disk space, to extract the mappings</li>
<li>the server has a very similar external mappings table, so it will also need a while to update, but future admin backup calls will be a lot quicker, due to a much smaller vacuum</li>
<li>greatly optimised a mass-membership calculation in tag processing</li>
<li>reduced some db check-spam timer that was adding up idle cpu time because of recent ac_cache additions</li>
<li>fixed predicate parent sorting</li>
<li>if swfrender fails to generate a swf thumbnail within 60 seconds, the client will now dump out (rather than hanging indefinitely)</li>
<li>fixed some string-selection dialog layout rules</li>
<li>optimised some 'all known files' search queries</li>
<li>subscriptions will now append new urls in oldest->newest order, roughly preserving that order in the internal url cache</li>
<li>the 8chan thread watcher now accepts .json API urls directly</li>
<li>the repository processing routine will handle server_busy errors more gracefully</li>
<li>cleaned and refactored most media viewer 'canvas' code, dejankifying a whole bunch of related stuff and generally improving the object hierarchy</li>
<li>cleaned up and unified a lot of logic and responsibility for idle checking and shutdown maintenance stop time for some big jobs</li>
<li>misc cleanup</li>
<li>misc dialog cleanup</li>
</ul>
<li><h3>version 198</h3></li>
<ul>
<li>ipfs download now parses directory multihashes</li>
<li>ipfs directory trees are thrown up on a new checkbox tree dialog for selection/filtering</li>
<li>created a new download_urls (i.e. multiple urls in one popup) popup call, which the new ipfs directory downloader uses</li>
<li>improved a very inefficient line of sql in the mappings fetch stage of query result building that was also used in the manage tags dialog. on my dev machine, fetching 256 files' mappings dropped from 2.5s to 9ms!</li>
<li>regular gallery pages and 'page of images' pages now have a 'paste input' button to mass-add newline-separated queries from the clipboard</li>
<li>fixed a typo in new txt_tags import folder code</li>
<li>fixed bad autocomplete predicate sorting</li>
<li>fixed some sibling autocomplete search_text matching logic</li>
<li>some byte-based value/range presentation will now correctly convert to bytes, rather than regular decimal numbers</li>
<li>improved linesep splitting code across the program</li>
<li>fixed get/setlabel calls across the program to get/setlabeltext, so ampersand characters are handled properly</li>
<li>wrote an 'all known files' autocomplete cache db and prepped a bunch of code for it--it should be easy to finish next week</li>
<li>added a new regex practise link to the regex dialogs</li>
<li>os x app release should display better on retina displays</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 197</h3></li>
<ul>
<li>on client boot, autocomplete caches for specific file/tag service cross-references are now initialised and populated. progress is shown on the splash window</li>
<li>on client boot, surplus autocomplete caches are deleted</li>
<li>on service add, new autocomplete caches are created</li>
<li>on file add/delete, autocomplete caches are updated</li>
<li>on mappings pend/add/rescind pend/delete, autocomplete caches are updated</li>
<li>the new autocomplete caches are consulted for all non-'all known tags' queries</li>
<li>the old autocomplete cache no longer stores counts for specific file services, and the remaining associated maintenance calls are deleted</li>
<li>databases now start their own mainloops</li>
<li>databases now wait for their mainloops to finish prepping any large caches before they return to the controller</li>
<li>the client database waits for autocomplete caches to finish before it finishes its own mainloop</li>
<li>the padding around flash and the animation bar are included more accurately in some media zoom calculations, which should eliminate some general zoom jankiness and accidental 100% flash zoom coincidences that filled up the whole canvas</li>
<li>fixed some clientside server boot error spam when local server or booru had no port set</li>
<li>account refreshes that fail due to a network error will spam less to the log</li>
<li>fixed .txt unicode tag parsing from import folders, which was not decoding at the correct step</li>
<li>administrator immediate repository syncs now sync thumbnail downloads if needed</li>
<li>service thumbnail sync will no longer superfluously check the presence of thumbnails whose files are local</li>
<li>if a tag entered into the manage tags dialog has a sibling that already exists for all files, then a new 'ignore, as the sibling already exists' choice will appear</li>
<li>fixed an overcounting bug in 'selection tags' when importing and adding tags at the same time</li>
<li>fixed a typo in repository sync status text that was overcounting total number of updates by one</li>
<li>fixed youtube downloader, which broke with the new library on my new dev machine</li>
<li>the way that tags and predicates are filtered against a tag autocomplete text entry is now much faster</li>
<li>bumped up the default content update chunk threshold from 100 rows to 5,000, which seems to be speeding up processing significantly, with a cost to recovery latency--see how it works for you</li>
</ul>
<li><h3>version 196</h3></li>
<ul>
<li>fixed the 8chan thread watcher for boards that host content on media.8ch.net</li>
<li>improved the thread watcher url check logic so it won't lag with the new fix</li>
<li>cleaned up the ac generation code a little</li>
<li>'all known tags' ac counts are now summed from all the known tag services rather than calculated directly (a <= indicator for when these cases overlap will be forthcoming). this speeds up file add/delete, service reset, a/c fetch time, and general tag processing, and reduces the size of the db</li>
<li>ac generation code now deals with 'is the entry text an exact match or not?' better</li>
<li>ac generation code will now no longer produce non-exact-match siblings on an exact match search</li>
<li>ac generation code will no longer save half complete search text into the db as new tags</li>
<li>on update, the a/c cache and its helper table 'existing tags' will be cleaned of a lot of orphans, which may take a few minutes</li>
<li>fixed some bad unicode path parsing when importing files in some OSes, I think!</li>
<li>fixed some bad read autocomplete sibling substitution</li>
<li>fixed a bug where autocomplete predicate lists would not update if the new list was merely a reorder (which can happen in some unusual sibling cases)</li>
<li>fixed the tumblr parser for the subtly new API</li>
<li>import folders now support loading tags from neighbouring .txt files--check the dialog to set up which tag services you would like to import to</li>
<li>the ipfs file downloader now queries DAG object links, determines if the given multihash is a directory or other complicated object, and if so politely dumps out (handling of directory downloads is forthcoming)</li>
<li>some db code is cleaned up</li>
<li>prepared db code for some future subclasses</li>
<li>wrote most of the new ac cache db</li>
<li>misc cleanup</li>
<li>added some browser addon links to the ipfs help</li>
</ul>
<li><h3>version 195</h3></li>
<ul>
<li>wrote up a v1.0 ipfs help page</li>
<li>added ipfs services to 'system:file service'</li>
<li>added a 'multihash prefix' option to ipfs services in 'services->manage services'--it will prefix the given text to multihashes copied to the clipboard (e.g. you could use 'http://127.0.0.1:8080/ipfs/')</li>
<li>fixed a bad repo sync processing bug that was incorrectly assuming packages were completely processed when they often were not</li>
<li>all repos will have their processing timestamps reset on update, forcing a (fast) reprocess of everything they have to cover the previously missed content</li>
<li>fixed 8chan OP image parsing, which was sometimes failing due to absent md5s in the json</li>
<li>widened the splash screen a little more so repo sync text can fit a bit better</li>
<li>a couple of splash status texts are shuffled around</li>
<li>updated to sqlite 3.11.0 for windows</li>
<li>if sqlite3 reports at least version 3.11.0, the db will stick to WAL for large transactions (lke vacuum and content processing), since these are fast now</li>
<li>'namespace:*anything*' will now only appear if the a/c input has no 'subtag' component., e.g. 'character:'</li>
<li>import and export folders now print simple summaries to the log if they do some work</li>
<li>tidied up the 'pages' menu</li>
<li>the various hardcoded 'delete' key events are now also triggered by a backspace on os x</li>
<li>added a rough 'copy known urls' to the regular thumbnail menu. this is prototype, let me know how you would like this information managed and displayed in future</li>
<li>in prep for the new cache layer, the autocomplete dropdowns (and hence search domains of all contexts) no longer support 'all known files' cross referenced with 'all known tags'</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 194</h3></li>
<ul>
<li>ipfs pins and unpins can now be queued up like file repository pending and petitioned, through the regular thumbnail right-click menu, which also reports some/all ipfs pinned selection status</li>
<li>this ipfs action queue is similarly summarised and commited at the normal service 'pending' menu</li>
<li>ipfs's 'pinned', 'to pin', and 'to unpin' statuses are displayed on thumbnails with ipfs-specific icons</li>
<li>you can copy the focussed file's ipfs multihash or all the selected files' ipfs multihashes from the thumbnail menu's share->copy->ipfs multihash</li>
<li>added a .txt tag parser to the 'path tagging' import dialog--it will parse the same sort of txt files the export dialog produces</li>
<li>the client's new 'requests' network code is harmonised, generally improved, and now produces hydrus-compatible exceptions</li>
<li>updated help re the local server and boorus now defaulting to off</li>
<li>db can now remember service-specific filenames (e.g. ipfs multihashes)</li>
<li>cleaned up some overly complicated and confused thumbnail menu code</li>
<li>the pending menu now specifies what it is about to do more plainly</li>
</ul>
<li><h3>version 193</h3></li>
<ul>
<li>the client's local server and local booru can be turned off from their respective management panels, and from now on, the client will initialise with them this way.</li>
<li>if the local server or the local booru are not running, their copy/share commands won't appear in right-click menus</li>
<li>the welcome dialog is now a simpler popup message</li>
<li>incidence sorted tag lists are now sub-sorted by a-z lexicographic</li>
<li>pasting many tags that have siblings to the manage tags dialog will ask you if you want to always preference the sibling, saving time</li>
<li>added a 'clear deleted file records' button to the local file service on the review services window</li>
<li>idle mode now cannot naturally engage within the first two minutes since client boot</li>
<li>the autocomplete search logic will not count namespace characters in the autocomplete character threshold, so typing 'character:a' will not typically trigger a (very laggy) full search</li>
<li>putting a '*' anywhere in an autocomplete search_text will force a full search, ignoring the a/c character threshold</li>
<li>moved some specific 'give gui time to catch up' pause code to the generalised pause/cancel code that a lot of stuff uses, so big jobs should generally be a bit more polite</li>
<li>split the daemon class into two--one for big jobs that remains polite, and another for small jobs that triggers regardless of what else is going on. this should increase responsivity for a number of scenarios</li>
<li>fixed some bad wal failure detection and hence no-wal file creation on some instances of db cursor reinit (usually after service modification). because of now many superfluous no-wal files, existing no-wal files will be deleted on db update</li>
<li>some external storage location errors are improved</li>
<li>some internal and external storage location init is improved.</li>
<li>if an error is detected in the external storage location manager, it will not attempt to rebalance again until the client is rebooted</li>
<li>improved some upnp error catching</li>
<li>cleaned up some misc shutdown thread-gui interaction error spam</li>
<li>did some prep work on a future rewrite of daemon jobs pipeline</li>
<li>split up some mixed file/data/404 'stuff was missing' exception code</li>
</ul>
<li><h3>version 192</h3></li>
<ul>
<li>added a 'check on ok' button to the manage subscriptions dialog's subscription panel</li>
<li>check file integrity now prints missing paths to the log</li>
<li>fixed a typo that was breaking some repo sync download resumes</li>
<li>if an external storage location does not exist on client boot, a popup will say so</li>
<li>resetting a service is now much faster when the service is large</li>
<li>some repo processing stuff is a bit faster</li>
<li>improved some image rendering error handling</li>
<li>some thumbnail errors are recovered from in a better way</li>
<li>improved db update bit rot resilience</li>
<li>improved the vacuum disk space error popup with better explanation of the problem and solution</li>
<li>misc improvements</li>
<li>moved to win 10 dev machine, so several windows libraries are a bit newer</li>
<li>updated to opencv 3.1.0 on windows</li>
</ul>
<li><h3>version 191</h3></li>
<ul>
<li>added ipfs service type</li>
<li>added simple ipfs service gui to manage and review services windows</li>
<li>added simple ipfs download and import to pages menu</li>
<li>split confused service data object into a bunch of more flexible and readable subclasses</li>
<li>raw url downloads are now powered by 'requests' rather than my hacked http engine, and work a hell of a lot better. more to follow</li>
<li>raw url downloads now pause and cancel correctly</li>
<li>optimised some a/c cache clearing in mapping update processing</li>
<li>optimised content update object -> db yield logistics</li>
<li>added no-daemons command line switch to disable all daemons</li>
<li>added no-wal command line switch to disable WAL journalling for the db</li>
<li>if the db fails to read a new WAL-journalled db file it has just created, it will delete the file and attempt to recreate the db, never trying WAL again</li>
<li>changed the way the db writes big repo syncs to disk so that the job can be abandoned much more quickly</li>
<li>improved local file not found error to state the directory or exact path that was the problem</li>
<li>fixed some socket-level error reporting (I think timeout was part of this)</li>
<li>the petition approval and denial client-to-server network commit is broken up into smaller steps to reduce server lag and the overall likelihood of timeouts</li>
<li>subscriptions will no longer add files to their 'successful files' button when the file's url seemed new but it actually was previously deleted</li>
<li>subscriptions will now identify themselves with an additional popup message when they encounter critical errors during sync</li>
<li>editing a clientside service will force a reset of the appropriate session cache, so if you change access key, the account changes will be reflected immediately</li>
<li>the import files dialog will no longer spam error popups on uninteresting or empty files--its 'parsing complete' statement is more verbose instead</li>
<li>the 1.5s gap between parsing complete and the buttons being enabled is also removed. this was supposed to be helpful, to give you a moment to check the files were as expected, but in the end it was just annoying</li>
<li>fixed a typo in some thumbnail error catching and regeneration</li>
<li>improved my network code syncing, so linux and os x releases are cleared out of many old files</li>
<li>misc code cleanup</li>
</ul>
<li><h3>version 190</h3></li>
<ul>
<li>fixed some hashing recalculation in collections that meant they reported no files in many cases</li>
<li>fixed some hashing recalculation when 'remove files' is called</li>
<li>improved the way the client db stores file information and service->file mappings</li>
<li>idle processing jobs will now explicitly wake up as soon as the client naturally switches from not idle to idle</li>
<li>the minimum allowed value for the 'max cpu %' control in the maintenance and processing options panel is now 5%</li>
<li>the maintenance and processing panel is rewritten and laid out a little clearer</li>
<li>'busy' is now 'system busy' on the status bar</li>
<li>force idle and force unbusy are now merged into a new 'force idle' that sticks until you explicitly turn it off</li>
<li>busy and idle states should now update immidiately after closing the manage options dialog</li>
<li>improved exit code event order to be less rude to the OS</li>
<li>improved exit code emergency event handling</li>
<li>fixed a typo that was not appropriately skipping the 'do you want to run shutdown jobs?' dialog</li>
<li>file storage folder rebalancing will now occur on shutdown maintenance</li>
<li>the client now closes down more reliably if the db fails to boot</li>
<li>the client now closes down more reliably if the gui fails to boot</li>
<li>if a client vacuum fails, it'll now also raise the exact error sqlite gave</li>
<li>fixed ctrl+a on the autocomplete dropdown (I think the Insert/IME support change broke it)</li>
<li>the ways the 'read' tag autocomplete control talks to other gui elements is improved</li>
<li>the tag autocompletes will now refresh their results lists on more internal variable changes</li>
<li>the query page management controller manages fewer redundant variables</li>
<li>updated sqlite for windows</li>
<li>the client and server dbs will attempt to change to TRUNCATE journal mode if WAL causes a read disk i/o error</li>
<li>misc code cleanup</li>
</ul>
<li><h3>version 189</h3></li>
<ul>
<li>split the big analyze db calls into individual table/index calls and moved them from update code to the normal maintenance routines</li>
<li>on vacuum, both the client and server dbs will now bump their page size up to 4096 if they are running on windows (server vacuum is triggered by running a backup)</li>
<li>vacuum should be a slightly faster operation for both the client and server</li>
<li>boosted the db cache significantly--we'll see if it makes much difference for things.</li>
<li>the way the selection tags control updates its taglist on increases to its media cache is massively sped up. An update on a 5,000-thumbnail-strong page now typically works in 3ms instead of ~250ms. large import pages should stream new results much more quickly now</li>
<li>sped up some slow hash calculation code that was lagging a variety of large operations</li>
<li>some hash caching responsibility is moved about to make it available for the add_media_results comparison, which now typically works in sub-millisecond time (was about 16ms before)</li>
<li>some sorted media list index recalculation now works faster</li>
<li>some internal media object hashing is now cached, so sorted list index regeneration is a bit faster</li>
<li>some medialist file counting is now superfast</li>
<li>wrote a new pauser object to break big jobs up more conveniently and reduce gui choking</li>
<li>the repo processing db call now uses this pauser</li>
<li>some copy and mirror directory functions now use this pauser</li>
<li>backup and restore code for the client now skips re-copying files if they share the same last modified date and file size</li>
<li>backup code for the server now skips re-copying files if they share the same last modified date and file size</li>
<li>http cannotsendrequest and badstatusline errors will now provoke two reattempts before being raised</li>
<li>socket error 10013 (no access permission, usually due to a firewall) is caught and a nicer error produced</li>
<li>socket error 10054 (remote host reset connection) is caught, and the connection is reattempted twice before being raised</li>
<li>the old giphy API is gone, so I have removed giphy</li>
<li>forced shutdown due to system exit/logoff is handled better</li>
<li>pubsub-related shutdown exceptions are now caught and silenced</li>
<li>an unusual shutdown exception is now caught</li>
<li>fixed a copy subtag menu typo</li>
<li>cleaned some misc hydrus path code</li>
<li>tags that begin with a colon (like ':)' ) will now render correctly in the media canvas background</li>
<li>some misc code cleanup</li>
<li>dropped flvlib since ffmpeg parses flv metadata better anyway</li>
</ul>
<li><h3>version 188</h3></li>
<ul>
<li>if you have custom filters set up, they will now be listed in the normal thumbnail right-click menu, which will expand for them</li>
<li>'refresh account' button's event no longer waits for service response on the gui thread</li>
<li>'refresh account' button on review services will now re-enable if the call fails</li>
<li>added 'hide inbox and archive predicates' checkbox to options->default file system predicates. not sure if this is the best place for it!</li>
<li>system:hash can now query md5, sha1, and sha256</li>
<li>existing pages with system:hash will break on update. since this is such a rare predicate, I assume this is not a problem!</li>
<li>improved db hash cross-reference flexibility</li>
<li>any pausable popups will now explicitly change their text to 'paused' when they are paused</li>
<li>upload pending popup now has a title, so it should pause a little more sanely</li>
<li>regenerate thumbnails popup now has a title, so it should pause a little more sanely</li>
<li>cleaned up some job pause status logic</li>
<li>upload pending now works on a stream, so gigantic uploads will cause fewer hitches and overall problems</li>
<li>upload pending code is cleaned and simplified in several ways, with better error handling and progress reporting</li>
<li>synctotagarchive is now split into a thousand tiny separate jobs and runs on a separate non-db thread. it will no longer lock the db the whole time</li>
<li>synctotagarchive popup should be a lot more responsive and will specifically give the gui some time to catch up after every chunk of data processed</li>
<li>synctotagarchive will update pending tags count (and gui stuff will show the pending tags) as it goes</li>
<li>synctotagarchive is now a pausable and cancellable operation!</li>
<li>large repository sync jobs should be a little less laggy on final commit</li>
<li>system:duration now displays its value as a properly formatted milliseconds time delta, rather than just a big int</li>
<li>profiles now flush to the log immediately</li>
<li>some cpu-heavy daemon recheck periods have been extended to reduce potential hangs on slower computers</li>
<li>some repository sync messaging wording and logic is improved (it should report what it is doing more reliably when you are cpu-busy)</li>
<li>reordered instances of 'waiting politely', so download text/gauge updates should occur before the wait does</li>
<li>some misc 'waiting politely' logic is improved</li>
<li>pixiv ugoira is detected and a better error (that will be ignored by the new sub error throttling code, for instance) is produced</li>
<li>'uninteresting mime' errors have nicer import status note text</li>
<li>fixed the 'thumbnail grid background' custom colour option</li>
</ul>
<li><h3>version 187</h3></li>
<ul>
<li>file->restart now works for linux</li>
<li>the 'call to' thread pool now has a delayed start, which fixes a shutdown hang in linux (and perhaps the other platforms, in one way or another), when the user hits 'forget it' on the 'already running' boot dialog</li>
<li>removed some console error junk on abandoned client boot</li>
<li>if a requested full-size thumbnail is missing, the client will now attempt to regenerate it</li>
<li>if a requested full-size thumbnail does not render (for instance, during a request to generate a resized thumbnail), the client will now attempt to regenerate it</li>
<li>some thumbnail fetching and generation logic is slightly improved</li>
<li>you can now drag animated media around when the inital drag click begins over the animation canvas</li>
<li>ditched some ultimately unhelpful mouse warping when the cursor was near the edge of the media viewer when a drag began</li>
<li>possibly fixed a strange tags_fts4 mirroring problem that has hit some users for a reason I do not understand</li>
<li>import tag options panels will no longer order their tag services randomly</li>
<li>fixed a bug where import folders would not save changes to their explicit tags</li>
<li>fixed a bug where under some circumstances, the gallery importer was attempting to display previously deleted files on the screen, causing errors.</li>
<li>subscriptions will now pause a few seconds after a file import error, which should solve a problem with client hanging when lots and lots of subscription file errors occur one after another</li>
<li>if subscriptions encounter 5 file import errors, they will pause their sync and try continuing later</li>
<li>pixiv manga error handling is improved</li>
<li>bad mime error handling is improved for all importers</li>
<li>fixed an important bug in the import status cache where error texts were not being stored as unicode, so error texts with non-unicode-compatible characters were causing exceptions when the session was being saved to the db or the import status frame was being loaded</li>
<li>existing sessions' import status caches should automatically convert their 'notes' to unicode on update</li>
<li>removed booru db fetch spam when booru download page has no work to do</li>
<li>fixed a typo in regenerate thumbnails popup message</li>
<li>fixed some bad event handling for the gallery page's file limit control</li>
<li>updated some regex defaults to have better multiplatform support and handle a wider array of valid characters</li>
</ul>
<li><h3>version 186</h3></li>
<ul>
<li>Windows release is now 64-bit!</li>
<li>some libraries got updated for windows, to varying minor effects</li>
<li>BeautifulSoup updated to latest version for everything</li>
<li>fixed a warning from newer versions of BeautifulSoup by explicitly using lxml</li>
<li>updated the running_from_source help file to what is currently needed</li>
<li>ffmpeg.exe is also 64-bit</li>
<li>wrote a "reducing program lag" page for the help</li>
<li>added program restart to file menu, doesn't work for linux yet</li>
<li>improved restart code (it was used in restore database, and for some users would not close the parent process down properly)</li>
<li>in the media viewer, page up/down, arrow keys and mouse scroll no longer unhide the mouse</li>
<li>in the media viewer under Windows, dragging no longer unhides the mouse</li>
<li>the implicit delay in the downloader-importers is reduced, so redundant files should always stream in a super fast now</li>
<li>export files dialog will now auto-create missing destination directories</li>
<li>export files dialog will now work off the gui thread (to stop gui hangups on big jobs) and will report its export status through the export button, which will be disabled until the job is finished</li>
<li>changed the new tab/shift+tab shortcuts because they break panel control navigation (I want to make these editable soon):</li>
<li>'fetch autocomplete results now' shortcut is now Ctrl+Space (Raw Control for OS X, not command)</li>
<li>'IME mode toggle' is now Insert</li>
<li>cleaned up how control is handled cross-platform--in general, 'control' is always control for windows and linux, and 'control' is command for os x. this may be incorrect.</li>
<li>json dump errors now report more information about the specific object and its serialisable contents that are causing the problem</li>
<li>clipped sibling/parent reason entry dialog message when lots of pairs are added</li>
<li>fixed a bit of bad logic in sibling/parent dialog->content-update workflow</li>
<li>fixed the thumbnail canvas not refreshing on a canvas shrink caused by expansion of the management panel that doesn't change the thumb column count</li>
<li>fixed emergency boot error reporting for when HydrusData won't load</li>
<li>added some unicode conversion unit tests</li>
</ul>
<li><h3>version 185</h3></li>
<ul>
<li>right clicking on a tag/predicate in the 'selection tags' box or the 'search' list of active predicates provides new intelligent menu options to discard/require/permit/exclude the selected tags from the current search. try it out!</li>
<li>this system also works for namespace and wildcard and system predicates</li>
<li>'predicate a' and its inverse '-predicate a' are no longer considered the same!</li>
<li>namespace and wildcard predicates will now remove their inverts if they are added to the list of active predicates</li>
<li>the way inverse predicates are generated and compared is generalised and improved</li>
<li>fixed 'open a new search page for tag x', which might have been broken?</li>
<li>quick-entering a tag in the 'read' tag autocomplete entry will now always replace with a sibling if one exists</li>
<li>quick-entering a tag in the 'write' tag autocomplete entry will now not replace with a sibling--you will get the option of what you want to do</li>
<li>when this happens, the preferred sibling is labelled on the 'what do you want to do?' popup in the manage tags dialog</li>
<li>also when this happens, the affected file count for add/pend the preferred sibling should now be correct</li>
<li>fixed client support for tags that begin with ':', such as many emoticons. these should now be parsed correctly from websites and keyboard input, keep their leading colon through network and db conversions, and display correctly (for the most part!), despite a little bit of magic to make them work</li>
<li>created a new TimeDelta control to handle finer tuning of optional periods</li>
<li>improved timedelta->pretty string code to support >60s times</li>
<li>manage subscriptions dialog now supports day and hour period, with min period of four hours</li>
<li>manage export folders dialog now supports day/hour/minute period, and the parent dialog displays that time delta appropriately</li>
<li>manage import folders dialog now supports day/hour/minute period, and the parent dialog displays that time delta appropriately</li>
<li>the thread watcher now supports hour/minute/seconds check period</li>
<li>folded 'search' and 'download' menus into 'view' and renamed it 'pages'</li>
<li>'sessions' moved from 'file' to the new 'pages'</li>
<li>moved 'admin' menu to 'services->administrate services'</li>
<li>added 'forced system:limit' to options->speed and memory panel</li>
<li>if several system:limits exist in a search, the minimum will be used</li>
<li>added a checkbox to options->downloading to replace the traffic light waiting politely indicator with text</li>
<li>subscriptions with failed files will say 'x urls in cache, y failed' on their dialog panel</li>
<li>at the gui level, media that superfluously receives a 'pend tag' instruction for a tag that is already current will discard the instruction (this improves the accuracy of the pending tag count during and after the manage tag dialog)</li>
<li>and the same thing for 'petition tag' when the tag isn't already current</li>
<li>any accidentally added 'namespace:'-type tags will be deleted on update</li>
<li>fixed a bad merge in the manage tag siblings dialog's autocomplete dropdown lists</li>
<li>the thread watcher can now deal with urls with a #54951495 post anchor at the end</li>
<li>refactored some controller manager code</li>
<li>removed some useless old code</li>
<li>cleaned some misc code</li>
<li>improved some bad old orphan deletion code</li>
<li>deleted some old code</li>
<li>finished off some old media result streaming code</li>
<li>refactored a bunch of search stuff from clientdata to clientsearch</li>
<li>rewrote some subs gui/help text to be a bit clearer, and added a help link to the dialog</li>
</ul>
<li><h3>version 184</h3></li>
<ul>
<li>added external client_files storage!</li>
<li>you can add external client_files folders in options->file storage locations, further giving them weight</li>
<li>a new daemon will incrementally rebalance your files (and recover orphaned subfolders!) over your different storage locations</li>
<li>you can also force a full rebalance from the new database->maintenance->rebalance file storage</li>
<li>simplified the maintenance and processing panel</li>
<li>the maintenance and processing panel controls now appropriately support being set to 'none'</li>
<li>the 'run jobs on idle?' question is now explicit on the maintenance and processing panel</li>
<li>deselecting 'run jobs on idle/shutdown' will now disable subordinate controls</li>
<li>hitting tab on the autocomplete control now triggers an immediate 'fetch results' call</li>
<li>added a checkbox to options->speed and memory to completely disable automatic autocomplete results fetching (i.e. if you want to manually control a/c result-fetching only with this new tab shortcut)</li>
<li>the new less-laggy autocomplete results fetch won't trigger if the latest query is shorter than the cached query (i.e. you won't get lag when hitting backspace a bunch of times on autocomplete)</li>
<li>hitting shift+tab on the autocomplete control now disables all other key event capture, letting you enter IME without your up/down/enter presses controlling the dropdown list of results</li>
<li>'waiting politely' time is now indicated with a small 'traffic light'-type circle control on all downloader pages</li>
<li>fixed some occasional 'I'll go sit in the top-left corner of the screen and not fix my position' hover window behaviour in Linux</li>
<li>fixed sibling predicate collapse for the 'read' autocomplete dropdown for database results</li>
<li>refactored how predicates are collapsed and sorted to be a bit more sensible</li>
<li>fixed maintenance of local booru data use even if local booru does not receive any requests</li>
<li>improved some service/content update error handling in repository sync</li>
<li>the system:rating value-entry dialog no longer lists its rating services in random order</li>
<li>'open externally' will no longer show for non-local thumbnails' right-click menus</li>
<li>fixed audio/pdf thumbnail display for local booru, although they will be full size for now</li>
<li>harmonised some hex-prefix folder generation code</li>
<li>improved some file and directory copying code</li>
<li>improved upload pending popup message cleanup</li>
<li>added help_dir to hydrusconstants</li>
<li>miscellaneous refactoring</li>
<li>misc cleanup</li>
<li>extracted server-specific services and server resources from the common import path to the server import path</li>
<li>a bit more misc server refactoring</li>
<li>updated a couple of bits of help</li>
</ul>
<li><h3>version 183</h3></li>
<ul>
<li>added swf thumbnail support--it works ok for most swfs!</li>
<li>thumbs for existing swf files will generate on db update for both client and server</li>
<li>the server will also generate thumbnails for video on update, which it seems it was not doing before</li>
<li>rewrote some hash comparisons in thumbnail downloading and thumbnail counting code to be a lot faster and memory efficient</li>
<li>fixed thumbnail count invalidation after service sync</li>
<li>in certain cases, fetching autocomplete tag results from the db will be slightly less laggy</li>
<li>if the autocomplete dropdown has cached or otherwise quickly fetchable results, it will refilter for current input as you type, ignoring the normal character delay (i.e. typing through autocomplete is far less laggy now)</li>
<li>fixed a couple of autocomplete tag-parsing bugs for tags with more than one colon character</li>
<li>fixed some key event selection bugs in the autocomplete taglist when there are no results in the list</li>
<li>if there are no results in the autocomplete taglist, the typically caret-moving key events up/down/home/end will move the caret (rather than being uselessly passed on to the empty taglist)</li>
<li>all profiling now goes through a single location</li>
<li>profiling now also prints extensive information on explicit code callers</li>
<li>fixed db profile mode printing display for the new logger</li>
<li>added new pubsub_profile_mode (AKA log-killer)</li>
<li>all menu popup display and explicit memory cleanup is done through a single location</li>
<li>hover windows will now not show whenever a menu is open</li>
<li>hover windows will now not hide whenever a menu is open (useful when trying to go 'copy tag' off the hover taglist's menu!)</li>
<li>a keyerror bug when force_idle_mode was hit right at program start is fixed</li>
<li>unexpected serverside client disconnections are now caught and further request processing is cancelled</li>
<li>middle clicking on an 'empty' system predicate in the a/c dropdown now will throw up the dialog to enter a value and then pass that filled in system pred onto the new search page</li>
<li>duplicate parents (which can occur with overlapping grandparents) are now collapsed</li>
<li>the upload pending popup message cancels properly after 'server busy' events</li>
<li>whenever the client's services are iterated at the view-level, it will now be in random order, to stop sync bottlenecks choking other services (and anything else like this that might have been occuring)</li>
<li>fixed a bug with double-clicking a tag selection on the the tag censorship taglist</li>
<li>fixed the too-fast frame timings on some videos opencv had a problem parsing</li>
<li>loading many video types will now be just a little faster</li>
<li>remote files will no longer present the right-click menu option to share->copy->file</li>
<li>hitting a shortcut for manage ratings from the media viewer canvas will no longer work if you have no ratings services</li>
<li>the base scripts (client.pyw, server.py and test.py) now have a shebang line to facilitate non-Windows use</li>
<li>laid groundwork for external client_files locations</li>
<li>plenty of misc cleaning and refactoring</li>
</ul>
<li><h3>version 182</h3></li>
<ul>
<li>all printing to the log should now be unicode safe</li>
<li>some other, miscellaneous file-write locations should now be unicode safe</li>
<li>cleaned up some now-redundant unicode-bytestring conversion error handling</li>
<li>the animation scanbar will now draw a little darker while the animation is paused</li>
<li>the client now uses the same new log object as the server, so all logged data will be copied to the terminal, and all logged statements will be timestamped</li>
<li>the client and server's boot and exit statements are more harmonised</li>
<li>server backup is more log-verbose</li>
<li>server backup now makes a simple copy to 'server_backup' folder--no more _backup nonsense</li>
<li>all serverside requests will now print a line in the form 'PORT METHOD PATH HTTP_CODE in TIME TOOK' to the log</li>
<li>page up and down now work (again?) for the thumbnail view. adding shift also works for selecting a page at a time</li>
<li>improved some animation painting logic</li>
<li>improved some rating control painting logic</li>
<li>improved splash screen painting logic</li>
<li>improved all other, misc painting logic--many things should flicker less or render just a little quicker</li>
<li>ratings hover window will no longer re-layout (causing flicker) on ratings set</li>
<li>improved some media canvas painting logic to de-jaggify some zooming</li>
<li>in the manage options dialog, tag-related gui options are moved from the gui panel to the new tags panel</li>
<li>added 'apply all parents to all services' option to the tags panel</li>
<li>the delete key now removes active search predicates and tags in the manage tags dialog</li>
<li>fixed webm link parsing for rule34hentai.net</li>
<li>if you attempt to petition multiple tags, you will now be presented with a dialog asking you if you want to use the same reason for all the petitions</li>
<li>edit import folder dialog now has scrollbars and will resize itself based on your monitor size</li>
<li>if the static ffmpeg executable is absent from the bin folder, the client will now attempt to just call 'ffmpeg' in the normal system path</li>
<li>fixed some 'None media' data calculation bugs when media viewer closed during very fast slideshow</li>
<li>fixed a 'None media' mouse position bug when media viewer closed during very fast slideshow</li>
<li>all wx timers will explicitly stop on exceptions (which should reduce some types of error spam)</li>
<li>refactored client hydrus network session manager to a better position</li>
<li>wrote a better wma/wmv determining test using ffmpeg</li>
<li>refactored cv2 (OpenCV) out of the server's import tree</li>
<li>fixed some server boot crash error handling</li>
<li>cleaned some autocomplete matches-compiling code</li>
<li>deletepath and recyclepath will no longer throw an error if the path does not exist</li>
<li>server_messages folder is no longer referenced in the code--if you have it, feel free to delete it</li>
<li>memory cleans up a little faster after gui page deletion</li>
</ul>
<li><h3>version 181</h3></li>
<ul>
<li>fixed a potential bug in the server's db, very important you update this week if running on Windows</li>
<li>improved some thumbnail page calculation logic</li>
<li>improved some thumbnail page drawing logic</li>
<li>fixed broken vertical resize thumbnail grid issue</li>
<li>fixed some broken 'thumbnails have changed dimensions' event layout recalculation</li>
<li>fixed an idiotic typo bug that was making cached thumbnail page bmps taller or shorter than needed</li>
<li>thumbnail fading and other general thumbnail redraws should be a decent bit faster now</li>
<li>thumbnails have handed off all bmp storage responsibility to the thumbnail cache, which should mean greatly reduced memory use when browsing very large results</li>
<li>thumbnails will now only quick-draw if they have been seen before on the same page, which should reduced some page-refresh waterfall jankiness</li>
<li>thumbnail media panel double buffering seems to be working better</li>
<li>improved some general thumbnail drawing code</li>
<li>the media viewer background taglist will now show petitioned tags</li>
<li>the media viewer hover taglist should now look exactly like the background taglist (sorted lexicographically, no more counts, and now shows petitioned)</li>
<li>the 'selection tags' taglist will now show petitioned tags for 'all known tags' queries</li>
<li>the 'selection tags' taglist and the media viewer background and hover taglists will now count collapsed sibling tags correctly</li>
<li>all taglists now support ctrl+a to select all</li>
<li>improved some generic taglist value-setting code</li>
<li>parents should now only expand for their specific tag services</li>
<li>siblings, parents, and the pending count should now be correctly recalculated upon repository update processing</li>
<li>added 'copy sources' to the import status window's right-click menu so you can copy bad urls or whatever to the clipboard</li>
<li>added 'skip' to the import status window's right-click menu so you can skip urls you don't want</li>
<li>added default booru for rule34hentai.net</li>
<li>under certain circumstances, services with duplicate names could be created--any services like this will be renamed on update, and the loophole where this could happen is now closed</li>
<li>improved a locale number formatting call to ask for unicode</li>
<li>improved newgrounds parsing--mp4/wmv files should now work</li>
<li>the server logger has been formalised into a proper class</li>
<li>fixed some bad static image initialisation in the canvas code that was causing error spam</li>
<li>fixed default import tag options for hentai foundry and pixiv</li>
<li>copy->(bmp|path|local url) will now only appear as an option if the currently focussed media is local</li>
<li>fixed some gallery identifier print code</li>
<li>frames and dialogs will now clip their initial size to the current monitor's resolution--better scrollbar support for cramped windows will follow</li>
<li>updated ffmpeg static builds</li>
<li>updated sqlite command line exes</li>
<li>put off sqlite windows dll update because of critical server db bug</li>
<li>misc code cleanup and redaction</li>
</ul>
<li><h3>version 180</h3></li>
<ul>
<li>middle click on any taglist now does 'open a new search page for selection'</li>
<li>moved mouse idle checking code to the wx thread, which seems to have fixed a serious X11 crash</li>
<li>memory gunk should now be painted over when transparent animations are resized on linux</li>
<li>fixed some page up/down index calculation on the autocomplete dropdown</li>
<li>system predicates will remove themselves from the active predicate list silently again</li>
<li>system predicates will work again in queries that include tags!</li>
<li>greatly improved my string/unicode conversion code</li>
<li>dropped many inefficient unicode conversions from db code</li>
<li>improved the sql-grammar of some specifically efficient db code</li>
<li>removed incorrect unicode conversions from url/network request code</li>
<li>removed unicode conversion code from network response code</li>
<li>all directory iteration should now occur in unicode</li>
<li>all inputted paths should now be converted to unicode</li>
<li>replaced every single ugly raw path concatenation with a better method</li>
<li>improved some bitmap placeholder initialisation that was causing Linux terminal spam</li>
<li>added an option to always hide the preview window to options->gui</li>
<li>the preview window will not accept setmedia calls if it is hidden</li>
<li>if the preview window is actively hidden due to an unsplitting event, it will null its current media</li>
<li>fixed a shutdown calculation that was under-remembering the height of the preview window by four pixels every time</li>
<li>improved thumbnail waterfall code--it should be a little faster. less subject to lag when taxed, and waterfall with more genuine randomness</li>
<li>improved some thumbnail page drawing and clean/dirty conversion code</li>
<li>when pages are dirtied, any to-be-waterfalled thumbnails are cancelled, making superfast scrolling less crashtastic</li>
<li>new dirty thumbnail pages are now generated as needed, rather than precached</li>
<li>subscriptions will now correctly do a polite wait after fetching tags for redundant files</li>
<li>splash screen will now explicitly raise itself to the front on init</li>
<li>the export tag txts function of the export dialog now exports the tag txt to [filename].jpg.txt, rather than [filename].txt</li>
<li>the server now stores its updates in service specific subdirectories, like the client</li>
<li>some importers will better report when they are waiting politely</li>
<li>OS X (and anything else with OpenCV 3.0.0) now uses OpenCV to render gifs by default, falling back to PIL on error (like only Windows used to)</li>
<li>'open externally' from thumbnails now defocusses the preview window</li>
<li>refactored away a bunch of bad global controller references</li>
<li>added some shutdownexceptions</li>
<li>silenced shutdownexception terminal spam</li>
<li>reworded the 'maintenace and processing' options panel a little to explain things better</li>
<li>improved how the base_dir is figured out on program boot</li>
<li>improved serverside 'should I clean dirty updates?' check code</li>
<li>deleted some old code</li>
<li>split path-specific functions off from HydrusFileHandling to HydrusPaths and de-looped my import tree appropriately</li>
<li>general refactoring</li>
</ul>
<li><h3>version 179</h3></li>
<ul>
<li>all tag listboxes support multiple selection</li>
<li>all tag listboxes manipulate their data as sets of tags rather than individual tags</li>
<li>all tag listboxes report to their callbacks as sets of tags</li>
<li>many dialogs and other windows that use tag listboxes now deal with tags as sets</li>
<li>double clicking the media viewer's tag hover window now launches the manage tags dialog</li>
<li>the media viewer's tag hover window now includes (+1) counts like the manage tags dialog--harmonising the underlying canvas tag list will follow</li>
<li>lots of tag/sibling/parent code has been iterated over</li>
<li>ditched some misc redundant code and needlessly tightly coupled object relationships</li>
<li>some bizarro tag sibling dialog code has been rewritten</li>
<li>the autocomplete dropdown for 'writing' will now not expand search results to include parents when the receiving control isn't interested in them or it is otherwise not appropriate</li>
<li>when the autocomplete dropdown does have parents, they will be selected in a group with their child</li>
<li>the autocomplete dropdown for writing now broadcasts 'I'm done with tagging, close the dialog pls' in a better way</li>
<li>'activating' the sibling or parent dialogs' listcontrols (usually by hitting enter) now processes all rows that are selected, not just the first</li>
<li>manage siblings and parents dialogs can now take multiple initialising tags from the taglist right-click menu</li>
<li>removed some redundant listbox code</li>
<li>cleaned up and improved some tag list event processing</li>
<li>cleaned up some taglist right-click menu code</li>
<li>added system-wide mouse idle test to idle calculation. you can set this in files->options->maintenance and processing, and it defaults to ten minutes</li>
<li>import folders now support tag import options' explicit tags for multiple tags to any tag service</li>
<li>existing import folders will be updated to the new version, and if a local tag exists, it will be intserted into the new import tag options</li>
<li>fixed a hentai foundry page parsing bug</li>
<li>the deviant art downloader can now download >1024 pixel width versions of images via the download button (and a bit of cookie magic)</li>
<li>gallery page queries that 404 (like for a non-existent username) will now report 'Gallery 404' rather than spamming the gallery's whole custom 404 html page to the status box</li>
<li>fixed a bad layout flag that meant some namespace checkboxes in tag import options could remain hidden during first panel expand until first mouseover</li>
<li>the import status frame now initialises its status text properly</li>
<li>fixed last week's num_tags optimisations, which accidentally broke num_tags < x for x > 1</li>
<li>the client should work on both OpenCV 2.4.x and 3.0.0 (thankfully, the only difference for our purposes turned out to be some static variable renaming)</li>
<li>the Windows and OS X releases now come with OpenCV 3.0.0</li>
<li>increased the max period of import and export folders to 30 days</li>
<li>the launchfile/directory thread is now a daemon, so the (some flavours of Linux) client can shutdown even if an externally launched file/dir remains open</li>
<li>misc cleanup</li>
</ul>
<li><h3>version 178</h3></li>
<ul>
<li>import tag options now supports 'explicit tags', which will be added to all files imported</li>
<li>the default import tag options system supports explicit tags, and will propagate them to new import tag options objects</li>
<li>the gelbooru 503 Forbidden problem is fixed</li>
<li>all gallery downloaders now send the page_url as http Referer header when fetching their image_urls</li>
<li>pixiv parsing now grabs the correct tags for the image! previously, it was fetching the user's most common tags</li>
<li>for now pixiv manga (which is not yet supported), will be skipped over in the gallery parsing step</li>
<li>fixed a thumbnail drag-and-drop calculation that meant the DnD event would not start if the initial mouse movement went in an up-left direction</li>
<li>bad animated gif frame timing detection is improved</li>
<li>the fallback animated gif frame timing is scaled back to a more reasonable 12fps</li>
<li>fixed a critical bug in the manage ratings dialog that meant any NULL or MIXED numerical rating controls were mistakenly creating 'set rating to 0.0' content updates</li>
<li>fixed an obselete call with the new Pillow library that broke video thumbnail generation</li>
<li>added an explicit file import test to my test suite (previously, this was a manual test, and I did not notice the failed video files last week)</li>
<li>fixed a critical os x crash after navigating media with the manage tags dialog launched from the media viewer</li>
<li>improved speed and memory use of num_tags queries a little bit</li>
<li>reordered the predicate filters in the main query code so that num_tags happens right at the end, where it will run fastest</li>
<li>removed an unnecessary filter from the main query code</li>
<li>removed an accidental doubling of the simple predicate filters from the main query code where the file service domain is specified</li>
<li>improved an important db index and made sure the db uses it everywhere it can. it should speed up most non-'all known tags' queries</li>
<li>harmonised how all the new serialisable JSON objects are sent to and read from the db to a handful of simple general functions</li>
<li>externally opening a file is offloaded to a temporary thread to avoid gui lockups on OS flavours that have delayed 'open this file pls' calls</li>
<li>increased the commonly used read/write 64k block size to 256k, let's see if it reduces some file fragging</li>
<li>clientside hydrus bandwidth reporting is a bit faster and simpler</li>
<li>general code cleanup</li>
<li>general refactoring</li>
<li>a long-term refactoring job that aimed to better decouple the client, server, and hydrus parts is now completely done</li>
<li>delineated the layout of the gallery and page of images management panels a little</li>
<li>updated several links in the help and the program to https</li>
<li>the petition content checkbox list is now significantly taller</li>
<li>cleaned up the static folder a little bit</li>
<li>silenced an unhelpful webm last frame error</li>
</ul>
<li><h3>version 177</h3></li>
<ul>
<li>the old YAML "default advanced tag options" is converted entirely to the new JSON "default import tag options"</li>
<li>created a new JSON object to store new options objects</li>
<li>updated the gui to handle new default import tag options objects</li>
<li>existing default advanced tag options data will be converted to the new system on update</li>
<li>the petition management panel now presents similar petitions from the same user together, with the relevant data rows in a checkbox list, so janitors can approve/deny many similar petitions all at once</li>
<li>the petetion management page no longer auto-loads file results for a petition--you can now see specific results for each sub-petition by double-clicking on them</li>
<li>the server-to-client petition object is converted from yaml to json</li>
<li>the new petition object now stores all the different 'content' rows for the same service/account/reason/action</li>
<li>small content rows are now stored and transmitted in their own object</li>
<li>the network now supports POST JSON requests</li>
<li>account modifications now work through JSON</li>
<li>the account identifier object is converted from yaml to json</li>
<li>in the path tagging dialog, regexes that do not compile will now say so, reporting their short regex error statement</li>
<li>fixed a bug that could sometimes occur when cancelling an ongoing gallery query</li>
<li>cancelling an ongoing gallery query is now reflected in the gui much faster</li>
<li>repositories will not burn CPU cleaning their updates if there are still pending file/mapping petitions to process</li>
<li>repositories will clean updates in smaller bursts to reduce the contiguous server_busy time</li>
<li>fixed drag and drop thumbnail ordering, which actually wasn't working but was accidentally randomly sorted when I tested it!</li>
<li>a certain kind of error during vacuum that can mean two different things is now caught, and automatic vacuums then suspended while the user figures out what is going on</li>
<li>revised some v176 update code that wasn't parsing some downloader pages correctly--now, if a downloader page cannot be updated, it will be discarded</li>
<li>updated to Pillow 3.0.0 on all platforms and fixed some obselete image calls</li>
<li>general code cleanup</li>
<li>general code refactoring</li>
</ul>
<li><h3>version 176</h3></li>
<ul>
<li>the gallery downloader is updated to the new system</li>
<li>the gallery downloader code is generally a bit better all around</li>
<li>the gallery downloader will now remember its urls and file and tag options and paused status and so on throughout a reboot</li>
<li>the gallery downloader supports 'get tags even if file already in db' option</li>
<li>the gallery downloader management panel is updated for the new object. like the other panel updates, it is a little more minimalist</li>
<li>the gallery downloader management panel now has the import status button so you can review your parsed urls and retry them, or copy errors, or whatever</li>
<li>existing gallery downloader pages in gui sessions will semi-convert on the db update</li>
<li>subscriptions are updated to the new system</li>
<li>the subscription code is generally a bit better all around</li>
<li>subscriptions will no longer dump out on a failed file!</li>
<li>subscriptions can now recognise when files are uploaded during a page-walk (which shuffles everything up by one, of course), and recover without assuming it has synced</li>
<li>subscriptions can now be set an initial file limit and a periodic file limit separately</li>
<li>the manage subscriptions dialog is updated for the new object</li>
<li>the manage subscriptions dialog now has the import status button so you can review your parsed urls and retry them, or copy errors, or whatever</li>
<li>existing subscriptions will convert on the db update</li>
<li>subscription popup now shows per-file download progress</li>
<li>boorus that use number of thumbs to advance their gallery page indices can now resume</li>
<li>the thread watcher now obeys 'exclude deleted' status more reliably</li>
<li>the 'page of images' downloader now obeys 'exclude deleted' status more reliably</li>
<li>subscriptions now attempt to recover their sync status when a new file is uploaded during sync</li>
<li>fixed a bug where the thread watcher was not applying the filename namespace to new files, only redundant ones</li>
<li>the old advanced_import_options dictionaries are all updated to the new import_file_options object</li>
<li>improved subscription-dialog-was-opened-while-subs-were-running detection and reaction</li>
<li>the way galleries are identified behind the scenes is now much simpler and more flexible</li>
<li>for now, hentai foundry downloads and subs will no longer support the specific hf filter--they will be unfiltered and sorted newest first, so they work like all the other galleries. I may reintroduce 'sort by popularity' if there is demand for it</li>
<li>a bit of importer status update refactoring and cleanup</li>
<li>fixed some db vacuum maintenance timing that was interfering with gui reporting, so the 'currently vacuuming' popup never appeared until the vacuum was complete</li>
<li>fixed a possible bug for import folders that have a local tag set</li>
<li>splash screen is no longer stay_on_top--if there is demand, I will add an option</li>
<li>fixed a bug in the page deleted detection code</li>
<li>added page hidden detection code, replaced some ambiguous pause code with it</li>
<li>improved pause/play code throughout the program</li>
<li>corrected some bad x/y status texts</li>
<li>for simplicity, the import_file db command now always returns ( status, hash )</li>
<li>for simplicity, the import_file db command no longer takes service_keys_to_tags</li>
<li>plenty of general code cleanup</li>
</ul>
<li><h3>version 175</h3></li>
<ul>
<li>the 'regex shortcuts' button in the path tagging dialog now permits the managing of favourite regex phrases</li>
<li>added 'start animations this % in' options to options->media</li>
<li>animations will no longer clear to white while scanning beyond their immediate frame cache</li>
<li>modifier-click (like shift-click) will now drag animations without altering their pause/play status</li>
<li>the splash screen is a little larger, to better fit db update text in</li>
<li>the splash screen's text is split into two lines, and shutdown repository processing is a bit more verbose</li>
<li>fixed some incorrect dialog text in manage sibling and parent dialogs</li>
<li>rewrote sibling and parent pair update code to deal with unusual situations more gracefully</li>
<li>improved how the new downloader engine saves error notes</li>
<li>the import review frame now lets you copy the selected entries' notes to the clipboard</li>
<li>video files will no longer fail to import in windows because of unicode characters</li>
<li>recycling files with unicode characters on Linux will work more reliably, and when it breaks, it will fail more gracefully</li>
<li>the client and server can now detect and recover from a rare error where a database file is created but never initialised with the appropriate tables</li>
<li>the tag/file upload popup message now dismisses itself after a few seconds, rather than pointlessly lingering</li>
<li>wx event ids used in one-shot menus will be recycled, which should alleviate the 'after a long time, some menu selections stop doing anything' problem</li>
<li>some code cleanup</li>
</ul>
<li><h3>version 174</h3></li>
<ul>
<li>'server stop' and 'server restart' now work!</li>
<li>server will now log everything to console as well as server.log</li>
<li>server log entries will always be prefixed by the time they were made</li>
<li>server shutdown will close services more neatly</li>
<li>server shutdown cannot be triggered multiple times with multiple keyboard interrupts</li>
<li>server initialisation and shutdown is more verbose</li>
<li>server now accepts POST '/shutdown' requests from localhost</li>
<li>fixed a server shutdown bug</li>
<li>mousewheel events that hit the command and ratings hover windows will be propagated to the media viewer (e.g. if you click a rating, you can now scroll immediately to move to the next file without having to refocus the media viewer window)</li>
<li>fixed a bug where zooming out would go immediately to 1% if the media's exact fit zoom was already in the list of default zooms</li>
<li>added 'check db integrity' to database maintenance menu</li>
<li>multiple drag-and-dropped thumbnails will now be listed inside the drag-and-drop object in their hydrus thumbnail order (was previously random)</li>
<li>animations will now pause/play correctly during inbox filtering</li>
<li>most client errors now cause a 1 second wait on behalf of the caller, which should bottleneck error spam when it happens</li>
<li>fixed some buggy display and rescind behaviour with pre-dialog-existing petitions in the manage parents and siblings dialogs</li>
<li>the manage parents and siblings dialogs will now not attempt to remove/petition/rescind a pair if the entered list of pairs has entirely new entries</li>
<li>the manage parents and siblings dialogs will now attempt to maintain their sort order after you change some pairs</li>
<li>generally cleaned some parent and sibling dialog code</li>
<li>added option to options->files and trash for whether to use your OS's recycle bin</li>
<li>system:mime text now specifies specific mime group if appropriate, or otherwise lists every mime if >1 selected ('system:mime is specified' is dropped)</li>
<li>hydrus repositories will sometimes catch and recover from zero-length update files</li>
<li>hydrus repositories will catch processing parsing errors and pause when they happen</li>
<li>the new hdd, page of images, and thread watcher import daemons will tidy themselves up if their accompanying pages are completely deleted</li>
<li>improved how daemons shut down</li>
<li>improved client shutdown logic and speed</li>
<li>some misc code cleaning</li>
<li>more general code cleanup</li>
</ul>
<li><h3>version 173</h3></li>
<ul>
<li>converted import folders to the new system</li>
<li>import folders now have names, so you can have several pointing to the same location</li>
<li>import folders can filter by mime</li>
<li>import folders now have separate actions for successful, redundant, deleted, and failed files</li>
<li>these actions can be 'leave alone', 'delete' or 'move to location'</li>
<li>import folders now support import file options</li>
<li>import folders can now be individually paused</li>
<li>import folders' popups are individually optional</li>
<li>import folder edit dialog provides a path cache button, like new download pages, to let you review the paths it is remembering</li>
<li>existing import folders will be roughly converted to the new system on update, but they will be in a paused state, so you can check they are what you want</li>
<li>created new mime selection control</li>
<li>mime selection control added to mime system predicate selection dialog, so you can now search by mime more specifically</li>
<li>updated some mime system pred code to deal with this change</li>
<li>a single non-dragging left-click on an animation now pause/plays!</li>
<li>the animation scanbar will now only resume playing the video/flash after a scanning click/drag if it was playing before the drag began.</li>
<li>added a 'polite wait' option to options->downloading. this is temporary until I write a better clientside bandwidth throttling system</li>
<li>added a 'remove/petition all tags' button to the manage tags dialog to make mistakes easier to clean up</li>
<li>added 'confirm send to trash' to options->gui</li>
<li>added 'confirm archive/inbox' to options->gui</li>
<li>added a simple 'export tags in .txts?' button to the export dialog. In future, I will expand this to do service-specific exports and also add it to regular export folders</li>
<li>fixed some invalid name error handling in the manage dialogs</li>
<li>fixed a bug that sometimes occured at the end of an admin immediate sync</li>
<li>fixed a rare shutdown-order error in video rendering</li>
<li>fixed an animation bar initialisation error that was causing error spam on some videos/flash</li>
<li>general import code cleanup</li>
<li>cleared up admin-side petition wording and presentation</li>
<li>improved the threaded workflow and error reporting of the admin-side petition page</li>
<li>the thread watcher now reports its number of next seconds until the next check in properly formatted time</li>
</ul>
<li><h3>version 172</h3></li>
<ul>
<li>the server no longer needs wx!</li>
<li>the server now runs from command line</li>
<li>the server is now .py, not .pyw!</li>
<li>run 'server help' for more info</li>
<li>improved how the controllers start</li>
<li>improved how the controllers stop</li>
<li>improved controller boot error handling</li>
<li>improved how pages close</li>
<li>general controller code cleanup</li>
<li>general server code cleanup</li>
<li>fixed the always_on_shutdown (without asking) option, which was asking anyway</li>
<li>removed a debug statement in isalreadyrunning code, whoops!</li>
<li>improved isalreadyrunning detection. it should work breddy gud now</li>
<li>added gallery file limit to new 'downloading' options page, which folds in the old thread checker options as well</li>
<li>added option to always embed the autocomplete dropdown window (rather than having it a floating window), which is now default on for Linux and OS X</li>
<li>manage services now supports two kinds of service reset for repositories</li>
<li>the service reset buttons now only fire on dialog ok</li>
<li>service reset will try, as cpu allows, to update its progress in a message popup window</li>
<li>administrators now have a 'sync now' button on the review services window that lets you catch up immediately to the service without having to wait for the normal update time (this will burn cpu time serverside, so be careful!)</li>
<li>fixed a bug when searching boorus with unicode-16 characters</li>
<li>the client updates directory is neater</li>
<li>'system busy' status is now shown on the status bar</li>
<li>'force unbusy' added to debug menu</li>
<li>invalid characters in export filenames will now be replaced by underscores</li>
<li>fixed a bug where rating services' cached file counts were not decrementing on de-ratings</li>
<li>rating services' cached file counts are reset on update</li>
<li>hover windows will pop in over video again, but will not if the mouse is _near_ the animation bar</li>
<li>searching for ':' in the autocomplete dropdown will no longer search the db for every single tag jej</li>
<li>improved some server_busy logic</li>
<li>improved some server shutdown logic</li>
</ul>
<li><h3>version 171</h3></li>
<ul>
<li>improved isalreadyrunning code</li>
<li>fixed isalreadyrunning code for the Linux frozen build</li>
<li>the client's isalreadyrunning splash check will respond more quickly if you choose to wait</li>
<li>repository processing sync will no longer update the frontend, which approx doubles its speed</li>
<li>repository processing sync now only occurs when the client is idle, so it won't slow your browsing down</li>
<li>if you catch the client while it is processing, doing pretty much any action will make it quit out nice and quick</li>
<li>repository processing sync now occurs at a lower db level, meaning less laggy popup ui update and overall faster processing time</li>
<li>repository popup disappears after a few seconds once it is done--if you leave your client on all the time, you probably won't see it again.</li>
<li>split 'maintenance and memory' options panel into 'maintenance and processing' and 'speed and memory'</li>
<li>added 'cpu busy' option to options->maintenance and processing</li>
<li>added 'run stuff on shutdown' option to options->maintenance and processing to set whether pending db maintenance and repo processing can happen on shutdown</li>
<li>added 'max minutes on shutdown' option to options->maintenance and processing to limit how much shutdown processing can be done in one sitting</li>
<li>repositories can now sync on shutdown--they will report through the splash window</li>
<li>shutdown maintenance is checked and run in a better way</li>
<li>moved to a two-stage shutdown procedure</li>
<li>daemons are better kept track of, and they talk to the controller in a better way</li>
<li>daemons shut down in a better way</li>
<li>improved a bunch of idle/busy/just woke from sleep logic</li>
<li>improved how the controller maintains the db and memory</li>
<li>improved force_idle mode in the client</li>
<li>idle calculation is more accurate, and resets on more user-driven events</li>
<li>improved responsivity for processing popup</li>
<li>fixed a serious bug that was counting some unprocessed content as done when the service processing window was cancelled</li>
<li>misc code improvements</li>
<li>misc maintenance code improvements</li>
<li>fixed a bug with parentless center-positioned dialogs not sizing themselves properly</li>
<li>removed delete_orphans timespan param option</li>
<li>fixed bugs selecting and media-viewering collected media</li>
<li>fixed a missing thumbnail selection bug</li>
<li>fixed some os x dialog interaction and z-order problems when the splash screen is open</li>
<li>os x splash screen is no longer stay_on_top</li>
<li>fixed the 110.00% display bug</li>
<li>removed wx from pubsub code</li>
<li>pubsubs now route through the controller</li>
<li>reduced some pubsub overhead, we'll see if it smooths out some of the gritty stuff</li>
<li>misc thread worker pool is now managed by and routed through controller</li>
<li>some other thread-wx interaction is now routed through clientcontroller</li>
<li>db now interacts with controller directly, not through wx</li>
<li>all other indirect references to controller go through hydrusglobals, not wx</li>
<li>refactored everything wx away from everything hydrus/server except controller code</li>
<li>about window now says the client's network version</li>
</ul>
<li><h3>version 170</h3></li>
<ul>
<li>added media viewer mime options to file->options->media page</li>
<li>you can now set animated mimes to start in a paused state</li>
<li>you can now set the client to 'open externally' any media from a thumbnail activation</li>
<li>reworked the way the media viewer generalises and displays its media to obey these new options</li>
<li>improved some misc zoom code</li>
<li>flv video is now rendered natively by default</li>
<li>audio now defaults to an 'open externally' button</li>
<li>renamed the nebulous 'url' download page option to 'page of images'</li>
<li>moved the 'page of images' download page to the new system--it'll now remember its state through a restart, has a the detailed import status button, all that stuff</li>
<li>'page of images' download page now supports checkboxes to customise which types of links it will search for</li>
<li>you can now close and rename page tabs from a right-click menu!</li>
<li>deviant art parser now works for mature images</li>
<li>improved deviant art tag and image page parsing</li>
<li>added 'remove filtered files' option to file->options->files and trash</li>
<li>improved UPnP dialog error reporting for when external IP cannot be parsed and for when external IP is reported as 0.0.0.0</li>
<li>added an external ip/host override option to file->options->connection page</li>
<li>whenever the client or server deletes a regular file or directory, it will now send it to the recycle bin</li>
<li>files stored in the db are no longer read-only</li>
<li>existing files stored in the db will attempt to be set read&write on update</li>
<li>wrapped undo manager access in a lock, which may stop index bugs when a lot of stuff is going on</li>
<li>fixed a bug in download progress->progress gauge hook when content length was absent</li>
<li>removed previously entered zero-length namespaced tags (like 'wallpaper:') from client and server</li>
<li>moved 'client/server already running' check from db access test to more reliable process list review</li>
<li>improved 'client is already running' mini-dialog</li>
<li>added cpu percent utilisation check (if any cores >50%, dump out) to idle check</li>
<li>if the 'canvas zoom' value exactly matches a default zoom, it will not be inserted into the list of zooms to scroll through</li>
<li>the 'canvas zoom' will be displayed with hundreds of a percent accuracy</li>
<li>the new thread and hdd import pages will now obey page-global pause/resume events</li>
<li>the new thread and hdd import pages now have the 'sort by' dropdown</li>
<li>the new thread import page supports set_search_focus event</li>
<li>added import tag options info to 'getting started - tags' help page</li>
<li>relabelled the path tagging button on the import files dialog to something that made more sense</li>
<li>might have patched an unusual subscription error reporting bug</li>
<li>updated sqlite on windows--db should be a bit faster</li>
<li>updated pillow on all platforms</li>
<li>compiled a new python for my os x build with newer openssl library, which should fix some ssl problems people were having</li>
<li>updated some deprecated directory parsing code</li>
<li>general code cleanup</li>
</ul>
<li><h3>version 169</h3></li>
<ul>
<li>revised all the help files</li>
<li>updated out of date screenshots in the help files</li>
<li>added some more screenshots to the help's index</li>
<li>cleaned out unused help images</li>
<li>fixed some missing service error catching in the custom filter setup dialog</li>
<li>fixed random reordering of paths from import files selection dialog</li>
<li>logged errors should now be prefixed by the time they occured</li>
<li>errors should now be more reliably printed to the log</li>
<li>fixed a problem with e621 queries that included '/'</li>
<li>improved some server temp file error handling</li>
<li>fixed a typo that was throwing errors when trash settings were set to 'no limit'</li>
</ul>
<li><h3>version 168</h3></li>
<ul>
<li>thread watcher is moved to the new system--it will remember its previous state</li>
<li>thread watcher has more compact, flexible gui layout</li>
<li>thread watcher now supports file import status button, so failures can be reattempted</li>
<li>thread watcher check now button has improved logic</li>
<li>import tag options and import file options gui controls now plug into the new system</li>
<li>thread watcher will now remember its tag and file options</li>
<li>thread watcher will accept changes to its tag and file options after it is started</li>
<li>fixed a bug in import tag options deserialisation</li>
<li>hdd and thread watcher static texts will flicker less</li>
<li>improved some network transfer gui reporting code</li>
<li>send to trash, delete from trash, and undelete now all have different icons in the command hover window</li>
<li>added open externally button to command hover window</li>
<li>opening an animated gif or movie externally from the media viewer will pause it in the client</li>
<li>share->copy->image added to media viewer for static images</li>
<li>fixed a typo bug in copy 'image' to clipboard</li>
<li>fixed a typo in external ip discovery that was causing errors for local booru external link generation</li>
<li>improved external ip discovery error recovery</li>
<li>in prep for the de-wxing of the server, refactored a lot of code so the server and client code don't import each other at any point</li>
<li>if an attempt to close the client is aborted (e.g. because of an active import page), the exit splash screen will now destroy itself</li>
</ul>
<li><h3>version 167</h3></li>
<ul>
<li>created gui control to show file import status</li>
<li>added a button to launch this control, wrapped in its own frame, to the hdd import page</li>
<li>you can now drag and drop thumbnails out of the client for quick export!</li>
<li>the client will catch internal drag and drops, and won't interpret that as an import request</li>
<li>dragging files onto the client will now always show the 'copy' mouse icon</li>
<li>some thumbnail generation code is a bit quicker--resized thumbs are now always generated on their first viewing</li>
<li>if you use 200x200 thumbnails, the client won't bother to generate resized thumbs, saving space and time</li>
<li>the text entry dialog will now check its button status on a non-keyboard related text-change (e.g. selecting paste from the right-click menu)</li>
<li>the popup created by downloading a raw url or a youtube video will finish itself properly when the import attempt is completed, removing the pause and cancel buttons and making the popup dismissable</li>
<li>the splash screen will now stay on top</li>
<li>the password entry dialog will also stay on top</li>
<li>you can now copy the md5, sha1, or sha512 hashes of local files from the normal share->copy->hash menu</li>
<li>fixed an overly broad deleted/redundant test on md5/url pre-import status checks</li>
<li>options to remember size of manage tags and position of both manage tags and ratings dialogs added to file->options->gui</li>
<li>updated some of the help</li>
</ul>
<li><h3>version 166</h3></li>
<ul>
<li>created new object to hold hdd import information</li>
<li>created new object to hold generalised import file status</li>
<li>moved hdd management controller to the new system</li>
<li>moved hdd management gui to the new system</li>
<li>hdd imports will now remember their import and pause status through a session change</li>
<li>misc import code improvements</li>
<li>hydrus client is getting out of the zip business--zips are no longer parsed for import nor able to be created for export</li>
<li>import and export code is simpler</li>
<li>repository file downloading daemon will now throw up a small auto-dismissing popup when it downloads files</li>
<li>repository file downloading daemon will respond to new downloads much quicker than previously</li>
<li>if a repsitory is in the process of backing up when it receives a request, it will now return a 503 'server temporarily busy' error (rather than timing out)</li>
<li>the client can now catch and handle these 503 errors gracefully</li>
<li>backing up will no longer block the client's gui, and it will no longer timeout if the operation takes more than ten minutes</li>
<li>some networking code is a little simpler</li>
<li>added 'select local files' and 'select trash' to thumbnail right click menu</li>
<li>'cancel download' added to file repository submenu of thumbnail right click menu</li>
<li>some buggy listbox resize behaviour (scrollbars not disappearing and occasional layout and drawing update fail) has been fixed</li>
</ul>
<li><h3>version 165</h3></li>
<ul>
<li>added a db table to track when a file was sent to trash</li>
<li>added an option for whether trashed files are removed from view</li>
<li>added a max age to trashed files</li>
<li>added a max size to the trash</li>
<li>added a daemon to maintain the trash</li>
<li>improved some generic deleted shortcut logic, so delete key will present option to delete from trash if appropriate</li>
<li>shift+delete will now undelete</li>
<li>misc trash code improvements</li>
<li>thumbnails deleted from the trash will accurately remove their inbox status icons</li>
<li>images downloaded from file repositories will accurately add inbox status icons</li>
<li>reduced chance of problems when trying to delete media from the trash when it is currently being rendered</li>
<li>further reduced this chance</li>
<li>removed redundant undelete code, folded it into add/delete code</li>
<li>the media viewer will now remove files deleted from the trash in all cases, even when launched from a file repository search</li>
<li>significantly improved how animations figure out when to put frames on screen. these timings should be much more accurate, slowing down only if your CPU can't keep up</li>
<li>8chan thread watcher now parses all files from multiple file posts</li>
<li>if a booru provides a link starting with 'Download PNG', which refers to the original source png, that will be preferred over the jpg (konachan and yande.re, which run Moebooru, do this)</li>
<li>booru parser is now a little more liberal in parsing for the image link</li>
<li>yande.re booru support is added by default</li>
<li>fixed some local/remote state code, which was breaking file repository searches in several ways</li>
<li>improved error handling in repository file download daemon</li>
<li>cleaned up manage options dialog code</li>
<li>reduced min size of the media caches in manage options dialog</li>
<li>moved thumbnail size to 'maintenance and memory'</li>
<li>added better error handling to repositories that cannot find an update file during processing</li>
<li>repositories that have such errors will pause to give the user a chance to figure out a solution</li>
<li>misc code improvements</li>
<li>fixed a bug where file repository downloads were not importing if the file had once been deleted</li>
<li>dropped the clever indices from last week--sqlite had too much trouble with them. I will reform my db tables next week to get around the whole issue. for now, I have reintroduced the bulky index and forced sqlite to use it where appropriate</li>
<li>added a test for collecting pending tag data</li>
<li>tags in the form 'text:', which would sometimes slip through when typing quickly, are now not processed</li>
<li>improved tag cleaning error reporting</li>
<li>improved when special wildcard and namespace predicates are provided</li>
<li>namespace predicates now display as 'namespace:*anything*'</li>
<li>fixed a bug when launching the media viewer from collected results</li>
<li>fixed a command hover window layout bug that was putting namespace text in incorrect places</li>
<li>fixed a bug that was causing the new client-wide processing phase option not to work because, ironically, its calculation was out of phase</li>
<li>review services will now state how many updates have been processed</li>
<li>review services will specify if an update is imminently due, rather than saying the repo is fully synched</li>
<li>fixed a review services layout bug that was misaligning text after an account or data usage update</li>
<li>fixed a bug in system:similar_to serialisation, so pages with this predicate can now be saved to a session</li>
<li>fixed the same bug for system:hash</li>
<li>vacuum should be a bit politer about waiting for its popup message to appear</li>
<li>database maintenance won't run while a repository is synchronising</li>
</ul>
<li><h3>version 164</h3></li>
<ul>
<li>rewrote the drawing code for the listbox that displays tags in various ways to be a lot faster and more memory efficient</li>
<li>updated one new client mapping index that wasn't working quite as I wanted it to something more clever</li>
<li>db will be a little smaller and mappings stuff will be even faster</li>
<li>merged the two ratings system predicate input panels, so you can now select like/dislike and numerical ratings system predicates at the same time</li>
<li>fixed booru download page serialisation, which means they will save to sessions</li>
<li>prototyped trash service</li>
<li>locally deleted files will now be sent to trash</li>
<li>locally deleted files will not be removed from the existing search</li>
<li>files can be permanently deleted from trash, which will also immediately physically delete them from your hdd</li>
<li>files can be restored from trash back to the local file service</li>
<li>inbox state is now more separate from the local file service, so it will be remembered through a visit to the trash</li>
<li>improved delete code all around</li>
<li>general inbox/archive db code improvements</li>
<li>misc content update pipeline improvements</li>
<li>optimised mass-adding of files to a service (for instance, when (un)deleting a whole bunch of files!)</li>
<li>delete orphans daemon is removed--it will be replaced by a more thorough single-shot hdd/db purge like 'check file integrity'</li>
<li>files are not yet automatically removed from the trash--I will add that next week.</li>
<li>updated db access info in db folder</li>
<li>added sqlite command line executable to db folder for all platforms</li>
<li>bit of code cleaning</li>
<li>cleaned up some gui error reporting</li>
<li>might have fixed a service cache bug in the db that was causing double bandwidth reports and possible looping sync behaviour</li>
</ul>
<li><h3>version 163</h3></li>
<ul>
<li>reconfigured some important mapping indices in the client db to reduce search time for many common tag operations</li>
<li>the new indices have also sped up tag processing significantly</li>
<li>added an automatic db optimiser analyzer run whenever the db updates</li>
<li>pixiv now downloads the largest version of an image again</li>
<li>pixiv tag parsing improved</li>
<li>added support for some unusual mp4 types</li>
<li>the noquery media panel is removed. pages with no query status will now show a normal thumbnail panel with 0 files, rather than 'None' files.</li>
<li>check file integrity will now report number of missing files and incorrect files separately</li>
<li>check file integrity can now take a folder to move incorrect files, rather than deleting them</li>
<li>when you try to pend a tag with a sibling in the manage tags dialog, you will be prompted with the chance to pend the sibling instead</li>
<li>the rating system predicate dialog now allows for easier (and multiple!) selection of like rating parameters</li>
<li>the rating system predicate dialog now allows for easier (and multiple!) selection of numerical rating parameters</li>
<li>the rating system predicate dialog now offers correct predicates for 'zero allowed' numerical rating services</li>
<li>some bmp icon code cleanup</li>
<li>changed pause and cancel buttons to bitmap buttons</li>
<li>cleaned up a lot of pause and cancel code</li>
<li>now, when popups are paused, they will hide their details</li>
<li>popups that are cancelled by a dialog change (for instance when subscriptions are changed while subs are processing) will now dismiss themselves after a few seconds</li>
<li>during repository sync, http failures are recovered from more gracefully, and any pending processing will continue</li>
<li>the repository update downloading and processing loops will wait on the db and gui more efficiently</li>
<li>fixed a bug in the way the manage export folders dialog was testing existence of subdirectories</li>
<li>general code cleanup</li>
<li>bit more code cleanup</li>
<li>some good daemon refactoring</li>
</ul>
<li><h3>version 162</h3></li>
<ul>
<li>on update, all previous gui sessions are deleted!</li>
<li>on update, all export folders are deleted!</li>
<li>made an important efficiency improvement to the new serialisation protocol--network version is incremented as a result</li>
<li>finished extracting management data from management panel</li>
<li>management data is wrapped in management controller, a new JSONable class</li>
<li>pages collapsed to a single class</li>
<li>page and management panel instantiation completely rewritten for the new system</li>
<li>created new JSONable guisession class for better session management</li>
<li>db is updated to store all this stuff in JSON rather than YAML</li>
<li>session loading is much less bloaty for clients with many sessions</li>
<li>all page types are now serialisable and hence addable to a session</li>
<li>moved predicates to JSON</li>
<li>moved filesearchcontext to JSON</li>
<li>autocomplete dropdowns now remember their tag service, include current, include pending and synchronised status over sessions</li>
<li>export folders now remember their file and tag services, and also include current and pending status</li>
<li>some general improvements to export folder code</li>
<li>cleanup of export folder dialog code</li>
<li>added a test for export folders</li>
<li>some general refactoring</li>
<li>some general cleaning</li>
<li>significant refactoring of predicate variables</li>
<li>fixed a bug in multi-version update from before v154</li>
<li>if you do not have any ratings services, the 'manage->tags/ratings' submenu will now just be 'manage tags'</li>
<li>changed some thumbnail menu entries to say 'selected files' instead of 'all files', which is more accurate, see if you like it</li>
</ul>
<li><h3>version 161</h3></li>
<ul>
<li>updated windows python, sqlite and ffmpeg</li>
<li>added linux ffmpeg binary to the executable build</li>
<li>updated os x ffmpeg binary</li>
<li>animation is generally working for linux and os x</li>
<li>fixed some linux/os x ffmpeg calls</li>
<li>fixed webm import for linux/os x</li>
<li>webms work great</li>
<li>moved to rendering gifs with PIL by default on linux and os x, which has bad palette support but renders more reliably</li>
<li>the animation scanbar position caret is now visible on linux and os x</li>
<li>fixed some timing/resume issues the animation scanbar on os x</li>
<li>the old mediactrl video embed is removed</li>
<li>mp4, wmv, mkv are added to native rendering control, no audio yet (just like webm)</li>
<li>flv and flash will now have a little vertical padding on max zoom to make vertical hover windows easier to access</li>
<li>changed database to a faster synchronisation mode</li>
<li>tuned update processing daemon for more accurate time calculations and faster baseline speed, even if that knocks gui latency a bit</li>
<li>fixed rows/s being thrown wildly off by long pauses</li>
<li>made update processing daemon more reactive</li>
<li>improved some of the flow and generally cleaned the update processing daemon</li>
<li>added processing phase option to regular delay to processing of updates (this is useful if you run multiple clients and don't want them to process at the same time)</li>
<li>fixed e621 tag parsing</li>
<li>completely rewrote the focus engine behind the autocomplete dropdown</li>
<li>fixed a bunch of autocomplete dropdown's generally buggy behaviour for linux and os x</li>
<li>fixed autocomplete dropdown's display, sizing, and positioning for linux and os x</li>
<li>fixed autocomplete dropdown selecting system predicates with the keyboard</li>
<li>fixed autocomplete dropdown show status in linux with multiple pages open</li>
<li>improved all subprocess calls, removing interim shell step and parameterising passed arguments</li>
<li>improved how files and directories are launched in windows</li>
<li>upnp is fixed for linux</li>
<li>fixed hover window archive/inbox/delete icon buttons, which were spamming their commands to all open media viewers, not just their own</li>
<li>added a simple raised border to hover windows to better delineate them from the canvas background</li>
<li>updated the hover window size and position code to be a bit more reliable (still seems to bug out a bit on linux)</li>
<li>tags hover window should now expand sideways more reliably</li>
<li>it is now not possible to create nested export folders</li>
<li>searching for numtags < x will now include files with no tags</li>
<li>fixed manage boorus dialog OK in linux</li>
<li>fixed booru selection mini-dialog in linux</li>
<li>generally improved restoring database code</li>
<li>fixed restoring a database when you have tag archives in existing database</li>
<li>fixed a unicode encoding error when converting certain jobs to text (this was throwing errors in deviant art downloads/subscriptions--we'll see what was actually going on now, whether this is an error not being formatted right or something else)</li>
<li>started some great rewrite of management panel gui code</li>
<li>rearranged the download panel gui hierarchy slightly</li>
<li>improved collapsible panel collapse/expand layout code</li>
<li>removed code and database table for the old numerical ratings filter</li>
<li>some general code refactoring and cleanup</li>
<li>improved client upnp daemon timing</li>
<li>harmonised how the client and server check requests for bandwidth-tracking eligibility</li>
</ul>
<li><h3>version 160</h3></li>
<ul>
<li>added options for http, socks4, socks5 proxying</li>
<li>improved some network-related errors</li>
<li>ratings services can have custom border and fill colours for their various states</li>
<li>ratings services can now also be squares or stars instead of circles</li>
<li>numerical ratings services can disallow zero ratings</li>
<li>fixed the JSON parsing error that broke the thread checker</li>
<li>shrank the width of the thread checker to make it a little less ugly</li>
<li>the autocomplete tag search dropdowns will now accept and search with quickly entered text</li>
<li>this new system will substitute siblings in the manage tags dialog</li>
<li>fixed rows/s average calculation</li>
<li>rows/s is more accurate</li>
<li>content update popup string update is less laggy</li>
<li>content update popup now shows content rows, rather than content parts</li>
<li>removed update 'taking a break' component, as it was not doing the job I wanted it to</li>
<li>db debug profile mode can now be turned off lol</li>
<li>fixed an error from middle-clicking greyspace in the linux notebook tab area</li>
<li>general code cleanup</li>
<li>some string conversion code cleanup</li>
<li>fixed a missing canvas bmp error with flash/flv embed buttons</li>
</ul>
<li><h3>version 159</h3></li>
<ul>
<li>split previously monolithic repository updates into smaller pieces</li>
<li>added service_update server calls</li>
<li>extended content_update server calls to support sub-indices</li>
<li>sped up some content update preprocessing code</li>
<li>improved some content update preprocessing code</li>
<li>radically reduced serverside memory usage while generating updates</li>
<li>added iterator splitters to make sure any single update row cannot be too large</li>
<li>thanks to iterator splitter, updates should process through the client more smoothly</li>
<li>added timespan splitter to make sure any single server update query cannot be too large</li>
<li>content updates are resumable if broken part way through downloading the list of them</li>
<li>the update popup will state how fast it is currently working in rows per second committed</li>
<li>cleanup of a lot of update related code</li>
<li>more cleanup of update related code</li>
<li>improved serialisable protocol so it'll work better over a network</li>
<li>made serialisable protocol much simpler</li>
<li>fixed numerical rating system predicate dialog slider range</li>
<li>fixed numerical rating system predicate dialog OK for valued predicates</li>
<li>fixed numerical rating custom filter action dialog</li>
<li>improved some network yaml error handling</li>
<li>replaced 'export tags' thumbnail menu entry with a tag archives system</li>
<li>replaced 'import metadata' file menu entry with a tag archives system</li>
<li>disabled thread dumper and manage imageboards and manage 4chan pass dialogs for now, because dumping code is out of date and completely screwed up</li>
<li>client will now not start in idle mode</li>
<li>help debug menu has new 'force idle mode' entry</li>
<li>idle mode is displayed on status bar</li>
<li>simplified client main gui status bar display and code</li>
<li>the flash and flv files' embed button now has a little border to delineate it from the canvas background</li>
<li>fixed some clientside bandwidth tracking code</li>
<li>removed some old networking code</li>
<li>made some custom objects draw themselves more efficiently</li>
<li>for now, manage tag parents and siblings dialogs will not show deleted rows. I will eventually add a 'show deleted' checkbox, like the manage tags dialog has</li>
<li>some static image rendering is slightly less laggy, particularly when browsing large images</li>
<li>fixed initial height of manage tags dialog launched from preview window</li>
<li>changed the 'search area' vs 'preview' sash gravity so the preview area won't expand or shrink on resize--see if you like it</li>
<li>autocomplete dropdown should now hide itself when focus goes to other programs</li>
<li>autocomplete dropdown should now hide itself when focus goes to other hydrus frames in os x</li>
<li>fleshed out new URLCache object to handle better gallery download url management</li>
<li>refactored some file status tracking stuff to a better system</li>
<li>refactored gallery page fetching to a better system</li>
<li>refactored gallery url handling to a better system</li>
<li>some redundant import checking should be much faster</li>
<li>improved error handling when booru image page parsing fails to find image url</li>
<li>refactored how tags are fetched for DA, tumblr, and giphy as part of the above overhaul</li>
<li>misc code cleanup</li>
</ul>
<li><h3>version 158</h3></li>
<ul>
<li>subscriptions now have a 'get tags even if file already in db' checkbox, defaulting to false, which will significantly speed up subs with redundant files</li>
<li>subscriptions will now more accurately obey initial limit</li>
<li>gallery downloaders will now more accurately obey file limit</li>
<li>merged some hentai foundry code into the general downloader</li>
<li>cleaned and refactored a lot of import page initialisation code</li>
<li>cleaned and refactored of lot of import management panel code</li>
<li>cleaned and refactored of lot of import code</li>
<li>created numerical rating control</li>
<li>added numerical rating control to rating dialog</li>
<li>added numerical rating control to rating hover window</li>
<li>updated like and numerical rating service info for future support of custom colours and shapes</li>
<li>fixed listbooks page deletion display</li>
<li>fixed manage boorus saving changes to existing panels</li>
<li>fixed manage imageboards saving changes to existing panels</li>
<li>fixed manage imageboards saving remove imageboard</li>
<li>improved and refactored listbook code, further separating active and proto pages</li>
<li>improved some listbook name conflict error handling</li>
<li>misc cleaning</li>
<li>export folders and the export dialog will also export file attributes like access and modification time</li>
<li>export folders will now overwrite destination files if they are a different size to the exportee</li>
<li>export folders can now be set to 'synchronise', and so will delete any other files in the directory. existing export folders will behave exactly as before</li>
<li>improved misc export and import folder code</li>
<li>moved folder type tooltip to an explicit bit of text on export and import folder edit dialogs</li>
<li>thumbnails can now display multiple hydrus file repository icons (current, pending, and petitioned) if multiple states apply</li>
<li>hydrus file repository icons are gone from media viewer--now there is a text list</li>
<li>hydrus file repository text list is added to hover window as well</li>
<li>exclude_deleted option will no longer hide files from file repository search results--it was more confusing than helpful</li>
<li>improved some error-prone logic in how advanced_import_options were being stored</li>
<li>ratings hover window icon background colour is fixed</li>
<li>imported bmps should now be converted to pngs with 1:1 colour (before, they were being collapsed to a 256-colour palette, which was showing ugly dither on complicated images)</li>
<li>fixed a sometimes segfault crash on search refresh on OS X</li>
<li>the preview window now supports a simple right-click menu</li>
<li>added 'open installation folder' to file menu</li>
<li>improved some media viewer precaching code, which should speed up some scrolling, particularly on the first scroll</li>
<li>improved some layout code</li>
<li>improved some file permissions code</li>
<li>cleaned some canvas code</li>
</ul>
<li><h3>version 157</h3></li>
<ul>
<li>fixed a bug in listbook page initialisation and retrieval that was affecting many dialogs on OK</li>
<li>some general dialog OK code cleanup</li>
<li>fixed a media-navigation bug in managetags dialog</li>
<li>fixed a serious OK bug in imageboards dialog</li>
<li>created a new 'periodic' object to manage future subscriptions timing improvements</li>
<li>started subscription YAML->JSON conversion</li>
<li>stopped compressing json in the client db so it is human readable and thus easily editable</li>
<li>subscriptions are no longer renamable, as this code was super buggy and could delete other subs</li>
<li>tidied up the database menu</li>
<li>a bit of misc cleanup</li>
<li>in many cases where it was once pseudorandom, services are now reported in alphabetical order</li>
<li>prototyped 'like' ratings control</li>
<li>added new like ratings control to the background bmp of the media viewer</li>
<li>added new like ratings control to the manage ratings dialog</li>
<li>added new like ratings control to a new hover window in the top-right</li>
<li>added basic additional icon support to new hover window</li>
<li>fixed some misc new alignment bugs related to new ratings stuff</li>
<li>like ratings controls on the hover window have tooltips</li>
<li>fixed up some icon/rating display logic in the background bmp of the media viewer</li>
<li>updated ratings dialog error handling</li>
</ul>
<li><h3>version 156</h3></li>
<ul>
<li>improved my build workflow in several ways, which should result in fewer orphan files and other build weirdnesses</li>
<li>some bad path usage in initialisation icon resizing has been moved to better temp paths</li>
<li>hitting page up or down on a manage tags dialog launched from the thumbnail grid no longer clears the current media</li>
<li>improved file permissions code across the program</li>
<li>fixed import folders daemon's test code for non-windows</li>
<li>fixed up some temporary file code that wasn't cleaning up those files when the application was about to close</li>
<li>fixed a newline parsing problem in copy/paste tags in the manage tags dialog</li>
<li>added tag cleaning to pasting in the manage tags dialog</li>
<li>added newline removal into standard tag cleaning process</li>
<li>fixed a server db bug that was stopping some accounts from being created</li>
<li>fixed some network session exception creation and catching</li>
<li>new popup messages should no longer steal focus in most circumstances</li>
<li>client should recover from serious popup message manager errors better</li>
<li>hover windows will now only pop up if their media viewer is the currently focused frame</li>
<li>hover windows will not hide until the mouse moves off them when flash or webm are underneath them</li>
<li>os x will no longer vanish media in the media viewer on an action like archive or inbox</li>
<li>fixed juddery media mouse dragging in linux</li>
<li>improved the way listbooks work to avoid a problem with clientdata in wx linux</li>
<li>export folder is gone as the default export location--now it is 'hydrus_export' under the current user's home dir</li>
<li>updated windows ffmpeg to latest version</li>
<li>fixed an important opencv dll conflict that was causing some gifs to render wrong in windows</li>
<li>shift focus media logic improved--shift initial thumbnail is now last image selected</li>
<li>shift selection will no longer deselect anything</li>
</ul>
<li><h3>version 155</h3></li>
<ul>
<li>fixed a frame seek error when looping long and/or large gifs with unusual palettes</li>
<li>improved recovery when fps reads as 0 on videos</li>
<li>added error detection and graceful recovery and reporting for missing ActiveX flash control</li>
<li>removed a lot of old imported messaging code that was slowing down boot</li>
<li>removed some other old library imports that are no longer needed</li>
<li>gracefully silenced 'application shutdown' daemon errors (they were previously spamming to console)</li>
<li>fixed a hover window display check that was sometimes spamming linux with edge-case errors</li>
<li>slideshows will now pause while the right-click menu is open, stopping bizarre full program crashes occuring on many menu items while slideshow was in progress</li>
<li>fixed a thread_id-sqlite-cache_initialisation problem that was breaking tag archive sync</li>
<li>harmonised copy/paste tag protocol in manage tags dialog with 'copy all tags' of the tags list</li>
<li>removed some old messaging code in client db creation</li>
</ul>
<li><h3>version 154a</h3></li>
<ul>
<li>fixed a bug in v154 update code when there was more than one set of shortcuts to convert</li>
<li>fixed a faulty default value for num_pixels system predicate that was stopping options from opening</li>
<li>fixed an error when video fps is 0</li>
</ul>
<li><h3>version 154</h3></li>
<ul>
<li>managed to completely break my linux and os x dev environments trying to update python--their release will come soon, once I've cleaned them up</li>
<li>removed some old cv code</li>
<li>updated to opencv 2.4.11 on windows</li>
<li>fixed a bug in trying to upload a small number of tag petitions</li>
<li>hover command buttons are now shrunk to exact fit size</li>
<li>added zoom buttons to command button hover window</li>
<li>added navigation buttons to command button hover window</li>
<li>added fullscreen switch button to command button hover window</li>
<li>added archive/inbox button to command button hover window</li>
<li>added delete button to command button hover window</li>
<li>added generic close window button to command button hover window</li>
<li>added tooltips to all the command buttons</li>
<li>cleaned some misc canvas code</li>
<li>hover windows now fit better, without overlap</li>
<li>moved media info strings to top of media canvas, so they hide behind hover header</li>
<li>hover windows will now not cover webms or gifs when the mouse is over the media container</li>
<li>hover command buttons now work for inbox filter, including back/skip buttons</li>
<li>inbox/archive button feels and works correctly for the inbox filter</li>
<li>updated manage options dialog's 'default file system predicates' mess to use the new cleaner predicate panels</li>
<li>all file system predicate defaults have been reset to default</li>
<li>added system:num_pixels to file system predicates default panel</li>
<li>fixed the system:num_pixels predicate being broken on options save</li>
<li>removed the ratings system predicates from file system predicates default panel</li>
<li>fixed misc system predicate bugs</li>
<li>moved yaml->json conversion forward:</li>
<li>settled on object code</li>
<li>added built-in compression to serialisation</li>
<li>added db tables and access code to support it</li>
<li>fixed a little layout mess in the edit custom filter action dialog</li>
<li>created a rich 'shortcuts' class for storing shortcut->action information that can be easily expanded to handle mouse events as well</li>
<li>new shortcuts class works on new json storage rather than yaml</li>
<li>moved custom filter shortcut action storage and general handling to new shortcuts object</li>
<li>moved old favourite_shortcuts tests to new code</li>
<li>cleaned a lot of the custom filter dialog code</li>
<li>rewrote the custom filter setup dialog to work more like other dialogs--now all changes are saved on ok, and save/save as/delete is replaced with add/delete</li>
<li>auto-creation of 'previous' shortcuts is removed, as all changes are saved to shortcut sets anyway</li>
<li>removed the ratings filters--the numerical filter may make a return in another form, your thoughts would be appreciated</li>
<li>fixed a cache counting bug when archiving redundant files during import</li>
<li>sped up file deletion a little bit</li>
<li>added an inbox cache to reduce laggy inbox checking, particularly search result fetching on dbs with large inboxes</li>
<li>fixed subscriptions that have no initial file limit, please reset your sub url caches to fix in these cases</li>
<li>did a lot of server/client database merging and refactoring</li>
<li>improved some database error handling</li>
<li>fixed an error in file repository superbans</li>
<li>optimised some critical db code</li>
<li>sped up tag censorship filtering</li>
<li>added a db profiling mode, accessed from the help menu, that will dump copious db profiling info to the log</li>
<li>misc code cleaning</li>
<li>improved some popup mesage print sync timing</li>
<li>rewrote some server auto-setup code to deal with slowly-starting server</li>
</ul>
<li><h3>version 153</h3></li>
<ul>
<li>cut out some out of date stuff from help</li>
<li>put a nice big red warning at the top of the 'running your own server' page</li>
<li>added system:num_pixels for megapixel searching</li>
<li>system predicates height, width, ratio, and the new num_pixels are now collapsed to a super-predicate, system:dimensions</li>
<li>system:rating will now only show if you have some ratings services</li>
<li>the system:rating dialog will now hide like or numerical ratings if you have no services of that kind</li>
<li>complete refactorisation of system predicate dialog</li>
<li>some misc system predicate bugs and bad panel event precedence fixed</li>
<li>shortened all predicate spinctrls</li>
<li>improved how system predicates are stored and used for a search</li>
<li>moved some view menu items to the download menu and the new search menu</li>
<li>all of the download gallery pages are added to the download menu</li>
<li>added some explanatory text to the pixiv dialog</li>
<li>the tag uploading process will more carefully prepare its subupdates so that mass allocations of the same tag to many files will be split into smaller chunks, avoiding connection timeouts in these cases</li>
<li>hover windows will no longer hover over flash files</li>
<li>tag hover frame will resize a little based on the canvas width</li>
<li>the twenty pixel mouse warping when the mouse starts dragging close to the edge of the media viewer will no longer occur on flash files</li>
<li>the canvas buffer for flash files is expanded to five pixels either side</li>
<li>the hover tags window will now update itself when the media's tags change</li>
<li>new hover window for details and commands, up top of the media viewer</li>
<li>moved the old popout windows' buttons to the new hover window</li>
<li>added hover window commands for the normal browser</li>
<li>cleaned up some general canvas code</li>
<li>index string will now display with a slash in all cases (it was a backslash for windows, for accidental reasons)</li>
<li>file limit for subscriptions and download pages now has minimum value 1</li>
<li>searching for number of tags while tag censorship has some namespaces will no longer throw an error</li>
<li>moved boot and exit code responsibility from the splash frame to the controller</li>
<li>improved the boot and exit code generally, including dragging feedback lag and error handling</li>
<li>improved some thread error handling</li>
<li>fattening service info won't trigger on client shutdown quite so much, which should speed up shutdown a little</li>
</ul>
<li><h3>version 152</h3></li>
<ul>
<li>added prototype hover frame for tags in media view</li>
<li>hover frame shouldn't show when a dialog is open</li>
<li>manage tags dialog launched from media viewer now has a delete button</li>
<li>subscriptions now have an 'initial limit' variable, defaulting to 500, that limits the total number of files the subscription daemon will look for on the initial sync</li>
<li>added a similar file limit spinctrl to gallery download pages</li>
<li>updated layout of import files dialog</li>
<li>cleaned up some ugly global variable scope stuff</li>
<li>fixed initialisation of advanced import options in file import dialog</li>
<li>made a good start to better object serialisation</li>
<li>subscription and repository sync daemon jobs that stop due to a dialog-driven change during processing will now cancel themselves after five seconds</li>
<li>fixed namespace (e.g. 'series:') tag censorship</li>
<li>fixed the fullscreen switch bug that was breaking an (initially fullscreen)->(non fullscreen) media viewer</li>
<li>fixed some search logic (some system predicates were not firing when there were no regular tags present)</li>
<li>removed some artificial delays on daemon db access, let's see if it chokes anything</li>
<li>harmonised a bunch of client and server controller code</li>
<li>created a common controller class and merged a lot of the client and server controller code into it</li>
<li>general code cleanup</li>
<li>more general code cleanup</li>
</ul>
<li><h3>version 151</h3></li>
<ul>
<li>added a possible solution to the manage tags dialog next/previous buttons crash</li>
<li>completely overhauled temporary file management throughout client and server</li>
<li>removed old temp folder</li>
<li>copy files to clipboard will now copy the database's exact file paths (rather than copying to a temp folder beforehand), making it a lot quicker</li>
<li>the import folders daemon will no longer attempt to import (and hence spam errors about) zero-length files</li>
<li>added one-time tag archive sync button to the 'perform a service-wide operation' dialog in review services. this lets you add or delete the archive's tags by namespace</li>
<li>revised the tag archive sync code a little so it syncs to non-local files as well, if the hashes can be lined up</li>
<li>added hash cross-referencing to archive sync code before maina processing step, often saving a huge amount of time</li>
<li>fixed a parsing error with advanced content updates at the gui-end</li>
<li>added GetName and IterateHashes to hydrus tag archives</li>
<li>added default 'similar to' max hamming distance to file system predicate defaults in client options</li>
<li>fixed up the default text display of the file service system predicate</li>
<li>added some text to the sort/collect options panel to better explain what the big listbox is for</li>
<li>fixed a popup numerical typo when uploading files to a repository</li>
<li>fixed an utterly bizarre bug caused by the import files dialog that was screwing up subsequent dialogs' layout and size, apparently by wx voodoo</li>
<li>refactored all the functions and classes of hydrusconstants to better locations</li>
<li>misc other refactorisation</li>
<li>misc cleaning</li>
<li>renamed hydrusdownloading to clientdownloading</li>
<li>changed all default { } and [ ] parameters to None. I don't think it mattered, but just in case for the future</li>
<li>moved some ugly global variable stuff to better places, hoping to do more in future</li>
<li>cleaned up many unused imports</li>
</ul>
<li><h3>version 150</h3></li>
<ul>
<li>added an 'idle' updating processing mode that churns through tags four times faster but makes gui laggy. it will kick in whenever you haven't done anything in thirty minutes</li>
<li>improved some gallery downloader status texts</li>
<li>gallery downloader will no longer wait 5 secs before fetching first page of urls</li>
<li>fixed a critical race condition that had a chance of causing complete and unrecoverable gui freeze in the gallery downloader code</li>
<li>fixed rendering of some bizarro pngs that CV couldn't understand</li>
<li>fixed tag parent management for admin users</li>
<li>fixed up some tag parent dialog code</li>
<li>tag sibling dialog now accepts single reasons for multiple pairs, like the tag parent dialog</li>
<li>improved error state on rendering video that reports resolution of 0x0</li>
<li>removed looping error reporting on certain static image rendering errors</li>
<li>fixed an error when some thumbs were 'collected' while fading in</li>
<li>tagboxes now select on home/end and support numpad versions of page up/down</li>
<li>fixed a radio button initialisation bug</li>
<li>boosted the initial size of the 'set default advanced tag options' dialog so the collapsible pane is more visibile</li>
<li>silenced a upnp error when external ip can't be parsed</li>
<li>reduced some tag dialog previous/next button lag</li>
<li>general code cleanup and refactorisation</li>
<li>gui flag refactorisation and unification</li>
<li>refactorisation of most non-constant stuff from constants files</li>
<li>refactorisations of media mixins class in prep for a general rewrite of that code</li>
<li>improved client initialisation of default options, boorus, and imageboards</li>
</ul>
<li><h3>version 149</h3></li>
<ul>
<li>all listctrls with an attendant delete button will now support the same action with the delete key</li>
<li>several normal tag boxes will support the delete key as well</li>
<li>added a temporary service cache to the client db to speed up service fetching until I can figure out a yaml replacement</li>
<li>cleared out inefficient tag and hash database fetching and generation code</li>
<li>tag parent dialog will now ask for an action/reason for every ( children, parent ) pair rather than every ( child, parent ) pair</li>
<li>fixed an error with collecting by rating</li>
<li>fixed the 'fix' to the gui_colours db update problem</li>
<li>the autocomplete dropdowns in the paths-to-tags dialog will no longer produce errors when tags are submitted</li>
<li>improved accuracy of taglist scroll-to-selected scrolldown calculation</li>
<li>collapsed some of the helter-skelter db code in prep for future improvements</li>
<li>moved daemon code to separate files</li>
<li>silenced server upnp errors</li>
<li>all except: continue lines are banished!</li>
<li>cleaned up some miscellaneous exception code</li>
<li>cleaned some ugly behind the scenes a/c dropdown button code</li>
<li>did some general code cleanup</li>
</ul>
<li><h3>version 148</h3></li>
<ul>
<li>rewrote thumbnail canvas and scrolling code from a crashtastic monolithic bmp to a lighter, faster, and more flexible page buffer</li>
<li>all custom gui elements should be less flickery</li>
<li>the manage tags dialog will now grow significantly taller if its parent window is also tall</li>
<li>dialogs launched by the media viewer will initially position themselves according to that, rather than the main gui</li>
<li>dialogs launched by controls will initially position themselves according the control's toplevelwindow, as originally intended</li>
<li>thumbnail download (for file repositories) no longer happens silently in the background; it will now occur in the repository sync daemon, reporting its progress in the normal repo sync popup</li>
<li>missing thumbnails are now replaced with the hydrus psi symbol silently, with a simple statement written to the log</li>
<li>fixed a tiny typo in update error code that was reporting version wrong</li>
<li>fixed a typo bug in gettagarchivetags</li>
<li>fixed a typo that had broken namespace sorting</li>
<li>numerous other single-line miscellaneous bug fixes</li>
<li>fixed a bug with displaying media with size (0,0)</li>
<li>fixed a bug with zooming in flash files</li>
<li>improved some buggy tag selection logic that was sometimes desyncing indices between menu popup and selection</li>
<li>tags will now stay selected even through changes to the tags list</li>
<li>any attempt to close the autocomplete dropdown floating frame should now bump the close event up to the whole program</li>
<li>linux release now includes source code alongside executables</li>
</ul>
<li><h3>version 147</h3></li>
<ul>
<li>fixed a problem when trying to do a multi-release update that contained the v146 update</li>
<li>fixed the 'canvas not resizing after media removal' bug</li>
<li>when an autocomplete appears in a dialog, the dropdown window will integrate into the dialog (rather than being a popup), allowing mouse interaction</li>
<li>refitted the paths-to-tags dialog so the different static boxes and newly embedded A/C dropdowns fit better</li>
<li>fixes to and cleanup of sibling tag retrieval code</li>
<li>fixes to and cleanup of sibling tag filter code</li>
<li>fixes to and cleanup of sibling tag search code</li>
<li>fixes to and cleanup of sibling tag display code</li>
<li>fixed a couple bugs in READ autocomplete tag search caching that was stopping namespaced queries searching properly if typed in manually rather than pasted</li>
<li>fixed a similar bug in WRITE autocomplete tag search</li>
<li>fixed a bug that was ignoring namespace entirely in WRITE autocomplete</li>
<li>synchronised subscription popups' new file buttons with the text</li>
</ul>
<li><h3>version 146</h3></li>
<ul>
<li>manage tags and ratings dialogs will now OK on F3/F4, not CANCEL</li>
<li>zoom switch (default shortcut 'z') will now work for images smaller than the media viewer's canvas</li>
<li>in the media viewer, the canvas-fitting zoom value is now inserted into a media's scrollable zooms</li>
<li>added 'tags box background' gui custom colour</li>
<li>volume, chapter, and page tags will sort properly again in thumbnail view, including last week's improvements</li>
<li>the thread watcher will no longer break its checking loop on non-404 http request or parse errors (i.e. the manual 'check now' button will still work after a misc error)</li>
<li>to remove clutter, the preview window will no longer show tags and file information like the normal media viewer</li>
<li>subscriptions will now show a live 'show files' button as they process</li>
<li>the copy and 'open new page' right-click menu options on tags will now work on more controls</li>
<li>cleaned quite a bit of tags box code</li>
<li>cleaned up and unified a lot of miscellaneous canvas zoom and display code</li>
<li>fixed an error when trying to upload a file petition without any accompanying file uploads</li>
</ul>
<li><h3>version 145</h3></li>
<ul>
<li>added custom gui colours for thumbnail backgrounds and borders, the autocomplete background, and media background and text</li>
<li>added <- and -> arrows to manage tags dialog launched from navigable media viewer</li>
<li>on empty input in the manage tags dialog, page up and page down work as shortcuts for the new <- and -> buttons</li>
<li>fixed the media height calculation for animations, so when they are vertically scaled, the total height including scanbar won't overflow off screen</li>
<li>allowed non-integer page, chapter, volume tags in display and sort calculations</li>
<li>semi-integer tags will sort along with integer tags and string tags like so: 0 < 0a < 0b < 1 < 2 < 22</li>
<li>improved the old tag/media sorting code</li>
<li>removed loli and shota from hentai foundry filter options</li>
<li>patched old db-stored predicates to attempt to convert to the new format when queried for _inclusive</li>
<li>this _should_ have fixed the recent export folder problems</li>
<li>created an 8chan board, and updated my various links, including in the client, to migrate from my old forum to this</li>
<li>added a 'fit to canvas' checkbox in file->options->media that will zoom small images to the full size of the media viewer</li>
<li>misc code improvements</li>
</ul>
<li><h3>version 144</h3></li>
<ul>
<li>files named 'Thumbs.db' will now be skipped in the import files dialog</li>
<li>fixed wildcard searches, which last week's predicate rewrite broke</li>
<li>fixed a typo that was showing namespace predicates as exclusive (-series:*) when they were actually inclusive (series:*) and vice versa</li>
<li>added wildcard namespace searching for database autocomplete queries</li>
<li>fixed database wildcard autocomplete searching when wildcard match is not the first word in a tag</li>
<li>fixed database file searching when wildcard match is not the first word in a tag</li>
<li>added a comprehensive suite of predicate-unicode conversion tests</li>
<li>cleaned and improved some of the downloader code</li>
<li>added five second per-gallery-page delay to subscription daemon</li>
<li>added three second per-file-delay for regular gallery downloads and subscriptions, just to be polite to those web services</li>
<li>added three second per-file-delay to the thread watcher for the same reason</li>
<li>added a 'check now' button to the thread watcher</li>
<li>fixed a problem that was sometimes causing subscriptions, when paused, to continually restart</li>
<li>removed unnamespaced tag parsing from deviant art</li>
<li>fixed creator parsing for deviant art, which was formerly cutting off the first character</li>
<li>patched an account sync problem in the manage tags dialog</li>
<li>in add tags by path dialog, tags are now sorted before being added to the file list</li>
<li>in add tags by path dialog, the regex sections now generate tags for every match in the string, not just the first</li>
<li>stopped collapsible panels resizing dialogs to minsize on collapse or expand</li>
<li>added shortcut for 'open externally', default Ctrl+E</li>
<li>moved 8chan to new 8ch.net domain (old domain still works)</li>
</ul>
<li><h3>version 143</h3></li>
<ul>
<li>when making a READ autocomplete tag query, instances of tags that only have a count in a single namespaced domain will no longer accumulate helper results in the non-namespaced domain i.e. no more 'blah (1)' 'title:blah (1)' dupes</li>
<li>improved the way the above results are calculated</li>
<li>pixiv artist downloading now correctly asks for numerical artist id</li>
<li>reworded some of getting started with files help page to better explain multiple selection</li>
<li>widened the splash screen a bit so db update messages have more space</li>
<li>all frames and dialogs now have an explicit minimum size that is usually far smaller than their initial size</li>
<li>the dialogs with listctrls (import files, manage custom filter actions, and so on) now start a little shorter in height</li>
<li>fixed some bad sizer flags in dialogs with listctrls</li>
<li>rebalanced content update throttling for quicker correction under heavy load</li>
<li>moved the new 5 second break in the gallery parser to a position for quicker status updates</li>
<li>the gallery parser will report total urls found when it is finished (even if that is zero) and wait a bit to let you read that</li>
<li>fixed services->news to hide if you aren't connected to any repositories</li>
<li>autocomplete boxes are now a very slight shade of blue, see if you like it</li>
<li>fixed 'launch file externally' for linux and os x</li>
<li>fixed 'launch directory externally' for linux and os x</li>
<li>fixed 'set up server for me' for linux and os x, I think</li>
<li>improved some general external-process-launching code</li>
<li>cleaned and improved some of the predicate code</li>
</ul>
<li><h3>version 142</h3></li>
<ul>
<li>added wildcards to autocomplete results and file queries</li>
<li>autocomplete results will match your wildcard _exactly_</li>
<li>a new predicate type will appear at the top of wildcard queries; selecting it will search files with that wildcard</li>
<li>the new wildcard predicate can be prepended with a minus sign to exclude from results just like normal tag and namespace queries</li>
<li>in wildcard predicates, namespace and/or tag can contain wildcard characters</li>
<li>added some wildcard help</li>
<li>putting in '***' as an autocomplete query is now a pretty bad idea!</li>
<li>fixed some logic in how tags are matched against unusual search input in the db</li>
<li>sped up and cleaned how tags are matched against search input</li>
<li>fixed some namespace logic in how tags are matched against search input</li>
<li>below-character-threshold autocomplete queries will now return all applicable namespace results (e.g. putting in '1' will return [ 1, page:1, chapter:1, volume:1 ], not just [ 1 ])</li>
<li>added 'open externally' to launch the file in default external program to thumbnail and media viewer menu</li>
<li>added a five second delay between gallery-page fetches in the downloader to reduce chance of 429 errors (this was affecting big sankaku searches)</li>
<li>added danbooru webm downloading</li>
<li>fixed a typo in the thread watcher</li>
<li>fixed a bit-rot bug that was stopping the 'like' ratings filter from launching</li>
<li>fixed right click menu in custom filter</li>
</ul>
<li><h3>version 141</h3></li>
<ul>
<li>combined mappings are no longer calculated and stored</li>
<li>recalculate combined mappings obviously removed from database menu</li>
<li>combined mappings no longer have to be recalculated on a service deletion; the accompanying 'this could take a long time' warning dialog is gone as well</li>
<li>combined mappings autocomplete counts are now calculated on-the-fly</li>
<li>combined mappings tag queries are now performed on-the-fly</li>
<li>combined mappings namespace queries are now performed on-the-fly</li>
<li>combined mappings zero/non-zero tag count queries are now performed on-the-fly</li>
<li>combined mappings regular tag count queries are now performed on-the-fly</li>
<li>corrected some logic with regular tag count queries, I think</li>
<li>autocomplete tag cache dirties and culls itself more efficiently on tag update</li>
<li>autocomplete tag cache dirties and culls itself more efficiently on file import/delete</li>
<li>removed a couple of non-useful AMP tests that were breaking due to a previous change in connection code</li>
<li>improved how popup messages give the gui permission to update; hopefully the gui will lock up less when big jobs with popups are happening</li>
<li>improved some misc timing logic</li>
<li>improved some repo sync timing logic</li>
<li>added simple emergency throttling to the repo sync daemon when the CPU/HDD is getting hammered</li>
<li>improved some repo sync text number-grammar and timing</li>
<li>added sankaku channel booru, including flash</li>
<li>the booru downloading code that discovers image urls is more flexible</li>
<li>improved my job pause/cancel logic so paused jobs, when cancelled/completed, will report themselves as no longer paused (this was affecting the downloader page, with paused jobs not dismissing themselves on a subsequent cancel)</li>
</ul>
<li><h3>version 140</h3></li>
<ul>
<li>if a repository or subscription popup message has nothing to report, it will dismiss itself</li>
<li>fixed handling of text popup display when the object passed was not text</li>
<li>delete orphans is now cancellable</li>
<li>vacuum, deleted orphans, and upload pending popup messages will dismiss themselves an hour after they are done</li>
<li>tightened the subscription final state popup message to just a title and a button</li>
<li>removed much of the very expensive autocomplete tag cache maintenance code, which seems not to be worth the effort</li>
<li>culled the autocomplete tag cache in prep for new maintenance cycle</li>
<li>fixed a resize timing bug that was causing large images to scale in an ugly way when the media viewer was launched in a borderless state</li>
<li>'open selection in new page' will no longer default focus on the sort dropdown; it'll go to the media panel (this was causing scrolling confusion)</li>
<li>fixed a non-updating display bug when resizing frames/dialogs with auto-resizing listctrls on linux</li>
<li>cleaned up a wall-of-text error when closing the client immediately after deleting a tag service</li>
<li>filled a gap in static text image object cleanup</li>
<li>cleaned up some thumbnail waterfall/fade code</li>
<li>filled several gaps in thumbnail object cleanup</li>
</ul>
<li><h3>version 139</h3></li>
<ul>
<li>cleaned up all the old popup message code, and fully integrated the new</li>
<li>moved repo sync to the new popup messaging system</li>
<li>moved normal errors and db errors to the new popup messaging system</li>
<li>improved some error handling code</li>
<li>reintroduced message printing</li>
<li>improved subscriptions messaging</li>
<li>added cancel button to:</li>
<ul>
<li>check file integrity</li>
<li>export to tag archive</li>
</ul>
<li>added pause and cancel buttons to:</li>
<ul>
<li>repository sync</li>
<li>subscription sync</li>
<li>pending upload</li>
<li>regenerate thumbnails</li>
</ul>
<li>improved how jobs' pausability and cancelability are spawned</li>
<li>improved and harmonised a lot of pause and cancel and general shutdown-job-interaction logic</li>
<li>pausable and cancellable popups can only be dimissed with right click once they are done or cancelled</li>
<li>improved some more pause logic in the subscription and repository sync daemons</li>
<li>improved popup pause responsivity</li>
<li>added comprehensive cancelled/finished log statements for the newly pausable and cancellable operations</li>
<li>'just woke from sleep' calculation will no longer evaluate to true on application start</li>
<li>deleted the old broken message log page, which I had forgotten even existed!</li>
<li>fixed a bug stopping adding tag repositories in the manage services dialog</li>
<li>fixed a bug that was hiding the 'name and credentials' panel in the manage services dialog</li>
<li>improved some kinds of thumbnail error reporting</li>
<li>sped up client boot by one second</li>
</ul>
<li><h3>version 138</h3></li>
<ul>
<li>created new 'maintenance and memory' options page in the manage options dialog, and moved some things over from 'files and memory', which is now 'files and thumbnails'</li>
<li>added options for idle, vacuum, and delete orphans periods to the 'maintenance and memory' page in the manage options dialog</li>
<li>fixed the incredibly annoying animated scanbar delayed-frame bug, where a click on the scanbar would not draw the new frame until the old frame's expected delay was complete. scanbar scanning is a lot smoother all around, now</li>
<li>animations now show their current frame number in the animation scanbar</li>
<li>status bar now shows inbox/archived counts on any selection</li>
<li>reworked static image zoom code so they resize beautifully, without jaggies, at the cost of a bit of CPU and memory</li>
<li>created new flexible message pathway</li>
<li>moved most messages to new pathway</li>
<li>improved a bunch of message and job_key related code</li>
<li>btw: messages will no longer close themselves; their end state is now to report what happened until you dismiss them. if this turns out to be annoying, I'll change it</li>
<li>fixed the pending menu not updating its count when files imported and added tags via archive sync</li>
<li>improved the logic behind the 'computer just woke from sleep' calculation</li>
<li>improved the accuracy of the 'client is currently idle' calculation</li>
<li>improved database vacuum so the .db-wal file is flushed afterwards, for both client and server</li>
<li>because of better vacuuming, server db backup no longer needs to create a bloated .db-wal backup</li>
<li>removed a very common superfluous empty tag upload packet in normal tag uploads</li>
</ul>
<li><h3>version 137</h3></li>
<ul>
<li>eliminated a loophole in the tag-pending process that allowed zero-length subtags through during archive sync</li>
<li>improved the way tags are cleaned and checked, no matter their source</li>
<li>added zero-length subtag (e.g. 'character:') checking and exclusion to the server</li>
<li>removed erroneously pending or current tags that have a zero-length subtag</li>
<li>added 'copy bitmap' option on still image right-click menu</li>
<li>harmonised a whole bunch of clipboard code</li>
<li>added a check file integrity db function, with quick filename existence and thorough content hashing modes</li>
<li>added clear service info cache debug function to database menu</li>
<li>added regenerate combined mappings debug function to database menu</li>
<li>added a primary key to the hydrus tag archive db to save some space on duplicate mappings</li>
<li>added AddMappings to the hydrus tag archive to make mass mapping-adding a bit more efficient</li>
<li>added DeleteTags to the hydrus tag archive</li>
<li>added Get/DeleteMappings convenience synonyms for Get/DeleteTags for the hydrus tag archive</li>
<li>added an 'export to hydrus tag archive' button in the advanced content update dialog</li>
<li>renamed the db tag archive sync methods to better reflect what they actually do</li>
<li>massively simplified how cursors are referenced inside the client and server databases</li>
<li>cleaned up some db cursor code</li>
<li>fixed a critical error in the database test code that was spawning a double db mainloop</li>
<li>improved error handling when regenerating thumbnails</li>
<li>fixed error handling when waterfalling thumbnails</li>
<li>fixed a typo in export tags process</li>
<li>improved the way the client flushes its buffered log data to disk</li>
<li>added log buffer flushing to the server</li>
<li>added a confirm dialog to advanced content update dialog's powerful 'go' button</li>
<li>added custom titles to many co-opted yes/no dialog boxes where the default 'Are you sure?' didn't make sense</li>
<li>cleaned up some misc code</li>
<li>cleaned up some misc bitmap language</li>
</ul>
<li><h3>version 136</h3></li>
<ul>
<li>added tag archives</li>
<li>added tag archive sync initialisation on all existing local files</li>
<li>added tag archive sync maintenance on newly imported files</li>
<li>added a new db directory, client_archives</li>
<li>added tag archive sync options to tag services in manage services dialog</li>
<li>added local tags service to manage services dialog</li>
<li>added sha512 to local hash cache</li>
<li>added tag archive hash_type guessing</li>
<li>added a new dialog for selecting n arbitrary strings</li>
<li>got testing to work on all platforms</li>
<li>fixed the hydrus server for linux and os x; it now has a stay-alive frame rather than a taskbaricon</li>
<li>improved some dialog testing code so it would work on all platforms</li>
<li>fixed a deffered problem that was causing the server AMP test to hang on Linux and OS X</li>
<li>neatened and harmonised a bit of common file and network streaming code</li>
<li>improved some misc manage services dialog code</li>
<li>fixed a critical bug that was meaning certain service changes were not being saved to the database, so were being forgotten on restart</li>
<li>fixed some select-string code that wasn't taking sets of strings for a weird wx reason</li>
</ul>
<li><h3>version 135</h3></li>
<ul>
<li>added a menu option to any tag's right-click menu to open a new search page for that tag</li>
<li>added a subscription cache to the client database to speed up subs checking</li>
<li>added a filter to the message popup system so those annoying and 99% pointless PyDeadObjectErrors will not display. they will still be written to the log</li>
<li>cleaned up a couple of temporary file deletion errors</li>
<li>improved some more temp file deletion error handling</li>
<li>fixed a bug that I think was stopping file repositories from being deleted</li>
<li>improved the manage services db edit log</li>
<li>fixed a bad comparison that was causing superfluous edit actions after a manage services dialog ok</li>
<li>fixed a new bug related to displaying non text in the popup system</li>
<li>added a 'just woke from sleep' check to all daemons, so CPU heavy stuff like repository sync will not initialise if you just woke your computer. the grace period lasts about ten minutes</li>
<li>retuned the way the subscrption daemon initialises (it'll now wait two minutes after startup before firing)</li>
<li>fixed a typo that was causing fatten service info to fire more often than it should</li>
<li>added a yes/no warning to options ok when the thumbnail dimensions have been changed</li>
<li>added a popup message when thumbnail dimensions have been changed to report on deletion progress</li>
<li>added account testing to my server db testing suite</li>
<li>improved the security of the registration_key->access_key transaction; it'll now generate a new access_key with every call</li>
</ul>
<li><h3>version 134</h3></li>
<ul>
<li>updated to wx 3.0.1.1</li>
<li>fixed a critical media scrolling bug due to the wx update</li>
<li>improved some bad media scrolling code, sped things up a bit</li>
<li>fixed 'top' and 'bottom' media scrolling events</li>
<li>fixed a typo that meant the default fullscreen media browsing shortcuts were ctrl+ appended rather than working on their own</li>
<li>overly-verbose errors and other text popups are now cropped to 1KB for gui display, with a notice. the full message will be printed to the log as usual</li>
<li>improved how severe boot crashes are reported</li>
<li>fixed a bit of text-reporting code that wasn't handling non-text very well</li>
<li>improved handling of a weird popup message manager error</li>
<li>fixed an occasional overhasty cleanup error in the checkimportfolders daemon</li>
<li>added options for default values for the thread watcher's number of times to check and check period</li>
<li>fixed the thread watcher complaining about closing when the checking was finished</li>
<li>optimised some id generating code to stop spamming the id cache, which I think was overloading after a while and causing weird PyAssertionErrors</li>
<li>neatened autocomplete dropdown service storage and menu id generation</li>
<li>improved menu id generation for tagbox</li>
<li>fixed opening new petition page from view menu</li>
<li>added a 'this might take ages' warning yes/no dialog when trying to delete a tag service</li>
<li>added a little popup message info to report on progress when deleting a tag service</li>
<li>added some server db testing</li>
<li>fixed an error when double-clicking a tag in a page without search predicates</li>
<li>updated some help links from mediafire to the new github releases page</li>
<li>fixed a typo bug in server db's account flushing code</li>
</ul>
<li><h3>version 133</h3></li>
<ul>
<li>reworked the add file process to correct file repository file counts</li>
<li>made add file process to calculate inbox and local thumbnail count more efficiently</li>
<li>fixed a critical bug in server db creation that was stopping file repository service from working</li>
<li>added go/exit fullscreen options to fullscreen right click menu as alternative for default shortcut 'f'</li>
<li>improved fullscreen position, size, maximised, and borderless state memory</li>
<li>removed old 'fullscreen_borderless' option in local options</li>
<li>thread checker now supports 8chan urls</li>
<li>thread checker now has 'number of checks still to do' spin control so you have more options to fire and forget</li>
<li>improved how the thread checker constructs and passes url information around</li>
<li>improved some thread checker timing logic which _might_ have been causing problems</li>
<li>improved some thread checker error reporting</li>
</ul>
<li><h3>version 132</h3></li>
<ul>
<li>merged two complicated serverside account tables into two simpler tables</li>
<li>with this action, was able to clean out a lot of rubbish old server account code</li>
<li>made it so accounts can only be on one service. existing (admin) accounts that straddled sevices will have new access keys printed in a text file in the base installation directory on server update</li>
<li>rewrote the account object to be simpler and easier to maintain</li>
<li>swapped the old rubbish 'account_id' identifier in the account object for the much better 'account_key' identifier</li>
<li>harmonised some conflicting account-related variable names</li>
<li>refined the way the unknown account is stored and identified</li>
<li>split serverside account verification and identification into two separate paths, to reduce chance of security problems</li>
<li>reworked account identifiers (a general purpose account identifying object that is used in admin-server interactions) and their associated db functions to be more secure and reliable</li>
<li>simplified account data use checking</li>
<li>simplified and harmonised the way used bytes and used requests are stored and retrieved in the account and account type</li>
<li>with guarantee of account_key uniqueness across entire server, I have simplified session code in several places</li>
<li>updated help to reflect the new relationship between access keys and account keys</li>
<li>added 'copy account key' button to review services, which will now be the thing for users to use if they need an admin to modify their account</li>
<li>fixed serverside credential verification for non-instantiated (still have a registration key) access keys</li>
<li>added a bit of explaining text to the 'waiting' autocomplete state</li>
<li>fixed a typo that caused errors when deleting files from a file repo</li>
</ul>
<li><h3>version 131</h3></li>
<ul>
<li>removed tag service precedence and its various expensive and overly complicated effects</li>
<li>recalculated combined tag mappings using new simple union based merge</li>
<li>cleaned updatemappings code, and I think fixed some tiny count logic bugs</li>
<li>refactored eight overly complicated sub-functions of updatemappings down to two simpler ones</li>
<li>fixed up a mention of tag service precedence in help</li>
<li>deleted a bunch of old client update code</li>
<li>added adaptive throttling to tag updates, so they'll speed up and slow down based on current CPU load</li>
<li>refined a bunch of the parent and sibling code, given the new changes</li>
<li>updated and cobbled back together a host of finicky parent and sibling and regular tag test code, given the new changes</li>
<li>fixed a bit of logic in the censorship code that was causing overly broad namespaced matches</li>
<li>fixed error when selecting a specific tag service in a normal search</li>
<li>deleting a service no longer throws an extraneous error after it is complete</li>
<li>fixed danbooru large pngs, which were being resized in a way that broke some of the downloader's url prediction code and caused 404s</li>
<li>fixed a bug in the input custom filter action dialog</li>
<li>fixed a misc clientserviceidentfier bug in custom filter initialisation</li>
<li>fixed setting numerical ratings from a custom filter (I think) and I think fixed many other custom filter operations</li>
<li>fixed several text-entry-dialog-launched-from-dialog bugs</li>
<li>fixed, I really think for real this time, the serverside account desync bug. it was in session init, where I had not previously looked</li>
<li>improved some popup messages' text</li>
<li>improved the way some exceptions are reported</li>
<li>cleaned some error reporting code</li>
<li>silenced the more-annoying-than-useful account sync failure popups</li>
<li>fixed and cleaned server start/stop/restart code a bit more</li>
<li>reduced regular CPU hit from resize thumbnail daemon and made it more polite in starting</li>
</ul>
<li><h3>version 130</h3></li>
<ul>
<li>fixed youtube downloads</li>
<li>fixed remote services not showing in OS X manage services dialog</li>
<li>updated 'running from source' help page with some new info for Linux</li>
<li>cleaned a little more code</li>
<li>fixed bug that was stopping new/modified serverside services booting immediately</li>
<li>improved the server-client service key translation code on serverside service modification</li>
<li>fixed test credentials button in manage services dialog for unsaved services</li>
<li>fixed bandwidth tracking errors for unsaved services</li>
<li>deleted some old unused server options code</li>
<li>improved server services start/stop code a bit more</li>
<li>massively rebalanced the autocomplete maintenance routine after a tag service deletion or tag service precedence change</li>
<li>made a mess of some of the deleted tag update processing code, I'll fix it next week</li>
</ul>
<li><h3>version 129</h3></li>
<ul>
<li>fixed a typo in launching the ratings dialog</li>
<li>did some important code cleanup re a common ambigious variable name</li>
<li>improved serverside account tracking in a way that will help future user management clientside too</li>
<li>improved serverside session code a bit more</li>
<li>improved general serverside login</li>
<li>improved serverside access key verification</li>
<li>aligned server db update code with the client's only-update-up-to-50-versions rule</li>
<li>fixed some buggy repository test code</li>
<li>fixed some buggy local booru test code</li>
</ul>
<li><h3>version 128</h3></li>
<ul>
<li>fixed right click on thumbnail error</li>
<li>improved assumed permission defaults on tag dialogs and right click download/upload actions (i.e. tag dialog's entry A/C will no longer disappear when you desync from tag service)</li>
<li>removed account desync on network version mismatch, to stop this problem anyway</li>
<li>fixed tag parents not showing in autocomplete dropdowns</li>
<li>added sqlite3 command line tool to db folder for convenience</li>
<li>fixed a typo in manage server's services dialog</li>
<li>some misc code cleanup</li>
<li>added default advanced tag options pane to manage options dialog</li>
<li>added default advanced tag options to manage subscriptions dialog</li>
<li>fixed booru namespaces in manage subscriptions dialog to be booru-specific</li>
<li>added default advanced tag options to normal download pages</li>
</ul>
<li><h3>version 127</h3></li>
<ul>
<li>finished service_identifier rewrite, phew</li>
<li>added an exception catch for full program crashes; big errors will now be written to crash.log</li>
<li>added a shutdown check to make sure popup message manager closes properly when certain weird errors occur</li>
<li>'files_service_identifiers_cdpp' is now renamed to the vastly less insane 'locations_manager'</li>
<li>removed db update code older than 50 versions</li>
<li>a new error message will display if trying to update more than 50 versions in one go</li>
<li>many other small fixes I didn't keep track of</li>
</ul>
<li><h3>version 126</h3></li>
<ul>
<li>restored a dll that I thought was no longer needed, but was actually doing some weirder gif rendering</li>
<li>added 'remove' to fullscreen menu</li>
<li>harmonised thumbnail and fullscreen right click menus a bit more</li>
<li>added pause button to popup messages for repo update and subscription processing</li>
<li>moved service_identifier switchover forward</li>
<li>moved all service fetching to streamlined and non-laggy manager</li>
<li>changed client options to store default tag repository in a better way</li>
<li>changed subscriptions to store their advanced tag options in a better way</li>
<li>fixed a 'missing service' bug in advanced tag options</li>
<li>remade idle calculation into a much better gui-based rather than db-based test</li>
<li>fiddled more with maintenance timing, hopefully for the good</li>
<li>new screenshots in the help index pages!</li>
<li>improved how auto repo and server setup work and report their status</li>
<li>the client's UPnP daemon will no longer spam errors if your IGD doesn't support UPnP</li>
<li>fixed a bad db call in server's UPnP daemon</li>
</ul>
<li><h3>version 125</h3></li>
<ul>
<li>moved client splash screen and client boot to application event loop (i.e. your mouse won't hourglass over it now)</li>
<li>splash screen is now draggable</li>
<li>added splash screen for client shutdown</li>
<li>cleaned up shutdown procedure</li>
<li>added detailed A/C timing options</li>
<li>created a new text entry dialog that won't allow ok on empty text</li>
<li>hence fixed a startup bug when a session was created with no name (and likely others!)</li>
<li>further tweaked idle calculation to improve maintenance routine</li>
<li>revised a bunch of the maintenance timer logic</li>
<li>fixed some bugs in the maintenance timer logic</li>
<li>fixed a daemon error reporting typo</li>
<li>fixed another way session data usage tracking could split, server-side</li>
<li>brushed some more dust off the server-side session code</li>
<li>improved some bad image processing nomenclature</li>
<li>took first steps in service_identifier replacement rewrite</li>
</ul>
<li><h3>version 124</h3></li>
<ul>
<li>fixed some more broken gifs (those with funky transparency, I think)</li>
<li>fixed a critical bug in the subscriptions dialog that was causing subscriptions to be deleted</li>
<li>reintroduced old locale code, with minor improvement, to fix number grouping (123,456,789) issue</li>
<li>added a short pre-activation wait to all daemons to reduce more wake-from-sleep problems like the UPnP issue last week</li>
</ul>
<li><h3>version 123</h3></li>
<ul>
<li>rewrote the old gif rendering code to the new system, so gifs with variable framerates now work again!</li>
<li>fixed a bug that was stopping the first zoom of an image from showing if it took more than a frame to render</li>
<li>webms are now zoomable beyond frame border</li>
<li>webms will now respond to keypresses and mouseclicks when cursor is inside their border</li>
<li>added service select to import metadata</li>
<li>if repo sync is paused, either globally or individually, repo will no longer try to regularly sync their accounts</li>
<li>fixed individual repository pause sync</li>
<li>I think I fixed a serverside session synchronisation bug that was causing too-small data usage reports</li>
<li>improved complicated tag action descriptions in manage tag dialog</li>
<li>hastened initialisation of subscriptions daemon</li>
<li>hastened initialisation of subscriptions dialog</li>
<li>neatened all object declarations</li>
<li>fixed a menu bug in OS X</li>
<li>added put a little delay in the upnp daemon, hopefully to stop the error popups after waking from sleep</li>
<li>updated an old hacky bit of locale code that was breaking certain platforms of wx 2.9.5.0</li>
<li>improved animation and other rendering timings on non-windows platforms</li>
<li>improved media focus on non-windows platforms</li>
</ul>
<li><h3>version 122</h3></li>
<ul>
<li>fixed server upnp daemon to use correct port, I think</li>
<li>added client upnp daemon for local booru; it'll update upnp mappings as soon as they are changed</li>
<li>added bandwidth tracking for local booru; it'll even magically update before your eyes in review services</li>
<li>bandwidth limits are tested, so exceeding data usage will result in 403 errors until the next month</li>
<li>moved local booru css to an external file any user can edit</li>
<li>added 'open share in new page' button to local booru review services</li>
<li>fixed local booru display for video, flash, audio, pdf and miscellaneous</li>
<li>fixed local booru render resolution for all media</li>
<li>fixed local booru thumbnails for video, flash, audio, pdf and miscellaneous</li>
<li>added caching headers to static file requests to reduce browser-hydrus bandwidth</li>
<li>fixed local booru page text's newline formatting</li>
<li>added local booru unit tests</li>
</ul>
<li><h3>version 121</h3></li>
<ul>
<li>first version of local booru</li>
</ul>
<li><h3>version 120</h3></li>
<ul>
<li>improved quality of downsized animation rendering</li>
<li>sped up downsized animation rendering in this case</li>
<li>neatened animation code</li>
<li>fixed a mid-animation resize parameter bug</li>
<li>I think I fixed an animation scan bug that was sometimes giving the wrong frames</li>
<li>added thumbnails for all video formats</li>
<li>fixed an off-by-one framecount bug for certain videos, and retroactively fixed counts for existing videos</li>
<li>fixed a couple harmless width/height numpy.shape switcharounds</li>
<li>cleaned up some file parsing code</li>
<li>added a pixiv unit test</li>
<li>fixed a bug when servers were returning unusual relative redirect urls (gelbooru)</li>
<li>semi-fixed a bug when servers were returning unescaped redirect urls (gelbooru)</li>
</ul>
<li><h3>version 119</h3></li>
<ul>
<li>fixed an overzealous error in v118 update code</li>
<li>new direct ffmpeg video decoder for webm</li>
<li>new system takes advantage of multi-core processors, increasing render speed</li>
<li>improved animated frame timings</li>
<li>fixed a number of gifs that were causing the "None has no 'shape' attribute" error</li>
<li>sped up memory and subprocess cleanup after video playback</li>
<li>added some new ffmpeg instructions to the running from source help page</li>
<li>added client and server startup and shutdown statements to the log</li>
<li>improved some idle time logic, which should improve maintenance timings</li>
<li>fixed a critical idle timing bug that was adding 1s to many actions, including file queries!</li>
<li>fixed a pubsub testing bug that was preventing daemons from quickly closing after a unit test</li>
</ul>
<li><h3>version 118</h3></li>
<ul>
<li>improved animated frame buffer size calculation, saving memory and improving smaller animation performance</li>
<li>improved quality of static image thumbnail generation</li>
<li>fixed webm mouse event propagation</li>
<li>updated and improved perceptual hash code</li>
</ul>
<li><h3>version 117</h3></li>
<ul>
<li>fixed the gif rendering error that was causing threading lockup</li>
<li>fixed a bug in the animated drawing code that was causing +5ms duration on every frame</li>
<li>improved frame duration checking code</li>
<li>lowered quality of animated frame resizing to improve effective framerate for previews</li>
<li>fixed a problem with pixiv session management</li>
<li>fixed a problem with pixiv tag subscriptions</li>
<li>neatened an error with pixiv manga download failures</li>
<li>corrected reviewservices hyperlinkctrl initialisation</li>
<li>improved the wording for the 'port already bound' error message on client startup</li>
<li>improved hydrus network session error handling</li>
<li>cleaned up some old gui messaging code</li>
<li>some general image/video code nomenclature cleanup</li>
<li>changed http connection maintenance daemon to be snappier on client shutdown</li>
<li>subscription minimum check period is now 1 time unit, not 0!</li>
</ul>
<li><h3>version 116</h3></li>
<ul>
<li>gifs now render their frames as needed, rather than building a giant memory-hogging cache of all of them</li>
<li>webms now have thumbnails!</li>
<li>refactored important hydrus threading code to a separate module</li>
<li>added new 'call-to' worker threads for snappier job-thread behaviour</li>
<li>fixed a typo that was stopping new repositories being entered in the manage repositories dialog</li>
</ul>
<li><h3>version 115</h3></li>
<ul>
<li>moved review and manage services windows to a local/remote dichotomy</li>
<li>moved local booru service code generally forward</li>
<li>added local booru service to db init/update</li>
<li>added booru to review services</li>
<li>added booru to manage services</li>
<li>neatened some misc client code</li>
<li>improved static/animated image rendering code in general</li>
<li>added some cv stuff to gif rendering code</li>
<li>cleaned up gif rendering code</li>
<li>sped up animated gif rendering by about 5-10 times!</li>
<li>added some cv stuff to static image rendering code</li>
<li>cleaned up static image rendering code</li>
<li>sped up static image rendering up to 4 times!</li>
<li>image import should generally be faster</li>
<li>pulled animated images off the image cache, reducing memory usage</li>
<li>added some clever compression that cuts image cache memory usage in half!</li>
</ul>
<li><h3>version 114</h3></li>
<ul>
<li>gif rendering seems to be fixed in all cases! hooray!</li>
<li>fixed 'pop from empty list' popup error spam in the new cache clearing system</li>
<li>fixed weird behaviour on right-clicking 'dismiss all' popups button</li>
<li>added a unit test for perceptual hash generation, with an eye to moving the delicate code from cv to cv2</li>
<li>updated opencv to 2.4.9</li>
<li>updated pyinstaller, so frozen releases may be a bit more stable!</li>
<li>moved webm and mkv info parsing over to cv, which allows num_frames</li>
</ul>
<li><h3>version 113</h3></li>
<ul>
<li>added mkv+webm support!</li>
<li>fixed some system:mime selection stuff</li>
<li>fixed a missing db call in the server upnp daemon</li>
<li>fixed upnp dialog's edit button</li>
<li>cleaned up upnp dialog's post-button refreshing logic</li>
<li>fixed getupnpmappings to deal with >10 mappings</li>
<li>fixed fullscreen_switch for custom filter</li>
<li>fixed a late canvas drawing exception when fullscreen window was closing due to being media-empty</li>
<li>rolled back to wx 2.9.5 for windows again. not worth the trouble, right now</li>
<li>hydrus caches should now clean up anything older than twenty minutes</li>
<li>'last session' will now be saved every five minutes, rather than only on a successful close</li>
</ul>
<li><h3>version 112</h3></li>
<ul>
<li>A/C dropdown is fixed on linux!</li>
<li>wrote new UPnP library based on miniupnpc multiplat executables</li>
<li>integrated new UPnP library into existing client code</li>
<li>upnp management dialog should now work for os x and linux</li>
<li>integrated new UPnP library into existing server code</li>
<li>added UPnP unit tests</li>
<li>fixed a bug when upnp executable path had whitespace</li>
<li>renamed 'add, remove or edit services' to 'manage services'</li>
<li>fixed some review services frame text display issues for restricted non-repository services</li>
<li>optimised review services frame initialisation db requests</li>
<li>added a database maintenance routine that should help review services launch a bit faster on average</li>
<li>improved manage services layout a little bit</li>
<li>removed initialise server button when it is invalid</li>
<li>updated 4chan thread url parser to handle new 4chan thread urls</li>
<li>redirected 4chan thread downloader to new api address</li>
<li>fixed an error reporting problem in repository sync</li>
<li>fixed my linux dev environment, so linux executable is back</li>
<li>changed wx requirement to 2.9 on linux, due to bugs in linux 3.0.0.0 release</li>
<li>fixed a typo in repository deletion</li>
<li>added repository deletion to unit tests</li>
<li>added num_base and num_step to file path regex dialog</li>
<li>fixed popup display of certain exceptions, including file parsing exceptions</li>
<li>cleaned up os x and linux build scripts, added static&help sync</li>
</ul>
<li><h3>version 111</h3></li>
<ul>
<li>fixed booru searches that include unusual characters like '&'</li>
<li>added pause synchronisation to individual repositories in the manage services dialog</li>
<li>fixed gui_sessions with predicates (again!)</li>
<li>added a unit test for gui_session storage, shouldn't get problems with that again</li>
<li>fixed a getcountlesscopy predicates bug</li>
<li>first step in multi-platform upnp support is DONE, phew</li>
<li>harmonised subscription file import errors with normal hdd import errors. they nshould be a bit clearer</li>
<li>corrected how popup text width is enforced</li>
<li>added a warning to the reset cache button in the manage subscriptions dialog</li>
<li>os x autocomplete dropdown seems to be magically fixed, not sure how or when that happened</li>
<li>started HydrusBooru</li>
<li>fixed some problems with twisted startup/shutdown in unit testing</li>
</ul>
<li><h3>version 110</h3></li>
<ul>
<li>fixed a variable overwriting issue in the subscription daemon error reporting code that was causing error spam</li>
<li>fixed more actual and potential instances of this error elsewhere</li>
<li>fixed a bug in the import file error system for non-local files</li>
<li>fixed url parsing for urls lacking 'http://' or 'https://'</li>
<li>fixed hentai foundry image parsing for two different cases</li>
<li>fixed client gui-initiated db backup to also backup client_updates folder</li>
<li>A/C dropdown now shows current and pending counts separately!</li>
<li>fixed display of uncaught database exceptions</li>
<li>new version of sqlite for windows, might speed some things up a bit</li>
<li>upgraded a bunch of other libraries, look forward to mysterious new bugs!</li>
<li>I _think_ some transparency support is improved</li>
<li>moved messaging forward</li>
<li>dropped processed_mappings experiment</li>
<li>removed a bloated mapping index, hopefully speeding a couple things up</li>
<li>fixed an erroneous error message in hydrus network session manager</li>
</ul>
<li><h3>version 109</h3></li>
<ul>
<li>started processed_mappings table. for now, it mirrors normal mappings table</li>
<li>improved manage tags dialog logic</li>
<li>fixed only_add issue for parent tags</li>
<li>fixed an important tags box surplus tags display bug when focus repository was changed</li>
<li>fixed petitioned tag counts in tag boxes, as long as 'all known tags' is not selected</li>
<li>fixed occasional zero tag count in tags box</li>
<li>added petitioned tags to normal media fetch, not sure why they were missing</li>
<li>fixed a random error when trying to refresh a 'open selection in new page' page</li>
<li>improved help to reflect new manage tags dialog</li>
<li>cleaned up an annoying spam-text-to-console issue when running test.py</li>
<li>reworked the way the server clean/create update daemons interface with the database</li>
<li>improved how updates are stored and fetched in the server db--no longer needs a db hit to fetch</li>
<li>harmonised client db's update naming convention to the server's</li>
<li>improved server db to update the same new-ish way client db does it</li>
</ul>
<li><h3>version 108</h3></li>
<ul>
<li>added 'database->delete orphan files' for manual firing of this maintenance routine</li>
<li>improved redirect location parsing--should fix the booru 'Could not connect to None!' errors</li>
<li>fixed 4chan thread downloader's erroneous 'still working' warning when trying to close while paused</li>
<li>added multiple additions to manage tag parents dialog</li>
<li>added multiple additions to manage tag siblings dialog</li>
<li>generic improvements to both dialogs</li>
<li>manage tags dialog now shows all the selection's tags combined, not just the tag intersection</li>
<li>multiple improvements to manage tags dialog</li>
<li>reworked some tagsbox classes to be more flexible</li>
<li>improved dialogsetupexport's use of tagsbox</li>
</ul>
<li><h3>version 107</h3></li>
<ul>
<li>converted 'namespace blacklists' to more general 'tag censorship'</li>
<li>tag censorship now accepts unnamespaced tag bans</li>
<li>tag censorship now accepts all namespaced tags bans</li>
<li>tag censorship now permits bans for all tag services</li>
<li>fixed several small bugs carried over from the namespace blacklists code</li>
<li>added a bit about tag censorship to help, under advanced.html</li>
<li>fixed youtube downloading</li>
<li>file import dialog now ignores dupe paths</li>
<li>improved update status text in review services window</li>
<li>fixed erroneous capital P on pending menu</li>
<li>fixed shortcut input dialog's ok button</li>
<li>fixed modify tags dialog's admin modify button</li>
<li>added several bits of explanation text to advanced dialogs</li>
<li>added more helpful timestamp to news dialog</li>
<li>neatened export dialog's layout</li>
<li>corrected some double-escaped backslashes in the export filename pattern button menu</li>
<li>fixed modify accounts dialog's http request</li>
<li>improved grammar in db pubsub code</li>
</ul>
<li><h3>version 106</h3></li>
<ul>
<li>download by raw url now sends the correct text to the popup on successful import</li>
<li>first step in peer-to-peer repository sync is complete</li>
<li>repository updates are now stored as local yaml, in the new client_updates folder</li>
<li>repository reset keeps the downloaded updates, only does a reprocess</li>
<li>all repository updates should process faster, especially if you have saved sessions</li>
<li>a lot of misc gui lag should be reduced, especially if you have saved sessions</li>
<li>the way the gui's menubar is updated is massively improved</li>
<li>os x and linux menubar should be less spastic</li>
<li>several improvements to daemon pubsub workflow</li>
</ul>
<li><h3>version 105</h3></li>
<ul>
<li>complete rewrite of message data handling and display</li>
<li>hidden gauge messages will now display correctly</li>
<li>fixed error-display bugs in the log page</li>
<li>massively improved how database errors are generated and displayed</li>
<li>improved and streamlined how other errors are generated and displayed</li>
<li>improved the way all gui elements are deleted from memory</li>
<li>fixed the frequent segfault in os x and linux when closing popup messages</li>
<li>fixed the common segfault in os x and linux when refreshing a query</li>
<li>fixed the occasional segfault in os x and linux when closing a page</li>
<li>fixed pattern shortcut buttons</li>
<li>the 'show deleted' checkbox on manage tags dialog makes a return</li>
<li>neatened several checkboxes so clicking the label text clicks the checkbox</li>
</ul>
<li><h3>version 104</h3></li>
<ul>
<li>first version of export folders is ready</li>
<li>cleaned up all ok and cancel dialog behaviour</li>
<li>cleaned up some misc dialog button code</li>
<li>fixed up some ugly db yaml pubsub stuff</li>
<li>fixed a juddering 100% CPU loop in the subscriptions code</li>
<li>subs and repo sync will now put up a popup gauge</li>
<li>repo sync will now pause mid-update on repository pause</li>
<li>services->pause->stuff will poke daemons to restart more reliably</li>
<li>removed the service status area of the statusbar</li>
<li>fixed 'subscriptions forgetting their tag options' bug</li>
<li>added select invert, thanks to @fluffy_cub for contribution</li>
<li>fixed a slight logic bug with display of select archive/inbox</li>
<li>added better instructions on how to run in OS X from source, thanks to user steenuil for contribution</li>
</ul>
<li><h3>version 103</h3></li>
<ul>
<li>fixed a virtual size issue with expanding collapsible panes inside scrolling windows :S</li>
<li>fixed images not showing on first zoom switch</li>
<li>improved touch and feel of image/flash scanbar</li>
<li>subscriptions dialog is now flattened</li>
<li>reworked advanced_tag_options to be more efficient and flexible</li>
<li>fixed a couple bugs in advanced_tag_options</li>
<li>moved fake http unit tests to a fake version of the new networking system (so much better, now!)</li>
<li>moved real http unit tests to new networking system (so much better, now!)</li>
<li>fixed up a last couple network things</li>
<li>I probably fixed some file upload code, as well</li>
<li>cleared out old network code</li>
<li>fixed a fake pubsub problem in unit tests</li>
<li>made a single new db table for consolidating:</li>
<ul>
<li>4chan_pass</li>
<li>pixiv_account</li>
<li>boorus</li>
<li>favourite_custom_filter_actions</li>
<li>gui_sessions</li>
<li>imageboard_sites</li>
<li>imageboards</li>
<li>import_folders</li>
<li>subscriptions</li>
</ul>
<li>couple small help edits</li>
<li>fixed view->new booru download page</li>
<li>started export folders</li>
</ul>
<li><h3>version 102</h3></li>
<ul>
<li>initial linux release</li>
<li>rewrote running_from_source.html</li>
<li>altered some service object and db stuff to look after null access keys and temp services a bit better</li>
<li>key registration works on new network system</li>
<li>all downloaders use new network system</li>
<li>A/C timer tweaked a little more</li>
<li>did some timer event grammar improvements</li>
<li>improved button behaviour in import files dialog</li>
<li>backing up a server no longer causes a timeout problem</li>
<li>prototype export/import tag metadata is done</li>
<li>rewrote the way animated gif frames are navigated and thrown to screen</li>
<li>fixed an issue that was causing some dialogs to OK when escape was pressed or the close cross was clicked</li>
<li>this above issue included the enter system predicate dialog</li>
</ul>
<li><h3>version 101</h3></li>
<ul>
<li>fixed another update problem for clients &lt;v95</li>
<li>uploading pending content should be less gui-blocking</li>
<li>fixed numpad navigation of page chooser to work for qwerty rather than dvorak as default</li>
<li>os x page picker now obeys arrow and numpad keys for navigation</li>
<li>os x command key should be treated as ctrl now, for better cross-platform compatibility</li>
<li>a couple more cmd/ctrl confusions cleared up</li>
<li>os x menubar disappearing after fullscreen problem fixed</li>
<li>added stateless http connection manager</li>
<li>simplified how http works in hydrus</li>
<li>http connections now used more efficiently</li>
<li>better cookie parsing</li>
<li>better http application shutdown handling</li>
<li>some misc http bugs fixed</li>
<li>new http error handling should limit occasional spam-errors</li>
<li>moved all hydrus http connections to new manager</li>
<li>moved many non-hydrus http connections to new manager</li>
</ul>
<li><h3>version 100</h3></li>
<ul>
<li>MVC import_controller system created</li>
<li>download gauges lag reduced</li>
<li>download cancel button desync bug fixed</li>
<li>download error code harmonised</li>
<li>download async code pushed to threads</li>
<li>download job key checking and management improved</li>
<li>download queue feed timer will obey page-hidden pause status</li>
<li>download success and exception handling harmonised</li>
<li>download on-close thread-signalling much improved</li>
<li>download pages now take responsibility for download code factories</li>
<li>download management panel code harmonised</li>
<li>download management panels made much more MVC</li>
<li>download error reporting is much improved</li>
<li>download fail management is much improved</li>
<li>download button response is much faster</li>
<li>download progress display is split into the easier to read file/queue/builder trichotomy</li>
<li>download display indices are less schizophrenic</li>
<li>lots of misc improvements to download code and nomenclature</li>
<li>thumbnail page's refresh and select menu items now only appear when appropriate</li>
<li>thumbnail page's select menu will only show inbox/archive sub-items when appropriate</li>
<li>thumbnail page's menu is less buggy generally</li>
<li>db updates are now parcelised into each version, rather than one big job</li>
<li>improved db version update notification</li>
<li>a problem with updates from ~v70 to >v95 is fixed</li>
<li>fixed a bug in popup message dismissal</li>
<li>database exception formatting improved</li>
<li>database exception display spam reduced</li>
<li>database exception redundant traceback removed</li>
<li>autocomplete character-search-delay time extended from 150ms to 250ms</li>
<li>async wx window destroy code improved in certain places</li>
<li>improved non-wx-thread popup error reporting</li>
<li>some other bugfix, grammar and nomenclature stuff I can't remember</li>
</ul>
<li><h3>version 99</h3></li>
<ul>
<li>added backup database menu option</li>
<li>added restore database menu option</li>
<li>gone back to wx 2.9.5 for now</li>
<li>fullscreen scrolling should be a bit smoother now</li>
<li>fixed sessions for 'open selection in new window'</li>
<li>new regex shortcut for filename in the 'add tags before importing' dialog</li>
<li>fixed dialogs cancel-closing on an unfocused 'enter'</li>
<li>finally fixed the animation scanbar vertical sizing on preview screen</li>
<li>animation scanbar now shows gif frame rendering progress more smoothly</li>
<li>test.exe now included in windows release</li>
<li>some frame parents code cleanup</li>
<li>a tiny bit of gif code cleanup</li>
<li>deleted some old server code</li>
<li>cleaned up import pause/cancel code</li>
<li>improved hydrus's thread-communication objects</li>
<li>cleaned up downloader code and logic and gui display</li>
</ul>
<li><h3>version 98</h3></li>
<ul>
<li>update to wxpython 3.0</li>
<li>you can now add tags when importing from a zip</li>
<li>you can now download arbitrary urls from download->a raw url</li>
<li>'select files to import' dialog has massively improved file parsing, with:</li>
<ul>
<li>new gauge location</li>
<li>queueable parse jobs</li>
<li>paths that stream as they are parsed</li>
<li>pause/cancel buttons</li>
</ul>
<li>new 'check credentials' button in manage services dialog</li>
<li>new access_key_verification server request</li>
<li>fixed a very important bug that affected normal tags when adding parents or siblings</li>
<li>fixed a bug where old pending parents would not be remembered when new same-child parents were later pended</li>
<li>fixed a similar bug where rescinding parent pends would screw things up</li>
<li>pending counts will new correctly update on a sibling or parent pend rescind</li>
<li>parent tags no longer (incorrectly) remove when:</li>
<ul>
<li>removing 'just this file' child tags in 'add tags before importing' dialog</li>
<li>removing child tags in custom filter</li>
</ul>
<li>some youtube videos were not downloading due to a redirect issue. it is improved, possibly fixed completely</li>
<li>collapsible panes, like 'advanced import options', will refit dialogs on collapse/expand</li>
<li>fixed an bug in the way certain server errors were handled</li>
<li>fixed a serverside bug for GET account when using account_id as identifier</li>
<li>fixed 'modify petitioner' button in petition pages</li>
<li>fixed a bug that was preventing clearing of temp path on client startup</li>
<li>cleaned up some credentials code</li>
<li>some general code grammar improvement</li>
<li>reworded some help</li>
<li>reworked account identifiers</li>
<li>os x</li>
<ul>
<li>now has an app icon, woop</li>
<li>os x page closing logic improved</li>
<li>collections checkbox dropdown seems to work, now</li>
<li>fixed segfault on popup message close</li>
<li>thumbs loading from initial session seems to draw properly, sometimes</li>
<li>fullscreen no longer causes segfault whenever you zoom or scroll</li>
</ul>
</ul>
<li><h3>version 97</h3></li>
<ul>
<li>initial os x test build</li>
<li>collect typo fixed</li>
<li>'remove all mappings with specific namespace' added to advanced content update dialog</li>
</ul>
<li><h3>version 96</h3></li>
<ul>
<li>went over _all_ my help (about 200KB of text!), cutting down waffly paragraphs, rewritting bits that were stiff or unclear, updating screenshots, and adding several new sections people suggested</li>
<li>did a complete rewrite of how the client stores services in its database, streamlining everything</li>
<li>several bugs exposed by the services rewrite fixed</li>
<li>several moments of weirdness exposed by the services rewrite made more sane</li>
<li>new version of sqlite (3.8.2)</li>
<li>new version of python (2.7.6)</li>
<li>cleaned up a debug print statement that was spamming gauge numbers to the log</li>
<li>when loaded from a session, hdd import pages will now hide their processing panel</li>
<li>fixed namespace sorting to manage numbers again</li>
<li>collapsed the many different download gallery page classes to a single one</li>
<li>started an important rewrite of how downloaders are going to work in future</li>
<li>improved testing framework's pubsub testing support</li>
<li>subs sync daemon now restarts correctly after a dialog-driven pause</li>
<li>parents now obey siblings!</li>
<li>siblings and parents are updated on forget pending</li>
<li>got AMP message between persistent and temporary peers working</li>
</ul>
<li><h3>version 95</h3></li>
<ul>
<li>pages launched from a session will no longer run their query on startup; they will remember their thumbnails</li>
<li>import pages added to gui sessions, although they do not yet remember their progress</li>
<li>the way session pages are started is improved</li>
<li>advanced content update dialog simplified and rearranged</li>
<li>advanced content update db code written for copy operation</li>
<li>advanced content update db code written for delete operation (local service only)</li>
<li>advanced content update db code written for delete deleted operation ( local service only)</li>
<li>made first version of IMMessage objects</li>
<li>added network version checking to hydrus's AMP</li>
<li>better AMP error catching and reporting added</li>
<li>AMP tests moved further forward</li>
<li>tightened up AMP network code, fixed last bugs</li>
<li>cleaned up a huge pile of 'expiry/expires/expiration' semantic mess</li>
<li>same for some mapping_ids/mappings_ids stuff</li>
<li>removed predicate knowledge from media display classes, which was just a mess, really</li>
<li>corrected a weird param order in sessions</li>
<li>general code cleanup</li>
<li>several old instances of tuple-list yaml compromise removed</li>
<li>fixed a session bug in the testing code because of last week's manager management change</li>
<li>fixed a hydrus session bug for accounts with no expiry</li>
<li>fixed a very important server-side network version checking bug</li>
<li>added client-side network version checking</li>
</ul>
<li><h3>version 94</h3></li>
<ul>
<li>reorganised the 'add tags from path' dialogs so the regex buttons made a little more sense</li>
<li>when deleting a file, the current focus will pre-defocus</li>
<li>'confirm close client' dialog will now auto-yes after 15 seconds</li>
<li>fixed a bug when POST hydrus queries couldn't return any data</li>
<li>'failed to update repository' message made simpler</li>
<li>added tuples to pyyaml's safe_loader (which was more of a pain than I expected)</li>
<li>manager management improved, with changes reflected across all the code</li>
<li>session management prototype is done</li>
<li>query pages can be added to sessions</li>
<li>default startup session can be set in options</li>
<li>sessions are managed with new submenu under file</li>
<li>creating registration keys will show them in a new, more helpful frame</li>
<li>same for initialising a server</li>
<li>and for auto server setup</li>
<li>auto server setup has cleaner error reporting</li>
<li>new service admin accounts now have different access keys to the server admin account</li>
<li>fixed up testing framework to test AMP a bit better</li>
<li>IM session manager written</li>
<li>server db support for new session manager added</li>
</ul>
<li><h3>version 93</h3></li>
<ul>
<li>can now undo/redo all tag operations except rescind petition</li>
<li>can now undo/redo file pending, rescind pending and petition</li>
<li>improved undo/redo description generation</li>
<li>fixed a bug that was showing extraneous undo/redo actions that did nothing</li>
<li>review services frame's permissions strings will size a little better</li>
<li>new 'perform a service-wide update' button on review services frame</li>
<li>started tag-specific dialog for this new button, and began db code that'll execute its stuff</li>
<li>a little code reorganisation</li>
<li>fixed a bug in the export dialog that was throwing errors when trying to overwrite read-only files</li>
<li>moved a number of old dialog error messages to the new verbose popup system</li>
<li>when accounts are made stale (as part of client version update), they will no longer lose their privileges</li>
<li>fixed the log page to deal with (ignore) gauge messages</li>
<li>fixed a db problem in my testing framework</li>
<li>AMP IM support moved way forward</li>
<li>IM manager first draft done</li>
</ul>
<li><h3>version 92</h3></li>
<ul>
<li>encrypted instant messaging framework started</li>
<li>encrypted instant messaging test added</li>
<li>encrypted instant messaging trust framework started</li>
<li>started an AMP framework for encrypted instant messaging</li>
<li>tag A/C exact match parameter added</li>
<li>tag A/C exact match parameter test added</li>
<li>tag A/C logic reorganised and improved</li>
<li>tag A/C now gives exact matches for queries shorter than the A/C threshold</li>
<li>tag A/C threshold default set to 2</li>
<li>fixed an important architectural bug in pubsub</li>
<li>generally cleaned up pubsub code</li>
<li>'popup messages sometimes not updating' problem is fixed</li>
<li>a bit of initialisation cleanup to make startup behaviour more reliable</li>
</ul>
<li><h3>version 91</h3></li>
<ul>
<li>improved how accounts are identified in the server</li>
<li>rewrote how serverside session data is managed</li>
<li>added monthly data reset to session data</li>
<li>fixed session update on account modification</li>
<li>fixed a bug in accountidentifier generation from accounts</li>
<li>fixed a bug in account-multi-session tracking</li>
<li>server session manager unit test added</li>
<li>reworked testing to take arguments to only run specific tests</li>
<li>changed all file downloads to be more memory efficient, either by gui or subscription</li>
<li>made download testing fail better</li>
<li>added deviant art unit test</li>
<li>fixed deviant art thumb parsing error</li>
<li>fixed deviant art fullsize image parsing error</li>
<li>undo system reworked in prep for first prototype</li>
<li>undo/redo keyboard shortcuts (ctrl-z and -y) infrastructure added and db updated</li>
<li>undo works for fullscreen</li>
<li>a bunch of fullscreen keypress processing improved</li>
<li>undo manager testing added</li>
<li>added upnp option to all services</li>
<li>added upnp daemon to maintain upnp serverside</li>
<li>'copy all tags' and 'copy all tags with counts' added to tagslists</li>
<li>rejiggered a bit of the app startup, including db password check</li>
<li>found a better error noise</li>
<li>in fullscreen, the mouse cursor will no longer auto-hide when over an animation scanbar</li>
</ul>
<li><h3>version 90</h3></li>
<ul>
<li>client db unit tests added:</li>
<ul>
<li>4chan_pass</li>
<li>autocomplete_tags</li>
<li>booru and boorus</li>
<li>downloads</li>
<li>favourite_custom_filter_actions</li>
<li>imageboard</li>
<li>import_folders</li>
<li>md5_status</li>
<li>media_results</li>
<li>namespace_blacklists</li>
<li>news</li>
<li>pixiv_account</li>
<li>improved services</li>
<li>sessions</li>
<li>shutdown_timestamps</li>
</ul>
<li>fixed modify account</li>
<li>fixed modify account again!</li>
<li>made account_info respond a lot faster with large tag counts</li>
<li>neatened some client db code</li>
<li>youtube 'file already deleted' error now reported correctly</li>
<li>youtube general error reporting improved</li>
<li>fixed multiple-computer-single-account data use reporting</li>
<li>moved file parsing from nested dialogs to a single popup message gauge</li>
<li>fixed an export folder path-display issue when an install moves location</li>
<li>improved how some file downloaders process their files</li>
<li>added prototype file download status bars to all download management panels</li>
<li>fixed a bunch of tests that were cleaning up inelegantly</li>
</ul>
<li><h3>version 89</h3></li>
<ul>
<li>fixed blacklist manager for numtags</li>
<li>fixed a sql typo for numtags</li>
<li>delete from fullscreen menu fixed</li>
<li>fixed a unicode error-handling issue</li>
<li>sped up autocomplete tag fetch for large result sets</li>
<li>improved the way autocomplete dropdown scrolls</li>
<li>vastly improved efficiency of how all listboxes draw</li>
<li>the server will no longer start if something is using the server admin port</li>
<li><i>i.e. you can no longer run multiple copies of the same server by accident</i></li>
<li>improved client and server port change (service shutdown and restart)</li>
<li>improved testing framework to handle fake db reads better</li>
<li>improved testing framework to manage client and server sessions</li>
<li>several network request unit tests added:</li>
<ul>
<li>access_key</li>
<li>account</li>
<li>account_info</li>
<li>account_types GET</li>
<li>account_types POST</li>
<li>file_repo file</li>
<li>file_repo thumbnail</li>
<li>init</li>
<li>ip</li>
<li>news</li>
<li>petition</li>
<li>registration_keys</li>
<li>services GET</li>
<li>services POST</li>
<li>session_key</li>
<li>stats</li>
<li>update GET</li>
<li>update POST</li>
</ul>
<li>fixed clientside permissions exception</li>
<li>several db unit tests added:</li>
<ul>
<li>import_file</li>
<li>system_predicates:</li>
<ul>
<li>age</li>
<li>archive</li>
<li>duration</li>
<li>everything</li>
<li>file_service</li>
<li>hash</li>
<li>height</li>
<li>inbox</li>
<li>local</li>
<li>mime</li>
<li>not_local</li>
<li>num_tags</li>
<li>num_words</li>
<li>ratio</li>
<li>similar_to</li>
<li>size</li>
<li>width</li>
<li>limit</li>
</ul>
</ul>
<li>fixed a bug in system:age?</li>
<li>fixed a bug in system:duration&lt;0</li>
<li>fixed a bug in system:duration?0</li>
<li>improved num_tags logic</li>
<li>fixed system:num_tags&lt;1</li>
<li>fixed system:num_tags&gt;1</li>
<li>fixed a hash filter bug for system:similar_to</li>
<li>fixed system:similar_to for unknown hashes</li>
<li>fixed system:size Bytes</li>
<li>updated linux.html and running_from_source.html in help</li>
</ul>
<li><h3>version 88</h3></li>
<ul>
<li>moved server daemon start to a better place</li>
<li>cleaned up more server db code</li>
<li>fixed getnumpetitions</li>
<li>fixed getpetition</li>
<li>reworked modifyservices and fixed server request</li>
<li>reworked modifyservices dialog to work with new system</li>
<li>server service options now managed from modifyservices dialog; old options dialogs deleted</li>
<li>auto-repository setup restored and fixed</li>
<li>harmonised edit_log actions all across the code</li>
<li>added namespace blacklist manager</li>
<li>added namespace blacklist dialog</li>
<li>integrated namespace blacklist into:</li>
<li><ul>
<li>search by tag</li>
<li>search by tag count</li>
<li>creating media results (thumbnails)</li>
<li>autocomplete tags read</li>
<li>autocomplete tags write</li>
</ul></li>
<li>fixed a problem with deleted tags not being applied correctly on initial thumbnail display</li>
<li>started a server unit testing framework</li>
<li>added 'running in linux' info to help</li>
</ul>
<li><h3>version 87</h3></li>
<ul>
<li>misc:</li>
<li><ul>
<li>fixed system:untagged, which was doing numtags>0 by accident</li>
</ul></li>
<li>basics:</li>
<li><ul>
<li>moved client local service to twisted</li>
<li>moved server to twisted</li>
<li>cleaned up a whole lot of unrelated server stuff I haven't touched in a while</li>
<li>fixed some misc typos</li>
</ul></li>
<li>details:</li>
<li><ul>
<li>built twisted server framework to plug into hydrus</li>
<li>changed hydrus authorisation header</li>
<li>changed sessions to manage accounts, reducing server db load</li>
<li>reworked session cookie to be neater</li>
<li>cleaned up a bunch of server code</li>
<li>fixed how certain server errors were being printed to the log</li>
<li>reworked response_context to a body/path dichotomy to reduce cpu+memory on file requests</li>
<li>collapsed a bunch of GET POST requests to the same path</li>
<li>reworked server_service_identifiers to be port-independant</li>
<li>improved data use logging to support new session management system</li>
<li>moved session management to new system</li>
<li>moved error management to new system</li>
<li>integrated twisted thread into hydrus controller</li>
<li>reworked root and favicon</li>
<li>reworked local file and thumbnail requests</li>
<li>reworked restricted service requests</li>
<li>reworked admin service requests</li>
<li>reworked repository service requests</li>
<li>removed manage options query; it'll be rolled into manage services admin queries</li>
<li>updated serverdb to manage with new system, harmonising internal and external requests to one workflow</li>
<li>made server-side data use tracking simpler</li>
<li>added Content-Type header to most requests</li>
<li>improved how key registration, init, and account GET requests are handled client-side</li>
<li>harmonised how account_keys are created server-side</li>
<li>moved server management from serverdb to servercontroller, with better pubsub restart</li>
<li>moved several useful functions to the new serverconstants.py</li>
<li>fixed a max_age sessions issue</li>
</ul></li>
</ul>
<li><h3>version 86</h3></li>
<ul>
<li>timeout on connections improved</li>
<li>rewrote the objects behind the dumper</li>
<li>the dumper should now select media properly again</li>
<li>closed pages now timeout after an hour</li>
<li>upgraded to new version of sqlite</li>
<li>fixed client port bind detection and error reporting</li>
<li>you can set the client's local server's port in client options</li>
<li>local server port changes will happen when dialog changes</li>
<li>unified the upload and youtube download popup messages into one popup</li>
<li>fixed changing thumbnail size (stupid typo!)</li>
<li>added 'database->regenerate all thumbnails' to fix certain thumbnail errors</li>
<li>add a popup gauge for regen all thumbnails</li>
<li>fixed yesno dialogs, which were showing a neutral 'Cancel' button rather than a red 'no'</li>
<li>the upnp dialog's buttons now work, have fun with it!</li>
</ul>
<li><h3>version 85</h3></li>
<ul>
<li>updated to new version of wxpython</li>
<li>several key_down events moved to char_hook</li>
<li>rewrote collapsiblepane class to remove weird refit and scroll behaviour</li>
<li>a problem with adding service via a registration key is fixed</li>
<li>tag upload pending is granulated into separate queries, to reduce server and client lag</li>
<li>uploads moved to an asynchronous popup message with a gauge, rather than the modal progressdialog</li>
<li>reorganised file upload content_updates to be a bit smoother</li>
<li>fixed a redirection bug that wasn't obeying schema changes such as http->https</li>
<li>updated e621 url to https schema</li>
</ul>
<li><h3>version 84</h3></li>
<ul>
<li>switch fullscreen button added to fullscreen canvases</li>
<li>messaging stuff is disabled for now</li>
<li>gif scanbars now fill up as the frames render</li>
<li>pngs with transparency are no longer drawn with black background after first viewing</li>
<li>made a small change to listbooks to correct some gui-weirdness, particularly in local options</li>
<li>autocomplete dropdown windows will now hide-and-reposition on parent scroll events</li>
<li>autocomplete hide-and-reposition waits 250ms rather than 100ms, making it a little less flickery</li>
<li>a graphical bug related to hitting end on a large search is fixed</li>
<li>upnp framework started</li>
<li>services->manage local upnp started</li>
<li>new messagegauge added</li>
<li>fixed mp4 import</li>
<li>youtube url->formats added</li>
<li>youtube format chooser dialog added</li>
<li>youtube downloader thread added</li>
<li>youtube gauge popup added</li>
<li>youtube error handling improved</li>
<li>youtube num_bytes_done added</li>
<li>youtube unknown total_num_bytes handled</li>
<li>youtube cancel button added</li>
<li>youtube right click dismiss throws up a yes/no dialog to decide whether to cancel the download</li>
<li>started manage upnp dialog</li>
<li>closed page undo added</li>
<li>closed pages will be paused and quiet</li>
<li>pause import folders option added</li>
<li>fixed an invalid index drawing bug after removing certain media</li>
<li>thumbnail waterfall improved</li>
<li>tags are limited to 1024 characters</li>
</ul>
<li><h3>version 83</h3></li>
<ul>
<li>sort by longest fixed for files with no duration</li>
<li>reverse sort by rating fixed for files with no rating</li>
<li>sort by largest, newest fixed for files with unknown size or timestamp</li>
<li>sort by unknown/absent values sorts more accurately</li>
<li>search by num_tags and min_num_tags fixed</li>
<li>remove media thumbnail update bug fixed</li>
<li>currently viewable indices screwed up after a remove media bug fixed</li>
<li>remove all media entire black screen bug fixed</li>
<li>delete media redraw optimised</li>
<li>several message print unicode/raw byte errors fixed</li>
<li>scrollbar position calculation improved, so 'black rectangle on scrolled thumbnail canvas when num_cols changed after resize' bug should be fixed</li>
<li>'tiny black lines on small slider drag' bug fixed</li>
<li>moved a bunch of right_up events to right_down, see what you think</li>
<li>popup message cleanup is better on shutdown</li>
<li>pubsub typeerrors handled more gracefully</li>
<li>improved how options init and update works</li>
<li>client will now remember the restored size, restored position, maximised state, and screen the gui was last left at</li>
<li>client will remember all the same details for fullscreen, separately</li>
<li>these sizes _should_ rescue from offscreen if you disconnect/reposition a non-primary display</li>
<li>shift+home/end now scrolls and selects, rather than only buggily scrolling</li>
<li>I fixed a content_update bug re petitions</li>
<li>'show in new page' pages will no longer show search subbox</li>
<li>added hentai foundry tests</li>
<li>fixed hentai foundry title and creator tag parsing in certain cases</li>
<li>fixed some related html unicode issues</li>
<li>initial value on tag siblings dialog fixed</li>
<li>tag siblings and parent dialogs now start sorted by the right column (parent/older sibling)</li>
<li>setting a default collect will no longer cause a nasty crash!</li>
<li>setting an orphaned default collect will no longer cause problems</li>
<li>deselect thumbnails has improved focussed media management</li>
<li>can now select inbox or archive from right click menu</li>
</ul>
<li><h3>version 82</h3></li>
<ul>
<li>a bug where slow search results would sometimes appear after search predicates were removed has been fixed</li>
<li>a lot of autocomplete gui- and db-blocking reorganisation</li>
<li>searches are now entirely asynchronous to gui thread</li>
<li>searches are split into two granular phases, and are cancellable during processing</li>
<li>simplified system predicate storage</li>
<li>consolidated all system predicate filtering to initial db search</li>
<li>huge improvements to how the thumbnail canvas is sized and extended and drawn to</li>
<li>numerous fixes and improvements to how thumbnails are drawn to screen</li>
<li>reworked how collect works</li>
<li>and sort</li>
<li>the raw cpu time behind sorting in muuuuuuuch faster</li>
<li>clarified my listening media class</li>
<li>added another optimisation to canvas resizing</li>
<li>big improvement to canvas redrawing and refreshing</li>
<li>important fix in how client figured out what to draw when clicking in whitespace</li>
<li>thumbnail fade is much smoother</li>
<li>thumbnails should now generally draw a little smoother</li>
<li>selectall and selectnone's thumbnail fade is less cpu intensive</li>
<li>cleared up a number of collect related selection and index bugs</li>
<li>fixed a media identifier issue</li>
<li>all import-related append and drawing is muuuuch faster</li>
<li>flicker bug on small appends fixed</li>
<li>fixed a page up/down drawing bug on the main thumbnail canvas view</li>
<li>fixed an unknown-timestamp thumbnail right click issue</li>
<li>made my internal media data storage system a lot simpler</li>
<li>new sortedlist class to make some media stuff easier to manage</li>
<li>reworked how new media is added to a page of thumbs (usually import-append, but the new system supports collect- and sort-sympathetic insertion):</li>
<li>-calculating combined tags on the left can be up to ten times faster</li>
<li>-integrating new files into the sort is much quicker</li>
<li>-integrating new files into the collect is much quicker</li>
<li>-improved how new thumbnails are decided to be drawn</li>
<li>trying to archive or inbox more than one file, you'll get a yes/no dialog to confirm</li>
<li>started db testing framework</li>
<li>db tracebacks improved</li>
<li>slimmed down content_update data-side processing</li>
<li>a couple small code fixes</li>
<li>archive and inbox no longer remove from the search if the opposite system predicate is set</li>
<li>system:rating fixed</li>
<li>fixed a bug where you could middle-click-download files that had no known source</li>
<li>couple of bugs with system:ratio fixed</li>
<li>system:ratio string representation is 16:9, rather than 1.777779</li>
<li>gui thread is more intelligent in telling non-gui threads that it is busy</li>
</ul>
<li><h3>version 81</h3></li>
<ul>
<li>mp4 added</li>
<li>mp4 mime search added</li>
<li>wma added</li>
<li>wma mime search added</li>
<li>wmv added</li>
<li>wmv mime search added</li>
<li>changed to video and audio icons, rather than one for each mime</li>
<li>popup messages now dismiss on RIGHT_UP rather than RIGHT_DOWN</li>
<li>moved many more messagebox errors to the new popup error system</li>
<li>cleaned up clientgui's superfluous error handling</li>
<li>rewrote error redirection to new popup system</li>
<li>more error overhaul</li>
<li>print statements overhaul</li>
<li>better db updated statement, through popup system</li>
<li>traceback show/hide button added to new popup error box</li>
<li>copy button added to new popup error box</li>
<li>added a 'x more messages/dismiss all' popup when there are more than ten messages to display</li>
<li>review services refresh account button will disable until the server replies</li>
<li>file system predicate dialogs have better initial focus</li>
<li>streamlined server file import and improved respective data usage calc</li>
<li>made internal options storage a lot more efficient</li>
<li>cleaned up a little cache code</li>
<li>export to zip improved to new file handling system</li>
<li>upload to repo improved to new file handling system</li>
<li>some db write priority stuff switched around and renamed</li>
<li>streamlined a little client db workflow</li>
<li>neatened client db exception handling</li>
<li>db updated message is now a popup</li>
<li>removed some orphaned methods in client db</li>
<li>client file and thumbnail server requests made a bit faster and neater</li>
<li>removed db loop from export and dump file fetch</li>
<li>neatened some client and server file 404 exception paths</li>
<li>further cleaned up the way file paths are calculated and fetched</li>
<li>further cleaned db in relation to files, and removed the old mime cache, for both server and client</li>
<li>removed orphaned db export infrastructure</li>
<li>add_thumbnails in client made simpler</li>
<li>improved http response parsing</li>
<li>refactored a bunch of http response processing</li>
<li>new exception display system added for caught exceptions</li>
<li>fixed a shutdown hang on certain delete orphans failure</li>
</ul>
<li><h3>version 80</h3></li>
<ul>
<li>manage tags and ratings dialogs have their initial focus corrected</li>
<li>custom filter now obeys tag parents for tag actions</li>
<li>fixed an annoying as hell multiple-page shared-thumbnail visual-selection-status bug</li>
<li>added e621 test</li>
<li>fixed e621 tag parsing, including new species namespace</li>
<li>might have fixed a missing thumbnail error</li>
<li>fixed system:hash</li>
<li>fixed some repo file downloading stuff</li>
<li>fixed some general db fetching file info stuff</li>
<li>made x files imported from y message a little slimmer</li>
<li>fixed minsize for the main gui frame</li>
<li>added better initialsize for the fullscreen frame</li>
<li>putting a thread url into the thread_id part of the dumper will auto-convert to the thread_id</li>
<li>added dumper's multipart form data generation test</li>
<li>added generic multipart form data generation test</li>
<li>fixed dumper unicode issue</li>
<li>error reporting in dumper is a little better</li>
<li>streamlined how mime is calced</li>
<li>massively improved how mp3, flac and ogg are parsed and validated</li>
<li>massively improved the internal import files workflow to use less memory and hdd reads and writes, particularly for video</li>
<li>similarly improved server-side import workflow</li>
<li>the way temp dir works is improved</li>
<li>sped up server file/thumbnail fetch</li>
<li>reworked how thumbnails are fetched in a couple places</li>
<li>started rework of how options is stored</li>
<li>wrote mp4 properties parser, but no mp4 just yet</li>
</ul>
<li><h3>version 79</h3></li>
<ul>
<li>popup messages will now report whenever a subscription or import folder successfully imports some files, with a button to show them in a new search</li>
<li>popup messages now wrap</li>
<li>slightly better error popup</li>
<li>many more errors reported through error popup</li>
<li>old logging system switched over to new messaging system</li>
<li>popup message manager will only show ten messages at once, now</li>
<li>selectfromlistofstrings now supports enter key to select</li>
<li>completely reworked how dialog cancel works; absolutely all dialogs should now close with escape key</li>
<li>reworked how a bunch of dialogs do ok</li>
<li>a huge amount of dialog refactoring</li>
<li>made ok button initial focus of all dialogs</li>
<li>couple of bugs in service options dialog fixed</li>
<li>rejiggered some button names and focus behaviour a bit more</li>
<li>some classname refactoring</li>
<li>muchly improved string->unicode handling</li>
<li>improved timestamp generation</li>
<li>fixed a clientserviceidentifier->text bug</li>
<li>reworked how namespace cache in tagsmanager object is calculated</li>
<li>improved instantiation of noneablespinctrls</li>
<li>fixed a bug in the thumbnails download daemon</li>
<li>changed the way daemons wait for the db, much to the better</li>
<li>moved daemons out of the db object</li>
<li>rejiggered writedaemon synchrony so exceptions work</li>
<li>fiddled around with some help links</li>
<li>default, non-maximised size of client is a little more comfortable</li>
<li>custom filter now has a popup that'll let you change the custom actions mid-filter</li>
<li>server now uses new synchronous logging system</li>
<li>fixed an options save bug for server</li>
<li>updated server diagram in help</li>
<li>added test for dialog selectfromlistofstrings</li>
<li>added test for dialogyesno</li>
<li>made a framework for testing that requires network stuff</li>
<li>made a newgrounds test</li>
<li>fixed newgrounds swf parsing</li>
<li>made a framework for testing that requires file reads and writes</li>
<li>fixed a graceful-exception bug in mime parsing</li>
<li>added test for synchronous import_folders</li>
<li>added test for delete import_folders</li>
<li>wrote a test for importfolders daemon</li>
<li>import folders no longer delete or reattempt failed imports; they'll just ignore them</li>
<li>import folders are deleted on update, since old objects are obselete</li>
<li>import folders won't try to do zips any more; they'll just ignore them</li>
<li>rejiggered how import folders does its path parsing to remove mime calc cpu usage</li>
</ul>
<li><h3>version 78</h3></li>
<ul>
<li>expanded parents testing with a namespace example</li>
<li>made getgstvcp in tags manager only return numbers for vcp</li>
<li>refactored ManageDialogs to their own file</li>
<li>refactored Exceptions to their own file</li>
<li>improved my testing framework so it can do wx gui elements</li>
<li>added test for dialogchoosenewservicemethod, fixed a typo</li>
<li>added test for dialogfinishfiltering</li>
<li>added test for dialogfinishratingfiltering</li>
<li>those two finish filter dialogs are a little simpler, now</li>
<li>set up a system so dialogs are a bit simpler, in terms of button event processing</li>
<li>added test for dialogfirststart</li>
<li>added 'add parent to tag' on tag right click menu</li>
<li>added 'add sibling to tag' on tag right click menu</li>
<li>made manage parents/siblings dialog focus selection more intelligent</li>
<li>'audio - any' mime search fixed</li>
<li>reworked audio embed container significantly</li>
<li>added embed button</li>
<li>all noisy mimes are now protected by embed button</li>
<li>you can now rescind pending file uploads or petitions from thumbnail right click menu</li>
<li>fixed a redundant bit of code in process content updates</li>
<li>in modify account dialog, set account expiry to 'does not expire' fixed</li>
<li>logging now happens a little more synchronously for client</li>
<li>popup messages prototype done</li>
<li>popup message for normal text</li>
<li>popup message for some errors</li>
<li>fixed a small redundancy bug in data cache</li>
<li>fixed a localisation bug when converting numbers (1234) to formatted version (1,234, 1.234, 1 234)</li>
<li>improved the code behind 'open selection in new page' in two ways</li>
</ul>
<li><h3>version 77</h3></li>
<ul>
<li>tag parents manager unit tests done</li>
<li>completely rewrote parents pair generation</li>
<li>rewrote parents pair retrieval to be much faster</li>
<li>parents manager is much more resistant to loops</li>
<li>in two ways!</li>
<li>loop detection fixed in manage parents dialog, as well</li>
<li>fixed how deleted parents are applied to combined service identifier</li>
<li>fixed how deleted parents are applied to specific service identifier</li>
<li>tag manager unit tests done, and everything was working ok!</li>
<li>shuffled objects around a bit, unified some tag code</li>
<li>tag manager merge unit tests done, and everything was working ok!</li>
<li>tag manager merge code simplified and result rewritten to a new, simpler class</li>
<li>small bug in how preview canvas fetches tags fixed</li>
<li>finished off import folders daemon</li>
<li>added import folders gui</li>
<li>added flac support</li>
<li>added ogg support</li>
<li>added a secondary layer of mime detection for greater accuracy</li>
<li>added a tertiary layer of mime detection for greater mp3 accuracy!</li>
<li>fixed an offset bug in mime detection</li>
<li>simplified and unified client/server file info parsing</li>
<li>import error handling improved</li>
<li>neatened how special thumbs are stored, refreshed, and retrieved</li>
<li>neatened how the bmp->png conversion happens</li>
<li>improved hash->mime caching for both client and server, to speed up http retrieval time for the new filetypes</li>
<li>better mime fetch in dumper, too</li>
<li>improved debugging messages for a bunch of my custom objects</li>
</ul>
<li><h3>version 76</h3></li>
<ul>
<li>made unit testing framework</li>
<li>tag siblings object now tested properly</li>
<li>hydrusdownloading functions now tested properly</li>
<li>added simple mp3 support to client, with external launch or embed</li>
<li>added search by mp3 mime</li>
<li>added mp3 to server</li>
<li>higher precedence deleted tag siblings now overrule lower existing pairs</li>
<li>tag sibling closed loop pairs ( a, a ) are skipped</li>
<li>neatened predicate sibling matching in two ways</li>
<li>improved tag autocomplete matching logic</li>
<li>skip logic improved for like ratings filter</li>
<li>skip logic improved and button added for numerical ratings filter</li>
<li>did a little work on reducing memory usage</li>
<li>reordered data cache's memory purge, which will make huge images load better</li>
<li>fixed a zoom bug with pdf buttons</li>
<li>added some select all, select none and refresh to thumbnail right click menus</li>
<li>reorganised menus a bit anyway</li>
<li>fullscreen tags on the left are now sibling-collapsed</li>
</ul>
<li><h3>version 75</h3></li>
<ul>
<li>fullscreenpopup window added</li>
<li>fullscreenpopup window can be dragged about</li>
<li>fullscreenpopupfilterinbox</li>
<li>fullscreenpopupfilterlike</li>
<li>fullscreenpopupfilternumerical</li>
<li>accuracy slider moved to popup</li>
<li>compare same image until done added to popup</li>
<li>keep on left/random/right added to popup</li>
<li>'don't ratings filter this' added to popup</li>
<li>that annoying as hell thumbnail selection drawing state bug is fixed</li>
<li>display of flash with only one frame fixed</li>
<li>downloaded tags now work again, sorry for the disruption!</li>
<li>deleted tags will now always show in manage tags dialog</li>
<li>fixed the various problems that were stopping DELETED->PENDING->CURRENT working for tags</li>
<li>fixed the children can only have one parent bug</li>
<li>fixed a deleted tag parents bug</li>
<li>a little counting logic improved in the special deleted_pending case</li>
<li>fixed a typo re uploading file to a repo</li>
<li>main guis statusbar now has a little 'db locked' indicator</li>
</ul>
<li><h3>version 74</h3></li>
<ul>
<li>flash scanbar added</li>
<li>made new mediacontainer class for media canvas</li>
<li>extracted scanbar to separate class</li>
<li>made animation frame tracking and control more sensible overall</li>
<li>previous_frame/next_frame shortcut now works for flash as well</li>
<li>fixed age predicate for > hours</li>
<li>fixed an important 'all known tags' A/C count cache bug when multiple services have the same tags for a file</li>
<li>if you have resolve_petitions permission for a tag service, tag siblings and parents petitions need no reason</li>
<li>slight change in how un-namespaced totals are calculated in A/C read</li>
<li>collection now obeys siblings</li>
<li>thumbnail upper text now obeys siblings</li>
<li>fullscreen text now obeys siblings</li>
<li>bit of siblings code cleanup</li>
<li>a little changeup to how showselectioninnewpage collects its media</li>
<li>/asp/, /gd/, /lgbt/, /vr/ and /wsg/ added to default dumper support</li>
<li>trying out making the server non-daemon, to see how that manages</li>
</ul>
<li><h3>version 73</h3></li>
<ul>
<li>every file operation from fullscreen was broke due to a single-character typo that got propagated</li>
<li>fixed local ratings, which were broken five different ways</li>
<li>ditched the deleted_pending concept, which was actually making things more complicated</li>
<li>possible fix to review services opening on bottom level</li>
<li>dumper no longer says it is still dumping on page close if it is done dumping</li>
<li>you can now scroll the dumper's upper comment box</li>
<li>moved site links over to github</li>
<li>fixed a typo re downloading a file that is already in the db and adding tags at the same time</li>
<li>local tags delete fixed</li>
<li>tag parents now apply globally, like siblings</li>
<li>thumbnail resizer daemon is less verbose and more helpful on IOErrors</li>
<li>fixed namespace colours in manage tags dialog</li>
<li>open selection in a new page now works for single-file selections</li>
<li>upload tags progress bar misalign fixed</li>
<li>namespaced counts no longer total up in A/C writes</li>
<li>manage siblings dialog now catches collisions when you put in the old, not the pair, and asks you what you want to do</li>
<li>age predicate now supports hours</li>
<li>while search is not synchronised, A/C will now query db when it might have queried the current media</li>
<li>think I fixed a sometimes-not-initially-showing-first-frame-of-gifs problem</li>
<li>downloaders now run parsed tags through siblings and parents managers</li>
<li>maaaybe fixed a cache counts error</li>
<li>wrote a little more sibling and parent help, and updated schema</li>
</ul>
<li><h3>version 72</h3></li>
<ul>
<li>remote tag siblings!</li>
<li>remote tag parents!</li>
<li>simplified update nomenclature</li>
<li>streamlined client-to-server update objects and processing</li>
<li>streamlined server-to-client update objects and processing</li>
<li>did a bunch of work on content_updates</li>
<li>did some work on service_updates, too</li>
<li>improved client-side petition handling</li>
<li>a bunch of changes to how uploadpending works</li>
<li>the way pending downloads are stored is improved</li>
<li>mappings tables are collapsed server-side</li>
<li>file tables are collapsed server-side</li>
<li>moved tag siblings and parents to content_updates</li>
<li>moved file upload/download to content_updates</li>
<li>reworked tag content_updates to be more streamlined</li>
<li>addfile/tagrepositoryupdate is made entirely content_updates, now</li>
<li>simplification in the way deleted content is stored</li>
<li>repo update processing string is muchly improved</li>
<li>repo update processing is smoother!</li>
<li>a slight change to default behind-the-scenes searches</li>
<li>improved how the server creates updates on service init</li>
<li>improvements to service_identifiers_to_statuses_to_tags sub-init and related parts of tags_manager</li>
<li>some misc nomenclature improvements</li>
<li>fixed a denypetition bug for file repositories</li>
<li>fixed optimised petition handling in server</li>
<li>fixed posting tags in dumper</li>
<li>fixed a problem with getunknownaccount</li>
<li>server now analyses on vacuum, like client</li>
<li>fixed a lolbug in thumbnail resizer daemon that was continually resizing thumbs</li>
<li>fixed a bug in cache counts, which should fix the 'pending menu disappeared' problem</li>
<li>corrected num_archive count in file repos</li>
<li>downloading files is simpler and faster; download menu is simpler</li>
<li>fixed server initialisation</li>
<li>updated to new sqlite version</li>
</ul>
<li><h3>version 71</h3></li>
<ul>
<li>collapsed the four mappings tables into two tables</li>
<li>merged the two active_mappings tables into the mappings table</li>
<li>made a <i>great</i> number of changes to how mappings and active_mappings are stored and processed throughout</li>
<li>'active' and 'null' nomenclature is now 'combined'; null service_ids are now just ints</li>
<li>improved deletepending so it isn't so tough on the a/c cache</li>
<li>tags regex dialog entries 'for all files' and 'just for this file' was all broke</li>
<li>A/C read now bumps the exact match of the entry to the top of the list, if its count is non-zero</li>
<li>fixed A/C for weird-character queries, like '['</li>
<li>the dumper now makes success/error noises as appropriate</li>
<li>you can turn these noises off in the new sound tab in file->options</li>
<li>screwed around with garbage collection while checking mimetypes during pre-import</li>
<li>adding a tag parent will spam-add the actual parent tags to every child instance for the appropriate service</li>
<li>updated db diagrams</li>
<li>revised my sibling chain collapsing algorithm</li>
<li>locked db on init dialog message is improved a little</li>
<li>system:limit added to combined file service searches</li>
<li>num pending menu counts now split into with (pending/petitioned)</li>
<li>corrected a server db index oversight</li>
<li>newgrounds title tag fixed</li>
</ul>
<li><h3>version 70</h3></li>
<ul>
<li>tag parents db stuff</li>
<li>tag parents manager</li>
<li>tag parents predicate and matches indented expansion</li>
<li><blockquote>and drawing it!</blockquote></li>
<li>tag parents top result reordering</li>
<li>tag parents top result insertion</li>
<li>tag parents actually doing what they do</li>
<li>polished off tag parent help</li>
<li>made a full-search table to speed up tag A/C requests</li>
<li>added tag full-text search</li>
<li>reworked how tag and file services add and reset, to reduce A/C time</li>
<li>reworked recalc active mappings to be more beautiful, if not faster</li>
<li>fade animation timer improved in several ways</li>
<li>thumbnail fetch made much smoother</li>
<li>newgrounds artist downloading for games and movies added</li>
<li>newgrounds subs added</li>
<li>download panel input now highlights on init</li>
<li>4chan filename tag added</li>
<li>the setfocus on filter close is neater</li>
<li>age phrase is now 'imported [time] ago'</li>
<li>age is now shown in fullscreen</li>
<li>can now copy file from fullscreen, from menu or shortcut</li>
<li>4chan pass authentication improved</li>
<li>fixed a couple tag service precedence sync bugs</li>
</ul>
<li><h3>version 69</h3></li>
<ul>
<li>first dialog for tag siblings</li>
<li>tag siblings db table</li>
<li>tag siblings manager in controller</li>
<li>tag siblings display in tagsboxcpp</li>
<li>tag siblings display in tagsboxflat</li>
<li>tag siblings display in tagsboxmanage</li>
<li>tag siblings display in tagsboxactiveonly, via A/C dropdowns, for both read and write</li>
<li>top result sibling switcheroo in A/C write</li>
<li>A/C db fetch now does siblings too</li>
<li>db tag search does siblings</li>
<li>siblings help, with some nice mini-charts</li>
<li>I fixed collections, which were typo-broke; I'll make sure it doesn't happen again</li>
<li>more granular subs error handling, meaning individual file failures won't crash an entire sub</li>
<li>individual subs can now be paused</li>
<li>e621 fixed for real this time</li>
<li>A/C improvement that slows tag updates a little but should stop A/C lag after an update</li>
<li>as a result, trying out dropping the CPU-intensive fatten_ac_cache maintenance call</li>
<li>A/C read will now update system preds every time you click on it, so inbox/archive counts will stay accurate</li>
<li>A/C "all known files + tags" will no longer show the mega-laggy total file count</li>
<li>a list -> tuple convenience fix in sanelistctrl</li>
<li>if you don't have any pixiv credentials set up, you will now no longer get the option to start downloading pixiv stuff</li>
<li>fixed a tiny typo in the thumbnail resizer that made it wait far more politely than was intended</li>
<li>slight change to ratio system pred that fixes some lockups, sometimes, I think</li>
<li>fullscreen flash and video will get a pixel of whitespace on the right</li>
</ul>
<li><h3>version 68</h3></li>
<ul>
<li>fullscreen view now takes addmediaresult</li>
<li>export to zip!</li>
<li>import from zip, with tag regex stuff too!</li>
<li>export to encrypted zip!</li>
<li>import from encrypted zip!</li>
<li>import encryption help in advanced.html</li>
<li>import process code processes mimes less jankily</li>
<li>delete after successful import checkbox added</li>
<li>import regex tags dialog now has # namespace</li>
<li>import regex tags dialog collects its info a bit more intelligently</li>
<li>new confirm exit client option</li>
<li>subs will save their progress every 20 files downloaded, so pause/restart is less punishing</li>
<li>simplified thumbnail cache retrieval</li>
<li>some thumbnail waterfall and animation tuning, let me know what you think</li>
<li>e621 fixed</li>
<li>danbooru fixed</li>
<li>reworked booru gallery page num calc, which was completely screwed</li>
<li>DA fixed for most cases</li>
<li>booru thumb parsing made a _little_ more permissive</li>
<li>server now uses the same new file storage system as the client</li>
<li>download cancel buttons have a little better feel</li>
<li>new thumbnail prefetch thread makes thumbs load a load faster</li>
<li>fixed a little rubbish naming semantics in ClientGUI</li>
<li>reorganised and streamlined much of the encryption code</li>
<li>updated a bunch of help screenshots</li>
</ul>
<li><h3>version 67</h3></li>
<ul>
<li>subscription db access improved</li>
<li>subscription 'delete subs seemingly at random' bug fixed</li>
<li>some nice subs help</li>
<li>subs and repos, if changed during a pause, will restart with new changes</li>
<li>subs and repos will automatically pause while their respective dialogs are open</li>
<li>new namespace | regex listctrl in regex dialog, instead of old sctvcp rubbish</li>
<li>new /aa/aa...0 file storage system for client</li>
<li>fixed deleteorphans mime issue</li>
<li>export and copy files now export writeable files, not read-only</li>
<li>rejiggered daemon db access, improving maintenance reliablity</li>
<li>dumper and 'show in new page' pages now process content updates correctly</li>
</ul>
<li><h3>version 66</h3></li>
<ul>
<li>subscriptions done! works for all normal download types</li>
<li>pause repo sync, pause subs sync</li>
<li>all download sites moved to the new system</li>
<li>lots of small changes to how download code works</li>
<li>pixiv tags is renamed to pixiv tag, since it only does one!</li>
<li>fixed DA</li>
<li>fixed DA again!</li>
<li>fixed DA tag parsing for all the diff types of username re http://help.deviantart.com/106/</li>
<li>fixed pixiv, somewhat</li>
<li>fixed giphy</li>
<li>fixed boorus for gallery_advance_num > 1</li>
<li>boorus reset in db to default</li>
<li>fixed copy files</li>
<li>fixed getmime</li>
<li>a silly parent assignment for A/C meant they were not closing with pages</li>
<li>made the cpu burn for the thumbnail resizer a bit more polite on hdd</li>
<li>repo sync daemon and subs sync daemon combined</li>
<li>some timing adjustments in sync daemon</li>
<li>subscription_type constant -> site_download_type</li>
<li>fixed temp folder being cleared on startup (a read-only issue)</li>
<li>advancedoptions classes now support setinfo</li>
</ul>
<li><h3>version 65</h3></li>
<ul>
<li>added subscriptions dialog</li>
<li>added prototype subscription daemon, but not yet activated it</li>
<li>added downloader classes</li>
<li>began reorganisation of nearly all download code</li>
<li>moved parsing around</li>
<li>moved advancedhttpconnection around</li>
<li>moved serviceupdate around</li>
<li>moved some content_update stuff around</li>
<li>moved some constants around</li>
<li>files in client_files now have extensions</li>
<li>files in client_files are now read only</li>
<li>pdf launch is simplified as a result of this new ext stuff</li>
<li>fixed find similar images; it was just a typo</li>
<li>also fixed initial predicates string display</li>
<li>rejiggered the thumbnail resizer again; due to my stupidity, it was causing lag</li>
<li>thumbnail resizer burns a little more cpu when there are >10,000 or >100,000 thumbnails to render</li>
<li>it also now does thumbs in random order, for a couple of good reasons</li>
<li>upgraded sqlite, hopefully some queries will run faster?</li>
<li>upgraded to python 2.7.4. please report any weird errors</li>
</ul>
<li><h3>version 64</h3></li>
<ul>
<li>got rid of system:not_uploaded_to - now system:file service, which is a lot more powerful</li>
<li>some display changes to system predicates to make them a bit more human-readable</li>
<li>added export dialog</li>
<li>made a couple small changes to help about the export dialog</li>
<li>collect by rating</li>
<li>sort by rating now works for collections, using an estimate (only accurate when also collecting by that rating)</li>
<li>built a custom radiobox class and added it to ratings dialog so it has radio buttons again</li>
<li>new ratings filter for local_ratings_like services. works just like normal inbox filter</li>
<li>added a little info in help about this new filter</li>
<li>new session manager for pixiv and hentai foundry, reducing number of session inits the client has to do</li>
<li>new init welcoming window for first boot</li>
<li>new politer error message for when db is locked on boot</li>
<li>shift+arrow keys now pan in fullscreen mode. you can change them in options as normal, if you like</li>
<li>resize thumbnails daemon is now part of maintenance thread stuff. hopefully less blocking now</li>
<li>inbox pages will remove media when you archive stuff, again. this is just a bit I forgot to update from last week's predicate overhaul</li>
<li>fixed and changed the way hitting the change tag service button works</li>
<li>I fixed previews and fullscreen cache estimate in local options too!</li>
<li>fixed giphy so it works with their new api</li>
<li>rejiggered the update notification order to be a bit more accurate</li>
<li>updated auto-setup code and help to use new no-ip domain rather than old raw ip</li>
<li>v64 will also update the old ip to the new no-ip domain automatically</li>
<li>bit of variable renaming</li>
<li>cleaned up a couple menu memory leaks</li>
<li>updated a little of future.html</li>
</ul>
<li><h3>version 63</h3></li>
<ul>
<li>added include/exclude namespace predicate</li>
<li>added intelligent delay to A/C to smooth out db requests</li>
<li>rejiggered the A/C code so that spamming/pasting several characters and then deleting some will re-search for matches as appropriate</li>
<li>cut size down to just B, KB, MB, GB</li>
<li>maybe I fixed system:ratio in certain cases!</li>
<li>some general predicates display syntax changes</li>
<li>(archive/inbox) and (local/not local) mutual exclusivity with new system</li>
<li>system:num_words</li>
<li>right click -> open selection in new page</li>
<li>upgraded from PIL to Pillow, to zero noticeable effect lol</li>
<li>had another look at dodgy animated gif transparency; couldn't figure it out</li>
<li>CMYK jpegs images now supported! interlaced pngs simply not supported with PIL/Pillow yet</li>
<li>numpad delete added as a valid shortcut key</li>
<li>removed an old buggy deleteorphans line</li>
<li>new thumbnail resize daemon to fill out the thumbnails directory in the background</li>
<li>collections with only one file will now be converted to singletons</li>
<li>screwed around with locale settings. not sure if this will break things!</li>
<li>manage tags and ratings now in fullscreen rmb menu</li>
<li>on downloads, ( url -> hash ) pairs are stored in db, even if the file was already deleted or already in db</li>
<li>a few additions to help</li>
<li>reworked the spinctrls system preds to not have 100 as default max</li>
<li>changed a bunch more spinctrls, including memory sizes, in local options</li>
<li>and a statictext that wasn't showing number of thumbs for cache size</li>
<li>bugfix in ratings filter</li>
</ul>
<li><h3>version 62</h3></li>
<ul>
<li>remade a/c dropdown to a better, less buggy class</li>
<li>reworked a little of the a/c dropdown focus logic</li>
<li>reworked a little of the a/c dropdown show/hide logic</li>
<li>a 'sometimes hangs on "gui" on startup after crash' bug is fixed</li>
<li>can copy from listboxes with new right click menu</li>
<li>dumper page will protest if you try to close it while it is still dumping</li>
<li>import page won't protest if you try to close it while paused</li>
<li>num_words will show on pdf right click</li>
<li>fixed the network version mismatch exception, exactly one week late lol</li>
<li>couple of tiny menu memory leaks removed</li>
<li>couple of misc gui tidies</li>
<li>custom filter favourites save and delete buttons will grey out as appropriate</li>
<li>bit of general code cleanup</li>
<li>we nested classes now</li>
<li>moved contentupdate class from cc to hc, in prep for repo update rewrite and contentupdate gen</li>
</ul>
<li><h3>version 61</h3></li>
<ul>
<li>session db tables</li>
<li>session manager objects</li>
<li>session net code done</li>
<li>session failure recovery</li>
<li>registration key table</li>
<li>registration key requests</li>
<li>some registration help added</li>
<li>harmonisation of many http request names</li>
<li>extracted uploadpending code from db transaction, making it a lot more polite and architecturally correct</li>
<li>pixiv now parses the ascii creator name as well as the japanese counterpart. No option to choose between them yet!</li>
<li>improved processcontentupdate to support more actions, making db a little more serial</li>
<li>home and end now scroll to focussed media</li>
<li>some http timeout tweaks, to stop the 'can't connect to server' problems on complicated queries</li>
<li>a typo in modify account types was fixed</li>
<li>manage tags dialog shouldn't fritz out quite so much when a service doesn't have post_data permisisons</li>
</ul>
<li><h3>version 60</h3></li>
<ul>
<li>pixiv account management dialog</li>
<li>pixiv gallery parse</li>
<li>pixiv page tag parse, including creator and title</li>
<li>pixiv user download</li>
<li>pixiv tag download</li>
<li>collapsed the page chooser a little to fit pixiv in comfortably</li>
<li>pdf support!</li>
<li>pdf launching via preview/fullscreen button</li>
<li>pdf header parsing with num_words rough estimate</li>
<li>system:mime=application/pdf</li>
<li>system:mime=application</li>
<li>custom filter favourites done! with default, previous, save, save as and delete</li>
<li>some small changes to temp folder logic</li>
<li>vastly improved scroll-thumbnail-prefetch logic. important bits all rewritten and made sane. data and gui rows line up better, with fewer bugs</li>
<li>vastly improved thumbnail fade. now attempts to render at 60fps, and calculates alpha much more efficiently</li>
<li>thumbnails won't fade if they are off-screen; they'll just draw in one frame</li>
<li>fixed thumbnail last row drawing problem (again!)</li>
<li>due to daemon-db-spam, db maintenance check was only firing on pc wake from sleep, now it fires properly every twenty idle mins</li>
<li>maintenance timer won't fire directly after waking from a sleep</li>
<li>deleteorphans copes with alien files a bit more gracefully</li>
<li>A/C appearing on top is mostly fixed</li>
<li>some general A/C weirdness is fixed/made better</li>
<li>reworked some of the thumbnail selection and scrolling code to line up better</li>
<li>thumbnail window will stop spamming 'scroll to focus' every time something small changes. it should only do it on fullscreen close and non-ctrl or -shift mouse/key events now</li>
<li>some general focus code was looked at</li>
<li>ratings filter now supports the fullscreen_switch shortcut</li>
<li>just a couple changes to help to include the new 'f' fullscreen_switch shortcut</li>
<li>10s timeout on http queries</li>
<li>http redirect code is improved</li>
<li>http cookie handling code is improved</li>
<li>made hf session establishment a bit cleverer</li>
</ul>
<li><h3>version 59</h3></li>
<ul>
<li>new vastly improved 'collect by' dropdown</li>
<li>fullscreen 'f' shortcut</li>
<li>fullscreen default option</li>
<li>added tumblr prototype parser, with tags</li>
<li>server init and repository init typos are fixed</li>
<li>a misaligned sizer was fixed</li>
<li>a bunch of spinctrls no longer init at <= 100</li>
<li>the problem with the last thumbnail rows sometimes not drawing properly should be fixed</li>
<li>A/C lag calculates a little more intelligently</li>
<li>manage ratings for collections now works</li>
</ul>
<li><h3>version 58</h3></li>
<ul>
<li>new custom staticbox sizer/panel put in about fifty places</li>
<li>big layout changes in management panels</li>
<li>I made a new, better set of sizer flags for nested sizers</li>
<li>testing out several new borders</li>
<li>several other small layout changes, lining things up</li>
<li>a few colour changes with the new classes</li>
<li>advanced options class is better, more streamlined</li>
<li>advanced options class is less flickery, I think</li>
<li>A/C spazzes out less when dragged about</li>
<li>A/C queries db less annoyingly, especially when you type fast</li>
<li>the thumbnail display draws its whitespace a little better, filling in the right-hand and bottom-end gaps</li>
<li>importing thumbnails now add to the last row one thumb at a time (rather than at one row at a time) once the scrollbar appears</li>
<li>shift + f7 now sends things back to inbox, like a reverse archive.</li>
<li>this works from thumbnail menu</li>
<li>and in fullscreen</li>
<li>new menu item 'remove these' for thumbnails, anywhere, including dumper!</li>
<li>'tags just for this file' now works a looooot better! it unions all selected tags, and detects deselections better</li>
<li>giphy downloader added</li>
<li>giphy tags added, thanks to @fluffy_cub</li>
<li>copying file now _also_ copies paths to clipboard; depending on where you paste, you'll get the files or the text appropriately</li>
<li>new shortcut (default ctrl+m) for 'focus media'</li>
<li>focus search now works for manage tags and tags regex dialogs</li>
<li>think I worked out the last of the up/down arrow cursor shortcut problems</li>
<li>a ton more code cleaning</li>
<li>hentai foundry artist not found 404 error detected</li>
<li>in regex dialog, tags are cleaned before display on screen</li>
<li>4chan ban is now recognised, and thread dumps are hence suspended</li>
<li>when ordering tags by incidence, disputes are now resolved by lexicographic</li>
<li>fullscreen init is a little faster for the first image</li>
<li>select imageboard dialog now toggles tree with double click</li>
<li>select imageboard dialog is also taller</li>
</ul>
<li><h3>version 57</h3></li>
<ul>
<li>added quick vs accurate slider for numerical ratings filter</li>
<li>new slider will remember where you left it last</li>
<li>ratings filter internal comparison logic is more sane</li>
<li>'already rated' will now show the specific rating beside it</li>
<li>ratings filter (hopefully!) chooses better comparisons, in about four different and new ways</li>
<li>you can now ratings filter just one file</li>
<li>ratings filter code is neatened a whole lot, especially on my horrible variable names</li>
<li>I may have fixed an equality ratings filter bug</li>
<li>internal rating data -> pretty text for display is more flexible and accurate</li>
<li>going back several steps on ratings filter will no longer forget to re-rate already rated files</li>
<li>delete from dumper no longer screws with the indices</li>
<li>dumper is more stable, less likely to bail on the whole dump if something odd happens</li>
<li>dumper should recognise duplicate file errors and recover the fail</li>
<li>if the user has idled for the last twenty minutes, the db checks to see whether it can optimise itself</li>
<li>fixed flickering on fullscreen drag</li>
<li>fixed flickering onn fullscreen image init, meaning smoother mousewheel/whatever scrolling</li>
<li>fixed a graphical glitch in manage boorus dialog, and a bunch of others (removed all staticboxsizers)</li>
<li>fixed a similar glitch in manage ratings dialog - it now has dropdowns; I'll probably make it radio buttons again soon</li>
<li>fullscreen page navigation (previous, next, first, last) shortcuts are now customisable</li>
<li>custom filter now supports these new page nav shortcuts</li>
<li>can now do home/end and page up/down in shortcuts</li>
<li>shortcuts listctrls now sort by action by default</li>
<li>I improved the my custom listctrl's code generally</li>
<li>little less ugly code, here and there</li>
<li>fixed a whole ton of regular little bugs</li>
</ul>
<li><h3>version 56</h3></li>
<ul>
<li>new existing tag sort dropdown</li>
<li>an option to set default existing tag sort</li>
<li>dumper error logic improved</li>
<li>dumper now does random sort properly!</li>
<li>double buffering hilariousness</li>
<li>some reordering of the local options dialog</li>
<li>made a 'shortcut' entry object</li>
<li>made a parent frame object</li>
<li>collection thumbnails will redraw if the sort changes</li>
<li>add media and add thumbnail data and graphics logic is improved</li>
<li>4chan pass now authenticates for an entire year</li>
<li>bit more in help about the autocomplete tag entry</li>
<li>tag petition processing speed is a loooot faster</li>
</ul>
<li><h3>version 55</h3></li>
<ul>
<li>custom filter prototype ready!</li>
<li>added some info on custom filter to help (in advanced.html)</li>
<li>you can now set a default tag service in options</li>
<li>tag rexeg dialog's listctrl refreshes without scrolling up to the top every time</li>
<li>tag for this file in tag regex dialog applies to all selected, not just the first</li>
<li>scrolling in autocomplete entry will scroll services in manage tags and tags regex dialog</li>
<li>ctrl+scrolling in autocomplete entry will scroll through results</li>
<li>complete rewrite of image prefetch calculation</li>
<li>couple of content-update display bugs in ratings filter fixed</li>
<li>in manage ratings dialog, sliders will preset to best guess at current score</li>
<li>dumper should be fixed</li>
<li>resized active predicates box (much smaller)</li>
<li>a deprecated call updated</li>
<li>added some forum extensions</li>
</ul>
<li><h3>version 54</h3></li>
<ul>
<li>several new flash key and mouse event bugs fixed - now: mouse in = to flash | mouse out = to frame</li>
<li>the problem with scrollable management windows not drawing things on scroll is fixed; staticboxsizers now replaced with "- title -"</li>
<li>ratings filter now accepts several shortcut keys, directing to whichever window the mouse is over</li>
<li>the ratings filter windows will redraw themselves appropriately on content and service updates, e.g. changing tags with F3</li>
<li>ratings filter will choose the files to compare to more intelligently, both from the db and the currently-rated pool</li>
<li>the way services are identified behind the scenes is entirely overhauled and improved</li>
<li>the review service dialog is better as a result</li>
<li>all dialogs will now cancel-exit on pressing escape</li>
<li>started fade in and out for thumbnails</li>
<li>up cursor arrow in filter now skips</li>
<li>the tags regex dialog is refitted so it will refit on small screens better</li>
<li>dumper now dumps in its own thread (no longer locks up the gui while uploading)</li>
<li>the calculation of num_frames for flvs was off by a thousand, lol</li>
<li>synchro/wait shortcut typo fixed</li>
<li>inbox and other icons moved to background in fullscreen</li>
<li>fullscreen makes less db queries r.e. ratings</li>
<li>a couple managementpanel resize issues corrected</li>
<li>a couple drawing/flickering issues corrected</li>
<li>some updates to help</li>
<li>I made a forum to my site, and added links in the client and help</li>
</ul>
<li><h3>version 53</h3></li>
<ul>
<li>several terrible ratings filter bugs fixed</li>
<li>ratings filter can now rate files internally</li>
<li>ratings filter frame now has a statusbar</li>
<li>system:rating:service=uncertain added</li>
<li>upgraded to wx2.9, which included a ton of bug fixes</li>
<li>sort by namespace wasn't working due to an odd typo</li>
<li>collect by logic changed a little so that 'none' values are collected</li>
<li>the shutdown lag from v52 is corrected</li>
</ul>
<li><h3>version 52</h3></li>
<ul>
<li>ratings filter prototype is done</li>
<li>bit of help docs</li>
<li>more intelligent cpu burn on shutdown</li>
<li>dumper can manage flood time error, and recover from it</li>
<li>whole load of work done on mappings optimisation, meaning mappings updates, uploading mappings and approving petitions work about 100x faster!</li>
<li>forgetting pending uploads now throws up an ok/cancel dialog</li>
<li>had another look at overwriting deleted tags</li>
</ul>
<li><h3>version 51</h3></li>
<ul>
<li>dumper deals with failed uploads better, although there is more work to do.</li>
<li>flv support for client and file repo!</li>
<li>reworked tag services' permissions calculations on thumbnail menu</li>
<li>new fatten A/C cache on shutdown</li>
<li>system:untagged works again for null tag repo ('all known tags')</li>
<li>advanced import options now default no limit for size and resolution</li>
<li>ratings service now have a little info on the review services frame</li>
<li>new shortcut keys (ctrl-b and -n) for animated gif previous/next frame in fullscreen</li>
<li>added thoughts on plurals to tag schema help page</li>
<li>hentai foundry downloads now interleave pictures and scraps</li>
<li>removed db locks on file/thumbnail reads</li>
<li>you can open the page picker frame with the mouse by going view->pick a new page</li>
<li>the copy->whatever thumbnail menu is more concise</li>
<li>system:hash now works for null file repos ('all known files')</li>
<li>there is now a title: regex on the tag regex dialog</li>
<li>servers now store updates in a folder, not inside their dbs.</li>
<li>couple misc changes to help pages</li>
</ul>
<li><h3>version 50</h3></li>
<ul>
<li>4chan pass added</li>
<li>captcha timings in dump are better</li>
<li>dumper's file ordering is less insane</li>
<li>some general updates to regex tag dialog</li>
<li>new box on regex tag dialog for tags for single files</li>
<li>regex tag dialog now supports arrow key up and down to change repo</li>
<li>entirely new and vastly improved listctrl class</li>
<li>collect by is now a thousand times more complicated, but also much more powerful</li>
<li>the top-left media-flicker display bug in fullscreen is fixed</li>
<li>some logging improvements</li>
<li>some tag cleaning improvements</li>
<li>thumbnails have less cluttered tag headers</li>
<li>some small changes to help</li>
<li>fullscreen precache doesn't do gifs any more, which should make things smoother</li>
<li>got rid of the awful view pending uploads dialog. I'll improve it later</li>
<li>started remote ratings, but its not done yet</li>
</ul>
<li><h3>version 49</h3></li>
<ul>
<li>local rating like service</li>
<li>local rating numerical service</li>
<li>ratings dialog</li>
<li>ratings drawn on preview and fullscreen canvas</li>
<li>search by rating</li>
<li>system:rating in options</li>
<li>sort by rating</li>
<li>a ratings help page added</li>
<li>custom shortcuts</li>
<li>overhauled shortcuts code</li>
<li>a new, comprehensive regex menu in the regex tag dialog</li>
<li>extensive new hentai foundry search and sort options</li>
<li>a new option regarding the search style of tag A/C entries</li>
<li>thu dumper can now dump with tags</li>
<li>regex tag dialog selects tag A/C on page change</li>
<li>regex tag dialog's button now now shows in import dialog even if there are no remote tag dialogs with POST privilege</li>
<li>A/C is slightly faster in all cases</li>
<li>preview canvas now updates on a content update</li>
<li>numtags = 0 and numtags > 0 now work for pending tags</li>
<li>shift- or Ctrl-Click no longer deselects</li>
<li>listbook renaming and resizing bug fixed</li>
<li>collections thumbnail is fixed</li>
<li>sometimes, an empty tag, '', could be entered into pending and screw a lot up</li>
<li>sometimes, a null tag could be entered into pending and screw a lot up</li>
<li>advanced tag options has better checkbox defaults</li>
<li>some help screenshots updated</li>
<li>the db's processing is slightly rebalanced</li>
<li>the db's startup is slightly rebalanced</li>
<li>a misc gui bug was fixed</li>
<li>a misc gui typo was fixed</li>
</ul>
<li><h3>version 48</h3></li>
<ul>
<li>New copy path and copy url menu entries on thumbnail right-click menu</li>
<li>Gif scrollbar</li>
<li>Hentai Foundry parsing errors fixed</li>
<li>Hentai Foundry 404 errors fixed</li>
<li>All the html parsers are rewritten using BeautifulSoap</li>
<li>Flash now zooms full, but not fit</li>
<li>Filter is now F12</li>
<li>Help is updated in a number of ways</li>
<li>Up/Down on empty input to change repository in manage tags dialog is fixed</li>
<li>The servers now support OPTIONS requests</li>
<li>Several status typos fixed</li>
<li>I started local ratings services</li>
</ul>
<li><h3>version 47</h3></li>
<ul>
<li>Hentai Foundry interface is done, for both artist and tag searches</li>
<li>A/C gui reorganisation</li>
<li>A/C file and repo buttons added</li>
<li>A/C cache count alterations to match those buttons</li>
<li>A/C tag processing is cleaned up</li>
<li>Search and thumbnail-action improved to support null file service or non-null tag service</li>
<li>system:numtags=0 and system:numtags>0 optimised to be much faster</li>
<li>Ctrl+I now switches searching immediately/waiting</li>
<li>z now switches between zoom full and zoom fit in fullscreen view</li>
<li>advanced import options now has exclude already deleted files checkbox</li>
<li>Thumbnails choose the way they access the db more intelligently</li>
<li>ManagementPanel colour is changed, hmmm</li>
<li>Some DB cleanup</li>
<li>Some general code cleanup</li>
<li>Some download logic improved, including timer</li>
<li>Some download status improved</li>
<li>Download 404 notices better</li>
<li>DeviantArt now initially shows 'artist username' in its searchbox</li>
<li>Some code nomenclature improved</li>
<li class="dealwithit">I've made a changelog.html, compling all changes together.</li>
</ul>
<li><h3>version 46</h3></li>
<ul>
<li>DA parsing CLEAR</li>
<li>rule34@paheal parsing CLEAR</li>
<li>tbib (another booru) parsing CLEAR</li>
<li>Canvas rearranging</li>
<li>Preview now shows tags</li>
<li>The autocomplete tag write dialog will promote existing exact matches to the top of the list, even if it is not the most popular.</li>
<li>Autocomplete lists now scroll with the mouse.</li>
<li>A/C scrolling is a little more accurate.</li>
<li>Pressing up or down on an empty A/C entry will change tag repository.</li>
<li>A sledgehammer has been applied to the python garbage collector.</li>
<li>The code that navigates boorus is better.</li>
<li>The import queuing/pausing/cancelling system is better.</li>
<li>Booru tag-processing is better.</li>
<li>The import-queue gui is slightly better sized on small screens.</li>
<li>The new local tags service now shows up in advanced tag options.</li>
<li>Even more flicker is removed from the main thumbnail view, this time when clicking on whitespace. (it was a stupid bug)</li>
<li>Serverside db-backup now includes the WAL file.</li>
<li>Manually adding an admin service is fixed.</li>
</ul>
<li><h3>version 45</h3></li>
<ul>
<li>Local tags: DONE</li>
<li>Thread watcher: DONE</li>
<li>Fullscreen now shows tags</li>
<li>Preview shows some more file + tag info</li>
<li>Listbooks load their panels on demand.</li>
<li>Local options dialog is now a listbook.</li>
<li>Some incorrect <20>sample image<67> downloads from danbooru are fixed. Danbooru<72>s inner workings remain a 404-cluttered mess though.</li>
<li>Some remaining utf-8 html parse errors (where a limited content-type header is given) are cleared up.</li>
<li>Another connection problem (a certain case of the server closing the connection) is now properly recovered from.</li>
<li>Some flicker in the thumbnail view is reduced, but my slow laptop still shows some, so I need to revisit this.</li>
<li>Autocomplete tag boxes now have little tooltips better describing their search domains.</li>
</ul>
<li><h3>version 44</h3></li>
<ul>
<li>All database triggers are removed and replaced with more efficient inline code.</li>
<li>Cached number of files, namespaces and tags for a tag repo are kept updated, so review services should rarely take very long to load.</li>
<li>Cached number of A/C counts (current and pending) are kept updated, so A/C results should rarely take very long to load.</li>
<li>The way A/C cache searches are done is improved.</li>
<li>The way A/C cache entries are calculated is vastly improved.</li>
<li>The way several db SELECT DISTINCT * and SELECT COUNT( DISTINCT * ) queries are performed is improved.</li>
<li>The custom httpconnection object is improved to better deal with server-side connection closes. (Cannot connect to server problem)</li>
<li>The custom httpconnection object does http redirections more intelligently.</li>
<li>The custom httpconnection object now parses non-ascii content-type (e.g. utf-8) properly, according to server-side header. The tag <20>pok<6F>mon<6F> will now parse correctly.</li>
<li>e621 and rule34@booru.org are fixed. (just a couple parsing-variable changes)</li>
<li>If some tag parsing entries are checked on a booru download page, the tags will be downloaded, parsed and applied even to files already in the database.</li>
<li>The mouse cursor will remain visible in the fullscreen browser while the right click menu is open.</li>
<li>I corrected some which->that grammar in a couple dialogs.</li>
<li>Auto-repo-setup (from the help menu) was broken in a very stupid way, but I fixed it. I apologise for not noticing.</li>
<li>Thumbnails now show creator and title up top. They are a bit crushed, so I may rearrange them.</li>
</ul>
<li><h3>version 43</h3></li>
<ul>
<li>Updated import + booru code</li>
<li>New booru buttons</li>
<li>Cut tag parse bug fixed</li>
<li>Download preview instead of real file bug fixed (I think)</li>
<li>Fixed the <20>thumbnails not appearing on import<72> bug</li>
<li>Import flickers less</li>
<li>Media Classes rewrite is done, although I<>m not totally happy. Have to think about it.</li>
<li>A problem with pending tags applying over existing tags no flushing correctly is fixed.</li>
<li>A/C cache is better, but still a little slow on slow computers.</li>
<li>system:duration=0 is fixed.</li>
</ul>
<li><h3>version 42</h3></li>
<ul>
<li>Autocomplete tag cache DONE. Please tell me if you encounter excessive slowdown or incorrect counts.</li>
<li>Autocomplete tag logic improved in about five ways. Tags should appear more intuitively and with more accurate counts.</li>
<li>Copy and paste buttons in manage tag dialog to facilitate spamming many tags from one file to another.</li>
<li>Imageboard dump is fixed!</li>
<li>URL download got fixed last week and I forgot to say!</li>
<li>A peculiar pseudo-foreign-key bug with the active_pending_mappings table is sorted. (leading to more accurate queries and counts)</li>
<li>Since display of large queries is so much faster, the <20>woah! 12,000 query results<74> warning is gone.</li>
<li>Fullscreen precache timings are rebalanced, hopefully for the better!</li>
<li>The importing gui classes are a little smoother, and thumbs should load one by one, not row by row, once the page height is exceeded. The scrollbars should be less janky.</li>
<li>Page transitions are smoother.</li>
<li>Importing from URL will now load those urls that are already inside the db (hella fast, too), just like importing from hdd.</li>
<li>The double-update-download bug is finally fixed! Now you<6F>ll download update number 258 only once, and not twice in a row. (I hope!) It never mattered much, beyond a little CPU, but it annoyed the hell out of me. Working out what was wrong took ages. (Long story short: Python<6F>s Priority Queues are not parallel FIFOs!)</li>
<li>There was a weird bug in pending tags sometimes going to higher tag-precedence services, rather than the one chosen in the manage tags dialog.</li>
<li>There was a typo in reset service.</li>
<li>More content update unification in the db, making things much neater behind the scenes.</li>
<li>I found a potential hang in the db-shutdown code.</li>
<li>I found another potential hang in the db-shutdown code!</li>
<li>The number of messages in your inbox is now displayed on the statusbar.</li>
<li>Bold, Italic and Underline now work with Ctrl+B/I/U in the message compose panel.</li>
<li>The <20>don<6F>t receive messages from Anonymous<75> checkbox in Add, Remove and Edit Services for message depots now does something.</li>
<li>system:unread in message search now has a count.</li>
<li>A draft will remember its saved changes when you click on another conversation and back again.</li>
<li>You can now save a draft with zero recipients.</li>
</ul>
<li><h3>version 41</h3></li>
<ul>
<li>Rich Text Control with Toolbar in messaging.</li>
<li>Message unread/read status now syncs to message depot.</li>
<li>Can set defaults for file system predicates.</li>
<li>Animated Text class written.</li>
<li>system:unread tag in messaging.</li>
<li>Import bug fixed.</li>
<li>Messaging search logic improved.</li>
<li>Message depot default check time down to 180, and daemon thread improved to manage with that.</li>
<li>Application startup is more stable.</li>
<li>Some AddMessage logic improved.</li>
<li>Drag+Drop service fixed and improved.</li>
<li>Tags added while importing will now turn up in autocomplete.</li>
<li>I unified more of the client<6E>s content-update db calls. Just making stuff neater.</li>
<li>I massively simplified the autocomplete tag code in preparation for another bash at doing autocomplete cache. A/C is far too slow atm, imo.</li>
<li>Some A/C counts are still off, particularly when there are a mix of current and pending. I couldn<64>t figure out what is causing it, but I<>ll look at it more as I do the cache.</li>
<li>In add, remove and edit serivces, you can now specify if you want to receive messages from Anonymous or not. Unfortunately, because I forgot to implement it in DoMessageQuery, this checkbox doesn<73>t actually do anything yet! Whoops!</li>
</ul>
<li><h3>version 40</h3></li>
<ul>
<li>Inbox/Archive for messaging works. The inbox icon is back, and F7 to archive as usual.</li>
<li>Unread/Read for messaging works. Click on your status next to a message panel to change.</li>
<li>All message participants are shown in the conversation listctrl.</li>
<li>The message page will open with <20>system:inbox<6F> active, ordered by newest message.</li>
<li>I fixed conversation listctrl sorting in a couple ways.</li>
<li>Some bugs in the db->gui update reporting system are fixed, so the compose window and draft panel will close properly on a message-send, and the conversation listctrl will swiftly update unread counts and inbox status and so on.</li>
<li>The draft panel<65>s save button wasn<73>t updating sometimes when it should have been.</li>
<li>html links in messages will show in the main frame<6D>s statusbar and launch in your browser when clicked.</li>
<li>I reworked how many system tags are searched in file queries to make them muuuuch faster. Now, any time you go system:hash, :size, :mime, :age, :width, :height, :duration, it (should) be significantly faster than before.</li>
<li>Ever have a png file that had an ok thumbnail but a black preview/fullscreen? It was probably an <20>LA<4C> image, or <20>greyscale with an alpha channel<65>. Display of LA images is now fixed.</li>
<li>Streamlined the way file <20>archive<76> and <20>delete<74> commands are sent throughout the application, with an eye to eventually adding all other user-commands to the same system (to make it simpler, and also to do undo-redo).</li>
<li>I<EFBFBD>ve updated the help docs, including the section on how messaging actually works.</li>
<li>You can now enter system tags with enter/return from the keyboard, not just double-clicking with the mouse.</li>
</ul>
<li><h3>version 39</h3></li>
<ul>
<li>A whole bunch of stuff I didn<64>t write down that generally made messages work beyond sending <20>Hello World<6C>.</li>
<li>Unicode messages now work.</li>
<li>Newlines in messages now display properly.</li>
<li>Fixed contact saving and drag-and-drop to the manage contacts dialog.</li>
<li>You can now add a contact using a contact address (assuming their service is v39).</li>
<li>A bug in contact renaming is fixed.</li>
<li>My contact (hydrus admin) is now added automatically.</li>
<li>Messages are orphan-deleted properly server-side.</li>
<li>Message depots you control now get an entry under the admin menu.</li>
<li>The conversation listctrl is now properly sorted.</li>
<li>The HtmlWindow that shows message body is now resized to its minimum needed height via magic that I ain<69>t gotta explain.</li>
<li>Messages that fail to send can be retried by clicking on the failed.</li>
<li>Some draft save/send button enable/disable logic was updated.</li>
<li>I switched around some server-side account logic.</li>
<li>You can<61>t zoom a flash window bigger than the screen.</li>
<li>I<EFBFBD>ve made the mouse appear in fullscreen when you move it, and this includes while you drag. See how you feel about it. I<>ll make options to change behaviour if people care.</li>
<li>Better zip structure. (No more CWD rubbish)</li>
<li>New tar.gz release with only the code and help. Code is 1.2MB, help is 14MB lol. I<>ll improve the structure of this release next week. I threw it together by hand today, but I<>ll improve its structure next week.</li>
</ul>
<li><h3>version 38</h3></li>
<ul>
<li>messaging v1.0</li>
</ul>
<li><h3>version 37</h3></li>
<ul>
<li>messaging prototype</li>
</ul>
<li><h3>version 36</h3></li>
<ul>
<li>animated gif fixes</li>
<li>new page chooser</li>
<li>svcp->cstvcp in fullscreen too</li>
<li>new import progress</li>
<li>just start the server on this computer, please</li>
<li>I think I have scrolling to the current selection after an archive fixed now.</li>
<li>Started an experimental simpler way to send commands to the db, which may open the way for undo-redo.</li>
<li>Capitalisation option in file->options->gui. It only does the menubar for now, but I will expand it.</li>
<li>Custom sorts/collects. Under file->options. Check it out, play with it if you care about it.</li>
<li>Some program initialisation error handling is cleaned up.</li>
<li>Can now no longer start a server if the admin port it wants to use is occupied. (can<61>t run two servers at once on the same port)</li>
<li>I broke dump with a typo in a previous release, I think! It is fixed now.</li>
</ul>
<li><h3>version 35</h3></li>
<ul>
<li>Slight speedup of review services frame loadtime.</li>
<li>SVCP now replaced with SCTVCP and CSTVCP for now, with more planned next week.</li>
<li>Repo sync daemon adds db jobs less manically, now, locking up the gui less.</li>
<li>Repo sync daemon reports successful updates to the log.</li>
<li>Tag petition review page has a visual bug fixed.</li>
<li>ThumbnailMediaPanel manages its underlying bmp canvas more intelligently.</li>
<li>Some ugly page-closing code was cleaned up.</li>
<li>There is a <20>regex examples<65> popout window on the regex-filename-tag import dialog, with copy-pastable examples of python regexes that<61>ll work for common filename-parsing situations.</li>
<li>Home and End keys now select the first/last thumbnail as well as scrolling.</li>
</ul>
<li><h3>version 34</h3></li>
<ul>
<li>DB consolidation, and foreign keys and triggers with it. The db is less prone to orphan ids and miscounts.</li>
<li>For long-time users, all orphan ids should have all been deleted, reducing weirdness.</li>
<li>Total size of local service is now tracked accurately.</li>
<li>Archive while importing should work a bit better now.</li>
<li>Update logic should be more reliable, as should all service_updates.</li>
<li>Archive count for file repos should be less wrong.</li>
<li>Fixed two (!) typos in system:age predicate code.</li>
<li>File upload is fixed (not sure if it was ever broken in release, but I fixed the stupid thing I did anyway)</li>
<li>DB (and server) errors should report better now, revealing inner-db code in the traceback. (and printing it to the appropriate log)</li>
<li>Improved the mime_to_enum object for image/jpeg, image/jpg, image/jpe, image/wtfaretheygoingtocalljpegnow.</li>
<li>HTTP connections can deal with some esoteric commands, like 301, without throwing a fit. All http goes through the same code.</li>
<li>Danbooru should now be in your booru list, and it _should_ work.</li>
<li>Pausing/Cancelling a booru gallery parse should now work.</li>
<li>4chan dumper now understands captchas being wrong and the thread not existing; in the former case it<69>ll let you put in a new captcha and try again, in the latter it<69>ll stop the whole dump.</li>
<li>Some general code neatness improvements.</li>
</ul>
<li><h3>version 33</h3></li>
<ul>
<li>Boorus are working for users who started last week</li>
<li>The server can now manage many more simultaneous requests without bugging out.</li>
<li>The early freeze/import freeze due to simultaneous access in the client is fixed.</li>
<li>The client<6E>s file+thumbnail server (details in help<6C>s advanced.html) works again.</li>
<li>Client DB now stores md5 and sha1 for all local files.</li>
<li>Client DB has a larger cache size.</li>
<li>The freeze caused when importing thousands of files at once with tags is fixed.</li>
<li>The yaml imageboard import (when you drag and drop a .yaml file onto the imageboards dialog) now adds form fields correctly! If you had problems here, check out install_path/static/default_imageboards.yaml to reset them!</li>
<li>The autocomplete counts should be more accurate, particularly when there are a mix of current and pending tags in the db.</li>
<li>The autocomplete in the regex-path dialog will now search the db correctly (it was misconfigured).</li>
<li>Autocomplete is also just a _little_ faster</li>
<li>File imports are now low priority, so gui activity should still happen nice and quick even while an import is occurring.</li>
<li>The review services frame will now show how long until the next update will be checked (see picture above). In case of error, it will show how long until it tries again.</li>
<li>The review services panel and manage services panel are of a better default size, and they use my new listbook class exclusively, rather than the old notebook.</li>
<li>I<EFBFBD>ve added some tooltips on not-obvious widgets.</li>
<li>Content Updates have vastly improved processing speed on a thumbnail view (x100 in some cases!). Tag updates particularly will not be so slow to process if you have a large search open.</li>
<li>The import gauge will now show the correct range according to the current queue size, not always the default 100.</li>
<li>Active Import Pages will throw up a yes/no dialog if you try to close them.</li>
<li>Some beautifying of code syntax. <20>\n<> is now os.linesep, which means exported stuff should show up better in notepad.</li>
<li>Some changes in network protocol, although now I think of them, I realise I forgot to update the network version. They aren<65>t important for most users, so w/e.</li>
</ul>
<li><h3>version 32</h3></li>
<ul>
<li>client db serialisation DONE</li>
<li>Cleaned up a dirty-bmp canvas init issue.</li>
<li>Resized some dlg stuff that was too tall</li>
<li>Cleaned up a bunch of unrelated db code</li>
<li>Tightened the pubsub system so it integrates better with wx.</li>
</ul>
<li><h3>version 31</h3></li>
<ul>
<li>booru prototype</li>
<li>Fixed some problem with last error timestamp </li>
<li>Fixed a bug in repo bandwidth tracking</li>
<li>Fixed URL registration with the client db.</li>
<li>Made downloading URLs asynchronous again</li>
<li>Made repo synchronisations not block so much, and not for nearly as long. You should be able to do queries and click on thumbs (albeit at a slower rate) while the client is downloading and processing updates.</li>
</ul>
<li><h3>version 30</h3></li>
<ul>
<li>Thumbs are exported, and, along with perceptual hashes, now treated as a global pool, reducing downloads and speeding queries.</li>
<li>Thumbnail resize is now asynchronous, done as each thumbnail is requested. Changing the thumbnail size in the options dialog happens real quick, and if you don<6F>t like a particular size, you can change it back just as fast.</li>
<li>Temporary DB locking mechanisms ensure serialisation, less inefficient locking.</li>
<li>ImportPage superclass works a lot better, in a lot less code. DB import code is now even simpler, and much faster, especially for redundant files. The new import page will also tell you how many files were successful/failed/already deleted/already in the db.</li>
<li>Fetching images for fullscreen or preview is fully asynchronous, and will no longer block the gui thread.</li>
<li>Some query logic is improved.</li>
<li>You can now import and export sites/imageboards from the manage imageboards dialog. It<49>ll export to a .yaml file, which is easy to understand with a decent text editor. Just drag and drop onto the dialog to import.</li>
<li>Selecting thumbs has a little less preview-flicker now.</li>
<li>The new tagboxes now render numbers prettily, so 4123 -> 4,123.</li>
<li>(+) namespace:tag now colours properly.</li>
<li>The background for selected tags is now an appropriate colour.</li>
<li>You can now choose the colours of any namespace you like in the normal options dialog.</li>
<li>Clicking in whitespace in the new tagbox deselects, rather than select( 0 )s.</li>
<li>Spacebar, PageDown, Return and all the other special command characters are now propagated to flash in fullscreen view, just as long as the mouse is over the canvas.</li>
</ul>
<li><h3>version 29</h3></li>
<ul>
<li>Big changes to the db<64>s file storage, as above.</li>
<li>database->vacuum is reinstated, database->reindex is retired. I recommend you run a vacuum once you are updated; it<69>ll only take a minute now.</li>
<li>Rollback and initialisation bugs are fixed.</li>
<li>There<EFBFBD>s a splash window now that can offer client-boot feedback.</li>
<li>The way scrolling-to-focus is calculated is improved.</li>
<li>Pretty much everywhere you see tags will now show coloured tags! I finished up my own tagbox class, which for now will show tags coloured in the default booru scheme. It also loads in a few milliseconds, rather than the ~0.5s of the default listbox. It scrolls faster, too. I<>ll have user-customisable colours next release.</li>
<li>Files with invalid resolution, size and mime are now filtered out before dumping to an imageboard.</li>
<li>A number of misc other bugs were fixed.</li>
</ul>
<li><h3>version 28</h3></li>
<ul>
<li>I fixed the <20>searching immediately<6C> bug. It was a stupid typo as usual.</li>
<li>Post-Filter scrolling should be a bit more reliable.</li>
<li>Some more log events.</li>
<li>I did a lot of work on my new tags box, although the actualy gui elements will have to be finished for v29.</li>
<li>Manage Imageboards wasn<73>t saving properly. It is now.</li>
<li>My new progressdialog happens in several places. It is a little neater than the one in wx; just better for my purposes.</li>
<li>I reworked some of the transaction stuff in the db so that I can atomically queue pubsub events. (this means file import are less juddery)</li>
<li>After becoming very annoyed with wx<77>s listbook/labelbook/whateverbook, I wrote my own. It<49>s all over the place in my dialogs now. It is tighter, more reliable, and can scroll.</li>
<li>I reworked some of the way sets interacted.</li>
<li>There was an infinite recursion bug sometimes, when uploading files to a file repo.</li>
</ul>
<li><h3>version 27</h3></li>
<ul>
<li>Cleared out some old unused library imports, so the client is slightly smaller.</li>
<li>Had a cyclical import (!). Luckily, python is forgiving, but I have still fixed it.</li>
<li>Collection thumbnails will now update with their new pending tags correctly.</li>
<li>Some wx.Panel vs wx.Window issues and nomenclature resolved.</li>
<li>Full Page decouple. Now the window to the left is a seperate, much neater class. It and the media/preview windows talk to each other in a clever way that means I can make new kinds of page much faster. It scrolls, too.</li>
<li>Thumbnails resize will tell the thumbnail window just to redraw itself, not refresh the entire query.</li>
<li><EFBFBD>system:local<61> and <20>system:not local<61> are now mutually exclusive (will swap each other out, rather than overlap), like inbox and archive.</li>
<li>A little neatening of the system predicate code.</li>
<li><EFBFBD>system:similar_to<74> RMB menu entry fixed for some cases.</li>
<li>There is a new log window. Go view->new log page to see it. It doesn<73>t show much right now, but you can see synchro successes and errors pop up as they happen.</li>
<li>There is now a popup button on the import dialog and the URL downloader page that does <20>advanced import options<6E>. You can now tell these import processes to archive everything and/or ignore files below a certain size or resolution. By default, the client will not import anything <5KB or <50x50px. You can set no limit.</li>
<li>Flash windows will now own all keystrokes as long as the mouse cursor is over the flash. If you are browsing/filtering, just move your mouse over or off the flash window to make sure your return/page down/spacebar/escape/whatever is interpreted as you want.</li>
<li>The URL downloader will not download the same file twice in a row, so you can add a thread URL several times in a row, and it<69>ll only download the newest files. The behaviour of this is affected by the <20>exclude deleted files<65> checkbox in the client<6E>s options. I<>ll implement thread watching a bit later.</li>
</ul>
<li><h3>version 26</h3></li>
<ul>
<li>The double unnamespaced count bug ( <20>system:blah (70)<29>, <20>blah (140)<29> ) in autocomplete should be gone.</li>
<li>Some rejiggering of how the statusbar updates means active import windows can<61>t spam the statusbar when they don<6F>t have focus.</li>
<li>The count of pending tags is more accurate and uniform. When it says (+3), it means for three files, not in three cases.</li>
<li>Tag counts overall are better. When it says <20>diaper vore (17)<29>, you should be getting 17 files if you enter that search.</li>
<li>GUI tag repo precedence is slightly more accurate, compared to what the db thinks it should be.</li>
<li>I nailed down why system:mime wasn<73>t working sometimes, and now it should work all the time.</li>
<li>I discovered some problems with repo-side bandwidth tracking. I fixed a couple bits, but have notes to look at it more.</li>
<li>In v25, if system:limit was greater than the search population, it threw an error! Whoops! Fixed now.</li>
<li>The post-filtering thumbnail problem is totally fixed, as are a couple other instances when thumbs would sometimes not draw.</li>
<li>The fullscreen change-image-jittering-around problem is fixed, I think.</li>
<li>Fullscreen archive works again. Not sure why/when it broke.</li>
<li>Importing with archive checkbox ticked sometimes didn<64>t archive, lol.</li>
<li>A bunch of decoupling of gui elements, making for much neater code and less gui blocking.</li>
<li>Decoupling of import from hdd as well.</li>
<li>Query is now asynchronous! If you do a massive query on a slow computer, you won<6F>t lose the gui! You can go check other tabs, whatever, and the query will process in the background, rendering on the page you started it when it is done.</li>
<li>A number of cpu-heavy numbers are now cleverly cached, so system predicate fetch happens much faster, especially on 100,000+ image dbs.</li>
<li>Some <20>collect<63> code is sped up and made generally less bonkers.</li>
<li>I wrote a couple new classes for my most common gui elements.</li>
<li>There is now an option in file->options to change the number of characters before autocomplete will go search the db for tags! If you have a slow computer and a huge db, you can set it to 2, 3 or even more chars. Default is 1.</li>
<li>Dialogs that ask you questions will now usually center on their parent window.</li>
<li>The current selection tagsbox won<6F>t show ( <20>blah (12)<29>, <20>blah (+3)<29> ), it<69>ll combine into <20>blah (12) (+3) (-1)<29>. With the + meaning pending and the - meaning petitioned.</li>
<li>Autocomplete now respects which of the include_current and include_pending buttons are green! It<49>ll only search current/pending as you wish! And the numbers will now be accurate!</li>
<li>My new question dialog with the yes/no buttons hooks the Escape key to mean no.</li>
<li>I don<6F>t use it much yet, but I have a new message dialog too.</li>
</ul>
<li><h3>version 25</h3></li>
<ul>
<li>Thumbnails should load just a bit quicker.</li>
<li>Made some dict + set code neater</li>
<li>A new end-of-filtering dialog makes the choices a bit more obvious</li>
<li>When you exit from fullscreen/filter view, the main thumbnail view it was based on should select (and scroll to!) where you were. But filtering is less reliable, since you may have just deleted the last thing you were looking at!</li>
<li>Better scrolling in thumbnail view</li>
<li>Scrolling in thumbnail view will follow the current selection, so the focussed media will always be visible.</li>
<li>Double right-clicking in filter now deletes instead of keeps (typo)</li>
<li>Slightly less flickering when processing repo updates</li>
<li>Made some form code neater</li>
<li>A lot of the thumbnail gui code has been decoupled and pubsub<75>d. It is all neater behind the scenes, meaning I<>ll be able to extend it easier in future.</li>
<li>I completely overhauled how my pubsub works. (pubsub is a messaging system inside the code). It is more flexible and easier for me to work with.</li>
<li>system:mime was not working in v23, not sure why. It<49>s fixed now.</li>
<li>Some small speedup + neatening in db queries.</li>
<li>You can now scroll to the end of a thumbnail page by pressing End. WARNING: If you have like 10,000 thumbs in the current pane, it is going to have to load all those.</li>
<li>In the AutocompleteTagWrite object, which is the tag entry box in the manage tags dialog, there was a stupid bug that made many requests more expensive. It<49>s fixed.</li>
<li>Autocomplete now works off one character<65>s input.</li>
<li>I<EFBFBD>ve swapped a bunch of expensive objects with easier staticbitmaps for now</li>
<li>some A/C ordering changes</li>
</ul>
<li><h3>version 24</h3></li>
<ul>
<li>imageboard dumper prototype</li>
<li>some db update stuff</li>
</ul>
<li><h3>version 23</h3></li>
<ul>
<li>A typo was disallowing petition rescinds in certain cases.</li>
<li>I<EFBFBD>ve rearranged some of the RMB menu separators to reduce filter/archive misclicks.</li>
<li>Tag pending upload has more accurate GUI response.</li>
<li>You can now find similar images from RMB menu.</li>
<li>Petition approvals are mirrored on an admin<69>s client.</li>
<li>The gui now accepts that admins can overrule deleted content.</li>
<li>Couple tiny URL downloader gui bugs fixed</li>
</ul>
<li><h3>version 22</h3></li>
<ul>
<li>system:similar_to</li>
<li>Some backend namespace stuff</li>
<li>Couple of gui presentation fixes</li>
<li>I removed the clunky inbox and archive buttons, see how you feel about it.</li>
<li>I tried to do ultimatelistctrl to have coloured tags (like a *booru), but it was too buggy and slow for the client<6E>s purposes, so I<>ll probably have to write my own control.</li>
<li>system:mime exists, now. Not many mimes, yet, but have a play with it, see if you like it.</li>
</ul>
<li><h3>version 21</h3></li>
<ul>
<li>On opening the URL downloader, the textbox input focuses.</li>
<li>The URL downloader has some better update texts. It pauses nicely, etc<74></li>
<li>The URL downloader now orders urls in the order they are parsed. I forgot I was throwing the links in a set, losing all order!</li>
<li>You won<6F>t see dupes in the URL downloaders<72> mediaresultswindow.</li>
<li>Accounts should now correctly refresh on version update.</li>
<li>When accounts fail to sync, it dumps the error in the log.</li>
</ul>
<li><h3>version 20</h3></li>
<ul>
<li>The preview pane should be a little less schizophrenic.</li>
<li>Some code cleaning up behind the scenes.</li>
<li>Thumbnail download optimisation if they already exist locally.</li>
<li>Icons will show/hide in fullscreen with mouse movement, just like 21/123.</li>
<li>Weird archiving bug on import is fixed. It was display only.</li>
<li>Manage tags dialog now works in fullscreen, lol.</li>
<li>system:not_uploaded_to: now works</li>
<li>services->review services now loads muuuuuch faster (after the first time)</li>
<li>There was a typo in setting up initial server<65>s accounts. Email me if you can<61>t make new admins.</li>
<li>Importing is more streamlined, with more shared code.</li>
<li>Importing with tags dialog happens more naturally in the import process. You can now do it from drag and drop imports!</li>
<li>I reordered the default collection dropdown. Your default may be changed, so check your options.</li>
<li>You can now fetch an account by a deleted file (hash).</li>
<li>Thumbnails<EFBFBD> tags now obey tag precedence for deleted stuff. I hope.</li>
<li>Modify Account Dialog now does its stuff.</li>
<li>Collections thumbnails now show how many files are in the collection, just next to the icon.</li>
<li>I<EFBFBD>ve added to and edited the help extensively, replacing screenshots and updating the text.</li>
</ul>
<li><h3>version 19</h3></li>
<ul>
<li>drop librarium nomenclature</li>
<li>More intelligent prefetch in fullscreen - things should load muuuuuch faster</li>
<li>A little more intelligent sum() calcs in autocomplete - non-namespaced tags now sum all their namespaced versions as well</li>
<li>More rigorous client db transactions, just to make things more pretty and reliable.</li>
<li>Moved db files to /db, logs to /logs</li>
<li>Made inroads to getting review services to load faster, but version 20 will have more here.</li>
<li>I<EFBFBD>ve updated the frame view so the file info is draw on top of the image. It<49>s a hack for now, inside the image-frame, but it is the only solution for wx<77>s annoying <20>no overlapping<6E> policy.</li>
</ul>
<li><h3>version 18</h3></li>
<ul>
<li>Some misc gui image info bugs fixed</li>
<li>Review services dialog is less pubsub buggy</li>
<li>Fullscreen image prefetch does more and hopefully more intelligently</li>
<li>Entering a blank tag to quit tag dialog was broke when I updated autocomplete textctrls. I<>ve fixed it.</li>
<li>Petition page is fixed, so I can finally clear out the tag petitions!</li>
<li>F10 was broke when the lib had deleted files lol! Fixed it.</li>
<li>Review services is more responsive to repo permissions updates.</li>
<li>Flash files are now correctly put in the inbox on import.</li>
<li>Synchronise Repositories daemon no longer takes ten gui-blocking seconds to process every update! This was an annoying slowdown, but I figured out what it was and reduced it to <1s with a quick patch. The problem will return with private tag repos, but I<EFBFBD>ll deal with that when I come to it.</li>
<li>Synchronise Accounts daemon has some better pubsub so it fires more intelligently. This in turn affects several other daemons, which should all be more responsive; e.g. when your permissions change, your pending thumbs/files should start downloading.</li>
<li>Improved delete orphans logic for the fiftieth time! It is great now, and won<6F>t ever bug you in the gui; it runs invisibly on shutdown and usually only takes a few secs to do its job.</li>
<li>Some of the gui updates triggered by the daemons are optimised so they block the gui less. Multiple stuff is bundled into single updates, those updates are less buggy, and the gui catches them better. Resetting the public tag repo will no longer lock up a slow system.</li>
<li>A few versions ago I changed the way repos were registered with the gui, and I<>ve fixed some of the resultant daemon-related errors. This mostly affects admins, which mostly means me!</li>
<li>Download Thumbnails daemon was getting pretty slow for large dbs (100k+ files) because of an inefficient db query. This has been cleared up.</li>
<li>I banged my head against the wall for a couple of hours getting nested notebooks to work, and I am now a better person for it. Review and Manage Services dialogs feature better panel management as a result. Their panels are also much richer, reporting loads more data about the respective service. You can now see how many mappings the public tag repo has without having to delve into sqlite db browser.</li>
<li>I have unified panel and frame background colouring away from wx<77>s bonkers idea of what things should be coloured. It should mean that everything is properly grey, but please tell me if your gui turns all black or transparent or whatever.</li>
<li>21457 is now 21,457 in pretty much all cases where it is appropriate.</li>
<li>Fixed a bug with wx gauges not liking large ranges because of signed short or whatever underlying var the C code was using to store it. (That should have been done at the wx-python level, but whatever.)</li>
<li><EFBFBD>localhost<EFBFBD> resolves to 127.0.0.1 when editing a service, mainly because windows freaks out at the former, deciding to take a couple seconds longer to make any raw connection.</li>
<li>Dialogs and frames have better, multi-monitor-friendly positioning.</li>
<li>Flash files are loaded from a temp folder beneath the install dir, rather than lib<69>s server, for various reasons. This temp dir also manages file copy/paste operations. I may move this back to the OS<4F>s approved temp folder, but we<77>ll see.</li>
</ul>
<li><h3>version 17</h3></li>
<ul>
<li>Tag negation <20>-tag<61> works again</li>
<li>You can now cancel a filter on the first image</li>
<li>Some weird filenames that were breaking the new import page no longer do</li>
<li>Autocomplete (either when searching for tags or adding new ones in) will now show the number of files tagged with that tag after the tag e.g. here</li>
<li>Manage tag dialog now pops up slightly to the upper left, rather than the center (default) of the screen, so you can see what you are tagging. I may make this more intelligent in future, so it remembers where you last left it.</li>
<li>I changed a couple small things in help regarding the new import.</li>
</ul>
<li><h3>version 16</h3></li>
<ul>
<li>Numtags system predicate now takes into account which of current/pending tags buttons you have active.</li>
<li>Thumbnail downloads fire more reliably.</li>
<li>Downloading a file was causing funky thumbnail draw, which seems to be fixed.</li>
<li>Delete Orphans daemon only fires on application close now, so post-filter db lag is gone.</li>
<li>Daemons now use events, not conditions! lololol, I<>m an idiot who can<61>t scroll down a library doc. For the longest time I was like <20>I wish <20>threading<6E> had events!<21> and it does.</li>
<li>Some account checks were missing in tag upload, but are now there.</li>
<li>A gigantic db rewrite that altered pretty much every table and query.</li>
<li>Calculation of tags for current selection now support collections, and is fast.</li>
<li>Was deleting a repo broke in 15? If it was, sorry! Didn<64>t catch it, but it<69>s fixed with the new system now.</li>
<li>Pubsub can do more, and is a little less <20>argh, I think it works like that<61>, and more OOP</li>
<li>The way tags are held by a thumb can support multiple tag servers (but only does public tag repo for now)</li>
<li>Repos are now a subclass of <20>service<63>. I<>ll do more on this in the next version, including some nomenclature changes in the gui.</li>
<li>Imports are now asynchronous! There<72>s a new import page that<61>ll open on any import. It<49>s a little jittery, but it all works. If you import 3000 tiny files, your gui may lock up for a few secs since it<69>ll be able to import faster than it updates the gui.</li>
</ul>
<li><h3>version 15</h3></li>
<ul>
<li>manage tags dialog focus bug hotfix</li>
</ul>
<li><h3>version 14</h3></li>
<ul>
<li>Selection<EFBFBD>s tags box now shows collections<6E> singletons<6E> tags</li>
<li>Autocomplete now sources from the current thumbnails whenever it can (faster than db), and does so intelligently</li>
<li>Couple of small display bugs fixed</li>
<li>Some delete logic approved</li>
<li>Repos do some more efficient inserts on POST content</li>
<li>Petition optimisation, for auto-soft-approval before update gen</li>
<li>Dialog parents, dialog parents everywhere</li>
<li>DB cleanup of a couple of old methods</li>
<li>Autocomplete Write (when adding tags in manage tags dialog) now sources from the entire network<72>s tags (not just for the files on your hard drive) when you type enough letters to stump it. i.e. If you have no files tagged <20>evangelion<6F>, but you do have a file tagged <20>eve<76>, it<69>ll show <20>eve<76> if you type <20>ev<65>, but if you type <20>eva<76>, it<69>ll requery the db more widely, and give you <20>evangelion<6F>.</li>
<li>system:ratio for searching for wallpapers or whatever. Combine with system:width>x for extra utility!</li>
<li>You can now hit F3 (manage tags) in fullscreen, whether browsing or filtering.</li>
</ul>
<li><h3>version 13</h3></li>
<ul>
<li>a couple of cpu-intensive DAEMONS schedule themselves better. (less slowdown after a big filter)</li>
<li>image rendering prefetch improved</li>
<li>smoother image rendering to screen (especially when zooming), less flickering</li>
<li>petition approval has smoother, less buggy workflow</li>
<li>new hashes and tags are added to the db muuuuuuuuch more efficiently. most public tag repo updates happen in a second or two, rather than 30+</li>
<li>some of the internal commands are streamlined together into a single class</li>
<li>ctrl-s fixed</li>
<li>clear pending file repos pubsub fixed</li>
<li>ctrl-r now shows/hides splitters</li>
<li>thumbnail delete logic is better</li>
<li>select logic is better</li>
<li>deleted_remote_files bug fixed</li>
<li>headache-inducing weakref repositories __eq__ bug in pubsub fixed</li>
<li><EFBFBD>with<EFBFBD> keyword all over the place now. turns out wx has a bunch of objects with support it (including dialogs!)</li>
<li>gridsizers are now all flexgridsizers</li>
<li>the list of tags on the current selection now has a weight attached like <20>flower (23)<29> to show how many of the current selection have that tag. it doesn<73>t support collections<6E> weight yet.</li>
<li>revised some ambiguous repo error messages</li>
<li>you can now have a main window with no pages open</li>
<li>right click menus on a selection are vastly improved (lots more info), but still a way to go.</li>
<li>on the import files dialog, you can now specify to auto-archive rather than send to inbox</li>
<li>thumbnails now know where they are uploaded/pending/petitioned to and will show that info with different icons</li>
<li>escape key now deselects</li>
<li>manage repos dialog is completely revised. comments appreciated.</li>
</ul>
<li><h3>version 12</h3></li>
<ul>
<li>You can now tell lib to search <20>current tags<67> only, <20>pending tags<67> only, or both.</li>
<li>Tag search is more efficient.</li>
<li>Search in general is more efficient.</li>
<li>Search code is more beautiful and decoupled.</li>
<li>Tags are stored in memory more beautifully, and a similar class holds repositories for thumbs also.</li>
<li>Age predicate is fixed (twice!)</li>
<li>Server code is more beautiful. DB-Server interface is decoupled into a mixin class to make it easier to understand and manage.</li>
<li>Icons for pending and petitioned files, and for <20>currently downloading<6E>.</li>
<li>Prefetch fixed, so nearby fullscreen images load just in case you want to see them.</li>
<li>Fixed a redundant pending tags bug</li>
<li>Fixed a swf tag petitions bug</li>
<li>On boot, temp folder is cleared.</li>
<li>The <20>current tags<67> window is now union on the current selection, not intersect. If nothing is selected, it shows all the tags of the current selection. In a later version, I<>ll order this list by count-weight.</li>
<li>All (I think) tag updates are synchronous-ish with the gui. As updates come in from the public repo, thumbs will update themselves appropriately. Same goes for repositories.</li>
<li>Gui-code tidy-up</li>
<li>On deleting a local file, preview clears.</li>
</ul>
<li><h3>version 11</h3></li>
<ul>
<li>swf support, lol</li>
<li>You can now backup repositories from the admin menu. Info in help.</li>
<li>Under the help menu, a quick way to set up the beta repositories<65> credentials.</li>
<li>Account sync was full of bugs, and is now less so.</li>
<li>When you go fullscreen, the preview window should go blank, which should save a little cpu time when you are looking at gifs and your ears when you are looking at swfs.</li>
<li>Auto-complete is muuuuuch faster than it was. Also more correct. Still more work to do, though.</li>
<li>Librarium hosts an http server on 45874, which supports GET /file and /thumbnail just like a file repo. Utterly prototype, but you can test it right in your browser if you like. Go http://127.0.0.1:45874/file?hash=whatever when lib is running.</li>
<li>Ctrl-T opens a new local page/tab, Ctrl-W closes the currently active</li>
<li>Image display in preview and fullscreen has been revamped, and is now both a little buggy and much better.</li>
<li>Bandwidth tracking both server- and client-side should be more reliable.</li>
<li>Delete lag (the slowdown after you boot/delete something) should be reduced.</li>
<li>Query lag is significantly reduced, and new operators for predicates have been added. You can now go <20> on a bunch of values like size and width and duration to get <20>approximately equal to<74>, which actually means plus or minus about five percent.</li>
<li>A stupid error on file upload is fixed. If you<6F>ve been having problems seeing the files you uploaded in preview, try resetting the respective file repository.</li>
<li>A few daemon bug fixes.</li>
</ul>
<li><h3>version 10</h3></li>
<ul>
<li>hotfix for tag updates</li>
</ul>
<li><h3>version 9</h3></li>
<ul>
<li>Pressing a cursor key when no thumb is focussed no longer throws an exception.</li>
<li>Hitting enter on a blank input in the manage tags dialog now quickly oks the dialog.</li>
<li>Annoying splitter exception on import is gone. It was a one-line fix, because I was being stupid.</li>
<li>All searches should be a little faster. Mostly effects searches with 1000+ results.</li>
<li>Modal dialogs (in particular) should be just a little more responsive now. Less stuff is being dumped on the wx gui thread, and all db handling is more parallel.</li>
<li>Slow petition approval fixed, made almost instant.</li>
<li>Image rendering has been revamped. It should be less stuttery now, but there is still more work to do.</li>
<li>Some pending tag update logic was fixed.</li>
<li>If the focused thumb goes from <20>not local<61> to <20>local<61>, its preview will load. (its on my to-do to do the opposite: clearing preview on delete in remote search.</li>
<li>DB daemons rewritten completely, so now a whole bunch of stuff flushes more efficiently, more reliably, and with less gui-blocking. Things happen smoother now.</li>
<li>Can now create repository database backups via librarium. Sending the command (via the admin menu) tells the repo to lock and copy its .db files to .db.backup. I<>ll update help to explain this more.</li>
<li>Can now copy files from within librarium to the clipboard! Just select from the right-click menu or press Ctrl-C, and your selection will be copied to clipboard. You can then paste to any directory, for quick export to anywhere. The export command remains for exporting thousands of files.</li>
</ul>
<li><h3>version 8</h3></li>
<ul>
<li>Fixed a missing transaction on repo db update.</li>
<li>Export path can now be on other hard drives. You<6F>ll probably want to keep it on the same drive if you have lib on a usb stick, though.</li>
<li>Fixed a really stupid <20>&lt;<EFBFBD> for <20>&gt;<EFBFBD> typo that was causing a ton of gui blocking and repository slowdown.</li>
<li>File and thumbnail downloads are much snappier.</li>
<li>One person had a very odd error while trying to open manage repos. I don<6F>t understand what actually caused the traceback to happen, but I think I fixed it nonetheless.</li>
<li>inbox/archive buttons above the searchbox are now mutually exclusive.</li>
<li>Fixed the version number in lib<69>s about window.</li>
<li>Fixed the preview window so it remembers its last size properly. Also reduced its min size so you can make it tiny.</li>
<li>Fixed the problem people were having with admin rights. See this post if you were having problems.</li>
<li>The RegisterRepoRequest that was filling people<6C>s logs on upload should be fixed now. Turns out I didn<64>t understand how wx.CallAfter works during modal dialogs! I threw in a horrible fix, but it works. I<>ll revisit it.</li>
</ul>
<li><h3>version 7</h3></li>
<ul>
<li>db changes are done</li>
<li>fixed a bug with posting tag petitions</li>
<li>when typing tags in, autocomplete now harvests from pending tags as well as current</li>
<li>the regex dialog<6F>s tag entry is now autocomplete</li>
<li>leading/following whitespace removal for tags, and multi-whitespace -> single</li>
<li>a little server-side pubsub neatening up</li>
<li>when importing via dialog, there is now a checkbox to ignore subdirectories</li>
<li>Added a quick readme.txt in the base_dir for people who choose to extract rather than install. (Everyone should check out the help at least once)</li>
</ul>
<li><h3>version 3->6 (never released)</h3></li>
<ul>
<li>after much feedback, completely rewrite db</li>
<li>general improvements to gui</li>
</ul>
<li><h3>version 2</h3></li>
<ul>
<li>general fixes and improvements</li>
</ul>
<li><h3>version 1</h3></li>
<ul>
<li>first true metadata beta</li>
<li>shit actually works</li>
</ul>
<li><h3>versions 0.91 -> 0.99</h3></li>
<ul>
<li>move to python and wx, and an application- rather than browser-based model</li>
<li>building on concepts</li>
<li>scrapping p2p, turning to client-server</li>
</ul>
<li><h3>early versions of beta</h3></li>
<ul>
<li>made db, playing around with LAMP</li>
<li>an initial p2p framework started</li>
</ul>
</ul>
</div>
</body>
</html>