- 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