Hey all,

Another 9 MSCs have been released today in Matrix 1.13! It’s just over 2 months since Matrix 1.12 went out, and the last scheduled release for 2024 - the next release is planned for around FOSDEM 2025. Today’s release contains more T&S features and a number of clarifications and improvements. The full changelog is at the end of this post, per usual :)

πŸ”—Account suspension

Last release brought Account Locking to the spec, and this release brings Account Suspension - a highly related but semantically different feature. Locking prevents the user from accessing their account, typically as a consequence of security reasons or restrictions, while suspension aims to disrupt while retaining a (mostly) readonly experience for the user. Both actions are reversible, and available to safety and security teams to help manage their servers with alternatives to deactivation (a destructive, irreversible, action).

Clients should continue calling /sync to detect when a lock/suspension is lifted (or converted to deactivation). MSC3939 and MSC3823 both have suggestions on what a UI could look like for the different states.

πŸ”—Reporting rooms

Event reporting has been in the spec since the very early days of Matrix, allowing users to send concerns about particular content to their homeserver administrators for review. A notable gap in this functionality is being able to report whole rooms from the public room directory or out of band in general - this has been addressed in Matrix 1.13 with the new report room endpoint.

The T&S team continues to work on designing a possible replacement to reporting in general, considering functionality like appeals, report-to-moderators, classification, and other quality of life improvements.

πŸ”—Up next in Matrix 1.14 and 2025

Mentioned earlier in this post, Matrix 1.14 is expected to be released around FOSDEM 2025 in early February. Many of the Matrix 2.0 features, like OIDC and Simplified Sliding Sync, are getting ever-closer to the needed proposed-FCP state to become part of the spec. We currently expect that the Matrix 2.0 features will land in either Matrix 1.14 or Matrix 1.15, converting the applicable release to Matrix 2.0 as a specification version. This is highly dependent on the MSCs progressing through FCP though, and may get pushed out as needed.

As always, if there’s an MSC ready for FCP, let us know in the SCT Office room! We’re currently on an administrative break until January 8th, 2025, but we’re still around and prioritizing features as we see them.

πŸ”—The full changelog

The full changelog for Matrix 1.13 is:

πŸ”—Client-Server API

New Endpoints

Backwards Compatible Changes

  • Add error codes to requestToken endpoints, as per MSC4178. (#1944)
  • Remove reply fallbacks, as per MSC2781. (#1994)
  • Clarify the allowed HTTP methods in CORS responses, as per MSC4138. (#1995, #2011)
  • Add new M_USER_SUSPENDED error code behaviour, as per MSC3823. (#2014)

Spec Clarifications

  • The reason parameter in POST /_matrix/client/v3/rooms/{roomId}/report/{eventId} can be omitted instead of left blank, as per MSC2414. (#1938)
  • Correct OpenAPI specification for query parameters to GET /_matrix/client/v3/thirdparty/location/{protocol} endpoint. (#1947)
  • Sort VoIP events semantically. (#1967)
  • Clarify that servers must forward custom keys in PusherData when sending notifications to the push gateway. (#1973)
  • Clarify formats of string types. (#1978, #1979, #1980)
  • Clarify that the async upload endpoint will return 404 in some cases. (#1983)
  • Remove distinction between StateFilter and RoomEventFilter. (#2015)
  • Add hyperlinks throughout the specification. (#2016)
  • Use json instead of json5 for syntax highlighting. (#2017)
  • Specify order that one-time keys are issued by /keys/claim, as per MSC4225. (#2029)

πŸ”—Server-Server API

Backwards Compatible Changes

Spec Clarifications

  • Add 403 error response to /_matrix/federation/v1/state_ids/{roomId}. (#1926)

πŸ”—Application Service API

Backwards Compatible Changes

  • Allow sending ephemeral data to application services, as per MSC2409. (#2018)

πŸ”—Identity Service API

No significant changes.

πŸ”—Push Gateway API

Spec Clarifications

  • Document the schema of PusherData. (#1968)
  • The path of HTTP pusher URLs is fixed to /_matrix/push/v1/notify. (#1974)

πŸ”—Room Versions

Spec Clarifications

  • Clarify rule 4.3.1 of the auth rules in room version 11 to state which event's sender the state_key needs to match. (#2024)

πŸ”—Appendices

Spec Clarifications

  • Remove note about reference implementations. (#1966)

πŸ”—Internal Changes/Tooling

Spec Clarifications

  • Add x-weight property for sorting events rendered with the event-group shortcode. (#1967)
  • Enforce consistent vertical spacing between paragraphs in endpoint definitions. (#1969, #2005)
  • Remove boxes/added-in-paragraph shortcode. (#1970)
  • Remove withVersioning parameter of rver-fragment shortcode. (#1971)
  • Remove span element from added-in and changed-in shortcodes. (#1972)
  • Fix formatting of added-in and changed-in shortcodes by using % delimiter. (#1975)
  • Remove CSS workaround for scroll-anchoring. (#1976)
  • Rename custom-formats.yaml to string-formats.yaml and update its docs. (#1977)
  • Fix relative URLs when serving the specification with a custom baseURL. (#1984, #1997)
  • Rename .htmltest.yaml to .htmltest.yml. (#1985)
  • Improve the JS script to highlight the current ToC entry. (#1991, #2002)
  • Upgrade docsy to 0.11.0 and hugo to 0.139.0. (#1996, #2007)
  • Improve the quality of the rendered diagrams (#1999)
  • Update the Inter font and allow the browser to render the page before it is loaded (#2000)
  • Use a proper Matrix favicon (#2001)
  • Clean up unused CSS classes in openapi/render-operation partial. (#2003)
  • Fix changed-in partial when used with multiple paragraphs. (#2006)
  • Optimize generated CSS by removing unused selectors. (#2008)
  • Remove trailing slash on void HTML elements. (#2009)
  • Remove type and language attributes of script element. (#2021)
  • Change the accessible role of info boxes to note. (#2022)

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