29 KiB
+++ date = "2023-09-29" title = "This Week in Matrix 2023-09-29" path = "/blog/2023/09/29/this-week-in-matrix-2023-09-29"
[taxonomies] author = ["Thib"] category = ["This Week in Matrix"]
[extra] image = "https://matrix.org/blog/img/12516a5a22a84c23ef36b66ae9f86a2182985f28.png" +++
Matrix Live
{{ youtube_player(video_id="dywrUiZP_m0") }}
Dept of Servers 🏢
Dendrite (website)
Second generation Matrix homeserver
Devon Dmytro reports
This week we released v0.13.3. Here are a few of the highlights:
- Room version 11 is now supported
- Sliding Sync proxy can be configured in the /.well-known/matrix/client response
- Invitations are now correctly pushed to devices
- A bug which could result in the corruption of m.direct account data has been fixed
- Clients can request the federation event_format when creating filters
- Many under the hood improvements for MSC4014: Pseudonymous Identities
...and a whole lot more. Check out the release notes for the full set of changes! As always, feel free to stop by #dendrite:matrix.org to join in on the discussion and if you encounter a bug make sure to report it here.
Dept of Bridges 🌉
Postmoogle (website)
An Email to Matrix bridge. 1 room = 1 mailbox.
Aine says
Introducing Postmoogle v0.9.16: Bridging Email and Matrix Like Never Before!
We at etke.cc are delighted to announce the release of Postmoogle v0.9.16, your trusted bridge for seamlessly connecting the worlds of email and Matrix. In this update, we've introduced a host of new features and enhancements to elevate your Matrix email experience.
Here's what's new in this release:
- Emoji Support: Express yourself with emojis! You can now react to emails with the ⛔️,🛑, or 🚫 emojis to add the sender to your spam list. Embrace a better quality of life change within your Matrix rooms.
- Subaddressing Support: Postmoogle now offers support for subaddressing. Receive emails sent to addresses like
mailbox+anything@example.com
, giving you more control over your email routing.- Enhanced Banlist Modes: We've added two new server ban modes:
banlist:auth
andbanlist:auto
. Thebanlist:auth
mode automatically bans users for attempting to authenticate into Postmoogle over SMTP with invalid credentials, whilebanlist:auto
automatically bans for invalid emails, such as those failing MX, SPF, or DKIM checks. You can configure each mode separately, enhancing the security of your Matrix environment.- Improved Banlist Output: The
!pm banlist
command output has been improved to display bans per day in weekly chunks. This streamlined presentation makes it easier for you to monitor and manage banned IPs effectively.- Enhanced Reply Handling: Postmoogle now ensures that it always replies to your messages, either within the threads or using the reply-tos, depending on your mailbox configuration. This guarantees a more organized and threaded conversation experience within your Matrix rooms.
- Custom Mailbox Signatures: The new
!pm signature
command enables you to set a personalized signature for your mailbox, adding a unique touch to your email messages.- Automatic Replies: With the introduction of the
!pm autoreply
command, you can configure automatic responses for all incoming emails without existing threads. This feature simplifies communication when receiving new email threads.Postmoogle v0.9.16 brings you an enhanced email-to-Matrix bridge, bolstered security measures, and an improved quality of life. Whether you're managing email discussions within your Matrix rooms or responding to emails from your Matrix client, Postmoogle ensures a seamless integration.
Upgrade to Postmoogle v0.9.16 today and discover the future of email communication within the Matrix ecosystem. To get started, visit our GitLab repository or explore the #postmoogle:etke.cc room.
Dept of Clients 📱
Commet
A client packed with fun and convenient features.
airyz announces
Hello, world!
I'm excited to finally announce Commet! a new client for matrix! We are aiming to create a client that is packed with fun and convenient features, to help you connect with your friends.
We’ve been quietly in development over the past seven months and while we aren’t ready to call Commet stable, it is ‘stable enough’ to reveal it to the community
Despite being early in development, we have a few exciting features that help us stand out:
Built for multiple accounts
Commet was built from the ground up to have great support for running multiple accounts at once.
GIF Search
A Gif searcher in a matrix client?! We are running a proxy service for tenor, so you can easily send sarcastic gifs on matrix!
Custom Emotes / Stickers
We support the same custom emotes implementation that you might be familiar with from other clients!
Thats all for now! Check us out on github or stop by our room and say hi!
Neochat (website)
A client for matrix, the decentralized communication protocol
Tobias Fella says
We've landed a major feature in NeoChat this week: There's a now a page showing the subspaces and rooms in a space. This also allows for basic space administration tasks, like adding new rooms to the space. Internally, our Qt6 port is progressing, with all major changes being done now.
Element X iOS (website)
A total rewrite of Element-iOS using the Matrix Rust SDK underneath and targeting devices running iOS 16+.
Ștefan says
Busy week in Element X land:
- Following small tweaks here and there Polls are now officially finished! 🥳
- Work has started on support for voice messages
- And also on user mention pills
- We can now reply to more types of room messages
- Our unit tests are more stable and ever and our coverage is at all time high at 71.4%
- And we fixed bugs around UI and Integration tests, the Element Call integration, iOS 17 and more
Element X Android (website)
Android Matrix messenger application using the Matrix Rust Sdk and Jetpack Compose
benoit announces
- Element X Android will be released on the PlayStore - once Google approves it - with a fix for the crash about the Camera permission.
- Polls are getting the latest design tweak, notification with the poll question is coming.
- Open a room is smoother than before, some stuff have been move to worker thread.
- The bloom effect will also be rendered faster.
- We are adding test to reach the target of 60% of code coverage. We are not far!
- The Rich Text Editor can now be displayed in full screen mode.
- Next week we will start October features: Key backup management; pin and biometric unlock; voice message; and rendering pills in the timeline.
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
Johannes Marbach announces
- We’re wrapping up some test stabilisation work on our notification test suite and will transition into fixing the failures next.
- Visual regressions from the Compound adoption have mostly been fixed. We started applying a UI refresh to the right panel and are planning to unlabs it together with the room header once complete.
- About 80% of our strings have been migrated over to Localazy. We’re getting close to finishing this off and reopening translations to contributors.
- People living on the edge might have noticed that the Safari 17 update has broken our emoji fonts. We’re planning to put a hotfix together for this today. On the back of this we’re also considering doing away with bundled emoji fonts entirely and falling back to what the OS provides. The situation on this is looking much different these days compared to a few years ago.
Dept of VoIP 🤙
Calling for bridges
Malte E reports
During the Matrix community summit, Timo K.and I discussed reducing friction for video calls with bridged users. Instead of true call bridging, which would likely be months of work, we implemented a workaround within less than a day. Starting an MSC3401 call from Matrix will send an element call link to the remote platform user, which will skip login and room selection, taking them straight to the call in two clicks (one for the link and one to confirm). On the Matrix side, the experience is seamless, once a few prerequisites have been met: the matrix client must use MSC3401 and because element web currently defaults to legacy calling in DMs, a third user, such as the bridge bot, must be present in the room. Furthermore, a modified element call instance is needed. We have so far implemented calls via Element Call for matrix -> Telegram in DMs. We will be working on solutions for incoming calls and group calls as well as support for other platforms. There is currently still a major security concern: To skip the login process, the link comes with a token for the ghost account. Anyone with access to the token - that includes the matrix user who started the call - will be able to log in with that ghost account. We invalidate the token once the call has ended, but that is obviously nowhere near sufficient. Scoped access tokens with permissions for sending and receiving call events in a single room for a limited time would be required. On platforms using Double Ratchet E2E, it should also be possible to use different plaintext for different recipients in the same message, thereby only exposing the token to those who already implicitly have authority over the ghost account through their account on the remote platform.
For those brave enough to try, you will need this fork of mautrix-python, this fork of mautrix-telegram as well as this fork of element call or just use the instance hosted here. In the bridge config.yaml, set
bridge.calls.enabled
totrue
and provide the element call instance inbridge.calls.ec_url
. Be sure that you trust everyone with access your bridge before deploying, until we have figured out how to make it safer.We apologize for the subpar audio and glitches. We had limited time and equipment to record the demo and will try to do better next time {{< video src="vrcDiEGzmollhUGuTEONHVCE.m4v" >}}
Dept of SDKs and Frameworks 🧰
Rory&::LibMatrix
Emma [it/its] says
Not much changed this week:
- Some refactors to how user identities are handled
- Correction in function names to correctly display async vs non-async functions
AuthenticatedHomeserverGeneric.GetRoom(string id)
is no longer async, since that is only a constructor call.- Sync code has gotten a slight cleanup
AuthenticatedHomeserverGeneric.WhoAmI
was turned into a property that only gets fetched when attempting to get the info for the first time, rather than fetching it when constructing the homeserver object.- Added a null check for
creationEvent.Invite
when callignCreateRoom
- This field was also made nullable
- Renamed
canonicalHomeServerDomain
tobaseUrl
in the constructors for homeserversFullHomeServerDomain
andHomeServerDomain
were removed from homeserver objects- Authentication was moved to a functions inside
RemoteHomeserver
rather than being service-only. This allows for usecases outside of Dependency Injection based applications- LoginResponse now tries to get homeserver canonical domain from mxid if not provided by the server (since this field is deprecated)
- Removed an obsolete way to get room state without providing a type (can still pass
JsonElement
if required)- Fixed sending files in a room via
room.SendFileAsync
, this now does what you would expect instead of throwing an exception (because I'd written the wrong code)- Added
room.DisbandRoomAsync()
in the case you ever want to completely get rid of a room, ban everyone and make the room private- Added
AddChildAsync
to SpaceRoom, in order to allow adding space children- Removed TieredStorage arguments from homeserver constructor
- Removed explicit http client creation for authenticated homeservers, in favor of re-using the one created in RemoteHomeserver
- Fixed
room.SendMessageEventAsync
requiring an event type (this is alwaysm.room.message
afaik)- Moved namespace
LibMatrix.StateEventTypes.Spec
toLibMatrix.EventTypes.Spec.State
in order to better represent what's in that folder- Increased coverage of MatrixHttpClient to include PUT requests
- Removed TieredStorageService argument from SyncHelper (I might make SyncHelper not part of homeserver in the future so you can have separate sync loops with different filters)
- GetRoom(string id) now has a check that the id needs to start with a
!
- Added a Logout function to AuthenticatedHomeserverGeneric so you can properly dispose a session
- Added the ability to resolve room aliases
- Last, but definitely not least, some unit tests have been added!
Non-code updates:
- Unit tests are powered by an unfederated homeserver at matrixunittests.rory.gay - there is no data persistence
As always:
- The code is available at my git domain
- If anyone wants to contribute a page to put there instead of a plain dumb git directory, please feel free to!
- All other contributions are more than welcome, be it documentation, code, anything!
- Discussion is welcome in #libmatrix:rory.gay
Trixnity (website)
Multiplatform Kotlin SDK for Matrix
Michael announces
We are happy to announce that Trixnity Messenger is open source now. It is a Kotlin multiplatform Matrix messenger SDK built on top of Trixnity. It defines a messenger client without specifying a UI layer (think of it as a headless messenger). All it provides is a series of view models that define the structure and logic of a messenger. It has never been easier to implement a Matrix messenger targeting multiple platforms such as Android, iOS, Desktop or the web. Just define how it should look - all the logic and nitty-gritty details are already accounted for. And if you do not like the behavior of the messenger in some parts, just extend or override the existing logic with your own. There is no need to fork the project. So join us at https://gitlab.com/connect2x/trixnity-messenger and in #trixnity-messenger:imbitbu.de.
matrix-rust-sdk (website)
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
Jonas Platte reports
- [Timeline] Add highlevel API for replying
- Progress on the
WidgetDriver
API- and lots of bug fixes and refactorings
Dept of Internet of Things 💡
Home Assistant - Matrix Integration
Paarth Shah announces
I'm happy to announce that Home Assistant 2023.10 release (in beta at the time of writing) includes my PR to refactor the included
matrix
integration to usematrix-nio
! You can see the full changelog here. As part of the merge, I've also become the code owner for the integration.In the 2023-06-09 TWIM I announced that I'd created matrix-nio-hacs as a stand-in while this had still been pending merge. As it will no longer be necessary, for those of you who have been using it, I'll eventually be archiving the repository since I now will be able to continue development directly on home assistant core. Any and all bug reports and/or PRs will be greatly appreciated!
Dept of Events and Talks 🗣️
Matrix User Meetup Berlin
saces reports
Long time no matrix meetup? We can help!
Next Matrix user meetup 4.10.2023, 8 pm @ c-base
Meet other matrix users, chat about Matrix, the rest, and everything else, discuss your Matrix ideas, sign each other in persona, and maybe spice the evening with a good mate or beer.
Every first Wednesday of the month in the c-base at 8pm ('til the next pandemic).
Matrix room: #mumb:c-base.org
Matrix Salon Podcast (German episode)
Christian Paul (jaller94) says
Meet Nadine, a designer and UX enthusiast who builds Polychat. Polychat is a bridging service for people from different messenger silos. This way, people won't need to leave their familiar messenger silo to talk to group on other platforms.
Episode url: https://podcasters.spotify.com/pod/show/matrix-podcast0/episodes/Nadine---Polychat--Matrix-Community-Summit-2023-e29urs9 RSS feed: https://anchor.fm/s/cdb34188/podcast/rss Mastodon post: https://mastodontech.de/@jaller94/111149212044231025
For English interviews of Matrix community members, check out some of our previous episodes! Also, in the upcoming weeks, we'll release two more English episodes.
Dept of Interesting Projects 🛰️
Mappo
Janet Blackquill reports
Hi, I present to y'all a little bot called Mappo. He's technically been around for a while, but I polished him up with some new Matrix features as of late to bring him closer to his presence on Discord, and I haven't really promoted it before.
He's a lil noodly jellyfish fella that lets you play the eponymous social deduction game of Mappo where some people are villagers and some people are creatures. The village is trying to figure out who the creatures are to exile them, but at the same time, the creatures are slowly picking them off, one-by-one until they outnumber them! Who wins is determined by who's the best at deducing the truth (or obfuscating it if you're one of the creatures!) The roles range from the conventional like the Seer and Werewolf to the wild and wacky like Cookie Person and Goose.
His source is located on GitHub at https://github.com/pontaoski/mappo. Mappo is unique for a bot due to being multi-protocol with a core logic speaking to an abstraction layer implemented for both Discord and Matrix.
If you wanna check out Mappo in action, come stop by #mappo:toki.club and give the game a try with other people!
matrix-static
HarHarLinks reports
Hi from the Matrix Community Summit Sunday Hackathon!
That's right, a couple people were still alive on Sunday after one awesome Thursday of
BarCampBarCamping and two more excellent days full of Matrix programme and programming across two stages and got together for some creative Matrix hacking!We had a bunch of interesting projects, see the announcement about VoIP bridging from Malte E. and Timo K. Personally, I was involved in the
event T-Shirt creationrevised MSC2997 implementation with the wonderful @c_atc:c-base.org. If you look at that more closely, you'll find there is anmxc
-URL in the event body. matrixmeetup.de is hosted using GitLab pages, so you can't just do anything you want, however challenge_accepted.jpg. Of course, entering it into your browser works (how?), try it out!The obvious idea was to also make it all work through matrix so that in the future, once other client's implement the event scheme, the event will properly work? But how would we set up a media on a defined media ID and ...could we circumvent having to set up it's own homeserver just for this gimmick, or even any additional infrastructure at all?
Luckily I was sitting next to the excellent Nico from Nheko and we started hacking! After stumbling over the need to still offer working legacy
r0
endpoints, we quickly got it working. Try am.room.message
with:"content": { "body": "Summit Logo.png", "info": { "h": 1578, "mimetype": "image/png", "size": 386815, "w": 2022 }, "msgtype": "m.image", "url": "mxc://matrixmeetup.de/summit2023" }
We learned during the event that we would have liked its Matrix rooms and space(s) to be more discoverable, so we continued prototyping with the room directory for next year. The
/_matrix/federation/v1/publicRooms
is not too complicated, it's basically a list of room IDs with a couple attributes we had to hardcode...:{ "avatar_url": "mxc://matrixmeetup.de/summit2023", "guest_can_join": false, "join_rule": "public", "name": "Matrix Community Summit Berlin 2023", "num_joined_members": 1000000, "room_id": "!rrRxqrMIOzXJggCSEm:matrix.org", "room_type": "m.space", "topic": "Summit on 21-23 September 2023.\n @c-base in Berlin\n \n a barcamp - 21th\n a conference - 22/23th\n open door day - 24th (to be confirmed)", "world_readable": true }
However it was not quite so easy. As you can see above, the endpoint - like most of Matrix - doesn't use a file type extension. It turns out that Synapse really wants that piece of JSON to served with the JSON mime type, but GitLab pages' does not support setting the mime type manually and can only derive it automatically using some heuristic. Thanks to the manical investigation into that heuristic, Nico came up with the idea to use GitLab's _redirects or more precisely rewrite function to forward from the Matrix endpoint to the actual file served with the .json extension and what can I say - it works as proven by this screenshot from Nheko (it's Other Clients October soon, so try using Nheko)!
What if I told you there were even more hackers there? urp picked up where we achieved our goals and continued testing. You can follow the experiments being done and the documented findings on GitLab/matrix-static and join the effort or give feedback in the matrix room matrix-static-server..
Overall we can absolutely recommend you try hacking with some static Matrix for your project, I can see lots of applications for hosting media alone. Until next time! 👋
Department of Community Initiatives 👪️
For everything impulsed by the community that is not an Foundation initiative.
Matrix Community Forum
MTRNord announces
Changes and new features
- Email registration should be fixed. If you tried to register and didn't get the activation email, check your spam folder please
- There now is a way to announce events and get them into a calendar at https://forum.miki.community/t/matrix-events/52
- For example, TWIM is in the calendar (also contains some Tips and Tricks for your next post :) feel free to add more of these if you have them!) https://forum.miki.community/t/this-week-in-matrix/100/2
- Categories have been reorganized to be more useful
- Login via GitHub is possible - Login via matrix will only be possible after OIDC lands in Matrix spec and is adapted by users
- Small nice to have features have been added
Support for setting a birthdatethis seems to break the forum- Support for Footnotes
- Support for templates
- A dark/light mode toggle
- User Fields for mxid, git(hub) (and friends) ID, pronouns have been added to be optionally set on the profile.
- Added the gamification plugin which gives a Forum Leaderboard which may help to motivate some people that are not coders and gives those people rewards too. Additionally, there could be also further integration, for example using https://meta.discourse.org/t/how-to-integrate-discourse-gamification-with-an-external-system-redeem-and-award-points/262968
Planned things
- Support for integration into existing Matrix based communication using https://meta.discourse.org/t/discourse-chat-integration/66522
- Possibly finding a way to get events announced in twim also into the forum automatically
Discussion Area
Anything more permanent like wishes or request should be in the forum itself at https://forum.miki.community/c/site-feedback/2
However for quick discussions or questions there is #matrix-community-forum:midnightthoughts.space available too.
Asbjørn announces
Other Clients October
We're doing it again!
Other Clients October is a month-long challenge, where we switch away from our daily-driver Matrix clients completely for a the entire month if October.
It's a nice way to explore the rich space of Matrix clients.
Only use Element? Maybe check out Cinny. Only use Fluffychat? Try kicking the tires on ElementX. Only use Nheko? Why not try out Gomuks? Working on a client? Give dogfooding it a shot this month!
Join the Matrix room: #other-clients-october:olli.ng
Say hi, and tell us what clients you'll be trying!
Dept of Ping
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.
#ping:maunium.net
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank | Hostname | Median MS |
---|---|---|
1 | maescool.be | 470 |
2 | plocki.org | 509 |
3 | envs.net | 526 |
4 | tcpip.uk | 567.5 |
5 | forgedtheir.phd | 607.5 |
6 | shortestpath.dev | 639 |
7 | chat.gokhanc.net | 740 |
8 | herkinf.de | 870.5 |
9 | utzutzutz.net | 918 |
10 | wcore.org | 945 |
#ping-no-synapse:maunium.net
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 | frai.se | 163.5 |
2 | hacklab.fi | 172 |
3 | kanp.ai | 193.5 |
4 | inu.is | 260 |
5 | chat.gaskins.family | 328 |
6 | littlevortex.net | 338 |
7 | skladka.net | 405 |
8 | matrix.org | 442 |
9 | matrix.its-tps.fr | 464 |
10 | noisytoot.org | 543 |
That's all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!