mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 17:06:15 -08:00
fix(playback): apply themes to player and EPG panels (#1541)
* fix(playback): apply themes to player and EPG panels * test(playback): verify active recording icon theme * fix(epg): keep loading shimmer visible in both themes
This commit is contained in:
1 parent
eb602db5fc
commit
8eda5370eb
17 files changed
+913
-194
No files matched your search
@@ -399,8 +399,8 @@ Rendering size: the helper renders at the **aspect-fit** size of the video
|
||||
(observed `dwidth`/`dheight`) inside the requested viewport and bumps a shm
|
||||
generation when it changes — letterbox bars are never baked into frames,
|
||||
frames stay as small as possible, and the canvas letterboxes with a
|
||||
transparent background (app surface shows at the sides; fullscreen keeps a
|
||||
black backdrop). Snapshots carry `videoWidth`/`videoHeight`.
|
||||
transparent canvas over a black video viewport in both windowed and
|
||||
fullscreen mode. Snapshots carry `videoWidth`/`videoHeight`.
|
||||
`IPTVNATOR_EMBEDDED_MPV_AUDIO_DELAY=<seconds>` passes through to mpv's
|
||||
`audio-delay` for lip-sync tuning until a calibration flow exists.
|
||||
|
||||
|
||||
@@ -79,6 +79,35 @@ as migration debt, not patterns to copy.
|
||||
|
||||
Do not hardcode unrelated accent colors for selected state when these tokens already exist.
|
||||
|
||||
## Player And EPG Theme Boundaries
|
||||
|
||||
The native-view Embedded MPV dock is app chrome: its solid widget background,
|
||||
text, separators, sliders and interaction states resolve app tokens together.
|
||||
Material icon buttons override their component tokens, including disabled
|
||||
icons. The dock must never pair a dark fallback surface with inherited light
|
||||
app text. Loader/stall and transient feedback overlays own a light foreground
|
||||
and dark scrim because they cover video. Video viewports remain black in both
|
||||
themes and fullscreen; frame-copy and built-in shared controls keep their
|
||||
existing light-on-dark overlay palette.
|
||||
|
||||
EPG timeline, list, empty states and programme details use the library-local
|
||||
`libs/ui/epg/src/lib/_epg-theme.scss` palette, based on app surfaces, separators,
|
||||
selection and live accents. Text pairs with the actual surface in both themes;
|
||||
current/playing titles must not force white onto a light selection tint.
|
||||
Past programme text remains readable without reducing opacity on the whole
|
||||
card. List loading shimmer uses translucent primary text stops so placeholders
|
||||
remain visible on either theme’s content surface. Theme changes resolve through
|
||||
CSS on the mounted components immediately.
|
||||
|
||||
Electron E2E measures app-panel foreground/background contrast (including
|
||||
translucency, ancestor opacity and the timeline’s sibling progress fill),
|
||||
surface brightness and control geometry.
|
||||
Shared overlay icons are separately rasterized over a white test frame to
|
||||
include gradient scrims and Material hover/focus layers in their contrast check.
|
||||
Synthetic media is used for visual artifacts. Native-view video is composited
|
||||
outside Chromium screenshots, so playback is also verified from session
|
||||
position; a black screenshot viewport alone is not proof of failed decoding.
|
||||
|
||||
## Selection Pattern
|
||||
|
||||
Apply the same visual recipe to selected list items, active channels, and current EPG items:
|
||||
@@ -492,7 +521,7 @@ When updating IPTVnator UI:
|
||||
Avoid these:
|
||||
|
||||
- introducing a new selected-state color unrelated to the theme tokens
|
||||
- copying the shared EPG's hard-coded dark/blue fallbacks into new surfaces
|
||||
- introducing independent dark-only EPG surface palettes
|
||||
- duplicating channel row markup in portal-specific views
|
||||
- showing placeholder logos behind real logos
|
||||
- making entire panes scroll when only the list should scroll
|
||||
|
||||
Reference in new issue
Block a user