Hey all,

Today’s Matrix 1.16 release brings two major features to the protocol: extensible profiles and room version 12 from Project Hydra! With room version 12, users should see fewer “state resets” and a clearer hierarchy for power levels in the room. The Project Hydra blog post covers the changes in more detail, so this post will focus on extensible profiles and our plan for Matrix 2.0.

As always, the full changelog and descriptions of the 9 MSCs released today is at the end of this post.

🔗Extensible profiles

Since the invention of profiles, people have wanted to advertise information to others. Matrix is no different, with time zones, pronouns, preferred languages, job titles, and more being among the top requested dedicated fields. Matrix 1.16 brings time zone support to ensure the new extensible system is capable of representing basic information. However users are able to use custom namespaces today to describe additional details, whereas new MSCs may formally define fields to be added to the specification for broad client support.

Huge thanks and congratulations to Tom for landing this highly requested feature in their first-ever MSC.

🔗Matrix 2.0

Over the years we’ve talked a lot about Matrix 2.0, and even demoed the implementations of Matrix 2.0 MSCs at last year’s Matrix Conference. After spending the majority of the last year polishing the implementations and touching up the MSCs, we’re setting our sights on Matrix 2.0. If we’re lucky, we’ll even get the 12+ remaining MSCs merged before the Matrix Conference in October.

Watch this space and the Office of the Matrix Spec Core Team room on Matrix for updates as we work toward Matrix 2.0/the conference.

🔗The full changelog

The full changelog for Matrix 1.16 is:

🔗Client-Server API

Deprecations

  • Deprecate m.set_avatar_url and m.set_displayname capabilities, as per MSC4133. (#2071)

Removed Endpoints

  • Remove unintentional intentional mentions in replies, as per MSC4142. (#2210)

Backwards Compatible Changes

  • Update user profile endpoints to handle custom fields, and add a new m.profile_fields capability, as per MSC4133. (#2071)
  • Add format query parameter to GET /state/{eventType}/{stateKey} to allow fetching metadata of a specific state event. (#2175)
  • Add the use_state_after query parameter and state_after response property to GET /sync, as per MSC4222. (#2187)
  • When upgrading rooms to room version 12, additional_creators may be specified on the POST /_matrix/client/v3/rooms/{roomId}/upgrade endpoint, as per MSC4289. (#2193)
  • When creating rooms with room version 12, the trusted_private_chat preset should merge the invitees into the supplied content.additional_creators in the resulting room, as per MSC4289. (#2193)
  • In room version 12, the power level of room creators is now infinitely high as per MSC4289. (#2193)
  • In room version 12, room IDs no longer have a domain component as per MSC4291. (#2193)
  • When creating rooms with room version 12, the initial power levels will restrict the ability to upgrade rooms by default, as per MSC4289. (#2193)
  • Add a profile field for a user's time zone, as per MSC4175. (#2206)
  • Invites and knocks are now expected to contain the m.room.create event in their stripped state entries, as per MSC4311. (#2207)

Spec Clarifications

  • Clarify that format is required if formatted_body is specified. (#2167)
  • The latest_event in an aggregated set of thread events uses the same format as the event itself. (#2169)
  • Fix various typos throughout the specification. (#2171, #2177, #2179)
  • Clarify that clients should replace events with the most recent replacement by origin_server_ts. (#2190)
  • Fix /sync flow referencing incorrect parameter to use with /messages. (#2195)
  • Clarify wording around the world_readable history visibility setting. Contributed by @HarHarLinks. (#2204)

🔗Server-Server API

Backwards Compatible Changes

  • invite_room_state and knock_room_state now have additional requirements and validation depending on the room version, as per MSC4311. (#2207)

🔗Application Service API

No significant changes.

🔗Identity Service API

No significant changes.

🔗Push Gateway API

No significant changes.

🔗Room Versions

Backwards Compatible Changes

  • Room IDs in room version 12 are now the event ID of the create event with the normal room ID sigil (!), as per MSC4291. (#2193)
  • Room creators are formalized in room version 12 and have infinitely high power level, as per MSC4289. (#2193)
  • State Resolution is updated in room version 12 to reduce the opportunity for "state resets", as per MSC4297. (#2193)
  • The default room version is now room version 12, though servers SHOULD keep using room version 11 for a little while, as per MSC4304. (#2193)
  • Add room version 12 as per MSC4304. (#2193, #2199)

Spec Clarifications

  • In room versions 1 through 12, an event's auth_events have always needed to belong to the same room as per MSC4307. (#2193)

🔗Appendices

Backwards Compatible Changes

🔗Internal Changes/Tooling

Backwards Compatible Changes

  • Add "placeholder MSC" process definition. (#2157)

Spec Clarifications

  • Declare the Application Service Registration schema to follow JSON Schema spec 2020-12. (#2132)
  • Declare the event schemas to follow JSON Schema spec 2020-12. (#2132)
  • Upgrade the docsy theme to version 0.12.0. (#2160)
  • GitHub actions are now building the OpenAPI spec/identity-service-api/api.json file. (#2172)
  • Minor fixes to JSON schemas. (#2182)
  • Specify a correct spelling for "display name". (#2189)
  • Fix a grammatical typo on the Matrix Spec Process documentation page. (#2205)

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