Tier 3Roku. A stock Video node under an OSD put.io builds from generated tokens. Every number here is read from the channel source, not designed here.DesignTokens.brs · scrim · text · textMuted · border · panelBorder · primary
Video playercomponents/screens/VideoPlayerput.io owns this
The OSD is a Group of translated nodes over a full-screen Video: raw filename, progress, and up to three track controls on the right. Transport lives on the remote's play, rewind and fast-forward keys; the on-screen transport buttons ship hidden. The OSD hides 3 seconds after input while playing.
The.Wire.S03E04.Back.Burners.1080p.BluRay.x264-DEMAND.mkv
21:04
58:12
Playing, progress focusedThe default focus. Track thickens to 12 on panelBorder; the 34px thumb shows
The.Wire.S03E04.Back.Burners.1080p.BluRay.x264-DEMAND.mkv
21:04
58:12
Subtitles
Paused, Subtitles focusedUp from progress reaches the controls. A pause glyph follows the position; the focus label sits at [-86,-44]
BufferingFull-screen scrim plus a 160x160 LoadingIndicator with a 58px image
bottomShade[0,800], 1920x280, flat scrim
title[96,900], w1360, h1 45 text, raw filename
trackSummarydeclared at [96,923], always empty
progressgroup at [96,960]; track 1728 wide, 8 at y25 on border, 12 at y23 on panelBorder when focused; fill primary
timeposition and duration w180, small 33 textMuted; duration at [1548,52], right-aligned
controlsgroup at [0,870]; audio (2+ audio tracks), subtitles (any), speed (if supported), right-aligned to x1824, 24 apart
button focusplayer-control-focus.png, a grey disc, 96x96 at [-4,-4]
glyph56x56 at [16,16], white, untinted. Captions switch to the fill glyph while a subtitle is on
focus labelLanguage · Subtitles · Speed, small 33 textMuted
buffering1920x1080 scrim + LoadingIndicator 160x160, image 58
Do not. Put a poster or a parsed title in the OSD, or draw transport buttons the remote already has. Right-hand controls appear only when they have something to choose.
Contract: platforms/roku/DESIGN.md