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

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 — only notification_type === 'ring' events now trigger the modal.
  • Avatar Decoration Displacement in Profile: Fixed in UserHero.tsxUserAvatarContainer (position:absolute) now wraps AvatarDecoration as the outermost element, keeping the positioning context relative to UserHeroAvatarContainer.
  • Export History Broken for E2EE: Fixed in ExportRoomHistory.tsxaddEvents 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.tsxstatusDirtyRef 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.tsm.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.rsstd::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.