Matrix Live 🎙
Selection of demos this week, including: Element Home, Hydrogen, Nheko and matrix-notepad.
Dept of Status of Matrix 🌡️
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://matrix.org/docs/spec/proposals.
MSCs in Final Comment Period:
- No MSCs are in FCP.
Spec Core Team
This week the Spec Core Team worked on MSC2858 (sso ID providers), MSC2403 (knocking) and MSC2746 (voip signalling), as well as held another retrospective of the past month. Discussion mainly focused on process and the new spec redesign. Speaking of which...
New Spec Platform
The new spec has launched! 🎉 Check it out at https://spec.matrix.org/unstable! Release versions will be landing sometime soon. Bear with us as we finalise the new release process.
Huge thanks to wbamberg for working hard on bringing the idea to a reality. The Matrix.org foundation will continue maintenance of the platform and continue to make it even better for developers in the coming months.
We've already got a number of bug reports that need fixing. If you find anything that's a bit off with the redesign, please file an issue at https://github.com/matrix-org/matrix-doc. Thanks!
Dept of Servers 🏢
Conduit is a Matrix homeserver written in Rust https://conduit.rs
Support for Jaeger to find performance bottlenecks
Improve initial sync ~2x
Use transaction ids properly when sending transactions
Improve sending code (less likely to get stuck)
Small improvements to README.md and https://conduit.rs
Updated milestone + lots of new issues: https://gitlab.com/famedly/conduit/-/milestones/3
Appservice support improvements
no longer query for aliases outside of their namespace
no longer send irrelevant events
Temporary fix for duplicate events (will be fixed properly with state res)
Thanks to Famedly and everyone who supports me on Liberapay or Bitcoin!
matrix-media-repo is a highly customizable multi-domain media repository for Matrix
TravisR told us:
v1.2.3 is out now with a highish priority fix if you have audio thumbnails enabled. Other goodies include an
X-Robots-Tagheader and some artifact repairs on gif and apng thumbnails. See https://github.com/turt2live/matrix-media-repo/releases/tag/v1.2.3 for the full changelog.
Dendrite / gomatrixserverlib
Dendrite is a next-generation homeserver written in Go
Neil Alexander said:
Earlier this week we released Dendrite 0.3.11, and since then we have merged a significant number of appservice fixes to
masterwhich will go into the next release. With these, bridges should stand a much better chance of working with Dendrite.
Events are now properly sent to interested appservices
Appservice namespace exclusivity is now respected properly
Users starting with
_can now be registered by appservices correctly
Room alias queries for appservices have been improved and should work now
We also upgraded a number of dependencies.
Spec compliance has improved slightly:
Client-server APIs: 60%, up from 56% last week
Server-server APIs: 82%, up from 80% last week
Spec compliance is really progressing!
Synapse is a popular homeserver written in Python.
callahad told us:
We've heard some feedback that Synapse's release cadence—an RC every other week, with releases in between—can feel a bit overwhelming. In response, I'm going to try to write a little less about each RC and instead simply refer to the 1.29.0rc1 Release Notes from yesterday.
We'll shout a bit more when that matures into a formal release early next week. 🙂
On non-release weeks I'll try to spend a little more time focusing on the behind-the-scenes aspects of developing Synapse in our TWiM updates. If there's anything in particular you'd like hear about, let me know!
Speaking of, we're experimenting with using GitHub Discussions for... discussions.
We don't want to go full-on mailing list, but it might be nice to have a place to for slower, asynchronous conversations that don't quite fit into the more rapid pace of a typical Matrix room.
Our first two discussion topics ask about:
Please do weigh in!
Dept of Bridges 🌉
GroupMe bridge (matrix-groupme-go)
I'm working on a GroupMe bridge I made based on tulir's mautrix-whatsapp and mautrix-go.
I aim to add features like double puppeting, end to bridge encryption, etc over time, but an alpha release is available now. I would love to get bug reports and testing info to fix them.
If anyone's running/testing this please join #groupme-go-bridge:malhotra.cc to chat about it
Another recent GroupMe bridge effort: https://gitlab.com/robintown/mx-puppet-groupme
A PSA this time around. Please test this release and update as soon as you can when we go to release on Monday next week. We've included a change to correct how users are registered against the homeserver to comply with the spec (Synapse accepts a /register call without a
type=m.login.application, and versions 2.5.0 and below of the matrix-appservice-bridge sent these invalid requests). I'm hoping to eventually retire this behaviour from Synapse, so the more people that upgrade the better!
Also this PR is the Synapse-side change to remove this behaviour. If your appservice implementation uses this behaviour, please chime in.
matrix-appservice-irc hits v0.25.0(-rc1)
Half-Shot told us:
Hey folks, this release contains a bunch of tiny-but-useful bugfixes that you'd hate to miss out on. The full release comes next week but if you want to help us test early, come and get it while it's hot! This release includes the all important fixes from matrix-appservice-bridge v2.6.0-rc1 which fix a spec compliance issue.
Dept of Clients 📱
A minimal Matrix chat client, focused on performance, offline functionality, and broad browser support. https://github.com/vector-im/hydrogen-web/
Multiple releases this week with lots of bug fixes:
make catchup sync faster, a fix for the biggest slowdown
correct profile info on messages during sending
messages don't wait for remote echo to be marked as sent
make storage on iOS more reliable, this should hopefully be the last of storage errors on this platform
fix file up/downloads on iOS
fixed an issue where room keys never got shared if you talk into an e2ee room for the very first time since login and you happen to be offline
more little fixes.
Fixes, fixes, fixes. Working on another catchup sync slowdown, and then hope to focus soon a new features!
Updates from the teams
- Fixed a bug causing connectivity failures on web
- Fixed bug preventing calls from connecting on iOS
- Moved VoIP call button to the top on web, and fixed bug resulting from the fact they no longer turn into the hangup button
Added Edge to supported browsers
E2EE Olm session deadlock issue (primarily affecting large accounts during startup) has been resolved
1.7.22 was released on Monday (1 Mar)
- Fixed user content sandbox security issue, please upgrade!
- Improved Jitsi conference names
- Disabled chat effects when reduced motion preferred
1.7.23-rc.1 next Wednesday (10 Mar)
Release 1.2.3 has been rejected by Apple
Release 1.2.5 is available on App Store, it contains fixes:
- SSO flow crash fix
- An new option to filter NSFW public rooms (on by default)
- Fix a crash after login/password account creation when a grace is active
- Plus fixes from releases 1.2.2 and 1.2.3
- Release 1.1.0 is now in production on the stores.
- We are working to improve the global performance of the application. Faster initial sync, faster sending of messages, faster timeline, etc.
Element Web on IPFS
I mentioned a while back that I've put Element Web on IPFS.
Since then, I unfortunately had to change its DNSLink domain, so I decided to post about it again, with the new addresses and some minor updates. Here are the former:
ipns://element-web.0x1a8510f2.space/(Main DNSLink address)
ipns://k2k4r8mx8muu913j5oy3e4zvt77xtks8xgxuamlv0ltzwx95lcgk2glw(IPNS hash which the above address points to)
ipfs://bafybeievxs6qzzbfbn6xcbz3xwxhjzxkffjbpwbcc3gikrac6ytqkkutva(IPFS hash of the current snapshot of the above)
In other news, I've updated Element on IPFS to v1.7.22 and made a tiny script to easily update it in future. In case it's of use to anyone, it's right here:
#!/bin/bash if [ "$#" -ne 2 ]; then echo -e "Invalid number of arguments (got $# but 2 required)!\nUsage: $0 <element web folder> <release tag to download>" >&2 exit 1 fi wget -c "https://github.com/vector-im/element-web/releases/download/$2/element-$2.tar.gz" -O - | tar --overwrite --strip-components=1 -xzv -C $1 element-$2 ipfs add -r -p $1 echo "Now use: 'ipfs name publish -key=<publish key> <folder ID>' to publish on IPFS"
Carl Schwan announced:
We are currently refactoring the NeoChat room page. Nothing merged yet but scrolling is now smoother, we added swipe gestures to reply on mobile, and more importantly chat bubbles are coming :) Here is a small video of the new timeline, feedback very much welcome.
A fancy, customizable, keyboard-operable Matrix chat client for encrypted and decentralized communication. Written in Qt/QML and Python, currently in alpha. https://github.com/mirukana/mirage
0.7.0 has finally been released, including:
Push rules and notifications support:
Native desktop notifications
Sound effect playback
Notifications can be globally turned on and off in the running client within a click
Context menu options in the room pane to control a room's notification settings
Push rule editor in account settings:
Control for any rule whether matching messages are
marked as unread, highlighted, trigger a desktop notification, sound, window alert/flash, or any combination of those actions
Create custom rules targeting a particular room, message sender,
messages containing certain words or messages matching advanced conditions
New Python-based configuration system replacing the previous rudimentary JSON settings file
Config files and themes are now automatically reloaded when changed on disk
Rooms in the left pane can now be pinned to the top of the list
Support for drag-and-dropping text and files to upload in chats
Tooltips for the message read counters, listing who has read a message and when
The chat header now indicates when messages are selected in the timeline,
and offers copy/redact/clear selection buttons
Visible indicator when downloading files
Command-line arguments parsing and a
Support for HTTP and SOCKS5 proxies
Hovering on stability percentages in the public homeserver list
now shows more detailed tooltips about the server's recent downtimes
And a lot of other fixes and improvements: full changelog
Dept of SDKs and Frameworks 🧰
libkazv (and the Kazv Project)
libkazv is a sans-io C++ (gnu++17) client library
libkazv is a sans-io C++ (gnu++17) client library
In the past 1 week we ("tusooa and her longcat," we hope someday we can
remove this annotation :P):
- Published API documentation on the web.
- Together with that, added a "getting started" guide with an example >w<
Made matrix-tencent-forward-bot support directly forwarding images
from the matrix room.
- Colourized sender nicks in messages for matrix-tencent-forward-bot.
Dept of Services 🚀
Together with Anthony Rhode from Element we have published the room #matrix-admins-edu-german:matrix.org for Matrix Admins at German-speaking educational institutions. Here we want to discuss topics about Matrix in an academic context. The room is open to the public and everyone is very welcome.
How is it not
#matrix-admins-edu-deutsche:matrix.org!? This is a welcome public room for the growing number of Matrix Admins in Germany!
Dept of Interesting Projects 🛰️
I am very excited to launch Cactus Comments (https://cactus.chat) today together with @asbjorn:olli.ng!
Cactus Comments is a federated, web-embeddable comment system. And of course, we federate by building on Matrix!
On the frontend - your website - we embed a Matrix client written in Elm that renders Matrix rooms as comment sections. The client is designed to be especially easy to embed on static sites. Once you log in to the client, it will only communicate directly with your Matrix server of choice.
On the backend, an application service is used to create rooms on-demand and help with moderation. It is built with Python and is completely stateless. It does this by modelling all state in native Matrix objects without any custom events!
The entire thing is free and open source software and we would love it if you were to contribute. We really hope some of you will give it a try!
Join our matrix room: #cactus:cactus.chat
Read the introductory blog post: https://cactus.chat/blog/hello-cactus-comments/ Try the demo: https://cactus.chat/demo/
Source code: https://gitlab.com/cactus-comments
What a project! Let's see how we can integrate this with the Matrix.org blog!
Matrix Queue Processor
With things on the Internet vanishing, I've been wanting to start saving copies of interesting web pages and videos to my server-at-home.
This really doesn't involve much more than just running
archiveboxon the relevant URLs, but I needed a better way than having to e-mail myself reminders to download things…
I decided to make Matrix Queue Processor.
You can run it occasionally (or set it up to run in a cron job!) and it will then read all outstanding messages and feed the text to a given command, such as
You can choose for it to delete processed messages, or tick them off (✅). If the command wasn't successful, it will instead reply with the exit code.
It's not particularly sophisticated but it might at least be a small starting point for anyone who wanted to make something similar, and it is end-to-end encryption capable because it uses the Python
See this example of use with
youtube-dl; it fails on the second message because it's not a video page URL:
I like this a lot - there are so many uses for this project.
Supports nested spaces under user profiles.
Explore spaces modal.
Code cleanup, Bug fixes and UI tweaks.
Have you checkout out hummingbard yet? This is a very promising-looking project, I recommend reading this introduction to get started.
Dept of Ping 🏓
Join #ping: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!