-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
- v0.1.0 — PostgreSQL backend migration. Replaces SQLite with Postgres, resolves Oban write contention, migrates full-text search to
tsvector, rewrites all SQLite-specific query syntax. - Source-level content availability filtering — Per-source checkboxes to control whether public videos, members-only videos, or both are downloaded. Captures yt-dlp
availabilityfield at index time and re-evaluates on rescan. - Error classification system —
error_typefield onmedia_itemsto distinguish permanent failures (members-only, unavailable, geo-blocked) from transient ones (network errors, rate limits). - Permanent failure prevention — Once a video is classified as a permanent failure,
prevent_download: trueis set automatically so it stops consuming retry cycles. - Oban Lifeline plugin — Rescues jobs stuck in
executingstate after a crash or container restart. Automatically retries them after 30 minutes. - yt-dlp version management —
YT_DLP_VERSIONenv var controls update behavior:stable,nightly,master,pinned/none, or a specific version string. - Download prevention reason tracking —
download_prevented_reasonfield distinguishes manual prevention, policy blocks, and error-stops so re-indexing doesn't accidentally re-enable intentionally blocked items. - YouTube API key tester — One-click API key validation from the Settings page.
- Sonarr-inspired UI overhaul — Source library as poster card grid, fanart banner on source detail pages, horizontal action bar, year-grouped episode list, Activity page, System Status page.
- SABR bypass and video client override — Per-source video client selector to route around SABR-corrupted downloads. Cookie-incompatible clients blocked at save time when cookies are in use.
- Cookie behaviour per source — Granular control: Disabled / When Needed / All Operations.
- Source type selector — Channel vs Playlist is user-selectable on the new source form, overriding unreliable auto-detection.
- Metadata editor — Edit source name and description with per-field lock toggles; upload or link a custom poster image.
- Metadata reliability fixes — Scoped yt-dlp output template prevents JSON truncation on resource-constrained hosts; graceful error handling prevents metadata failures from causing Oban retry noise.
- PubSub live UI updates (v0.4.0) — LiveViews currently don't subscribe to PubSub, leaving the UI stale until manual reload. Sources and activity pages should update in real time.
- Sonarr UX completion (v0.4.1) — Remaining items from the Sonarr UX backlog: monitored toggle persistence, source card polish, and other minor UX gaps.
- Queue diagnostics page — Oban queue health stats, stuck job detection, and bulk reset/cancel actions.
- Bulk operations (v0.5.0) — Bulk source enable/disable, bulk media prevent/allow, and other multi-item actions.
- Async backup (v0.5.0) — Background pg_dump so backup no longer blocks the HTTP request.
- UX polish (v0.5.1) — Minor visual and interaction improvements across the UI.
- SQLite migration task (v0.6.0) —
mix pinchflat.migrate_sqliteto help users migrate from upstream Pinchflat to this fork. - Notifications and backup completion (v0.6.1) — Apprise notification improvements and backup workflow completion.
- v1.0.0 public promotion — r/selfhosted post and blog post capstone framing the project history.
Playlists may fail to download media, fail to fetch metadata, or behave unpredictably depending on the deployment environment. In testing, one instance fetched nothing when a playlist URL was added; another downloaded episodes but never retrieved metadata. Channel URLs are more reliable. Under active investigation.
On ARM builds of yt-dlp, YouTube channel handle URLs are consistently misidentified as playlists because playlist_id != channel_id for handle-style URLs. This causes the wrong metadata path to be used (episode thumbnail instead of channel avatar). The source type selector (added in v0.3.7) works around this by letting you specify the type manually. ARM-specific bugs are low priority and may not be fixed promptly.
When adding a new source, get_source_details calls yt-dlp without the bgutil PO token extractor arguments. On ARM hardware without cookies configured, this can trigger bot detection from YouTube before the source is even saved. Workaround: configure cookies on the source. Long-term fix: pass PO token args to get_source_details.
The metadata worker takes different code paths for channel vs playlist sources. On playlist-typed sources, it uses --write-thumbnail with playlist_items: 1, which writes an episode thumbnail rather than a channel/playlist avatar. This is expected behavior for true playlists but is a visible problem for channels that were misdetected as playlists. The source type selector resolves this for new sources; existing misdetected sources need to be manually corrected.