zebra-report/web
Russell Ballestrini a3c49f1a28
zebra-spaces: mute button + peer-force-muted handler
Page-side companion to proxy.unturf.com 90a5e96.

 - modMute(uuid): signs + sends {type:"mute",target,epoch,sig}.
 - Mute button on speaker / cohost rows (host always; cohost can
   mute speakers only). Lives in .acts-primary beside the role
   transitions; kick/ban stay on the .acts-removal row below.
 - On peer-force-muted from server:
   - If I'm the target: disable my mic tracks, set muted=true,
     persist to sessionStorage, broadcast new mic-state, show
     "you were muted by X. Click unmute to talk again." Banner —
     the unmute button is the user's own action, not locked.
   - For others: mark the target visually muted right away so
     the roster reflects state without waiting on a mic-state
     broadcast.
2026-06-03 19:51: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: boot-error logging + watchFirstFrame keyframe diagnostic 2026-06-03 15:51:18 -04:00
host-your-own.html zebra-spaces: boot-error logging + watchFirstFrame keyframe diagnostic 2026-06-03 15:51:18 -04:00
how-it-works.html zebra-spaces: boot-error logging + watchFirstFrame keyframe diagnostic 2026-06-03 15:51:18 -04:00
index.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -04:00
kernel.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -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: boot-error logging + watchFirstFrame keyframe diagnostic 2026-06-03 15:51:18 -04:00
zebra-spaces.html zebra-spaces: mute button + peer-force-muted handler 2026-06-03 19:51:20 -04:00