zebra-report: deploy user-facing notice on camera NotAllowedError

This commit is contained in:
russell@unturf.com 2026-06-07 20:39:25 -04:00
parent 1f27b89378
commit 3b817799ad
No known key found for this signature in database

View file

@ -4633,6 +4633,26 @@ async function sfuPublishCamera(){
fsm.send('FAILED', { error: e2.message }); fsm.send('DONE'); return;
}
} else {
/* User-facing notice on the common "no prompt, instant fail" case.
* NotAllowedError fired without a prompt = the browser has a saved
* Block for this origin's camera permission. Tell the user how to
* unstick it — Firefox doesn't surface this in the URL bar after
* the block is saved; only by visiting site permissions does the
* user discover what's wrong. Ticket 0002. */
if (e.name === 'NotAllowedError'){
const ua = navigator.userAgent || '';
const ff = /Firefox\//.test(ua);
showNotice(
ff
? 'Camera blocked by your browser. Click the lock icon in the URL bar → "Connection secure" → "More information" → Permissions, then change "Use the camera" to Allow. Reload and try again.'
: 'Camera blocked. Click the lock or camera icon in the URL bar and allow camera access for this site, then try again.',
'warn'
);
} else if (e.name === 'NotFoundError'){
showNotice('No camera detected. Connect a camera and try again.', 'warn');
} else if (e.name === 'NotReadableError'){
showNotice('Camera is in use by another application. Close the other app and try again.', 'warn');
}
fsm.send('FAILED', { error: e.message }); fsm.send('DONE'); return;
}
}
@ -8125,8 +8145,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-08</span><br>
md5 <span class="stamp-md5">c9d8e28deae17fddf6b3c7ac7f6160a1</span><br>
sha256 <span class="stamp-sha">941f26894b17cc6c5797d28fd305affff9ffb72fee8b4bb2ac93c4be46dbab4c</span><br>
md5 <span class="stamp-md5">a7e7d90f4d74ae7a34163010520bc48e</span><br>
sha256 <span class="stamp-sha">91ec427fd1ce8c1d1dcd45dfba00fa9a685e23064e5234daee72e52638b09669</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>