This Week in Matrix 2024-11-22
Matrix Live
Today's Matrix Live: https://youtube.com/watch?v=O_bChwDHE3UDept of Status of Matrix 🌡️
Thib (m.org) announces
We want to know everything about the bugs you squashed, the features you developed, and the docs you wrote. And even better, not only do we want to know about it, we want you to tell the Matrix community about it during our FOSDEM Fringe event, or even to tell the world about it in our FOSDEM Devroom!
Our Call for Proposals is still open for the DevRoom until December 1, so don't miss your chance to advertise your project!
But we're not limiting our presence to a DevRoom, we will also organize a fringe event before FOSDEM and have a booth during the wole event. Want to grab a limited edition T-shirt? Now's your chance to sign-up and help us staff the booth. All details are in our blog post.
Dept of Spec 📜
TravisR 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:
- MSC4231: Backwards compatibility for media captions
- MSC4230: Flag for animated images
- WIP: MSC4229: Pass through
unsigned
data from/keys/upload
to/keys/query
- MSC4228: Search Redirection
MSCs in Final Comment Period:
- No MSCs are in FCP.
Accepted MSCs:
- No MSCs were accepted this week.
Closed MSCs:
- No MSCs were closed/rejected this week.
Spec Updates
The SCT continues to work towards the next spec release, expected in mid-December with Account Suspension, backwards compatibility for captions, and likely some further work towards Matrix 2.0 in the form of crypto MSCs.
Folks are encouraged to raise their MSCs for review in the SCT Office as soon as they feel it's ready for broad review. This helps ensure there are minimal process delays, and feedback can be incorporated into the feature design early. This is especially important for Matrix 2.0 MSCs, which the SCT hopes to be able to release in the new year.
In other news, the SCT had its last workshop this week to set expectations for how the team works. Next steps here are to compile conclusions into a document, check everything over, then find a place to ship that document for everyone to read. This effort has been important to help ensure the SCT is most effective at what it does, and identifying areas where the Foundation more broadly may be able to help. Watch this space for updates.
Dept of Servers 🏢
Synapse (website)
Synapse is a Matrix homeserver implementation developed by Element
Olivier 'reivilibre' says
Hello! Synapse 1.120.0rc1 was cut this week, with Synapse 1.120.0 intended to be released next week. A noteworthy change in this version of Synapse is that authenticated media will now be enforced by default. For people running homeservers that want to gracefully support older clients and older federated homeservers (which still make unauthenticated requests for media), you might still want to turn this enforcement off; see the upgrade notes for details.
With that said, for homeservers in the open federation, it's worth noting that matrix.org has been running like this since September, so by now it's very likely that most clients and homeservers already support authenticated media and there'd be no need to turn it off. This option will likely vanish in the future, but we're not yet sure when. Track this issue if you're interested.
Dept of Clients 📱
Tammy
Benedict says
Tammy 1.0.4 has been released with a bunch of improvements. We added a nice wizard for account setup after initial login. We also introduced sharing media into Tammy on Android. Web does support emojis and file upload/download now and therefore is on its way out of the Beta. Of course, we have also fixed a few bugs.
kazv (website)
kazv is a convergent matrix client and instant messaging app.
tusooa🏔️ says
kazv 0.6.0 is released. It depends on libkazv v0.8.0 which has fixed a security vulnerability. It also comes with many new features such as better support for stickers, reactions, and media file handling.
Element X Android (website)
Android Matrix messenger application using the Matrix Rust SDK and Jetpack Compose.
benoit reports
- Element X Android v0.7.4 is on the PlayStore (beta channel). Please see the changelog here: https://github.com/element-hq/element-x-android/releases/tag/v0.7.4. Will be pushed to prod on Monday.
- Working on media caption at the moment: users will be also able to write a caption for files and audio files. They will be rendered in the timeline. Also it will be possible to add a caption after the media has been sent. Removing a caption or editing a caption will be possible too
- Making progress on room knocks AKA ask to join. There is still work to do on the SDK and the application is getting the latest polish.
- We are also fixing bugs and recent regressions among our 170k+ SLOC.
- Last but not least, the send button has been refreshed and is now very glossy!
Extera
OfficialDakari announces
Today, new development version of Extera is out - 1.0-DEV-D5XQW.
Here is what changed since last TWIM post:
- New versioning scheme. We rolled back to 1.0 and started marking development versions with date in 36-richered number system. A first stable release is soon.
- Changed reaction colors. Not very heavy change, but improves usability a lot.
- Removed backdrop blurs in dialogs. They were unnecessary and didn't fit in the UI.
- Added more animations. Opening emojiboard now has an animation for it.
- Remade polls. Polls were Extera's first feature, which I added when I didn't know React as good as now. Fixed displaying vote counts, ending polls etc.
- Added sending polls. Back in summer, when polls were only added, you could only receive & vote in polls. Now Extera can also send polls.
- Also, we made a few changes to our website and opened it's source code.
The latest version is already live at app.extera.xyz. Source code is always available here.
Dept of Widgets 🧩
Matrix Widget Toolkit (website)
Matrix Widget Toolkit is a framework for creating Matrix widgets.
We have released new versions of our matrix-widget-toolkit packages.
Highlights
🎨 Better Element Web design integration: Element Web is currently the most commonly used hosting client for widgets. At the moment, Element Web is moving the designs towards the Element Compound design system. In this toolkit release, the primary (green) and error (red) colours and the avatar colours have been matched with the Compound design system.
🚀 To the future: The popular lodash library seems to be unmaintained. Also nowadays many functions are built in to the ECMAScript standard or Browser APIs. We therefore decided to remove the lodash dependency. Most uses are replaced by native functions. What could not be replaced is now provided by a utils module in each package. Last but not least, one less dependency.
All the packages can be found in the releases section of our repo.
You can see a demo of what the toolkit can do using our demo widget.
If you have any questions or feedback, please reach out to us using our public room #nordeck:matrix.org.
Dept of VoIP 🤙
Element Call (website)
Native Decentralised End-to-end Encrypted Group Calls in Matrix, as a standalone web app
Robin says
Hello TWIM!
You may be wondering: "Why hasn't there been a post from the Element VoIP Team in so long?" A fair question! We've been asking ourselves the same, especially since so much has happened. Over the past month, we've been deep down the rabbit hole, working hard to solidify the Element Call experience.
Our mission? To banish issues like gray tiles, missing participants, and lost media—for good! (Well, at least issues we can identify and control…)
This behind-the-scenes work wasn't exactly flashy, but it was crucial. Here's what we've been tackling to make Element Call more stable than ever:
- Encryption key issues: Fixes to ensure keys don't get lost between the client and widget.
- State resolution complexities: Matrix state resolution can lead to scenarios EC struggles with. While Simplified Sliding Sync helps here, getting everything to work as reliably as we need for EC took some work.
- Edge case fixes: Numerous small changes in widget communication and the SPA (Single Page Application) to iron out tricky corner cases.
Looking forward, these foundational improvements open doors for bigger steps—like making EC more secure and fully leveraging its Matrix backing.
Other key updates:
- We've improved mobile ringing, though there's still work ahead making DM calls behave like a telephone call.
- Load times for the widget and app have been significantly improved, making calls snappier to start.
- Tiles now stay in a stable order to make for a more focused call experience.
With all that groundwork laid, let's get to the fun stuff !
New Features🎉
Our latest release introduces several usability enhancements and fun additions that make calling over Matrix even better:
- Fast camera switching: on mobile. Easily switch cameras with a dedicated button.
- Emoji reactions! 👏🤘🐱🐶 With playful sound effects that keep the mood lighthearted.
- Raise hand feature: Now you can raise your hand during calls! (Includes an experimental timer—feedback welcome on whether it's helpful or confusing.)
Exciting Milestones
Even on stable Element Web, you can now start an Element Call-based call—a huge step forward for the quest to ship MatrixRTC!
Not all of our recent stability improvements have made it into this release (some depend on Synapse, JS-SDK, or other updates), but we're taking care to roll them out thoughtfully to ensure a smooth experience.
Now's a great time to give Matrix calling a try! Jump into Element X or even stable Element Web and start a call. We can't wait to hear your thoughts.
Happy calling! 🚀
Dept of SDKs and Frameworks 🧰
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
bnjbvr says
We have released a new version of the Matrix Rust SDK this week: you can now update it to version 0.8.0!
This is the first version we're releasing using our brand new release process, so changelogs are still a bit rough, but this new release process should also help with hopefully getting more frequent releases (with fewer large breaking changes, better changelogs over time, etc.).
Notable new changes include:
- There are new APIs in town to observe the latest event of a single type:
Client::observe_events
andClient::observe_room_events
(docs).- The media cache has been moved over to a new store, called the
EventCacheStore
; it may be configured when creating a new client usingStoreConfig::event_cache_store
.- The send queue now has the ability to upload medias, and reflect ongoing uploads as local echoes.
- The implementation of invisible crypto is moving along nicely, with new methods to pin a
UserIdentity
, listen to identity changes etc.Full changelog for the main crate. Note we now have changelog files for every other crate we do publish.
libkazv (website)
libkazv is a matrix client sdk built upon lager and the value-oriented design it enables.
tusooa🏔️ announces
libkazv 0.8.0 is released. It uses the vodozemac crypto library instead of the deprecated olm, and fixes a security vulnerability that might have allowed the replacement of the session key of a megolm session. There are also several small enhancements.
Elm SDK (website)
A more consistent alternative to the matrix-js-sdk, written in Elm.
Bram says
Elm SDK beta 3.6.1
The Elm SDK has a patch update, fixing trailing slashes at the end of the URL.
Most of the work for the Elm SDK is fixing bugs where the spec doesn't match the ecosystem. Synapse doesn't sanitize user IDs over federation, for example, which leads to unspecified JSON results. This is currently in the testing phase, but this refactor means a second patch update might appear soon.
- ❌️ Downside: This means more work for me.
- ✅️ Upside: The Elm SDK will be able to count numbers and determine the scope of these problems.
Once the Elm SDK has appropriately adapted to some problems like these, I will report my findings, hopefully offering the Spec Core Team some statistics that can help them make decisions when making breaking migration changes. For now, however, this week's patch update exclusively fixes a bug! 🐛
Dept of Services 🚀
Synapse Admin
Aine [don't DM] reports
A while back, we at etke.cc announced our Synapse-Admin fork, and this week, we're excited to share more new features and QoL changes!
Using the Make Room Admin API endpoint, you can now assign room admins to Matrix rooms. This feature works only if there is at least one local member (preferably with a room admin power level) in that room.
Add preferred color themes to login page and footer
This update brings something small but special: a proper dark theme across the whole Synapse Admin app 🎉.
Previously, the Login page had a light background even when your browser was configured to prefer dark mode. The same was true for the footer, which was overwhelmingly bright.
Fellow dark mode enjoyers, the inconvenience is no more—both the Login page and footer now use your preferred theme colors!
Documentation for configuration
Not a new feature, but one that may help a lot—we hope you find this useful! We've added documentation for all config options and example configs for reverse proxies. The latter is a bit lacking, containing examples only for basic cases with Nginx and Traefik, so PRs are greatly appreciated.
Source code, admin.etke.cc (CDN version), and don't forget to say hi in the #synapse-admin:etke.cc
Dept of Bots 🤖
I Don't Have Spotify Maubot
HarHarLinks announces
Do people sometimes share links to music with you on Matrix? They do for me. Often, people use Spotify as their music streaming service, but I don't have Spotify.
Last week I came across sjdonado's I don't have Spotify webapp which conveniently exposes a REST API that allows you to easily query things, and is selfhostable open source software.
So easy enough I spent yesterday afternoon tinkering a quick maubot plugin that does the job for you: https://github.com/HarHarLinks/maubot-idonthavespotify.
Here is what it looks like in action:
Baibot
Slavi says
baibot and its underlying framework library (mxlink) have been adapted to the new v0.8.0 release of the Rust-based matrix-sdk.
This brings Matrix authenticated media support, so:
- baibot can now be used on existing homeservers which already enable authenticated media (like
matrix.org
)- there's one less blocker preventing admins from enabling authenticated media on their homeserver
Dept of Events and Talks 🗣️
Matrix Retreat 2025: Workation in Thailand
Yan says
Following the success of the Matrix Retreat in Austria 2024, we are organizing the next iteration: a workation for those passionate about Matrix, messengers, and distributed technology.
Details:
- When: Between FOSDEM (February 1–2, 2025) and FOSSASIA (March 13–15, 2025) joining partially is possible
- Where: Koh Phangan, Thailand
This is an excellent opportunity to collaborate with like-minded professionals in a productive yet relaxed environment.
How to Get Involved:
- Join our videocall: on 24th November 6pm CEST
- Connect via Matrix for updates and coordination:
We look forward to collaborating with you on this exciting initiative.
Dept of Interesting Projects 🛰️
matrix-sdk-redis
andybalaam says
matrix-sdk-redis is a new Rust crypto store implementation, allowing you to use matrix-rust-sdk and store your Matrix crypto information in a Redis store, avoiding the need for a filesystem. It's highly experimental and has some significant known gaps, but it seems to work. Version 0.1.1 is out now. Find out more at https://codeberg.org/andybalaam/matrix-sdk-redis
Element Web Guest Module (website)
Michael Weimann (n.io) reports
The Element Guest Module in conjunction with the Synapse Guest Module allows visitors to your homeserver to automatically register a temporary account with some capabilities that go beyond standard Matrix guest users.
Element Web 1.11.84 now includes the matrix-react-sdk as part of the Element Web repo (PR). We have released a new version of the guest module adapting to the change, that works with Element Web 1.11.84 (or later).
All the packages of our Element Web modules can be found in the releases section of our repo.
If you have any questions or feedback, please reach out to us using our public room #nordeck:matrix.org.
TARDIS
Matthew announces
I wrote a new experimental DAG visualisation layout algorithm for TARDIS, loosely based on git-style 'tramline' branching visualisations. It can handle massively complex DAG structures, useful when debugging exotic state resolution problems or fork-proliferation problems.
So for instance, the layout of an Element Call-related DAG explosion that TARDIS entirely failed to visualise last week, which looked like this:
Now looks like this
Matrix in the News 📰
Thib (m.org) announces
Computer Weekly covered the story of ePost, a service from the Swiss Post based on Matrix targeting a million users
Matrix Federation Stats
Aine [don't DM] reports
collected by MatrixRooms.info - an MRS instance by etke.cc
As of today,
10384
Matrix federateable servers have been discovered by matrixrooms.info,3171
(30.5%
) of them are publishing their rooms directory over federation. The published directories contain21165
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 | awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay | 183 |
2 | girlboss.ceo | 214 |
3 | puppygock.gay | 270.5 |
4 | ncat.cafe | 307 |
5 | uwu.zemos.net | 318 |
6 | rory.gay | 321.5 |
7 | transgender.ing | 329 |
8 | constellatory.net | 349 |
9 | ipv6.girlcock.systems | 353 |
10 | kif.rocks | 360 |
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.