6f9bdc4d50
- 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>
3.6 KiB
3.6 KiB
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— onlynotification_type === 'ring'events now trigger the modal. - Avatar Decoration Displacement in Profile: Fixed in
UserHero.tsx—UserAvatarContainer(position:absolute) now wrapsAvatarDecorationas the outermost element, keeping the positioning context relative toUserHeroAvatarContainer. - Export History Broken for E2EE: Fixed in
ExportRoomHistory.tsx—addEventsis now async and callsmx.decryptEventIfNeeded()before inspecting event type/content. - Privacy Leak in URL Previews (Google Favicon): Fixed in
UrlPreviewCard.tsx— Google S2 favicon call removed; a generic foldsIcons.Linkicon is shown instead. - Status Emoji Picker Doesn't Insert Emoji: Fixed in
Profile.tsx—statusDirtyRefprevents the server-presence syncuseEffectfrom overwriting in-flight user input (cleared on save/clear). - Encrypted Search Misses Stickers and Polls: Fixed in
useLocalMessageSearch.ts—m.sticker,m.poll.start, andorg.matrix.msc3381.poll.startevents 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_byteszeros the DIB bits buffer immediately afterCreateDIBSection; 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/…) returnsContent-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/pngwithContent-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+PopOutpattern used inGeneral.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.