Push-to-talk, the deafen hotkey and AFK auto-mute stop working outside the call room #9

Closed
opened 2026-09-12 01:50:48 -04:00 by jared · 0 comments
Owner

Severity: high · Type: bug · Confidence: high

Location: src/app/features/call/CallControls.tsx:91,168-272, src/app/features/call/CallView.tsx:196-206, src/app/features/room/Room.tsx:150-157

Problem

the PTT key listeners, the deafen-key listener and useAfkAutoMute are all mounted inside CallControls, which only renders from CallViewCallJoined, i.e. only while the call room is the selected room (and, on mobile, only while the in-call chat panel is closed — Room.tsx:150 is callView && (isDesktop || !chat)). Navigate to any other room (which is exactly when the call goes to PiP), or open the in-call chat on a phone, and: PTT stops transmitting entirely, the deafen hotkey silently stops responding, and the AFK auto-mute watchdog stops running — the last one precisely in the situation it exists for (you walked away / are doing something else). The PTT cleanup also force-mutes on unmount, so a held key is dropped mid-sentence when you switch rooms.

How to trigger

join a call, hold PTT and confirm it works; navigate to another room (PiP) and hold PTT again — nothing happens. Or enable AFK auto-mute, join, navigate away, stay silent past the timeout — no mute.

Suggested fix

move the PTT/deafen key bindings and useAfkAutoMute into a component that lives as long as the embed (e.g. CallUtils in CallEmbedProvider, which already mounts per-embed) and keep only the visual PTT chip in CallControls.


Filed from the September 2026 client audit (branch lotus @ 4bea4895).

**Severity:** high · **Type:** bug · **Confidence:** high **Location:** `src/app/features/call/CallControls.tsx:91,168-272`, `src/app/features/call/CallView.tsx:196-206`, `src/app/features/room/Room.tsx:150-157` ### Problem the PTT key listeners, the deafen-key listener and `useAfkAutoMute` are all mounted inside `CallControls`, which only renders from `CallView` → `CallJoined`, i.e. only while the call room is the selected room (and, on mobile, only while the in-call chat panel is closed — `Room.tsx:150` is `callView && (isDesktop || !chat)`). Navigate to any other room (which is exactly when the call goes to PiP), or open the in-call chat on a phone, and: PTT stops transmitting entirely, the deafen hotkey silently stops responding, and the AFK auto-mute watchdog stops running — the last one precisely in the situation it exists for (you walked away / are doing something else). The PTT cleanup also force-mutes on unmount, so a held key is dropped mid-sentence when you switch rooms. ### How to trigger join a call, hold PTT and confirm it works; navigate to another room (PiP) and hold PTT again — nothing happens. Or enable AFK auto-mute, join, navigate away, stay silent past the timeout — no mute. ### Suggested fix move the PTT/deafen key bindings and `useAfkAutoMute` into a component that lives as long as the embed (e.g. `CallUtils` in `CallEmbedProvider`, which already mounts per-embed) and keep only the visual PTT chip in `CallControls`. --- _Filed from the September 2026 client audit (branch `lotus` @ 4bea4895)._
jared added this to the Audit 2026-09 · High milestone 2026-09-12 01:50:48 -04:00
jared added the bugpriority: higharea: calls labels 2026-09-12 01:50:48 -04:00
jared self-assigned this 2026-09-12 01:50:48 -04:00
jared closed this issue 2026-09-12 19:46:14 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
2026-10-14
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#9