* 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
* Added upload date index field to media_items
* Added incrementing index for upload dates
* Added media item upload date index to download option builder
* Added new season_episode_index_from_date to UI; updated parser
* Improve support for channels
* Hopefully fixed flakey test
* Namespaced notification modules under lifecycle
* Added a JSON encoder for all the main model types
* Added startup task to create user script file
* Hook up user script event to media download
* Hooked up media deletion user script
* Added jq to docker deps
* Updated README
* Manually installed mutagen
* Stopped upgrade form from submitting on enter
* Gracefully handle duplicate enqueued downloads
* Update metadata thumbnail fetcher to use the best jpg available
* Updated downloader and runner to handle sponsorblock failures more gracefully
* stopped download worker from running if a media item is preventing download
* Properly escaped NFO file contents
* Added an NFO backfill worker
* Added a try-catch to the backfill since I _really_ don't want failures to halt app boot
* [WIP] renamed current settings module and tables to have backup suffix
* Created new settings table, schema, and context
* Migrated from old settings module to new one
* Removed settings backup modules
* Added some tests and docs
* [Enhancement] Adds ability to stop media from re-downloading (#159)
* Added column
* Added methods for ignoring media items from future download
* Added new deletion options to controller and UI
* Added controller actions and UI for editing a media item
* Added column to sources
* Added retention period to form
* [WIP] getting retention methods in place
* Hooked up retention worker
* Added column and UI to prevent automatic deletion
* Docs
* Removed unused backfill worker
* Added edit links to media item tabs on source view
* Clarified form wording
* Form wording (again)
* Removes header to allow embedding in frame
* Escaped links in podcast RSS builder
* Turned homepage sections into clickable links
* Enabled live dashboard in all ENVs
* Ensured download worker always returns a 2-member tuple
* Add media streaming (#108)
* [WIP] set up streaming route
* Added UUID to sources and media items
* Added media preview to MI show page
* Added plug to strip file extensions
* [VERY WIP] basic podcast RSS setup
* [WIP] got basic podcast RSS working
* [WIP] more expanding on RSS
* Comment
* [WIP] Working on refactoring feed
* Added UUID backfill to a migration
* [WIP] Moar refactoring
* [WIP] Adding UI for getting RSS feed
* Many tests
* Added conditional routing for feed URLs
* Removed the need for url_base to be set
* Updated preset name
* Rendered certain fields HTML-safe; Added logging to confirm range request support
* Fixed incorrect scheme issue
* Updated env var
* Updated other UI to use dropdown
* removed commented code
* Generate rss feeds (#123)
* Added plug to strip file extensions
* [VERY WIP] basic podcast RSS setup
* [WIP] got basic podcast RSS working
* [WIP] more expanding on RSS
* [WIP] Working on refactoring feed
* Added UUID backfill to a migration
* [WIP] Moar refactoring
* [WIP] Adding UI for getting RSS feed
* Many tests
* Added conditional routing for feed URLs
* Removed the need for url_base to be set
* Updated preset name
* Rendered certain fields HTML-safe; Added logging to confirm range request support
* Fixed incorrect scheme issue
* Updated env var
* Updated other UI to use dropdown
* removed commented code
* docs
* Added unique index to UUID fields
* increased file follower timeout to 10 minutes
* Removed unique index across a source's collection and its media profile
* Ensure source gets updating during slow indexing