This Week in Matrix 2019-05-24

2019-05-24 — This Week in Matrix — Ben Parsons

Matrix Live - Wilko, creator of Pattle 🎙

This week I chatted to Wilko, creator of Pattle.

Dept of Servers 🏢



Folks, big news this week as we announce that Synapse v1.0 is scheduled for release on 10th June - read all about it here

Aside from that we shipped v0.99.5.1 which (hopefully) is the penultimate release ahead of v1.0. Please, everyone upgrade to v0.99.5.1 because it implements rooms v4 which will be the default room version in Synapse v1.0. also contains experimental support for edits and reactions which are currently hidden behind a Riot labs flag.



Some activity has been happening this week in Dendrite-land, with Brendan adding support for Go modules to the project, and anoa adding SyTest runs to the project’s CI. These were two long-awaited maintenance works that will make working on Dendrite much easier in the future!

Dept of SDKs and Frameworks 🧰

libQMatrixClient (that will soon become libQuotient) 0.5.2 has been released, with the sole purpose of fixing a nasty bug unmarking some direct chats when doing initial sync or a clean-cache start up. Everybody on 0.5.x branch is advised to upgrade.

Dept of Clients 📱

QMatrixClient to Quotient


The process of renaming QMatrixClient to Quotient has commenced - expect some turbulence while we're transitioning. The place for the repos is at Note that although the library repo name has changed, the old version of the library will continue releases under the old name (libQMatrixClient), and only in the master branch the library will be renamed. In most cases redirects should bring you home even if you request the old URL (thanks to GitHub); however, people with git repos are strongly advised to update their remotes to new URLs!

In other news:

For platforms that don't have a separate libQMatrixClient package (that is, Windows, macOS, Flatpak and AppImage), Quaternion has been rebuilt with libQMatrixClient 0.5.2 - in the form of Quaternion release.


tanget is an embeddable HTML client from sanlox:

I added guest login, possibility to disable guest login, possibility to set own message limit on startup and various error messages. Cleaned up the code to make it more consistent and faster. Everthing I wanted to have for this tiny embeddable web chat is now there so I'd consider it finished for now.

Check it out at:


yuforia updated their JavaJX client:

minor changes in continuum this week:

Neo now has image, video and general file sending


Neo now supports sending multiple images, videos and files at once. You'll get a bar with previews, and the option to remove them from the queue/add more.
There's also been a bunch of changes to how events are handled. Images and videos should be much more robust against missing keys (no thumbnail, no information, etc), and there's basic displaying of the most common state events.
I also added an experimental media repository fallback option, which is disabled by default, and only implemented for room avatars. This allows you to provide a list of alternative homeservers Neo is allowed to try when your own homeserver can't load a piece of media.
Due to the loss of, I lost admin access in the Neo room, so keep your eyes out for a new one when my infra is back.
I'm currently not really versioning anything, but I do push significant commits to for people to try. Once it gets to a more useable state, I'll start adopting semantic versioning.

Spectral update

Black Hat:

You can now paste images from the clipboard in Spectral. It is also possible to change room name and topic in room settings. A new release is pushed to Flathub to address direct room issues. Also there've been discussions about implementing custom room themes and backgrounds.

Riot Web

  • Continued work on reactions and edits
  • New emoji font added to standardise emoji appearance and assist OS / browser combinations that don’t support emoji by default

Riot Mobile

  • Continued work on reactions and edits
  • Riot-iOS has a new actions menu on event
  • Fix registration with an email

Riot and RiotX available from F-Droid

krombel updated their Riot(X) F-Droid repos:

I finally found some time to update my fdroid repos which provide the development builds of riot and riotx. Now the builds of buildkite are part of the repos.
There are now 4 separate repos: One for each app and flavor. You can have a look at to find out the URL for the version you want to use.

Riot-dev (F-Droid; Repo; Build-Source)
    Fingerprint: 312E07B9444D0D1B615EBBAAC55EA4E5A54E123C3BEFCCA5D18B5E12DFC95BDC

Riot-dev (GPlay; Repo; Build-Source)
    Fingerprint: 81EDF1741A51B944B00B55E307C7AA043623CB646599182A104B895B6B319844

RiotX-dev (F-Droid; Repo; Build-Source)
    Fingerprint: FD146EF30FA9F8F075BDCD9F02F069D22061B1DF7CC90E90821750A7184BF53D
RiotX-dev (GPlay; Repo; Build-Source)
    Fingerprint: 5564AB4D4BF9461AF7955449246F12D7E792A8D65165EBB2C0E90E65E77D5095

Dept of Bridges 🌉

Major WhatsApp bridging update

tulir made great strides on mautrix-whatsapp this week:

I've been working on mautrix-whatsapp to add history bridging and Matrix puppeting.

  • New portals are populated with some history when creating them (exact count is configurable)
  • All messages missed during bridge downtime are backfilled
  • Creating portals is smarter now:
  • When logging in initially, it'll create portals for a few recent chats (count configurable).
  • It'll create portals when there are incoming messages as before, but it should no longer create portals for chats that only have old messages.
  • The missed message backfilling creates portals when necessary.

Matrix puppeting isn't quite finished yet. It can already use your Matrix account to bridge messages sent from whatsapp mobile, but it doesn't use the account to bridge EDUs (typing notifs, presence, read receipts) yet.

To make the history bridging a bit nicer, I made a PR to fix timestamp massaging in synapse: Timestamp massaging was removed from the spec in 1.0, but it wasn't intentionally removed from synapse, it just broke due to other changes. It was probably supposed to stay there as an easter egg until there's a proper solution for bridging history.

Dept of Ops 🛠

Ananace pushed updated K8s images for Synapse 0.99.5

Bubu updated synapse on Arch:

Archlinux updated to synapse 0.99.5 as well after the requests, urllib3 incomopatibility thing was sorted out.

Mathijs updated the synapse avhost docker image:

With synapse v the avhost docker image has finally moved to python 3

Dept of Services 🚀


New widget for Scalar: EtherCalc.

Dept of Bots 🤖


Very very new, let's take a look at QuatBot, which uses libQuotient:

QuatBot is a simple meeting-management bot for use with the Matrix. Taking turns during an online meeting -- and making sure everyone gets to have their say -- takes a bit of organizing, and this bot helps you do that. QuatBot runs as a command-line application.

Dept of Articles 📝

uhoreg wrote a really informative article about key verification:

For those who want to know more about the security behind emoji-based key verification, I've written a blog post about it:

Dept of GSOC 🎓

GSoC 2019 – Reliable Bridges

Thanks Kai for this introduction to his project:

The Reliable Bridges GSoC project is about implementing a feedback mechanism for the Matrix network in cases where bridges are not able to properly handle messages. Currently clients are unable to know if a message was successfully sent over a bridge. With the new mechanism in place they get the information about errors happening at bridges and can behave accordingly by e.g. notify the user of the failed delivery.

The implementation is foremost focused on the matrix-appservice-dicord bridge which uses the underlying matrix-appservice-bridge. A JS bridge was chosen so that as much code as possible is brought into the SDK and other bridges can profit sooner from the work done.

The first step for implementing the new feature will be the signaling of permanent errors occurring at the bridge (in contrast to temporary failures). They might occur e.g. when the sending account was banned on the bridged foreign network. These permanent errors will be implemented as a new type of PDU originating from the bridge.

After permanent errors are done, the subsequent weeks will see work on temporary failures which might include work on Synapse as well as work on Riot Web to have a client which actually uses the new events. As these events are new features being introduced there will also be a MSC draft. There everyone can check out the proposed solution and tear it apart with their criticism (if applicable 😉).

For discussions related to the GSoC project or when you have some opinions on how the MSC should look like, you are invited to join the Reliable Bridges Matrix room.

That's all I know 🏁

Finally Alan, friend of Matrix and creator of TADHack and TADSummit is doing an "Open Source Telecom Software Survey" - if you could add value to this research by completing it please do so here:

See you next week, and be sure to stop by with your updates!