πMatrix Live S10E24 β Tauri, Admin bot, HackDays, and European Collaboration on Matrix
πDept of Events and Talks π£οΈ
πMatrix Conference 2025
Thib (m.org) reports
We are excited to announce that The Matrix Conference will happen in Strasbourg from October 15 to 18! Following last year's success, we bumped our capacity to accept more than 300 attendees this year.
- π£οΈ The Call for Proposals is now open until June 6
- π€ We have sponsorship packages ready for organizations interested in getting the right eyes on their products
- ποΈ We expect to open registrations in the coming weeks
- π You can find all the information about the conference on https://2025.matrix.org
The Events Working Group and the Foundation at large are looking forward to meeting you in the flesh this year again!
πDept of elections π³οΈ
HarHarLinks announces
The nomination period for this years's governing board elections ends tonight (UTC)! If you're an Individual, Silver, Gold, or Associate member, submit your nomination here!
Tomorrow (UTC), the 2 week campaigning period begins officially, but you are already allowed to campaign, for example in the official Governing Board campaigning rooms.
πDept of Status of Matrix π‘οΈ
πSecond report from the Governing Board
The Governing Board is an advisory board to the Matrix.org Foundation with elected representatives from all across the Matrix ecosystem.
gwmngilfen reports on behalf of the Governing Board
The Governing Board meets twice a year. The last one was November, so it's now time for another! We met last week (9th May) to discuss & vote on a variety of topics.
The first board meeting was pretty quiet - we were still getting started. I'm happy to say that there is much more to talk about this time. You can read the full report here but for highlights:
- We wrote & ratified a starting set of bylaws, norms, and processes, which you can find here
- We formed our initial structure of Committees and Working Groups
- We launched the first Working Groups and starting seeing results from them (thank you, volunteers!)
There's a lot more, so go read the report - and if you want to help, there's still time to be a board nominee!
πDept of Bridges π
πmatrix-hookshot (website)
A multi purpose multi platform bridge, connecting to GitHub, GitLab, Jira, Webhooks and more.
Half-Shot reports
Hookshot adds OpenProject support in landmark 7.0.0 release
Howdy Friday-ers. It's been a little while since our last major Hookshot release but we're proud to announce a major new addition to our supported services family: OpenProject!
We've enabled rich support for OpenProject, allowing you to configure rooms to connect directly with your projects using widgets. This initial version supports a few standard commands to create, assign, prioritise and close work packages with more commands and features to come later. See the documentation for how to get going with this.
Additionally, JIRA Cloud administators will be pleased to note we now support signed webhook requests so you can secure up your JIRA <-> Hookshot paths. Previously we supported query string security, but this new system offers greater protection. Due to the obvious advantage this provides, it's now the sole method of authenticating and the old methods are not supported on cloud. The transition is very easy however, so please consult the documentation before upgrading.
Otherwise, our headline change are:
- Add new
mentions
field to generic hook transformation functions, to intentionally mention users. (#1051)- Fix JIRA integration config not updating when applying changes via the widget. (#c01d13b)
- GitHub repository listings / room configuration will now work correctly if your organization or username contains uppercase characters. (#1033)
- Hookshot will now attempt to join permission rooms on startup. (#1041)
- The legacy provisioning API has been removed (used by services such as Dimension). Developers should seek to update to use the widget API, which supports more features and is regularly updated. (#931)
- Replace homerunner with testcontainers for (stable) E2E testing. (#1047)
Noting that Hookshot has also grown a much more comprehensive E2E testing suite since our last release, so you can hopefully expect a more stable experience!
That's about all I have to say on the subject, so please go forth and upgrade and let us know how the experience is via
πDept of Clients π±
πFractal (website)
Matrix messaging app for GNOME written in Rust.
KΓ©vin Commaille reports
Due to a pesky bug that makes Fractal crash when our users attempt to start a verification, we are releasing Fractal 11.1 only 2 weeks after Fractal 11. And while we're at it we also backported a few fixes for smaller paper cuts!
This version is available right now on Flathub.
If you want to help us avoid regressions like that in the future, you could use Fractal Nightly. You could even get rid of our remaining bugs yourself!
πElement X Android (website)
Android Matrix messenger application using the Matrix Rust SDK and Jetpack Compose.
Jorge says
These days we're working on improving the moderation features, a better way to select an audio device in Element Call, being able to move from a tombstoned room to their successor and improving the onboarding flow.
We released several Element X Android versions:
- 25.05.0 with several bugfixes and the new 'report room' feature, but also with a bug that prevented Element Call from starting in some cases and was discovered just after it being published.
- 25.05.1 which was supposed to fix the previous issue, but sadly contained another Element Call regression so it never made it to Play Store.
- 25.05.3 which was finally the stable version with all the fixes. The version skip happened because we ran into some trouble when trying to upload the
.2
version to Play Store.We're working to try to avoid these situations in the future and we're sorry for the inconvenience.
Besides that, we've also worked on improving the overall stability of Element X Android:
- Fixed read receipts so rooms are marked as read when you receive and see new messages in their timelines.
- The persistent event cache is now enabled by default and the feature flag associated to it has been removed.
- Changed the ringing call notification behaviour so if a notification is resolved later than expected but the call is still running it'll display the ringing call UI instead of the 'missed call' one.
- Improved audio focus management so media playback, voice messages and Element Call can lower their audio or be paused if a new audio focus happens in the device, like playing some other media in a different app.
- Improved video transcoding quality and made sure videos that couldn't be transcoded or its metadata couldn't be read would still be sent as files.
- Made sure you can't open several rooms at the same time by mistake by quickly tapping on a room list item or several at the same time.
- Fixed an issue that caused media being shared with the app from being uploaded using an incorrect mime type, this was a mix of an SDK issue and an app one.
πDept of SDKs and Frameworks π§°
πRory&::LibMatrix (website)
.NET 9 matrix bot/client library/SDK
Emma [it/its] reports
Quite a decent amount of changes this time around.
What's new/changed?
- Added an easier way to check if 2 events are equal or equivalent, which should reduce bugs between projects
- Added helpers to get all member IDs in a room, and aligned membership related APIs to be more inline with spec (ie. allowing passing a membership rather than using a boolean for join/all)
- Added the ability to send (arbitrary) reactions, woohoo! π
- Bot utilities now have a dedicated "selfbot" mode, making sure to not react to other users. Additionally, bots no longer respond to outdated commands on startup.
- An edge case where sync loops burn CPU with invalid authentication has been fixed!
- β οΈβ οΈβ οΈ BREAKING β οΈβ οΈβ οΈ: Bot configuration has been rewritten and restructured to use more levels of nesting to be more clear
And, as always:
- The code is available at cgit.rory.gay (or Github - read only, may be outdated)!
- All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
- Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
- Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let us know, we'd love to hear all about it!
πmatrix-rust-sdk (website)
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
Ivan π¦ reports
Eh, look at this, a report 7Β days after the previous one! The monthly report turns into a weekly report again.
This week, most people seems to be back from holidays. Fresh and full of energy. Ha. Ha. Kidding. But full of motivation, for sure!
We have two big announcements. Not one, but two!
- The repository has welcomed its 5000thΒ tickets (PR/issues). Kudos all! That's a testimony of how active the project is!
- The event cache storage is now enabled by default!! More on this hereunder.
πThread
Work on the Thread project continues at a more rapid pace now. Many refactorings are done here and there to allow implementing Thread support more easily (#5030, #4655). There are also new features!
- Stickers and polls now receive a
thread_root
andin_reply_to
fields, #5045.- It is now possible to create a
Timeline
with a newThread
focus, which is helpful when you consider that a thread is aTimeline
, #5032. Indeed, when aTimeline
will open a thread, it will display anotherTimeline
. Interaction with the underlying modules, like the Event Cache, might be different. That's why it deserves a new focus. A focus is a mode, understand it's a type ofTimeline
.- The
Timeline
gains a new regions concept: it removes a class of bugs, like inserting items at invalid positions (e.g. a local item between remote items, or a timeline start virtual item after a remote item, and so on, #5000. It also simplifies the code greatly, more especially when reading of the code, you know exactly what is manipulated.πEvent Cache
The Event Cache is the module responsible to organise and to store all events received by a client (#3058). A couple months ago, we have started to implement a persistent storage (#3280). This persistent storage was disabled by default. It was tested in clients like ElementΒ X (Android, iOS and macOS) on their nightly channels where it was enabled by default. After a couple of weeks of testing in the wild, we are confident it can be turned on by default for everyone! It also simplifies the code as it no longer has to fallback to in-memory storage anymore, #4308.
This is a big achievement, and every contributor can be proud of this!
πLatest Event
A project has started to rethink the entire API around Latest Event. Nothing has been published yet, but you now are aware it has started. The idea is to compute the Latest Event based on the Event Cache module, and based on the Send Queue module. It means that messages that are being sent can be a Latest Event, so can appear in the Room List! That's the kind of stuff that will be doable. It will also allow to fix many subtle βglitchesβ.
πNotification
So far, the Matrix Rust SDK was able to receive one notification at a time. When one receives many of them, the SDK was running the same flow several times, which was inefficient from a client point of view, but also from a server point of view. The server is able to return multiple events but the SDK was fetching them one by one (more or less, it's a bit more complex, that's a rough idea). Now the SDK gains a new method:
NotificationClient::get_notifications()
, note the plural, #5016! And suddenly, everything is more fluid.πTombstoned Room
Work has started to improve the support of Tombstoned Rooms. A room is tombstoned, or archived, when its version changes. We want to make it easy to move to a new version, and to filter out tombstoned rooms in the Room List. Work has started, #4211.
πGeneral maintenance
Spring is sometimes synonym of clean ups. No exception for the Matrix Rust SDK. Clean ups continue to happen!
- The size of many types in many crates has been reduced, #5048. It was blocking our CI and was expected to be done since a moment.
- When a user receives an invite for a DM (direct message, 1:1) room, they are now directly marked as direct on the client-side, #5043.
- The
openssl
,openssl-sys
andcrossbeam-channel
dependencies have been updated due to security advisories, #5035.- The SDK prefers to send
m.marked_unread
(stable prefix) event instead ofcom.famedly.marked_unread
(unstable prefix) event, since the release of Matrix 1.12, #5034.
πDept of Bots π€
πBaibot Upgrade
Slavi reports
The baibot AI assistant for Matrix got upgraded. Version v1.7.x is now out!
Major new features are support for OpenAI's
gpt-image-1
model, vision support (you can mix text and images in regular conversations) and image-editing support.Learn more in this feature spotlight.
πDept of Trust & Safety βοΈ
πPolicy Server
TravisR announces
A little while ago we introduced the idea of Policy Servers to Matrix, and have been working to get communities onto our deployed policy server for further testing. To allow this testing to take place, and to give a bit more time for our Synapse PR to get cleaned up/reviewed, we've extended the temporary spam checker module's automatic disable date to June 18th, 2025.
Server admins will need to update the module to apply this new date. Instructions are available in the release notes.
If you haven't yet deployed the module and run a Synapse homeserver, please give it a go. Installing the module with the default config is enough to get the anti-spam benefits from rooms which use policy servers - it'll work in the background to protect your users from harmful content in rooms.
πRory&::MatrixUtils (website)
Rory&::MatrixUtils is a general user/moderation/admin toolkit for Matrix.
Emma [it/its] reports
Just a few changes... :D Though, I still need to run a commit at home and push to prod...
What's up?
- Adding new policies in bulk no longer overwrites existing entries
- The policy list editor's bulk ban tool now has safeguards against accidentally posting bans of the wrong type.
- Policy entities are now limited to ~100 characters in length (truncated localpart and server name), in order to make the table less wide.
- Some tools are now actively using MSC 4222 (
state_after
in /sync) as a big optimisation.- I've been messing about making a "serverside rendered" version of RMU, in order to allow users to offload page rendering and processing to a dedicated process on their machine. (A hosted version of this is currently not planned due to privacy concerns). No luck so far though...
And, as always:
- You can find the first party hosted version of RMU here!
- The code is available at cgit.rory.gay!
- All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
- Discussion, suggestions and ideas are welcome in #mru:rory.gay (Space: #mru-space:rory.gay)
- Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let us know, we'd love to hear all about it!
πRory&::MatrixAntiDmSpam (website)
Rory&::MatrixAntiDmSpam is user tooling for combating invite spam.
Emma [it/its] announces
Some very nice ease of use improvements :)
Changes:
- Linux users can use the
./install.sh && ./install-user-units.sh
command to handle all of the required setup to run as a background service on a system (systemd only). This reduces setup complexity to being able to copy paste a couple of commands, and editing a singular text file (per account). This has been tested on NixOS and Fedora, but won't work on OpenSUSE due to them not having a dotnet package. You'll need additional repos in this case.- Fixed a bug that caused warnings on startup and broke ignore list management. This feature should work as intended now!
- The sample config has been rewritten to be a lot simpler, not covering advanced configuration options and reflects LibMatrix.BotUtils' new config structure
- Moved around quite a few config options, as well as implementing proper support for slowing down the sync loop (to prevent causing more server load than necessary), and overriding presence to offline by default.
- Added a lot of documentation to the sample config, which should make things far more clear for new users. View the difference here!
And, as always:
- The code is available at cgit.rory.gay!
- All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
- Discussion, suggestions and ideas are welcome in #anti-dm-spam:rory.gay (Space: #mru-space:rory.gay)
- Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let us know, we'd love to hear all about it!
πMatrix Federation Stats
Aine [don't DM] announces
collected by MatrixRooms.info - an MRS instance by etke.cc
As of today,
11229
Matrix federateable servers have been discovered by matrixrooms.info,3335
(29.7%
) of them are publishing their rooms directory over federation. The published directories contain17796
rooms.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 | 147 |
2 | codestorm.net | 200 |
3 | continuwuity-dev.nexy7574.co.uk | 202 |
4 | bi-vibes.com | 260 |
5 | tomfos.tr | 265 |
6 | envs.net | 269.5 |
7 | wolfspyre.io | 289 |
8 | nevarro.space | 309 |
9 | calitabby.net | 390 |
10 | everypizza.im | 396 |
π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