- fleshed out the new gallery log and its constituent log entry objects
- added gallery logs to gallery downloaders, subscriptions, url downloaders, simple downloaders and watchers
- added very simple gallery log reporting to these downloaders
- added first, read-only version of gallery log ui to these downloaders
- fleshed out some new gallery/file-object pipeline stuff
- wrote a simple danbooru gallery page parser and added it on update. it doesn't do anything yet, but if you are into the new parsing system, please check it out as an example
- the url downloader now has a full file import status control with status text
- fixed a url count issue on completely fresh gallery downloads that was stopping gallery searches one file (like 199 vs 200) before the file limit
- the pixiv downloader now fetches 'type=all' gallery pages, which include specifically manga file pages (as opposed to merely multi-file 'illustrations')
- added 'retry ignored' to the file import status button's right-click menu
- fixed the deviant art url class and parser to use the new file page format. also added an '(old format)' class to match the old way for legacy purposes (this legacy class also uses an api conversion to connect to the new parser--we'll also figure out a way to convert all these over at the db level en masse later!)
- updated some similar deviant art gallery stuff as well
- tag import options now has a tag filter to go along with the 'get all tags' checkbox! ('get all tags' is now renamed to 'get all' as a result). this filter lets you make more complicated tag filtering decisions like 'get all tags except "species:" tags'.
- the new 'only get tags if they already exist' checkbox now also has a filter, if you want to only apply this test to a subset of tags (like the unwashed mess of unnamespaced tags many boorus and sites provide)
- generalised a 'tag filter' button class to make it simpler to edit tag filters across the program, and cleaned up some related status code
- fixed a problem with deriving tag import options for specific url classes when that url class was part of an api-url-class chain
- if the domain manager cannot now find a url match for a pending download, it now assigns the file post default tag import options to that import
- added a new 'duplicates' options page that has a hacky way to edit the weighted scores used to determine which of the pair of files to present file in the duplicates filter
- unifed how some file import status generation works, adding a new 'simple status' string to briefly summarise progress in multi-watcher and edit subscriptions columns
- cleared out some old redundant status caching in the urls downloader
- simplified how almost all timestamp strings are generated
- simplified how time delta strings are generated
- brushed up some simple common ways to present timestamps as 'human pretty' strings
- all places where timestamps would be presented as a mix of '5 days ago' and complete datetime strings will now present as '5 days ago' unless you set the new options->gui 'always show iso' checkbox. going back to simple to clear up confusion in workflow and code. I may revisit this, as turning on ISO mode now spams it all over the place
- cleaned up the 'looks like the computer just woke from sleep' check and reduced its grace period to fifteen seconds. foreground daemons (like the subscription daemon) and the network engine will now also obey it
- added a 'simulate wake from sleep' debug action to better test the sleep-wake detection code
- improved my custom statictext class to auto-wrap text without flickering
- used this new autowrapping to improve wrapping and layout of popup message texts
- replaced all other st wrapping with this new code
- wrote a little helper function to better dedupe lists in future
- did a bunch of refactoring to neaten some long common func names
- deleted some old unused code