zebra-report/web
Russell Ballestrini cb642238ed
zebra-spaces: leave + step-down chimes
Two more Web Audio tones, completing the doorman set:
- playToneLeave: E5 -> C5 descending major third (mirror of join's
  C5 -> E5 ascending). Fires on peer-left (any role leaves the
  room post hiccup-grace) and peer-booted (mod kicks someone),
  skipping self on the boot case.
- playToneStepDown: single G4 low sine blip — softer than the
  arrival/departure pair. Fires on role-change for OTHER peers
  when canSpeak(prev) && !canSpeak(next): they're still in the
  room, just lost mic privileges.

Full notification ladder:
  C5 -> E5     guest arrived
  A5 (triangle) hand raised
  G4            speaker stepped down (still here)
  E5 -> C5     guest left / was kicked
2026-06-03 14:42:57 -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 css: .row uses minmax(0, max-content) so long labels shrink + wrap 2026-06-02 09:27:55 -04:00
host-your-own.html zebra: dark mode default on all pages + unified theme key 2026-06-01 22:18:02 -04:00
how-it-works.html zebra: dark mode default on all pages + unified theme key 2026-06-01 22:18:02 -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 css: .row uses minmax(0, max-content) so long labels shrink + wrap 2026-06-02 09:27:55 -04:00
zebra-spaces.html zebra-spaces: leave + step-down chimes 2026-06-03 14:42:57 -04:00