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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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:44Problem
manualSpotlightUserId$is aBehaviorSubjectset 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 sideclearFocusParticipant()exists (CallControl.ts:458) but has zero call sites in cinny — the only caller of the pin isMemberGlance'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, becauseoverrideSpotlight$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 onleave$); cinny should make the menu item a toggle that callsclearFocusParticipant()when the user is already pinned.Filed from the September 2026 audit (branch
lotus).