docs: add blocked features section, upstream improvements, TDS design law
CI / Build & Quality Checks (push) Failing after 5m43s
CI / Build & Quality Checks (push) Failing after 5m43s
- 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 <noreply@anthropic.com>
This commit is contained in:
+75
-30
@@ -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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user