Tulir Asokan / Blog

July 2025 releases // bandwidthmuks

Posted on • 660 words

This month's bridge releases include future-proofing against room v12 and many smaller bug fixes. On the gomuks side, bandwidth usage has been improved.

Bridge/library Version
mautrix-gmessages v0.6.4
mautrix-whatsapp v0.12.3
mautrix-telegram v0.15.3
mautrix-bluesky v0.1.2
mautrix-discord v0.7.5
mautrix-twitter v0.4.3
mautrix-gvoice v0.1.1
mautrix-signal v0.8.5
mautrix-slack v0.2.2
mautrix-meta v0.5.2
mautrix-go v0.24.2

Bridges

Nearly all bridges got a release this month, primarily to future-proof them against changes in future room versions. Room v12 is scheduled to be released next week and it contains breaking changes to power levels and the /createRoom API. In order to ensure bridges can still create rooms when v12 becomes default, all bridges have been updated to hardcode v11 in create room requests. The next month's releases are expected to have proper support for v12.

WhatsApp's @lid support has received further improvements. LID DMs should now be merged into the phone number DM more consistently, and even if merging doesn't work, sending to LID DMs should actually work now. The bridge also stores LID mappings received from the phone.

Meowlnir

The Meowlnir release this month was skipped, as it is expected that there will be changes to support room v12 within a week. There won't be a release with the changes right away, but admins using Meowlnir who want to upgrade their rooms to v12 are strongly encouraged to update to main/latest as soon as the v12 compatibility lands there.

Using old versions of Meowlnir in a v12 room may cause unexpected behavior, as the bot won't know that creators have special power. However, if you don't upgrade any Meowlnir-moderated rooms to v12, then there's no urgency in updating Meowlnir either.

gomuks

The bandwidthmuks project has finally started with 2 main changes:

There's now an option in settings to compress server->client traffic. It uses a connection-wide deflate session similar to Discord. I chose a custom implementation over the standard permessage-deflate, as the standard isn't supported properly on Safari, plus I assume Discord did extensive testing to find that a connection-wide deflate is more efficient than per-message. Compression is not enabled by default, as it prevents using browser devtools effectively, and it's not really needed if gomuks is on localhost.

If the client is slow to read incoming data, the server will bundle queued events in one websocket message rather than waiting for each one. This should lead to a few big packets instead of many small ones, which will hopefully go through faster. I didn't actually bother benchmarking it though, so who knows.

In addition to actual bandwidth improvements, the media upload indicator now has an actual progress bar instead of just a spinner. The indicator shows both gomuks frontend -> backend upload and backend -> homeserver upload as the first and second half of the progress bar respectively. Between the two halves, there may be some processing on the backend, which isn't currently measured and depends on options chosen in the upload dialog (e.g. re-encoding videos may take a while). The media uploads can even be cancelled now at any stage.

Non-bandwidth changes this month include: