### changelog

- ### version 150

- 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
- improved some gallery downloader status texts
- gallery downloader will no longer wait 5 secs before fetching first page of urls
- fixed a critical race condition that had a chance of causing complete and unrecoverable gui freeze in the gallery downloader code
- fixed rendering of some bizarro pngs that CV couldn't understand
- fixed tag parent management for admin users
- fixed up some tag parent dialog code
- tag sibling dialog now accepts single reasons for multiple pairs, like the tag parent dialog
- improved error state on rendering video that reports resolution of 0x0
- removed looping error reporting on certain static image rendering errors
- fixed an error when some thumbs were 'collected' while fading in
- tagboxes now select on home/end and support numpad versions of page up/down
- fixed a radio button initialisation bug
- boosted the initial size of the 'set default advanced tag options' dialog so the collapsible pane is more visibile
- silenced a upnp error when external ip can't be parsed
- reduced some tag dialog previous/next button lag
- general code cleanup and refactorisation
- gui flag refactorisation and unification
- refactorisation of most non-constant stuff from constants files
- refactorisations of media mixins class in prep for a general rewrite of that code
- improved client initialisation of default options, boorus, and imageboards

- ### version 149

- all listctrls with an attendant delete button will now support the same action with the delete key
- several normal tag boxes will support the delete key as well
- added a temporary service cache to the client db to speed up service fetching until I can figure out a yaml replacement
- cleared out inefficient tag and hash database fetching and generation code
- tag parent dialog will now ask for an action/reason for every ( children, parent ) pair rather than every ( child, parent ) pair
- fixed an error with collecting by rating
- fixed the 'fix' to the gui_colours db update problem
- the autocomplete dropdowns in the paths-to-tags dialog will no longer produce errors when tags are submitted
- improved accuracy of taglist scroll-to-selected scrolldown calculation
- collapsed some of the helter-skelter db code in prep for future improvements
- moved daemon code to separate files
- silenced server upnp errors
- all except: continue lines are banished!
- cleaned up some miscellaneous exception code
- cleaned some ugly behind the scenes a/c dropdown button code
- did some general code cleanup

- ### version 148

- rewrote thumbnail canvas and scrolling code from a crashtastic monolithic bmp to a lighter, faster, and more flexible page buffer
- all custom gui elements should be less flickery
- the manage tags dialog will now grow significantly taller if its parent window is also tall
- dialogs launched by the media viewer will initially position themselves according to that, rather than the main gui
- dialogs launched by controls will initially position themselves according the control's toplevelwindow, as originally intended
- 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
- missing thumbnails are now replaced with the hydrus psi symbol silently, with a simple statement written to the log
- fixed a tiny typo in update error code that was reporting version wrong
- fixed a typo bug in gettagarchivetags
- fixed a typo that had broken namespace sorting
- numerous other single-line miscellaneous bug fixes
- fixed a bug with displaying media with size (0,0)
- fixed a bug with zooming in flash files
- improved some buggy tag selection logic that was sometimes desyncing indices between menu popup and selection
- tags will now stay selected even through changes to the tags list
- any attempt to close the autocomplete dropdown floating frame should now bump the close event up to the whole program
- linux release now includes source code alongside executables

- ### version 147

- fixed a problem when trying to do a multi-release update that contained the v146 update
- fixed the 'canvas not resizing after media removal' bug
- when an autocomplete appears in a dialog, the dropdown window will integrate into the dialog (rather than being a popup), allowing mouse interaction
- refitted the paths-to-tags dialog so the different static boxes and newly embedded A/C dropdowns fit better
- fixes to and cleanup of sibling tag retrieval code
- fixes to and cleanup of sibling tag filter code
- fixes to and cleanup of sibling tag search code
- fixes to and cleanup of sibling tag display code
- fixed a couple bugs in READ autocomplete tag search caching that was stopping namespaced queries searching properly if typed in manually rather than pasted
- fixed a similar bug in WRITE autocomplete tag search
- fixed a bug that was ignoring namespace entirely in WRITE autocomplete
- synchronised subscription popups' new file buttons with the text

- ### version 146

- manage tags and ratings dialogs will now OK on F3/F4, not CANCEL
- zoom switch (default shortcut 'z') will now work for images smaller than the media viewer's canvas
- in the media viewer, the canvas-fitting zoom value is now inserted into a media's scrollable zooms
- added 'tags box background' gui custom colour
- volume, chapter, and page tags will sort properly again in thumbnail view, including last week's improvements
- 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)
- to remove clutter, the preview window will no longer show tags and file information like the normal media viewer
- subscriptions will now show a live 'show files' button as they process
- the copy and 'open new page' right-click menu options on tags will now work on more controls
- cleaned quite a bit of tags box code
- cleaned up and unified a lot of miscellaneous canvas zoom and display code
- fixed an error when trying to upload a file petition without any accompanying file uploads

- ### version 145

- added custom gui colours for thumbnail backgrounds and borders, the autocomplete background, and media background and text
- added <- and -> arrows to manage tags dialog launched from navigable media viewer
- on empty input in the manage tags dialog, page up and page down work as shortcuts for the new <- and -> buttons
- fixed the media height calculation for animations, so when they are vertically scaled, the total height including scanbar won't overflow off screen
- allowed non-integer page, chapter, volume tags in display and sort calculations
- semi-integer tags will sort along with integer tags and string tags like so: 0 < 0a < 0b < 1 < 2 < 22
- improved the old tag/media sorting code
- removed loli and shota from hentai foundry filter options
- patched old db-stored predicates to attempt to convert to the new format when queried for _inclusive
- this _should_ have fixed the recent export folder problems
- created an 8chan board, and updated my various links, including in the client, to migrate from my old forum to this
- added a 'fit to canvas' checkbox in file->options->media that will zoom small images to the full size of the media viewer
- misc code improvements

- ### version 144

- files named 'Thumbs.db' will now be skipped in the import files dialog
- fixed wildcard searches, which last week's predicate rewrite broke
- fixed a typo that was showing namespace predicates as exclusive (-series:*) when they were actually inclusive (series:*) and vice versa
- added wildcard namespace searching for database autocomplete queries
- fixed database wildcard autocomplete searching when wildcard match is not the first word in a tag
- fixed database file searching when wildcard match is not the first word in a tag
- added a comprehensive suite of predicate-unicode conversion tests
- cleaned and improved some of the downloader code
- added five second per-gallery-page delay to subscription daemon
- added three second per-file-delay for regular gallery downloads and subscriptions, just to be polite to those web services
- added three second per-file-delay to the thread watcher for the same reason
- added a 'check now' button to the thread watcher
- fixed a problem that was sometimes causing subscriptions, when paused, to continually restart
- removed unnamespaced tag parsing from deviant art
- fixed creator parsing for deviant art, which was formerly cutting off the first character
- patched an account sync problem in the manage tags dialog
- in add tags by path dialog, tags are now sorted before being added to the file list
- in add tags by path dialog, the regex sections now generate tags for every match in the string, not just the first
- stopped collapsible panels resizing dialogs to minsize on collapse or expand
- added shortcut for 'open externally', default Ctrl+E
- moved 8chan to new 8ch.net domain (old domain still works)

- ### version 143

- 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
- improved the way the above results are calculated
- pixiv artist downloading now correctly asks for numerical artist id
- reworded some of getting started with files help page to better explain multiple selection
- widened the splash screen a bit so db update messages have more space
- all frames and dialogs now have an explicit minimum size that is usually far smaller than their initial size
- the dialogs with listctrls (import files, manage custom filter actions, and so on) now start a little shorter in height
- fixed some bad sizer flags in dialogs with listctrls
- rebalanced content update throttling for quicker correction under heavy load
- moved the new 5 second break in the gallery parser to a position for quicker status updates
- 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
- fixed services->news to hide if you aren't connected to any repositories
- autocomplete boxes are now a very slight shade of blue, see if you like it
- fixed 'launch file externally' for linux and os x
- fixed 'launch directory externally' for linux and os x
- fixed 'set up server for me' for linux and os x, I think
- improved some general external-process-launching code
- cleaned and improved some of the predicate code

- ### version 142

- added wildcards to autocomplete results and file queries
- autocomplete results will match your wildcard _exactly_
- a new predicate type will appear at the top of wildcard queries; selecting it will search files with that wildcard
- the new wildcard predicate can be prepended with a minus sign to exclude from results just like normal tag and namespace queries
- in wildcard predicates, namespace and/or tag can contain wildcard characters
- added some wildcard help
- putting in '***' as an autocomplete query is now a pretty bad idea!
- fixed some logic in how tags are matched against unusual search input in the db
- sped up and cleaned how tags are matched against search input
- fixed some namespace logic in how tags are matched against search input
- 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 ])
- added 'open externally' to launch the file in default external program to thumbnail and media viewer menu
- added a five second delay between gallery-page fetches in the downloader to reduce chance of 429 errors (this was affecting big sankaku searches)
- added danbooru webm downloading
- fixed a typo in the thread watcher
- fixed a bit-rot bug that was stopping the 'like' ratings filter from launching
- fixed right click menu in custom filter

- ### version 141

- combined mappings are no longer calculated and stored
- recalculate combined mappings obviously removed from database menu
- 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
- combined mappings autocomplete counts are now calculated on-the-fly
- combined mappings tag queries are now performed on-the-fly
- combined mappings namespace queries are now performed on-the-fly
- combined mappings zero/non-zero tag count queries are now performed on-the-fly
- combined mappings regular tag count queries are now performed on-the-fly
- corrected some logic with regular tag count queries, I think
- autocomplete tag cache dirties and culls itself more efficiently on tag update
- autocomplete tag cache dirties and culls itself more efficiently on file import/delete
- removed a couple of non-useful AMP tests that were breaking due to a previous change in connection code
- improved how popup messages give the gui permission to update; hopefully the gui will lock up less when big jobs with popups are happening
- improved some misc timing logic
- improved some repo sync timing logic
- added simple emergency throttling to the repo sync daemon when the CPU/HDD is getting hammered
- improved some repo sync text number-grammar and timing
- added sankaku channel booru, including flash
- the booru downloading code that discovers image urls is more flexible
- 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)

- ### version 140

- if a repository or subscription popup message has nothing to report, it will dismiss itself
- fixed handling of text popup display when the object passed was not text
- delete orphans is now cancellable
- vacuum, deleted orphans, and upload pending popup messages will dismiss themselves an hour after they are done
- tightened the subscription final state popup message to just a title and a button
- removed much of the very expensive autocomplete tag cache maintenance code, which seems not to be worth the effort
- culled the autocomplete tag cache in prep for new maintenance cycle
- 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
- '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)
- fixed a non-updating display bug when resizing frames/dialogs with auto-resizing listctrls on linux
- cleaned up a wall-of-text error when closing the client immediately after deleting a tag service
- filled a gap in static text image object cleanup
- cleaned up some thumbnail waterfall/fade code
- filled several gaps in thumbnail object cleanup

- ### version 139

- cleaned up all the old popup message code, and fully integrated the new
- moved repo sync to the new popup messaging system
- moved normal errors and db errors to the new popup messaging system
- improved some error handling code
- reintroduced message printing
- improved subscriptions messaging
- added cancel button to:

- check file integrity
- export to tag archive

- added pause and cancel buttons to:

- repository sync
- subscription sync
- pending upload
- regenerate thumbnails

- improved how jobs' pausability and cancelability are spawned
- improved and harmonised a lot of pause and cancel and general shutdown-job-interaction logic
- pausable and cancellable popups can only be dimissed with right click once they are done or cancelled
- improved some more pause logic in the subscription and repository sync daemons
- improved popup pause responsivity
- added comprehensive cancelled/finished log statements for the newly pausable and cancellable operations
- 'just woke from sleep' calculation will no longer evaluate to true on application start
- deleted the old broken message log page, which I had forgotten even existed!
- fixed a bug stopping adding tag repositories in the manage services dialog
- fixed a bug that was hiding the 'name and credentials' panel in the manage services dialog
- improved some kinds of thumbnail error reporting
- sped up client boot by one second

- ### version 138

- 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'
- added options for idle, vacuum, and delete orphans periods to the 'maintenance and memory' page in the manage options dialog
- 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
- animations now show their current frame number in the animation scanbar
- status bar now shows inbox/archived counts on any selection
- reworked static image zoom code so they resize beautifully, without jaggies, at the cost of a bit of CPU and memory
- created new flexible message pathway
- moved most messages to new pathway
- improved a bunch of message and job_key related code
- 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
- fixed the pending menu not updating its count when files imported and added tags via archive sync
- improved the logic behind the 'computer just woke from sleep' calculation
- improved the accuracy of the 'client is currently idle' calculation
- improved database vacuum so the .db-wal file is flushed afterwards, for both client and server
- because of better vacuuming, server db backup no longer needs to create a bloated .db-wal backup
- removed a very common superfluous empty tag upload packet in normal tag uploads

- ### version 137

- eliminated a loophole in the tag-pending process that allowed zero-length subtags through during archive sync
- improved the way tags are cleaned and checked, no matter their source
- added zero-length subtag (e.g. 'character:') checking and exclusion to the server
- removed erroneously pending or current tags that have a zero-length subtag
- added 'copy bitmap' option on still image right-click menu
- harmonised a whole bunch of clipboard code
- added a check file integrity db function, with quick filename existence and thorough content hashing modes
- added clear service info cache debug function to database menu
- added regenerate combined mappings debug function to database menu
- added a primary key to the hydrus tag archive db to save some space on duplicate mappings
- added AddMappings to the hydrus tag archive to make mass mapping-adding a bit more efficient
- added DeleteTags to the hydrus tag archive
- added Get/DeleteMappings convenience synonyms for Get/DeleteTags for the hydrus tag archive
- added an 'export to hydrus tag archive' button in the advanced content update dialog
- renamed the db tag archive sync methods to better reflect what they actually do
- massively simplified how cursors are referenced inside the client and server databases
- cleaned up some db cursor code
- fixed a critical error in the database test code that was spawning a double db mainloop
- improved error handling when regenerating thumbnails
- fixed error handling when waterfalling thumbnails
- fixed a typo in export tags process
- improved the way the client flushes its buffered log data to disk
- added log buffer flushing to the server
- added a confirm dialog to advanced content update dialog's powerful 'go' button
- added custom titles to many co-opted yes/no dialog boxes where the default 'Are you sure?' didn't make sense
- cleaned up some misc code
- cleaned up some misc bitmap language

- ### version 136

- added tag archives
- added tag archive sync initialisation on all existing local files
- added tag archive sync maintenance on newly imported files
- added a new db directory, client_archives
- added tag archive sync options to tag services in manage services dialog
- added local tags service to manage services dialog
- added sha512 to local hash cache
- added tag archive hash_type guessing
- added a new dialog for selecting n arbitrary strings
- got testing to work on all platforms
- fixed the hydrus server for linux and os x; it now has a stay-alive frame rather than a taskbaricon
- improved some dialog testing code so it would work on all platforms
- fixed a deffered problem that was causing the server AMP test to hang on Linux and OS X
- neatened and harmonised a bit of common file and network streaming code
- improved some misc manage services dialog code
- fixed a critical bug that was meaning certain service changes were not being saved to the database, so were being forgotten on restart
- fixed some select-string code that wasn't taking sets of strings for a weird wx reason

- ### version 135

- added a menu option to any tag's right-click menu to open a new search page for that tag
- added a subscription cache to the client database to speed up subs checking
- 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
- cleaned up a couple of temporary file deletion errors
- improved some more temp file deletion error handling
- fixed a bug that I think was stopping file repositories from being deleted
- improved the manage services db edit log
- fixed a bad comparison that was causing superfluous edit actions after a manage services dialog ok
- fixed a new bug related to displaying non text in the popup system
- 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
- retuned the way the subscrption daemon initialises (it'll now wait two minutes after startup before firing)
- fixed a typo that was causing fatten service info to fire more often than it should
- added a yes/no warning to options ok when the thumbnail dimensions have been changed
- added a popup message when thumbnail dimensions have been changed to report on deletion progress
- added account testing to my server db testing suite
- improved the security of the registration_key->access_key transaction; it'll now generate a new access_key with every call

- ### version 134

- updated to wx 3.0.1.1
- fixed a critical media scrolling bug due to the wx update
- improved some bad media scrolling code, sped things up a bit
- fixed 'top' and 'bottom' media scrolling events
- fixed a typo that meant the default fullscreen media browsing shortcuts were ctrl+ appended rather than working on their own
- 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
- improved how severe boot crashes are reported
- fixed a bit of text-reporting code that wasn't handling non-text very well
- improved handling of a weird popup message manager error
- fixed an occasional overhasty cleanup error in the checkimportfolders daemon
- added options for default values for the thread watcher's number of times to check and check period
- fixed the thread watcher complaining about closing when the checking was finished
- optimised some id generating code to stop spamming the id cache, which I think was overloading after a while and causing weird PyAssertionErrors
- neatened autocomplete dropdown service storage and menu id generation
- improved menu id generation for tagbox
- fixed opening new petition page from view menu
- added a 'this might take ages' warning yes/no dialog when trying to delete a tag service
- added a little popup message info to report on progress when deleting a tag service
- added some server db testing
- fixed an error when double-clicking a tag in a page without search predicates
- updated some help links from mediafire to the new github releases page
- fixed a typo bug in server db's account flushing code

- ### version 133

- reworked the add file process to correct file repository file counts
- made add file process to calculate inbox and local thumbnail count more efficiently
- fixed a critical bug in server db creation that was stopping file repository service from working
- added go/exit fullscreen options to fullscreen right click menu as alternative for default shortcut 'f'
- improved fullscreen position, size, maximised, and borderless state memory
- removed old 'fullscreen_borderless' option in local options
- thread checker now supports 8chan urls
- thread checker now has 'number of checks still to do' spin control so you have more options to fire and forget
- improved how the thread checker constructs and passes url information around
- improved some thread checker timing logic which _might_ have been causing problems
- improved some thread checker error reporting

- ### version 132

- merged two complicated serverside account tables into two simpler tables
- with this action, was able to clean out a lot of rubbish old server account code
- 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
- rewrote the account object to be simpler and easier to maintain
- swapped the old rubbish 'account_id' identifier in the account object for the much better 'account_key' identifier
- harmonised some conflicting account-related variable names
- refined the way the unknown account is stored and identified
- split serverside account verification and identification into two separate paths, to reduce chance of security problems
- 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
- simplified account data use checking
- simplified and harmonised the way used bytes and used requests are stored and retrieved in the account and account type
- with guarantee of account_key uniqueness across entire server, I have simplified session code in several places
- updated help to reflect the new relationship between access keys and account keys
- 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
- fixed serverside credential verification for non-instantiated (still have a registration key) access keys
- added a bit of explaining text to the 'waiting' autocomplete state
- fixed a typo that caused errors when deleting files from a file repo

- ### version 131

- removed tag service precedence and its various expensive and overly complicated effects
- recalculated combined tag mappings using new simple union based merge
- cleaned updatemappings code, and I think fixed some tiny count logic bugs
- refactored eight overly complicated sub-functions of updatemappings down to two simpler ones
- fixed up a mention of tag service precedence in help
- deleted a bunch of old client update code
- added adaptive throttling to tag updates, so they'll speed up and slow down based on current CPU load
- refined a bunch of the parent and sibling code, given the new changes
- updated and cobbled back together a host of finicky parent and sibling and regular tag test code, given the new changes
- fixed a bit of logic in the censorship code that was causing overly broad namespaced matches
- fixed error when selecting a specific tag service in a normal search
- deleting a service no longer throws an extraneous error after it is complete
- fixed danbooru large pngs, which were being resized in a way that broke some of the downloader's url prediction code and caused 404s
- fixed a bug in the input custom filter action dialog
- fixed a misc clientserviceidentfier bug in custom filter initialisation
- fixed setting numerical ratings from a custom filter (I think) and I think fixed many other custom filter operations
- fixed several text-entry-dialog-launched-from-dialog bugs
- fixed, I really think for real this time, the serverside account desync bug. it was in session init, where I had not previously looked
- improved some popup messages' text
- improved the way some exceptions are reported
- cleaned some error reporting code
- silenced the more-annoying-than-useful account sync failure popups
- fixed and cleaned server start/stop/restart code a bit more
- reduced regular CPU hit from resize thumbnail daemon and made it more polite in starting

- ### version 130

- fixed youtube downloads
- fixed remote services not showing in OS X manage services dialog
- updated 'running from source' help page with some new info for Linux
- cleaned a little more code
- fixed bug that was stopping new/modified serverside services booting immediately
- improved the server-client service key translation code on serverside service modification
- fixed test credentials button in manage services dialog for unsaved services
- fixed bandwidth tracking errors for unsaved services
- deleted some old unused server options code
- improved server services start/stop code a bit more
- massively rebalanced the autocomplete maintenance routine after a tag service deletion or tag service precedence change
- made a mess of some of the deleted tag update processing code, I'll fix it next week

- ### version 129

- fixed a typo in launching the ratings dialog
- did some important code cleanup re a common ambigious variable name
- improved serverside account tracking in a way that will help future user management clientside too
- improved serverside session code a bit more
- improved general serverside login
- improved serverside access key verification
- aligned server db update code with the client's only-update-up-to-50-versions rule
- fixed some buggy repository test code
- fixed some buggy local booru test code

- ### version 128

- fixed right click on thumbnail error
- 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)
- removed account desync on network version mismatch, to stop this problem anyway
- fixed tag parents not showing in autocomplete dropdowns
- added sqlite3 command line tool to db folder for convenience
- fixed a typo in manage server's services dialog
- some misc code cleanup
- added default advanced tag options pane to manage options dialog
- added default advanced tag options to manage subscriptions dialog
- fixed booru namespaces in manage subscriptions dialog to be booru-specific
- added default advanced tag options to normal download pages

- ### version 127

- finished service_identifier rewrite, phew
- added an exception catch for full program crashes; big errors will now be written to crash.log
- added a shutdown check to make sure popup message manager closes properly when certain weird errors occur
- 'files_service_identifiers_cdpp' is now renamed to the vastly less insane 'locations_manager'
- removed db update code older than 50 versions
- a new error message will display if trying to update more than 50 versions in one go
- many other small fixes I didn't keep track of

- ### version 126

- restored a dll that I thought was no longer needed, but was actually doing some weirder gif rendering
- added 'remove' to fullscreen menu
- harmonised thumbnail and fullscreen right click menus a bit more
- added pause button to popup messages for repo update and subscription processing
- moved service_identifier switchover forward
- moved all service fetching to streamlined and non-laggy manager
- changed client options to store default tag repository in a better way
- changed subscriptions to store their advanced tag options in a better way
- fixed a 'missing service' bug in advanced tag options
- remade idle calculation into a much better gui-based rather than db-based test
- fiddled more with maintenance timing, hopefully for the good
- new screenshots in the help index pages!
- improved how auto repo and server setup work and report their status
- the client's UPnP daemon will no longer spam errors if your IGD doesn't support UPnP
- fixed a bad db call in server's UPnP daemon

- ### version 125

- moved client splash screen and client boot to application event loop (i.e. your mouse won't hourglass over it now)
- splash screen is now draggable
- added splash screen for client shutdown
- cleaned up shutdown procedure
- added detailed A/C timing options
- created a new text entry dialog that won't allow ok on empty text
- hence fixed a startup bug when a session was created with no name (and likely others!)
- further tweaked idle calculation to improve maintenance routine
- revised a bunch of the maintenance timer logic
- fixed some bugs in the maintenance timer logic
- fixed a daemon error reporting typo
- fixed another way session data usage tracking could split, server-side
- brushed some more dust off the server-side session code
- improved some bad image processing nomenclature
- took first steps in service_identifier replacement rewrite

- ### version 124

- fixed some more broken gifs (those with funky transparency, I think)
- fixed a critical bug in the subscriptions dialog that was causing subscriptions to be deleted
- reintroduced old locale code, with minor improvement, to fix number grouping (123,456,789) issue
- added a short pre-activation wait to all daemons to reduce more wake-from-sleep problems like the UPnP issue last week

- ### version 123

- rewrote the old gif rendering code to the new system, so gifs with variable framerates now work again!
- fixed a bug that was stopping the first zoom of an image from showing if it took more than a frame to render
- webms are now zoomable beyond frame border
- webms will now respond to keypresses and mouseclicks when cursor is inside their border
- added service select to import metadata
- if repo sync is paused, either globally or individually, repo will no longer try to regularly sync their accounts
- fixed individual repository pause sync
- I think I fixed a serverside session synchronisation bug that was causing too-small data usage reports
- improved complicated tag action descriptions in manage tag dialog
- hastened initialisation of subscriptions daemon
- hastened initialisation of subscriptions dialog
- neatened all object declarations
- fixed a menu bug in OS X
- added put a little delay in the upnp daemon, hopefully to stop the error popups after waking from sleep
- updated an old hacky bit of locale code that was breaking certain platforms of wx 2.9.5.0
- improved animation and other rendering timings on non-windows platforms
- improved media focus on non-windows platforms

- ### version 122

- fixed server upnp daemon to use correct port, I think
- added client upnp daemon for local booru; it'll update upnp mappings as soon as they are changed
- added bandwidth tracking for local booru; it'll even magically update before your eyes in review services
- bandwidth limits are tested, so exceeding data usage will result in 403 errors until the next month
- moved local booru css to an external file any user can edit
- added 'open share in new page' button to local booru review services
- fixed local booru display for video, flash, audio, pdf and miscellaneous
- fixed local booru render resolution for all media
- fixed local booru thumbnails for video, flash, audio, pdf and miscellaneous
- added caching headers to static file requests to reduce browser-hydrus bandwidth
- fixed local booru page text's newline formatting
- added local booru unit tests

- ### version 121

- first version of local booru

- ### version 120

- improved quality of downsized animation rendering
- sped up downsized animation rendering in this case
- neatened animation code
- fixed a mid-animation resize parameter bug
- I think I fixed an animation scan bug that was sometimes giving the wrong frames
- added thumbnails for all video formats
- fixed an off-by-one framecount bug for certain videos, and retroactively fixed counts for existing videos
- fixed a couple harmless width/height numpy.shape switcharounds
- cleaned up some file parsing code
- added a pixiv unit test
- fixed a bug when servers were returning unusual relative redirect urls (gelbooru)
- semi-fixed a bug when servers were returning unescaped redirect urls (gelbooru)

- ### version 119

- fixed an overzealous error in v118 update code
- new direct ffmpeg video decoder for webm
- new system takes advantage of multi-core processors, increasing render speed
- improved animated frame timings
- fixed a number of gifs that were causing the "None has no 'shape' attribute" error
- sped up memory and subprocess cleanup after video playback
- added some new ffmpeg instructions to the running from source help page
- added client and server startup and shutdown statements to the log
- improved some idle time logic, which should improve maintenance timings
- fixed a critical idle timing bug that was adding 1s to many actions, including file queries!
- fixed a pubsub testing bug that was preventing daemons from quickly closing after a unit test

- ### version 118

- improved animated frame buffer size calculation, saving memory and improving smaller animation performance
- improved quality of static image thumbnail generation
- fixed webm mouse event propagation
- updated and improved perceptual hash code

- ### version 117

- fixed the gif rendering error that was causing threading lockup
- fixed a bug in the animated drawing code that was causing +5ms duration on every frame
- improved frame duration checking code
- lowered quality of animated frame resizing to improve effective framerate for previews
- fixed a problem with pixiv session management
- fixed a problem with pixiv tag subscriptions
- neatened an error with pixiv manga download failures
- corrected reviewservices hyperlinkctrl initialisation
- improved the wording for the 'port already bound' error message on client startup
- improved hydrus network session error handling
- cleaned up some old gui messaging code
- some general image/video code nomenclature cleanup
- changed http connection maintenance daemon to be snappier on client shutdown
- subscription minimum check period is now 1 time unit, not 0!

- ### version 116

- gifs now render their frames as needed, rather than building a giant memory-hogging cache of all of them
- webms now have thumbnails!
- refactored important hydrus threading code to a separate module
- added new 'call-to' worker threads for snappier job-thread behaviour
- fixed a typo that was stopping new repositories being entered in the manage repositories dialog

- ### version 115

- moved review and manage services windows to a local/remote dichotomy
- moved local booru service code generally forward
- added local booru service to db init/update
- added booru to review services
- added booru to manage services
- neatened some misc client code
- improved static/animated image rendering code in general
- added some cv stuff to gif rendering code
- cleaned up gif rendering code
- sped up animated gif rendering by about 5-10 times!
- added some cv stuff to static image rendering code
- cleaned up static image rendering code
- sped up static image rendering up to 4 times!
- image import should generally be faster
- pulled animated images off the image cache, reducing memory usage
- added some clever compression that cuts image cache memory usage in half!

- ### version 114

- gif rendering seems to be fixed in all cases! hooray!
- fixed 'pop from empty list' popup error spam in the new cache clearing system
- fixed weird behaviour on right-clicking 'dismiss all' popups button
- added a unit test for perceptual hash generation, with an eye to moving the delicate code from cv to cv2
- updated opencv to 2.4.9
- updated pyinstaller, so frozen releases may be a bit more stable!
- moved webm and mkv info parsing over to cv, which allows num_frames

- ### version 113

- added mkv+webm support!
- fixed some system:mime selection stuff
- fixed a missing db call in the server upnp daemon
- fixed upnp dialog's edit button
- cleaned up upnp dialog's post-button refreshing logic
- fixed getupnpmappings to deal with >10 mappings
- fixed fullscreen_switch for custom filter
- fixed a late canvas drawing exception when fullscreen window was closing due to being media-empty
- rolled back to wx 2.9.5 for windows again. not worth the trouble, right now
- hydrus caches should now clean up anything older than twenty minutes
- 'last session' will now be saved every five minutes, rather than only on a successful close

- ### version 112

- A/C dropdown is fixed on linux!
- wrote new UPnP library based on miniupnpc multiplat executables
- integrated new UPnP library into existing client code
- upnp management dialog should now work for os x and linux
- integrated new UPnP library into existing server code
- added UPnP unit tests
- fixed a bug when upnp executable path had whitespace
- renamed 'add, remove or edit services' to 'manage services'
- fixed some review services frame text display issues for restricted non-repository services
- optimised review services frame initialisation db requests
- added a database maintenance routine that should help review services launch a bit faster on average
- improved manage services layout a little bit
- removed initialise server button when it is invalid
- updated 4chan thread url parser to handle new 4chan thread urls
- redirected 4chan thread downloader to new api address
- fixed an error reporting problem in repository sync
- fixed my linux dev environment, so linux executable is back
- changed wx requirement to 2.9 on linux, due to bugs in linux 3.0.0.0 release
- fixed a typo in repository deletion
- added repository deletion to unit tests
- added num_base and num_step to file path regex dialog
- fixed popup display of certain exceptions, including file parsing exceptions
- cleaned up os x and linux build scripts, added static&help sync

- ### version 111

- fixed booru searches that include unusual characters like '&'
- added pause synchronisation to individual repositories in the manage services dialog
- fixed gui_sessions with predicates (again!)
- added a unit test for gui_session storage, shouldn't get problems with that again
- fixed a getcountlesscopy predicates bug
- first step in multi-platform upnp support is DONE, phew
- harmonised subscription file import errors with normal hdd import errors. they nshould be a bit clearer
- corrected how popup text width is enforced
- added a warning to the reset cache button in the manage subscriptions dialog
- os x autocomplete dropdown seems to be magically fixed, not sure how or when that happened
- started HydrusBooru
- fixed some problems with twisted startup/shutdown in unit testing

- ### version 110

- fixed a variable overwriting issue in the subscription daemon error reporting code that was causing error spam
- fixed more actual and potential instances of this error elsewhere
- fixed a bug in the import file error system for non-local files
- fixed url parsing for urls lacking 'http://' or 'https://'
- fixed hentai foundry image parsing for two different cases
- fixed client gui-initiated db backup to also backup client_updates folder
- A/C dropdown now shows current and pending counts separately!
- fixed display of uncaught database exceptions
- new version of sqlite for windows, might speed some things up a bit
- upgraded a bunch of other libraries, look forward to mysterious new bugs!
- I _think_ some transparency support is improved
- moved messaging forward
- dropped processed_mappings experiment
- removed a bloated mapping index, hopefully speeding a couple things up
- fixed an erroneous error message in hydrus network session manager

- ### version 109

- started processed_mappings table. for now, it mirrors normal mappings table
- improved manage tags dialog logic
- fixed only_add issue for parent tags
- fixed an important tags box surplus tags display bug when focus repository was changed
- fixed petitioned tag counts in tag boxes, as long as 'all known tags' is not selected
- fixed occasional zero tag count in tags box
- added petitioned tags to normal media fetch, not sure why they were missing
- fixed a random error when trying to refresh a 'open selection in new page' page
- improved help to reflect new manage tags dialog
- cleaned up an annoying spam-text-to-console issue when running test.py
- reworked the way the server clean/create update daemons interface with the database
- improved how updates are stored and fetched in the server db--no longer needs a db hit to fetch
- harmonised client db's update naming convention to the server's
- improved server db to update the same new-ish way client db does it

- ### version 108

- added 'database->delete orphan files' for manual firing of this maintenance routine
- improved redirect location parsing--should fix the booru 'Could not connect to None!' errors
- fixed 4chan thread downloader's erroneous 'still working' warning when trying to close while paused
- added multiple additions to manage tag parents dialog
- added multiple additions to manage tag siblings dialog
- generic improvements to both dialogs
- manage tags dialog now shows all the selection's tags combined, not just the tag intersection
- multiple improvements to manage tags dialog
- reworked some tagsbox classes to be more flexible
- improved dialogsetupexport's use of tagsbox

- ### version 107

- converted 'namespace blacklists' to more general 'tag censorship'
- tag censorship now accepts unnamespaced tag bans
- tag censorship now accepts all namespaced tags bans
- tag censorship now permits bans for all tag services
- fixed several small bugs carried over from the namespace blacklists code
- added a bit about tag censorship to help, under advanced.html
- fixed youtube downloading
- file import dialog now ignores dupe paths
- improved update status text in review services window
- fixed erroneous capital P on pending menu
- fixed shortcut input dialog's ok button
- fixed modify tags dialog's admin modify button
- added several bits of explanation text to advanced dialogs
- added more helpful timestamp to news dialog
- neatened export dialog's layout
- corrected some double-escaped backslashes in the export filename pattern button menu
- fixed modify accounts dialog's http request
- improved grammar in db pubsub code

- ### version 106

- download by raw url now sends the correct text to the popup on successful import
- first step in peer-to-peer repository sync is complete
- repository updates are now stored as local yaml, in the new client_updates folder
- repository reset keeps the downloaded updates, only does a reprocess
- all repository updates should process faster, especially if you have saved sessions
- a lot of misc gui lag should be reduced, especially if you have saved sessions
- the way the gui's menubar is updated is massively improved
- os x and linux menubar should be less spastic
- several improvements to daemon pubsub workflow

- ### version 105

- complete rewrite of message data handling and display
- hidden gauge messages will now display correctly
- fixed error-display bugs in the log page
- massively improved how database errors are generated and displayed
- improved and streamlined how other errors are generated and displayed
- improved the way all gui elements are deleted from memory
- fixed the frequent segfault in os x and linux when closing popup messages
- fixed the common segfault in os x and linux when refreshing a query
- fixed the occasional segfault in os x and linux when closing a page
- fixed pattern shortcut buttons
- the 'show deleted' checkbox on manage tags dialog makes a return
- neatened several checkboxes so clicking the label text clicks the checkbox

- ### version 104

- first version of export folders is ready
- cleaned up all ok and cancel dialog behaviour
- cleaned up some misc dialog button code
- fixed up some ugly db yaml pubsub stuff
- fixed a juddering 100% CPU loop in the subscriptions code
- subs and repo sync will now put up a popup gauge
- repo sync will now pause mid-update on repository pause
- services->pause->stuff will poke daemons to restart more reliably
- removed the service status area of the statusbar
- fixed 'subscriptions forgetting their tag options' bug
- added select invert, thanks to @fluffy_cub for contribution
- fixed a slight logic bug with display of select archive/inbox
- added better instructions on how to run in OS X from source, thanks to user steenuil for contribution

- ### version 103

- fixed a virtual size issue with expanding collapsible panes inside scrolling windows :S
- fixed images not showing on first zoom switch
- improved touch and feel of image/flash scanbar
- subscriptions dialog is now flattened
- reworked advanced_tag_options to be more efficient and flexible
- fixed a couple bugs in advanced_tag_options
- moved fake http unit tests to a fake version of the new networking system (so much better, now!)
- moved real http unit tests to new networking system (so much better, now!)
- fixed up a last couple network things
- I probably fixed some file upload code, as well
- cleared out old network code
- fixed a fake pubsub problem in unit tests
- made a single new db table for consolidating:

- 4chan_pass
- pixiv_account
- boorus
- favourite_custom_filter_actions
- gui_sessions
- imageboard_sites
- imageboards
- import_folders
- subscriptions

- couple small help edits
- fixed view->new booru download page
- started export folders

- ### version 102

- initial linux release
- rewrote running_from_source.html
- altered some service object and db stuff to look after null access keys and temp services a bit better
- key registration works on new network system
- all downloaders use new network system
- A/C timer tweaked a little more
- did some timer event grammar improvements
- improved button behaviour in import files dialog
- backing up a server no longer causes a timeout problem
- prototype export/import tag metadata is done
- rewrote the way animated gif frames are navigated and thrown to screen
- fixed an issue that was causing some dialogs to OK when escape was pressed or the close cross was clicked
- this above issue included the enter system predicate dialog

- ### version 101

- fixed another update problem for clients <v95
- uploading pending content should be less gui-blocking
- fixed numpad navigation of page chooser to work for qwerty rather than dvorak as default
- os x page picker now obeys arrow and numpad keys for navigation
- os x command key should be treated as ctrl now, for better cross-platform compatibility
- a couple more cmd/ctrl confusions cleared up
- os x menubar disappearing after fullscreen problem fixed
- added stateless http connection manager
- simplified how http works in hydrus
- http connections now used more efficiently
- better cookie parsing
- better http application shutdown handling
- some misc http bugs fixed
- new http error handling should limit occasional spam-errors
- moved all hydrus http connections to new manager
- moved many non-hydrus http connections to new manager

- ### version 100

- MVC import_controller system created
- download gauges lag reduced
- download cancel button desync bug fixed
- download error code harmonised
- download async code pushed to threads
- download job key checking and management improved
- download queue feed timer will obey page-hidden pause status
- download success and exception handling harmonised
- download on-close thread-signalling much improved
- download pages now take responsibility for download code factories
- download management panel code harmonised
- download management panels made much more MVC
- download error reporting is much improved
- download fail management is much improved
- download button response is much faster
- download progress display is split into the easier to read file/queue/builder trichotomy
- download display indices are less schizophrenic
- lots of misc improvements to download code and nomenclature
- thumbnail page's refresh and select menu items now only appear when appropriate
- thumbnail page's select menu will only show inbox/archive sub-items when appropriate
- thumbnail page's menu is less buggy generally
- db updates are now parcelised into each version, rather than one big job
- improved db version update notification
- a problem with updates from ~v70 to >v95 is fixed
- fixed a bug in popup message dismissal
- database exception formatting improved
- database exception display spam reduced
- database exception redundant traceback removed
- autocomplete character-search-delay time extended from 150ms to 250ms
- async wx window destroy code improved in certain places
- improved non-wx-thread popup error reporting
- some other bugfix, grammar and nomenclature stuff I can't remember

- ### version 99

- added backup database menu option
- added restore database menu option
- gone back to wx 2.9.5 for now
- fullscreen scrolling should be a bit smoother now
- fixed sessions for 'open selection in new window'
- new regex shortcut for filename in the 'add tags before importing' dialog
- fixed dialogs cancel-closing on an unfocused 'enter'
- finally fixed the animation scanbar vertical sizing on preview screen
- animation scanbar now shows gif frame rendering progress more smoothly
- test.exe now included in windows release
- some frame parents code cleanup
- a tiny bit of gif code cleanup
- deleted some old server code
- cleaned up import pause/cancel code
- improved hydrus's thread-communication objects
- cleaned up downloader code and logic and gui display

- ### version 98

- update to wxpython 3.0
- you can now add tags when importing from a zip
- you can now download arbitrary urls from download->a raw url
- 'select files to import' dialog has massively improved file parsing, with:

- new gauge location
- queueable parse jobs
- paths that stream as they are parsed
- pause/cancel buttons

- new 'check credentials' button in manage services dialog
- new access_key_verification server request
- fixed a very important bug that affected normal tags when adding parents or siblings
- fixed a bug where old pending parents would not be remembered when new same-child parents were later pended
- fixed a similar bug where rescinding parent pends would screw things up
- pending counts will new correctly update on a sibling or parent pend rescind
- parent tags no longer (incorrectly) remove when:

- removing 'just this file' child tags in 'add tags before importing' dialog
- removing child tags in custom filter

- some youtube videos were not downloading due to a redirect issue. it is improved, possibly fixed completely
- collapsible panes, like 'advanced import options', will refit dialogs on collapse/expand
- fixed an bug in the way certain server errors were handled
- fixed a serverside bug for GET account when using account_id as identifier
- fixed 'modify petitioner' button in petition pages
- fixed a bug that was preventing clearing of temp path on client startup
- cleaned up some credentials code
- some general code grammar improvement
- reworded some help
- reworked account identifiers
- os x

- now has an app icon, woop
- os x page closing logic improved
- collections checkbox dropdown seems to work, now
- fixed segfault on popup message close
- thumbs loading from initial session seems to draw properly, sometimes
- fullscreen no longer causes segfault whenever you zoom or scroll

- ### version 97

- initial os x test build
- collect typo fixed
- 'remove all mappings with specific namespace' added to advanced content update dialog

- ### version 96

- 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
- did a complete rewrite of how the client stores services in its database, streamlining everything
- several bugs exposed by the services rewrite fixed
- several moments of weirdness exposed by the services rewrite made more sane
- new version of sqlite (3.8.2)
- new version of python (2.7.6)
- cleaned up a debug print statement that was spamming gauge numbers to the log
- when loaded from a session, hdd import pages will now hide their processing panel
- fixed namespace sorting to manage numbers again
- collapsed the many different download gallery page classes to a single one
- started an important rewrite of how downloaders are going to work in future
- improved testing framework's pubsub testing support
- subs sync daemon now restarts correctly after a dialog-driven pause
- parents now obey siblings!
- siblings and parents are updated on forget pending
- got AMP message between persistent and temporary peers working

- ### version 95

- pages launched from a session will no longer run their query on startup; they will remember their thumbnails
- import pages added to gui sessions, although they do not yet remember their progress
- the way session pages are started is improved
- advanced content update dialog simplified and rearranged
- advanced content update db code written for copy operation
- advanced content update db code written for delete operation (local service only)
- advanced content update db code written for delete deleted operation ( local service only)
- made first version of IMMessage objects
- added network version checking to hydrus's AMP
- better AMP error catching and reporting added
- AMP tests moved further forward
- tightened up AMP network code, fixed last bugs
- cleaned up a huge pile of 'expiry/expires/expiration' semantic mess
- same for some mapping_ids/mappings_ids stuff
- removed predicate knowledge from media display classes, which was just a mess, really
- corrected a weird param order in sessions
- general code cleanup
- several old instances of tuple-list yaml compromise removed
- fixed a session bug in the testing code because of last week's manager management change
- fixed a hydrus session bug for accounts with no expiry
- fixed a very important server-side network version checking bug
- added client-side network version checking

- ### version 94

- reorganised the 'add tags from path' dialogs so the regex buttons made a little more sense
- when deleting a file, the current focus will pre-defocus
- 'confirm close client' dialog will now auto-yes after 15 seconds
- fixed a bug when POST hydrus queries couldn't return any data
- 'failed to update repository' message made simpler
- added tuples to pyyaml's safe_loader (which was more of a pain than I expected)
- manager management improved, with changes reflected across all the code
- session management prototype is done
- query pages can be added to sessions
- default startup session can be set in options
- sessions are managed with new submenu under file
- creating registration keys will show them in a new, more helpful frame
- same for initialising a server
- and for auto server setup
- auto server setup has cleaner error reporting
- new service admin accounts now have different access keys to the server admin account
- fixed up testing framework to test AMP a bit better
- IM session manager written
- server db support for new session manager added

- ### version 93

- can now undo/redo all tag operations except rescind petition
- can now undo/redo file pending, rescind pending and petition
- improved undo/redo description generation
- fixed a bug that was showing extraneous undo/redo actions that did nothing
- review services frame's permissions strings will size a little better
- new 'perform a service-wide update' button on review services frame
- started tag-specific dialog for this new button, and began db code that'll execute its stuff
- a little code reorganisation
- fixed a bug in the export dialog that was throwing errors when trying to overwrite read-only files
- moved a number of old dialog error messages to the new verbose popup system
- when accounts are made stale (as part of client version update), they will no longer lose their privileges
- fixed the log page to deal with (ignore) gauge messages
- fixed a db problem in my testing framework
- AMP IM support moved way forward
- IM manager first draft done

- ### version 92

- encrypted instant messaging framework started
- encrypted instant messaging test added
- encrypted instant messaging trust framework started
- started an AMP framework for encrypted instant messaging
- tag A/C exact match parameter added
- tag A/C exact match parameter test added
- tag A/C logic reorganised and improved
- tag A/C now gives exact matches for queries shorter than the A/C threshold
- tag A/C threshold default set to 2
- fixed an important architectural bug in pubsub
- generally cleaned up pubsub code
- 'popup messages sometimes not updating' problem is fixed
- a bit of initialisation cleanup to make startup behaviour more reliable

- ### version 91

- improved how accounts are identified in the server
- rewrote how serverside session data is managed
- added monthly data reset to session data
- fixed session update on account modification
- fixed a bug in accountidentifier generation from accounts
- fixed a bug in account-multi-session tracking
- server session manager unit test added
- reworked testing to take arguments to only run specific tests
- changed all file downloads to be more memory efficient, either by gui or subscription
- made download testing fail better
- added deviant art unit test
- fixed deviant art thumb parsing error
- fixed deviant art fullsize image parsing error
- undo system reworked in prep for first prototype
- undo/redo keyboard shortcuts (ctrl-z and -y) infrastructure added and db updated
- undo works for fullscreen
- a bunch of fullscreen keypress processing improved
- undo manager testing added
- added upnp option to all services
- added upnp daemon to maintain upnp serverside
- 'copy all tags' and 'copy all tags with counts' added to tagslists
- rejiggered a bit of the app startup, including db password check
- found a better error noise
- in fullscreen, the mouse cursor will no longer auto-hide when over an animation scanbar

- ### version 90

- client db unit tests added:

- 4chan_pass
- autocomplete_tags
- booru and boorus
- downloads
- favourite_custom_filter_actions
- imageboard
- import_folders
- md5_status
- media_results
- namespace_blacklists
- news
- pixiv_account
- improved services
- sessions
- shutdown_timestamps

- fixed modify account
- fixed modify account again!
- made account_info respond a lot faster with large tag counts
- neatened some client db code
- youtube 'file already deleted' error now reported correctly
- youtube general error reporting improved
- fixed multiple-computer-single-account data use reporting
- moved file parsing from nested dialogs to a single popup message gauge
- fixed an export folder path-display issue when an install moves location
- improved how some file downloaders process their files
- added prototype file download status bars to all download management panels
- fixed a bunch of tests that were cleaning up inelegantly

- ### version 89

- fixed blacklist manager for numtags
- fixed a sql typo for numtags
- delete from fullscreen menu fixed
- fixed a unicode error-handling issue
- sped up autocomplete tag fetch for large result sets
- improved the way autocomplete dropdown scrolls
- vastly improved efficiency of how all listboxes draw
- the server will no longer start if something is using the server admin port
- i.e. you can no longer run multiple copies of the same server by accident
- improved client and server port change (service shutdown and restart)
- improved testing framework to handle fake db reads better
- improved testing framework to manage client and server sessions
- several network request unit tests added:

- access_key
- account
- account_info
- account_types GET
- account_types POST
- file_repo file
- file_repo thumbnail
- init
- ip
- news
- petition
- registration_keys
- services GET
- services POST
- session_key
- stats
- update GET
- update POST

- fixed clientside permissions exception
- several db unit tests added:

- import_file
- system_predicates:

- age
- archive
- duration
- everything
- file_service
- hash
- height
- inbox
- local
- mime
- not_local
- num_tags
- num_words
- ratio
- similar_to
- size
- width
- limit

- fixed a bug in system:age?
- fixed a bug in system:duration<0
- fixed a bug in system:duration?0
- improved num_tags logic
- fixed system:num_tags<1
- fixed system:num_tags>1
- fixed a hash filter bug for system:similar_to
- fixed system:similar_to for unknown hashes
- fixed system:size Bytes
- updated linux.html and running_from_source.html in help

- ### version 88

- moved server daemon start to a better place
- cleaned up more server db code
- fixed getnumpetitions
- fixed getpetition
- reworked modifyservices and fixed server request
- reworked modifyservices dialog to work with new system
- server service options now managed from modifyservices dialog; old options dialogs deleted
- auto-repository setup restored and fixed
- harmonised edit_log actions all across the code
- added namespace blacklist manager
- added namespace blacklist dialog
- integrated namespace blacklist into:
- - search by tag
  - search by tag count
  - creating media results (thumbnails)
  - autocomplete tags read
  - autocomplete tags write
- fixed a problem with deleted tags not being applied correctly on initial thumbnail display
- started a server unit testing framework
- added 'running in linux' info to help

- ### version 87

- misc:
- - fixed system:untagged, which was doing numtags>0 by accident
- basics:
- - moved client local service to twisted
  - moved server to twisted
  - cleaned up a whole lot of unrelated server stuff I haven't touched in a while
  - fixed some misc typos
- details:
- - built twisted server framework to plug into hydrus
  - changed hydrus authorisation header
  - changed sessions to manage accounts, reducing server db load
  - reworked session cookie to be neater
  - cleaned up a bunch of server code
  - fixed how certain server errors were being printed to the log
  - reworked response_context to a body/path dichotomy to reduce cpu+memory on file requests
  - collapsed a bunch of GET POST requests to the same path
  - reworked server_service_identifiers to be port-independant
  - improved data use logging to support new session management system
  - moved session management to new system
  - moved error management to new system
  - integrated twisted thread into hydrus controller
  - reworked root and favicon
  - reworked local file and thumbnail requests
  - reworked restricted service requests
  - reworked admin service requests
  - reworked repository service requests
  - removed manage options query; it'll be rolled into manage services admin queries
  - updated serverdb to manage with new system, harmonising internal and external requests to one workflow
  - made server-side data use tracking simpler
  - added Content-Type header to most requests
  - improved how key registration, init, and account GET requests are handled client-side
  - harmonised how account_keys are created server-side
  - moved server management from serverdb to servercontroller, with better pubsub restart
  - moved several useful functions to the new serverconstants.py
  - fixed a max_age sessions issue

- ### version 86

- timeout on connections improved
- rewrote the objects behind the dumper
- the dumper should now select media properly again
- closed pages now timeout after an hour
- upgraded to new version of sqlite
- fixed client port bind detection and error reporting
- you can set the client's local server's port in client options
- local server port changes will happen when dialog changes
- unified the upload and youtube download popup messages into one popup
- fixed changing thumbnail size (stupid typo!)
- added 'database->regenerate all thumbnails' to fix certain thumbnail errors
- add a popup gauge for regen all thumbnails
- fixed yesno dialogs, which were showing a neutral 'Cancel' button rather than a red 'no'
- the upnp dialog's buttons now work, have fun with it!

- ### version 85

- updated to new version of wxpython
- several key_down events moved to char_hook
- rewrote collapsiblepane class to remove weird refit and scroll behaviour
- a problem with adding service via a registration key is fixed
- tag upload pending is granulated into separate queries, to reduce server and client lag
- uploads moved to an asynchronous popup message with a gauge, rather than the modal progressdialog
- reorganised file upload content_updates to be a bit smoother
- fixed a redirection bug that wasn't obeying schema changes such as http->https
- updated e621 url to https schema

- ### version 84

- switch fullscreen button added to fullscreen canvases
- messaging stuff is disabled for now
- gif scanbars now fill up as the frames render
- pngs with transparency are no longer drawn with black background after first viewing
- made a small change to listbooks to correct some gui-weirdness, particularly in local options
- autocomplete dropdown windows will now hide-and-reposition on parent scroll events
- autocomplete hide-and-reposition waits 250ms rather than 100ms, making it a little less flickery
- a graphical bug related to hitting end on a large search is fixed
- upnp framework started
- services->manage local upnp started
- new messagegauge added
- fixed mp4 import
- youtube url->formats added
- youtube format chooser dialog added
- youtube downloader thread added
- youtube gauge popup added
- youtube error handling improved
- youtube num_bytes_done added
- youtube unknown total_num_bytes handled
- youtube cancel button added
- youtube right click dismiss throws up a yes/no dialog to decide whether to cancel the download
- started manage upnp dialog
- closed page undo added
- closed pages will be paused and quiet
- pause import folders option added
- fixed an invalid index drawing bug after removing certain media
- thumbnail waterfall improved
- tags are limited to 1024 characters

- ### version 83

- sort by longest fixed for files with no duration
- reverse sort by rating fixed for files with no rating
- sort by largest, newest fixed for files with unknown size or timestamp
- sort by unknown/absent values sorts more accurately
- search by num_tags and min_num_tags fixed
- remove media thumbnail update bug fixed
- currently viewable indices screwed up after a remove media bug fixed
- remove all media entire black screen bug fixed
- delete media redraw optimised
- several message print unicode/raw byte errors fixed
- scrollbar position calculation improved, so 'black rectangle on scrolled thumbnail canvas when num_cols changed after resize' bug should be fixed
- 'tiny black lines on small slider drag' bug fixed
- moved a bunch of right_up events to right_down, see what you think
- popup message cleanup is better on shutdown
- pubsub typeerrors handled more gracefully
- improved how options init and update works
- client will now remember the restored size, restored position, maximised state, and screen the gui was last left at
- client will remember all the same details for fullscreen, separately
- these sizes _should_ rescue from offscreen if you disconnect/reposition a non-primary display
- shift+home/end now scrolls and selects, rather than only buggily scrolling
- I fixed a content_update bug re petitions
- 'show in new page' pages will no longer show search subbox
- added hentai foundry tests
- fixed hentai foundry title and creator tag parsing in certain cases
- fixed some related html unicode issues
- initial value on tag siblings dialog fixed
- tag siblings and parent dialogs now start sorted by the right column (parent/older sibling)
- setting a default collect will no longer cause a nasty crash!
- setting an orphaned default collect will no longer cause problems
- deselect thumbnails has improved focussed media management
- can now select inbox or archive from right click menu

- ### version 82

- a bug where slow search results would sometimes appear after search predicates were removed has been fixed
- a lot of autocomplete gui- and db-blocking reorganisation
- searches are now entirely asynchronous to gui thread
- searches are split into two granular phases, and are cancellable during processing
- simplified system predicate storage
- consolidated all system predicate filtering to initial db search
- huge improvements to how the thumbnail canvas is sized and extended and drawn to
- numerous fixes and improvements to how thumbnails are drawn to screen
- reworked how collect works
- and sort
- the raw cpu time behind sorting in muuuuuuuch faster
- clarified my listening media class
- added another optimisation to canvas resizing
- big improvement to canvas redrawing and refreshing
- important fix in how client figured out what to draw when clicking in whitespace
- thumbnail fade is much smoother
- thumbnails should now generally draw a little smoother
- selectall and selectnone's thumbnail fade is less cpu intensive
- cleared up a number of collect related selection and index bugs
- fixed a media identifier issue
- all import-related append and drawing is muuuuch faster
- flicker bug on small appends fixed
- fixed a page up/down drawing bug on the main thumbnail canvas view
- fixed an unknown-timestamp thumbnail right click issue
- made my internal media data storage system a lot simpler
- new sortedlist class to make some media stuff easier to manage
- reworked how new media is added to a page of thumbs (usually import-append, but the new system supports collect- and sort-sympathetic insertion):
- -calculating combined tags on the left can be up to ten times faster
- -integrating new files into the sort is much quicker
- -integrating new files into the collect is much quicker
- -improved how new thumbnails are decided to be drawn
- trying to archive or inbox more than one file, you'll get a yes/no dialog to confirm
- started db testing framework
- db tracebacks improved
- slimmed down content_update data-side processing
- a couple small code fixes
- archive and inbox no longer remove from the search if the opposite system predicate is set
- system:rating fixed
- fixed a bug where you could middle-click-download files that had no known source
- couple of bugs with system:ratio fixed
- system:ratio string representation is 16:9, rather than 1.777779
- gui thread is more intelligent in telling non-gui threads that it is busy

- ### version 81

- mp4 added
- mp4 mime search added
- wma added
- wma mime search added
- wmv added
- wmv mime search added
- changed to video and audio icons, rather than one for each mime
- popup messages now dismiss on RIGHT_UP rather than RIGHT_DOWN
- moved many more messagebox errors to the new popup error system
- cleaned up clientgui's superfluous error handling
- rewrote error redirection to new popup system
- more error overhaul
- print statements overhaul
- better db updated statement, through popup system
- traceback show/hide button added to new popup error box
- copy button added to new popup error box
- added a 'x more messages/dismiss all' popup when there are more than ten messages to display
- review services refresh account button will disable until the server replies
- file system predicate dialogs have better initial focus
- streamlined server file import and improved respective data usage calc
- made internal options storage a lot more efficient
- cleaned up a little cache code
- export to zip improved to new file handling system
- upload to repo improved to new file handling system
- some db write priority stuff switched around and renamed
- streamlined a little client db workflow
- neatened client db exception handling
- db updated message is now a popup
- removed some orphaned methods in client db
- client file and thumbnail server requests made a bit faster and neater
- removed db loop from export and dump file fetch
- neatened some client and server file 404 exception paths
- further cleaned up the way file paths are calculated and fetched
- further cleaned db in relation to files, and removed the old mime cache, for both server and client
- removed orphaned db export infrastructure
- add_thumbnails in client made simpler
- improved http response parsing
- refactored a bunch of http response processing
- new exception display system added for caught exceptions
- fixed a shutdown hang on certain delete orphans failure

- ### version 80

- manage tags and ratings dialogs have their initial focus corrected
- custom filter now obeys tag parents for tag actions
- fixed an annoying as hell multiple-page shared-thumbnail visual-selection-status bug
- added e621 test
- fixed e621 tag parsing, including new species namespace
- might have fixed a missing thumbnail error
- fixed system:hash
- fixed some repo file downloading stuff
- fixed some general db fetching file info stuff
- made x files imported from y message a little slimmer
- fixed minsize for the main gui frame
- added better initialsize for the fullscreen frame
- putting a thread url into the thread_id part of the dumper will auto-convert to the thread_id
- added dumper's multipart form data generation test
- added generic multipart form data generation test
- fixed dumper unicode issue
- error reporting in dumper is a little better
- streamlined how mime is calced
- massively improved how mp3, flac and ogg are parsed and validated
- massively improved the internal import files workflow to use less memory and hdd reads and writes, particularly for video
- similarly improved server-side import workflow
- the way temp dir works is improved
- sped up server file/thumbnail fetch
- reworked how thumbnails are fetched in a couple places
- started rework of how options is stored
- wrote mp4 properties parser, but no mp4 just yet

- ### version 79

- 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
- popup messages now wrap
- slightly better error popup
- many more errors reported through error popup
- old logging system switched over to new messaging system
- popup message manager will only show ten messages at once, now
- selectfromlistofstrings now supports enter key to select
- completely reworked how dialog cancel works; absolutely all dialogs should now close with escape key
- reworked how a bunch of dialogs do ok
- a huge amount of dialog refactoring
- made ok button initial focus of all dialogs
- couple of bugs in service options dialog fixed
- rejiggered some button names and focus behaviour a bit more
- some classname refactoring
- muchly improved string->unicode handling
- improved timestamp generation
- fixed a clientserviceidentifier->text bug
- reworked how namespace cache in tagsmanager object is calculated
- improved instantiation of noneablespinctrls
- fixed a bug in the thumbnails download daemon
- changed the way daemons wait for the db, much to the better
- moved daemons out of the db object
- rejiggered writedaemon synchrony so exceptions work
- fiddled around with some help links
- default, non-maximised size of client is a little more comfortable
- custom filter now has a popup that'll let you change the custom actions mid-filter
- server now uses new synchronous logging system
- fixed an options save bug for server
- updated server diagram in help
- added test for dialog selectfromlistofstrings
- added test for dialogyesno
- made a framework for testing that requires network stuff
- made a newgrounds test
- fixed newgrounds swf parsing
- made a framework for testing that requires file reads and writes
- fixed a graceful-exception bug in mime parsing
- added test for synchronous import_folders
- added test for delete import_folders
- wrote a test for importfolders daemon
- import folders no longer delete or reattempt failed imports; they'll just ignore them
- import folders are deleted on update, since old objects are obselete
- import folders won't try to do zips any more; they'll just ignore them
- rejiggered how import folders does its path parsing to remove mime calc cpu usage

- ### version 78

- expanded parents testing with a namespace example
- made getgstvcp in tags manager only return numbers for vcp
- refactored ManageDialogs to their own file
- refactored Exceptions to their own file
- improved my testing framework so it can do wx gui elements
- added test for dialogchoosenewservicemethod, fixed a typo
- added test for dialogfinishfiltering
- added test for dialogfinishratingfiltering
- those two finish filter dialogs are a little simpler, now
- set up a system so dialogs are a bit simpler, in terms of button event processing
- added test for dialogfirststart
- added 'add parent to tag' on tag right click menu
- added 'add sibling to tag' on tag right click menu
- made manage parents/siblings dialog focus selection more intelligent
- 'audio - any' mime search fixed
- reworked audio embed container significantly
- added embed button
- all noisy mimes are now protected by embed button
- you can now rescind pending file uploads or petitions from thumbnail right click menu
- fixed a redundant bit of code in process content updates
- in modify account dialog, set account expiry to 'does not expire' fixed
- logging now happens a little more synchronously for client
- popup messages prototype done
- popup message for normal text
- popup message for some errors
- fixed a small redundancy bug in data cache
- fixed a localisation bug when converting numbers (1234) to formatted version (1,234, 1.234, 1 234)
- improved the code behind 'open selection in new page' in two ways

- ### version 77

- tag parents manager unit tests done
- completely rewrote parents pair generation
- rewrote parents pair retrieval to be much faster
- parents manager is much more resistant to loops
- in two ways!
- loop detection fixed in manage parents dialog, as well
- fixed how deleted parents are applied to combined service identifier
- fixed how deleted parents are applied to specific service identifier
- tag manager unit tests done, and everything was working ok!
- shuffled objects around a bit, unified some tag code
- tag manager merge unit tests done, and everything was working ok!
- tag manager merge code simplified and result rewritten to a new, simpler class
- small bug in how preview canvas fetches tags fixed
- finished off import folders daemon
- added import folders gui
- added flac support
- added ogg support
- added a secondary layer of mime detection for greater accuracy
- added a tertiary layer of mime detection for greater mp3 accuracy!
- fixed an offset bug in mime detection
- simplified and unified client/server file info parsing
- import error handling improved
- neatened how special thumbs are stored, refreshed, and retrieved
- neatened how the bmp->png conversion happens
- improved hash->mime caching for both client and server, to speed up http retrieval time for the new filetypes
- better mime fetch in dumper, too
- improved debugging messages for a bunch of my custom objects

- ### version 76

- made unit testing framework
- tag siblings object now tested properly
- hydrusdownloading functions now tested properly
- added simple mp3 support to client, with external launch or embed
- added search by mp3 mime
- added mp3 to server
- higher precedence deleted tag siblings now overrule lower existing pairs
- tag sibling closed loop pairs ( a, a ) are skipped
- neatened predicate sibling matching in two ways
- improved tag autocomplete matching logic
- skip logic improved for like ratings filter
- skip logic improved and button added for numerical ratings filter
- did a little work on reducing memory usage
- reordered data cache's memory purge, which will make huge images load better
- fixed a zoom bug with pdf buttons
- added some select all, select none and refresh to thumbnail right click menus
- reorganised menus a bit anyway
- fullscreen tags on the left are now sibling-collapsed

- ### version 75

- fullscreenpopup window added
- fullscreenpopup window can be dragged about
- fullscreenpopupfilterinbox
- fullscreenpopupfilterlike
- fullscreenpopupfilternumerical
- accuracy slider moved to popup
- compare same image until done added to popup
- keep on left/random/right added to popup
- 'don't ratings filter this' added to popup
- that annoying as hell thumbnail selection drawing state bug is fixed
- display of flash with only one frame fixed
- downloaded tags now work again, sorry for the disruption!
- deleted tags will now always show in manage tags dialog
- fixed the various problems that were stopping DELETED->PENDING->CURRENT working for tags
- fixed the children can only have one parent bug
- fixed a deleted tag parents bug
- a little counting logic improved in the special deleted_pending case
- fixed a typo re uploading file to a repo
- main guis statusbar now has a little 'db locked' indicator

- ### version 74

- flash scanbar added
- made new mediacontainer class for media canvas
- extracted scanbar to separate class
- made animation frame tracking and control more sensible overall
- previous_frame/next_frame shortcut now works for flash as well
- fixed age predicate for > hours
- fixed an important 'all known tags' A/C count cache bug when multiple services have the same tags for a file
- if you have resolve_petitions permission for a tag service, tag siblings and parents petitions need no reason
- slight change in how un-namespaced totals are calculated in A/C read
- collection now obeys siblings
- thumbnail upper text now obeys siblings
- fullscreen text now obeys siblings
- bit of siblings code cleanup
- a little changeup to how showselectioninnewpage collects its media
- /asp/, /gd/, /lgbt/, /vr/ and /wsg/ added to default dumper support
- trying out making the server non-daemon, to see how that manages

- ### version 73

- every file operation from fullscreen was broke due to a single-character typo that got propagated
- fixed local ratings, which were broken five different ways
- ditched the deleted_pending concept, which was actually making things more complicated
- possible fix to review services opening on bottom level
- dumper no longer says it is still dumping on page close if it is done dumping
- you can now scroll the dumper's upper comment box
- moved site links over to github
- fixed a typo re downloading a file that is already in the db and adding tags at the same time
- local tags delete fixed
- tag parents now apply globally, like siblings
- thumbnail resizer daemon is less verbose and more helpful on IOErrors
- fixed namespace colours in manage tags dialog
- open selection in a new page now works for single-file selections
- upload tags progress bar misalign fixed
- namespaced counts no longer total up in A/C writes
- manage siblings dialog now catches collisions when you put in the old, not the pair, and asks you what you want to do
- age predicate now supports hours
- while search is not synchronised, A/C will now query db when it might have queried the current media
- think I fixed a sometimes-not-initially-showing-first-frame-of-gifs problem
- downloaders now run parsed tags through siblings and parents managers
- maaaybe fixed a cache counts error
- wrote a little more sibling and parent help, and updated schema

- ### version 72

- remote tag siblings!
- remote tag parents!
- simplified update nomenclature
- streamlined client-to-server update objects and processing
- streamlined server-to-client update objects and processing
- did a bunch of work on content_updates
- did some work on service_updates, too
- improved client-side petition handling
- a bunch of changes to how uploadpending works
- the way pending downloads are stored is improved
- mappings tables are collapsed server-side
- file tables are collapsed server-side
- moved tag siblings and parents to content_updates
- moved file upload/download to content_updates
- reworked tag content_updates to be more streamlined
- addfile/tagrepositoryupdate is made entirely content_updates, now
- simplification in the way deleted content is stored
- repo update processing string is muchly improved
- repo update processing is smoother!
- a slight change to default behind-the-scenes searches
- improved how the server creates updates on service init
- improvements to service_identifiers_to_statuses_to_tags sub-init and related parts of tags_manager
- some misc nomenclature improvements
- fixed a denypetition bug for file repositories
- fixed optimised petition handling in server
- fixed posting tags in dumper
- fixed a problem with getunknownaccount
- server now analyses on vacuum, like client
- fixed a lolbug in thumbnail resizer daemon that was continually resizing thumbs
- fixed a bug in cache counts, which should fix the 'pending menu disappeared' problem
- corrected num_archive count in file repos
- downloading files is simpler and faster; download menu is simpler
- fixed server initialisation
- updated to new sqlite version

- ### version 71

- collapsed the four mappings tables into two tables
- merged the two active_mappings tables into the mappings table
- made a great number of changes to how mappings and active_mappings are stored and processed throughout
- 'active' and 'null' nomenclature is now 'combined'; null service_ids are now just ints
- improved deletepending so it isn't so tough on the a/c cache
- tags regex dialog entries 'for all files' and 'just for this file' was all broke
- A/C read now bumps the exact match of the entry to the top of the list, if its count is non-zero
- fixed A/C for weird-character queries, like '['
- the dumper now makes success/error noises as appropriate
- you can turn these noises off in the new sound tab in file->options
- screwed around with garbage collection while checking mimetypes during pre-import
- adding a tag parent will spam-add the actual parent tags to every child instance for the appropriate service
- updated db diagrams
- revised my sibling chain collapsing algorithm
- locked db on init dialog message is improved a little
- system:limit added to combined file service searches
- num pending menu counts now split into with (pending/petitioned)
- corrected a server db index oversight
- newgrounds title tag fixed

- ### version 70

- tag parents db stuff
- tag parents manager
- tag parents predicate and matches indented expansion

- > and drawing it!

- tag parents top result reordering
- tag parents top result insertion
- tag parents actually doing what they do
- polished off tag parent help
- made a full-search table to speed up tag A/C requests
- added tag full-text search
- reworked how tag and file services add and reset, to reduce A/C time
- reworked recalc active mappings to be more beautiful, if not faster
- fade animation timer improved in several ways
- thumbnail fetch made much smoother
- newgrounds artist downloading for games and movies added
- newgrounds subs added
- download panel input now highlights on init
- 4chan filename tag added
- the setfocus on filter close is neater
- age phrase is now 'imported [time] ago'
- age is now shown in fullscreen
- can now copy file from fullscreen, from menu or shortcut
- 4chan pass authentication improved
- fixed a couple tag service precedence sync bugs

- ### version 69

- first dialog for tag siblings
- tag siblings db table
- tag siblings manager in controller
- tag siblings display in tagsboxcpp
- tag siblings display in tagsboxflat
- tag siblings display in tagsboxmanage
- tag siblings display in tagsboxactiveonly, via A/C dropdowns, for both read and write
- top result sibling switcheroo in A/C write
- A/C db fetch now does siblings too
- db tag search does siblings
- siblings help, with some nice mini-charts
- I fixed collections, which were typo-broke; I'll make sure it doesn't happen again
- more granular subs error handling, meaning individual file failures won't crash an entire sub
- individual subs can now be paused
- e621 fixed for real this time
- A/C improvement that slows tag updates a little but should stop A/C lag after an update
- as a result, trying out dropping the CPU-intensive fatten_ac_cache maintenance call
- A/C read will now update system preds every time you click on it, so inbox/archive counts will stay accurate
- A/C "all known files + tags" will no longer show the mega-laggy total file count
- a list -> tuple convenience fix in sanelistctrl
- if you don't have any pixiv credentials set up, you will now no longer get the option to start downloading pixiv stuff
- fixed a tiny typo in the thumbnail resizer that made it wait far more politely than was intended
- slight change to ratio system pred that fixes some lockups, sometimes, I think
- fullscreen flash and video will get a pixel of whitespace on the right

- ### version 68

- fullscreen view now takes addmediaresult
- export to zip!
- import from zip, with tag regex stuff too!
- export to encrypted zip!
- import from encrypted zip!
- import encryption help in advanced.html
- import process code processes mimes less jankily
- delete after successful import checkbox added
- import regex tags dialog now has # namespace
- import regex tags dialog collects its info a bit more intelligently
- new confirm exit client option
- subs will save their progress every 20 files downloaded, so pause/restart is less punishing
- simplified thumbnail cache retrieval
- some thumbnail waterfall and animation tuning, let me know what you think
- e621 fixed
- danbooru fixed
- reworked booru gallery page num calc, which was completely screwed
- DA fixed for most cases
- booru thumb parsing made a _little_ more permissive
- server now uses the same new file storage system as the client
- download cancel buttons have a little better feel
- new thumbnail prefetch thread makes thumbs load a load faster
- fixed a little rubbish naming semantics in ClientGUI
- reorganised and streamlined much of the encryption code
- updated a bunch of help screenshots

- ### version 67

- subscription db access improved
- subscription 'delete subs seemingly at random' bug fixed
- some nice subs help
- subs and repos, if changed during a pause, will restart with new changes
- subs and repos will automatically pause while their respective dialogs are open
- new namespace | regex listctrl in regex dialog, instead of old sctvcp rubbish
- new /aa/aa...0 file storage system for client
- fixed deleteorphans mime issue
- export and copy files now export writeable files, not read-only
- rejiggered daemon db access, improving maintenance reliablity
- dumper and 'show in new page' pages now process content updates correctly

- ### version 66

- subscriptions done! works for all normal download types
- pause repo sync, pause subs sync
- all download sites moved to the new system
- lots of small changes to how download code works
- pixiv tags is renamed to pixiv tag, since it only does one!
- fixed DA
- fixed DA again!
- fixed DA tag parsing for all the diff types of username re http://help.deviantart.com/106/
- fixed pixiv, somewhat
- fixed giphy
- fixed boorus for gallery_advance_num > 1
- boorus reset in db to default
- fixed copy files
- fixed getmime
- a silly parent assignment for A/C meant they were not closing with pages
- made the cpu burn for the thumbnail resizer a bit more polite on hdd
- repo sync daemon and subs sync daemon combined
- some timing adjustments in sync daemon
- subscription_type constant -> site_download_type
- fixed temp folder being cleared on startup (a read-only issue)
- advancedoptions classes now support setinfo

- ### version 65

- added subscriptions dialog
- added prototype subscription daemon, but not yet activated it
- added downloader classes
- began reorganisation of nearly all download code
- moved parsing around
- moved advancedhttpconnection around
- moved serviceupdate around
- moved some content_update stuff around
- moved some constants around
- files in client_files now have extensions
- files in client_files are now read only
- pdf launch is simplified as a result of this new ext stuff
- fixed find similar images; it was just a typo
- also fixed initial predicates string display
- rejiggered the thumbnail resizer again; due to my stupidity, it was causing lag
- thumbnail resizer burns a little more cpu when there are >10,000 or >100,000 thumbnails to render
- it also now does thumbs in random order, for a couple of good reasons
- upgraded sqlite, hopefully some queries will run faster?
- upgraded to python 2.7.4. please report any weird errors

- ### version 64

- got rid of system:not_uploaded_to - now system:file service, which is a lot more powerful
- some display changes to system predicates to make them a bit more human-readable
- added export dialog
- made a couple small changes to help about the export dialog
- collect by rating
- sort by rating now works for collections, using an estimate (only accurate when also collecting by that rating)
- built a custom radiobox class and added it to ratings dialog so it has radio buttons again
- new ratings filter for local_ratings_like services. works just like normal inbox filter
- added a little info in help about this new filter
- new session manager for pixiv and hentai foundry, reducing number of session inits the client has to do
- new init welcoming window for first boot
- new politer error message for when db is locked on boot
- shift+arrow keys now pan in fullscreen mode. you can change them in options as normal, if you like
- resize thumbnails daemon is now part of maintenance thread stuff. hopefully less blocking now
- 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
- fixed and changed the way hitting the change tag service button works
- I fixed previews and fullscreen cache estimate in local options too!
- fixed giphy so it works with their new api
- rejiggered the update notification order to be a bit more accurate
- updated auto-setup code and help to use new no-ip domain rather than old raw ip
- v64 will also update the old ip to the new no-ip domain automatically
- bit of variable renaming
- cleaned up a couple menu memory leaks
- updated a little of future.html

- ### version 63

- added include/exclude namespace predicate
- added intelligent delay to A/C to smooth out db requests
- rejiggered the A/C code so that spamming/pasting several characters and then deleting some will re-search for matches as appropriate
- cut size down to just B, KB, MB, GB
- maybe I fixed system:ratio in certain cases!
- some general predicates display syntax changes
- (archive/inbox) and (local/not local) mutual exclusivity with new system
- system:num_words
- right click -> open selection in new page
- upgraded from PIL to Pillow, to zero noticeable effect lol
- had another look at dodgy animated gif transparency; couldn't figure it out
- CMYK jpegs images now supported! interlaced pngs simply not supported with PIL/Pillow yet
- numpad delete added as a valid shortcut key
- removed an old buggy deleteorphans line
- new thumbnail resize daemon to fill out the thumbnails directory in the background
- collections with only one file will now be converted to singletons
- screwed around with locale settings. not sure if this will break things!
- manage tags and ratings now in fullscreen rmb menu
- on downloads, ( url -> hash ) pairs are stored in db, even if the file was already deleted or already in db
- a few additions to help
- reworked the spinctrls system preds to not have 100 as default max
- changed a bunch more spinctrls, including memory sizes, in local options
- and a statictext that wasn't showing number of thumbs for cache size
- bugfix in ratings filter

- ### version 62

- remade a/c dropdown to a better, less buggy class
- reworked a little of the a/c dropdown focus logic
- reworked a little of the a/c dropdown show/hide logic
- a 'sometimes hangs on "gui" on startup after crash' bug is fixed
- can copy from listboxes with new right click menu
- dumper page will protest if you try to close it while it is still dumping
- import page won't protest if you try to close it while paused
- num_words will show on pdf right click
- fixed the network version mismatch exception, exactly one week late lol
- couple of tiny menu memory leaks removed
- couple of misc gui tidies
- custom filter favourites save and delete buttons will grey out as appropriate
- bit of general code cleanup
- we nested classes now
- moved contentupdate class from cc to hc, in prep for repo update rewrite and contentupdate gen

- ### version 61

- session db tables
- session manager objects
- session net code done
- session failure recovery
- registration key table
- registration key requests
- some registration help added
- harmonisation of many http request names
- extracted uploadpending code from db transaction, making it a lot more polite and architecturally correct
- pixiv now parses the ascii creator name as well as the japanese counterpart. No option to choose between them yet!
- improved processcontentupdate to support more actions, making db a little more serial
- home and end now scroll to focussed media
- some http timeout tweaks, to stop the 'can't connect to server' problems on complicated queries
- a typo in modify account types was fixed
- manage tags dialog shouldn't fritz out quite so much when a service doesn't have post_data permisisons

- ### version 60

- pixiv account management dialog
- pixiv gallery parse
- pixiv page tag parse, including creator and title
- pixiv user download
- pixiv tag download
- collapsed the page chooser a little to fit pixiv in comfortably
- pdf support!
- pdf launching via preview/fullscreen button
- pdf header parsing with num_words rough estimate
- system:mime=application/pdf
- system:mime=application
- custom filter favourites done! with default, previous, save, save as and delete
- some small changes to temp folder logic
- vastly improved scroll-thumbnail-prefetch logic. important bits all rewritten and made sane. data and gui rows line up better, with fewer bugs
- vastly improved thumbnail fade. now attempts to render at 60fps, and calculates alpha much more efficiently
- thumbnails won't fade if they are off-screen; they'll just draw in one frame
- fixed thumbnail last row drawing problem (again!)
- due to daemon-db-spam, db maintenance check was only firing on pc wake from sleep, now it fires properly every twenty idle mins
- maintenance timer won't fire directly after waking from a sleep
- deleteorphans copes with alien files a bit more gracefully
- A/C appearing on top is mostly fixed
- some general A/C weirdness is fixed/made better
- reworked some of the thumbnail selection and scrolling code to line up better
- 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
- some general focus code was looked at
- ratings filter now supports the fullscreen_switch shortcut
- just a couple changes to help to include the new 'f' fullscreen_switch shortcut
- 10s timeout on http queries
- http redirect code is improved
- http cookie handling code is improved
- made hf session establishment a bit cleverer

- ### version 59

- new vastly improved 'collect by' dropdown
- fullscreen 'f' shortcut
- fullscreen default option
- added tumblr prototype parser, with tags
- server init and repository init typos are fixed
- a misaligned sizer was fixed
- a bunch of spinctrls no longer init at <= 100
- the problem with the last thumbnail rows sometimes not drawing properly should be fixed
- A/C lag calculates a little more intelligently
- manage ratings for collections now works

- ### version 58

- new custom staticbox sizer/panel put in about fifty places
- big layout changes in management panels
- I made a new, better set of sizer flags for nested sizers
- testing out several new borders
- several other small layout changes, lining things up
- a few colour changes with the new classes
- advanced options class is better, more streamlined
- advanced options class is less flickery, I think
- A/C spazzes out less when dragged about
- A/C queries db less annoyingly, especially when you type fast
- the thumbnail display draws its whitespace a little better, filling in the right-hand and bottom-end gaps
- 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
- shift + f7 now sends things back to inbox, like a reverse archive.
- this works from thumbnail menu
- and in fullscreen
- new menu item 'remove these' for thumbnails, anywhere, including dumper!
- 'tags just for this file' now works a looooot better! it unions all selected tags, and detects deselections better
- giphy downloader added
- giphy tags added, thanks to @fluffy_cub
- copying file now _also_ copies paths to clipboard; depending on where you paste, you'll get the files or the text appropriately
- new shortcut (default ctrl+m) for 'focus media'
- focus search now works for manage tags and tags regex dialogs
- think I worked out the last of the up/down arrow cursor shortcut problems
- a ton more code cleaning
- hentai foundry artist not found 404 error detected
- in regex dialog, tags are cleaned before display on screen
- 4chan ban is now recognised, and thread dumps are hence suspended
- when ordering tags by incidence, disputes are now resolved by lexicographic
- fullscreen init is a little faster for the first image
- select imageboard dialog now toggles tree with double click
- select imageboard dialog is also taller

- ### version 57

- added quick vs accurate slider for numerical ratings filter
- new slider will remember where you left it last
- ratings filter internal comparison logic is more sane
- 'already rated' will now show the specific rating beside it
- ratings filter (hopefully!) chooses better comparisons, in about four different and new ways
- you can now ratings filter just one file
- ratings filter code is neatened a whole lot, especially on my horrible variable names
- I may have fixed an equality ratings filter bug
- internal rating data -> pretty text for display is more flexible and accurate
- going back several steps on ratings filter will no longer forget to re-rate already rated files
- delete from dumper no longer screws with the indices
- dumper is more stable, less likely to bail on the whole dump if something odd happens
- dumper should recognise duplicate file errors and recover the fail
- if the user has idled for the last twenty minutes, the db checks to see whether it can optimise itself
- fixed flickering on fullscreen drag
- fixed flickering onn fullscreen image init, meaning smoother mousewheel/whatever scrolling
- fixed a graphical glitch in manage boorus dialog, and a bunch of others (removed all staticboxsizers)
- fixed a similar glitch in manage ratings dialog - it now has dropdowns; I'll probably make it radio buttons again soon
- fullscreen page navigation (previous, next, first, last) shortcuts are now customisable
- custom filter now supports these new page nav shortcuts
- can now do home/end and page up/down in shortcuts
- shortcuts listctrls now sort by action by default
- I improved the my custom listctrl's code generally
- little less ugly code, here and there
- fixed a whole ton of regular little bugs

- ### version 56

- new existing tag sort dropdown
- an option to set default existing tag sort
- dumper error logic improved
- dumper now does random sort properly!
- double buffering hilariousness
- some reordering of the local options dialog
- made a 'shortcut' entry object
- made a parent frame object
- collection thumbnails will redraw if the sort changes
- add media and add thumbnail data and graphics logic is improved
- 4chan pass now authenticates for an entire year
- bit more in help about the autocomplete tag entry
- tag petition processing speed is a loooot faster

- ### version 55

- custom filter prototype ready!
- added some info on custom filter to help (in advanced.html)
- you can now set a default tag service in options
- tag rexeg dialog's listctrl refreshes without scrolling up to the top every time
- tag for this file in tag regex dialog applies to all selected, not just the first
- scrolling in autocomplete entry will scroll services in manage tags and tags regex dialog
- ctrl+scrolling in autocomplete entry will scroll through results
- complete rewrite of image prefetch calculation
- couple of content-update display bugs in ratings filter fixed
- in manage ratings dialog, sliders will preset to best guess at current score
- dumper should be fixed
- resized active predicates box (much smaller)
- a deprecated call updated
- added some forum extensions

- ### version 54

- several new flash key and mouse event bugs fixed - now: mouse in = to flash | mouse out = to frame
- the problem with scrollable management windows not drawing things on scroll is fixed; staticboxsizers now replaced with "- title -"
- ratings filter now accepts several shortcut keys, directing to whichever window the mouse is over
- the ratings filter windows will redraw themselves appropriately on content and service updates, e.g. changing tags with F3
- ratings filter will choose the files to compare to more intelligently, both from the db and the currently-rated pool
- the way services are identified behind the scenes is entirely overhauled and improved
- the review service dialog is better as a result
- all dialogs will now cancel-exit on pressing escape
- started fade in and out for thumbnails
- up cursor arrow in filter now skips
- the tags regex dialog is refitted so it will refit on small screens better
- dumper now dumps in its own thread (no longer locks up the gui while uploading)
- the calculation of num_frames for flvs was off by a thousand, lol
- synchro/wait shortcut typo fixed
- inbox and other icons moved to background in fullscreen
- fullscreen makes less db queries r.e. ratings
- a couple managementpanel resize issues corrected
- a couple drawing/flickering issues corrected
- some updates to help
- I made a forum to my site, and added links in the client and help

- ### version 53

- several terrible ratings filter bugs fixed
- ratings filter can now rate files internally
- ratings filter frame now has a statusbar
- system:rating:service=uncertain added
- upgraded to wx2.9, which included a ton of bug fixes
- sort by namespace wasn't working due to an odd typo
- collect by logic changed a little so that 'none' values are collected
- the shutdown lag from v52 is corrected

- ### version 52

- ratings filter prototype is done
- bit of help docs
- more intelligent cpu burn on shutdown
- dumper can manage flood time error, and recover from it
- whole load of work done on mappings optimisation, meaning mappings updates, uploading mappings and approving petitions work about 100x faster!
- forgetting pending uploads now throws up an ok/cancel dialog
- had another look at overwriting deleted tags

- ### version 51

- dumper deals with failed uploads better, although there is more work to do.
- flv support for client and file repo!
- reworked tag services' permissions calculations on thumbnail menu
- new fatten A/C cache on shutdown
- system:untagged works again for null tag repo ('all known tags')
- advanced import options now default no limit for size and resolution
- ratings service now have a little info on the review services frame
- new shortcut keys (ctrl-b and -n) for animated gif previous/next frame in fullscreen
- added thoughts on plurals to tag schema help page
- hentai foundry downloads now interleave pictures and scraps
- removed db locks on file/thumbnail reads
- you can open the page picker frame with the mouse by going view->pick a new page
- the copy->whatever thumbnail menu is more concise
- system:hash now works for null file repos ('all known files')
- there is now a title: regex on the tag regex dialog
- servers now store updates in a folder, not inside their dbs.
- couple misc changes to help pages

- ### version 50

- 4chan pass added
- captcha timings in dump are better
- dumper's file ordering is less insane
- some general updates to regex tag dialog
- new box on regex tag dialog for tags for single files
- regex tag dialog now supports arrow key up and down to change repo
- entirely new and vastly improved listctrl class
- collect by is now a thousand times more complicated, but also much more powerful
- the top-left media-flicker display bug in fullscreen is fixed
- some logging improvements
- some tag cleaning improvements
- thumbnails have less cluttered tag headers
- some small changes to help
- fullscreen precache doesn't do gifs any more, which should make things smoother
- got rid of the awful view pending uploads dialog. I'll improve it later
- started remote ratings, but its not done yet

- ### version 49

- local rating like service
- local rating numerical service
- ratings dialog
- ratings drawn on preview and fullscreen canvas
- search by rating
- system:rating in options
- sort by rating
- a ratings help page added
- custom shortcuts
- overhauled shortcuts code
- a new, comprehensive regex menu in the regex tag dialog
- extensive new hentai foundry search and sort options
- a new option regarding the search style of tag A/C entries
- thu dumper can now dump with tags
- regex tag dialog selects tag A/C on page change
- regex tag dialog's button now now shows in import dialog even if there are no remote tag dialogs with POST privilege
- A/C is slightly faster in all cases
- preview canvas now updates on a content update
- numtags = 0 and numtags > 0 now work for pending tags
- shift- or Ctrl-Click no longer deselects
- listbook renaming and resizing bug fixed
- collections thumbnail is fixed
- sometimes, an empty tag, '', could be entered into pending and screw a lot up
- sometimes, a null tag could be entered into pending and screw a lot up
- advanced tag options has better checkbox defaults
- some help screenshots updated
- the db's processing is slightly rebalanced
- the db's startup is slightly rebalanced
- a misc gui bug was fixed
- a misc gui typo was fixed

- ### version 48

- New copy path and copy url menu entries on thumbnail right-click menu
- Gif scrollbar
- Hentai Foundry parsing errors fixed
- Hentai Foundry 404 errors fixed
- All the html parsers are rewritten using BeautifulSoap
- Flash now zooms full, but not fit
- Filter is now F12
- Help is updated in a number of ways
- Up/Down on empty input to change repository in manage tags dialog is fixed
- The servers now support OPTIONS requests
- Several status typos fixed
- I started local ratings services

- ### version 47

- Hentai Foundry interface is done, for both artist and tag searches
- A/C gui reorganisation
- A/C file and repo buttons added
- A/C cache count alterations to match those buttons
- A/C tag processing is cleaned up
- Search and thumbnail-action improved to support null file service or non-null tag service
- system:numtags=0 and system:numtags>0 optimised to be much faster
- Ctrl+I now switches searching immediately/waiting
- z now switches between zoom full and zoom fit in fullscreen view
- advanced import options now has exclude already deleted files checkbox
- Thumbnails choose the way they access the db more intelligently
- ManagementPanel colour is changed, hmmm
- Some DB cleanup
- Some general code cleanup
- Some download logic improved, including timer
- Some download status improved
- Download 404 notices better
- DeviantArt now initially shows 'artist username' in its searchbox
- Some code nomenclature improved
- I've made a changelog.html, compling all changes together.

- ### version 46

- DA parsing CLEAR
- rule34@paheal parsing CLEAR
- tbib (another booru) parsing CLEAR
- Canvas rearranging
- Preview now shows tags
- The autocomplete tag write dialog will promote existing exact matches to the top of the list, even if it is not the most popular.
- Autocomplete lists now scroll with the mouse.
- A/C scrolling is a little more accurate.
- Pressing up or down on an empty A/C entry will change tag repository.
- A sledgehammer has been applied to the python garbage collector.
- The code that navigates boorus is better.
- The import queuing/pausing/cancelling system is better.
- Booru tag-processing is better.
- The import-queue gui is slightly better sized on small screens.
- The new local tags service now shows up in advanced tag options.
- Even more flicker is removed from the main thumbnail view, this time when clicking on whitespace. (it was a stupid bug)
- Serverside db-backup now includes the WAL file.
- Manually adding an admin service is fixed.

- ### version 45

- Local tags: DONE
- Thread watcher: DONE
- Fullscreen now shows tags
- Preview shows some more file + tag info
- Listbooks load their panels on demand.
- Local options dialog is now a listbook.
- Some incorrect ‘sample image’ downloads from danbooru are fixed. Danbooru’s inner workings remain a 404-cluttered mess though.
- Some remaining utf-8 html parse errors (where a limited content-type header is given) are cleared up.
- Another connection problem (a certain case of the server closing the connection) is now properly recovered from.
- Some flicker in the thumbnail view is reduced, but my slow laptop still shows some, so I need to revisit this.
- Autocomplete tag boxes now have little tooltips better describing their search domains.

- ### version 44

- All database triggers are removed and replaced with more efficient inline code.
- Cached number of files, namespaces and tags for a tag repo are kept updated, so review services should rarely take very long to load.
- Cached number of A/C counts (current and pending) are kept updated, so A/C results should rarely take very long to load.
- The way A/C cache searches are done is improved.
- The way A/C cache entries are calculated is vastly improved.
- The way several db SELECT DISTINCT * and SELECT COUNT( DISTINCT * ) queries are performed is improved.
- The custom httpconnection object is improved to better deal with server-side connection closes. (Cannot connect to server problem)
- The custom httpconnection object does http redirections more intelligently.
- The custom httpconnection object now parses non-ascii content-type (e.g. utf-8) properly, according to server-side header. The tag “pokémon” will now parse correctly.
- e621 and rule34@booru.org are fixed. (just a couple parsing-variable changes)
- 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.
- The mouse cursor will remain visible in the fullscreen browser while the right click menu is open.
- I corrected some which->that grammar in a couple dialogs.
- Auto-repo-setup (from the help menu) was broken in a very stupid way, but I fixed it. I apologise for not noticing.
- Thumbnails now show creator and title up top. They are a bit crushed, so I may rearrange them.

- ### version 43

- Updated import + booru code
- New booru buttons
- Cut tag parse bug fixed
- Download preview instead of real file bug fixed (I think)
- Fixed the ‘thumbnails not appearing on import’ bug
- Import flickers less
- Media Classes rewrite is done, although I’m not totally happy. Have to think about it.
- A problem with pending tags applying over existing tags no flushing correctly is fixed.
- A/C cache is better, but still a little slow on slow computers.
- system:duration=0 is fixed.

- ### version 42

- Autocomplete tag cache DONE. Please tell me if you encounter excessive slowdown or incorrect counts.
- Autocomplete tag logic improved in about five ways. Tags should appear more intuitively and with more accurate counts.
- Copy and paste buttons in manage tag dialog to facilitate spamming many tags from one file to another.
- Imageboard dump is fixed!
- URL download got fixed last week and I forgot to say!
- A peculiar pseudo-foreign-key bug with the active_pending_mappings table is sorted. (leading to more accurate queries and counts)
- Since display of large queries is so much faster, the ‘woah! 12,000 query results’ warning is gone.
- Fullscreen precache timings are rebalanced, hopefully for the better!
- 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.
- Page transitions are smoother.
- Importing from URL will now load those urls that are already inside the db (hella fast, too), just like importing from hdd.
- The double-update-download bug is finally fixed! Now you’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’s Priority Queues are not parallel FIFOs!)
- 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.
- There was a typo in reset service.
- More content update unification in the db, making things much neater behind the scenes.
- I found a potential hang in the db-shutdown code.
- I found another potential hang in the db-shutdown code!
- The number of messages in your inbox is now displayed on the statusbar.
- Bold, Italic and Underline now work with Ctrl+B/I/U in the message compose panel.
- The ‘don’t receive messages from Anonymous’ checkbox in Add, Remove and Edit Services for message depots now does something.
- system:unread in message search now has a count.
- A draft will remember its saved changes when you click on another conversation and back again.
- You can now save a draft with zero recipients.

- ### version 41

- Rich Text Control with Toolbar in messaging.
- Message unread/read status now syncs to message depot.
- Can set defaults for file system predicates.
- Animated Text class written.
- system:unread tag in messaging.
- Import bug fixed.
- Messaging search logic improved.
- Message depot default check time down to 180, and daemon thread improved to manage with that.
- Application startup is more stable.
- Some AddMessage logic improved.
- Drag+Drop service fixed and improved.
- Tags added while importing will now turn up in autocomplete.
- I unified more of the client’s content-update db calls. Just making stuff neater.
- I massively simplified the autocomplete tag code in preparation for another bash at doing autocomplete cache. A/C is far too slow atm, imo.
- Some A/C counts are still off, particularly when there are a mix of current and pending. I couldn’t figure out what is causing it, but I’ll look at it more as I do the cache.
- 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’t actually do anything yet! Whoops!

- ### version 40

- Inbox/Archive for messaging works. The inbox icon is back, and F7 to archive as usual.
- Unread/Read for messaging works. Click on your status next to a message panel to change.
- All message participants are shown in the conversation listctrl.
- The message page will open with ‘system:inbox’ active, ordered by newest message.
- I fixed conversation listctrl sorting in a couple ways.
- 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.
- The draft panel’s save button wasn’t updating sometimes when it should have been.
- html links in messages will show in the main frame’s statusbar and launch in your browser when clicked.
- 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.
- Ever have a png file that had an ok thumbnail but a black preview/fullscreen? It was probably an ‘LA’ image, or ‘greyscale with an alpha channel’. Display of LA images is now fixed.
- Streamlined the way file ‘archive’ and ‘delete’ 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).
- I’ve updated the help docs, including the section on how messaging actually works.
- You can now enter system tags with enter/return from the keyboard, not just double-clicking with the mouse.

- ### version 39

- A whole bunch of stuff I didn’t write down that generally made messages work beyond sending “Hello World”.
- Unicode messages now work.
- Newlines in messages now display properly.
- Fixed contact saving and drag-and-drop to the manage contacts dialog.
- You can now add a contact using a contact address (assuming their service is v39).
- A bug in contact renaming is fixed.
- My contact (hydrus admin) is now added automatically.
- Messages are orphan-deleted properly server-side.
- Message depots you control now get an entry under the admin menu.
- The conversation listctrl is now properly sorted.
- The HtmlWindow that shows message body is now resized to its minimum needed height via magic that I ain’t gotta explain.
- Messages that fail to send can be retried by clicking on the failed.
- Some draft save/send button enable/disable logic was updated.
- I switched around some server-side account logic.
- You can’t zoom a flash window bigger than the screen.
- I’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.
- Better zip structure. (No more CWD rubbish)
- 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.

- ### version 38

- messaging v1.0

- ### version 37

- messaging prototype

- ### version 36

- animated gif fixes
- new page chooser
- svcp->cstvcp in fullscreen too
- new import progress
- just start the server on this computer, please
- I think I have scrolling to the current selection after an archive fixed now.
- Started an experimental simpler way to send commands to the db, which may open the way for undo-redo.
- Capitalisation option in file->options->gui. It only does the menubar for now, but I will expand it.
- Custom sorts/collects. Under file->options. Check it out, play with it if you care about it.
- Some program initialisation error handling is cleaned up.
- Can now no longer start a server if the admin port it wants to use is occupied. (can’t run two servers at once on the same port)
- I broke dump with a typo in a previous release, I think! It is fixed now.

- ### version 35

- Slight speedup of review services frame loadtime.
- SVCP now replaced with SCTVCP and CSTVCP for now, with more planned next week.
- Repo sync daemon adds db jobs less manically, now, locking up the gui less.
- Repo sync daemon reports successful updates to the log.
- Tag petition review page has a visual bug fixed.
- ThumbnailMediaPanel manages its underlying bmp canvas more intelligently.
- Some ugly page-closing code was cleaned up.
- There is a ‘regex examples’ popout window on the regex-filename-tag import dialog, with copy-pastable examples of python regexes that’ll work for common filename-parsing situations.
- Home and End keys now select the first/last thumbnail as well as scrolling.

- ### version 34

- DB consolidation, and foreign keys and triggers with it. The db is less prone to orphan ids and miscounts.
- For long-time users, all orphan ids should have all been deleted, reducing weirdness.
- Total size of local service is now tracked accurately.
- Archive while importing should work a bit better now.
- Update logic should be more reliable, as should all service_updates.
- Archive count for file repos should be less wrong.
- Fixed two (!) typos in system:age predicate code.
- File upload is fixed (not sure if it was ever broken in release, but I fixed the stupid thing I did anyway)
- DB (and server) errors should report better now, revealing inner-db code in the traceback. (and printing it to the appropriate log)
- Improved the mime_to_enum object for image/jpeg, image/jpg, image/jpe, image/wtfaretheygoingtocalljpegnow.
- HTTP connections can deal with some esoteric commands, like 301, without throwing a fit. All http goes through the same code.
- Danbooru should now be in your booru list, and it _should_ work.
- Pausing/Cancelling a booru gallery parse should now work.
- 4chan dumper now understands captchas being wrong and the thread not existing; in the former case it’ll let you put in a new captcha and try again, in the latter it’ll stop the whole dump.
- Some general code neatness improvements.

- ### version 33

- Boorus are working for users who started last week
- The server can now manage many more simultaneous requests without bugging out.
- The early freeze/import freeze due to simultaneous access in the client is fixed.
- The client’s file+thumbnail server (details in help’s advanced.html) works again.
- Client DB now stores md5 and sha1 for all local files.
- Client DB has a larger cache size.
- The freeze caused when importing thousands of files at once with tags is fixed.
- 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!
- The autocomplete counts should be more accurate, particularly when there are a mix of current and pending tags in the db.
- The autocomplete in the regex-path dialog will now search the db correctly (it was misconfigured).
- Autocomplete is also just a _little_ faster
- File imports are now low priority, so gui activity should still happen nice and quick even while an import is occurring.
- 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.
- 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.
- I’ve added some tooltips on not-obvious widgets.
- 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.
- The import gauge will now show the correct range according to the current queue size, not always the default 100.
- Active Import Pages will throw up a yes/no dialog if you try to close them.
- Some beautifying of code syntax. ‘\n’ is now os.linesep, which means exported stuff should show up better in notepad.
- Some changes in network protocol, although now I think of them, I realise I forgot to update the network version. They aren’t important for most users, so w/e.

- ### version 32

- client db serialisation DONE
- Cleaned up a dirty-bmp canvas init issue.
- Resized some dlg stuff that was too tall
- Cleaned up a bunch of unrelated db code
- Tightened the pubsub system so it integrates better with wx.

- ### version 31

- booru prototype
- Fixed some problem with last error timestamp
- Fixed a bug in repo bandwidth tracking
- Fixed URL registration with the client db.
- Made downloading URLs asynchronous again
- 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.

- ### version 30

- Thumbs are exported, and, along with perceptual hashes, now treated as a global pool, reducing downloads and speeding queries.
- 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’t like a particular size, you can change it back just as fast.
- Temporary DB locking mechanisms ensure serialisation, less inefficient locking.
- 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.
- Fetching images for fullscreen or preview is fully asynchronous, and will no longer block the gui thread.
- Some query logic is improved.
- You can now import and export sites/imageboards from the manage imageboards dialog. It’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.
- Selecting thumbs has a little less preview-flicker now.
- The new tagboxes now render numbers prettily, so 4123 -> 4,123.
- (+) namespace:tag now colours properly.
- The background for selected tags is now an appropriate colour.
- You can now choose the colours of any namespace you like in the normal options dialog.
- Clicking in whitespace in the new tagbox deselects, rather than select( 0 )s.
- 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.

- ### version 29

- Big changes to the db’s file storage, as above.
- database->vacuum is reinstated, database->reindex is retired. I recommend you run a vacuum once you are updated; it’ll only take a minute now.
- Rollback and initialisation bugs are fixed.
- There’s a splash window now that can offer client-boot feedback.
- The way scrolling-to-focus is calculated is improved.
- 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.
- Files with invalid resolution, size and mime are now filtered out before dumping to an imageboard.
- A number of misc other bugs were fixed.

- ### version 28

- I fixed the ‘searching immediately’ bug. It was a stupid typo as usual.
- Post-Filter scrolling should be a bit more reliable.
- Some more log events.
- I did a lot of work on my new tags box, although the actualy gui elements will have to be finished for v29.
- Manage Imageboards wasn’t saving properly. It is now.
- My new progressdialog happens in several places. It is a little neater than the one in wx; just better for my purposes.
- 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)
- After becoming very annoyed with wx’s listbook/labelbook/whateverbook, I wrote my own. It’s all over the place in my dialogs now. It is tighter, more reliable, and can scroll.
- I reworked some of the way sets interacted.
- There was an infinite recursion bug sometimes, when uploading files to a file repo.

- ### version 27

- Cleared out some old unused library imports, so the client is slightly smaller.
- Had a cyclical import (!). Luckily, python is forgiving, but I have still fixed it.
- Collection thumbnails will now update with their new pending tags correctly.
- Some wx.Panel vs wx.Window issues and nomenclature resolved.
- 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.
- Thumbnails resize will tell the thumbnail window just to redraw itself, not refresh the entire query.
- ‘system:local’ and ‘system:not local’ are now mutually exclusive (will swap each other out, rather than overlap), like inbox and archive.
- A little neatening of the system predicate code.
- ‘system:similar_to’ RMB menu entry fixed for some cases.
- There is a new log window. Go view->new log page to see it. It doesn’t show much right now, but you can see synchro successes and errors pop up as they happen.
- There is now a popup button on the import dialog and the URL downloader page that does ‘advanced import options’. 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.
- 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.
- 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’ll only download the newest files. The behaviour of this is affected by the ‘exclude deleted files’ checkbox in the client’s options. I’ll implement thread watching a bit later.

- ### version 26

- The double unnamespaced count bug ( ‘system:blah (70)’, ‘blah (140)’ ) in autocomplete should be gone.
- Some rejiggering of how the statusbar updates means active import windows can’t spam the statusbar when they don’t have focus.
- The count of pending tags is more accurate and uniform. When it says (+3), it means for three files, not in three cases.
- Tag counts overall are better. When it says ‘diaper vore (17)’, you should be getting 17 files if you enter that search.
- GUI tag repo precedence is slightly more accurate, compared to what the db thinks it should be.
- I nailed down why system:mime wasn’t working sometimes, and now it should work all the time.
- I discovered some problems with repo-side bandwidth tracking. I fixed a couple bits, but have notes to look at it more.
- In v25, if system:limit was greater than the search population, it threw an error! Whoops! Fixed now.
- The post-filtering thumbnail problem is totally fixed, as are a couple other instances when thumbs would sometimes not draw.
- The fullscreen change-image-jittering-around problem is fixed, I think.
- Fullscreen archive works again. Not sure why/when it broke.
- Importing with archive checkbox ticked sometimes didn’t archive, lol.
- A bunch of decoupling of gui elements, making for much neater code and less gui blocking.
- Decoupling of import from hdd as well.
- Query is now asynchronous! If you do a massive query on a slow computer, you won’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.
- A number of cpu-heavy numbers are now cleverly cached, so system predicate fetch happens much faster, especially on 100,000+ image dbs.
- Some ‘collect’ code is sped up and made generally less bonkers.
- I wrote a couple new classes for my most common gui elements.
- 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.
- Dialogs that ask you questions will now usually center on their parent window.
- The current selection tagsbox won’t show ( ‘blah (12)’, ‘blah (+3)’ ), it’ll combine into ‘blah (12) (+3) (-1)’. With the + meaning pending and the - meaning petitioned.
- Autocomplete now respects which of the include_current and include_pending buttons are green! It’ll only search current/pending as you wish! And the numbers will now be accurate!
- My new question dialog with the yes/no buttons hooks the Escape key to mean no.
- I don’t use it much yet, but I have a new message dialog too.

- ### version 25

- Thumbnails should load just a bit quicker.
- Made some dict + set code neater
- A new end-of-filtering dialog makes the choices a bit more obvious
- 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!
- Better scrolling in thumbnail view
- Scrolling in thumbnail view will follow the current selection, so the focussed media will always be visible.
- Double right-clicking in filter now deletes instead of keeps (typo)
- Slightly less flickering when processing repo updates
- Made some form code neater
- A lot of the thumbnail gui code has been decoupled and pubsub’d. It is all neater behind the scenes, meaning I’ll be able to extend it easier in future.
- 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.
- system:mime was not working in v23, not sure why. It’s fixed now.
- Some small speedup + neatening in db queries.
- 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.
- 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’s fixed.
- Autocomplete now works off one character’s input.
- I’ve swapped a bunch of expensive objects with easier staticbitmaps for now
- some A/C ordering changes

- ### version 24

- imageboard dumper prototype
- some db update stuff

- ### version 23

- A typo was disallowing petition rescinds in certain cases.
- I’ve rearranged some of the RMB menu separators to reduce filter/archive misclicks.
- Tag pending upload has more accurate GUI response.
- You can now find similar images from RMB menu.
- Petition approvals are mirrored on an admin’s client.
- The gui now accepts that admins can overrule deleted content.
- Couple tiny URL downloader gui bugs fixed

- ### version 22

- system:similar_to
- Some backend namespace stuff
- Couple of gui presentation fixes
- I removed the clunky inbox and archive buttons, see how you feel about it.
- I tried to do ultimatelistctrl to have coloured tags (like a *booru), but it was too buggy and slow for the client’s purposes, so I’ll probably have to write my own control.
- system:mime exists, now. Not many mimes, yet, but have a play with it, see if you like it.

- ### version 21

- On opening the URL downloader, the textbox input focuses.
- The URL downloader has some better update texts. It pauses nicely, etc…
- 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!
- You won’t see dupes in the URL downloaders’ mediaresultswindow.
- Accounts should now correctly refresh on version update.
- When accounts fail to sync, it dumps the error in the log.

- ### version 20

- The preview pane should be a little less schizophrenic.
- Some code cleaning up behind the scenes.
- Thumbnail download optimisation if they already exist locally.
- Icons will show/hide in fullscreen with mouse movement, just like 21/123.
- Weird archiving bug on import is fixed. It was display only.
- Manage tags dialog now works in fullscreen, lol.
- system:not_uploaded_to: now works
- services->review services now loads muuuuuch faster (after the first time)
- There was a typo in setting up initial server’s accounts. Email me if you can’t make new admins.
- Importing is more streamlined, with more shared code.
- Importing with tags dialog happens more naturally in the import process. You can now do it from drag and drop imports!
- I reordered the default collection dropdown. Your default may be changed, so check your options.
- You can now fetch an account by a deleted file (hash).
- Thumbnails’ tags now obey tag precedence for deleted stuff. I hope.
- Modify Account Dialog now does its stuff.
- Collections thumbnails now show how many files are in the collection, just next to the icon.
- I’ve added to and edited the help extensively, replacing screenshots and updating the text.

- ### version 19

- drop librarium nomenclature
- More intelligent prefetch in fullscreen - things should load muuuuuch faster
- A little more intelligent sum() calcs in autocomplete - non-namespaced tags now sum all their namespaced versions as well
- More rigorous client db transactions, just to make things more pretty and reliable.
- Moved db files to /db, logs to /logs
- Made inroads to getting review services to load faster, but version 20 will have more here.
- I’ve updated the frame view so the file info is draw on top of the image. It’s a hack for now, inside the image-frame, but it is the only solution for wx’s annoying ‘no overlapping’ policy.

- ### version 18

- Some misc gui image info bugs fixed
- Review services dialog is less pubsub buggy
- Fullscreen image prefetch does more and hopefully more intelligently
- Entering a blank tag to quit tag dialog was broke when I updated autocomplete textctrls. I’ve fixed it.
- Petition page is fixed, so I can finally clear out the tag petitions!
- F10 was broke when the lib had deleted files lol! Fixed it.
- Review services is more responsive to repo permissions updates.
- Flash files are now correctly put in the inbox on import.
- 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’ll deal with that when I come to it.
- 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.
- Improved delete orphans logic for the fiftieth time! It is great now, and won’t ever bug you in the gui; it runs invisibly on shutdown and usually only takes a few secs to do its job.
- 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.
- 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!
- Download Thumbnails daemon was getting pretty slow for large dbs (100k+ files) because of an inefficient db query. This has been cleared up.
- 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.
- I have unified panel and frame background colouring away from wx’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.
- 21457 is now 21,457 in pretty much all cases where it is appropriate.
- 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.)
- ‘localhost’ 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.
- Dialogs and frames have better, multi-monitor-friendly positioning.
- Flash files are loaded from a temp folder beneath the install dir, rather than lib’s server, for various reasons. This temp dir also manages file copy/paste operations. I may move this back to the OS’s approved temp folder, but we’ll see.

- ### version 17

- Tag negation “-tag” works again
- You can now cancel a filter on the first image
- Some weird filenames that were breaking the new import page no longer do
- 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
- 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.
- I changed a couple small things in help regarding the new import.

- ### version 16

- Numtags system predicate now takes into account which of current/pending tags buttons you have active.
- Thumbnail downloads fire more reliably.
- Downloading a file was causing funky thumbnail draw, which seems to be fixed.
- Delete Orphans daemon only fires on application close now, so post-filter db lag is gone.
- Daemons now use events, not conditions! lololol, I’m an idiot who can’t scroll down a library doc. For the longest time I was like “I wish ‘threading’ had events!” and it does.
- Some account checks were missing in tag upload, but are now there.
- A gigantic db rewrite that altered pretty much every table and query.
- Calculation of tags for current selection now support collections, and is fast.
- Was deleting a repo broke in 15? If it was, sorry! Didn’t catch it, but it’s fixed with the new system now.
- Pubsub can do more, and is a little less ‘argh, I think it works like that’, and more OOP
- The way tags are held by a thumb can support multiple tag servers (but only does public tag repo for now)
- Repos are now a subclass of ‘service’. I’ll do more on this in the next version, including some nomenclature changes in the gui.
- Imports are now asynchronous! There’s a new import page that’ll open on any import. It’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’ll be able to import faster than it updates the gui.

- ### version 15

- manage tags dialog focus bug hotfix

- ### version 14

- Selection’s tags box now shows collections’ singletons’ tags
- Autocomplete now sources from the current thumbnails whenever it can (faster than db), and does so intelligently
- Couple of small display bugs fixed
- Some delete logic approved
- Repos do some more efficient inserts on POST content
- Petition optimisation, for auto-soft-approval before update gen
- Dialog parents, dialog parents everywhere
- DB cleanup of a couple of old methods
- Autocomplete Write (when adding tags in manage tags dialog) now sources from the entire network’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 ‘evangelion’, but you do have a file tagged ‘eve’, it’ll show ‘eve’ if you type ‘ev’, but if you type ‘eva’, it’ll requery the db more widely, and give you ‘evangelion’.
- system:ratio for searching for wallpapers or whatever. Combine with system:width>x for extra utility!
- You can now hit F3 (manage tags) in fullscreen, whether browsing or filtering.

- ### version 13

- a couple of cpu-intensive DAEMONS schedule themselves better. (less slowdown after a big filter)
- image rendering prefetch improved
- smoother image rendering to screen (especially when zooming), less flickering
- petition approval has smoother, less buggy workflow
- 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+
- some of the internal commands are streamlined together into a single class
- ctrl-s fixed
- clear pending file repos pubsub fixed
- ctrl-r now shows/hides splitters
- thumbnail delete logic is better
- select logic is better
- deleted_remote_files bug fixed
- headache-inducing weakref repositories __eq__ bug in pubsub fixed
- ‘with’ keyword all over the place now. turns out wx has a bunch of objects with support it (including dialogs!)
- gridsizers are now all flexgridsizers
- the list of tags on the current selection now has a weight attached like ‘flower (23)’ to show how many of the current selection have that tag. it doesn’t support collections’ weight yet.
- revised some ambiguous repo error messages
- you can now have a main window with no pages open
- right click menus on a selection are vastly improved (lots more info), but still a way to go.
- on the import files dialog, you can now specify to auto-archive rather than send to inbox
- thumbnails now know where they are uploaded/pending/petitioned to and will show that info with different icons
- escape key now deselects
- manage repos dialog is completely revised. comments appreciated.

- ### version 12

- You can now tell lib to search ‘current tags’ only, ‘pending tags’ only, or both.
- Tag search is more efficient.
- Search in general is more efficient.
- Search code is more beautiful and decoupled.
- Tags are stored in memory more beautifully, and a similar class holds repositories for thumbs also.
- Age predicate is fixed (twice!)
- Server code is more beautiful. DB-Server interface is decoupled into a mixin class to make it easier to understand and manage.
- Icons for pending and petitioned files, and for ‘currently downloading’.
- Prefetch fixed, so nearby fullscreen images load just in case you want to see them.
- Fixed a redundant pending tags bug
- Fixed a swf tag petitions bug
- On boot, temp folder is cleared.
- The ‘current tags’ 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.
- 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.
- Gui-code tidy-up
- On deleting a local file, preview clears.

- ### version 11

- swf support, lol
- You can now backup repositories from the admin menu. Info in help.
- Under the help menu, a quick way to set up the beta repositories’ credentials.
- Account sync was full of bugs, and is now less so.
- 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.
- Auto-complete is muuuuuch faster than it was. Also more correct. Still more work to do, though.
- 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.
- Ctrl-T opens a new local page/tab, Ctrl-W closes the currently active
- Image display in preview and fullscreen has been revamped, and is now both a little buggy and much better.
- Bandwidth tracking both server- and client-side should be more reliable.
- Delete lag (the slowdown after you boot/delete something) should be reduced.
- Query lag is significantly reduced, and new operators for predicates have been added. You can now go ˜ on a bunch of values like size and width and duration to get ‘approximately equal to’, which actually means plus or minus about five percent.
- A stupid error on file upload is fixed. If you’ve been having problems seeing the files you uploaded in preview, try resetting the respective file repository.
- A few daemon bug fixes.

- ### version 10

- hotfix for tag updates

- ### version 9

- Pressing a cursor key when no thumb is focussed no longer throws an exception.
- Hitting enter on a blank input in the manage tags dialog now quickly oks the dialog.
- Annoying splitter exception on import is gone. It was a one-line fix, because I was being stupid.
- All searches should be a little faster. Mostly effects searches with 1000+ results.
- 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.
- Slow petition approval fixed, made almost instant.
- Image rendering has been revamped. It should be less stuttery now, but there is still more work to do.
- Some pending tag update logic was fixed.
- If the focused thumb goes from ‘not local’ to ‘local’, its preview will load. (its on my to-do to do the opposite: clearing preview on delete in remote search.
- 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.
- 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.
- 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.

- ### version 8

- Fixed a missing transaction on repo db update.
- Export path can now be on other hard drives. You’ll probably want to keep it on the same drive if you have lib on a usb stick, though.
- Fixed a really stupid ‘<’ for ‘>’ typo that was causing a ton of gui blocking and repository slowdown.
- File and thumbnail downloads are much snappier.
- One person had a very odd error while trying to open manage repos. I don’t understand what actually caused the traceback to happen, but I think I fixed it nonetheless.
- inbox/archive buttons above the searchbox are now mutually exclusive.
- Fixed the version number in lib’s about window.
- Fixed the preview window so it remembers its last size properly. Also reduced its min size so you can make it tiny.
- Fixed the problem people were having with admin rights. See this post if you were having problems.
- The RegisterRepoRequest that was filling people’s logs on upload should be fixed now. Turns out I didn’t understand how wx.CallAfter works during modal dialogs! I threw in a horrible fix, but it works. I’ll revisit it.

- ### version 7

- db changes are done
- fixed a bug with posting tag petitions
- when typing tags in, autocomplete now harvests from pending tags as well as current
- the regex dialog’s tag entry is now autocomplete
- leading/following whitespace removal for tags, and multi-whitespace -> single
- a little server-side pubsub neatening up
- when importing via dialog, there is now a checkbox to ignore subdirectories
- 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)

- ### version 3->6 (never released)

- after much feedback, completely rewrite db
- general improvements to gui

- ### version 2

- general fixes and improvements

- ### version 1

- first true metadata beta
- shit actually works

- ### versions 0.91 -> 0.99

- move to python and wx, and an application- rather than browser-based model
- building on concepts
- scrapping p2p, turning to client-server

- ### early versions of beta

- made db, playing around with LAMP
- an initial p2p framework started