diff --git a/LOTUS_BUGS.md b/LOTUS_BUGS.md index dab4b7f6f..855c1c5db 100644 --- a/LOTUS_BUGS.md +++ b/LOTUS_BUGS.md @@ -28,6 +28,7 @@ Implemented and gate-green; confirm each per `LOTUS_TESTING.md`, then delete the | #10 | Composer not hidden by keyboard (`100dvh`) | `src/index.css` | E4 | | #12 | PiP mute badge attribution (you vs. all-muted) | `CallEmbedProvider.tsx` | G1 | | N96 | Call-recovery overlay single "Back" button | `call/CallView.tsx` | A7 | +| N95 | AFK-monitor mic released on mute (OS indicator clears) | `hooks/useAfkAutoMute.ts` | L1 | | EC | EC iframe load watchdog + self-heal + recovery UI | `plugins/call/CallEmbed.ts`, `CallView.tsx` | A7 | | Gal | MediaGallery lazy-decrypt (true virtualization deferred) | `room/MediaGallery.tsx` | H1 | | a11y | aria-labels: edit-history / reaction / thread / reply | `message/*` (`FallbackContent`, `Reaction`, `Reply`) | I | @@ -38,7 +39,6 @@ Implemented and gate-green; confirm each per `LOTUS_TESTING.md`, then delete the ### Calls / Audio -- **N95 — AFK auto-mute keeps the hardware mic active while muted.** `useAfkAutoMute.ts` holds its own `getUserMedia` stream independent of EC's; muting in the UI doesn't stop those tracks, so the OS recording indicator stays lit. Fix: stop the `MediaStream` tracks on mute, re-request on unmute. (Repro: `LOTUS_TESTING.md` L1.) - **N127 — ML denoise shim is never injected in `vite dev`.** The `lotusDenoise` plugin injects only on `closeBundle` (build), so ML noise suppression is silently inactive during local dev. Add a dev-mode injection (`configureServer` / `transformIndexHtml`). Dev-only impact. ### Security & Privacy diff --git a/LOTUS_TESTING.md b/LOTUS_TESTING.md index 530a255a9..24ffd0011 100644 --- a/LOTUS_TESTING.md +++ b/LOTUS_TESTING.md @@ -342,22 +342,18 @@ Trigger a desktop/browser notification for a new message. --- -## L. Open bugs flagged by audit — reproduction needed before fix +## L. Fixed — verify -### L1. AFK auto-mute keeps the OS microphone indicator lit (N95) — 👥 live call +### L1. AFK auto-mute releases the OS microphone indicator on mute (N95) — 👥 live call -**Context:** `useAfkAutoMute.ts` calls `getUserMedia({ audio: true })` independently of Element Call's managed stream. When you mute in the Lotus UI, the LiveKit mic inside EC's iframe is muted via the widget API — but the separate `MediaStream` held by the AFK hook keeps its tracks running. The OS-level recording indicator (green dot on macOS, mic icon on Windows/Linux) therefore stays lit while your mic is muted. +**Context (now FIXED):** `useAfkAutoMute.ts` opened its own `getUserMedia` level-monitor capture for the whole call, so the OS recording indicator (green dot on macOS, mic icon on Windows/Linux) stayed lit even when muted. The capture is now gated on the reactive mic-on state — it runs only while unmuted, so muting releases the stream. -**To reproduce:** +**To verify:** 1. Enable **AFK auto-mute** in Settings → Calls and **join a call**. -2. Manually **mute your mic** using the call controls. -3. Check the **OS recording indicator** (macOS: green dot top-right of menu bar; Windows: mic icon in taskbar). - -**Expected (current broken behavior):** the OS recording indicator stays on even though your Lotus mic shows muted. -**Expected after fix:** the indicator should clear when you mute and re-appear when you unmute. - -> **Note:** This is an **open bug** — no fix has been applied yet. Reproduce and confirm the symptom first. The fix involves stopping `MediaStream` tracks on mute and re-requesting `getUserMedia` on unmute (see LOTUS_BUGS.md N95 for full details). Once fixed, re-run this check to verify the indicator clears. +2. Manually **mute your mic** using the call controls → the **OS recording indicator should clear** within ~a second. +3. **Unmute** → the indicator should re-appear (capture re-acquired). +4. Also confirm AFK still works end-to-end: stay unmuted and silent past the configured timeout → mic auto-mutes with the "muted after inactivity" toast, and the indicator clears. ---