ProdCom 1.3.0: one connection to ProdCom, shared by every dashboard

The module used to proxy each browser's transcript stream to ProdCom one
to one, so N screens meant N upstream connections and N history reads.
It now follows ProdCom once: it keeps the channel list, the groups and
the last 300 entries, and gives every browser a snapshot on connect
(`state`) plus each changed entry as it happens (`entry`), with `clear`
and `status` frames as the link changes. Reconnects back off from 2 s to
15 s, re-read the lists and history, and re-send the snapshot. The tile
no longer loads anything itself; the admin readout says how many channels
and entries the server holds. The /prodcom/* proxy is gone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Waters Church
2026-09-15 12:43:08 -04:00
co-authored by Claude Fable 5.1
parent ec178e9ccd
commit 96eff1a5c5
4 changed files with 340 additions and 172 deletions
+4 -3
View File
@@ -15,9 +15,10 @@ touching the shell (see [docs/MODULE-GUIDE.md](docs/MODULE-GUIDE.md)).
2. Discovers modules in `modules/` and serves each one's client at
`/modules/<id>/`.
3. Mounts each enabled module's server routes under `/api/modules/<id>/` —
that's where module servers proxy ProdCom, poll ProPresenter, and stream
live updates over SSE, so browsers never talk to production gear
directly (no CORS, and API keys never leave the server).
that's where module servers follow ProdCom, poll ProPresenter, and stream
live updates over SSE — one upstream connection per module, however many
dashboards are open — so browsers never talk to production gear directly
(no CORS, and API keys never leave the server).
4. Stores server-wide module config and named layouts in a per-machine data
directory outside the app folder, so updating ProdDash never loses them.