PTT window blur/focus force-mutes unconditionally, revoking a manual unmute #27

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

Severity: medium · Type: bug · Confidence: high

Location: src/app/features/call/CallControls.tsx:203-214

Problem

in PTT mode the blur and focus handlers call callEmbed.control.setMicrophone(false) unconditionally, without checking pttActiveRef.current. The mic button is still available in PTT mode, so a user who deliberately unmutes (e.g. to talk hands-free for a minute) has their mic silently cut the next time the window loses or gains focus — including a click into the EC iframe, which fires window blur. Every focus change also sends a redundant io.element.device_mute over the widget transport.

How to trigger

enable PTT, join a call, click the mic button to unmute, then click into the call iframe or alt-tab and back — the mic mutes with no indication why.

Suggested fix

only release the mic in onBlur/onFocus when pttActiveRef.current is true (mirroring the unmount cleanup), and hide/disable the manual mic toggle in PTT mode if hands-free is not meant to be supported.


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

**Severity:** medium · **Type:** bug · **Confidence:** high **Location:** `src/app/features/call/CallControls.tsx:203-214` ### Problem in PTT mode the `blur` and `focus` handlers call `callEmbed.control.setMicrophone(false)` unconditionally, without checking `pttActiveRef.current`. The mic button is still available in PTT mode, so a user who deliberately unmutes (e.g. to talk hands-free for a minute) has their mic silently cut the next time the window loses or gains focus — including a click into the EC iframe, which fires window `blur`. Every focus change also sends a redundant `io.element.device_mute` over the widget transport. ### How to trigger enable PTT, join a call, click the mic button to unmute, then click into the call iframe or alt-tab and back — the mic mutes with no indication why. ### Suggested fix only release the mic in `onBlur`/`onFocus` when `pttActiveRef.current` is true (mirroring the unmount cleanup), and hide/disable the manual mic toggle in PTT mode if hands-free is not meant to be supported. --- _Filed from the September 2026 client audit (branch `lotus` @ 4bea4895)._
jared added this to the Audit 2026-09 · Medium & Low milestone 2026-09-12 01:50:58 -04:00
jared added the bugpriority: mediumarea: calls labels 2026-09-12 01:50:58 -04:00
jared self-assigned this 2026-09-12 01:50:58 -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-11-14
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#27