zebra-report/web
Russell Ballestrini 9ed1cefcd5
zebra-spaces: SFU bridge + role-change notice banner
Listeners now hear all speakers via a Pion-based audio-only SFU on
proxy.uncloseai.com. Speakers publish to it; listeners subscribe and
get one PC carrying every speaker's track. Mesh remains the
low-latency speaker<->speaker path; SFU is the broadcast fan-out.

Wiring:
- sfuPublish/Unpublish for speaker role transitions
- sfuSubscribe/Unsubscribe for listener role transitions
- onRoleEntered + onRoleChanged + leave hooks
- ontrack on the subscribe PC maps streams[0].id (= publisher pubkey
  hex, set as the SFU TrackLocal StreamID) -> room member uuid; audio
  element + meter attach to the matched member row
- SSE renegotiation: SFU pushes offer when speakers come/go; browser
  answers via POST /answer
- applyMicMode now hot-swaps the SFU publish sender's track too, so
  voice/music mode toggles apply over the SFU just like the mesh

Notice banner — fox flagged that booted/demoted users had no visible
signal. Added a #sec-notice section with .notice-banner (warn for
boot/demote-to-listener, info for promote). Boot also sets
wantConnected=false to prevent the WS auto-reconnect loop from
rejoining into a boot loop.
2026-05-31 12:48:20 -04:00
..
blog phase 1: unfirehose reconstruction from session JSONL ingest 2026-05-27 13:51:14 -04:00
fonts phase 2: gap analysis — cat>> append + binary asset recovery 2026-05-27 13:54:19 -04:00
chat.html zebra-spaces v0.1: multi-party voice rooms with roles, identity, vault 2026-05-31 10:54:36 -04:00
host-your-own.html zebra-spaces v0.1: multi-party voice rooms with roles, identity, vault 2026-05-31 10:54:36 -04:00
how-it-works.html zebra-spaces v0.1: multi-party voice rooms with roles, identity, vault 2026-05-31 10:54:36 -04:00
index.html phase 1: unfirehose reconstruction from session JSONL ingest 2026-05-27 13:51:14 -04:00
kernel.html phase 1: unfirehose reconstruction from session JSONL ingest 2026-05-27 13:51:14 -04:00
stamp.js web: stamp each zebra-report page with build date + md5/sha256 2026-05-28 17:50:12 -04:00
zebra-audio.html zebra-spaces v0.1: multi-party voice rooms with roles, identity, vault 2026-05-31 10:54:36 -04:00
zebra-spaces.html zebra-spaces: SFU bridge + role-change notice banner 2026-05-31 12:48:20 -04:00