diff --git a/LOTUS_TODO.md b/LOTUS_TODO.md index 6954f0aae..7169bb00d 100644 --- a/LOTUS_TODO.md +++ b/LOTUS_TODO.md @@ -13,11 +13,64 @@ Legend: - `[SERVER CHECK]` — depends on a Synapse feature or MSC that may not be enabled on `matrix.lotusguild.org` - `[LOW PRIORITY]` — agreed to add but deprioritized; implement after everything else - `[EXTREME COMPLEXITY]` — multi-sprint, architectural; plan separately before touching +- `[BLOCKED]` — cannot implement until a dependency (server upgrade, upstream MSC, other task) is resolved 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) +- **MSC feature flags confirmed OFF:** `msc4306` (thread subscriptions — BLOCKED) · `msc3882` · `msc3912` · `msc4155` +- **MSC3266** (room summary, v1.15): endpoint returned 404 — NOT available on this server +- **MSC3765** (rich room topics, v1.15): NOT available as stable, but client-side rendering is still worth doing +- **MSC3892** (relation redaction): not listed in flags — NOT supported, feature BLOCKED +- **MSC4260** (report user, v1.14): server at v1.12 formally — NOT available as spec endpoint; **however** report user already exists upstream in Cinny (message reporting via `reportEvent`) +- **MSC4151** (report room, v1.12): merged at exactly v1.12 — should be available ✅ + +### Upstream Cinny Features Confirmed (do NOT add to our codebase) +| Feature | Location in upstream | +|---|---| +| "Jump to Latest" / Back to bottom button | `RoomTimeline.tsx:2180-2192` | +| Mark rooms as read (per section) | `Home.tsx:73-102`, `DirectTab.tsx:29-61` | +| Room upgrade / tombstone banner | `RoomTombstone.tsx`, `RoomUpgrade.tsx` | +| Visual speaking indicator | `useCallSpeakers.ts:8-60`, `MemberSpeaking.tsx:1-78` | +| Image + video spoilers (blur/reveal) | `ImageContent.tsx`, `VideoContent.tsx` — CSS blur(44px), click to reveal | +| Report message (per event) | `Message.tsx:588-709` — `mx.reportEvent()` | +| Drag-and-drop file upload | `useFileDrop.ts` — works but has overlay dismiss bug | + +### 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 + +### Code Architecture Facts (relevant to implementation) +| Finding | Impact | +|---|---| +| `folds AvatarImage` does NOT accept children | Avatar overlays/frames must wrap the Avatar component externally, not nest inside it | +| Sidebar `SidebarItem` has `translateX` on hover | CSS `backdrop-filter` won't work on sidebar items directly — apply to parent wrapper instead | +| Element Call bridge has NO join/leave participant events | Join/leave sounds (#89) must use `m.call.member` Matrix room state events instead | +| Element Call bridge has NO audio level events | Speaking indicator uses CSS polling of EC iframe DOM — no direct event bridge | +| No in-app toast system exists anywhere | Toast redesign (#80) must build a full `ToastProvider` + queue system from scratch | +| Voice message player: `AudioContent.tsx:44-223` | Speed control (#8): add `playbackRate` on the hidden `