From 2a0478cad85079e981ea0e7d271a9518f8d4e2b9 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Tue, 30 Jun 2026 09:13:34 -0400 Subject: [PATCH] =?UTF-8?q?docs(bugs):=20N105=20fixed=20=E2=86=92=20Needs?= =?UTF-8?q?=20Verification?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- LOTUS_BUGS.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/LOTUS_BUGS.md b/LOTUS_BUGS.md index a6a8fae89..1549c2e1f 100644 --- a/LOTUS_BUGS.md +++ b/LOTUS_BUGS.md @@ -15,22 +15,23 @@ step-by-step checks in [`LOTUS_TESTING.md`](./LOTUS_TESTING.md). Implemented and gate-green; confirm each per `LOTUS_TESTING.md`, then delete the row. -| ID | Item | File / area | Test | -| :--- | :---------------------------------------------------------------------- | :--------------------------------------------------- | :------- | -| #2 | Chat-background animation flicker (`contain:paint`) | `lotus/chatBackground.ts` | F1 | -| #4 | Ringtone re-fixes: classic loudness + caller decline notice (A2 ✓ live) | `CallEmbedProvider.tsx`, `ringtones.ts` | A1,A3,A4 | -| #6 | Background vs. seasonal theme mutual exclusion | `state/settings.ts`, `General.tsx` | F2 | -| #7 | Composer toolbar touch targets (≥44px) | `room/RoomInput.tsx` | E1 | -| #8 | Room Settings horizontal overflow (mobile) | `components/page/style.css.ts` | E2 | -| #9 | Modal fullscreen on mobile (`useModalStyle`) | 22+ modal files | E3 | -| #10 | Composer not hidden by keyboard (`100dvh`) | `src/index.css` | E4 | -| #12 | PiP "All muted" badge re-fixed (was firing on any single mute) | `hooks/useCallSpeakers.ts` | 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 | -| N108 | Maskable PWA icons (Android adaptive) | `public/manifest.json` + `res/android/maskable-*` | L2 | -| 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 | +| ID | Item | File / area | Test | +| :--- | :------------------------------------------------------------------------------------- | :--------------------------------------------------- | :-------------------------------------------------------------------------------- | +| #2 | Chat-background animation flicker (`contain:paint`) | `lotus/chatBackground.ts` | F1 | +| #4 | Ringtone re-fixes: classic loudness + caller decline notice (A2 ✓ live) | `CallEmbedProvider.tsx`, `ringtones.ts` | A1,A3,A4 | +| #6 | Background vs. seasonal theme mutual exclusion | `state/settings.ts`, `General.tsx` | F2 | +| #7 | Composer toolbar touch targets (≥44px) | `room/RoomInput.tsx` | E1 | +| #8 | Room Settings horizontal overflow (mobile) | `components/page/style.css.ts` | E2 | +| #9 | Modal fullscreen on mobile (`useModalStyle`) | 22+ modal files | E3 | +| #10 | Composer not hidden by keyboard (`100dvh`) | `src/index.css` | E4 | +| #12 | PiP "All muted" badge re-fixed (was firing on any single mute) | `hooks/useCallSpeakers.ts` | 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 | +| N108 | Maskable PWA icons (Android adaptive) | `public/manifest.json` + `res/android/maskable-*` | L2 | +| EC | EC iframe load watchdog + self-heal + recovery UI | `plugins/call/CallEmbed.ts`, `CallView.tsx` | A7 | +| N105 | Notification clicks work after tab close (SW `notificationclick` + `showNotification`) | `sw.ts`, `utils/dom.ts`, `ClientNonUIFeatures.tsx` | get a msg notif, close the tab, click it → app focuses/opens + routes to the room | +| Gal | MediaGallery lazy-decrypt (true virtualization deferred) | `room/MediaGallery.tsx` | H1 | +| a11y | aria-labels: edit-history / reaction / thread / reply | `message/*` (`FallbackContent`, `Reaction`, `Reply`) | I | **Verified working in live testing (2026-06):** A2, B1–B4, C1, C3, D (mic/camera/deafen/screenshare/fullscreen/more-menu/PiP). Denoise quality in D is still poor — tracked under the denoise project, not a regression. @@ -87,7 +88,6 @@ Items from testing, with their fork-level fix path: ### PWA / Offline / Notifications -- **N105 — Service worker has no `notificationclick` handler** — notification clicks are broken when the tab is closed. Needs `showNotification()` via the SW + a `notificationclick` listener. - **N107 — SW has no `push` handler** — Web Push delivery is entirely non-functional. Needs a `push` listener + a Matrix push-gateway integration. - **No app-asset caching strategy** (`src/sw.ts`) — no offline capability. - **`manifest: false`** in `vite.config.js` — may block correct PWA install if not handled externally.