Three adjustments to the panel layout:
- the timer status icons go back to overlaying the stage, which returns the
row they were costing. They sit in the same chrome layer as the pop-out
buttons, so the blackout no longer hides them
- the screen state buttons group with the preview they act on, and the gap
before the message inputs widens to separate the two
- the stage drops its fixed aspect ratio and fills the panel width, which
also removes the slack a tall panel used to leave around it
Without a 16:9 frame the width derived font size can overflow a short, wide
stage, so the timer is now capped by container height at the ratio the
estimate assumes. In the pip window, which has no ancestor query container,
both terms resolve against the viewport, so a 16:9 window is unchanged and a
wider one stops clipping its digits.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011CHxSQ6nWHuyar8feieRra
Three things measured wrong once the preview showed a real render:
- the pip timer kept leading zeros where the timer view drops them by
default, so the preview read 00:59:07 against the stage's 59:07 - and its
own secondary line already dropped them
- the extracted /messagecontrol route has no flex parent for the panel to
grow into, so the stage collapsed to its minimum instead of filling the
window
- a tall panel caps the stage at its own width, and the slack it leaves now
sits either side of the stage rather than all below it
Covers the screen state controls in the e2e spec: the secondary source
select puts the typed text on the stage, blackout reaches the timer view,
and clear screen resets the state while keeping the text.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011CHxSQ6nWHuyar8feieRra
The preview showed the word "Timer" where the timer goes, so it could not
tell an operator what the audience will actually see. It now embeds the same
component the picture-in-picture window uses.
Making PipTimer embeddable also fixes the pop-out window, which rendered a
running timer while the stage was blacked out and did not blink with the
stage. The timer font size, the message padding and the overtime outline move
from viewport to container units: inside the preview they resolve against the
stage frame, and in the pip window - which has no ancestor query container -
they resolve against its viewport exactly as before.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011CHxSQ6nWHuyar8feieRra