zebra-spaces: lock listeners into DJ mode — no per-speaker opt-out
Per fox: 'lock them into DJ mode unconditionally.' Stream button is
no longer rendered on listener rows for any other peer. Visibility
rule reverts to {self|host} — same as the post-kick/ban gating —
and listeners get auto-enrolled into the HTTP Ogg/Opus path without
any escape hatch. Host can still flip individual speakers room-wide,
and every speaker still has their self-monitor button.
This commit is contained in:
parent
0cbbc37393
commit
9fd6b06a3f
1 changed files with 7 additions and 9 deletions
|
|
@ -4112,18 +4112,16 @@ function renderRoom(){
|
|||
* the targeted speaker from WebRTC subscribe → HTTP Ogg/Opus tap.
|
||||
* Visibility rule:
|
||||
* - SELF row: always (self-monitor — preview what listeners hear)
|
||||
* - OTHER rows: host (room-wide control), OR listener (their own
|
||||
* playback choice — listeners are auto-enrolled into DJ mode
|
||||
* on join for glitch-free playback; the button lets them opt
|
||||
* back to low-latency WebRTC per-speaker if they want)
|
||||
* Speakers/cohosts intentionally get only self-monitor — no peer-
|
||||
* level stream toggle so the host's room-wide model stays simple. */
|
||||
* - OTHER rows: host only (room-wide control)
|
||||
* Speakers/cohosts get self-monitor only. Listeners get NO button
|
||||
* at all — they're locked into DJ mode unconditionally for the
|
||||
* glitch-free playback fox: 'epic, never choppy'. */
|
||||
if (canSpeak(m.role) && m.pubkey){
|
||||
let mPubHex = '';
|
||||
try { mPubHex = hex(unb64(m.pubkey)); } catch(_){}
|
||||
if (mPubHex){
|
||||
const isSelf = (m.uuid === myUUID);
|
||||
const canStreamThisRow = isSelf || myRole === 'host' || myRole === 'listener';
|
||||
const canStreamThisRow = isSelf || myRole === 'host';
|
||||
if (canStreamThisRow){
|
||||
const sb = document.createElement('button'); sb.className = 'small';
|
||||
const on = streamMode.has(mPubHex);
|
||||
|
|
@ -4661,8 +4659,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-03</span><br>
|
||||
md5 <span class="stamp-md5">af202aa8a93119de774c4f9f478dc9fe</span><br>
|
||||
sha256 <span class="stamp-sha">b1fd4c020401134698c76a7ae839ffab0363ddcbffd01fdba4d29e7776bb4405</span><br>
|
||||
md5 <span class="stamp-md5">cebb664d38a0843a3a440fa74fdf2253</span><br>
|
||||
sha256 <span class="stamp-sha">67ba8ee7c7047d4f7c3a9aca5a398357ef6c24b7d57fd5ca04e3d5f6227f20a7</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