Matrix: a room cannot be upgraded, only followed #218

Closed
opened 2026-09-13 11:59:33 -04:00 by Salastil · 1 comment
Owner

m.room.tombstone is read (roomstate.rs:140) so an upgraded room is followed to its replacement, but there is no POST /rooms/{roomId}/upgrade.

So moho can go where an upgrade leads and cannot perform one. That matters when a room is on an old room version and an admin using moho wants to move it - the whole operation has to happen in another client.

`m.room.tombstone` is read (`roomstate.rs:140`) so an upgraded room is followed to its replacement, but there is no `POST /rooms/{roomId}/upgrade`. So moho can go where an upgrade leads and cannot perform one. That matters when a room is on an old room version and an admin using moho wants to move it - the whole operation has to happen in another client.
Salastil added the featurelow priority labels 2026-09-13 11:59:33 -04:00
Author
Owner

Finished.

Offered only where there is somewhere to go: a room already on the server's default is not upgradable to itself, and a button whose only outcome is an identical new room with everybody's scrollback left behind is a trap. Gated on being able to write the tombstone, which is the part of the operation that belongs to this account rather than to the server.

Two presses, and the second spells out what the first cannot be allowed to hide: the conversation stays in the old room, and the people in it cross over as their own clients notice the tombstone. The replacement is joined here rather than left to be noticed — the server puts the upgrading account in it in most deployments, but the sync that says so can be seconds away, and an Upgrade that appears to do nothing is worse than one that takes a moment.

91c1d19

Finished. Offered only where there is somewhere to go: a room already on the server's default is not upgradable to itself, and a button whose only outcome is an identical new room with everybody's scrollback left behind is a trap. Gated on being able to write the tombstone, which is the part of the operation that belongs to this account rather than to the server. Two presses, and the second spells out what the first cannot be allowed to hide: the conversation stays in the old room, and the people in it cross over as their own clients notice the tombstone. The replacement is joined here rather than left to be noticed — the server puts the upgrading account in it in most deployments, but the sync that says so can be seconds away, and an Upgrade that appears to do nothing is worse than one that takes a moment. [91c1d19](https://git.salastil.com/Salastil/moho/commit/91c1d19)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Salastil/moho#218