* 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
* Added sleep interval to settings
* Added new sleep setting to yt-dlp runner and added tests
* Added setting for form; updated setting name
* Updated form label
* Prevented saving/updating of media items if being throttled by youtube
* Added the bot message to the list of non-retryable errors
* Fixed typo
* WIP - moved plugs; set up a new token-protected route plug
* Added a route_token column to settings model
* Hooked up token_protected_route plug to database
* Hooked up new OPML route to UI; turned RSS and OPML feed buttons into links
* Docs, tests
* Added a note about the phoenix bug
* Moved quality options to their own module
* Added language and format selection to quality option builder
* [WIP] migrating tests
* Added audio_lang to media_profile table
* Renamed column; added format options and tests
* Adds UI for audio_track to the media profile form
* Adds a version string to in-app streams to help with cache busting
* [Unrelated] updated module name for existing liveview module
* Updated toggle component and moved MP index table to a liveview
* [WIP] reverted MP index table; added source count to MP index
* Moved new live table to sources index
* Added 'enabled' boolean to sources
* Got 'enabled' logic working re: downloading pending media
* Updated sources context to do the right thing when a source is updated
* Docs and tests
* Updated slow indexing to maintain its old schedule if re-enabled
* Hooked up the enabled toggle to the sources page
* [Unrelated] added direct links to various tabs on the sources table
* More tests
* Removed unneeded guard in
* Removed outdated comment
* Added ability to pass additional yt-dlp options to indexing step
* Added predicted_filename to media struct
* WIP added ability to predict filepath to source indexing
* renamed predicted_filepath
* Added the ability to predict filepath when fast indexing
* Add predicted_media_filepath to media items table
* Addressed TODOs
* Added duration limits to source model
* Added duration limits to source form
* Added validation for min/max amounts
* Added duration checks to pending query
* Moved min/max filters up in source form
* Removed debugger
* 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
* [WIP] started on source deletion
* Removed unneeded test blocks
* Added marked_for_deletion_at to sources and media profiles
* Hooked up async deletion to media profiles as well
* Started capturing playlist_index on indexing pass
* Added playlist_index as a media item field
* Added playlist index to output variable templates
* Improved the way playlist_indexes are rejected on update
* Updated docs
* Undid unneeded changes
* Added compound index for updated media item table for performance
* Improved large number display on homepage
* Improved UI around large numbers
* Centered the content of homepage data cards
* Renamed migration
* [WIP] renamed and migrated upload_date column
* Refactored yt-dlp media module
* Refactored parse_upload_date
* Refactored media item upload_date_index
* Got media tests running
* Refactored media item table live
* Cleaned up the stragglers
* Fixed old oversight re: original_url
* Changed sqlite FTS to use a trigram tokenizer
* Added search UI to source tables
* Fix bug with special chars in search form
* improved main search results form
* Improved centering for media table header elements