zebra-report/web
Russell Ballestrini cee13589d7
zebra-spaces: persist transcribe state in localStorage + fix self-capture audioCtx
Fox 2026-06-05: "transcribe states should be saved in localstorage to
survive on refresh" and "self transcribe does not seem to work."

Two fixes:

1. localStorage persistence:
   - TRANSCRIBE_KEY = 'zspc:transcribe-on'
   - Loaded into transcribeEnabled at script top
   - setTranscribe(want) replaces the old toggleTranscribe body and
     writes localStorage on every state change
   - applyTranscribeUI() reusable for both flip and refresh-restore
   - At click-handler binding time, if transcribeEnabled was already
     true (restored from storage), apply UI + pre-warm worker + kick
     captures for any speakers already attached

2. Self-capture fixed:
   - startSelfCapture used to early-return if audioCtx was null
   - But audioCtx is only created when the FIRST remote speaker's
     audio attaches via attachAudioStreamViaWorklet. A host alone in
     the room (no remote audio yet) had no audioCtx → self capture
     silently failed.
   - Now startSelfCapture creates audioCtx if absent and resumes if
     suspended, same pattern as the remote-attach path. Host-alone
     captures their own voice immediately.
2026-06-05 13:25:45 -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: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
host-your-own.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
how-it-works.html zebra-spaces: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -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: listener mute button doubles as audio-unlock gesture 2026-06-03 20:57:09 -04:00
zebra-spaces.html zebra-spaces: persist transcribe state in localStorage + fix self-capture audioCtx 2026-06-05 13:25:45 -04:00