merge: fold in lotus commits e36aef8a..cbd42bf9 landed during the v0.25.0 sync

Six fix(lotus) commits reached `lotus` while the upstream merge was in
progress (deafen via global output mute, denoise race/fallback fixes,
strictOriginCheck on the widget transport, call_state standalone skip,
set_quality null-clears-cap, plus four new src/lotus/*.test.ts files).
Merged them on top of the v0.25.0 sync so this branch is a superset of
current `lotus`.

One conflict, src/lotus/lotusDenoiseProcessor.ts: the sync commit had
dropped a meaningless `void` (oxlint no-meaningless-void-operator) on a
line the incoming commit also touched; kept the void-less form so oxlint
stays clean.

Verification after the fold-in (Node 24.11.1 / pnpm 11.21.0): tsc clean;
oxlint clean; oxfmt --check clean; knip exit 0; vitest unit 88 files /
639 passed / 9 skipped; build:embedded OK, staged to embedded/web/dist,
all six io.lotus.* actions present in the bundle.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
This commit is contained in:
Lotus CI
2026-09-12 11:42:28 -04:00
co-authored by Claude Fable 5.1
10 changed files with 663 additions and 59 deletions
+7 -1
View File
@@ -177,10 +177,16 @@ export class LotusDenoiseProcessor implements TrackProcessor<
this.processedTrack = next.track;
} catch (e) {
// Never go silent on the A7/device-switch path: fall back to raw audio.
// [lotus] IMPORTANT: never assign `opts.track` (LiveKit-owned) here.
// LiveKit's internalStopProcessor() does `processor.processedTrack?.stop()`
// then re-publishes `_mediaStreamTrack` — the SAME object if we set it as
// processedTrack — which kills the live mic on the next stopProcessor()/
// teardown. Leaving processedTrack undefined makes LiveKit fall through to
// its own `_mediaStreamTrack` instead.
logger.warn("[lotus] denoise restart failed; using raw mic", e);
this.disposeGraph(this.graph);
this.graph = undefined;
this.processedTrack = opts.track;
this.processedTrack = undefined;
}
}