πŸ”—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!

  1. The repository has welcomed its 5000thΒ tickets (PR/issues). Kudos all! That's a testimony of how active the project is!
  2. 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 and in_reply_to fields, #5045.
  • It is now possible to create a Timeline with a new Thread focus, which is helpful when you consider that a thread is a Timeline, #5032. Indeed, when a Timeline will open a thread, it will display another Timeline. 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 of Timeline.
  • 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 and crossbeam-channel dependencies have been updated due to security advisories, #5035.
  • The SDK prefers to send m.marked_unread (stable prefix) event instead of com.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 contain 17796 rooms.

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

πŸ”—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.

RankHostnameMedian MS
1tuwunel.love147
2codestorm.net200
3continuwuity-dev.nexy7574.co.uk202
4bi-vibes.com260
5tomfos.tr265
6envs.net269.5
7wolfspyre.io289
8nevarro.space309
9calitabby.net390
10everypizza.im396

πŸ”—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