ā¦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.
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 and banlist:auto. The banlist:auth mode automatically bans users for attempting to authenticate into Postmoogle over SMTP with invalid credentials, while banlist: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.
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!
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.
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.
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 to true and provide the element call instance in bridge.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ā >}}
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 callign CreateRoom
This field was also made nullable
Renamed canonicalHomeServerDomain to baseUrl in the constructors for homeservers
FullHomeServerDomain and HomeServerDomain 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 always m.room.message afaik)
Moved namespace LibMatrix.StateEventTypes.Spec to LibMatrix.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
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.
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 use matrix-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!
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).
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.
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.
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!
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 an mxc-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 a m.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.
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 #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!
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.