* Sources that use cookies when_needed now retry downloads if we think it'd help
* tweaked error message we're checking on to match media_download_worker
* Added last_error to media item table
* Error messages are now persisted to the last_error field
* Minor layout updates
* Added help tooltip to source content view
* Added error information to homepage tables
* Remove unneeded index
* Added docs to tooltip component
* Updated yt-dlp runner to take an action type
* Added actions to all callers of the yt-dlp runner
* [SQUASH] updated test files to use new mocking strategy
* Removed unneeded alias
* Added logic to ignore downloads that aren't in the right live state
* Added tests for get_downloadable_status method
* Added tests for media downloader module
* Added tests to download worker modeule
* Added 'use_cookies' column to source
* Added cookies to the source form
* Updated every command to optionally include cookies
* LOTS of tests
* Made YT cookies off by default
* Changed the purpose of the 'culled_at' flag. renamed some methods
* implemented new culling behaviour for source cutoff dates
* Removed culled_at flag if a media item gets redownloaded
* Updated source form
* Removed unused method
* Added ability to specify overwrite behaviour when downloading media
* Added helper for redownloading media items
* renamed media redownload worker to disambiguate it from similarly named methods
* Added new redownload option to source actions dropdown
* Refactored MediaQuery to use a __using__ macro
* docs
* Updated downloader and runner to handle sponsorblock failures more gracefully
* stopped download worker from running if a media item is preventing download
* [WIP] break out a few contexts, start refactoring fast index modules
* [WIP] more contexts, this time around slow indexing and downloads
* [WIP] got all tests passing
* [WIP] Added moduledocs
* Built a genserver to rename old jobs on boot
* Added a module naming check; moved things around
* Fixed specs