[research] Space notice / MOTD banner — pick the spec-compliant data source #111

Open
opened 2026-09-17 13:27:07 -04:00 by jared · 0 comments
Owner

Question raised 2026-09-17: is a space-wide notice standard, how would it be stored, and what do other clients see?

There is no MOTD/banner event in the Matrix spec. Three compliant ways to carry the data, from most to least interoperable:

  1. Pinned message in a designated announcements room (m.room.pinned_events, spec). Lotus renders the latest pin of the space's announcements room as a dismissible banner across the space's rooms; Element/other clients see it as an ordinary pinned message in that room. Nothing custom on the wire.
  2. Space topic (m.room.topic / MSC3765 rich topics — Lotus already renders rich topics). Shown by every client in the space header; Lotus would additionally surface it in child rooms. Less flexible (one topic, no expiry).
  3. Custom state event io.lotus.notice on the space (spec allows namespaced custom events). Only Lotus renders it; other clients ignore unknown state events silently (Element shows nothing unless "show hidden events" is on). Most flexible (expiry, severity), least interoperable.

Research deliverable

  • Recommend (1) unless a reason emerges; design: which room is "the announcements room" (space child with a tag? first child named #announcements? explicit io.lotus.space_config?), dismissal state (local vs m.read), expiry, PL gating of who can pin there.
  • Mock-up of the banner in the room header area, mobile and desktop.
  • No implementation until reviewed.
Question raised 2026-09-17: is a space-wide notice standard, how would it be stored, and what do other clients see? **There is no MOTD/banner event in the Matrix spec.** Three compliant ways to carry the data, from most to least interoperable: 1. **Pinned message in a designated announcements room** (`m.room.pinned_events`, spec). Lotus renders the latest pin of the space's announcements room as a dismissible banner across the space's rooms; Element/other clients see it as an ordinary pinned message in that room. Nothing custom on the wire. 2. **Space topic** (`m.room.topic` / MSC3765 rich topics — Lotus already renders rich topics). Shown by every client in the space header; Lotus would additionally surface it in child rooms. Less flexible (one topic, no expiry). 3. **Custom state event** `io.lotus.notice` on the space (spec allows namespaced custom events). Only Lotus renders it; other clients ignore unknown state events silently (Element shows nothing unless "show hidden events" is on). Most flexible (expiry, severity), least interoperable. ### Research deliverable - Recommend (1) unless a reason emerges; design: which room is "the announcements room" (space child with a tag? first child named `#announcements`? explicit `io.lotus.space_config`?), dismissal state (local vs `m.read`), expiry, PL gating of who can pin there. - Mock-up of the banner in the room header area, mobile and desktop. - No implementation until reviewed.
jared added this to the Features 2026-Q4 milestone 2026-09-17 13:27:07 -04:00
jared added the enhancementpriority: lowarea: navigationresearch labels 2026-09-17 13:27:07 -04:00
jared self-assigned this 2026-09-17 13:27:07 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#111