[QA] Disappearing messages (m.room.retention): timeline hide per preset, Show Hidden Events, self-only enforced redaction #190

Closed
opened 2026-09-17 23:24:11 -04:00 by jared · 1 comment
Owner

Migrated from LOTUS_TESTING.md → Outstanding verification backlog on 2026-09-17.

Shipped and CI-green; needs one human pass. Close when every check below holds; on FAIL comment with what you saw, browser/OS, web vs desktop, theme, console errors.

  • Verified live

Disappearing Messages (MSC1763 m.room.retention, 2026-07): In Room Settings → General → Message Retention, an admin picks Off / 1 Day / 1 Week / 1 Month (non-admins see the buttons disabled). After setting e.g. 1 Day, messages older than a day vanish from the timeline for everyone in Lotus (toggle Settings → General → Show Hidden Events to reveal them again). Setting back to Off restores them. Separately, each user can enable Settings → General → Enforce Message Retention (default OFF) → their OWN expired messages then get permanently redacted within ~30 s (verify: OTHER people's messages are NEVER redacted by this; only your own). Note true server-side purge also needs Synapse retention: configured.

_Migrated from `LOTUS_TESTING.md` → Outstanding verification backlog on 2026-09-17._ Shipped and CI-green; needs one human pass. Close when every check below holds; on FAIL comment with what you saw, browser/OS, web vs desktop, theme, console errors. - [ ] Verified live --- **Disappearing Messages (MSC1763 `m.room.retention`, 2026-07):** In Room Settings → General → **Message Retention**, an admin picks Off / 1 Day / 1 Week / 1 Month (non-admins see the buttons disabled). After setting e.g. 1 Day, messages older than a day **vanish from the timeline** for everyone in Lotus (toggle Settings → General → **Show Hidden Events** to reveal them again). Setting back to **Off** restores them. Separately, each user can enable Settings → General → **Enforce Message Retention** (default OFF) → their OWN expired messages then get **permanently redacted** within ~30 s (verify: OTHER people's messages are NEVER redacted by this; only your own). Note true server-side purge also needs Synapse `retention:` configured.
jared added this to the Manual QA backlog milestone 2026-09-17 23:24:11 -04:00
jared added the securityarea: messagingqa labels 2026-09-17 23:24:11 -04:00
Author
Owner

Verified on the local dev homeserver with Playwright (fresh room, alice admin, 3 old messages each from alice and bob; m.room.retention set to a 60 s max_lifetime via the API so the test does not need a day — the client reads max_lifetime generically, the presets are just 1 Day / 1 Week / 1 Month):

step result
Room Settings → General shows Message Retention with Off / 1 Day / 1 Week / 1 Month for the admin
after the window passes, timeline shows only the two new messages; all six old ones hidden
Settings → Show Hidden Events on → all six reappear
Show Hidden Events off, Enforce Message Retention on → after the next 30 s sweep: alice's 3 old events redacted (redacted_because on the server), bob's 3 intact ✓ (self-only, as designed)
retention set back to Off → bob's old messages reappear (alice's are gone for good, expected)

One UX note, not a bug: enabling Enforce does not sweep immediately — the interval is 30 s (ClientNonUIFeatures.tsx:837), so the first redactions land up to 30 s after the toggle. Closing.

Verified on the local dev homeserver with Playwright (fresh room, alice admin, 3 old messages each from alice and bob; `m.room.retention` set to a 60 s `max_lifetime` via the API so the test does not need a day — the client reads `max_lifetime` generically, the presets are just 1 Day / 1 Week / 1 Month): | step | result | |---|---| | Room Settings → General shows **Message Retention** with Off / 1 Day / 1 Week / 1 Month for the admin | ✓ | | after the window passes, timeline shows only the two new messages; all six old ones hidden | ✓ | | Settings → **Show Hidden Events** on → all six reappear | ✓ | | Show Hidden Events off, **Enforce Message Retention** on → after the next 30 s sweep: alice's 3 old events **redacted** (`redacted_because` on the server), bob's 3 **intact** | ✓ (self-only, as designed) | | retention set back to Off → bob's old messages reappear (alice's are gone for good, expected) | ✓ | One UX note, not a bug: enabling Enforce does not sweep immediately — the interval is 30 s (`ClientNonUIFeatures.tsx:837`), so the first redactions land up to 30 s after the toggle. Closing.
jared closed this issue 2026-09-18 00:52:24 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#190