From 6fbde91fc949dc8f3acea9abe159992a2cc50951 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Mon, 1 Jun 2026 21:38:35 -0400 Subject: [PATCH] fix: remove unused useRoomName import, run prettier on all changed files Co-Authored-By: Claude Sonnet 4.6 --- LOTUS_TODO.md | 546 +++++++++++------- src/app/components/room-intro/RoomIntro.tsx | 20 +- src/app/features/room-nav/RoomNavItem.tsx | 4 +- src/app/features/room/ReportRoomModal.tsx | 19 +- src/app/features/room/RoomViewHeader.tsx | 2 +- src/app/features/settings/about/About.tsx | 16 +- src/app/features/settings/general/General.tsx | 5 +- src/app/hooks/useRoomMeta.ts | 4 +- 8 files changed, 394 insertions(+), 222 deletions(-) diff --git a/LOTUS_TODO.md b/LOTUS_TODO.md index 34db97075..b571d5ad9 100644 --- a/LOTUS_TODO.md +++ b/LOTUS_TODO.md @@ -20,6 +20,7 @@ Update it as features are completed or reprioritized. --- Legend: + - `[AUDIT REQUIRED]` — at least one assumption needs code/server verification before implementing - `[SERVER CHECK]` — depends on a Synapse feature or MSC; verify on `matrix.lotusguild.org` - `[LOW PRIORITY]` — implement after all higher-priority items @@ -34,6 +35,7 @@ Status: `[ ]` pending · `[~]` in progress · `[x]` completed ## AUDIT RESULTS — completed June 2026 ### Server Status + - **Synapse version:** `1.153.0` (released 2026-05-19) — **FULLY UP TO DATE**, no upgrade needed - **Matrix spec reported:** up to `v1.12` formally, but newer MSC features available via `unstable_features` - **MSC feature flags confirmed ON:** `msc4140` (delayed messages) · `msc3771` (thread receipts) · `msc3440.stable` (threading) · `msc4133.stable` (extended profiles) · `simplified_msc3575` (sliding sync) @@ -45,19 +47,21 @@ Status: `[ ]` pending · `[~]` in progress · `[x]` completed - **MSC4151** (report room, v1.12): merged at exactly v1.12 — should be available ✅ ### Upstream Cinny Features Confirmed (exist in upstream — only improve, don't re-implement) -| Feature | Location in upstream | Lotus improvement task | -|---|---|---| -| "Jump to Latest" button | `RoomTimeline.tsx:2180-2192` | #104 — add unread count + animation | -| Mark rooms as read (per section) | `Home.tsx:73-102`, `DirectTab.tsx:29-61` | None needed | -| Room upgrade / tombstone banner | `RoomTombstone.tsx`, `RoomUpgrade.tsx` | None needed | -| Visual speaking indicator | `useCallSpeakers.ts:8-60`, `MemberSpeaking.tsx:1-78` | #107 — TDS animated ring | -| Image + video spoilers (blur/reveal) | `ImageContent.tsx`, `VideoContent.tsx` | #105 — smooth CSS transition | -| Report message per event | `Message.tsx:588-709` — `mx.reportEvent()` | #106 — add category selector | -| Drag-and-drop file upload | `useFileDrop.ts` — works but overlay bug | #73 — fix overlay dismiss | -| Typing indicator (animated dots) | `TypingIndicator.tsx`, `TypingIndicator.css.ts` | #108 — TDS orange dots | -| Pinned messages count badge | Confirmed in upstream header icon | None needed | + +| Feature | Location in upstream | Lotus improvement task | +| ------------------------------------ | ---------------------------------------------------- | ----------------------------------- | +| "Jump to Latest" button | `RoomTimeline.tsx:2180-2192` | #104 — add unread count + animation | +| Mark rooms as read (per section) | `Home.tsx:73-102`, `DirectTab.tsx:29-61` | None needed | +| Room upgrade / tombstone banner | `RoomTombstone.tsx`, `RoomUpgrade.tsx` | None needed | +| Visual speaking indicator | `useCallSpeakers.ts:8-60`, `MemberSpeaking.tsx:1-78` | #107 — TDS animated ring | +| Image + video spoilers (blur/reveal) | `ImageContent.tsx`, `VideoContent.tsx` | #105 — smooth CSS transition | +| Report message per event | `Message.tsx:588-709` — `mx.reportEvent()` | #106 — add category selector | +| Drag-and-drop file upload | `useFileDrop.ts` — works but overlay bug | #73 — fix overlay dismiss | +| Typing indicator (animated dots) | `TypingIndicator.tsx`, `TypingIndicator.css.ts` | #108 — TDS orange dots | +| Pinned messages count badge | Confirmed in upstream header icon | None needed | ### Upstream Cinny Features Confirmed MISSING (we should build these) + Quick Switcher, Sidebar filter, Favorite rooms, Invite link generator, Edit history modal, Export history, Room preview before joining, Suggested rooms display, Server notices styling, DM last-message preview, Media gallery, Knock-to-join full UX @@ -65,90 +69,93 @@ DM last-message preview, Media gallery, Knock-to-join full UX ### Code Architecture Facts — Full Audit Results #### Corrected facts (previous version had errors) -| Old assumption | Correct finding | -|---|---| -| ~~Join/leave sounds need m.call.member state events~~ | **Use `useCallMembersChange()` hook** at `src/app/hooks/useCall.ts:37-52` — subscribes to `MatrixRTCSessionEvent.MembershipsChanged`, receives old/new membership arrays | -| ~~Glassmorphism needs parent wrapper (translateX blocks filter)~~ | **SAFE to apply directly to sidebar container** — `translateX` only on `SidebarItem` hover, not the sidebar container. Apply backdrop-filter to `Sidebar.css.ts:6-17` | -| ~~Avatar frames must wrap externally~~ | **Modify `UserAvatar` internally** — add optional `frameName?: string` prop; renders overlay inside component. Avoids 3 different wrapper implementations | -| ~~JetBrains Mono not bundled~~ | **Already loaded via Google Fonts CDN** in `index.html:33-35`. Other fonts: use `@fontsource` npm packages | -| ~~Animated backgrounds: add to backgroundImage~~ | **backgroundImage can't have @keyframes** — use CSS `::before` pseudo-element on `` component with `position:absolute, inset:0, z-index:-1` | + +| Old assumption | Correct finding | +| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ~~Join/leave sounds need m.call.member state events~~ | **Use `useCallMembersChange()` hook** at `src/app/hooks/useCall.ts:37-52` — subscribes to `MatrixRTCSessionEvent.MembershipsChanged`, receives old/new membership arrays | +| ~~Glassmorphism needs parent wrapper (translateX blocks filter)~~ | **SAFE to apply directly to sidebar container** — `translateX` only on `SidebarItem` hover, not the sidebar container. Apply backdrop-filter to `Sidebar.css.ts:6-17` | +| ~~Avatar frames must wrap externally~~ | **Modify `UserAvatar` internally** — add optional `frameName?: string` prop; renders overlay inside component. Avoids 3 different wrapper implementations | +| ~~JetBrains Mono not bundled~~ | **Already loaded via Google Fonts CDN** in `index.html:33-35`. Other fonts: use `@fontsource` npm packages | +| ~~Animated backgrounds: add to backgroundImage~~ | **backgroundImage can't have @keyframes** — use CSS `::before` pseudo-element on `` component with `position:absolute, inset:0, z-index:-1` | #### Confirmed facts (all audits complete as of June 2026) -| Finding | Impact | -|---|---| -| `folds AvatarImage` does NOT accept children | Add frame/overlay inside `UserAvatar.tsx` itself — optional `frameName` prop | -| No in-app toast system exists | Task #80: build `ToastProvider` + Jotai queue; insert at `App.tsx:65` after `OverlayContainerProvider`; `portalContainer` in `index.html:101` | -| `useUnverifiedDeviceCount()` hook EXISTS | Task #65 is trivial: `src/app/hooks/useDeviceVerificationStatus.ts:65-106` | -| Voice player: `AudioContent.tsx:44-223` | Task #8: `playbackRate` on hidden `