Compare commits

...

11 commits

Author SHA1 Message Date
Patrick Cloke 5bb777284e
Merge e92c5ca539 into 4c2bb5aae1 2026-07-17 16:45:10 -04:00
networkException 4c2bb5aae1
Clarify user avatar_urls to always use MXC URIs (#2422)
Some checks failed
Spec / 🔎 Validate OpenAPI specifications (push) Has been cancelled
Spec / 🔎 Check Event schema examples (push) Has been cancelled
Spec / 🔎 Check OpenAPI definitions examples (push) Has been cancelled
Spec / 🔎 Check JSON Schemas inline examples (push) Has been cancelled
Spec / ⚙️ Calculate baseURL for later jobs (push) Has been cancelled
Spec / 📢 Run towncrier for changelog (push) Has been cancelled
Spell Check / Spell Check with Typos (push) Has been cancelled
Spec / 🐍 Build OpenAPI definitions (push) Has been cancelled
Spec / 📖 Build the spec (push) Has been cancelled
Spec / 🔎 Validate generated HTML (push) Has been cancelled
Spec / 📖 Build the historical backup spec (push) Has been cancelled
Spec / Create release (push) Has been cancelled
Previously the spec would use a mix of `string`, `URI`
and `MXC URI` for values of a user's `avatar_url` in
different apis (like `m.room.member`, `m.presence`,
CS profile endpoints).

This clarification updates all occurances to be MXC URIs,
prompted by https URIs `m.room.member#avatar_url` events
in the wild.

Signed-off-by: networkException <git@nwex.de>
2026-07-17 13:27:19 +02:00
gewitternacht f9dec5dc92
Fix typesetting of symbols in Olm/Megolm spec (#2421)
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
* properly typeset symbols in Olm/Megolm message format tables

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

* use \mathit in Olm spec analogously to Megolm spec

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

* add newsfragment

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

* fix typo

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

---------

Signed-off-by: Johanna Stuber <johannas@element.io>
2026-07-16 11:55:30 -04:00
Johannes Marbach 16b04f9d6c
Add further normative language in mutual rooms server behaviour (#2407)
* Add further normative language in mutual rooms server behaviour

Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>

* Avoid superfluous MUST

Co-authored-by: Hubert Chathi <hubertc@matrix.org>

---------

Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
Co-authored-by: Hubert Chathi <hubertc@matrix.org>
2026-07-16 11:18:09 -04:00
Kim Brose 966109da49
Clarify that clients must avoid producing ambiguous matrix.to URIs (#2396)
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
2026-07-15 17:43:19 +00:00
gewitternacht e2b879d13d
Rename OlmPayload -> OlmPlaintext to avoid confusion with Olm message Payload Bytes (#2418)
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
Signed-off-by: Johanna Stuber <johannas@element.io>
2026-07-15 10:41:01 +01:00
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
Travis Ralston 68994d7fcd Become unstable
Some checks failed
Spec / 🔎 Validate OpenAPI specifications (push) Has been cancelled
Spec / 🔎 Check Event schema examples (push) Has been cancelled
Spec / 🔎 Check OpenAPI definitions examples (push) Has been cancelled
Spec / 🔎 Check JSON Schemas inline examples (push) Has been cancelled
Spec / ⚙️ Calculate baseURL for later jobs (push) Has been cancelled
Spec / 📢 Run towncrier for changelog (push) Has been cancelled
Spell Check / Spell Check with Typos (push) Has been cancelled
Spec / 🐍 Build OpenAPI definitions (push) Has been cancelled
Spec / 📖 Build the spec (push) Has been cancelled
Spec / 🔎 Validate generated HTML (push) Has been cancelled
Spec / 📖 Build the historical backup spec (push) Has been cancelled
Spec / Create release (push) Has been cancelled
2026-07-08 08:28:42 -06:00
Travis Ralston b9c3d5ed3b Matrix 1.19 2026-07-08 08:27:35 -06:00
83 changed files with 189 additions and 98 deletions

View file

@ -1 +0,0 @@
Update the canonical JSON grammar with case sensitive strings and ABNF builtins to be easier to understand.

View file

@ -1 +0,0 @@
Fix various typos throughout the specification.

View file

@ -1 +0,0 @@
Clarify matrix.to RFC 3986 percent encoding requirements. Contributed by @HarHarLinks.

View file

@ -0,0 +1 @@
Clarify that clients must avoid producing ambiguous matrix.to URIs. Contributed by @HarHarLinks.

View file

@ -1 +0,0 @@
Add specification of URL-safe unpadded Base64.

View file

@ -1 +0,0 @@
Fix various typos throughout the specification.

View file

@ -1 +0,0 @@
Clarify SAS commitment calculation for `m.key.verification.accept` messages.

View file

@ -1 +0,0 @@
Specify `unsigned.replaces_state` in client-formatted events. Contributed by @nexy7574.

View file

@ -1 +0,0 @@
Clarify formats of string types.

View file

@ -1 +0,0 @@
Restore alphabetical order of common error codes.

View file

@ -1 +0,0 @@
Clarify formats of string types.

View file

@ -1 +0,0 @@
Fix various typos throughout the specification.

View file

@ -1 +0,0 @@
Clarify how to find `via` parameter when following room upgrades.

View file

@ -1 +0,0 @@
Specify `m.key_backup` account data, as per [MSC4287](https://github.com/matrix-org/matrix-spec-proposals/pull/4287).

View file

@ -1 +0,0 @@
Clarify formats of string types.

View file

@ -1 +0,0 @@
Clarify formats of string types.

View file

@ -1 +0,0 @@
Add `GET /_matrix/client/v1/mutual_rooms`, as per [MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666).

View file

@ -1 +0,0 @@
Clarify formats of string types.

View file

@ -1 +0,0 @@
Clarify that room messages can be encrypted.

View file

@ -1 +0,0 @@
Clarify how to paginate messages using the pagination tokens returned by `GET /rooms/{roomId}/context/{eventId}`.

View file

@ -1 +0,0 @@
Clarify formats of string types.

View file

@ -1 +0,0 @@
Clarify formats of string types.

View file

@ -1 +0,0 @@
Clarify formats of string types.

View file

@ -1 +0,0 @@
Clarify allowed characters in `mxc://` URIs.

View file

@ -1 +0,0 @@
Add link to RFC 9700 OAuth 2.0 Best Current Practices.

View file

@ -1 +0,0 @@
Add links from the Client-Server spec to the Olm message definitions.

View file

@ -1 +0,0 @@
Disambiguate placeholder descriptions in OlmPayload example.

View file

@ -1 +0,0 @@
Replace "Olm message" with "event encrypted using Olm" where not referring to the Olm message format.

View file

@ -1 +0,0 @@
Removed unused components in OpenAPI definitions.

View file

@ -1 +0,0 @@
Fix various typos throughout the specification.

View file

@ -1 +0,0 @@
The room directory now returns rooms in a server-defined order rather than largest first, as per [MSC4423](https://github.com/matrix-org/matrix-spec-proposals/pull/4423).

View file

@ -1 +0,0 @@
Add support for image packs (`m.room.image_pack` and `m.image_pack.rooms`), allowing custom emoticons and stickers to be organised into packs and shared between users, as per [MSC2545](https://github.com/matrix-org/matrix-spec-proposals/pull/2545).

View file

@ -1 +0,0 @@
Clarify definitions of `EncryptedFile` structure.

View file

@ -1 +0,0 @@
Specify encrypted history sharing, as per [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268).

View file

@ -1 +0,0 @@
Specify `unsigned.replaces_state` in client-formatted events. Contributed by @nexy7574.

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 @@
Add further normative language in mutual rooms server behaviour.

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

@ -0,0 +1 @@
Rename OlmPayload to OlmPlaintext to avoid confusion with Olm message Payload Bytes.

View file

@ -0,0 +1 @@
Use MXC URI type for all user `avatar_url` fields. Contributed by @networkException.

View file

@ -1 +0,0 @@
Fix various typos throughout the specification.

View file

@ -1 +0,0 @@
Add page search widget.

View file

@ -1 +0,0 @@
Update and fix GitHub Actions.

View file

@ -1 +0,0 @@
Upgrade Docsy theme to v0.14.3.

View file

@ -1 +0,0 @@
Configure a new changelog section for the Olm & Megolm specs.

View file

@ -1,2 +0,0 @@
Clarify use of UK vs US English in documentation style doc.

View file

@ -1 +0,0 @@
Update and fix GitHub Actions.

View file

@ -1 +0,0 @@
Ignore typos in copyright statements.

View file

@ -1 +0,0 @@
Update CODEOWNERS file.

View file

@ -1 +0,0 @@
Minor fixes to `check-newsfragments` CI script.

View file

@ -1 +0,0 @@
Update links to Olm in the Megolm section to point to the Matrix spec.

View file

@ -1 +0,0 @@
Fix various typos throughout the specification.

View file

@ -1 +0,0 @@
Update link from whispersystems.org to signal.org in the olm documentation.

View file

@ -0,0 +1 @@
Fix typesetting of some symbols in the Olm/Megolm spec.

View file

@ -1 +0,0 @@
Fix various typos throughout the specification.

View file

@ -1 +0,0 @@
Fix various typos throughout the specification.

View file

@ -1 +0,0 @@
Clarify the behaviour and response format of `GET /_matrix/federation/v1/query/profile`.

View file

@ -1 +0,0 @@
Clarify that server ACLs are case-insensitive, as per [MSC4436](https://github.com/matrix-org/matrix-spec-proposals/pull/4436).

View file

@ -1 +0,0 @@
Clarify how multiple signatures should be handled during signature verification. Contributed by @nexy7574.

View file

@ -1 +0,0 @@
Fix various typos throughout the specification.

View file

@ -1 +0,0 @@
Clarify that policy servers might share a name with event origins, and that servers should avoid overwriting/discarding signatures for the event origin when getting a policy server signature.

View file

@ -1 +0,0 @@
The room directory now returns rooms in a server-defined order rather than largest first, as per [MSC4423](https://github.com/matrix-org/matrix-spec-proposals/pull/4423).

View file

@ -76,8 +76,8 @@ status = "unstable"
current_version_url = "https://spec.matrix.org/latest"
# The following is used when status = "stable", and is displayed in various UI elements on a released version
# of the spec.
#major = "1"
#minor = "18"
# major = "1"
# minor = "19"
[[params.versions]]
# We must include this parameter to enable docsy's version picker in the navbar. The picker

View file

@ -887,20 +887,22 @@ https://matrix.to/#/<identifier>/<extra parameter>?<additional arguments>
The identifier may be a room ID, room alias, or user ID. The
extra parameter is only used in the case of permalinks where an event ID
is referenced. The matrix.to URI, when referenced, must always start
is referenced. The matrix.to URI, when referenced, MUST always start
with `https://matrix.to/#/` followed by the identifier.
The `<additional arguments>` and the preceding question mark are
optional and only apply in certain circumstances, documented below.
OPTIONAL and only apply in certain circumstances, documented below.
Clients should not rely on matrix.to URIs falling back to a web server
if accessed and instead should perform some sort of action within the
Clients SHOULD NOT rely on matrix.to URIs falling back to a web server
if accessed and instead SHOULD perform some sort of action within the
client. For example, if the user were to click on a matrix.to URI for a
room alias, the client may open a view for the user to participate in
room alias, the client MAY open a view for the user to participate in
the room.
The components of the matrix.to URI (`<identifier>` and
`<extra parameter>`) MUST be percent-encoded as per RFC 3986.
Failure to do so will result in downstream software misinterpreting
the links as invalid/not turning them into clickable links in UI.
Examples of matrix.to URIs are:

118
content/changelog/v1.19.md Normal file
View file

@ -0,0 +1,118 @@
---
title: v1.19 Changelog
linkTitle: v1.19
type: docs
layout: changelog
outputs:
- html
- checklist
date: 2026-07-08
---
## Client-Server API
**New Endpoints**
- Add `GET /_matrix/client/v1/mutual_rooms`, as per [MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666). ([#2367](https://github.com/matrix-org/matrix-spec/issues/2367))
**Backwards Compatible Changes**
- Specify `unsigned.replaces_state` in client-formatted events. Contributed by @nexy7574. ([#2345](https://github.com/matrix-org/matrix-spec/issues/2345), [#2403](https://github.com/matrix-org/matrix-spec/issues/2403))
- Specify `m.key_backup` account data, as per [MSC4287](https://github.com/matrix-org/matrix-spec-proposals/pull/4287). ([#2354](https://github.com/matrix-org/matrix-spec/issues/2354))
- The room directory now returns rooms in a server-defined order rather than largest first, as per [MSC4423](https://github.com/matrix-org/matrix-spec-proposals/pull/4423). ([#2392](https://github.com/matrix-org/matrix-spec/issues/2392))
- Add support for image packs (`m.room.image_pack` and `m.image_pack.rooms`), allowing custom emoticons and stickers to be organised into packs and shared between users, as per [MSC2545](https://github.com/matrix-org/matrix-spec-proposals/pull/2545). ([#2397](https://github.com/matrix-org/matrix-spec/issues/2397))
- Specify encrypted history sharing, as per [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268). ([#2399](https://github.com/matrix-org/matrix-spec/issues/2399))
**Spec Clarifications**
- Clarify SAS commitment calculation for `m.key.verification.accept` messages. ([#2344](https://github.com/matrix-org/matrix-spec/issues/2344))
- Clarify formats of string types. ([#2347](https://github.com/matrix-org/matrix-spec/issues/2347), [#2349](https://github.com/matrix-org/matrix-spec/issues/2349), [#2358](https://github.com/matrix-org/matrix-spec/issues/2358), [#2359](https://github.com/matrix-org/matrix-spec/issues/2359), [#2370](https://github.com/matrix-org/matrix-spec/issues/2370), [#2374](https://github.com/matrix-org/matrix-spec/issues/2374), [#2375](https://github.com/matrix-org/matrix-spec/issues/2375), [#2376](https://github.com/matrix-org/matrix-spec/issues/2376))
- Restore alphabetical order of common error codes. ([#2348](https://github.com/matrix-org/matrix-spec/issues/2348))
- Fix various typos throughout the specification. ([#2351](https://github.com/matrix-org/matrix-spec/issues/2351), [#2389](https://github.com/matrix-org/matrix-spec/issues/2389))
- Clarify how to find `via` parameter when following room upgrades. ([#2352](https://github.com/matrix-org/matrix-spec/issues/2352))
- Clarify that room messages can be encrypted. ([#2371](https://github.com/matrix-org/matrix-spec/issues/2371))
- Clarify how to paginate messages using the pagination tokens returned by `GET /rooms/{roomId}/context/{eventId}`. ([#2372](https://github.com/matrix-org/matrix-spec/issues/2372))
- Clarify allowed characters in `mxc://` URIs. ([#2377](https://github.com/matrix-org/matrix-spec/issues/2377))
- Add link to RFC 9700 OAuth 2.0 Best Current Practices. ([#2379](https://github.com/matrix-org/matrix-spec/issues/2379))
- Add links from the Client-Server spec to the Olm message definitions. ([#2381](https://github.com/matrix-org/matrix-spec/issues/2381))
- Disambiguate placeholder descriptions in OlmPayload example. ([#2382](https://github.com/matrix-org/matrix-spec/issues/2382))
- Replace "Olm message" with "event encrypted using Olm" where not referring to the Olm message format. ([#2383](https://github.com/matrix-org/matrix-spec/issues/2383))
- Removed unused components in OpenAPI definitions. ([#2386](https://github.com/matrix-org/matrix-spec/issues/2386))
- Clarify definitions of `EncryptedFile` structure. ([#2398](https://github.com/matrix-org/matrix-spec/issues/2398))
## Server-Server API
**Backwards Compatible Changes**
- The room directory now returns rooms in a server-defined order rather than largest first, as per [MSC4423](https://github.com/matrix-org/matrix-spec-proposals/pull/4423). ([#2392](https://github.com/matrix-org/matrix-spec/issues/2392))
**Spec Clarifications**
- Clarify the behaviour and response format of `GET /_matrix/federation/v1/query/profile`. ([#2326](https://github.com/matrix-org/matrix-spec/issues/2326))
- Clarify that server ACLs are case-insensitive, as per [MSC4436](https://github.com/matrix-org/matrix-spec-proposals/pull/4436). ([#2334](https://github.com/matrix-org/matrix-spec/issues/2334))
- Clarify how multiple signatures should be handled during signature verification. Contributed by @nexy7574. ([#2341](https://github.com/matrix-org/matrix-spec/issues/2341))
- Fix various typos throughout the specification. ([#2351](https://github.com/matrix-org/matrix-spec/issues/2351))
- Clarify that policy servers might share a name with event origins, and that servers should avoid overwriting/discarding signatures for the event origin when getting a policy server signature. ([#2385](https://github.com/matrix-org/matrix-spec/issues/2385))
## Application Service API
**Spec Clarifications**
- Fix various typos throughout the specification. ([#2351](https://github.com/matrix-org/matrix-spec/issues/2351))
## Identity Service API
**Spec Clarifications**
- Fix various typos throughout the specification. ([#2401](https://github.com/matrix-org/matrix-spec/issues/2401))
## Push Gateway API
No significant changes.
## Room Versions
**Spec Clarifications**
- Fix various typos throughout the specification. ([#2351](https://github.com/matrix-org/matrix-spec/issues/2351), [#2401](https://github.com/matrix-org/matrix-spec/issues/2401))
## Olm & Megolm
**Spec Clarifications**
- Update links to Olm in the Megolm section to point to the Matrix spec. ([#2361](https://github.com/matrix-org/matrix-spec/issues/2361))
- Fix various typos throughout the specification. ([#2369](https://github.com/matrix-org/matrix-spec/issues/2369))
- Update link from whispersystems.org to signal.org in the olm documentation. ([#2387](https://github.com/matrix-org/matrix-spec/issues/2387))
## Appendices
**Spec Clarifications**
- Update the canonical JSON grammar with case sensitive strings and ABNF builtins to be easier to understand. ([#2368](https://github.com/matrix-org/matrix-spec/issues/2368))
- Fix various typos throughout the specification. ([#2369](https://github.com/matrix-org/matrix-spec/issues/2369))
- Clarify matrix.to RFC 3986 percent encoding requirements. Contributed by @HarHarLinks. ([#2395](https://github.com/matrix-org/matrix-spec/issues/2395))
- Add specification of URL-safe unpadded Base64. ([#2398](https://github.com/matrix-org/matrix-spec/issues/2398))
## Internal Changes/Tooling
**Backwards Compatible Changes**
- Add page search widget. ([#2331](https://github.com/matrix-org/matrix-spec/issues/2331))
**Spec Clarifications**
- Update and fix GitHub Actions. ([#2343](https://github.com/matrix-org/matrix-spec/issues/2343), [#2369](https://github.com/matrix-org/matrix-spec/issues/2369))
- Upgrade Docsy theme to v0.14.3. ([#2346](https://github.com/matrix-org/matrix-spec/issues/2346))
- Configure a new changelog section for the Olm & Megolm specs. ([#2364](https://github.com/matrix-org/matrix-spec/issues/2364))
- Clarify use of UK vs US English in documentation style doc. ([#2366](https://github.com/matrix-org/matrix-spec/issues/2366))
- Ignore typos in copyright statements. ([#2373](https://github.com/matrix-org/matrix-spec/issues/2373))
- Update CODEOWNERS file. ([#2400](https://github.com/matrix-org/matrix-spec/issues/2400))
- Minor fixes to `check-newsfragments` CI script. ([#2402](https://github.com/matrix-org/matrix-spec/issues/2402))

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,
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 %}}
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.
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`.
{{% 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`.
2. If the returned status code is not 200, or the response body is
empty, then `FAIL_PROMPT`.
@ -3654,7 +3656,7 @@ The actual aggregation format depends on the `rel_type`.
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
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
format for that `rel_type`. This `m.relations` property is known as a "bundled
aggregation".

View file

@ -1762,12 +1762,9 @@ Messages with type 1 can only be decrypted with an existing session. If
there is no matching session, the client must treat this as an invalid
message.
The plaintext payload is of the form:
The plaintext corresponding to the "Cipher-Text" in an an [Olm message](/olm-megolm/olm/#normal-messages) is of the form:
{{% definition path="api/client-server/definitions/olm_payload" %}}
The type and content of the plaintext message event are given in the
payload.
{{% definition path="api/client-server/definitions/olm_plaintext" %}}
If a client has multiple sessions established with another device, it
should use the session from which it last received and successfully
@ -1940,7 +1937,7 @@ As of `v1.3`, the `sender_key` and `device_id` keys are **deprecated**. They
SHOULD continue to be sent, however they MUST NOT be used to verify the
message's source.
Clients MUST NOT store or lookup sessions using the `sender_key` or `device_id`.
Clients MUST NOT store or look up sessions using the `sender_key` or `device_id`.
In a future version of the specification the keys can be removed completely,
including for sending new messages.

View file

@ -6,9 +6,9 @@
#### Server behaviour
The server may decide that the response to this endpoint is too large, and only return a
subset of the results. In this case, the server should populate the optional field `next_batch`
with an [opaque identifier](/appendices/#opaque-identifiers). The client may then supply
The server MAY decide that the response to this endpoint is too large, and only return a
subset of the results. In this case, the server populates the optional field `next_batch`
with an [opaque identifier](/appendices/#opaque-identifiers). The client can then supply
the identifier as the `from` query parameter in a subsequent request, along with the original
`user_id`, to fetch the next batch of responses. This will continue until the server no longer
inserts `next_batch`, meaning there are no further results.

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
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
`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.
It does not include events sent by [ignored users](#ignoring-users).

View file

@ -257,8 +257,8 @@ consists of the following key-value pairs:
**Name**|**Tag**|**Type**|**Meaning**
:-----:|:-----:|:-----:|:-----:
Message-Index|0x08|Integer|The index of the ratchet, i
Cipher-Text|0x12|String|The cipher-text, Xi, of the message
Message-Index|0x08|Integer|The index of the ratchet, \(i\).
Cipher-Text|0x12|String|The cipher-text of the message, \(X_i\).
Within the payload, integers are encoded using a variable length encoding. Each
integer is encoded as a sequence of bytes with the high bit set followed by a

View file

@ -17,12 +17,12 @@ side of an \(=\) it means that the output is split.
When this document uses \(\operatorname{ECDH}\left(K_A,K_B\right)\) it means
that each party computes a Diffie-Hellman agreement using their private key
and the remote party's public key.
So party \(A\) computes \(\operatorname{ECDH}\left(K_B^{public},K_A^{private}\right)\)
and party \(B\) computes \(\operatorname{ECDH}\left(K_A^{public},K_B^{private}\right)\).
So party \(A\) computes \(\operatorname{ECDH}\left(K_B^{\mathit{public}},K_A^{\mathit{private}}\right)\)
and party \(B\) computes \(\operatorname{ECDH}\left(K_A^{\mathit{public}},K_B^{\mathit{private}}\right)\).
Where this document uses \(\operatorname{HKDF}\left(salt,IKM,info,L\right)\) it
Where this document uses \(\operatorname{HKDF}\left(\mathit{salt},\mathit{IKM},\mathit{info},L\right)\) it
refers to the [HMAC-based key derivation function][] with a salt value of
\(salt\), input key material of \(IKM\), context string \(info\),
\(\mathit{salt}\), input key material of \(\mathit{IKM}\), context string \(\mathit{info}\),
and output keying material length of \(L\) bytes.
## The Olm Algorithm
@ -226,9 +226,9 @@ significant bits are stored in the first byte.
**Name**|**Tag**|**Type**|**Meaning**
:-----:|:-----:|:-----:|:-----:
Ratchet-Key|0x0A|String|The public part of the ratchet key, Ti, of the message
Chain-Index|0x10|Integer|The chain index, j, of the message
Cipher-Text|0x22|String|The cipher-text, Xi,j, of the message
Ratchet-Key|0x0A|String|The public part of the ratchet key of the message, \(T_i\).
Chain-Index|0x10|Integer|The chain index of the message, \(j\).
Cipher-Text|0x22|String|The cipher-text of the message, \(X_{i,j}\).
The length of the MAC is determined by the authenticated encryption algorithm
being used. (Olm version 1 uses [HMAC-SHA-256][], truncated to 8 bytes). The
@ -251,9 +251,9 @@ The payload uses the same key-value format as for normal messages.
**Name**|**Tag**|**Type**|**Meaning**
:-----:|:-----:|:-----:|:-----:
One-Time-Key|0x0A|String|The public part of Bob's single-use key, Eb.
Base-Key|0x12|String|The public part of Alice's single-use key, Ea.
Identity-Key|0x1A|String|The public part of Alice's identity key, Ia.
One-Time-Key|0x0A|String|The public part of Bob's single-use key, \(E_B\).
Base-Key|0x12|String|The public part of Alice's single-use key, \(E_A\).
Identity-Key|0x1A|String|The public part of Alice's identity key, \(I_A\).
Message|0x22|String|An embedded Olm message with its own version and MAC.
## Olm Authenticated Encryption
@ -268,13 +268,13 @@ message key using [HKDF-SHA-256][] using the default salt and an info of
\[
\begin{aligned}
AES\_KEY_{i,j}\;\parallel\;HMAC\_KEY_{i,j}\;\parallel\;AES\_IV_{i,j}
\mathit{AES\_KEY}_{i,j}\;\parallel\;\mathit{HMAC\_KEY}_{i,j}\;\parallel\;\mathit{AES\_IV}_{i,j}
&= \operatorname{HKDF}\left(0,M_{i,j},\text{``OLM\_KEYS"},80\right)
\end{aligned}
\]
The plain-text is encrypted with AES-256, using the key \(AES\_KEY_{i,j}\)
and the IV \(AES\_IV_{i,j}\) to give the cipher-text, \(X_{i,j}\).
The plain-text is encrypted with AES-256, using the key \(\mathit{AES\_KEY}_{i,j}\)
and the IV \(\mathit{AES\_IV}_{i,j}\) to give the cipher-text, \(X_{i,j}\).
Then the entire message (including the Version Byte and all Payload Bytes) are
passed through [HMAC-SHA-256][]. The first 8 bytes of the MAC are appended to the message.

View file

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

View file

@ -14,9 +14,9 @@
type: object
title: OlmPayload
title: OlmPlaintext
description: |-
The plaintext payload of an event encrypted using Olm.
The plaintext of an event encrypted using Olm.
properties:
type:
type: string
@ -27,9 +27,13 @@ properties:
sender:
type: string
description: The user ID of the event sender.
format: mx-user-id
pattern: "^@"
recipient:
type: string
description: The user ID of the intended event recipient.
format: mx-user-id
pattern: "^@"
recipient_keys:
description: The recipient's signing keys of the encrypted event.
$ref: "#/components/schemas/SigningKeys"

View file

@ -54,7 +54,8 @@ properties:
example: true
avatar_url:
type: string
format: uri
format: mx-mxc-uri
pattern: "^mxc:\\/\\/"
description: The URL for the room's avatar, if one is set.
example: "mxc://example.org/abcdef"
join_rule:

View file

@ -335,7 +335,8 @@ paths:
description: The display name of the user this object is representing.
avatar_url:
type: string
format: uri
format: mx-mxc-uri
pattern: "^mxc:\\/\\/"
description: The avatar of the user this object is representing, as an [`mxc://`
URI](/client-server-api/#matrix-content-mxc-uris).
description: A map from user ID to a RoomMember object.

View file

@ -237,7 +237,8 @@ paths:
title: Display name
avatar_url:
type: string
format: uri
format: mx-mxc-uri
pattern: "^mxc:\\/\\/"
title: Avatar Url
events_before:
type: array

View file

@ -89,7 +89,8 @@ paths:
description: The display name of the user, if one exists.
avatar_url:
type: string
format: uri
format: mx-mxc-uri
pattern: "^mxc:\\/\\/"
example: mxc://bar.com/foo
description: The avatar url, as an [`mxc://`
URI](/client-server-api/#matrix-content-mxc-uris),

View file

@ -1,4 +1,5 @@
# Copyright 2018 New Vector Ltd
# Copyright 2026 Hagen Echzell
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@ -20,7 +21,11 @@ paths:
get:
summary: Gets Matrix server discovery information about the domain.
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,
e.g. `com.example.myapp.property`. This ensures property names are
suitably namespaced for each application and reduces the risk of

View file

@ -172,6 +172,8 @@ paths:
example: John Doe
avatar_url:
type: string
format: mx-mxc-uri
pattern: "^mxc:\\/\\/"
description: |-
The avatar URL for the user's avatar. MUST either be omitted or set to
`null` if the user does not have an avatar set.

View file

@ -12,6 +12,8 @@
"properties": {
"avatar_url": {
"type": "string",
"format": "mx-mxc-uri",
"pattern": "^mxc:\\/\\/",
"description": "The current avatar URL for this user, if any."
},
"displayname": {

View file

@ -53,7 +53,8 @@ properties:
avatar_url:
description: 'The avatar URL for this user, if any.'
type: string
format: uri
format: mx-mxc-uri
pattern: "^mxc:\\/\\/"
displayname:
description: 'The display name for this user, if any.'
type:

View file

@ -13,7 +13,7 @@ description: |-
[Olm](/client-server-api/#molmv1curve25519-aes-sha2).
The `sender_device_keys` property in the [Olm
plaintext](/client-server-api/#definition-olmpayload) MUST be
plaintext](/client-server-api/#definition-olmplaintext) MUST be
populated. Recipients SHOULD ignore `m.room_key_bundle` messages which omit
them.
properties: