Matrix Live

An unfortunate series of events prevented us from recording this week! Stay tuned for great bridge news next week.

Dept of Spec 📜

Andrew Morgan (anoa) [GMT-6] says

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

The concept of Linearized Matrix (MSC3995) is moving forwards as a potential answer to the European Union's, Digital Markets Act. The fully-decentralised Direct Acyclic Graph (DAG) model of Matrix is well-known, yet complex to implement and thus a potential blocker to gatekeepers who are looking for an interoperable messaging protocol to link their chat service to. Enter Linearized Matrix, a concept of a Matrix room that uses a linked-list to store events in a room, rather than a DAG. Crucially, while being simpler to implement, our aim is to be forward-compatible with the DAG version of Matrix, such that gatekeepers may switch over to DAG-style Matrix in the future if they so chose.

See MSC3995 for more information, and a reminder that this is all still very much in flux!

Random MSC of the Week

The random MSC of the week is... MSC2943: Return an event ID for membership endpoints!

Currently, when you send a (state) event manually via PUT /_matrix/client/v3/rooms/{roomId}/send/{eventType}/{txnId}, you'll receive an event ID in the response. While you can send membership events this way, it's often a bit nicer to use the various POST /_matrix/client/v3/rooms/{roomId}/join,leave,kick endpoints instead. However, these do not return an event ID in their response. For clients that don't use /sync, this would force them to use the former, generic endpoint in order to retrieve the event ID of the membership event.

MSC2943 attempts to rectify that by specifying that membership-related endpoints should return an event ID, similar to the generic event send endpoint. Currently this MSC is just waiting on an implementation in a homeserver (and possible a client) in order to move forward. If you feel strongly about this change being included in the Matrix spec, why not get your hands dirty with some homeserver dev?

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the core team

Shay reports

Another week has gone by and we here at Synapse have another release for you, v1.81.0, filled with features and bugfixes. But first some announcements:

Synapse now attempts the versioned appservice paths before falling back to the legacy paths. Usage of the legacy routes should be considered deprecated.

Additionally, Synapse has supported sending the application service access token via the Authorization header since v1.70.0. For backwards compatibility it is also sent as the access_token query parameter. This is insecure and should be considered deprecated.

A future version of Synapse (v1.88.0 or later) will remove support for legacy application service routes and query parameter authorization.

And now the highlights:

  • Added the ability to enable/disable registrations when in the OIDC flow.
  • Added a primitive helper script for listing worker endpoints.
  • Built Debian packages for Ubuntu 23.04 (Lunar Lobster)
  • Fixed a long-standing bug preventing users from rejoining rooms after being banned and unbanned over federation. Contributed by Nico.
  • Fixed a long-standing bug where edits of events would not be correctly bundled.
  • Fixed a bug introduced in Synapse v1.55.0 which could delay remote homeservers being able to decrypt encrypted messages sent by local users.

And so much more! To read about everything in the release, take a look at the release notes here and otherwise have a great week.

Construct (website)

A performance-oriented homeserver with minimal dependencies.

Jason Volk reports

You probably know about the client command-line that pops up when a message starts with /. Construct has its own server-side command-line when a message starts with \. Unlike commands sent to the !control room, the server-side command-line is available to all users and not just administrators. In fact, the !control room is quite passé as I find myself always using the control server-side command, since the results can be echoed to the room I'm in and others can see it too.

This week Construct's server-side command-line gained the watch command. This is similar to watch(1) in unix environments. You type watch <interval> <command> to repeat your command at a set interval. Previously the watch command was only available at the terminal console. The watch command will run until you click the ▶️ button, or redact the command itself.

The fun never stops in - Join us today!

Dept of Clients 📱

Nheko (website)

Desktop client for Matrix using Qt and C++17.

Nico reports

Since I found some time to step away from the 3d printer (damn, those things are addiciting), let me give you an update of some of the changes happening recently in Nheko!

A very fundamental change from LorenDB is that Nheko now renders messages it doesn't understand. For various reasons Nheko always tried to hide those from you, but LorenDB convinced me, that showing them has more benefits than downsides and also did all the changes and wrote plenty of tests, even when I was especially picky! And at the same time Nheko can now render the rainfall chat effect. 🌧️

Similarly I reworked how our message variant/enum type works. This made the debug build of Nheko shrink from 450MB to 350MB for me, which is quite significant, even if it probably has no visible impact on any users, since the compressed debug size as well as the stripped binary are basically the same size. (The flatpaks were at 5MB download size and still are at 5MB download size.) It does make some of our error messages nicer and allows us to implement some further improvements for devs down the line. It does mean Nheko now won't compile on GCC10 anymore though, which is included in the current debian stable release. But the next Debian release is just around the corner, so hopefully the impact from that is limited.

We also had a nice contribution from Sateallia: You can now order rooms alphabetically. While I never saw any use for that feature, some people can't live without it and I appreciate that someone stepped up to implement it.

And the last interesting change, we teaked our threads UI a bit again. Because it was easy to miss, that a message is in a thread, we added a thread indicator on the left as well. We are still experimenting if that should replace the old indicator or it should complement it, so lease give feedback if it is an improvement or not.

Neochat (website)

A client for matrix, the decentralized communication protocol

Tobias Fella announces

Heyo, I just realized you haven't heard about NeoChat in a while and I'm in a good mood, so here's an update:

  • James is currently on a mission to document the entire NeoChat codebase, helping future contributors find their way around
  • He has also entirely rewritten text handling for incoming and outgoing messages, making it more robust
  • Thanks to deals made by Volker, we were finally able to finish the merge request for showing location events
  • Similarly, I finished the work on sending location events, this will land in the next few days
  • I've reworked the quick switcher (Ctrl+K) to be more useful
  • Code blocks are now highlighted with a different background color, improving on the somewhat poor styling they had so far
  • Several layout problems have been fixed
  • Carl has done some performance improvements, reducing startup time by ??% ;)
  • Aks has fixed the mention color in the input field to follow the style, making it look nicer especially on dark themes
  • James has added a formatting popup to the input field, allowing for quick addition of bold, cursive, etc.
  • Edited messages will no longer briefly show up wrong in the timeline after sending
  • You can now learn more about KDE from NeoChat's settings page :)
  • There is now menu hiding behind the avatar image, allowing for quick access to some settings
  • You can now add a linebreak to your message when using virtual keyboards
  • Url previews can now be configured from the settings
  • Read markers for other users will now be shown
  • The menu has been replaced by buttons in various more natural place
  • Various keybindings and shortcuts have been implemented and improved
  • The notification count in the system tray is working once again
  • Messages that are not sent yet are now marked in the timeline
  • You can now knock on a room using /knock
  • Message editing is now done inline in the message
  • Large amounts of state events are collapsed some more and can now be expanded to view all of them
  • Finally, too many minor fixes to list them all here :)

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in!

Danielle says

  • We are happy to announce that the Gitter sunsetting bugs have been successfully resolved. Our development team has been working diligently to ensure a smooth transition for all users as we move forward with our plans.
  • Additionally, our Cloud Packaging project is also now completed. 🎉
  • The team is continuing to work on the recursive relations MSC, to address stuck notifications. We’ve also added more logging to track down other issues that may be related.
  • Furthermore, we have made improvements to notification settings pages, room list ordering, and message previews.
  • Accessibility audits continue and the quick wins we identify along the way are being actioned.

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in!

Manu says

  • In Element X this week we’ve fixed the issue with room list loading while we’re still investigating the gappy timelines issue.
  • Work is underway to enhance app navigation to support permalink for messages and opening the app from a notification.
  • Room and user detail views are currently in review and will be available soon.
  • We have started the integration of OIDC (OpenID Connect). This will enable users to authenticate with third-party identity providers, giving them seamless access to their account.

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in!

benoit reports

  • In Element X on Android we’re working on introducing the sending and receiving of files.
  • We've also been working hard to improve our push notification system, and we're pleased to announce that significant progress has been made in this area. Keep an eye out for further updates as we continue to grow this feature.
  • Also the room creation flow is progressing well. User will be able to create room and DM with Element Android X.
  • Next, work will start on integrating OIDC (OpenID Connect) into Element X Android app. This will enable users to authenticate with third-party identity providers, giving them seamless access to their account.
  • In the Element Android app, the issue that was preventing some users from making video calls using Jitsi has been fixed on WebRTC. We will integrate the next Jitsi release as soon as it is available. With Jitsi back up and running, users can once again connect face-to-face with their friends and colleagues.

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

Join to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS

Join to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS

That's all I know

See you next week, and be sure to stop by with your updates!

The Foundation needs you

The 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 homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.

Support us