* 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
* Added OPML Endpoint for podcast rss feeds
* changed opml route and added controller test for opml endpoint
* add copy opml feed button
* add copy opml feed button - correct url
* fix html indenting
* add indentation to opml
Co-authored-by: Kieran <kieran.eglin@gmail.com>
* use convention for unused controller params
Co-authored-by: Kieran <kieran.eglin@gmail.com>
* add test for opml_sources helper function
* change opml endpoint to be more inline with the other routes
---------
Co-authored-by: robs <git@robs.social>
Co-authored-by: Kieran <kieran.eglin@gmail.com>
* 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
* WIP - started improving handling of sorting for sources index table
* WIP - Added UI to table to indicate sort column and direction
* Refactored toggle liveview into a livecomponent
* Added sorting for all table attrs
* Added pagination to the sources table
* Added tests for updated liveviews and live components
* Add tests for new helper methods
* Added fancy new CSS to my sources table
* Added size to sources table
* Adds relative div to ensure that sorting arrow doesn't run away
* Fixed da tests
* Separate tabs for pending and downloaded in media history
- closes#504
* correct query for pending state and remove unecessary assign
* correct pending where
---------
Co-authored-by: robs <git@robs.social>
* 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
* 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
* [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
* Add option to use existing Media Profile as template for new profile
* Forgot to commit the edit form too
* Reset deletion mark on Source controller
* Add test for new preload profile feature
* mix check
* 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
* Format 'Scheduled At' in task table according to user's TZ
* Changed video preview layout to 1 column on all displays
* Made links in descriptions clickable
* Updated Copy JSON button to properly escape newline characters
* Added function for updating a media item's filepaths on-disk
* Added placeholder action to source page
* Turned the file sync into a job and properly hooked it up to the controller