Skip to content

Add a Room Version 12 page - #17

Merged
melvincarvalho merged 2 commits into
mainfrom
new/room-v12
Oct 18, 2026
Merged

melvincarvalho merged 2 commits into
mainfrom
new/room-v12

Conversation

@melvincarvalho

Copy link
Copy Markdown
Contributor

Add a Room Version 12 page (docs/specification/room-v12.md), placed after Rooms in the Specification sidebar. Rooms gets one sentence linking to it.

What the page covers

  • Why v12 exists. Project Hydra, 2025-08: CVE-2025-49090 (state resets) and CVE-2025-54315 (create-event uniqueness). The page maps each fix to MSC4297, MSC4291, MSC4289 and MSC4304.
  • Creators and additional_creators. Creators have infinite power level, cannot appear in the users power levels (auth rule 10.4) and cannot be changed after the room is created. New v12 rooms set the tombstone power level above state_default (Synapse sets it to 150). The page carries a warning that creators can't be removed.
  • Room IDs are the create event's ID with !, and via routing.
  • The three state-resolution changes.
  • A table of code changes for clients, bots and bridges: room-ID parsing, power-level lookup, power_level_content_override, moderation, and following tombstones.
  • How to see a room's version: in Element, through the create event, the room summary or m.room_versions.
  • How to upgrade: the /upgraderoom 12 [@creators…] command, the API, and what happens to state and members.
  • Server support as of 2026-10.

Versions verified

spec v1.19; Synapse 1.163.0; Element Web 1.12.32 (and matrix-js-sdk 44.0.0); Dendrite 0.15.2; Conduit 0.10.15; continuwuity 26.9.1; tuwunel 1.9.4.

How claims were checked

  • Spec: content/rooms/v12.md, content/appendices.md (room IDs, routing), content/client-server-api/_index.md (permissions), modules/room_upgrades.md, data/api/client-server/{create_room,room_upgrades,rooms}.yaml, m.room.create.yaml and content/changelog/v1.16.md, for the MSC numbers and the date.
  • Synapse: the 1.162.0rc1 entry in CHANGES.md ("Raise default room version to 12"; 1.162.0 released 2026-09-29), DEFAULT_ROOM_VERSION = "12" in synapse/config/server.py, and config_documentation.md ("Changed in Synapse 1.162"). Tombstone 150, ban copying and removal of creators from users on upgrade are in synapse/handlers/room.py. Support was added in 1.135.2 (2025-08-11).
  • Element: at tag v1.12.32: the upgraderoom command and its argument parser (extra arguments become additional_creators), AdvancedRoomSettingsTab.tsx and the en_EN strings. The upgrade button shows only when needsUpgrade is set, and js-sdk checkVersionAgainstCapability sets that only for unstable versions.
  • Other servers: release notes from the GitHub, GitLab and Forgejo APIs, and the default room version in source at each latest tag. Dendrite defaults to RoomVersionV10; Conduit, continuwuity and tuwunel default to V12.
  • tools/gate.sh: 0 findings. tools/build.sh: passes.

Links checked

Every external link returned 200 with curl -sIL. These spec anchors were confirmed in the v1.19 HTML: #client-considerations, #authorisation-rules, #state-resolution, #permissions, #post_matrixclientv3createroom, #room-upgrades, #post_matrixclientv3roomsroomidupgrade, #get_matrixclientv3roomsroomidstateeventtypestatekey, #mroomcreate, #get_matrixclientv1room_summaryroomidoralias, #mroom_versions-capability, #complete-list-of-room-versions, appendices/#room-ids, #routing, and rooms/v2/#state-resolution. The Synapse anchor #default_room_version was also confirmed.

@melvincarvalho
melvincarvalho merged commit cb820b7 into main Oct 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant