fix: make call join/leave sounds audible to all participants + server-side hard voice limit docs
Sounds (P5-16): browsers block the Web Audio context until a user gesture starts it, so join/leave sounds — which fire later with no gesture — were silent. unlockCallSounds() now primes/resumes the shared AudioContext inside the Join click (centralized in useCallStart so every join path is covered), making the per-client sounds reliably audible to everyone in the call. Voice limit (P5-10): the limit is now a hard, cross-client server-side cap enforced by the voice-limit-guard sidecar (matrix repo) that fronts lk-jwt-service and refuses LiveKit tokens when a room is full. Updated LOTUS_FEATURES.md / README.md / LOTUS_TODO.md to reflect that the client 'Channel Full' check is UX only and the server is authoritative. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -261,7 +261,7 @@ Themes:
|
||||
**What:** Admins set max participants via custom state event `io.lotus.voice_limit: { max_users: N }`. Show "Channel Full (5/5)" to users over the limit. Local enforcement only.
|
||||
**[AUDIT REQUIRED]** Check if Element Call has its own participant limit that should be integrated with rather than duplicated.
|
||||
**Complexity:** Medium.
|
||||
**Done:** `RoomVoiceLimit` admin control in Room Settings → General → Voice; `CallPrescreen` disables Join + shows "Channel Full (N/N)" when at capacity (rejoiners exempt). State event `StateEvent.LotusVoiceLimit`.
|
||||
**Done:** `RoomVoiceLimit` admin control in Room Settings → General → Voice; `CallPrescreen` disables Join + shows "Channel Full (N/N)" when at capacity (rejoiners exempt). State event `StateEvent.LotusVoiceLimit`. **Hard enforcement is server-side for ALL clients** via `voice-limit-guard` (matrix repo `livekit/voice-limit-guard.py`) — a fail-open sidecar fronting `lk-jwt-service` (guard `:8070`, lk-jwt `:8071`) that refuses the LiveKit JWT (403) when the room is at capacity. The client check is UX-only. EC has only a global `max_participants` (50), so per-room limits were not duplicating an EC feature.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user