zebra-report: auto-rejoin pre-fills only; mute+leave hidden idle

Mirror of zebra-report 12df78a.
This commit is contained in:
russell@unturf.com 2026-06-03 22:21:36 -04:00
parent 0f70d62148
commit ccab98bee6
No known key found for this signature in database

View file

@ -711,8 +711,8 @@ try {
<div class="row">
<span class="dot warn" id="dot-call"></span>
<span id="call-status" class="status-line">idle</span>
<button id="btn-mute" disabled>mute</button>
<button id="btn-leave" disabled>leave</button>
<button id="btn-mute" class="hidden" disabled>mute</button>
<button id="btn-leave" class="hidden" disabled>leave</button>
</div>
<div class="row" id="row-mic-controls">
<select id="mic-select" title="audio input device — applies once you have the mic"><option value="">input default</option></select>
@ -3390,6 +3390,8 @@ async function handleSignal(raw){
setStatus('connected as '+myRole, 'ok');
$('dot-call').className='dot ok';
$('btn-leave').disabled = false;
$('btn-leave').classList.remove('hidden');
$('btn-mute').classList.remove('hidden');
$('sec-room').classList.remove('hidden');
/* remember which space this tab is in so a hard refresh auto-rejoins.
* sessionStorage is per-tab so tab A in space X + tab B in space Y
@ -4592,6 +4594,8 @@ function handleBlocked(source){
sfuUnsubscribe().catch(()=>{});
dropMic();
$('btn-leave').disabled = true;
$('btn-leave').classList.add('hidden');
$('btn-mute').classList.add('hidden');
$('btn-enter').disabled = false;
}
@ -4848,8 +4852,12 @@ $('btn-copy-share').addEventListener('click', async () => {
return;
}
$('rdv-code').value = saved;
logLine('', 'auto-rejoining last space …');
setTimeout(() => { joinSpace().catch(e => logLine('err', 'auto-rejoin failed: ' + e.message)); }, 100);
/* Don't auto-call joinSpace. Without a user gesture the audio
* pool can't be primed (Firefox Android refuses unmuted autoplay)
* and listener phones land silent. Pre-fill the code; one tap on
* 'enter' resumes with working audio. */
logLine('', 'last space: '+saved+' — click enter to resume');
setStatus('click enter to resume — '+saved, 'warn');
})();
/* games as left-column tiles — click to spotlight, broadcast through
@ -4905,8 +4913,10 @@ $('btn-leave').addEventListener('click', async () => {
setStatus('left', null);
$('btn-enter').disabled = false;
$('btn-leave').disabled = true;
$('btn-leave').classList.add('hidden');
$('btn-mute').disabled = true;
$('btn-mute').textContent = 'mute'; $('btn-mute').className='';
$('btn-mute').classList.add('hidden');
$('btn-mute').textContent = 'mute'; $('btn-mute').className = 'hidden';
/* Preserve the user's last mute choice across leave+rejoin —
* fox: 'when I leave and rejoin the mic state is unmuted'. Don't
* touch MUTE_STATE_KEY here; the next promotion / bless-reclaim
@ -4922,8 +4932,8 @@ logLine('', 'ready — pick a handle, type a rendezvous code, enter the space');
<footer style="margin:2.2rem auto 0;font-size:0.65rem;color:#999;line-height:1.7;word-break:break-all;font-family:monospace">
<span id="pi-seal" style="color:#777;cursor:default;user-select:none" title="">page integrity</span> &nbsp;·&nbsp; built <span class="stamp-date">2026-06-04</span><br>
md5 <span class="stamp-md5">e8ab005d36f6cf2fb05d8064d8f15a97</span><br>
sha256 <span class="stamp-sha">8688b810622d9696cad31f3f4da127c2e8a7613ab12919b5a679d79887ca2ac3</span><br>
md5 <span class="stamp-md5">4801a9d879cbae20a3796724d7dc36ca</span><br>
sha256 <span class="stamp-sha">2336ee1740da7e2b833c4c9133d99645b861fabf13a1347d74678790f81e9f73</span><br>
<span style="color:#bbb">hashes are of this page with these two fields zeroed — to verify, blank them and re-hash</span><br>
<span style="color:#bbb">one self-contained file — <strong>save a copy</strong> and verify against these hashes; point at your own servers with ?signal= and ?turncred=, or <a href="host-your-own.html" style="color:#999">host your own community</a></span>
</footer>