Dept of Spec 📜
Andrew Morgan (anoa) 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.
- There were no new MSCs this week.
MSCs in Final Comment Period:
- No MSCs are in FCP.
- No MSCs were accepted this week.
- No MSCs were closed/rejected this week.
Pretty quiet in spec land this week, while IETF/MIMI continues to whir away in the background.
In other news, the SCT expects to start focusing on the custom emote MSCs in the very near future! ✨
Random MSC of the Week
The random MSC of the week is... MSC1921: Support cancelling 3pid validation sessions!
This MSC is fairly straight-forward, proposing the addition of two new endpoints to allow you to immediately cancel a 3PID verification session on an identity server (instead of waiting for the automatic 24-hour timeout). This is particularly helpful if you put in the wrong email/phone number on your first attempt.
I don't think Identity Servers get much love today, but this sounds like a no-brainer to add. Go forth and comment on if it sounds interesting to you!
Dept of Servers 🏢
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
Olivier 'reivilibre' announces
This week in Synapse-land, we released version 1.94.0 of Synapse. This version includes a security fix for a medium-severity denial of service vulnerability (GHSA-5chr-wjw5-3gq4 / CVE-2023-45129), so please do consider updating! Other than that, this release brings back the ability to view common plain text formats and common image formats inline in the browser instead of downloading them to disk when accessing them from the media repository. This will be appreciated most by bridged users, but can also be pleasant in some other use cases. There are also some minor performance improvements and other minor, internal, changes.
Dept of Bridges 🌉
Out Of Your Element
My new bridge is now generally available! Out Of Your Element is a new Matrix-Discord bridge focused on efficiency, accuracy, and feature coverage.
Some bits from the readme...
Why a new bridge?
- Modern: Supports new Discord features like replies, threads and stickers, and new Matrix features like edits, spaces and space membership.
- Efficient: Special attention has been given to memory usage, database indexes, disk footprint, runtime algorithms, and queries to the homeserver.
- Reliable: Any errors on either side are notified on Matrix and can be retried.
- Tested: A test suite and code coverage make sure all the logic works.
- Latest API: Being on the latest Discord API version lets it access all features, without the risk of deprecated API versions being removed.
Messages, edits, deletions, text formatting, spoilers, emojis, emoji sprite sheets, reactions, mentions, smart mentions, m.mentions, replies, threads, stickers, attachments, embeds, guild-space syncing, channel-room syncing, emoji list syncing, and more. Yes, this is all supported right now!
The bridge is stable. I switched from Half-Shot's bridge to OOYE for my personal use more than a month ago and I haven't run into any serious issues. While occasional glitches do happen, they are easy to deal with by capturing the problematic event and adding it as an automated test case to ensure it does not happen again in the future.
I have been consistently working on the bridge for the last 5 months. A few people have already started running their own copy of the bot too. I am still updating the code with new niceties and bug fixes. I'm particularly interested in improving moderation for larger community servers. If you think OOYE is right for your server, or if you're not sure yet, join the discussion and feel free to suggest features. :)
Repo: https://gitdab.com/cadence/out-of-your-element Chat: @cadence:cadence.moe (say you're interested in OOYE) Discussion space: #out-of-your-element:cadence.moe
Dept of Clients 📱
Desktop client for Matrix using Qt and C++17.
Now that it is getting colder and darker, I find myself nestling in front of the screen again and trying to tan in the comfortable light it emits at night. Creepy descriptions aside, we merged a larger rework of our message rendering this week. You will mostly not notice a difference, however it solves a lot of glitches we had with our own layouting code. I could go into a lot of details on how the actual message delegate is structured and how we now manually instantiate reply and event and calculate the combined size, however if that interests you, I suggest you instead come and talk to us in #nheko:nheko.im or you dive directly into the code. As a user you may notice some regressions, specifically about double click or slide to reply. We might bring those back eventually, but we need to see, how to approach that better.
With that rework out of the way, we also fixed a few performance issues, where an animated image scrolled offscreen (into our offscreen buffer to enable smooth scrolling) would still consume a constant amount of CPU. Similarly the rainfall effect used to constantly use some CPU as well. On my laptop that meant a constant 10% of CPU usage, which I first blamed on Qt6, but in the end turned out to be a bit of both. Nheko is now back to the usual 0.6% CPU usage with 5 syncs per second in a debug build. This should significantly improve battery life and bring us back to where we were before.
Furthermore we merged a lot of open PRs in the last few weeks, including fixes to the powerlevel indicator size, text scrolling on mobile, polish to the room directory dialog, global "hidden events" settings, ways to reset to the default font, more consistent naming of the example user and a few more random fixes.
Additionally the apple silicon builds now include a new enough Qt version, so that they work again if you download the nightlies.
That's all I have for you today. Maybe we only need a few more bug fixes to actually make a new release finally!
Element X iOS (website)
A total rewrite of Element-iOS using the Matrix Rust SDK underneath and targeting devices running iOS 16+.
Happy Friday everyone! Can’t let too much time pass without parallels to everyone’s favourite homonym movie, right? Right!? ʿ⬤ᱼ⬤ʾ Here we go:
Nebuchadnezzar 🚀has been smooth sailing for the past week and we're happy to report that:
- Mention pills 💊 with user “operator” suggestions are almost here 1, 2, 3, 4, 5
- We are developing new security measures to protect our communications from Agent Smith. You will be able to lock the application behind a PIN or Biometrics
- The Oracle has revealed that voice messages are still in their Element 1, 2
- We applied some serious wire-foo and fixed the glitch that was preventing us from forwarding messages
- We've made certain fixes to ensure that offline mode works properly so we can resist even when not in the Matrix
"See you in the real world" 👋
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- We’re still working hard, writing tests, fixing bugs, and making improvements to our notifications. We’ll keep working on it.
- Along with bug smashing (notifications or otherwise) we’ve also been working on some other exciting improvements:
- We have a new translation system! This past week we finished moving over our strings to our new translation and localisation tool which will help us to ensure our content between platforms matches where possible.
- We’re making Element easier to navigate, understand, and much nicer to look at. In the previous few weeks we’ve been updating our room header (see that in Labs). Along with that we’ve now been improving our right pane, so the room experience is much smoother.
- Along with those visuals we’ve been moving our OIDC work forwards.
Dept of SDKs and Frameworks 🧰
Emma [it/its] reports
This week was quite calm as I spent some time working on other projects using LibMatrix.
- (Attempt to) fix the command handler in the bot extension not exiting in a timely fashion when shutting down
- Fix event posts erroneously including null values by specifying default ignore condition
- Make initial sync detection more reliable by disabling timeout during initial sync, and checking for 5 "empty" (re-serialised being <250 characters) sync responses
- This was an issue with eg. Conduit splitting up initial sync into multiple syncs
- Add option to join existing room if a room already exists with a given alias
- Technically slows down room creation as a call is made to alias resolving endpoint
- Thinking about removing this and making users handle it themselves, or providing a utility function (
- Improve error handling to handle a case where a server throws an exception but doesn't specify any response body (encountered with Conduit)
- This is done by checking content.Length == 0, and if so, throwing a
M_UNKNOWN, where the error message indicates that the server returned no content
GetStateOrNullAsyncas wrapper around
GetStateAsyncthat catches an
M_NOT_FOUNDerror and returns null instead of throwing an exception
And, as always:
- The code is available at my CGit domain
- CGit is a frontend I've set up for our repos, you can still find the plain git link at my git domain
- 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)
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
Jonas Platte reports
Over the last two weeks,
- we made a bunch of progress on widgets
- we added a high-level method for editing to the timeline API
- we improved our internal testing APIs
- we improved performance of
- we made lots of improvements to read receipts in the timeline (contributed by Kévin Commaille, thanks!)
- and as always we also fixed lots of bugs, too many to list :)
Dept of Interesting Projects 🛰️
Since some of you DMed me asking to bring back the Tech News feed, here it is: #tech-news:uxn.one It pulls in technology news using an RSS bot for easy discovery of news articles wherever you have access to Matrix. This time, only the bot is allowed to post to the main feed, so it won't devolve into chaos.
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!