This document is based on live inspections performed on:
- 2026-02-09: audience display
http://172.21.32.1/event/111/display/, adminhttp://172.21.32.1/event/111/control/#video - 2026-02-10: audience display
http://172.16.15.216/event/111/display/, admin match controlhttp://172.16.15.216/event/111/control/
- On
172.21.32.1: opening/event/111/control/#videoredirected to/login/and could not be inspected without credentials/QR. - On
172.16.15.216:/event/111/control/loaded directly and match control could be exercised. - On
172.16.15.216,Show Match+Start Matchwere initially disabled until clickingRandomize Field, after which both actions became enabled.
- Closing the settings modal shows a full-screen “Decode” background with minimal chrome and a small gear button to reopen settings.
- Screenshot captured:
docs/assets/event-111-display-2026-02-09.png
While the admin /control page was not accessible (login required), the /display page was observed in a match-preview layout consistent with what “Show Match” typically does:
- Field + timer header:
Field 2and timer initialized at8:00(not counting down). - Match label:
TEST Qualification 4 of 5 - Team numbers shown (as rendered on the display):
2 1 4 3(likely Red:2, 1vs Blue:4, 3) - Score line:
Red 0 Blue 0 - Score breakdown lines were present in the accessibility snapshot (values were
0 0 /36on both rows during this observation).
Evidence captured:
- Screenshots:
docs/assets/event-111-display-timer-2026-02-09-2347.pngdocs/assets/event-111-display-timer-2026-02-09-2350.png
- Accessibility snapshot excerpt (compact): shows the text lines above.
- After closing the settings modal, the display showed an “Up Next” layout (not the full match timer view yet).
- Screenshot captured:
docs/assets/event-111-display-216-idle-2026-02-10.png
Changing Bind to Field in Display Settings materially changes what the audience display renders:
- Bound to
Field 1: the match-preview/timer view was replaced by a minimal status line:Next match expected start: 2:41+- Screenshot:
docs/assets/event-111-display-bound-field1-2026-02-09.png
- Screenshot:
- Bound to
Field 2: the match-preview/timer view appeared (Field 2 + Qualification 4 of 5, etc.)- Screenshot:
docs/assets/event-111-display-bound-field2-2026-02-09.png
- Screenshot:
The display opens with a “Display Options” / “Display Settings” modal. Verified controls include:
- Display identity:
Display Name(text input)Display Type(Audience, Field, Pit, Sponsor, Championship Bar)Bind to Field((All), Field 1, Field 2)
- Timer / overlay:
Use field-style timer (with a big timer in the middle of the screen)(radio)Use Overlay(radio)Overlay SettingsincludesPick Color
- Format options:
Alliance Selection Display: Classic, HybridAwards Display: Classic, Overlay
- Advanced settings:
Scoring Bar Location: Bottom, TopAlliance Orientation: Standard (Red on Left), Flipped (Red on Right)Rankings Font Size: Larger, Smaller (for screens closer to the viewers)MuteMute Results
- Actions:
Fullscreen,Recenter,Cancel,Save, and Close (×)
Screenshot captured:
docs/assets/event-111-display-settings-2026-02-09.png
- The page can show an “Audio Warning” stating the display is set to play sounds but cannot yet, prompting a click-to-unmute flow (autoplay restriction).
- The settings modal also exposes an “Audio Testing” section with match cue labels (e.g., MATCH start / AUTO end / TELEOP start / 30-second Warning / MATCH abort) and a
Playcontrol.
The page defines window.displayParams with event and stream endpoints (values as observed):
eventCode:"111"eventName:"TEST"fieldCount:2style:"default"liveDisabled:falseliveUpdateUrl:"/stream/display/command/?code=111"inspectionStatusUpdateUrl:"/stream/inspection/?code=111"sponsorsUrl:"/event/111/dashboard/sponsorsjson/get/"showMeetRankings:truematchTiming(ISO-8601 durations):auto:"PT30S"transition:"PT8S"teleop:"PT2M"endgameWarning:"PT20S"total:"PT2M38S"
If you want RMS /display to stay in sync the same way (single authoritative start, clients count down consistently), the pattern is:
- Server sends one authoritative snapshot on
start/pause/resetand publishestimer.updatedover the stage SSE stream. - Clients compute a stable server clock offset from
serverNowMsand tick down locally once per second. - On every
timer.updated, clients refresh the base state and offset.
In this repo, that wiring lives in:
- Server timer source of truth:
apps/server/src/services/match-timer.ts - Server timer routes + publish:
apps/server/src/routes/tournaments/matches.routes.ts - Server SSE stream:
apps/server/src/routes/tournaments/events.routes.ts - Client timer sync hook:
apps/web/src/hooks/use-match-timer.ts - Audience display renders the scoreboard (which uses
useMatchTimer):apps/web/src/components/live/AudienceDisplayRenderer.tsx
After enabling match control (via Randomize Field) and clicking Show Match, the audience display switched into the match view with the full timer:
- Screenshot:
docs/assets/event-111-display-216-after-show-match-2026-02-10.png
Clicking Start Match caused the timer to count down on the audience display:
- T+0s:
docs/assets/event-111-display-216-start-t0-2026-02-10.png - T+3s:
docs/assets/event-111-display-216-start-t3-2026-02-10.png - T+6s:
docs/assets/event-111-display-216-start-t6-2026-02-10.png - T+30s:
docs/assets/event-111-display-216-start-t30-2026-02-10.png - T+60s:
docs/assets/event-111-display-216-start-t60-2026-02-10.png - End:
docs/assets/event-111-display-216-end-2026-02-10.png
Notes:
- The timer line included a phase/status glyph next to the time; the glyph changed between early and later timestamps (likely reflecting phase transitions such as AUTO -> TELEOP).
- Loading the match from the schedule showed a “Load” dialog:
docs/assets/event-111-control-216-play-dialog-2026-02-10.png
Based on the verified audience-side configuration:
- The audience display listens for mode/content changes via
window.displayParams.liveUpdateUrl(/stream/display/command/?code=111). - The admin
control/#videopage likely publishes commands that drive display mode changes over that same event-scoped command stream.
This mapping (slideshow/sponsors/video switch/etc.) is not fully mapped in this document (only Show Match + Start Match were exercised on 172.16.15.216).
To fully document all display modes, capture:
Video Switchtab actions (Sponsors, Slideshow, Message, Blank, etc.) and the resulting/displayvisuals.- Additional timer phase transition screenshots near the configured
matchTimingboundaries (AUTO end, transition, endgame warning).