diff --git a/zebra-report/zebra-spaces.html b/zebra-report/zebra-spaces.html index baa49b4..ca8b7b2 100644 --- a/zebra-report/zebra-spaces.html +++ b/zebra-report/zebra-spaces.html @@ -3229,6 +3229,14 @@ async function onRoleChanged(prev, next){ inRoleTransition = true; try { if (!canSpeak(prev) && canSpeak(next)){ + /* Listener -> speaker (or cohost/host) is a brand-new mic grab. + * Default to MUTED so the user doesn't broadcast whatever was + * happening in their room when they accepted. They can click + * 'unmute' when they're ready. ensureMicAndUI() reads the + * sessionStorage value via applyMuteState, so set it BEFORE + * the acquire. */ + muted = true; + try { sessionStorage.setItem(MUTE_STATE_KEY, '1'); } catch(_){} await ensureMicAndUI(); for (const [uuid, mm] of members){ if (uuid === myUUID) continue; @@ -3898,8 +3906,8 @@ logLine('', 'ready โ€” pick a handle, type a rendezvous code, enter the space');