Spotlight pin can never be cleared once set #16

Closed
opened 2026-09-12 02:13:05 -04:00 by jared · 0 comments
Owner

Severity: medium · Type: ux · Confidence: high

Location: src/lotus/lotusFocus.ts:33-37, src/state/CallViewModel/CallViewModel.ts:945,1712, /root/code/cinny/src/app/features/call-status/MemberGlance.tsx:44

Problem

manualSpotlightUserId$ is a BehaviorSubject set only by the widget action; EC never resets it — not when the pinned participant leaves the call, not on hangup, not on layout change. On the host side clearFocusParticipant() exists (CallControl.ts:458) but has zero call sites in cinny — the only caller of the pin is MemberGlance's "Focus camera" menu item, which always pins and never unpins. So once a user is pinned, the spotlight follows that one person for the rest of the session (and re-pins them the moment they rejoin, because overrideSpotlight$ re-resolves the stale userId), with no UI anywhere to restore speaker-follows.

Cross-reference: the host half of this is LotusGuild/cinny#56 (no "clear focus" UI, clearFocusParticipant() has no callers). This issue is the EC side: clear the pin when the pinned user leaves and on hangup.

How to trigger

pin someone via "Focus camera", then try to return to active-speaker spotlight. There is no path.

Suggested fix

EC should clear the pin when the pinned userId disappears from userMedia$ for good (and on leave$); cinny should make the menu item a toggle that calls clearFocusParticipant() when the user is already pinned.


Filed from the September 2026 audit (branch lotus).

**Severity:** medium · **Type:** ux · **Confidence:** high **Location:** `src/lotus/lotusFocus.ts:33-37`, `src/state/CallViewModel/CallViewModel.ts:945,1712`, `/root/code/cinny/src/app/features/call-status/MemberGlance.tsx:44` ### Problem `manualSpotlightUserId$` is a `BehaviorSubject` set only by the widget action; EC never resets it — not when the pinned participant leaves the call, not on hangup, not on layout change. On the host side `clearFocusParticipant()` exists (CallControl.ts:458) but has **zero call sites** in cinny — the only caller of the pin is `MemberGlance`'s "Focus camera" menu item, which always pins and never unpins. So once a user is pinned, the spotlight follows that one person for the rest of the session (and re-pins them the moment they rejoin, because `overrideSpotlight$` re-resolves the stale userId), with no UI anywhere to restore speaker-follows. **Cross-reference:** the host half of this is LotusGuild/cinny#56 (no "clear focus" UI, `clearFocusParticipant()` has no callers). This issue is the EC side: clear the pin when the pinned user leaves and on hangup. ### How to trigger pin someone via "Focus camera", then try to return to active-speaker spotlight. There is no path. ### Suggested fix EC should clear the pin when the pinned userId disappears from `userMedia$` for good (and on `leave$`); cinny should make the menu item a toggle that calls `clearFocusParticipant()` when the user is already pinned. --- _Filed from the September 2026 audit (branch `lotus`)._
jared added this to the EC fork audit 2026-09 · Medium & Low milestone 2026-09-12 02:13:05 -04:00
jared added the priority: mediumuxarea: widget-actions labels 2026-09-12 02:13:05 -04:00
jared self-assigned this 2026-09-12 02:13:05 -04:00
jared closed this issue 2026-09-13 01:22:48 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
2026-11-14
Dependencies

No dependencies set.

Reference: LotusGuild/element-call#16