zebra-report: deploy UA-gated auto-rejoin (mobile waits for tap)

This commit is contained in:
russell@unturf.com 2026-06-04 11:53:18 -04:00
parent 15eca2bc92
commit 9288555d8e
No known key found for this signature in database

View file

@ -5283,6 +5283,25 @@ $('btn-copy-share').addEventListener('click', async () => {
return;
}
$('rdv-code').value = saved;
/* Auto-rejoin without a user gesture works on desktop (browsers
* grant audio engagement after first interaction with the origin)
* but breaks mobile listener audio: Firefox Android requires the
* silent-oscillator wake in primeAudioOnGesture to actually start
* the AudioContext render thread, and primeAudioOnGesture only
* runs inside the btn-enter click handler. Auto-rejoin that
* bypasses the click → audioCtx stays suspended → MediaStream-
* Source attaches silently → no audio.
*
* UA-gated: desktop preserves the zero-click rejoin convenience;
* mobile pre-fills the code + asks for one tap on enter so the
* gesture window opens and audio actually plays. Fox 2026-06-04
* chose this trade after the AudioContext-suspended telemetry. */
const isMobile = /Android|iPhone|iPad|iPod|Mobile/i.test(navigator.userAgent);
if (isMobile){
logLine('', 'last space: '+saved+' — click enter to resume (mobile needs gesture for audio)');
setStatus('click enter to resume — '+saved, 'warn');
return;
}
logLine('', 'auto-rejoining last space …');
setTimeout(() => { joinSpace().catch(e => logLine('err', 'auto-rejoin failed: ' + e.message)); }, 100);
})();
@ -5356,8 +5375,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">8bfa8fa66fb1493ee39b068ab635b95d</span><br>
sha256 <span class="stamp-sha">101001e05d546c74994310129ce846c59598d7d2ef1ded43531612532db4a70e</span><br>
md5 <span class="stamp-md5">55fa6a71aa44a14506015e88e724c10b</span><br>
sha256 <span class="stamp-sha">13041569d8641958fa844222165b9b6c2bd7af8e0750ee26af4545b74de1d5ba</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>