soulsync/webui/static/video
BoulderBadgeDad c33810f39f video enrichment: add DeArrow (crowd-sourced YouTube titles) — full parity
Fourth service. Rides the YouTube-video enrich path (like RYD/SponsorBlock), keyless,
on by default → toggle in the YouTube-Extras frame.
- DeArrowWorker: fetches the branding API and stores the first non-original crowd
  title for a cached YouTube video. apply_youtube_dearrow + youtube_video_dearrow_title
  DB methods; dearrow_status added to the youtube_enrich next/breakdown whitelists.
- Schema: dearrow_title/status/attempted on youtube_video_stats (video_schema.sql +
  _COLUMN_MIGRATIONS for existing DBs).
- config GET/POST dearrow_enabled; manager orb (blue 🏹, video-kind) + status poll;
  YT video-detail panel shows a 'DeArrow' alt-title (payload via youtube.py + CSS).
- 4 new tests + fixed-set/config assertions.

30 backfill tests green. (My change is ruff-clean; the 12 pre-existing S110s in
api/video/youtube.py are unrelated tech debt on this branch, left untouched.)
2026-06-18 23:09:02 -07:00
..
video-calendar.js Calendar: keep hero side panels >=10% wide + make Compact the default view 2026-06-17 00:03:49 -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 enrichment: add DeArrow (crowd-sourced YouTube titles) — full parity 2026-06-18 23:09:02 -07:00
video-discover.js Discover: fix grid pagination + session cache + responsive pass 2026-06-16 15:44:36 -07:00
video-enrichment-manager.js video enrichment: add DeArrow (crowd-sourced YouTube titles) — full parity 2026-06-18 23:09:02 -07:00
video-enrichment.js video enrichment: add DeArrow (crowd-sourced YouTube titles) — full parity 2026-06-18 23:09:02 -07:00
video-get-modal.js Wishlist: episode synopsis + clickable cards + FIFO/newest sort 2026-06-16 18:21:26 -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: wire the eye/get button onto every card surface 2026-06-16 10:41:07 -07:00
video-scan.js video Tools: rehydrate scan state on page refresh (parity with music) 2026-06-14 07:59:44 -07:00
video-search.js Playlist search result: standard 'Add to Watchlist' button (not 'Follow') 2026-06-17 20:42:30 -07:00
video-settings.js video enrichment: add DeArrow (crowd-sourced YouTube titles) — full parity 2026-06-18 23:09:02 -07:00
video-side.css video enrichment: add DeArrow (crowd-sourced YouTube titles) — full parity 2026-06-18 23:09:02 -07:00
video-side.js YouTube playlists on the watchlist — frontend (search, detail, watchlist) 2026-06-17 20:33:31 -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 Watchlist cards: show the channel/playlist video count, not '0 videos' 2026-06-17 21:13:33 -07:00
video-wishlist.js YouTube: proxy channel/video images so avatars + thumbnails always load 2026-06-17 08:40:33 -07:00
video-worker-orbs.js Video enrichment: add the 4 new workers to the dashboard header 2026-06-18 08:04:53 -07:00
video-youtube.js Watchlist cards: show the channel/playlist video count, not '0 videos' 2026-06-17 21:13:33 -07:00