Block a user
Media Gallery: opening it scrolls the room timeline into the past while it loads older media
Reproduced and fixed —
Reproduced and fixed — d929143f
Reproduction (Playwright against a local Synapse, scripts/dev-homeserver.sh + scripts/dev-seed.py, 400-message room with 40 images):
[research] "Copy Link" should open in Lotus for guild members — matrix.to client hints vs direct chat.lotusguild.org permalinks
Built and verified —
Built and verified — f528e5e4
Facts from the raw sources (not summaries): matrix.to/src/open/clients/Cinny.js hard-codes https://app.cinny.in/ and emits ?via=a,b; Element.js is the…
[research] "Copy Link" should open in Lotus for guild members — matrix.to client hints vs direct chat.lotusguild.org permalinks
Research findings (2026-09-17)
What Lotus produces today
Four places copy a link, all through src/app/plugins/matrix-to.ts and all https://matrix.to/#/…:
Media Gallery: opening it scrolls the room timeline into the past while it loads older media
Root cause (confirmed in code, 2026-09-17)
The gallery paginates the room's live timeline — the very object the message list is rendering:
// src/app/features/room/MediaGallery.tsx:…
Landing page overhaul: replace the 4,000-word feature paragraph + duplicated comparison table with structured, single-source sections
Search / permalink jump: highlight the target message for ~3 s
Search / permalink jump: highlight the target message for ~3 s
Already implemented upstream: RoomTimeline.tsx sets focusItem.highlight when jumping to an event (permalink, search result, reply click) and Message renders the highlight state. Nothing to…
[gated on infra] Invite by email (3PID → identity server), QR sign-in for a new device (MSC4108 rendezvous), dehydrated devices (MSC3814)
[verify] ML noise suppression (P5-30): real-call by-ear A/B of model / floor / AGC; GTCRN deferred
EC fork Phase 2 (P6-2): after publishing
0.20.1-lotus.2, bump the pin and delete the CallControl.ts .muted DOM fallback
Build / typing hygiene notes:
lotusDenoise closeBundle fs work, types/matrix drift vs the SDK, gradual as any cleanup
Quick reply from a browser notification (P5-20, remaining half): inline reply via Notification Actions through the SW
Persisted PII without encryption: status message + expiry and unsent composer drafts sit in plaintext localStorage
Room Widgets v1 follow-ups: capability-approval consent prompt, Jitsi/stickerpicker types, account-data widgets, per-widget popout
[parked] Sliding Sync (MSC3575 / simplified MSC4186) — server GA, client side judged not safe to roll out
[planning] E2EE / call-key cluster KE-1→4: OTK upload conflict storm, EC MissingKey, malformed
algorithm, MatrixRTC delayed-event timeouts — capture first, do not spot-fix
Web Push (N107):
sw.ts has no push handler — background notifications need a push listener + a Matrix push gateway