Compare commits

...

3 commits

Author SHA1 Message Date
gewitternacht bf5fbc9945
use User ID type in OlmPayload and DeviceKeys (#2412)
Some checks are pending
Spec / 🔎 Validate OpenAPI specifications (push) Waiting to run
Spec / 🔎 Check Event schema examples (push) Waiting to run
Spec / 🔎 Check OpenAPI definitions examples (push) Waiting to run
Spec / 🔎 Check JSON Schemas inline examples (push) Waiting to run
Spec / ⚙️ Calculate baseURL for later jobs (push) Waiting to run
Spec / 🐍 Build OpenAPI definitions (push) Blocked by required conditions
Spec / 📢 Run towncrier for changelog (push) Waiting to run
Spec / 📖 Build the spec (push) Blocked by required conditions
Spec / 🔎 Validate generated HTML (push) Blocked by required conditions
Spec / 📖 Build the historical backup spec (push) Blocked by required conditions
Spec / Create release (push) Blocked by required conditions
Spell Check / Spell Check with Typos (push) Waiting to run
* use User ID type in OlmPayload and DeviceKeys

Signed-off-by: Johanna Stuber <johannas@element.io>

* add newsfragment

Signed-off-by: Johanna Stuber <johannas@element.io>

---------

Signed-off-by: Johanna Stuber <johannas@element.io>
2026-07-14 18:42:07 -04:00
Hagen 1edf62c3f1
Spec for MSC4402: Consistent redirects for .well-known-files (#2404)
* Spec for MSC4402: Consistent redirects for .well-known-files

Signed-off-by: Hagen Echzell <hagene@uio.no>

* Add changelog file

Signed-off-by: Hagen Echzell <hagene@uio.no>

* Indicate spec version for changes

Signed-off-by: Hagen Echzell <hagene@uio.no>

* Capitalize some `should`s

Signed-off-by: Hagen Echzell <hagene@uio.no>

* Increment added-in spec version after release of 1.19

Signed-off-by: Hagen Echzell <hagene@uio.no>

---------

Signed-off-by: Hagen Echzell <hagene@uio.no>
2026-07-14 18:28:49 -04:00
Kim Brose 97fcfd93d9
Clarifications and spelling (#2417)
* remove confusing redundant clause

Signed-off-by: HarHarLinks <2803622+HarHarLinks@users.noreply.github.com>

* clarify the class of relation disallowed in threads

Signed-off-by: HarHarLinks <2803622+HarHarLinks@users.noreply.github.com>

* spelling

Signed-off-by: HarHarLinks <2803622+HarHarLinks@users.noreply.github.com>

* add newsfragment

Signed-off-by: HarHarLinks <2803622+HarHarLinks@users.noreply.github.com>

---------

Signed-off-by: HarHarLinks <2803622+HarHarLinks@users.noreply.github.com>
2026-07-14 18:05:35 -04:00
9 changed files with 20 additions and 4 deletions

View file

@ -0,0 +1 @@
Clients are now supposed to follow 30x redirects from `/.well-known/matrix/client` as per [MSC4402](https://github.com/matrix-org/matrix-spec-proposals/pull/4402).

View file

@ -0,0 +1 @@
Use the User ID type in OlmPayload and DeviceKeys.

View file

@ -0,0 +1 @@
Wording improvements and spelling fixes. Contributed by @HarHarLinks.

View file

@ -429,6 +429,7 @@ Instead, they can be reached via HTTPS on the [server name](/appendices/#server-
Servers hosting the `.well-known` JSON file SHOULD offer CORS headers, Servers hosting the `.well-known` JSON file SHOULD offer CORS headers,
as per the [CORS](#web-browser-clients) section in this specification. as per the [CORS](#web-browser-clients) section in this specification.
{{% added-in v="1.20" %}} Servers SHOULD also ensure that each 30x redirect, if any, offers such CORS headers.
{{% /boxes/note %}} {{% /boxes/note %}}
The flow for auto-discovery is as follows: The flow for auto-discovery is as follows:
@ -437,6 +438,7 @@ The flow for auto-discovery is as follows:
Matrix ID at the first colon. Matrix ID at the first colon.
2. Extract the hostname from the server name as described by the [grammar](/appendices/#server-name). 2. Extract the hostname from the server name as described by the [grammar](/appendices/#server-name).
3. Make a GET request to `https://hostname/.well-known/matrix/client`. 3. Make a GET request to `https://hostname/.well-known/matrix/client`.
{{% added-in v="1.20" %}} 30x redirects SHOULD be followed, however redirection loops should be avoided.
1. If the returned status code is 404, then `IGNORE`. 1. If the returned status code is 404, then `IGNORE`.
2. If the returned status code is not 200, or the response body is 2. If the returned status code is not 200, or the response body is
empty, then `FAIL_PROMPT`. empty, then `FAIL_PROMPT`.
@ -3660,7 +3662,7 @@ The actual aggregation format depends on the `rel_type`.
When an event is served to the client through the APIs listed below, a When an event is served to the client through the APIs listed below, a
`m.relations` property is included under `unsigned` if the event has child `m.relations` property is included under `unsigned` if the event has child
events which can be aggregated and point at it. The `m.relations` property is events which can be aggregated. The `m.relations` property is
an object keyed by `rel_type` and value being the type-specific aggregated an object keyed by `rel_type` and value being the type-specific aggregated
format for that `rel_type`. This `m.relations` property is known as a "bundled format for that `rel_type`. This `m.relations` property is known as a "bundled
aggregation". aggregation".

View file

@ -191,7 +191,7 @@ Note that, as in the example above, child events of the `latest_event` should
themselves be aggregated and included under `m.relations` for that event. The themselves be aggregated and included under `m.relations` for that event. The
server should be careful to avoid loops, though loops are not currently server should be careful to avoid loops, though loops are not currently
possible due to `m.thread` not being permitted to target an event with an possible due to `m.thread` not being permitted to target an event with an
`m.relates_to` property. `m.relates_to` property with a `rel_type`.
`count` is simply the number of events using `m.thread` as a `rel_type` pointing to the target event. `count` is simply the number of events using `m.thread` as a `rel_type` pointing to the target event.
It does not include events sent by [ignored users](#ignoring-users). It does not include events sent by [ignored users](#ignoring-users).

View file

@ -20,6 +20,8 @@ properties:
description: |- description: |-
The ID of the user the device belongs to. Must match the user ID used The ID of the user the device belongs to. Must match the user ID used
when logging in. when logging in.
format: mx-user-id
pattern: "^@"
example: "@alice:example.com" example: "@alice:example.com"
device_id: device_id:
type: string type: string

View file

@ -27,9 +27,13 @@ properties:
sender: sender:
type: string type: string
description: The user ID of the event sender. description: The user ID of the event sender.
format: mx-user-id
pattern: "^@"
recipient: recipient:
type: string type: string
description: The user ID of the intended event recipient. description: The user ID of the intended event recipient.
format: mx-user-id
pattern: "^@"
recipient_keys: recipient_keys:
description: The recipient's signing keys of the encrypted event. description: The recipient's signing keys of the encrypted event.
$ref: "#/components/schemas/SigningKeys" $ref: "#/components/schemas/SigningKeys"

View file

@ -1,4 +1,5 @@
# Copyright 2018 New Vector Ltd # Copyright 2018 New Vector Ltd
# Copyright 2026 Hagen Echzell
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -20,7 +21,11 @@ paths:
get: get:
summary: Gets Matrix server discovery information about the domain. summary: Gets Matrix server discovery information about the domain.
description: |- description: |-
Gets discovery information about the domain. The file may include Gets discovery information about the domain.
{{% added-in v="1.20" %}} Clients SHOULD follow 30x redirects, carefully
avoiding redirect loops, and use normal X.509 certificate validation.
The file may include
additional keys, which MUST follow the Java package naming convention, additional keys, which MUST follow the Java package naming convention,
e.g. `com.example.myapp.property`. This ensures property names are e.g. `com.example.myapp.property`. This ensures property names are
suitably namespaced for each application and reduces the risk of suitably namespaced for each application and reduces the risk of