Hey all,

Matrix 1.19 is here! This release brings 6 more MSCs to the spec since the Matrix 1.18 release just over 3 months ago. Aside from clarifying that server ACLs are case insensitive, adding mutual rooms lookup, and making the room directory order implementation-defined, this release brings a couple of commonly requested features to the protocol: encrypted room history sharing and custom emoji.

πŸ”—Encrypted room history sharing

When a user joins or is invited to an unencrypted room, they might see events from before their join/invite due to history visibility. When that invite or join happens in an encrypted room though, the same history visibility doesn't always apply. Room history sharing, introduced by MSC4268, fixed that.

Readers who have been following the spec and project a long time may recall that room history sharing used to exist approximately 5 years ago in the form of MSC3061. After the proposal passed Final Comment Period (FCP), some shortcomings were discovered with the proposal. The cryptography team at Element addressed those shortcomings in MSC4268 by more carefully specifying what devices it is safe to share keys with, and by specifying a format for bulk-sharing keys rather than sending a to-device message per key.

More information about how history sharing has been implemented in Element's clients can be found on their blog.

πŸ”—Custom emoji (image packs)

Regular emoji simply isn't expressive enough for users - they need the ability to send custom emoticons, and share those image packs with other users so they can use them too. MSC2545, the most commented-on proposal as of writing at 603 comments, introduces this capability while also improving sticker pack support more generally.

Similar to other proposals in this spec release, it's been worked on for over 6 years and has been through several iterations. Clients like FluffyChat, Cinny, and Nheko have supported the proposal through those iterations and enable users to share their image packs with other users. With the proposal being added to the spec, all clients can now interoperate with stable identifiers and images in a more expressive Matrix!

πŸ”—The full changelog

The full changelog for Matrix 1.19 is:

πŸ”—Client-Server API

New Endpoints

  • Add GET /_matrix/client/v1/mutual_rooms, as per MSC2666. (#2367)

Backwards Compatible Changes

  • Specify unsigned.replaces_state in client-formatted events. Contributed by @nexy7574. (#2345, #2403)
  • Specify m.key_backup account data, as per MSC4287. (#2354)
  • The room directory now returns rooms in a server-defined order rather than largest first, as per MSC4423. (#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. (#2397)
  • Specify encrypted history sharing, as per MSC4268. (#2399)

Spec Clarifications

  • Clarify SAS commitment calculation for m.key.verification.accept messages. (#2344)
  • Clarify formats of string types. (#2347, #2349, #2358, #2359, #2370, #2374, #2375, #2376)
  • Restore alphabetical order of common error codes. (#2348)
  • Fix various typos throughout the specification. (#2351, #2389)
  • Clarify how to find via parameter when following room upgrades. (#2352)
  • Clarify that room messages can be encrypted. (#2371)
  • Clarify how to paginate messages using the pagination tokens returned by GET /rooms/{roomId}/context/{eventId}. (#2372)
  • Clarify allowed characters in mxc:// URIs. (#2377)
  • Add link to RFC 9700 OAuth 2.0 Best Current Practices. (#2379)
  • Add links from the Client-Server spec to the Olm message definitions. (#2381)
  • Disambiguate placeholder descriptions in OlmPayload example. (#2382)
  • Replace "Olm message" with "event encrypted using Olm" where not referring to the Olm message format. (#2383)
  • Removed unused components in OpenAPI definitions. (#2386)
  • Clarify definitions of EncryptedFile structure. (#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. (#2392)

Spec Clarifications

  • Clarify the behaviour and response format of GET /_matrix/federation/v1/query/profile. (#2326)
  • Clarify that server ACLs are case-insensitive, as per MSC4436. (#2334)
  • Clarify how multiple signatures should be handled during signature verification. Contributed by @nexy7574. (#2341)
  • Fix various typos throughout the specification. (#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)

πŸ”—Application Service API

Spec Clarifications

  • Fix various typos throughout the specification. (#2351)

πŸ”—Identity Service API

Spec Clarifications

  • Fix various typos throughout the specification. (#2401)

πŸ”—Push Gateway API

No significant changes.

πŸ”—Room Versions

Spec Clarifications

  • Fix various typos throughout the specification. (#2351, #2401)

πŸ”—Olm & Megolm

Spec Clarifications

  • Update links to Olm in the Megolm section to point to the Matrix spec. (#2361)
  • Fix various typos throughout the specification. (#2369)
  • Update link from whispersystems.org to signal.org in the olm documentation. (#2387)

πŸ”—Appendices

Spec Clarifications

  • Update the canonical JSON grammar with case sensitive strings and ABNF builtins to be easier to understand. (#2368)
  • Fix various typos throughout the specification. (#2369)
  • Clarify matrix.to RFC 3986 percent encoding requirements. Contributed by @HarHarLinks. (#2395)
  • Add specification of URL-safe unpadded Base64. (#2398)

πŸ”—Internal Changes/Tooling

Backwards Compatible Changes

  • Add page search widget. (#2331)

Spec Clarifications

  • Update and fix GitHub Actions. (#2343, #2369)
  • Upgrade Docsy theme to v0.14.3. (#2346)
  • Configure a new changelog section for the Olm & Megolm specs. (#2364)
  • Clarify use of UK vs US English in documentation style doc. (#2366)
  • Ignore typos in copyright statements. (#2373)
  • Update CODEOWNERS file. (#2400)
  • Minor fixes to check-newsfragments CI script. (#2402)

The Foundation needs you

The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.

It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.

Support us