- Wide dock overflow: chips and the side settings panel now need 960px of
player width (ControlsLayout.roomy). Between 720px and 960px the dock
stays wide but folds the chips into `tune` with state dots and opens
settings as the bottom sheet. The control row's side columns are
minmax(min-content, 1fr), so the transport shifts instead of the actions
overlapping it or leaving the player; chip labels cap at 132px.
- Up next: no countdown once playback has ended (autoplay off schedules
no switch).
- Up next card: a still that fails to load falls back to the label tile;
a new URL gets its own attempt.
- Timeline segments are positioned absolutely at their time positions,
so drawn boundaries match the linear seek input and hover label.
- Type fixes found by a strict type-check: the gap-fill list type, and a
field initializer that read a constructor parameter.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Phase 2 of the "Hybrid" player controls redesign. Audio, subtitles (tracks,
file loading, delay, size, color), quality, speed and aspect ratio move
from five popovers into one surface behind a `tune` button:
- wide dock: subtitle and speed value chips (cyan = on, violet = changed)
open the panel focused on their group; right-click / long-press on the
subtitle chip toggles subtitles; the panel slides in beside the video
and the dock, title and corner shift left; chips and PiP/record fold away
- compact dock: no chips, state dots on `tune`, and a bottom sheet that
replaces the dock while open; a tap on the video dismisses it
- a choice applies immediately and keeps the panel open; Escape, the close
button, `tune`, the video surface and outside pointerdown close it
- ControlsMenuState now knows volume / settings / stats plus the focus
group; ControlsSettings owns availability, on/modified state and the
transitions; app-player-settings-panel renders the panel and sheet
- SETTINGS / CLOSE_SETTINGS strings in every language; web E2E for the
wide panel and the compact sheet; contract doc and release note
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>