# Lotus Chat β€” Work Backlog **Repo:** `lotus` branch at `https://code.lotusguild.org/LotusGuild/cinny` **Deploy:** push to `lotus` β†’ CI β†’ auto-deploy to `chat.lotusguild.org` (~11 min) --- ## πŸ—οΈ Infrastructure & Maintenance - [ ] **Upgrade Synapse to v1.155.0** - **Context:** Synapse 1.155.0 is the last version supporting Debian 12 Bookworm. - **Reference:** https://github.com/element-hq/synapse/releases/tag/v1.155.0 - **Plan:** Review release notes, backup database and media store on LXC 151, perform upgrade in a staging environment if possible, then production. Prepare for OS migration to Debian 13 afterward. --- ## πŸ“± Quick Feature Additions - [ ] **Full-Screen Camera Broadcasts** - **Context:** Element Call currently supports full-screening screenshares. We need to parity this functionality for camera broadcasts. - **Goal:** Users should be able to toggle any camera feed to full-screen mode, similar to the existing screenshare full-screen implementation. --- ## ⚠️ 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. --- Completed features are documented in [LOTUS_FEATURES.md](./LOTUS_FEATURES.md). --- 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 - `[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 --- ## Server Capabilities (as of June 2026) - **Homeserver:** `matrix.lotusguild.org` - **Synapse version:** `1.153.0` (2026-05-19) β€” fully up to date - **Matrix spec:** up to `v1.12` formally; newer MSC features via `unstable_features` ### Confirmed facts | Finding | Impact | | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | | **MSC flags ON:** `msc4140` Β· `msc3771` Β· `msc3440.stable` Β· `msc4133.stable` Β· `simplified_msc3575` | All safe to use now | | **MSC flags OFF:** `msc4306` (thread subscriptions) Β· `msc3882` Β· `msc3912` Β· `msc4155` | These features are BLOCKED | | **MSC3266** room summary: returns 404 | Room Preview feature BLOCKED | | **MSC3892** relation redaction: not in flags | Reaction Redaction feature BLOCKED | | **MSC4260** report user: server at v1.12, endpoint may not exist | Report User feature BLOCKED | | **MSC4151** report room: HTTP 405 on GET = endpoint exists (POST only) | Report Room live βœ… | | `folds AvatarImage` does NOT accept children | Add frame/overlay inside `UserAvatar.tsx` itself β€” optional `frameName` prop | | No in-app toast system exists (was) | Built `ToastProvider` + Jotai queue; at `App.tsx:65` | | `useUnverifiedDeviceCount()` hook exists | `src/app/hooks/useDeviceVerificationStatus.ts:65-106` | | Voice player: `AudioContent.tsx:44-223` | Playback rate on hidden `