πŸ”—Matrix Live

πŸ”—Dept of Status of Matrix 🌑️

Robin Riley announces

Please join me in welcoming the newest members of the Foundation! FlatTurtle has joined as a Silver Member, and c-base has joined as an Associate Member. We're grateful for their support!

Does your community or organisation use Matrix? Do you maintain an open source project that builds on Matrix? Join these organisations in demonstrating their support and apply to become a member today.

πŸ”—Dept of Spec πŸ“œ

Andrew Morgan (anoa) {he/him} says

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://spec.matrix.org/proposals.

πŸ”—MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

πŸ”—Spec Updates

This week we've had follow-on work from the room v12/hydra MSC that were in-flight a couple weeks ago. A prime example is MSC4311: Ensuring the create event is available on invites and knocks, which makes the create event available to users when they are invited to a room. Among supporting feature work, this primarily allows trust & safety tooling to analyse the room's creator (taken from the sender field of the create event) and use that as part of determining whether the invite is likely to be spam or not.

The MSC is in Final Comment Period, but recently had a concern added. Hopefully we'll see it become unblocked land soon.

Otherwise the next release of the Matrix spec is now slated to come early September. Especially as MSC4311 is considered a release blocker. Keep your eyes peeled for an announcement about it soon!

πŸ”—Dept of Clients πŸ“±

πŸ”—Fractal (website)

Matrix messaging app for GNOME written in Rust.

KΓ©vin Commaille reports

Our latest stable release had a regression where sending media with the unauthenticated endpoints was failing. Fractal 12.1 fixes it, and provides a couple other papercut fixes.

This version is available right now on Flathub.

If you want to help us avoid regressions like that in the future, you could use Fractal Nightly. You could even get rid of our remaining bugs yourself!

πŸ”—Dept of Widgets 🧩

πŸ”—NeoDateFix (website)

Organize meetings in Matrix chat rooms and video conferences - straight from your Matrix client.

Mikhail Aheichyk says

We have released the NeoDateFix widget v1.7.2 with an update to the latest Matrix Widget Toolkit to support room version 12.

In case you need to upgrade your NeoDateFix rooms, you can now find all relevant information in the room upgrades section of our README.

The NeoDateFix bot release v2.8.5 was also updated to match:

It can now determine the Matrix homeserver's default room version automatically and set up power levels correctly depending on the room version when creating rooms. Specifically, this includes support for when the homeserver is using room version 12 as default. The bot can work with rooms using different Matrix room versions at the same time without any special configuration, so migrating to version 12 will be seamless.

πŸ”—NeoChoice (website)

Conduct advanced polls in your Matrix room.

Mikhail Aheichyk announces

The new NeoChoice release v1.6.0 is finally available using our new toolchain:

We have updated the widget’s tech stack to use React 18, Vite and Vitest. On top, we have of course also updated it to the latest Matrix Widget Toolkit with support for room version 12.

If you need to upgrade your NeoChoice rooms, you can now find all relevant information in the room upgrades section of our README.

πŸ”—NeoBoard (website)

Private and secure whiteboard for everyone.

Mikhail Aheichyk announces

The new NeoBoard release v2.3.1 is ready for action!

We have improved support of our WIP infinite canvas feature with the ability to pan the canvas using the right or middle button when the mouse is over the element. We have also improved our experimental Matrix RTC support to use delayed events to terminate Matrix RTC sessions. We have updated the widget to use the latest Matrix Widget Toolkit to support room 12 version. Finally, we have improved performance, which now provides smother moving and resizing of many multiple elements.

In case you need to upgrade your NeoBoard rooms, you can now find all relevant information in the room upgrades section of our README.

πŸ”—Matrix Widget Toolkit (website)

Reusable framework for creating Matrix widgets.

Mikhail Aheichyk announces

We have updated Matrix Widget Toolkit to work with room version 12!

We have taken the occasion of the room version 12 release to rework power level calculations to comply with the Matrix specification in all room versions. The calculateUserPowerLevel exposed function implementation and API have been changed to address different Matrix room versions, including 12.

We have also updated other power levels related functions so that they can be used in room version 12. Functions like hasRoomEventPower, hasStateEventPower, hasActionPower and calculateUserPowerLevel have been updated to include the m.room.create event when calculating any user's power level. This is important for room version 12, as the room's creator basically has infinite power.

Consequently, calculateUserPowerLevel now returns either a normal power level number or the string ROOM_VERSION_12_CREATOR if the user is the room's creator. Additionally, we added new exported function, compareUserPowerLevelToNormalPowerLevel, to compare this new user power level to a normal Matrix power level number. This new function may also be used in widgets.

The validation strictness regarding the room ID's domain has been removed because the format for version 12 room IDs has changed.

This results in a new major @matrix-widget-toolkit/api release, with few patch releases, v5.0.2 being the latest. A new major @matrix-widget-toolkit/testing v4.0.0 release with few changes to API default parameters. These changes were made due to a rework of power level calculations. And minor @matrix-widget-toolkit/react v2.1.0 and @matrix-widget-toolkit/mui v2.2.0 releases, reducing strictness on room IDs to comply with changes in room version 12.

πŸ”—Dept of VoIP πŸ€™

πŸ”—Element Call (website)

Native Decentralised End-to-end Encrypted Group Calls in Matrix.

Timo K. says

The Element VoIP team released Element Call version 0.15.0

This release introduces a key part of the MatrixRTC spec that was previously missing from Element Call. The state key of call member events is now distinct per MatrixRTC session type (application), allowing an Element Call m.call session to run alongside other session types.

Element Call now also supports MatrixRTC Authorization Service v0.3.0, which adds a key infrastructure control by restricting automatic LiveKit SFU room creation to users on selected (trusted) homeservers, helping ensure that SFU resources are used efficiently and remain available for their intended communities. Note this does NOT break calls across federation.

Calls also now have a dedicated "Reconnecting" state. This enhances both stability and security: Element Call stops publishing and subscribing media when you are disconnected from the room state. This prevents downloading media you cannot decrypt and uploading media unnecessarily when others are not aware you are in the call.

πŸ”—MatrixRTC Authorization Service

The authorization service is the gateway between your SFU and the matrix network. It decides who can access your SFU resources. Version v0.3.0 allows to restrict SFU room creation to selected homeservers. Note: still allows calls over federation.

πŸ”—Dept of SDKs and Frameworks 🧰

πŸ”—Halcyon (website)

Halcyon is an easy to use Matrix library inspired by discord.py.

gen3 reports

Hey all! Long time no see! This week marked the first two releases of Halcyon in ages!Β  These bumps should be minor and non breaking, generally just some housekeeping work before the more interesting stuff.in 1.2.0 I’ve replaced the old message and room parsing code with well defined pydantic schemas, added some configurability to how strict we verify those schemas, and added a boat load of test cases. In version 1.3.0 I migrated to aiohttp to improve performance around message handling. This includes solving the long standing issue of having to wait for the longpoll to exit to quit the bot. We also added client.get_bot_info, another quality of life improvement that allows you to get info on the currently running bot.

With these changes we've fully caught up with the latest message and room part of the Matrix spec πŸŽ‰πŸŽ‰πŸŽ‰ Rebuild your docker containers and let me know how things work!

You should totally come say hi in the room over at https://matrix.to/#/#halcyon:blackline.xyz

πŸ”—Dept of Bots πŸ€–

πŸ”—matrix-jukebox

bgt lover reports

Matrix-jukebox is an attempt at a bot which follows the matrix rtc, also known as MSC4143, specification to interoperate with clients supporting the M.Call application type, only element-call for now. After a lot of deliberation, I thought it's time to show off what I've been doing so far, because the journey has been quite long, and quite a long way away the road stretches still.

πŸ”—what works so far?

Not a lot actually, currently the bot detects when a call is started and joins it. Afterwards, it waits for about ten seconds before leaving the call. However, there are tools to allow other functions, they just weren't fully wired because there are other components which haven't been developed. Among those tools and functions, the following are noteworthy:

  • following room tombstones. Not a very important addition, but it's there, in case of future room upgrades
  • parsing .well-known for livekit information and querying for a livekit token from the jwt service
  • receiving the to-device events for livekit key exchange
  • answering with a proper list of foci to someone starting an m.call matrix rtc session

πŸ”—What is it supposed to do?

The exact interface of this is unclear, but generally it should allow people to upload songs, and the bot would play them in a matrix rtc call. This is frequently happening on other messaging platforms with voip functionality, only on matrix this wasn't a thing before as far as I know. Because the code isn't complete in functionality yet, feel free to use the code as inspiration for creating apps which interoperate with element-call. At some point, when the bot is more featureful, I intend to split out the matrix rtc parts, so it could be used as direct inspiration, or integrated in the matrix rust sdk, etc.

For now, this is the code of it on codeberg:

https://codeberg.org/esoteric_programmer/matrix-jukebox

Generally, people would put the project's room in this section, but because this isn't usable as its intended purpose yet, it has no room. For questions, I dk, ask in the twim offtopic room I suppose The code isn't very tidy yet, but it's there, so if you want to look through it and open issues or something, have fun!

πŸ”—Dept of Interesting Projects πŸ›°οΈ

πŸ”—resolvematrix

nex (it/she) πŸ³οΈβ€βš§οΈ announces

I can't find a good (simple+correct+extensible+batteries included) library in Python that strictly does correct x-to-server resolution logic, so I made one. You can also use it, if you fancy it.

If you're writing something in Python and need to discover the client-to-server or server-to-server API routes for specific server names, you'll like resolvematrix - aptly named, it resolves all of the servers available at https://resolvematrix.dev (although is not associated), and also some other tricky server names that some clients (and servers) also fall over. It's specifically built using modern libraries like httpx but gives you all the information required to use it in your own http library of choice. It doesn't currently have async methods but you can just chuck the existing calls in an asyncio.to_thread and nobody will be any the wiser.

πŸ”—Matrix Federation Stats

Aine [etke.cc] says

collected by MatrixRooms.info - an MRS instance by etke.cc

As of today, 12907 Matrix federateable servers have been discovered by matrixrooms.info, 3709 (28.7%) of them are publishing their rooms directory over federation. The published directories contain 17987 rooms.

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

πŸ”—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.

RankHostnameMedian MS
1tuwunel.love154
2continuwuity.codestorm.net162
3ncat.cafe180
4continuwuity.rocks201
5codestorm.net202
6bi-vibes.com206.5
7envs.net258
8usbpc.xyz259.5
9nerdhouse.io263.5
10maunium.net289

πŸ”—That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates!

To learn more about how to prepare an entry for TWIM check out the TWIM guide.

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.

Support us