Add a public common-board display and publish it to Jitsi #20

Open
opened 2026-08-27 20:23:45 +00:00 by Jesse.Markowitz · 1 comment
Owner

Add a public common-board display and publish it to Jitsi

Create one shared Station Master display showing the game’s public information and publish it into the game’s Jitsi
meeting as a read-only “Station Master Table” participant. Human and bot actions should appear on the same common
screen. Bots do not need their own Jitsi participants.

Work

  1. Create a public table view

    Project the Division, all districts, trains, facilities, public piles, timetable, scores, clock, phase, current
    actor, collisions, outcome, and narration into a seatless view.

    Important: never include hands, newly drawn cards, menus, legal actions, seed, RNG state, deck order, session
    tokens, or raw GameState. Add strong redaction tests.

  2. Provide a read-only live stream

    Let an authorized display receive the initial public view and subsequent updates without occupying a seat or
    gaining intent rights. It should reconnect safely and use a separate display credential rather than a player or
    admin token.

  3. Build the common-board page

    Create a read-only, 16:9 display suitable for a TV, OBS browser source, or manual screen sharing. Keep the
    Division, clock, actor, standings, and timetable visible; focus the detailed area on the district where the latest
    action occurred.

  4. Show individual bot actions

    Bot turns currently execute completely before clients receive the resulting state. Preserve an ordered presentation
    step for each bot action so the display can show what happened instead of jumping directly to the final position.

    Important: do not slow the authoritative game. Execute immediately and let the display animate the queued
    presentation steps.

  5. Integrate the proven Jitsi communications path

    Move or expose the reusable communications contract from the Jitsi harness without bringing harness UI, local-
    control scaffolding, or raw Jitsi objects into game code.

  6. Run an automated table participant

    Use a browser-hosted process to join Jitsi as something like “Station Master Table” and publish the common board as
    a desktop video track. The Node game server should remain the authority, but the media publisher needs browser
    canvas, MediaStream, and WebRTC APIs.

    Use one Jitsi participant per game, not one per player or bot. Publish no microphone and request no screen-
    selection permission; use the harness’s generated-canvas publication path.

  7. Handle deployment and lifecycle

    Decide how the browser worker is hosted, how it is admitted to the selected Jitsi deployment, and how credentials
    are stored. Start, reconnect, republish, leave, and release resources cleanly with the game lifecycle.

    Important: unattended lobby admission may require authenticated/JWT access or deployment-specific configuration.
    The harness has also observed occasional blank initial visual publication, so retain first-frame diagnostics and an
    appropriate recovery path.

Done when

  • Everyone in the Jitsi meeting can see one common Station Master board.
  • Human and bot actions both appear there in understandable order.
  • No private game information is exposed.
  • The display occupies no game seat and cannot submit actions.
  • Jitsi reconnect and game shutdown clean up correctly.
  • The common-board page remains independently usable on a TV, in OBS, or through manual screen sharing even when
    automated Jitsi publication is disabled.
## Add a public common-board display and publish it to Jitsi Create one shared Station Master display showing the game’s public information and publish it into the game’s Jitsi meeting as a read-only “Station Master Table” participant. Human and bot actions should appear on the same common screen. Bots do not need their own Jitsi participants. ### Work 1. Create a public table view Project the Division, all districts, trains, facilities, public piles, timetable, scores, clock, phase, current actor, collisions, outcome, and narration into a seatless view. Important: never include hands, newly drawn cards, menus, legal actions, seed, RNG state, deck order, session tokens, or raw GameState. Add strong redaction tests. 2. Provide a read-only live stream Let an authorized display receive the initial public view and subsequent updates without occupying a seat or gaining intent rights. It should reconnect safely and use a separate display credential rather than a player or admin token. 3. Build the common-board page Create a read-only, 16:9 display suitable for a TV, OBS browser source, or manual screen sharing. Keep the Division, clock, actor, standings, and timetable visible; focus the detailed area on the district where the latest action occurred. 4. Show individual bot actions Bot turns currently execute completely before clients receive the resulting state. Preserve an ordered presentation step for each bot action so the display can show what happened instead of jumping directly to the final position. Important: do not slow the authoritative game. Execute immediately and let the display animate the queued presentation steps. 5. Integrate the proven Jitsi communications path Move or expose the reusable communications contract from the Jitsi harness without bringing harness UI, local- control scaffolding, or raw Jitsi objects into game code. 6. Run an automated table participant Use a browser-hosted process to join Jitsi as something like “Station Master Table” and publish the common board as a desktop video track. The Node game server should remain the authority, but the media publisher needs browser canvas, MediaStream, and WebRTC APIs. Use one Jitsi participant per game, not one per player or bot. Publish no microphone and request no screen- selection permission; use the harness’s generated-canvas publication path. 7. Handle deployment and lifecycle Decide how the browser worker is hosted, how it is admitted to the selected Jitsi deployment, and how credentials are stored. Start, reconnect, republish, leave, and release resources cleanly with the game lifecycle. Important: unattended lobby admission may require authenticated/JWT access or deployment-specific configuration. The harness has also observed occasional blank initial visual publication, so retain first-frame diagnostics and an appropriate recovery path. ### Done when - Everyone in the Jitsi meeting can see one common Station Master board. - Human and bot actions both appear there in understandable order. - No private game information is exposed. - The display occupies no game seat and cannot submit actions. - Jitsi reconnect and game shutdown clean up correctly. - The common-board page remains independently usable on a TV, in OBS, or through manual screen sharing even when automated Jitsi publication is disabled.
Author
Owner

AI created Plan to help when ready to implement.

AI created Plan to help when ready to implement.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Jesse.Markowitz/station-master#20