From 81f2127e711e82cf4e532217e0a61167d00feb16 Mon Sep 17 00:00:00 2001 From: BoulderBadgeDad Date: Sun, 14 Jun 2026 16:38:24 -0700 Subject: [PATCH] video: redesign TV-detail as a Netflix billboard (break from the music layout) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per feedback, this drops the Spotify/artist-page parallel entirely and goes Netflix: - Full-bleed billboard (edge-to-edge — breaks out of the host's 40px padding), big backdrop with Ken-Burns drift + layered scrims, oversized title, a Netflix meta row (owned% · year · rating · seasons · runtime · status), 3-line synopsis, and action buttons (Watchlist / Get Missing / external links). - Per-show accent colour sampled from the poster (canvas) → drives the primary button glow, status, episode hover — the SoulSync 'vibe', per title. - Custom season dropdown + rich episode rows (index, 16:9 thumb w/ hover play, title · runtime, 2-line synopsis, Owned/Missing) that fade/stagger in on season change. - Backdrop falls back to a cover-cropped poster; episode stills + genres + cast arrive with the 'capture everything' phase. Watchlist/Get-Missing are visual pending their endpoints. Shell tests updated. --- tests/test_video_side_shell.py | 6 +- webui/index.html | 41 ++--- webui/static/video/video-detail.js | 277 ++++++++++++++--------------- webui/static/video/video-side.css | 240 +++++++++++++------------ 4 files changed, 286 insertions(+), 278 deletions(-) diff --git a/tests/test_video_side_shell.py b/tests/test_video_side_shell.py index 21070534..67320f3a 100644 --- a/tests/test_video_side_shell.py +++ b/tests/test_video_side_shell.py @@ -330,9 +330,9 @@ def test_video_worker_orbs_referenced_and_isolated(): def test_show_detail_subpage_present(): block = _block( _INDEX, r'
") - # Hero + season tree containers the renderer fills. - for hook in ('data-vd-backdrop', 'data-vd-poster', 'data-vd-title', 'data-vd-badges', - 'data-vd-overview', 'data-vd-stats', 'data-vd-seasons'): + # Netflix billboard + episodes containers the renderer fills. + for hook in ('data-vd-backdrop', 'data-vd-poster', 'data-vd-title', 'data-vd-meta', + 'data-vd-overview', 'data-vd-actions', 'data-vd-season-select', 'data-vd-episodes'): assert hook in block, hook # Back button reuses the shared data-video-goto nav (no inline handler). assert 'data-video-goto="video-library"' in block diff --git a/webui/index.html b/webui/index.html index 5896e6c7..ef0dab84 100644 --- a/webui/index.html +++ b/webui/index.html @@ -816,36 +816,33 @@ Isolated: built by video/video-detail.js, styled by .vd-* in video-side.css. Inspired by the music artist-detail vibe. -->