From 44854a1529c62acdbce3ff4dc3336a777804cd5c Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Fri, 3 Jul 2026 13:45:44 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20park=20Sliding=20Sync=20(evaluated=20?= =?UTF-8?q?=E2=80=94=20not=20viable=20for=20a=20safe=20rollout)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three research passes concluded ~10% confidence a full rollout wouldn't break/regress (js-sdk SlidingSync is _internal_/experimental + labs-only at Element, presence not delivered over sliding sync, no upstream Cinny reference, and Cinny's nav is built from the full local room set — ~14 subsystems assume completeness). Server side is GA. Parked; revisit on Rust SDK adoption or large accounts. Full assessment in the plan history. Co-Authored-By: Claude Opus 4.8 --- LOTUS_TODO.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LOTUS_TODO.md b/LOTUS_TODO.md index 2c3c0d07c..47349de0b 100644 --- a/LOTUS_TODO.md +++ b/LOTUS_TODO.md @@ -105,10 +105,10 @@ Genuine Matrix client-spec / MSC features Lotus does **not** yet implement (audi - [x] **Disappearing Messages — MSC1763 `m.room.retention`.** PL-gated room-settings `SettingTile` to set `{ max_lifetime }`; retention badge; a client-side sweep hides/self-redacts own expired events (pattern like the mute-timer restore in `ClientNonUIFeatures.tsx`). True server deletion also wants Synapse `retention:` (LXC 151). - [x] **QR Device Verification — reciprocate QR.** Add the QR path beside emoji-SAS in `components/DeviceVerification.tsx`: render with `qrcode.react` (already a dep), scan via `BarcodeDetector` (fallback `jsQR`); uses the SDK `VerificationRequest` QR/reciprocate support. -**Phase C (Room Widgets ✅ 2026-07; Sliding Sync pending — its own session):** +**Phase C (Room Widgets ✅ 2026-07; Sliding Sync ❌ evaluated — parked):** - [x] **Room Widgets — MSC1236 + widget API.** No general widget UI exists (only the PL entry `im.vector.modular.widgets`; the EC call widget is hardcoded). Read `im.vector.modular.widgets`/`m.widget` state, add an Add/Manage panel + sandboxed iframe renderer via `matrix-widget-api` — **extend the existing EC widget plumbing** (`plugins/call/CallEmbed.ts`). Enables Etherpad/notes/dashboards/integrations. -- [ ] **Sliding Sync — MSC3575 / simplified MSC4186.** Lotus is on **legacy full `/sync`** though the server advertises `simplified_msc3575`. matrix-js-sdk ships `SlidingSync`; migration → near-instant cold start + low memory + huge-account scale. Touches the sync/room-list/spaces/unread core — behind a feature flag with a legacy fallback. **Plan separately before touching.** +- **[PARKED] Sliding Sync — MSC3575 / simplified MSC4186** (evaluated 2026-07, 3 research passes). Server side is GA (`simplified_msc3575`), but the **client** side is not viable for a safe rollout: matrix-js-sdk's `SlidingSync`/`SlidingSyncSdk` are `_internal_`/`@experimental` (Element shipped labs-only, never GA in ~2 yrs, moved to the Rust SDK); **presence isn't delivered over sliding sync** (regresses Lotus presence badges/rings/status); **no upstream Cinny impl** to follow; and Cinny's whole nav (sidebar/spaces/DM/unread) is derived from the **full local room set** (`allRoomsAtom` ← `mx.getRooms()`), so ~14 subsystems (4 core) need re-architecting to a server-windowed list. ~10% confidence a full rollout wouldn't break/regress (missing rooms/messages/unread = worst failure class). **Revisit only if we adopt the Rust SDK or accounts grow large enough that startup latency is a real complaint; an off-by-default experimental spike is possible but not recommended.** Full assessment: git plan history. **Room Widgets v1 follow-ups:** capability-approval consent prompt (let widgets request send/read room events); Jitsi/stickerpicker special types; account-data (user/sticker) widgets; per-widget popout / always-on-screen. Requires the prod CSP `frame-src` widening (done in `matrix/cinny/nginx.conf` → **`nginx -s reload`**) or external widgets are blocked.