We didn't have time for a Matrix Live this week, but don't miss next week's episode!
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/proposals.
MSCs in Final Comment Period:
- No MSCs were accepted this week.
- No MSCs were closed/rejected this week.
On the Spec Core Team (SCT), we've started converting the list of MSCs we received into a roadmap for the next 8-ish weeks. This is all to prepare for Matrix 1.8, and we're already starting to think a bit about what Matrix 1.9 looks like too. You can see what the team plans to look at here - each column is ordered in relative priority, where the top is more likely to receive attention first. Not everything is actionable at the moment, but that's the point 😄 As we work through the next month or so, the remaining MSCs should be unblocked or near-unblocked enough to allow the SCT to make progress on them.
Most of the MSCs on the roadmap have a target state of acceptance (and merge, if we can make that happen), though some do have a simple task of reviewing the MSC ahead of implementation effort. We're aiming to test this process over the next few releases, where the SCT unblocks progress by providing review ahead of review actually being needed, but to do that we need to know what people plan to work on. If you have something which could do with review (not just acceptance) in the August-November window of time, let us know in the SCT Office.
As always, if you have questions about a particular MSC's state or what this process actually means, let us know in the SCT Office.
Meanwhile, the SCT is continuing its IETF/MIMI adventures by pushing Linearized Matrix towards working group adoption. The current stages involve updating the Internet-Draft (I-D, or MSC in IETF terms) to cover the MIMI-specific bits of the room model and working on multiple implementations of the proposal. We'll be updating the MSC at a later stage to account for the DAG interop components, though how to get a DAG to work with the linear, append-only, MIMI variant is very much top of mind. You can see the current rapidly-changing I-D here.
As mentioned, to further adoption of Linearized Matrix within MIMI we're looking for independent implementations. "Independent" here means not written by the Matrix Core Team and not written by Element given the potential for conflict of interest, though the Matrix team is working on proving the I-D through eigen-server and possibly a dual-stack Synapse (watch this space). We have a line on ~2 completely independent (but undisclosed 😇) Linearized Matrix implementations already, but more is often better for these things: if you work for a messaging service provider and are interested in writing an implementation, get in touch with us so we can coordinate some interop testing. You don't already have to be using Matrix to write an implementation, and in fact it's probably better if you aren't already using Matrix, awkwardly.
Random MSC of the week
The script of fate has decided to put forward MSC3060: Room Labels this week. This is a relatively small MSC, but one which provides a ton of value to discovering rooms. The labels/topics your room covers are listed in a state event and can inform users of what to expect beyond the room name/avatar. For example, if your room has primarily NSFW/18+ content, you can disclose that in the labels.
Leave your thoughts and concerns on the MSC via threads on the diff 🙂
Dept of Servers 🏢
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
What would Friday be without TWIM? This week the backend team released Synapse v1.85.2. Notably this version fixed a regression where using TLS for HTTP replication between workers did not work and fixed a bug in the schema delta that broke upgrades for some deployments - both introduced in v1.85.0.
In addition, please note the security advisory that the following issues are fixed in 1.85.0 (and RCs):
It may be possible for a deactivated user to login when using uncommon configurations.
A discovered oEmbed or image URL can bypass the
url_preview_url_blacklistsetting potentially allowing server side request forgery or bypassing network policies. Impact is limited to IP addresses allowed by the
url_preview_ip_range_blacklistsetting (by default this only allows public IPs).
See the advisories for more details. If you have any questions, email [email protected].
There is also a deprecation to call out:
- Calling the
/registerendpoint with an unspecced
userproperty for application services is now deprecated.
Finally a few more highlights:
- Add a new admin API to create a new device for a user. (#15611)
- Add Unix socket support for Redis connections.
- Fix a long-standing bug where filters with multiple backslashes were rejected.
- Remove the old version of the R30 (30-day retained users) phone-home metric
And so much more! To read about everything in the release, take a look at the release notes here and otherwise have a great week.
Dept of Bridges 🌉
Node.js IRC bridge for Matrix
Matrix-appservice-irc 1.0.0 is finally here
Afternoon all! We've had a pretty hectic time here at matrix.org bridge towers. Ever since we announced the first preview of the new connection pooling feature way back in
MayApril, we've been busily working away to try and make the bridge stable. The work put into the bridge is nothing short of a total refactor to our connection logic, and thankfully it's starting to bear fruit.
1.0.0 is now ready for the masses!
The major highlights of this release are:
- 🔥 IRC connections can now be run via an external process using "connection pooling", allowing the bridge to be restarted without IRC connection loss.
- This release drops support for Node 16. The minimum required version is now 18+.
- Bridge logging / bridge info state event configuration is now fully hot-reloadable.
- Show a helpful error for !link/!unlink admin failures, rather than "Check the logs for details", in more cases.
- Sort the list of channels in !listrooms output
- Fixes cases where powerlevel changes may not be correctly applied upon mode change
- Allow usernames to include more characters when using the !username command
I know a lot of you will be eager to go and enable connection pooling, but please bear in mind it is still a very new feature. Please test away and follow our wiki instructions, but be careful when running it in production!
A final note to our libera.chat users
Many of these changes have been incrementally deployed to our biggest deployment, the libera.chat bridge. We know that the bridge has suffered some reliability issues recently, but we hope that the incremental changes have started to be noticed. We're now in a position where we can react to issues with the bridge, and make changes without making so much as a whisper of noise to the IRC network. Over the coming weeks we expect to continue to do what we can to improve reliability and performance, and overall grow the confidence in the bridge.
To that end, we've redesigned our support model for the bridge and we'd encourage you to take a look at our brand new tracker over at https://github.com/matrix-org/libera-chat.
For folks bridging to other networks, the old https://github.com/matrix-org/matrix-appservice-irc/ repository is still the best place to go for now.
Dept of Clients 📱
A Matrix client by and for MTRNord
Cetirizine received multiple smaller updates:
- Working timeline view, which allows for up scrolling (no backfill yet)
- Improved roomlist (The roomlist should now be lazy loaded correctly)
- Fonts are improved (Previously those were not correctly loaded)
- Support for MSC4015
- An initial Testsuite was started using Percy and Storybook tests
- Improvements on the decryption speed of e2ee messages
- Fixes to displaying of certain messages
- Added support for video files
- Add basic support for Mention Pills
- Editor is now less talky when sending html messages. Instead many of the classes are removed
Feel free to join #cetirizine:midnightthoughts.space (note that mtrix.org users won't be able to join this room) or try it at https://mtrnord.github.io/cetirizine. The source is available at https://github.com/MTRNord/cetirizine
Desktop client for Matrix using Qt and C++17.
Nheko now shows you custom reactions in your recent reactions (and renders them). Sateallia also made it easier to jump to search results, which makes searching for things a lot more useful! Similarly Sateallia made the last selected space or other filter sticky, which means if you had your DMs open, Nheko will open those again after a restart. Thanks to LcsTen notifications after you have been absent for a while are reduced to a single summary notification, which should make network outages or coming back to Nheko much less annoying!
But the big news is probably that the Nheko master branch is now using Qt6. This means anyone brave enough to venture into the nightlies, you will get a lot of fun new bugs. This is not for the weak of heart and I can just recommend you to stay away, if you are not ready to fight those bugs yet! It however allowed us to close about 20 issues at once, so it is not like some bugs aren't squashed. But it is a big change and big changes come with noise and regressions. However it does set us up much better for the future.
Speaking of future, we also changed the flatpak id. The old one didn't allow us to verify our domain ownership. This will mean you might need to sign in again, once the Qt6 Nheko is out and if you had been using the flatpak. However since this is a rather major change anyway, I hope you can forgive that and we might figure out a migration path until then.
Now back to those bugs. They are eating my assembly machine again!!!
Element X iOS (website)
Mauro Romito says
Great news from Element X iOS this week! We released on TestFlight the version 1.1.2 this includes some new features alongside the new app logo, such as:
- Starting new chats! You can now create either new rooms or new direct messages
- Invite people in existing rooms
- Accepting invites
- Timestamps for your messages
- Tapping on a user avatar in the timeline will open their profile
- Edit room name, description and avatar
- New context menu
- Replying to a message will show its content in the composer
- Overall performance improvements and bug fixes
In the meantime we are also working on other features for the future version like:
- Read receipts with avatars similar to Element Web
- Changing push rules for rooms
- Location sharing
Element X Android (website)
This week we’ve been working on:
- Updating the onboarding screens for new users
- Increasing functionality to message actions, adding the new composer, allowing editing messages, replying to messages and debugging info for events in the timeline
- We’ve also been working on increasing our test coverage and adding analytics so that we can continue to monitor the success and health of the app.
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
This week’s release of Element Web includes fixes related to stuck notifications - we’re hoping you see a big improvement here but be sure to keep submitting issues and rageshakes if that’s not the case.
Also in this week’s release:
- Updates to message previews in the room list – it’s now easier to see whether a message is in a thread or not
- Accessibility improvements across the product
- Fixes an issue preventing new users from accepting Ts&Cs, among other bugs
We’re also continuing to work on updates to our Notifications Settings page - these will be ready for testing and feedback soon so keep an eye out for those to land on Develop and Nightly in the near future.
We’ve started to look into integrating with OIDC
Dept of SDKs and Frameworks 🧰
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
This week was a short one for a few team members, thanks to always more public holidays, but fear not, for the Rust SDK project has made some nice progress this week nonetheless:
- JS crypto bindings now expose more key data, and a new alpha version of the JS crypto bindings has been published:
- The timeline got some nice improvements:
- Lots of progress in the implementation of Sliding Sync too:
- The Room List API is making huge progress, and a first version has landed! This API attempts to make it easy to write clients using sliding sync by loading and subscribing to rooms in a fast, efficient and opinionated way.
- A new high-level Notification API (naming in progress) has been revealed, in charge of creating a sliding sync instance focused on handling the bare minimum required to handle and decrypt push notifications.
- And bugfixes, as usual: notably, the room name will now properly be taken into account when using sliding sync.
- And the recurring dose of sweet refactorings and CI chores.
A Qt5 library to write cross-platform clients for Matrix
libQuotient 0.8 beta
The first usable version of the upcoming 0.8 streak is out - unlike infrequent, big and splashy 0.6 and 0.7 releases, this is coming rather soon after 0.7.2, and the final release is not far ahead either - and the list of changes is, respectively, rather incremental.
Dept of Internet of Things 💡
Matrix Nio - HACS
Paarth Shah says
Do you use Home Assistant? Have you tried using the default
matrixintegration and been frustrated due to its lack of maintenance, features, and compatibility with non-Synapse homeservers?
Well, I'm happy to announce that there's now a solution: Matrix Nio - HACS is a HACS custom repository (making use of
matrix-nio, of course!) that anyone can install onto their Home Assistant instance, immediately using their existing configurations, automations, and whatever else was set up for the default integration, with no further effort.
Over time, based on popular demand (and my own whims and desires for my own setup, otherwise), I'll be adding new features on top of what's already available, including e2ee, video attachments, polls, reactions, location messages, and hopefully more!
Suggestions are always welcome! Feel free to ask/get support on the github issues page, or in Matrix Nio - HACS!
Dept of Bots 🤖
One of the things I used the venerable goneb for was converting mentions of GitHub issues into links. Given Hookshot can't do this (yet) I thought I would write a quick little opsdroid skill for it. You can find it here: https://github.com/Cadair/skill-github-linker
Dept of Events and Talks 🗣️
Dept of Interesting Projects 🛰️
Technicals: ActerAvatar, Riverpods, UI flows, matrix-sdk update
The technical team is chugging away implementing the screens for the upcoming Alpha of Acter3, like the new navigation bar, login flow and its accompanying pages. As it will be an alpha, an Element-App-insipired labs settings system has been implemented, too, allowing users to opt-in into still experimental features while they are being developed.
But also under the hood a lot is changing: we are switching more and more things to riverpod, trying to replace GetX entirely before the alpha - most notably, the internal routing is using that already, while chat and tasks are rewritten at the moment. Secondly, we have started extracting simple UI components into reusable packages, starting with ActerAvatar (yet to be published) our take on showing avatars with fallback and alike. Unfortunately, our attempt to implementing a dart backend for uniffy now that async support landed, had to be put on hold and won't be in the first alpha. We are in the process of upgrading to the latest matrix-rust-sdk to add sqlite support in the alpha though.
Nightly builds, system status reporting
We have also been busy on the infrastructure side of things: Our nightly builds are now available for all target platforms (Linux, Windows, MacOS, Android & iOS) and the newly created nightly reporting channel https://matrix.to/#/#nightly:acter.global has a convenient link to install the latest version on mobile devices, too. (Note: Because of Apple the iOS version is only working on pre-registered devices - get in contact if you want to use that).
Further more, a second channel now contains updates by our infrastructure monitoring system. Join https://matrix.to/#/#status:acter.global to stay up to date on that.
Tech AMA on June 15th
With the alpha release on the horizon, some people are still having question regarding what we are building and the tech (stack), how we are building it and how to best contribute. Thus, we are hosting our first
Use this form to submit any questions you have. There will be a recording for those who can't make it in person.
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!
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