- Add FallbackController for proper 404 JSON responses on missing resources
- Add non-bang get_source/1 and get_media_item/1 for safe lookups
- Fix Task JSON encoder: remove Repo.preload call (not available in encoder scope),
handle NotLoaded associations by returning nil
- Fix media item index: use list_media_items_for_source/1 instead of
list_pending_media_items_for/1 which had overly restrictive filtering
- Add missing extras_directory to test config
- All 1007 tests pass
- Add /api/v1 namespace with Bearer token auth (PINCHFLAT_API_TOKEN env var)
- API controllers for sources, media items, media profiles, settings, tasks
- Support for all source actions: create, update, delete, force_download_pending,
force_redownload, force_index, force_metadata_refresh, sync_files_on_disk
- Media item endpoints: list, show, search, force_download, update, delete
- Media profile CRUD endpoints
- Settings show/update and app_info endpoints
- Task listing endpoints
- Add Jason.Encoder for Task schema
- Comprehensive test suite for all API endpoints
- Gitea Actions CI workflow (runs existing checks + API-specific tests)
- API documentation in docs/API.md
Consolidate the home page UI by moving Active Tasks from a separate
section into a third tab alongside Downloaded and Pending tabs.
Co-authored-by: Daniel <ddacunha@MacBook-Pro-14.local>
* Added Deno to Dockerfiles
* Updated yt-dlp source
* Added unzip
* Update deno directory
* The ACTUAL deno install path this time. Christ, am I new here?
* Linting
* Bumped Elixir
* Silenced mix check warnings
* Updated all deps with minor version upgrades
* Updated more deps; Refactored text components to work with phoenix_html updates
* README: add podman
Docker always has a tendency to get in my way on Debian. Also, I really
like the userns setup for podman for giving permissions between host and
container.
* Ran linting on README
---------
Co-authored-by: Kieran Eglin <kieran.eglin@gmail.com>
* 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
* Added a command for updating yt-dlp
* Added a yt-dlp update worker to run daily
* Added a new file that runs post-boot when the app is ready to serve requests; put yt-dlp updater in there
* Updated config to expose the current env globally; updated startup tasks to not run in test env
* Removes unneeded test code
* Updated default job priorities for downloading queue
* Added the ability to set priority to various downloading helpers
* Sets sources to fast index on creation
* 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
* Added prometheus to deps list
* WIP - screwing around with Prometheus and grafana
* Added basic prometheus config
* Updated docs in prom_ex module
* Updated README