Matrix Live S11E13 Sticky Events, Encrypted State and Element Admin
Dept of Status of Matrix š”ļø
matrix.org Website
HarHarLinks reports
2 weeks after the last update at the Website & Content Working Group we have some new updates worth mentioning:
The new ecosystem page listing distributions has landed! We consider a Matrix distribution a collection of software related to Matrix that is deployed and automatically configured so the different pieces integrate with one another. Click the link to find some examples!
In organisational news, you may have noticed the Working Group is not just called āWebsiteā, but āWebsite & Contentā. This is because the WG is not only responsible for making sure the website works on a technical level, but also maintaining its content. Of course this also includes making sure that any contributions to the website are as good as they can reasonably be. One of our first big topics behind the scenes was thus the creation of the Review & Publishing Policy to try and set a bar we think we can meet, and as well as expectations that Working Group and contributors may assume of each other. The Governing Board has recommended to the Foundation to approve this policy, and it is now added to our repositoryās CONTRIBUTING.md alongside the already existing guidelines! Next step: set up GitHub to support as much of this as possible with automation.
Of course thatās only the big news. For the rest, check our commitlog or follow the Hookshot announcements in our public room #matrix.org-website:matrix.org!
Dept of Spec š
Andrew Morgan (anoa) {he/him} reports
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 https://spec.matrix.org/proposals.
MSC Status
New MSCs:
- MSC4362: Simplified Encrypted State Events
- MSC4361: Non-federating Membership Authentication Rule Amendments
MSCs in Final Comment Period:
- No MSCs are in FCP.
Accepted MSCs:
- No MSCs were accepted this week.
Closed MSCs:
- MSC4317: Signed profile data
- Initially motivated by a custom enterprise use case, but could not be made generic enough to apply to the wider ecosystem.
- MSC4316: External cross-signing signatures with X.509 certificates and (semi-)automated verification
- Similar story to the above.
- MSC3761: State event change control
- Abandoned by the author.
Spec Updates
Following the release of Matrix 1.16 last week, the SCT have continued to iterate on the MSC labelled Matrix 2.0. It will be exciting to start seeing these proposals land as they cover very exciting features for the protocol (sliding sync, MatrixRTC, OAuth, etc.).
Keep an eye out as the authors and the SCT continue to drive them to conclusion.
Dept of Trust & Safety āļø
Asgard.chat
tulir says
The Draupnir and Meowlnir hosting service pre-announced 3 weeks ago is now accepting applications. If you need a moderation bot for your rooms, you can find some docs on our website https://asgard.chat/ and join the room at #general:asgard.chat
Dept of Servers š¢
Synapse (website)
Synapse is a Matrix homeserver implementation developed by Element.
Andrew Morgan (anoa) {he/him} announces
Itās been quite the week of releases in Synapse land. Synapse 1.139.0rc2 and 1.139.0rc3 were put out ahead of the planned 1.139.0 release next week. Please try 1.139.0rc3 out (if youāre able to) and file any bugs or regressions you find on our issue tracker.
In parallel, Synapse 1.138.2 was released with a performance fix for the delayed events feature. Performance could suffer even if the feature was not used, so be sure to update if youāre having performance issues on 1.138.0 (which was when the regression was introduced). The 1.139.0 release candidates also include the fix.
Please note that all of the above releases have dropped support for Ubuntu 24.10 Oracular Oriole as it is end-of-life. Support for Ubuntu 25.04 Plucky Puffin was added in its place.
continuwuity (website)
Continuwuity is a community-driven Matrix homeserver in Rust.
nex (it/she) š³ļøāā§ļø announces
Continuwuity v0.5.0-rc.8
Authorās note: Since the release of this version, several bugs in the new state resolution have been found; it is advised you wait for the full 0.5.0 release for v12 rooms unless you need them today.
Nobody told me Iād need a durable keyboard when we forked š Hey everyone! And everytwo, I see you. Regardless of the number of every you are, thereās a continuwuity 0.5.0 rc8 release near you! All of you!
In the past month or so, weāve merged 86 pull requests, closed 12 issues, and across 142 commits, modified 180 files with a net 9,650 changes! And the best part is, this isnāt even an on-schedule release. In order to get room v12 support ready in anticipation of several prominent communities upgrading their communal spaces, weāve ended up pulling this release out of the oven a little earlier than we had hoped. As such, thereās not as many new things as we usually add, but thatās okay, because sometimes, less is more. Plus the things we did fit in are pretty kickass.
Thereās an awful lot to go through, so Iāll just summarise the eye-catchy things. You can see everything via the rc8 milestone.
- ⨠Room v12 support! (#943)
- š LDAP login (#921)
- šµ MSC4155 invite filtering (#1013)
- š¤ Leaving a room now reliably tells clients it happened (#959)
- š You have greater control over your join vias! (#956)
Huge thank you to the >10 individual contributors who have gone out of their way to directly help with the project, including huge changes to our CI system and amazing packaging fixes and changes, as well as everyone else who beta test changes before they make a release. The project quite literally would not be the same without you š«¶
Where?!
You can download the latest release on our forge. Docker images are also available using
forgejo.ellis.link/continuwuation/continuwuity:latest. If youāre daring, we also now have maxperf builds, which take advantage of some optimisations in modern CPUs (generally, anything newer than haswell). Use theconduwuit-haswell-linux-amd64-maxperfbinary, or docker tagforgejo.ellis.link/continuwuation/continuwuity:sha-b70470f-maxperf. You probably wonāt notice a difference since continuwuity is super fast anyway, but hey, numbers!We also mirror our release OCI images to GitLab: https://gitlab.com/continuwuity/continuwuity/container_registry/8871720
We donāt currently mirror our releases anywhere yet, however, our source code is also available on GitHub, GitLab, and Codeberg. A few members of the community also mirror, some include releases, so if you have issues with any/all of the forges above, donāt hesitate to join our community (below) and ask!
Whatās next āØ
You can also #main:continuwuity.org, and explore our #space:continuwuity.org, where we have a room for important announcements, a rich offtopic room, and our dev room where we discuss features and bugs. If you run your own continuwuity server, you should also #announcements:continuwuity.org, as important announcements are sent there (and may not be mirrored to the main room).
Anyway, as per usual, most things weāre planning to tackle are on our issue tracker, or in a pull request.
Matrix Authentication Service (website)
Matrix Authentication Service (MAS) is an OAuth 2.0 and OpenID Provider server developed by Element.
Andrew Morgan (anoa) {he/him} says
MAS 1.3.0 was released this week!
This release makes a few changes to the Admin API to make MAS easier to administrate from third-party tooling, as well as adds some more commands to mas-cli. Check the link for the full changelog.
Dept of Clients š±
Fractal (website)
Matrix messaging app for GNOME written in Rust.
KƩvin Commaille reports
What is better for celebrating the season change than to test what is going to be in the next version of Fractal? Fractal 13.beta was released just for that, and it brings:
- A brand new audio player that loads files lazily and displays the audio stream as a seekable waveform.
- Only a single file with an audio stream can be played at a time, which means that clicking on a āPlayā button stops the previous media player that was playing.
- Clicking on the avatar of the sender of a message now opens directly the user profile instead of a context menu. The actions that were in the context menu could already be performed from that dialog, so UX is more straightforward now.
- The GNOME document and monospace fonts are used for messages.
- Most of our UI definitions got ported to Blueprint.
As usual, this release includes other improvements, fixes and new translations thanks to all our contributors, and our upstream projects.
It is available to install via Flathub Beta, see the instructions in our README.
As the version implies, there might be a slight risk of regressions, but it should be mostly stable. If all goes well the next step is the release candidate!
If you have a little bit of time on your hands, you can try to fix one of our newcomers issues. Anyone can make Fractal better!
Dept of SDKs and Frameworks š§°
matrix-rust-sdk (website)
Your all-in-one toolkit for creating Matrix clients with Rust, from simple bots to full-featured apps, with bindings to Swift, Kotlin, WebAssembly, Go and more, sponsored by Element.
Ivan š¦ announces
Bonjour everyone! The fog is trying to demoralise the team, but it doesnāt affect the pace of bug fixes, performance improvements, and new features! Letās help ourselves with our best tea, sit comfortably, and see what happened recently.
Space
Rooms can be organised in Spaces. Itās a nice way for group of people with many rooms to create a hierarchy of rooms. The Matrix Rust SDK is implementing a new Space API.
- #5717 The FFI bindings were exposing the
NonSpacefilter for the Room List. Now it also exposes theSpacefilter, allowing to display the top-level spaces.- #5712 The Space List now receives live updates.
- #5663 It is much easier to navigate from the parent to the children, and vice versa, and get a Space List at each step.
Thread
Threads help to have discussions attached to messages. The Matrix Rust SDK is implementing a new Thread API. The work this week has been around supporting permalinks to a thread or to a threaded message.
- #5709 Remove an undesired behaviour in the Timeline: when it was focused on a threaded event, the Timeline was receiving live updates.
- #5678 It is now possible to paginate around a specific event inside a thread with the Timeline.
Crypto
The
matrix-sdk-cryptocrate is receiving a couple of bug fixes.
- #5699 Add the new
has_devices_to_verify_againstfunction to check if the user has another device to verify against in order to cross-sign their new device. The device must be signed by the userās cross-signing key, must have an identity, and must not be a dehydrated device.- #5666 Report inner-outer state key differences as invalid.
Latest Event
The Latest Event API allows to find and display the latest event of a room or a thread. Itās used in the Room List for the moment. Last week, weāve spent quite a lot of time digging a complex bug around the Room List
recencysorter and the Latest Event.
- #5698 The
recencysorter of the Room List is now using the Latest Eventās timestamp, with a fallback to the room recency stamp (the old behaviour, which could be wrong because computed by sliding sync server-side āthebump_stampvalueā, with sometimes unexpected values).- #5673 The
LatestEventsis lazy. It computesLatestEventonly for rooms that are listened. One can listen to rooms manually. However, after the Room List that was registering Latest Event listeners automatically, itās now time for the Sync to do the same, making the whole Latest Event API almost a no-op. It should be very rare for someone to listen to a room manually now.Room List
The Room List is an API helping to display a list of rooms.
- While trying to fix a bug where 3 CPU cores were fanning at 100% (usually, the sign something bad is happening right?), we have improved the performance and fixed a bug in
eyeball, happy collateral damages:
- #5684 Improve performance of the
RoomListby +765%.- eyeball#80 Fix an infinite loop when
SortBy<Stream<Item = T>>handles aVectorDiff::SetwhereTis a shallow clone type.- #5618 Enable the thread subscriptions extension based on server support, otherwise, when running against a server that doesnāt support thread subscriptions, the client may falsely think that its thread subscriptions are not outdated (when receiving an empty, defaulted
ThreadSubscriptionssection in the SSS response). As a result, it would always use the store, not find most thread subscriptions, and conclude ānope, you havenāt subscribed to any threadā, which is wrong.Search
matrix-sdk-searchis a new crate implementing a search engine for all the events received by your favorite client.
- #5694 This crate now has a nice
README.md!- #5691 The search index file is now encrypted! Security, safety and privacy are not just fancy words.
Media in IndexedDB
- #5682 It is now possible to get, add, replace and remove media from the
MediaStorein IndexedDB.RTC
Real-Time Communication. The base for video and audio calls via Matrix.
- #5668 Remove the deprecated
CallNotifyevent in favour of theRtcNotificationevent.Timeline
The Timeline is what arranges all the events of a room nicely.
- #5640 The Timeline can now handle custom events. Thatās a long-time requested feature. Welcome here!
General
For contributions that fit in no category but are important.
- #5683 Recently, weāve introduced a way to fetch the āmost recent used emojisā when reacting to a message. Now the number of emojis are limited to 100 to avoid growing the list indefinitely.
- #5621 The room notification modes will only change when the push rules change; otherwise, recomputing them is a no-op, and only wastes time. And it was a waste a time. With this patch, room notification is 4000% faster.
libQuotient (website)
A Qt6 library to write cross-platform clients for Matrix
kitsune says
The new version in the stable branch is out; release notes are in the usual place. This release fixes a crash; unfortunately, itās not enough to just sneak in the new library version to fix it though, you actually have to recompile (no code changes needed) your client. Which is why packagers are strongly encouraged to build not just this version of libQuotient but also rebuild the clients depending on it (Quaternion and NeoChat, in particular).
Dept of Ops š
Matrix Connectivity Tester
MTRNord (they/them) announces
This week we have 2 new updates:
First of all I resolved an issue which prevented users to subscribe to more than one Homeserver using a single email address. This now should work correctly.
Second of all, there is now a visual representation under the Pipeline tab which is somewhat similar to a GitLab pipeline. This is a goal to make it more approachable to non-technical users. Please note that this is the first iteration of this feature. Therefore, there are some known bugs like the arrows taking a very long time to appear. Help to fix this would be appreciated since with React 19 + react compiler it seems to have gotten quite hard to get this working as the arrows rely on the cards to be laid out in the DOM for calculations.
You can as usual check out the code at https://github.com/MTRNord/rust-federation-tester/ and https://github.com/MTRNord/matrix-connection-tester-ui/ Or use it at https://connectivity-tester.mtrnord.blog/
If you want to opt in into the development versions you can use https://stage.connectivity-tester.mtrnord.blog/ instead which features the main branch.
Dept of Bots š¤
HarHarLinks reports
Matrix Reminder Bot (website)
matrix-reminder-bot v0.4.0 has been simmering for a while. Rather than features, it brings some quality of life improvements to existing features.
Creating reminders is now more sane; you canāt set a reminder for a few minutes ago any more and daylight saving time zone handling was improved to calculate the right offset year-round. When inviting the bot to an existing room with recent messages, the bot will not anymore try to read and react to them, which would previously fail especially in encrypted rooms.
From the technical side, all dependencies have been updated, and Python 3.12 is now supported. We have also added the GitHub container registry to our release CI, making releases available from both Docker Hub and GHCR at your choice.
Thanks to all who contributed to this release: @svierne, @th0mcat, @cyb3rko!
Dept of Events and Talks š£ļø
mcnesium reports
I gave a talk (in German) on Matrix at the annual Chaos event Datenspuren. It is designed for beginners and focuses on overcoming entry hurdles, but also brings up talking points on why we want it, more than for example Signal. Spoiler: Decentralization is the only key against tech authoritarianism.
https://media.ccc.de/v/ds25-506-enter-the-matrix-oder-warum-signal-auch-doof-ist
Matrix Federation Stats
Aine [etke.cc] announces
collected by MatrixRooms.info - an MRS instance by etke.cc
As of today,
10799Matrix federateable servers have been discovered by matrixrooms.info,3097(28.7%) of them are publishing their rooms directory over federation. The published directories contain17040rooms.The most popular server software among the online servers is:
- synapse:
9348(86.6%)- conduit:
428(4.0%)- dendrite:
386(3.6%)- continuwuity:
244(2.3%)- tuwunel:
221(2.0%)Stats timeline is available on MatrixRooms.info/stats
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.
#ping:maunium.net
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
| Rank | Hostname | Median MS |
|---|---|---|
| 1 | tuwunel.love | 146.5 |
| 2 | codestorm.net | 217 |
| 3 | tomfos.tr | 254.5 |
| 4 | nerdhouse.io | 273 |
| 5 | nyxt.dev | 296 |
| 6 | matrix.hks-projekt.at | 299 |
| 7 | vibb.me | 352 |
| 8 | wolfspyre.io | 369.5 |
| 9 | calitabby.net | 383 |
| 10 | gingershaped.computer | 405 |
Thatās all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!
To learn more about how to prepare an entry for TWIM check out the TWIM guide.
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