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
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.
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.
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.
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.
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.
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.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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
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.
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.
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.
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.
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.
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.
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
automated Jitsi publication is disabled.
AI created Plan to help when ready to implement.