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://matrix.org/docs/spec/proposals.
With the Spec Core Team aiming for a most-bugfix/maintenance release for Matrix v1.5, Iâd like to call out some of the fixes to the spec that have landed in the last two weeks:
This MSC aims to eliminate an ambiguity in the push rules portion of the spec. Specifically, that which arises from how to deal with event fields which have a dot (period) in them - such as m.ts. The problem is that a . in the push rule definition is intended as a path-separator. For instance, if you want to match on the value of the âfooâ field in the event below:
{
"bar": {
"foo": 123
}
}
youâd write âbar.fooâ. But if instead of foo, we have m.foo, then youâd be stuck when trying to figure out what field to match against in the following case:
{
"bar": {
"m.foo": 1
"m": {
"foo": 2
}
}
}
Are you matching against 1 or 2?
This MSC tries to fix this by stating that âmatching on a dot in a field name requires that dot to be escapedâ. So youâd write âm.fooâ to mean the field m.foo, rather than a dictionary âmâ containing a key âfooâ.
Anyhoo, check the MSC out and voice your opinion if any of that seems interesting to you :)
It is exciting to see more actors joining the Matrix ecosytem! We strongly encourage ejabberd developers to join #homeservers-dev:matrix.org and to open MSCs if they find clever ways to improve Matrix.
Out of curiosity I wanted to know which server discovery methods various homeservers were using.
To get the data, I cobbled together my autodiscover-server-configuration library with a list of known servers
from my homeserverâs destinations table, which holds 14683 entries (although a few are clearly invalid).
After following the discovery flow for every server on the list, itâd also check HEAD /_matrix/key/v2/server to see if the resulting (delegated) hostname is behind a reverse-proxy,
or directly connecting to Synapse (or a proxy-server that doesnât set itâs own server header). Visualized are the results.
Some favorite server names:
This week we released Dendrite 0.10.3 with the usual dose of features and fixes, including:
Event relations are now tracked and support for the /room/{roomID}/relations/... client API endpoints have been added
Support has been added for private read receipts
The built-in NATS Server has been updated to version 2.9.3
The unread_notifications are now always populated in joined room responses
The /get_missing_events federation API endpoint should now work correctly for rooms with joined and invited visibility settings, returning redacted events for events that other servers are not allowed to see
The /event client API endpoint now applies history visibility correctly
Read markers should now be updated much more reliably
A rare bug in the sync API which could cause some join memberships to be incorrectly overwritten by other memberships when working out which rooms to populate has been fixed
The federation API now correctly updates the joined hosts table during a state rewrite
As always, please feel free to join us in #dendrite:matrix.org for more related discussion.
Hey everyone, itâs been a long time since my last TWIM post. I just want to tell
you that the refactor branch was merged to next and a few useful fixes have
already been merged:
Fixed: Random rooms become historical
Fixed: Profiles not loading when scrolling through history
Fixed: Leaving rooms doesnât seem to do anything
Fixed: E2EE finally works reliably
You can expect a new Conduit release very soon, if you have any last wishes for
small features or bug fixes, please tell me now :)
I currently work on Conduit in my free time, you can support me on https://liberapay.com/timokoesters
PS: Iâm also looking for Conduit grants and jobs for when I finish university next year, contact me if you have ideas
Havenât managed to report on these for a bit, but my Helm Charts have been keeping up-to-date nonetheless. Currently sitting on element-web 1.11.10 and matrix-synapse 1.68.0
But no, thatâs not a new article on Medium with whining about modern society and technologies, itâs Postmoogle v0.9.7!
It already had abilities to send and receive emails, had huge amount of customization options and permission management.
Now we added the anti-spam options, both âstandard spamlistâ things to reject emails by email address, domain name or even localpart and âadvanced checksâ to reject emails from senders without MX records or when the sender email does not exist for sure.
Another year, another Syphon release (I jest, but it has been a while)!
The long awaited 0.2.14 release has been cut last week. Unfortunately, due to CI issues, not all official builds are available yet. As most of the core team has been rather preoccupied with life lately, some delay is expected, but they are on the way!
In the meantime, the GitHub release page contains the successful builds, including Android and MacOS x86, and the full changelog for this release. Some highlights from the latter include:
Spec-compliant private read receipts (weâve had private read receipts for a while, but now theyâre spec-compliant)!
Device name editing, including a random name generator
Additional text made copy-able in the UI (such as the session ID)
As well as a huge amount of refactoring, bugfixes and general improvements
As always, massive thanks to all contributors, especially @EdGeraghty and @Florian-Sabonchi who single-handedly accounted for more than 3/4 of the changelog!
Finally, as a reminder, we now have a Syphon space. Feel free to join us for support, development discussion or just a friendly chat, at #syphon-space:matrix.org.
r._.hit has been working on voip call v1 support as part of the Google Summer of Code. Calls v1 are an improvement over the existing v0 call spec, which should make the calling experience much nicer (however they are still an MSC). As part of his work Nheko now mostly supports the v1 signalling. There are some improvements still missing like allowing multiple streams for screenshare instead of compositing them locally and a few more things, but the bulk of the work is done now. Thank you very much for working on this.
In other news Nheko now evaluates pushrules locally, which means you can now get notifications on servers that donât support the /notifications endpoint properly and you can properly get notifications for encrypted messages. Since this is quite a large change, feedback is welcome. We also broke our dbus API to make it faster. When listing rooms they now donât include the avatar, but just an mxc uri and you need to manually query the avatar over dbus if you need it. Last but not least, Nheko now supports Unicode 15 in the emoji picker including đŞż!
This week, we have finally fixed one of my biggest annoyances with NeoChat so far: Mentioning a user will now be highlighted in the input field and more reliable, meaning you will no longer have to guess if writing a userâs name will actually create a mention. While implementing this, I also added the ability to send room links in a similar way to user mentions.
When switching between rooms, NeoChat will also remember the text you have typed so far and will restore it when you switch back to that room.
When sending a video, the resolution will now be sent correctly
Viewing of custom emojis has been fixed after it broke while implementing link previews
The replied-to message is now shown in a nicer way for messages
The image viewer has also been improved significantly: It will now only cover NeoChatâs window and includes quick actions to resize, rotate and save the image
Weâre continuing to update the new device manager, introducing and perfecting features like:
Sign out of multiple sessions
And disabling notifications for other sessionsâŚ
Updates and improvements to threads are well underway and this week: weâve been solely focused on performance and loading. You should start to feel the impact of this over the next few weeks so be sure to keep threads turned on, and your develop.element.io updated.
Element Video rooms are also currently experimental but receiving regular updates, specifically integrating Element call.
Thereâs a labs setting to start using Element Call from rooms and video rooms for group chats and (I might be biassed) but itâs just wonderful. Check it out!
Itâs been a busy week for the Element iOS team - this week weâve been focussing on improving our accessibility on the navigation elements we introduced a few weeks ago, this includes the voiceover text on the filters.
Weâre also making very good progress on the new login with QR code and device manager features and expecting them to be ready soon
Other bug fixes include:
Fixing a glitch in the header in the All Chats and Spaces home views.
Fixing the freeze and crash that was occurring when searching in a room
This week is a big week for the Android app! After being in Labs for a few weeks the new layout is finally here. We think the new layout simplifies the experience for users:
The filters and recents help you get where youâre going faster (but itâs still configurable to your own workflow)
The new spaces menu and access point is within reach, meaning you can separate your chats however you choose, suiting your daily work & play patterns!
The team have also started back up on threads in full force this week so expect some improvements to land soon
Itâs not only the fun stuff thatâs been worked on, weâre also squashing bugs. My favorite:
Animated images now autoplay in the timeline
If the emoji keyboard is disabled, itâs disabled everywhere (previously it would still show when sending a reply)
libolm 3.2.13 was released this week. This is mainly a maintenance release to fix compatibility with node 18. There was also: a minor change to the Python packaging, documentation updates, and a slight improvement to the pkgconfig file. Most people will not need to update.
There is not a new release of simplematrixbotlib this week, however I would like to share some progress on the upcoming simplematrixbotlib version 3.
New matching system
Instead of the current implementation that uses the MessageMatch class with various methods such as MessageMatch.command(), MessageMatch.prefix, etc., version 3 will be using a custom matching syntax. The following is a preview of the currently planned matching api for version 3:
message = "!echo something Matrix"
prefix = "!"
rule = f"{prefix}echo <message *>"
matched = botlib.match(message, rule)
if matched:
print(matched['message']) # "something matrix"
In this snippet, rules such as fâ{prefix}echo <message *>â would be treated as required literals, with the usage of <> to denote arguments. The optional usage of pythonâs f-strings feature also makes inclusion of variables such as prefix more intuitive and flexible. For more information on the simplematrixbotlib version 3 matching api, please checkout the relevant issue at https://codeberg.org/imbev/simplematrixbotlib/issues/4 or room at https://matrix.to/#/#simplematrixbotlib:matrix.org .
After the release of 0.6 a few weeks back, the team has removed a lot of legacy code that will be dropped by the next release. Most notably the previous experimental timeline API has been removed and was replaced this week with the new stateful-messages timeliness API, which will soon be available via FFI, too. Meanwhile the sliding sync extensions are still on-going as a recent rest showed that the internal test-client jack-in fails to pull events via the API - investigations are under way.
matrix-docker-ansible-deploy now includes support for easily customizing the upstream Synapse container image, by adding custom build steps to its Dockerfile.
Until now, people who wished to make additions to the Synapse container image had to make a fork and build it from scratch. This new feature makes things much easier. To learn more, see this changelog entry
This Synapse-customization feature was developed in an effort to assist another feature which weâve landed today: synapse-s3-storage-provider support.
Have you ever wanted to have a specific color MXID in Element? I certainly have, and so Iâm pleased to announce mxid-color-gen, a small utility which can help you predict what color your MXID will be assigned before creating your account. Gone are the days of creating accounts until you get a color you like (or is that just me?).
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank
Hostname
Median MS
1
conduit.rs
142
2
joeth.uk
221
3
kernel-error.com
251
4
dendrite.s3cr3t.me
354.5
5
rustybever.be
358
6
willian.wang
364
7
dendrite.hazmat.jacksonchen666.com
456
8
zemos.net
46686
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.