From 7bc2b93e4c7bd9e1df771a065566f7dec81fd1ce Mon Sep 17 00:00:00 2001 From: timedout Date: Fri, 26 Jun 2026 09:35:26 +0100 Subject: [PATCH] Implement unstable support for MSC4491 (#19874) Signed-off-by: timedout --- changelog.d/19874.feature | 1 + synapse/config/experimental.py | 3 +++ synapse/handlers/room.py | 5 +++++ synapse/rest/client/versions.py | 1 + 4 files changed, 10 insertions(+) create mode 100644 changelog.d/19874.feature diff --git a/changelog.d/19874.feature b/changelog.d/19874.feature new file mode 100644 index 0000000000..57238e820f --- /dev/null +++ b/changelog.d/19874.feature @@ -0,0 +1 @@ +Add experimental support for [MSC4491: Invite reasons in room creation](https://github.com/matrix-org/matrix-spec-proposals/pull/4491). \ No newline at end of file diff --git a/synapse/config/experimental.py b/synapse/config/experimental.py index 120b31cee5..2d74e9b886 100644 --- a/synapse/config/experimental.py +++ b/synapse/config/experimental.py @@ -622,3 +622,6 @@ class ExperimentalConfig(Config): # MSC4455: Preview URL capability # Tracked in: https://github.com/element-hq/synapse/issues/19719 self.msc4452_enabled: bool = experimental.get("msc4452_enabled", False) + + # MSC4491: Invite reasons in room creation + self.msc4491_enabled: bool = experimental.get("msc4491_enabled", False) diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index 13647caa2a..c75fff9170 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -1345,6 +1345,11 @@ class RoomCreationHandler: if is_direct: content["is_direct"] = is_direct + if self.config.experimental.msc4491_enabled: + reason = config.get("uk.timedout.msc4491.invite_reason") + if reason and isinstance(reason, str): + content["reason"] = reason + for invitee in invite_list: ( member_event_id, diff --git a/synapse/rest/client/versions.py b/synapse/rest/client/versions.py index bb1711f2cf..f5e91ded1b 100644 --- a/synapse/rest/client/versions.py +++ b/synapse/rest/client/versions.py @@ -208,6 +208,7 @@ class VersionsRestServlet(RestServlet): "org.matrix.msc4380.stable": True, # MSC4445: Sync timeline order "org.matrix.msc4445.initial_sync_timeline_topological_ordering": True, + "uk.timedout.msc4491.create_room_invite_reasons": self.config.experimental.msc4491_enabled, }, }, )