zebra-report: deploy UA-gated auto-rejoin (mobile waits for tap)
This commit is contained in:
parent
15eca2bc92
commit
9288555d8e
1 changed files with 21 additions and 2 deletions
|
|
@ -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> · 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>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue