From c1f7e4c21d912da8fa1b55d7e767946c00d2adba Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Mon, 1 Jun 2026 13:21:39 -0400 Subject: [PATCH] docs: add blocked features section, upstream improvements, TDS design law MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Blocked section: MSC3892 (reaction redaction), MSC3266 (room preview), MSC4306 (thread subscriptions), MSC4260 (report user) — all noted with unblock conditions and next steps - 5 new [IMPROVE] tasks for upstream features: Jump to Latest (#104), spoiler transition (#105), report category (#106), speaking ring (#107), typing dots TDS (#108) - TDS design law banner added at top of file and repeated in Implementation Notes - Pinned messages count badge confirmed upstream (no action needed) - Audits 1, 2, 4 marked complete; audit 3 (profile banner) remains open - Upstream features table updated with improvement task cross-references Co-Authored-By: Claude Sonnet 4.6 --- LOTUS_TODO.md | 105 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 75 insertions(+), 30 deletions(-) diff --git a/LOTUS_TODO.md b/LOTUS_TODO.md index 7169bb00d..150868a4f 100644 --- a/LOTUS_TODO.md +++ b/LOTUS_TODO.md @@ -7,13 +7,25 @@ This file is the single source of truth for all planned, in-progress, and backlog features. Update it as features are completed or reprioritized. +--- + +## ⚠️ TDS DESIGN LAW — READ BEFORE TOUCHING ANY UI + +> **ALL Lotus Terminal Design System (TDS) styling — colors, animations, glows, borders, fonts, spacing — MUST come exclusively from `/root/code/web_template/base.css` CSS variables.** +> Do NOT hardcode hex values. Do NOT invent new variable names. Do NOT deviate from the design tokens defined in that file. +> The canonical variable reference: `--lt-accent-orange`, `--lt-accent-cyan`, `--lt-accent-green`, `--lt-glow-orange`, `--lt-box-glow-*`, `--lt-border-color`, etc. +> Reference implementation for code patterns: `/root/code/tinker_tickets/` (markdown.js, base.js, ticket.css) +> This rule applies to EVERY task in this file without exception. + +--- + Legend: -- `[AUDIT REQUIRED]` — at least one assumption in the description needs code/server verification before implementing -- `[UPSTREAM CHECK]` — may already be in upstream Cinny mainline; confirm before building -- `[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 +- `[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 +- `[EXTREME COMPLEXITY]` — multi-sprint, plan separately before touching +- `[BLOCKED]` — cannot build until a server upgrade, upstream MSC, or dependency resolves +- `[IMPROVE]` — feature exists in upstream Cinny; this task enhances it for Lotus Chat Status: `[ ]` pending · `[~]` in progress · `[x]` completed @@ -32,16 +44,18 @@ Status: `[ ]` pending · `[~]` in progress · `[x]` completed - **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 (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 | ### Upstream Cinny Features Confirmed MISSING (we should build these) Quick Switcher, Sidebar filter, Favorite rooms, Invite link generator, Edit history modal, @@ -980,31 +994,62 @@ All toggleable manually in Settings → Appearance regardless of date. Respects --- +## BLOCKED FEATURES (waiting on server/MSC support) + +These features are confirmed desirable but cannot be built until the listed dependency is resolved. +Check back after each Synapse upgrade — re-run `/matrix/client/versions` and `unstable_features` to see if they've become available. + +### [BLOCKED] · Reaction / Relation Redaction (MSC3892) +**Blocked by:** `org.matrix.msc3892` = false on `matrix.lotusguild.org` +**What it would do:** Cleanly remove a reaction without redacting the parent message. +**Current behavior:** Full event redaction — acceptable fallback, no user-facing issue. +**Action when unblocked:** Find `onReactionToggle` redaction call site; swap in MSC3892 endpoint with fallback. + +### [BLOCKED] · Room Preview Before Joining (MSC3266) +**Blocked by:** `GET /v1/rooms/{id}/summary` returns 404 — endpoint not available on this server +**What it would do:** Show room name, topic, avatar, member count before joining. +**Action when unblocked:** Build pre-join preview card; trigger on unjoined room navigation. + +### [BLOCKED] · Thread Subscriptions (MSC4306) +**Blocked by:** `org.matrix.msc4306` = false on `matrix.lotusguild.org` +**What it would do:** Follow a thread without posting; get notifications for replies. +**Action when unblocked:** Add "Follow thread" button in the thread panel header (depends on #11 Thread Panel). + +### [BLOCKED] · Report User (MSC4260) +**Blocked by:** Server declares only spec v1.12; MSC4260 merged in v1.14 — endpoint may not exist +**What it would do:** Report a specific user to homeserver admins (separate from reporting a message). +**Note:** Report Message already exists in upstream Cinny. This would add Report User to the profile panel. +**Action when unblocked:** Test `POST /_matrix/client/v3/users/{userId}/report`; if 200, add button to user profile. + +--- + ## AUDITS PENDING -Tasks that require investigation before any implementation: +### [x] Audit-1 · Suggested rooms in Space Lobby — CONFIRMED MISSING (build task #51 created) -### [ ] Audit-1 · Suggested rooms in Space Lobby (may be upstream) -Check `src/app/pages/client/space/` and space room list components for `m.space.child` `suggested: true` handling. If upstream Cinny already shows suggested rooms, close this task. - -### [ ] Audit-2 · Room upgrade / tombstone UX (may be upstream) -Search `RoomTimeline.tsx` and event renderers for `m.room.tombstone` handling. If upstream Cinny already shows a "room upgraded" banner and disables the composer, close this task. +### [x] Audit-2 · Room upgrade / tombstone UX — CONFIRMED EXISTS in upstream (RoomTombstone.tsx, RoomUpgrade.tsx) ### [ ] Audit-3 · Profile banner image — Matrix protocol support -Research whether Matrix spec or MSC4133 (v1.16) defines a standard profile banner field. If no cross-client standard exists, do not implement. Report findings. +Research whether Matrix spec or MSC4133 (v1.16) defines a standard profile banner field. `uk.tcpip.msc4133.stable = true` on our server — check if a `banner_url` or similar field is defined. If no cross-client standard exists, do not implement. -### [ ] Audit-4 · Visual speaking indicator in voice calls -Check Element Call participant UI and Cinny call view for existing speaking indicator. If present, determine if TDS styling is needed. If absent, implement animated speaking ring. +### [x] Audit-4 · Visual speaking indicator — CONFIRMED EXISTS (useCallSpeakers.ts, MemberSpeaking.tsx). TDS improvement task #107 created. --- ## IMPLEMENTATION NOTES -### Design Rules (non-negotiable) -- All TDS (Lotus Terminal theme) styling must come from `/root/code/web_template/base.css` CSS variables and token classes — do NOT invent new colors or patterns -- All new components must respect both TDS dark and TDS light modes -- Code syntax highlighting token classes: `.tok-kw .tok-str .tok-num .tok-cmt .tok-fn` (see web_template) -- Reference implementation for patterns: `/root/code/tinker_tickets/` +### ⚠️ TDS DESIGN LAW (repeated here for emphasis) +> Every TDS color, animation, glow, border, shadow, and font value MUST come from `/root/code/web_template/base.css`. +> Never hardcode hex values. Never invent CSS variable names. +> Key variables: `--lt-accent-orange` · `--lt-accent-cyan` · `--lt-accent-green` · `--lt-glow-*` · `--lt-box-glow-*` · `--lt-border-color` · `--lt-font-mono` +> Reference implementation: `/root/code/tinker_tickets/` (markdown.js, base.js, ticket.css) +> This applies without exception to every task marked `[IMPROVE]`, `[Build]`, or any UI change. + +### Design Rules +- All new components must respect both TDS dark (`LotusTerminalTheme`) and TDS light (`LotusTerminalLightTheme`) modes +- Non-TDS theme work (custom accent color, theme presets) uses vanilla-extract theme files — match the pattern in `src/lotus-terminal.css.ts` +- Code syntax highlighting token classes: `.tok-kw .tok-str .tok-num .tok-cmt .tok-fn` (defined in `web_template/base.css`) +- `folds AvatarImage` does NOT accept children — wrap Avatar components externally for overlays/frames/borders ### CI/CD Pipeline ```