From 0b5db6824212ac0be0d7a95fd14f2100e688fd9c Mon Sep 17 00:00:00 2001 From: Guzio <35845447+GuzioMG@users.noreply.github.com> Date: Fri, 6 Mar 2026 18:21:02 +0100 Subject: [PATCH 1/6] clarification: Correct wording in appservice docs (#2330) --- changelogs/application_service/newsfragments/2330.clarification | 1 + content/application-service-api.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelogs/application_service/newsfragments/2330.clarification diff --git a/changelogs/application_service/newsfragments/2330.clarification b/changelogs/application_service/newsfragments/2330.clarification new file mode 100644 index 00000000..3ccb2333 --- /dev/null +++ b/changelogs/application_service/newsfragments/2330.clarification @@ -0,0 +1 @@ +Fix various typos throughout the specification. diff --git a/content/application-service-api.md b/content/application-service-api.md index d1b9c638..dab24133 100644 --- a/content/application-service-api.md +++ b/content/application-service-api.md @@ -84,7 +84,7 @@ For the `users` namespace, application services can only register interest in homeserver). Events affecting users on other homeservers are not sent to an application service, even if the user happens to match the one of the `users` namespaces (unless, of course, the event affects a room that the application service is interested in -for another room - for example, because there is another user in the room that the +for another reason - for example, because there is another user in the room that the application service is interested in). For the `rooms` and `aliases` namespaces, all events in a matching room will be From 6a001cccb01354281164a4b122a7d48468e30f6e Mon Sep 17 00:00:00 2001 From: Hugh Nimmo-Smith Date: Tue, 10 Mar 2026 17:53:14 +0000 Subject: [PATCH 2/6] Spec for MSC4335: M_USER_LIMIT_EXCEEDED error code (#2315) Signed-off-by: Hugh Nimmo-Smith hughns@element.io --- .../client_server/newsfragments/2315.feature | 1 + content/client-server-api/_index.md | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 changelogs/client_server/newsfragments/2315.feature diff --git a/changelogs/client_server/newsfragments/2315.feature b/changelogs/client_server/newsfragments/2315.feature new file mode 100644 index 00000000..77fecc1d --- /dev/null +++ b/changelogs/client_server/newsfragments/2315.feature @@ -0,0 +1 @@ +Add `M_USER_LIMIT_EXCEEDED` common error code, as per [MSC4335](https://github.com/matrix-org/matrix-spec-proposals/pull/4335). diff --git a/content/client-server-api/_index.md b/content/client-server-api/_index.md index c1c4a1f4..51441a4c 100644 --- a/content/client-server-api/_index.md +++ b/content/client-server-api/_index.md @@ -147,6 +147,37 @@ state (e.g.: sending messages, account data, etc) and not routes which only read state (e.g.: [`/sync`](#get_matrixclientv3sync), [`/user/{userId}/account_data/{type}`](#get_matrixclientv3useruseridaccount_datatype), etc). +`M_USER_LIMIT_EXCEEDED` +: {{% added-in v="1.18" %}} The request cannot be completed because the user has +exceeded (or the request would cause them to exceed) a limit associated with +their account. For example, a user may have reached their allocated storage +quota, reached a maximum number of allowed rooms, devices, or other +account-scoped resources, or exceeded usage limits for specific features. + +: The error response MUST have an `info_uri` field (string), which is a URI +that the client can present to the user to provide more context on the +encountered limit and, if applicable, guidance on how to increase the limit. +The homeserver MAY return different values for `info_uri` depending on the type +of limit reached. + +: The error response MAY include a `can_upgrade` field (boolean, default `false`). +If `true`, it indicates that the specific limit encountered can be increased, +for example by upgrading the user's account tier. If absent or `false`, the +limit is a hard limit that cannot be increased. + +: The HTTP status code will depend on depend on the particular endpoint. + +: Example response: + + ```json + { + "errcode": "M_USER_LIMIT_EXCEEDED", + "error": "You have exceeded your storage quota of 10GB", + "info_uri": "https://example.com/homeserver/about?limit_type=quota", + "can_upgrade": true + } + ``` + `M_UNKNOWN` : An unknown error has occurred. From a6112535bf5a760b74f78080b21e2da025b7bc66 Mon Sep 17 00:00:00 2001 From: Logan Devine Date: Tue, 10 Mar 2026 11:34:47 -0700 Subject: [PATCH 3/6] clarification: add link to JSON signing algorithm on federation auth section (#2329) Signed-Off-By: Logan Devine logan@zirco.dev --- .../client_server/newsfragments/2329.clarification | 1 + content/server-server-api.md | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 changelogs/client_server/newsfragments/2329.clarification diff --git a/changelogs/client_server/newsfragments/2329.clarification b/changelogs/client_server/newsfragments/2329.clarification new file mode 100644 index 00000000..f3008f40 --- /dev/null +++ b/changelogs/client_server/newsfragments/2329.clarification @@ -0,0 +1 @@ +Add link to JSON signing algorithm in server-server auth section for clarity. Contributed by @thetayloredman. diff --git a/content/server-server-api.md b/content/server-server-api.md index bc393ae9..50104ed5 100644 --- a/content/server-server-api.md +++ b/content/server-server-api.md @@ -277,12 +277,12 @@ queried from multiple servers to mitigate against DNS spoofing. Every HTTP request made by a homeserver is authenticated using public key digital signatures. The request method, target and body are signed -by wrapping them in a JSON object and signing it using the JSON signing -algorithm. The resulting signatures are added as an Authorization header -with an auth scheme of `X-Matrix`. Note that the target field should -include the full path starting with `/_matrix/...`, including the `?` -and any query parameters if present, but should not include the leading -`https:`, nor the destination server's hostname. +by wrapping them in a JSON object and signing it using the [JSON signing +algorithm](/appendices#signing-json). The resulting signatures are added +as an Authorization header with an auth scheme of `X-Matrix`. Note that +the target field should include the full path starting with `/_matrix/...`, +including the `?` and any query parameters if present, but should not +include the leading `https:`, nor the destination server's hostname. Step 1 sign JSON: From 252de984ccef08104828077736e63a1a265e2d6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Commaille?= <76261501+zecakeh@users.noreply.github.com> Date: Tue, 10 Mar 2026 19:54:05 +0100 Subject: [PATCH 4/6] Spec for MSC4230: Flag for animated images (#2328) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Spec for MSC4230: Flag for animated images Signed-off-by: Kévin Commaille * Add changelog Signed-off-by: Kévin Commaille * Add x-addedInMatrixVersion property Signed-off-by: Kévin Commaille --------- Signed-off-by: Kévin Commaille --- .../client_server/newsfragments/2328.feature | 1 + .../examples/m.room.message$m.image.yaml | 3 ++- data/event-schemas/examples/m.sticker.yaml | 3 ++- .../msgtype_infos/image_info.yaml | 14 ++++++++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 changelogs/client_server/newsfragments/2328.feature diff --git a/changelogs/client_server/newsfragments/2328.feature b/changelogs/client_server/newsfragments/2328.feature new file mode 100644 index 00000000..3f544309 --- /dev/null +++ b/changelogs/client_server/newsfragments/2328.feature @@ -0,0 +1 @@ +Add the `is_animated` flag to the `info` object of the `m.image` msgtype and the `m.sticker` event, as per [MSC4230](https://github.com/matrix-org/matrix-spec-proposals/pull/423O). diff --git a/data/event-schemas/examples/m.room.message$m.image.yaml b/data/event-schemas/examples/m.room.message$m.image.yaml index a0e38c82..3a9cd0bc 100644 --- a/data/event-schemas/examples/m.room.message$m.image.yaml +++ b/data/event-schemas/examples/m.room.message$m.image.yaml @@ -7,7 +7,8 @@ "h": 398, "w": 394, "mimetype": "image/jpeg", - "size": 31037 + "size": 31037, + "is_animated": false }, "url": "mxc://example.org/JWEIFJgwEIhweiWJE", "msgtype": "m.image" diff --git a/data/event-schemas/examples/m.sticker.yaml b/data/event-schemas/examples/m.sticker.yaml index 971cdc90..c06d8c08 100644 --- a/data/event-schemas/examples/m.sticker.yaml +++ b/data/event-schemas/examples/m.sticker.yaml @@ -9,7 +9,8 @@ "mimetype": "image/png", "h": 200, "w": 140, - "size": 73602 + "size": 73602, + "is_animated": true }, "h": 200, "thumbnail_url": "mxc://matrix.org/sHhqkFCvSkFwtmvtETOtKnLP", diff --git a/data/event-schemas/schema/core-event-schema/msgtype_infos/image_info.yaml b/data/event-schemas/schema/core-event-schema/msgtype_infos/image_info.yaml index 4460cdee..90a3331c 100644 --- a/data/event-schemas/schema/core-event-schema/msgtype_infos/image_info.yaml +++ b/data/event-schemas/schema/core-event-schema/msgtype_infos/image_info.yaml @@ -34,5 +34,19 @@ properties: allOf: - $ref: thumbnail_info.yaml description: Metadata about the image referred to in `thumbnail_url`. + is_animated: + x-addedInMatrixVersion: "1.18" + description: |- + If this flag is `true`, the original image SHOULD be assumed to be + animated. If this flag is `false`, the original image SHOULD be assumed to + NOT be animated. + + If a sending client is unable to determine whether an image is animated, + it SHOULD leave the flag unset. + + Receiving clients MAY use this flag to optimize whether to download the + original image rather than a thumbnail if it is animated, but they SHOULD + NOT trust this flag. + type: boolean title: ImageInfo type: object From ce3aecab38e9c292de83250c36c2afa17730361c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Commaille?= <76261501+zecakeh@users.noreply.github.com> Date: Tue, 17 Mar 2026 02:18:37 +0100 Subject: [PATCH 5/6] Fix newsfragments (#2338) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix typo in newsfragment Signed-off-by: Kévin Commaille * Fix location of newsfragment Signed-off-by: Kévin Commaille * Add changelogs Signed-off-by: Kévin Commaille * Update changelogs/server_server/newsfragments/2338.clarification --------- Signed-off-by: Kévin Commaille Co-authored-by: Travis Ralston --- changelogs/client_server/newsfragments/2328.feature | 2 +- changelogs/client_server/newsfragments/2338.feature | 1 + .../newsfragments/2329.clarification | 0 changelogs/server_server/newsfragments/2338.clarification | 1 + 4 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 changelogs/client_server/newsfragments/2338.feature rename changelogs/{client_server => server_server}/newsfragments/2329.clarification (100%) create mode 100644 changelogs/server_server/newsfragments/2338.clarification diff --git a/changelogs/client_server/newsfragments/2328.feature b/changelogs/client_server/newsfragments/2328.feature index 3f544309..978a08f1 100644 --- a/changelogs/client_server/newsfragments/2328.feature +++ b/changelogs/client_server/newsfragments/2328.feature @@ -1 +1 @@ -Add the `is_animated` flag to the `info` object of the `m.image` msgtype and the `m.sticker` event, as per [MSC4230](https://github.com/matrix-org/matrix-spec-proposals/pull/423O). +Add the `is_animated` flag to the `info` object of the `m.image` msgtype and the `m.sticker` event, as per [MSC4230](https://github.com/matrix-org/matrix-spec-proposals/pull/4230). diff --git a/changelogs/client_server/newsfragments/2338.feature b/changelogs/client_server/newsfragments/2338.feature new file mode 100644 index 00000000..978a08f1 --- /dev/null +++ b/changelogs/client_server/newsfragments/2338.feature @@ -0,0 +1 @@ +Add the `is_animated` flag to the `info` object of the `m.image` msgtype and the `m.sticker` event, as per [MSC4230](https://github.com/matrix-org/matrix-spec-proposals/pull/4230). diff --git a/changelogs/client_server/newsfragments/2329.clarification b/changelogs/server_server/newsfragments/2329.clarification similarity index 100% rename from changelogs/client_server/newsfragments/2329.clarification rename to changelogs/server_server/newsfragments/2329.clarification diff --git a/changelogs/server_server/newsfragments/2338.clarification b/changelogs/server_server/newsfragments/2338.clarification new file mode 100644 index 00000000..3ccb2333 --- /dev/null +++ b/changelogs/server_server/newsfragments/2338.clarification @@ -0,0 +1 @@ +Fix various typos throughout the specification. From 22f3cc009bef3366989dd80887fc635886ea629e Mon Sep 17 00:00:00 2001 From: "No." Date: Mon, 16 Mar 2026 21:20:11 -0400 Subject: [PATCH 6/6] Fix typo for origin_server_ts field for in-room verification events (#2337) * Fix typo for origin_server_ts field for in-room verification events Signed-off-by: tusooa * Update changelogs/client_server/newsfragments/2337.clarification --------- Signed-off-by: tusooa Co-authored-by: Travis Ralston --- changelogs/client_server/newsfragments/2337.clarification | 1 + content/client-server-api/modules/end_to_end_encryption.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelogs/client_server/newsfragments/2337.clarification diff --git a/changelogs/client_server/newsfragments/2337.clarification b/changelogs/client_server/newsfragments/2337.clarification new file mode 100644 index 00000000..3ccb2333 --- /dev/null +++ b/changelogs/client_server/newsfragments/2337.clarification @@ -0,0 +1 @@ +Fix various typos throughout the specification. diff --git a/content/client-server-api/modules/end_to_end_encryption.md b/content/client-server-api/modules/end_to_end_encryption.md index 57bef790..1c3a82da 100644 --- a/content/client-server-api/modules/end_to_end_encryption.md +++ b/content/client-server-api/modules/end_to_end_encryption.md @@ -637,7 +637,7 @@ request. The prompt for Bob to accept/reject Alice's request (or the unsupported method prompt) should be automatically dismissed 10 minutes after the `timestamp` (in -the case of to-device messages) or `origin_ts` (in the case of in-room +the case of to-device messages) or `origin_server_ts` (in the case of in-room messages) field or 2 minutes after Bob's client receives the message, whichever comes first, if Bob does not interact with the prompt. The prompt should additionally be hidden if an appropriate `m.key.verification.cancel` message is