From 74cde50df783cd4f7f90522a11af907d7ef63e1d Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Mon, 1 Jun 2026 13:09:57 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20complete=20audit=20pass=20=E2=80=94=20s?= =?UTF-8?q?erver=20checks,=20upstream=20checks,=20code=20architecture?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Server findings: - Synapse 1.153.0 is FULLY UP TO DATE (latest as of 2026-05-19) - MSC4140 (scheduled msgs), MSC3771 (thread receipts), MSC4133 (extended profiles) all CONFIRMED supported via unstable_features flags - MSC3892 (reaction redaction), MSC3266 (room summary) BLOCKED — not supported - MSC4306 (thread subscriptions) BLOCKED — not supported Upstream Cinny confirms (removed from build queue): - Back to Latest button (RoomTimeline.tsx:2180), Mark rooms as read (Home.tsx:73), Tombstone/upgrade banner (RoomTombstone.tsx), Speaking indicator (useCallSpeakers.ts), Spoiler rendering (ImageContent/VideoContent — blur+click-reveal), Report message Architecture facts documented: - AvatarImage child constraint (no children — wrap externally) - Sidebar translateX blocks backdrop-filter - EC bridge: no participant events (use m.call.member state events instead) - No in-app toast system (must build from scratch) - Voice player at AudioContent.tsx:44, notification sounds hardcoded in ClientNonUIFeatures Co-Authored-By: Claude Sonnet 4.6 --- LOTUS_TODO.md | 85 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 66 insertions(+), 19 deletions(-) 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 `