zebra-report/web
Russell Ballestrini ebcd2575e5
zebra-spaces: defer WebRTC mute until DJ stream actually plays
Fox 2026-06-03: 'the listener phone doesn't hear anything since your last
push.' startStream() was muting the WebRTC <audio> for the speaker BEFORE
calling .play() on the fresh HTTP <audio>. On mobile the fresh <audio>'s
autoplay was often blocked (the entry-button gesture had aged out for
freshly-created elements), so the failure mode was: WebRTC silenced +
HTTP not playing = total silence.

Now WebRTC stays unmuted until the HTTP <audio> fires 'playing'. Any
autoplay/error/stalled path unmutes WebRTC and surfaces the reason in
the log, so we fall back to live WebRTC instead of going dead.

play() promise rejections are also logged now (were silenced) so next
session we can tell exactly which speakers' streams failed to start.
2026-06-03 19:30:50 -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: defer WebRTC mute until DJ stream actually plays 2026-06-03 19:30:50 -04:00