soulsync/webui/static/video
BoulderBadgeDad 314e587094 video enrichment: add Trakt (community audience rating) — full worker parity
First of the new enrichment services, wired to the SAME standard as the rest:
- TraktWorker backfill (core/video/enrichment/backfill.py): looks a title up by its
  IMDb id (?extended=full) and gap-fills the community rating + vote count. Registered
  in build_backfill_workers.
- DB: trakt_rating/trakt_votes/trakt_status/trakt_attempted columns + _BACKFILL /
  _BACKFILL_COLS registration; detail payloads return trakt_rating/votes.
- Connections tab: Trakt service frame (Client ID field + Test button), wired into
  video-settings.js load/save/bindings and the /enrichment/config GET+POST.
- Worker-manager modal + orb: WORKERS registry entry (red ★) + status-poll SERVICES
  list, so it gets the same orb animation + per-service matched/pending/error card.
- Detail page: a 'Trakt 8.2' rating chip alongside IMDb/RT/Metacritic (+ CSS).

5 new tests + 2 fixed-set assertions updated; 249 video tests green, ruff clean.
2026-06-18 22:33:36 -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 Trakt (community audience rating) — full worker parity 2026-06-18 22:33:36 -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 Trakt (community audience rating) — full worker parity 2026-06-18 22:33:36 -07:00
video-enrichment.js video enrichment: add Trakt (community audience rating) — full worker parity 2026-06-18 22:33:36 -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 Trakt (community audience rating) — full worker parity 2026-06-18 22:33:36 -07:00
video-side.css video enrichment: add Trakt (community audience rating) — full worker parity 2026-06-18 22:33:36 -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