soulsync/webui/static/video
BoulderBadgeDad 8eadadc1ae
Some checks failed
Compile the app and run tests / sanity-check (push) Has been cancelled
youtube retention: auto-clean old channel episodes (per-channel keep window)
new opt-in feature — default keeps everything, so nothing changes unless a channel sets it.

- history got smarter: youtube rows now carry channel_id + published_at (mined from
  search_ctx) + a pruned_at marker. new queries: youtube_channels_with_downloads,
  youtube_channel_episodes, mark_download_pruned.
- core/video/retention.py (pure): parse_retention + episodes_to_prune — age by UPLOAD
  date (published_at, filename fallback); 'count_N' keeps newest N, 'days_N' keeps last N
  days; undated episodes never pruned.
- handler auto_video_clean_youtube_episodes: for each channel with a policy, delete the
  out-of-window video + its -thumb/.nfo sidecars (only the exact recorded dest_path, never
  walks folders), then mark the history row pruned — KEPT so the scan never re-downloads it.
- 'Keep' dropdown in each channel's cog modal (Everything / Last 30 episodes / Last 3 / 6
  months); playlists excluded. seeded daily automation + register/block/label/icon/sort.
pure math + handler (i/o injected) + the prune-keeps-dedup DB contract all tested.
2026-06-26 17:24:59 -07:00
..
video-automations.js youtube retention: auto-clean old channel episodes (per-channel keep window) 2026-06-26 17:24:59 -07:00
video-calendar.js video calendar: watchlist-driven by default + an 'All library' toggle 2026-06-20 14:07:40 -07:00
video-dashboard.js video dashboard: live system stats (memory + uptime) from the shared endpoint 2026-06-18 21:24:59 -07:00
video-detail.js Video show detail (TMDB source): show the Watchlist + Trailer actions 2026-06-21 14:57:32 -07:00
video-discover.js Video Discover: split Top 10 today into Movies + TV Shows (Netflix-style) 2026-06-24 08:00:13 -07:00
video-download-history.js video downloads: re-download + clear history actions 2026-06-26 09:44:56 -07:00
video-download-view.js Video: live per-episode download tracking + auto-wishlist today's airings 2026-06-21 02:27:08 -07:00
video-downloads-page.js downloads: youtube 'open' goes to the in-app channel page, not youtube.com 2026-06-26 13:24:41 -07:00
video-enrichment-manager.js video enrichment: add a GLOBAL 'Retry all failed' (all workers, all kinds) 2026-06-20 14:15:18 -07:00
video-enrichment.js video enrichment: keyless workers read 'Disabled' (not 'Not configured') when off 2026-06-18 23:29:22 -07:00
video-get-modal.js video downloads: live tracking on the grabbed result + movie detail, redesigned cards 2026-06-20 09:41:05 -07:00
video-import.js Video downloads: best-in-class post-process pipeline 2026-06-21 01:44:35 -07:00
video-library.js Video: airing shows get BOTH the watchlist eye AND the get/download button 2026-06-16 11:07:53 -07:00
video-person.js video: add 'Add to Watchlist' button to person detail pages 2026-06-20 13:50:34 -07:00
video-scan.js Video tools: scan a Movies OR TV library (not just both) 2026-06-21 23:27:35 -07:00
video-search.js Playlist search result: standard 'Add to Watchlist' button (not 'Follow') 2026-06-17 20:42:30 -07:00
video-server-scan.js Video tools: add a Server Scan tool (trigger the media server to index new downloads) 2026-06-22 08:26:24 -07:00
video-settings.js settings: youtube path template field on the Library tab 2026-06-25 19:40:56 -07:00
video-side.css downloads drawer: episode detail + youtube treatment + availability line 2026-06-26 13:06:44 -07:00
video-side.js Video downloads: best-in-class post-process pipeline 2026-06-21 01:44:35 -07:00
video-watchlist-btn.js Watchlist eye: confirm before removing (the standard yes/no dialog) 2026-06-16 09:29:31 -07:00
video-watchlist.js youtube playlists: same settings cog/modal as channels 2026-06-25 23:07:15 -07:00
video-wishlist.js video wishlist badge: poll so it reflects server-side removals (downloads) 2026-06-26 00:19:54 -07:00
video-worker-orbs.js video enrichment: show the 5 new workers in the dashboard-header orbs too 2026-06-18 23:22:32 -07:00
video-youtube.js youtube retention: auto-clean old channel episodes (per-channel keep window) 2026-06-26 17:24:59 -07:00