Commit graph

  • ef3d4cfdb4 YouTube playlists on the watchlist — frontend (search, detail, watchlist) BoulderBadgeDad 2026-06-17 20:33:31 -0700
  • 28035f0d70 YouTube playlists on the watchlist — backend (resolve, follow, detail) BoulderBadgeDad 2026-06-17 20:21:44 -0700
  • eb8f803c36 Channel rail: sharp season posters (maxres thumbnail, was a cropped hqdefault) BoulderBadgeDad 2026-06-17 19:17:29 -0700
  • cb5ae93f76 Channel page: restore the season view toggle (rail posters etc.) broken by search/sort BoulderBadgeDad 2026-06-17 19:11:30 -0700
  • 9c3d1a5709 Channel page: search + sort within the channel (restores the lost browse controls) BoulderBadgeDad 2026-06-17 18:45:40 -0700
  • c7b5a93290 Channel videos: duration badge + view count on every card (TV-parity) BoulderBadgeDad 2026-06-17 18:36:47 -0700
  • 66f3f97460 Channel videos: POST + one page per request (kill the giant slow-request log spam) BoulderBadgeDad 2026-06-17 18:19:32 -0700
  • 267f11c848 Remember each channel: cache the video catalog + metadata (instant re-open) BoulderBadgeDad 2026-06-17 18:08:04 -0700
  • d91693ba53 Channel page: stream the FULL video catalog in batches (no more 90 cap) BoulderBadgeDad 2026-06-17 17:42:21 -0700
  • 5012f44cfa Video: deep-link every sidebar page (URL parity with the music side) BoulderBadgeDad 2026-06-17 16:52:58 -0700
  • 4c16448ab3 Calendar 'next up' hero: smoother panel motion + collapsed panels rest at 25% BoulderBadgeDad 2026-06-17 16:32:31 -0700
  • cf03c28831 Discover: taller hero slider (420->520 desktop, 340->420 tablet) BoulderBadgeDad 2026-06-17 16:26:17 -0700
  • a3adf5e63c Video Manage-Workers modal: realign to the music modal's exact design BoulderBadgeDad 2026-06-17 14:18:43 -0700
  • 21ed97ff26 YouTube enrichment: legacy channels auto-upgrade to InnerTube (backwards compat) BoulderBadgeDad 2026-06-17 13:51:10 -0700
  • 91bd895e52 YouTube channels: follow = watchlist only (clean toast) + drop the misleading '90 videos' BoulderBadgeDad 2026-06-17 13:37:15 -0700
  • c00df179ba Channel page: fix re-poll never refreshing when recent videos collapse to one year BoulderBadgeDad 2026-06-17 13:22:23 -0700
  • b627f9f411 Channel page: 'fetching dates' indicator during the wait + watchlist toggle no longer reloads BoulderBadgeDad 2026-06-17 13:11:17 -0700
  • b5586d3f28 YouTube: enrich dates on ANY channel page open (not just followed) BoulderBadgeDad 2026-06-17 13:05:25 -0700
  • 59dafff96a YouTube dates: custom InnerTube parser as the primary bulk source (validated live) BoulderBadgeDad 2026-06-17 12:52:20 -0700
  • a83df05ce2 YouTube dates: proxy is opt-in (public instances are dead); yt-dlp is the default BoulderBadgeDad 2026-06-17 12:30:21 -0700
  • 964b9bfdd7 YouTube enricher: align INFO output fully with the other video workers BoulderBadgeDad 2026-06-17 12:23:13 -0700
  • 220f2ad4de YouTube enricher: consistent log output with the other video workers BoulderBadgeDad 2026-06-17 12:19:55 -0700
  • 722b80001e YouTube enricher: parallelize per-video date fallback (~3x faster) BoulderBadgeDad 2026-06-17 12:18:29 -0700
  • 3235b196b7 YouTube enricher: observable + fast-fail proxy + live channel re-poll BoulderBadgeDad 2026-06-17 12:06:54 -0700
  • 3a24fc24b1 YouTube worker: push status over the socket like the others (stop polling) BoulderBadgeDad 2026-06-17 11:59:39 -0700
  • 9c3facfe7e Enricher: don't spawn the background daemon under pytest (test isolation) BoulderBadgeDad 2026-06-17 11:44:21 -0700
  • 217486b3c7 Fix test_channel_enrichment_tracking for coverage-aware gate (thin run retries in 15m; good run honours window) BoulderBadgeDad 2026-06-17 11:38:52 -0700
  • 581735ac7d YouTube enricher: coverage-aware retry + show in Manage Workers modal BoulderBadgeDad 2026-06-17 11:37:26 -0700
  • 9524a40615 YouTube enricher: reliable full coverage without a proxy + sweep existing follows BoulderBadgeDad 2026-06-17 11:23:34 -0700
  • b6d8f07516 Dashboard: YouTube date enricher as a 4th worker orb + Follow→Watchlist consistency BoulderBadgeDad 2026-06-17 11:05:59 -0700
  • 30dc587ebf Background date enricher for followed YouTube channels (no key) BoulderBadgeDad 2026-06-17 10:52:24 -0700
  • ec5af17de7 Channel year-seasons: RSS dates + persistent date cache (real years that fill in) BoulderBadgeDad 2026-06-17 10:30:54 -0700
  • ece4fbc792 Channel detail: fix episode-row layout + graceful seasons BoulderBadgeDad 2026-06-17 10:07:51 -0700
  • 3d67f51c29 Search avatars: proxy with a UA + graceful initials fallback BoulderBadgeDad 2026-06-17 09:57:42 -0700
  • 0ff0d07c22 Search UX: no 'No results' flash before YouTube loads + avatar fallback BoulderBadgeDad 2026-06-17 09:42:02 -0700
  • 284acc8591 Merge YouTube channels into the TV-show detail page BoulderBadgeDad 2026-06-17 09:17:41 -0700
  • 9084f1b7bb Search: include YouTube channel results alongside TMDB BoulderBadgeDad 2026-06-17 09:06:41 -0700
  • 0456fa893f Channel page (UI): stats+tags, sort/filter/load-more, inline video detail, playlists BoulderBadgeDad 2026-06-17 08:54:37 -0700
  • 87750e2464 Channel page (backend): channel tags/views + playlists + playlist videos BoulderBadgeDad 2026-06-17 08:51:53 -0700
  • bbba2c8225 Fix: clicking a watchlist channel opened the dashboard, not its detail page BoulderBadgeDad 2026-06-17 08:43:43 -0700
  • 9348166bb5 YouTube: proxy channel/video images so avatars + thumbnails always load BoulderBadgeDad 2026-06-17 08:40:33 -0700
  • b3fd6037bb YouTube: fix missing channel poster on the wishlist orb BoulderBadgeDad 2026-06-17 08:32:47 -0700
  • 591138a8a1 Wishlist: clear the info bar when an orb collapses BoulderBadgeDad 2026-06-17 08:24:32 -0700
  • 22adc3bc55 YouTube: pull FULL per-video metadata (lazy) for the wishlist info bar BoulderBadgeDad 2026-06-17 08:22:45 -0700
  • 5ab3ec90a8 YouTube next-level (UI): channel detail page + wishlist YouTube tab = TV nebula BoulderBadgeDad 2026-06-17 01:20:13 -0700
  • 8941da8b60 YouTube next-level (backend): year=season nebula shape + channel detail API BoulderBadgeDad 2026-06-17 01:10:53 -0700
  • f4f40c161b Fix: video DB fails to initialize on upgrade (no such column: source_id) BoulderBadgeDad 2026-06-17 00:56:06 -0700
  • b440f2bcdc YouTube channels (4/4): UI — paste-to-follow, channel feeds, watchlist cards BoulderBadgeDad 2026-06-17 00:47:24 -0700
  • d30149db14 YouTube channels (3/4): API endpoints BoulderBadgeDad 2026-06-17 00:38:11 -0700
  • e952ea5f66 YouTube channels (2/4): schema bridge + DB methods BoulderBadgeDad 2026-06-17 00:34:28 -0700
  • 68383a16b3 YouTube channels (1/4): channel resolver in core/video/youtube.py BoulderBadgeDad 2026-06-17 00:25:34 -0700
  • b7cafb8b72 Calendar: lock multi-hero height so hover doesn't change the DOM height BoulderBadgeDad 2026-06-17 00:06:32 -0700
  • 6d63016566 Calendar: keep hero side panels >=10% wide + make Compact the default view BoulderBadgeDad 2026-06-17 00:03:49 -0700
  • 987cee7cb3 Calendar: view switcher with a Compact (art-hidden) view BoulderBadgeDad 2026-06-17 00:00:28 -0700
  • 7c1644384d Calendar: time-aware 'Next up' (up to 3, diagonal panels) + auto-scroll to now BoulderBadgeDad 2026-06-16 23:57:14 -0700
  • f383c82beb Wishlist TV: season as a left poster panel, episodes flow to its right BoulderBadgeDad 2026-06-16 23:46:03 -0700
  • ce84e715c3 Wishlist TV: flank the poster (synopsis | poster | cast) + graceful empty states BoulderBadgeDad 2026-06-16 23:40:27 -0700
  • 817de567ed Wishlist TV: episode cast = guest stars + show regulars (no longer empty) BoulderBadgeDad 2026-06-16 19:16:51 -0700
  • efcaea314c Wishlist TV: fix episode cast 404 (season number was undefined in URL) BoulderBadgeDad 2026-06-16 19:11:40 -0700
  • 7ef794fe74 Wishlist TV: episodes grouped under clickable season headers; show/season -> show page BoulderBadgeDad 2026-06-16 19:07:46 -0700
  • 11cc9aa789 Wishlist TV: episode-select drives a contextual info bar + explicit View-show button BoulderBadgeDad 2026-06-16 18:57:37 -0700
  • 853dbcf40f Wishlist TV: show synopsis + clickable cast bubbles in the expanded panel BoulderBadgeDad 2026-06-16 18:36:05 -0700
  • e8a0e1256b Wishlist: episode synopsis + clickable cards + FIFO/newest sort BoulderBadgeDad 2026-06-16 18:21:26 -0700
  • 4d62df5c33 Wishlist TV: roomier episode cards + full-width episode area + polish BoulderBadgeDad 2026-06-16 18:09:05 -0700
  • e5cd5cf08c Wishlist: real season posters (not the show poster) + extend backfill BoulderBadgeDad 2026-06-16 17:42:12 -0700
  • 2985514627 Wishlist: backfill episode stills for rows added before still-capture BoulderBadgeDad 2026-06-16 17:33:59 -0700
  • f7bd15d019 Wishlist TV: #4 progress bar + episode stills + square video bubbles BoulderBadgeDad 2026-06-16 17:27:16 -0700
  • 599f36fdf3 Wishlist TV nebula: cinematic expand + season tags + rich tracks + sort BoulderBadgeDad 2026-06-16 17:16:59 -0700
  • d90ae493dd Wishlist TV: adopt the music 'Nebula' (show=orb, season=album, episode=track) BoulderBadgeDad 2026-06-16 17:05:51 -0700
  • 1b456d548a Wishlist TV: filmstrip reels (replace the lame collapsible tree) BoulderBadgeDad 2026-06-16 16:54:19 -0700
  • bae8060c09 Calendar: 'Add missing to wishlist' catch-up button BoulderBadgeDad 2026-06-16 16:33:48 -0700
  • d3c875919f Wishlist page: header identical to the watchlist (kill the harsh glow) BoulderBadgeDad 2026-06-16 16:23:21 -0700
  • 772703464b Wishlist page: match the watchlist container (full-width + 40px gutters) BoulderBadgeDad 2026-06-16 16:18:17 -0700
  • bbd081c44b Video get-modal: wire 'Add to Wishlist' to real writes BoulderBadgeDad 2026-06-16 16:14:19 -0700
  • 261416fede Video wishlist: the page (Movies grid + grouped TV tree) BoulderBadgeDad 2026-06-16 16:11:45 -0700
  • 6d3a59c8dc Video wishlist: API + dashboard count BoulderBadgeDad 2026-06-16 16:07:28 -0700
  • 110f23f555 Video wishlist: schema + DB layer (movies + episodes) BoulderBadgeDad 2026-06-16 16:03:25 -0700
  • 246c650db4 Discover: fix grid pagination + session cache + responsive pass BoulderBadgeDad 2026-06-16 15:44:36 -0700
  • 80d504f94d Discover: meaningful filter colors + drop the asymmetric edge-fade BoulderBadgeDad 2026-06-16 15:26:12 -0700
  • b316d283f7 Discover: fix filter buttons rendering as bare text BoulderBadgeDad 2026-06-16 15:16:48 -0700
  • a1b9f8a827 Discover: restyle filter controls to the music album-detail button vibe BoulderBadgeDad 2026-06-16 15:11:20 -0700
  • 2b3ca12310 Discover: streaming-provider filter + infinite scroll + a11y polish BoulderBadgeDad 2026-06-16 14:55:13 -0700
  • a9ec025706 Discover: 'More like…' rails + in-app hero trailer BoulderBadgeDad 2026-06-16 14:44:44 -0700
  • 5aa792d399 Discover: sliding segmented pills + chip polish + no-TMDB state BoulderBadgeDad 2026-06-16 14:21:59 -0700
  • 8043db0ad4 Discover: redesigned Browse panel + more data per rail BoulderBadgeDad 2026-06-16 14:13:27 -0700
  • 5c9b43a175 Discover v2: per-category pagination, personalization, hide-owned + perf BoulderBadgeDad 2026-06-16 14:02:44 -0700
  • 97a2023139 Video: prefetch first season in get-modal + seam tests for discover BoulderBadgeDad 2026-06-16 13:44:44 -0700
  • a8ebc9b8f7 Video Discover page: trending hero + lazy genre/decade rails + filter grid BoulderBadgeDad 2026-06-16 13:35:31 -0700
  • 4b7a915d39 Video get-modal: lazy-load episodes for un-owned (tmdb) shows BoulderBadgeDad 2026-06-16 12:57:42 -0700
  • 0071358125 Video get-modal: poster + ratings bar + owned-movie handling + next-up BoulderBadgeDad 2026-06-16 12:46:07 -0700
  • d722224b26 Video get-modal: use the standard SoulSync buttons (discog-submit/cancel) BoulderBadgeDad 2026-06-16 12:19:21 -0700
  • 02e3b9d2e4 Video get-modal: premium vibe pass — per-title hue glows + motion BoulderBadgeDad 2026-06-16 12:15:18 -0700
  • 13d44f3ba0 Remove download button and logic from video modal BoulderBadgeDad 2026-06-16 12:11:05 -0700
  • 9a5d187c0d Video get-modal: fix owned-season dead-end under 'Missing only' BoulderBadgeDad 2026-06-16 11:55:59 -0700
  • 419b939999 Video get-modal: owned episodes re-downloadable + 'Add to watchlist' offer BoulderBadgeDad 2026-06-16 11:42:57 -0700
  • e24e9bfe1e Video get-modal: TV episode selector (evolved Download Discography) + Download btn BoulderBadgeDad 2026-06-16 11:30:58 -0700
  • 35957b426d Video: airing shows get BOTH the watchlist eye AND the get/download button BoulderBadgeDad 2026-06-16 11:07:53 -0700
  • 638269d870 Video watchlist: rename the default sort 'Following' -> 'Default' BoulderBadgeDad 2026-06-16 11:00:00 -0700
  • 21163239da Video detail page: follow control uses the new curated watchlist BoulderBadgeDad 2026-06-16 10:44:59 -0700
  • 240e386871 Video: wire the eye/get button onto every card surface BoulderBadgeDad 2026-06-16 10:41:07 -0700