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:
@@ -12,6 +12,17 @@ const getAudioContext = (): AudioContext | undefined => {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Create and resume the shared AudioContext from within a user gesture
|
||||
* (e.g. clicking "Join"). Browsers block AudioContext playback until it has
|
||||
* been started by a gesture, so join/leave sounds — which fire later without
|
||||
* any gesture — would otherwise be silent. Call this on call entry so every
|
||||
* participant's later membership-change sounds are actually audible.
|
||||
*/
|
||||
export const unlockCallSounds = (): void => {
|
||||
getAudioContext();
|
||||
};
|
||||
|
||||
type Note = {
|
||||
freq: number;
|
||||
/** Offset from now, in seconds */
|
||||
|
||||
Reference in New Issue
Block a user