lotus(#4): focus-participant spotlight via widget action

Adds io.lotus.focus_participant (toWidget): the host can pin a participant
to the spotlight by Matrix user id (or clear with userId:null), via a
manual override injected into CallViewModel.spotlightSpeaker$. Replaces
cinny's fragile DOM .click() tile-selector focus hack. Extracts the action
enum into lotusActions.ts (no circular import) and allow-lists Lotus
toWidget actions in initializeWidget. Additive: no-op unless the host
sends the action.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Lotus CI
2026-06-29 23:10:16 -04:00
co-authored by Claude Opus 4.8
parent 444af5f7ac
commit 9d7784b9bc
6 changed files with 104 additions and 10 deletions
+2 -9
View File
@@ -17,16 +17,9 @@ Please see LICENSE in the repository root for full details.
import { logger } from "matrix-js-sdk/lib/logger";
import { widget } from "../widget";
import { LotusWidgetActions } from "./lotusActions";
/** Custom widget actions used between the Lotus host and this fork. */
export enum LotusWidgetActions {
/** fromWidget: in-call per-participant speaking / mute state. */
CallState = "io.lotus.call_state",
/** toWidget: pin/spotlight (or clear) a participant. */
FocusParticipant = "io.lotus.focus_participant",
/** toWidget: mix an audio clip into the local published mic track. */
InjectAudio = "io.lotus.inject_audio",
}
export { LotusWidgetActions } from "./lotusActions";
let cachedParams: URLSearchParams | undefined;