Matrix Live 🎙
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://matrix.org/docs/spec/proposals.
MSCs with proposed Final Comment Period:
- No MSCs had FCP proposed this week.
MSCs in Final Comment Period:
- No MSCs entered FCP this week.
Keeping in step with our quarterly spec releases, the release of Matrix v1.3 is expected to land sometime early Q2 2022. This release will include Threads (as defined by MSC3440), as well as a number of other MSCs which land in the meantime.
Speaking of other MSCs, client developers should be aware of upcoming work to support live and static location sharing in the ecosystem. A notice on the subject has been posted today in the Matrix Client Developers room.
Random MSC of the Week
The random MSC of the week is... MSC2398: proposal to allow mxc:// in the "a" tag within messages!
This MSC makes the case for allowing linking to MXC content by using of an
<a>tag in the HTML-formatted
formatted_bodyfield of a
m.room.message. As MXC urls could contain HTML files, it could be rather useful to link directly to them, as you would any other webpage. Your client would then translate this to an http/s URL which can be used to view/navigate to the file.
Dept of Servers 🏢
Synapse is the reference homeserver for Matrix
Brendan Abolivier reports
We've released Synapse 1.54! It includes quite a lot of nice improvements, including around URL previewing, and new callbacks for third-party modules. Check out the release announcement for more info on all this goodness.
We've also landed more of the ground work to improve the time it takes for new servers to join big rooms, which Rich was talking about last week. Aside from this, we're continuing the effort towards switching Synapse to use Poetry, which will enable reproducible builds for Synapse. These are some very exciting projects which will be maturing in the coming weeks, so watch this space!
Homeserver Deployment 📥️
Helm Chart (website)
Matrix Kubernetes applications packaged into helm charts
Missed last weeks update, but my charts rolled along regardless. Currently serving; element-web 1.10.6 and matrix-synapse 1.54.0 (and matrix-media-repo 1.2.10)
Dept of Bridges 🌉
A Matrix-KakaoTalk puppeting bridge.
The basics of the bridge are now ready! Backfilling, message sending, and message receiving are now implemented...albeit quite buggy and untested.
For anyone curious to try it out, installation follows the same general steps as tulir's Python-based mautrix bridges, plus a backend Node module that must be launched before the Python component of the bridge. I'll write a README with proper setup instructions soon!
Just note that for the time being, updates to the bridge may invalidate its database!!. I won't guarantee stable DB upgrades until the bridge's early growing pains have settled down.
Reminder that my KakaoTalk ID is
fair-mwif anyone wants to help me test things out 🙂
Discussion: #matrix-appservice-kakaotalk:miscworks.net Issue page: https://src.miscworks.net/fair/matrix-appservice-kakaotalk/issues
Dept of Clients 📱
Minimal Android messenger powered by Matrix
👋 I'm happy to finally reveal the side project I've been working on - SmallTalk, a tiny native android matrix client focused on chatting with family and friends!
I've been wondering, how small can you make a functional native android matrix client? So far 1.7mb! (*when served from an app bundle)
- E2E encryption (including importing Element E2E keys)
- Merged room and DM list
- Message bubbles
- Push notifications
Currently in closed beta whilst ironing bugs, improving error handling and adding basic features like accepting invites, however apks are available on github for eager testers!
Desktop client for Matrix using Qt and C++17.
I am happy to present you a new release with the cute name 0.9.2!
Apart from losts of bugfixes, expect the following:
- Message bubbles (Malte E) 💬
- Give a colorful and space saving background to messages.
- Optionally shrink the usernames to save even more space.
- Your messages are on the opposite side of messages sent by other users.
- Basic widgets 🗔
- Widgets in a room are shown below the topic.
- Open them in your browser to view them.
- Autocompleter for custom emotes using
~. Note that this currently inserts raw html into the message input.
- Support running Nheko without a secrets service using a hidden setting.
- Add zooming and panning to the image overlay.
- Add a manpage. (tastytea)
- Offline indicator. (LorenDB)
- Proper previews for unjoined rooms in spaces (on supported servers).
/reset-state/command to reset the state of a single room.
- Allow hiding some events from the timeline. (tastytea)
- Hidden read receipts. (Symphorien)
- Open room members dialog when clicking the encryption indicator.
- Click to copy room id. (Malte E)
- Allow specifying a reason for message removal, bans and kicks. (tastytea)
- Speed up blurhash and jdenticon rendering.
- Use fewer threads for image decoding reducing memory use.
- Document secret service installation on Arch. (Marshall Lochbaum)
- Make edits replace previous notifications for the same message on Linux.
- Add alternatives for Alt-A as a shortcut on systems where that is already used.
- Apply clang-tidy suggestions. (MTRNord)
- Make custom emotes twice as high as the text to improve legibility. (tastytea)
- Ensure high quality scaling is used for custom emotes. (tastytea)
- Reduce allocations for the timeline by around a factor of 2.
- Render messages half as often, when displaying them for the first time.
- Increase maximum number of items in completers to 30.
- Run the gstreamer event loop also on macOS and Windows.
- Make presence update dynamically.
- Cleanup the raw message dialog.
- Make settings responsive.
- Improve Login and Registration pages.
- Add custom stickers & emotes to Q&A.
- Improve scrolling on touch screens. (Malte E)
- Reduce size of state events.
- Update OpenSUSE install instructions. (LorenDB)
- Use newer flatpak runtime.
- Fallback to using the shortcode in custom emotes, when there is no title set. (Ivan Pavluk)
- Improve a lot of hovering behaviours.
- Make spinboxes in scrollable pages unscrollable. (Malte E)
- Fix deprecation warnings in gstreamer code. (Scow)
- Make room directory fit mobile screens. (Malte E)
- Make room search accessible on mobile. (Malte E)
- Fix calls on mobile.
- Add arch binary repo. (digital-mystik)
- Improve long topics in the room settings. (Malte E)
- Fix typos. (ISSOtm)
- Improve the message input on mobile devices. (Malte E)
I hope this one works for you and we didn't break too much stuff and thanks a lot to everyone who contributed!
Everything related to Element but not strictly bound to a client
Welcome back to another week at Element!
- Our MSC 3440 completed its final comment period this week which is a super exciting move forwards for our team! We are now using a stable prefix and server-side support for Threads so the whole experience should be much better.
- The team is hard at work fixing bugs so that we can launch with as much confidence in our solution as possible.
- If you’ve been using Threads whilst in Labs, please keep giving feedback and raising any issues you may find.
- Join #element-community-testing:matrix.org to help out with the testing
- Coming up this week:
- Spaces on iOS: Tuesday, 15th Mar at 16:00 UTC / 17:00 CET
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- On Web we’re focussed on improving the app and fighting bugs;
- This week we are seeing fewer reports of decryption errors!
- On Develop, you should no longer find that editing messages messes with their formatting.
In labs (you can enable labs in settings on develop.element.io or on Nightly)
- Pinned messages are getting some attention in Labs. Keep providing feedback for us!
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- The next app store release is delayed due to some flows that do not match Apple guidelines - we’ll be updating the Apple SSO default values and introducing “Decline & Block” to invitations.
- This week we checked-in on our language status and updated some things; We now support Ukrainian.
- We’re working hard at updating the activity indicators in the app. While we work on the performance and load times in general we want to enable users to go about their tasks without being blocked by the activity indicator. The new indicator sits towards the top of the screen and should be out of the way for most tasks, whilst still informative. Let us know what you think!
- The iOS team are also improving the onboarding experience for new users; aiming to make Matrix account creation as simple as possible.
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- We’re continuing on our path to increase the quality and usability of the app; the next release is v1.4.4 (already available for beta testers!) includes things like moving the typing indicator from the top bar to the bottom of the timeline.
- We are also improving our PR process. In particular we want to reduce the time the submitters have to wait to get a review.
- Our onboarding flow is being updated. We want new users to have a simple and straight-forward experience when they’re creating an account.
Cinny is a Matrix client focused on simplicity, elegance and security
We are happy to announce that Cinny now support all the features of Spaces — a way to group rooms in Matrix. This means that you can now create new spaces from client, add rooms or subspaces inside them or manage the added rooms. We have also made our unique feature of Pinning spaces to sidebar more easy and organized. With this option all the spaces and subspaces will be visible at one place and you can select the one you want to pin or remove. One more unique feature we added with update is the Categorized subspaces, what this do is make all the subspaces inside a space appear as categories. This is helpful when there are deep nested spaces inside a space and breadcrumb is pain to navigate back and fourth. Keep in mind that this ignore the nesting of subspaces and all of them will appear under mainspace, but nice thing is that you can select which subspace you want to categorized and which not. Another exciting update related to spaces is the Drag-and-Drop. Earlier there was no option to reorder pinned spaces but now with DnD you can reorder them as you like.
Apart from spaces this update also include option to drag and drop files, ||sending spoiler||, desktop notification and viewing event source. (Thanks to @ginnyTheCat for these amazing additions.)
Full changelog is available at: https://github.com/ajbura/cinny/releases/tag/v1.8.0
Find more about Cinny at https://cinny.in Join our channel at: https://matrix.to/#/#cinny:matrix.org Github: https://github.com/ajbura/cinny Twitter: https://twitter.com/@cinnyapp
Dept of Non Chat Clients 🎛️
Populus Viewer (website)
A Social Annotation Tool Powered by Matrix
In the last two weeks we've made some UX improvements:
- The PDF viewer now has nicer tooltips
- The width of sidepanels is now adjustable
- Searchbars now have hints to help find the keyboard shortcut
- Error messages are now displayed more uniformly
- Populus-viewer now has an icon
- Failed messages are now indicated, with the option to resend
Fixed some bugs:
- room avatars should now update more quickly
- highlights should always display immediately after joining a new discussion
And added a service worker, for a better offline experience.
Finally, we've opened a new draft MSC (just a stub at the moment) to create a format for annotations on text documents. So... matrix annotations as a vim plugin? The future is bright 😎
As always, if you're interested in this work, or in the future of annotation and scholarship on matrix, come join us at #opentower:matrix.org.
Matrix powered stream overlay for OBS, to integrate live chat in your favorite (selfhosted) streaming setups.
Matrix Streamchat got it's first alpha release, and was successfully set up + used by someone else this week Recorded a little demo video on the setup with OBS: https://youtu.be/HmJ3XwJXB7I, and implemented the GUI for configuring the chat's settings and looks, to then copy the link into an iframe (embedded chat) or OBS (overlay).
Invite friends to your event with a one-click RSVP link - no matter which chat/social app they use!
Jake C reports
Gatho.party is a replacement for Facebook Events for small social gatherings. I've used it for a number of parties and received great feedback, and I'm seeing others are starting to use it too 🎉
To receive confirmations of attendance you can either:
- Use the included Matrix bot to automatically sync RSVP emoji reactions in a linked Matrix room (great for your friends on Matrix or in a bridged Signal chat)
- Send a unique one-click RSVP links to you friends without Matrix (eg. Instagram DMs, SMS)
- And as of this week, guests can "self serve" and add their own RSVP via the unique event link, so you can just drop the event link in a Facebook Messenger chat or iMessage group (without email or phone verification at the moment, so hosts will need to moderate if their guests go rogue and add multiple fake names!)
Other recent improvements are:
- Ability to delete guests
- Improved call to action and copy text for when a guest with a "magic" link is prompted to RSVP
- Confetti animations when your guests RSVP via the Gatho website as "Going"
I'm currently testing an experimental chat embed using Matrix Live so your guests not on Matrix can optionally see your linked Matrix room - I've found some of my friends join Matrix after seeing this so they can join the action!
I'm keen to eventually use Cactus Comments once I figure out a bit of Elm and have more spare time so that non-Matrix guests can post too.
The Gatho website and bot is open source (AGPL-3.0) on Github, PRs and Github issues are very welcome! It's built using Next.js in Typescript.
I'd love to hear your feedback! Join the Matrix room at https://matrix.to/#/#gatho-events:matrix.gatho.party
Dept of SDKs and Frameworks 🧰
Elixir libraries related to the Matrix communications protocol.
Polyjuice Client Test is a tool for testing Matrix clients by creating a predefined environment for each test. Since the last time it was mentioned in TWIM,
- more tests have been added: a test for basic end-to-end encryption message sending and receiving, symmetric key backup (MSC3270), and key withheld codes (MSC2399). More tests (and improvements to existing tests) to come.
- the UI has improved a bit. Sorry, it's still ugly, but slightly less so. Also, now you can search through the tests.
- I am now running a publicly-accessible instance of it at https://test.uhoreg.ca/ so you can test your clients without having to set it up yourself. This instance is stable-ish, in that it should always be available, but may be restarted randomly, in which case you may need to re-start your tests.
Dept of Ops 🛠
Synapse Maintenance Container – Docker container with tools for synapse & postgres database maintenance
Synapse Maintenance Container – Docker container with tools for synapse & postgres database maintenance
New since v0.1.0:
- added arm64 support
- improved output of purge_history.sh
Start it without command and let it do its magic :)
What it does by default:
- purge all rooms without local members
- run the state autocompressor (small setting 500/100)
- delete old remote media (>90 days)
- delete old message history from public joinable rooms (>180 days)
- run the state autocompressor (big setting 1500/300)
- vacuum the database
Compose example: https://gitlab.com/mb-saces/synatainer/-/snippets/2264828
If you are looking for a docker container with just the auto compressor for linux amd64/arm64 in it, her you go: https://gitlab.com/mb-saces/rust-synapse-compress-state
Dept of Interesting Projects 🛰️
hello! wanted to show a small matrix web client made with unminified js/html/css & web components (wip++) https://libli.org/ https://gitlab.com/sctlib/libli + https://gitlab.com/sctlib/matrix-room-element looking forward feedback comments or anything, cheers & viva la matrix!
for now it only uses default matrix messages, and it is read only, so users have to login/register/CRUD through element (or any other client) the idea would be to give back users control on their data, allow them to "collect" (individually or as group), any type of content, gathered into matrix room
For now, the client is making HTTP requests to matrix API, to fetch the data of a (public) room, all message & state events. it also give a "clean URL"
libli.org/room:server.tldso users can access their "profile" (chat room) easily (just like a twitter, instagram, medium) page
Dept of Guides 🧭
Self-Host a Matrix Map Server
Following Element's recent announcement of location sharing with support for self-hosted map tile server, I went ahead and set up one, and have written a blog post about it, explaining how to go a little further than the currently published guide, and with Ansible scripts included. *> https://wrily.foad.me.uk/self-host-a-matrix-map-server
Andy Balaam wrote a blog post explaining extensible events - it shows simple examples of what message events look like now, and how they change with extensible events. It also covers the abbreviated forms of
m.html, which can make it somewhat more confusing to understand.
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!