Matrix Live 🎙
Chatting with Manu about iOS, Mobile, team growth and more. See video description for agenda!
Dept of Status of Matrix 🌡️
Incoming security fix
As just blogged there is an important security fix coming for several Matrix clients. More news, and patched versions will be announced on Monday. Though there is no evidence this vulnerability has been exploited, please be ready to upgrade on Monday.
Dept of Spec 📜
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/unstable/proposals.
MSCs with proposed Final Comment Period:
MSCs in Final Comment Period:
- No MSCs are in FCP.
- No MSCs were merged this week.
Lots of new MSCs this week. Thanks to everyone contributing!
Random Spec of the Week
The random spec of the week is... MSC2832: HS -> AS authorization header!
I'm actually surprised myself that this wasn't part of the spec already! Looks like it would be a nice to-do to get this implemented and then checked off by approvers. Anyone want to submit some PRs to HS and AS implementations? 🙂
Dept of Servers 🏢
Dimension, an integration manager alternative for Element, got a refresh from @TimeWalker to bring the project up to modern day standards. Please give it a go if you've been running Dimension, and report bugs if there's problems! While I haven't personally had time to maintain it as much as I'd like, it's great to see people taking on 3 year old bad code and fixing it 😄
For TWIM readers, Dimension is an "integration manager" that replaces the default one shipped with Element. It's not entirely mobile-ready yet, but does give a user interface for managing various bots, bridges, and widgets. In practice, an integration manager isn't needed as most bots and bridges (and even widgets) can be set up without an integrations manager, like all of https://t2bot.io/ (ironically, given Dimension was originally targeted at t2bot.io). People do still use it though to configure self-hosted platforms with their very own Element, Synapse, bridges, and bots.
While I still probably won't have much time personally to maintain it, PRs are certainly accepted. Dimension is a bit complex to work within and test, but people in #dimension:t2bot.io should be able to help out.
callahad told us:
Synapse 1.42.0 is out now! This release includes support for Room Version 9, which fixes an issue with Version 8's support for restricted rooms. We also implement a bunch of new MSCs (including MSC3231: Token authenticated registration by Callum Brown as part of his Google Summer of Code project), improve efficiency, and sidestep a longstanding issue with users getting stuck in unsupported room versions. Read the announcement for details!
This week saw the release of Sydent 2.4 which finally implements MSC2265: mandating case folding when processing e-mail address local parts. After upgrading, Sydent administrators must manually run a script to retroactively case-fold existing email addresses in the Sydent database.
This Sydent release also includes support for Jinja2 templating, a complete overhaul of our CI/CD pipeline, and a comprehensive update to the codebase to follow modern Python practices including the addition of mypy type hints throughout.
Lastly, we'd like to welcome Shay to the Backend Team at Element. Her work as an Outreachy intern paved the way for the recent improvements to Sygnal and Sydent. Thanks, Shay, and welcome aboard!
Homeserver Deployment 📥️
And another week, another Kubernetes Helm Chart update, this time seeing matrix-synapse updated to 1.42.0 - as well as a whole lot of fixes to support the new ingress object version introduced in Kubernetes 1.19
Dept of Bridges 🌉
matrix-appservice-bridge reaches 3.0.0!
Half-Shot told us:
Hi folks, we're massively pleased to announce the third major release of the TS/JS bridging library matrix-appservice-bridge. This release contains several large breaking changes to the previous way of life, most notably we have stopped using the matrix-js-sdk for most of our code, instead using the matrix-bot-sdk (Hi TravisR , we see you up there!).
There are several reasons why we went this way:
Notably, this library focuses work on simply implementing APIs and bridge/bot logic. There is no additional cruft to support client use-cases or browsers.
It's historically had a brilliant coverage of the CS and AS APIs, and has been extremely flexible to add new stable and unstable APIs to it.
At the start of this project, it was the only library with a complete Typescript coverage. Typescript types continue to be extremely useful to us.
We're hoping to make use of the upcoming encrypted appservices support, to replace the slightly janky pantalaimon support the bridge library currently uses.
Thanks to Travis and the matrix.org bridge team for working through these changes!
There are a bunch of common sense improvements that break API compatibility in this release also, so please be sure to check them out and update. We don't anticipate supporting 2.X except for extreme circumstances.
Finally, we'll be updating the matrix-org suite of bridges over the coming weeks so please watch for bugs and let us know how we're doing!
Dept of Clients 📱
SchildiChat for Android
SchildiChat is a fork of Element that focuses on UI changes such as message bubbles and a unified chat list for both direct messages and groups, which is a more familiar approach to users of other popular instant messengers.
After a couple of weeks/months of internal testing and public beta testing, the latest stable version (1.2.0.sc42) now supports UnifiedPush!
This means that you can now choose your own push provider, if you do not want to use Google's FCM push notifications. Huge thanks to @sim_g:matrix.org for working on this!
Nheko is a desktop client using Qt and C++17. It supports E2EE and intends to be full featured and nice to look at
You might remember my short story from last TWIM about the race between different translators? Seems like that one was good enough to motivate a few people to contribute translations. While those don't seem to be 100% complete yet, we saw a significant jump in translation percentages (especially Portuguese), so thank you to everyone who contributed to that!
Thulinma also made the whole userprofile scrollable, which improves the experience on small screens a lot. He also implemented message deduplication by event id, which is required by the spec to be done on the client side. This fixes a lot of duplicates when using conduit and your join event appearing 2~3 times on synapse.
We also fixed an issue with how different homeservers update one time key counts and added some additional code to remove old one time keys, if we ever uploaded to many (which might have happened in the past in a few edge cases). We also now escape img tags in usernames correctly in more places, redundant date separators when paginating back in a room should not appear anymore and tastytea decreased the margins on blockquotes, so that they look less jarring and take up less space.
Alexandre Franke announced:
So many merged requests have been merged since our previous update two weeks ago that I can’t even 😲.
The biggest news is that multi-account support landed in fractal-next (don’t be fooled by the title of the MR, it’s more than just a widget!). I feel like this is one of the most requested features across all clients, yet not many have it yet, and I’m ecstatic that we’re joining them 🎉. This work was done as part of GSoC by Alejandro under the mentorship of Julian 👏.
Julian landed a whole bunch of changes ❗️ He added scrolling and a scroll to bottom button, fixed keyboard shortcuts and a wrapping issue with long “words” that caused the timeline to jump to a wider size. But all this pales in comparison to loading previous events 🤯
Updates from the teams.
- Testing and polishing of Spaces.
- Room version 9 will be marked as the preferred version for MSC3083 restricted rooms on matrix.org and released in Synapse 1.43.
- Released Element Web 1.8.3 RC2.
- Pushing forward with threads, improving on our Labs prototype. We’re exploring what backend and spec changes we will need to support threads robustly.
- Cross-signing bug fixes.
- 1.5.3 is available on TestFlight. It will be released on Monday with:
- Startup optimisation. The duration is divided by 3 or 4
- Media size selection on sending: the option must be enabled from settings
- URL preview under a LABS setting
- We made good progress on SwiftUI screen templates. We will be able to use them soon for real views or screens
- Better app navigation is still in progress
- The Matrix Android SDK2 is now available on MavenCentral!
- Please upgrade your dependency to this library from ‘com.github.matrix-org:matrix-android-sdk2:v1.1.5’ to 'org.matrix.android:matrix-android-sdk2:1.2.1'. New badges has been added in the Readme of https://github.com/matrix-org/matrix-android-sdk2 and the sample (https://github.com/matrix-org/matrix-android-sdk2-sample) has been updated to use this new dependency.
- Element Android 1.2.1 has been release to the beta channel of the PlayStore and should be push on production on next Monday. It includes improvement for the Spaces (still in beta) and improvement for the VoIP. Full changelog can be found here: https://github.com/vector-im/element-android/releases/tag/v1.2.1
Dept of SDKs and Frameworks 🧰
v0.6.0-beta.2 has been published of matrix-bot-sdk as an early version to support encryption on bots and improvements to appservices. It's a bit self-directed to figure out how it works, but #matrix-bot-sdk:t2bot.io is available to try and help out.
Please give it a go and report bugs. The final v0.6.0 release is expected to contain not only encryption support for bots, but also appservices and real documentation. For now though, it's just the bots.
MRSBFH - Matrix-Rust-SDK-Bot-Framework-Helper
After 6 Months I finally got a use for this again so I finally did update this.
Basically everything as before but now including recent tokio, recent (stable) matrix-rust-sdk and rust edition 2021.
Source as before over at https://github.com/MTRNord/mrsbfh
Dept of Bots 🤖
Mother Miounne v1.0.0 is here
Miounne? What is it?
It's an "automation backend" bot of etke.cc and has following features:
send html forms from your website directly to matrix
manage matrix-registration invite tokens in matrix chat
Miounne hits first stable release. I already shared some info about it here some time ago... but now it's stable! Source code has 83+% of unit tests coverage and some bizarre bug have been fixed.
Besides, now you can use pinned version of the bot (docker registry)
PS: we have #miounne:etke.cc room to discuss (whine) and post updates about it
Dept of Interesting Projects 🛰️
Patience, a full stack integration testing approach for Matrix clients and servers, has added initial support for Hydrogen this week. As it already supported Element Web, we now have a (basic) system for testing multiple clients together which is taking shape! 🥳 From here, we plan to add configuration options to express the permutations of clients you want to test together.
This project is still in its early stages, but we hope to eventually have support for many different clients and then use it to test common flows like user verification, which can differ quite a lot across clients. If you're interested in this topic, feel free to join the new #matrix-patience:matrix.org room.
Final Thoughts 💭
Someone has been making Matrix fanfic! I'm not sure how federation ties in, and for some reason they feature rubber duck debugging at one point but otherwise it looks fun :) https://www.youtube.com/watch?v=9ix7TUGVYIo
Dept of Ping 🏓
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
That's all I know 🏁
See you next week, and be sure to stop by #twim:matrix.org with your updates!