feat(seasonal): tone down overlays and add visual preview grid in Settings
- New Year: replace flashing animBurst rays with gentle falling confetti - Lunar New Year: reduce 9 lanterns to 4, halve sizes, dim silk/shimmer - April Fools: remove all glitch/scanline/watermark effects; replace with a subtle rainbow stripe and falling punctuation symbols - Add SeasonalPreview export (position:absolute, reduced-motion) for use inside contained card elements - Replace SettingsSelect dropdown for Seasonal Theme with SeasonalBgGrid, a visual card grid (matches ChatBgGrid pattern) showing ambient previews Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+53
-42
@@ -5,57 +5,68 @@ This document tracks identified bugs, edge cases, and architectural discrepancie
|
||||
|
||||
---
|
||||
|
||||
## ✅ Resolved Issues
|
||||
## 🚩 Critical & UI Bugs
|
||||
|
||||
- **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.
|
||||
### 1. Avatar Decoration Displacement in Profile
|
||||
**File:** `src/app/components/user-profile/UserHero.tsx`
|
||||
**Status:** **OPEN**
|
||||
|
||||
---
|
||||
* **Issue:** Avatar decorations appear displaced left of the avatar when viewing the profile modal.
|
||||
* **Root Cause:** The `AvatarPresence` badge sticking out to the right shifts the center of the `inline-flex` container. The decoration centers on the container, not the avatar.
|
||||
* **Recommended Fix:** Wrap only the `Avatar` component with `AvatarDecoration`.
|
||||
|
||||
## 🛡️ 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
|
||||
### 2. Inconsistent Settings Dropdown Styling
|
||||
**Files:** `Profile.tsx`, `SystemNotification.tsx`
|
||||
**Status:** **OPEN — Low priority**
|
||||
**Status:** **OPEN**
|
||||
|
||||
* **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**
|
||||
### 3. Ringing Modal Fires in Voice Rooms
|
||||
**File:** `src/app/components/CallEmbedProvider.tsx`
|
||||
**Status:** **OPEN**
|
||||
|
||||
* **Issue:** Complex radial-gradient animations cause flickering on some GPUs.
|
||||
* **Recommended Fix:** Scope animations strictly to background properties and simplify heavy gradients.
|
||||
* **Issue:** Joining a static voice room triggers the "Incoming Call" ringing.
|
||||
* **Recommended Fix:** Check `notification_type` in the Matrix RTC event. Only 'ring' should trigger the modal.
|
||||
|
||||
### 3. No Camera Focus During Screenshare
|
||||
### 4. No Camera Focus During Screenshare
|
||||
**File:** `src/app/features/call/CallControls.tsx`
|
||||
**Status:** **OPEN — Blocked on Element Call internals**
|
||||
**Status:** **OPEN**
|
||||
|
||||
* **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.
|
||||
* **Issue:** When someone is screensharing and another participant turns on their camera, there is no way to switch the primary display to the camera or go fullscreen on it.
|
||||
* **Recommended Fix:** Implement a "Focus" toggle on participant tiles that overrides the automatic screenshare spotlight.
|
||||
|
||||
### 5. Chat Background Animation Flickering
|
||||
**File:** `src/app/features/lotus/chatBackground.ts`
|
||||
**Status:** **OPEN**
|
||||
|
||||
* **Issue:** Some animated backgrounds (like Fireflies) cause flickering/flashing of the message text and composer area on certain browsers/GPUs.
|
||||
* **Recommended Fix:** Ensure animations are scoped strictly to background properties (`background-position`, `background-size`) and do not use properties like `filter` or `opacity` on the main container.
|
||||
|
||||
---
|
||||
|
||||
## 📱 PWA & Mobile Issues
|
||||
|
||||
### 1. Exclusive Background vs. Seasonal Choice
|
||||
**Status:** **OPEN**
|
||||
|
||||
* **Issue:** Users can have both a Chat Background and a Seasonal Theme active, causing visual clutter and excessive GPU usage on mobile.
|
||||
* **Recommended Fix:** Implement a "Choose One" toggle in Settings.
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Technical & Performance Refinements
|
||||
|
||||
### 1. Decrypted Media Memory Leak (Gallery & Lightbox)
|
||||
**File:** `src/app/features/room/MediaGallery.tsx`
|
||||
**Status:** **OPEN**
|
||||
|
||||
* **Issue:** Every image in the gallery history is decrypted and converted to a Blob URL simultaneously.
|
||||
* **Recommended Fix:** Implement virtualization for the gallery grid.
|
||||
|
||||
### 2. Scheduled Messages are Ephemeral
|
||||
**File:** `src/app/state/scheduledMessages.ts`
|
||||
**Status:** **OPEN**
|
||||
|
||||
* **Issue:** Refreshing the page clears the "Scheduled" tray, making it impossible for users to see or cancel messages they have already scheduled.
|
||||
* **Recommended Fix:** Persist the scheduled message metadata in `localStorage`.
|
||||
|
||||
Reference in New Issue
Block a user