Files
cinny/LOTUS_BUGS.md
T
jared 6f9bdc4d50 fix: work through LOTUS_BUGS.md audit items
- ExportRoomHistory: make addEvents() async, call decryptEventIfNeeded()
  before inspecting type/content so E2EE rooms export decrypted text
- UrlPreviewCard: remove Google S2 favicon (privacy leak); show
  generic Icons.Link instead — no third-party external calls
- Profile: add statusDirtyRef so server presence sync cannot clobber
  in-flight emoji insertions or keystrokes; cleared on save/clear
- useLocalMessageSearch: include m.sticker, m.poll.start, and
  org.matrix.msc3381.poll.start in encrypted room search; index poll
  question and answer bodies
- SeasonalEffect: z-index 9997 → 9999 so overlays render above
  animated chat backgrounds
- LOTUS_BUGS.md: mark all resolved, document remaining blocked items

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 00:09:54 -04:00

62 lines
3.6 KiB
Markdown

# Lotus Chat — Bug Report & Technical Audit
**Date:** June 2026
This document tracks identified bugs, edge cases, and architectural discrepancies found during the audit of the Lotus Chat codebase. Recommended fixes are provided for each item.
---
## ✅ Resolved Issues
- **Ringing Modal Fires in Voice Rooms**: Fixed in `CallEmbedProvider.tsx` — only `notification_type === 'ring'` events now trigger the modal.
- **Avatar Decoration Displacement in Profile**: Fixed in `UserHero.tsx``UserAvatarContainer` (position:absolute) now wraps `AvatarDecoration` as the outermost element, keeping the positioning context relative to `UserHeroAvatarContainer`.
- **Export History Broken for E2EE**: Fixed in `ExportRoomHistory.tsx``addEvents` is now async and calls `mx.decryptEventIfNeeded()` before inspecting event type/content.
- **Privacy Leak in URL Previews (Google Favicon)**: Fixed in `UrlPreviewCard.tsx` — Google S2 favicon call removed; a generic folds `Icons.Link` icon is shown instead.
- **Status Emoji Picker Doesn't Insert Emoji**: Fixed in `Profile.tsx``statusDirtyRef` prevents the server-presence sync `useEffect` from overwriting in-flight user input (cleared on save/clear).
- **Encrypted Search Misses Stickers and Polls**: Fixed in `useLocalMessageSearch.ts``m.sticker`, `m.poll.start`, and `org.matrix.msc3381.poll.start` events now included; poll question and answer bodies are indexed.
- **Seasonal Themes Display Behind Chat Background**: Fixed in `SeasonalEffect.tsx` — z-index bumped from 9997 to 9999.
- **Windows Taskbar Badge Black Square**: Fixed in `src-tauri/src/lib.rs``std::ptr::write_bytes` zeros the DIB bits buffer immediately after `CreateDIBSection`; previously uninitialized bytes caused garbage pixels with alpha=255.
---
## 🛡️ Pending — Critical Security & Logic
*(none currently open)*
---
## 🚩 Pending — Functional & UI Bugs
### 1. Avatar Decoration Images Not Rendering
**File:** `src/app/features/lotus/avatarDecorations.ts`
**Status:** **OPEN — Blocked on infrastructure**
* **Issue:** Decoration images in Settings do not load.
* **Root Cause:** The Nextcloud WebDAV URL (`public.php/dav/files/…`) returns `Content-Disposition: attachment`, which browsers refuse to render in `<img>` tags.
* **Required Fix:** Move decoration assets to a CDN or file host that returns `Content-Type: image/png` with `Content-Disposition: inline`. Options: Gitea LFS, Cloudflare R2, or a dedicated static file host. Alternatively, reconfigure the Nextcloud share to serve inline.
* **Blocked by:** Infrastructure change (not a code fix).
---
## 🎨 Pending — UI/UX & Visual Consistency
### 1. Inconsistent Settings Dropdown Styling
**Files:** `Profile.tsx`, `SystemNotification.tsx`
**Status:** **OPEN — Low priority**
* **Issue:** Dropdowns for Status Expiry and Notification Sounds use raw HTML `<select>` elements.
* **Recommended Fix:** Replace with the custom-styled `Menu` + `PopOut` pattern used in `General.tsx`.
### 2. Animations Flickering Content (Fireflies)
**File:** `src/app/features/lotus/chatBackground.ts`
**Status:** **OPEN — Low priority**
* **Issue:** Complex radial-gradient animations cause flickering on some GPUs.
* **Recommended Fix:** Scope animations strictly to background properties and simplify heavy gradients.
### 3. No Camera Focus During Screenshare
**File:** `src/app/features/call/CallControls.tsx`
**Status:** **OPEN — Blocked on Element Call internals**
* **Issue:** There is no way to focus a camera while screenshare is active.
* **Recommended Fix:** Implement a "Pin/Focus" toggle on participant tiles — requires Element Call iframe API support.