CastMan — host console

Slim Phase 1: session control + upload progress. The full dashboard (silence alarm, D4 verification) is deliberately not built yet.

Session

If you are tunnelling, replace the host part with your trycloudflare.com address — or just open this page through the tunnel and the link will be right automatically.

Participants

WhoChunksUploadedLast chunk DeviceTrack
nobody has joined yet

Refreshes every 3 s. A participant whose last chunk is older than ~2.5 min is flagged — chunks are only cut every 2 min, so that is the earliest honest warning.

Shared clap anchor

Everyone must be recording first. This fires one countdown on every recorder at the same instant — that shared clap is what clapsync.py aligns the tracks on. Anyone not recording yet is told they missed it rather than clapping at the wrong time.

—

End of session

Each guest's page assembles their own track when they press stop. This rebuilds every track from whatever chunks are on disk — safe to click any number of times, and the fix if someone's browser died before stopping.

—

Then, in WSL:
python3 tools/clapsync.py sessions/