Synapse 1.10.0 released

12.02.2020 00:00 β€” General β€” Neil Johnson

The whole Matrix project is racing towards enabling e2ee by default. Synapse is no different and v1.10.0 contains multiple e2ee UX improvements, as well as a bug fix that prevented cross signing requests over federation to work reliably.

If any of your users are on the bleeding edge and have already started using cross signing (by enabling labs flags in Riot), then it will be necessary for them to force Synapse to re-send device updates by renaming all of their devices.

We've also included a temporary fix to address alias abuse. The idea is that until #6898 lands, servers will refrain from sharing events of type with clients. Most admins will not be affected, but if you are present in rooms subject to alias abuse, then upgrading provides a pragmatic short term solution.

Finally, as of this release Synapse validates client_secret parameters in the Client-Server API as per the spec. See #6766 for details.

Get the new release from github or any of the sources mentioned at

Changelog since Synapse 1.9.0

Synapse 1.10.0 (2020-02-12)

WARNING to client developers: As of this release Synapse validates client_secret parameters in the Client-Server API as per the spec. See #6766 for details.

Updates to the Docker image

  • Update the docker images to Alpine Linux 3.11. (#6897)

Synapse 1.10.0rc5 (2020-02-11)


  • Fix the filtering introduced in 1.10.0rc3 to also apply to the state blocks returned by /sync. (#6884)

Synapse 1.10.0rc4 (2020-02-11)

This release candidate was built incorrectly and is superseded by 1.10.0rc5.

Synapse 1.10.0rc3 (2020-02-10)


  • Filter out from the CS API to mitigate abuse while a better solution is specced. (#6878)

Internal Changes

  • Fix continuous integration failures with old versions of pip, which were introduced by a release of the zipp library. (#6880)

Synapse 1.10.0rc2 (2020-02-06)


  • Fix an issue with cross-signing where device signatures were not sent to remote servers. (#6844)
  • Fix to the unknown remote device detection which was introduced in 1.10.rc1. (#6848)

Internal Changes

  • Detect unexpected sender keys on remote encrypted events and resync device lists. (#6850)

Synapse 1.10.0rc1 (2020-01-31)


  • Add experimental support for updated authorization rules for aliases events, from MSC2260. (#6787, #6790, #6794)


  • Warn if postgres database has a non-C locale, as that can cause issues when upgrading locales (e.g. due to upgrading OS). (#6734)
  • Minor fixes to PUT /_synapse/admin/v2/users admin api. (#6761)
  • Validate client_secret parameter using the regex provided by the Client-Server API, temporarily allowing : characters for older clients. The : character will be removed in a future release. (#6767)
  • Fix persisting redaction events that have been redacted (or otherwise don't have a redacts key). (#6771)
  • Fix outbound federation request metrics. (#6795)
  • Fix bug where querying a remote user's device keys that weren't cached resulted in only returning a single device. (#6796)
  • Fix race in federation sender worker that delayed sending of device updates. (#6799, #6800)
  • Fix bug where Synapse didn't invalidate cache of remote users' devices when Synapse left a room. (#6801)
  • Fix waking up other workers when remote server is detected to have come back online. (#6811)

Improved Documentation

  • Clarify documentation related to user_dir and federation_reader workers. (#6775)

Internal Changes

  • Record room versions in the rooms table. (#6729, #6788, #6810)
  • Propagate cache invalidates from workers to other workers. (#6748)
  • Remove some unnecessary admin handler abstraction methods. (#6751)
  • Add some debugging for media storage providers. (#6757)
  • Detect unknown remote devices and mark cache as stale. (#6776, #6819)
  • Attempt to resync remote users' devices when detected as stale. (#6786)
  • Delete current state from the database when server leaves a room. (#6792)
  • When a client asks for a remote user's device keys check if the local cache for that user has been marked as potentially stale. (#6797)
  • Add background update to clean out left rooms from current state. (#6802, #6816)
  • Refactoring work in preparation for changing the event redaction algorithm. (#6803, #6805, #6806, #6807, #6820)

This Week in Matrix 2020-02-07

07.02.2020 00:00 β€” This Week in Matrix β€” Ben Parsons

Matrix Live πŸŽ™

Every month (in theory), we do an in-office wrap-up of some interesting project work from the team. This Matrix Live was recorded this afternoon in the Matrix Office, and features Valere explaining Cross-Signing, and Matthew demonstrating P2P/dendrite. (Apologies for the incorrect recorded screen at times! Video came straight from a live demo!)

Dept of Spec πŸ“œ

Here's your weekly spec update!

MSC Status

Merged MSCs:

No MSCs were merged this week.

MSCs in Final Comment Period:

No MSCs entered FCP this week.

New MSCs:

No new MSCs have been created.

Random happenings

I (anoa) have been re-writing mscbot as it hasn't gotten much development love in the past year and there's lots of features we'd like to implement. Expect to see some of that next week. First feature the new implementation has is being able to track who is in the Spec Core Team via github teams instead of a config file.

Spec Core Team update

The Spec Core Team is working on MSC2260, MSC2261, and a QR-via-SAS thing which uhoreg is currently working on (this means less complicated, easier-to-scan QR codes for verification, which may have the side effect of FOSDEM demos being slightly less hilarious).

Dept of Events and Talks πŸ—£


FOSDEM happened, Matrix had a great time! Was awesome to see so many people at the stand, and the talks, and even at our social on Saturday night.
Congratulations to everyone who was able to buy a limited edition Matrix FOSDEM 2020 t-shirt! Check out our round-up here. said:

Reporting from FOSDEM: Currently sitting in the Fixing healthcare data exchange with decentralized FOSS: Building a decentralized Infrastructure to fix medical data exchange in The Netherlands talk, and was pleasantly surprised to learn that they also want to integrate Matrix for decentralized messaging between healthcare providers themselves and patients.

Mathijs announced:

last week was FOSDEM and it was great!

Yes we covered that.

Matrix Meetup: London, 26th February 2020

Are you interested in a real-life, real-time Matrix-related meetup? Can you make it to London? Join us on the 26th February at Second Home in Spitalfields! More details to follow, for now please register your interest at

Dept of Services πŸš€ offering paid Matrix hosting told us:

I was just pointed to here by evilham because of - maybe it's of interest for anyone

This is quite exciting - a new provider is offering Hosted Matrix solutions, based in Switzerland. Go check out their offering:

Dept of Servers 🏒


Neil Alexander reported:

Quite a lot has been happening in the Dendrite space, both in terms of general development, usability improvements and also further P2P experimentation post-FOSDEM. The main highlights are:

  • We have decided to require Go 1.13 for Dendrite going forward (our CI and tools have been updated to reflect this requirement)
  • Some federation testing has taken place between Dendrite and Synapse and it's looking reasonably good bar a few bugs
  • Initial support for distinguishing room versions has been added - this is the foundation work for being able to implement state resolution v2 and later room versions soon
  • The /capabilities endpoint has been implemented and now contains information about m.room_versions
  • Account data GET endpoints have been implemented
  • Guest registration should now be working - thanks to prateek2211 for the contribution!
  • The public rooms API is now wired up for roomserver events and (mostly) works for local rooms
  • Some more /sync fixes are in now
  • SQLite work is continuing thanks to Kegan's on-going efforts

We've also been really encouraged by the number of people at FOSDEM who came to speak to us about Dendrite and P2P. We're hoping to strategise further about the P2P work further in the coming weeks once Dendrite is in better shape, so watch this space!


This week we’ve been working on alias auth rules, acme v2 support and moving groups apis onto a worker to aid performance. Sorry has been a bit slow these past few days, we’re working on it and shipped some fixes earlier today.

Coming up are more perf improvements, more alias rules, getting sydent running in production on python 3. We’ll also ship v1.10.0 which contains some cross signing bug fixes.


Mathijs told us:

A docker image for synapse 1.10.0rc2 is available on mvgorcum/docker-matrix:v1.10.0rc2

Dept of Bridges πŸŒ‰

matrix-appservice-irc 1.15.0

Half-Shot announced:

Good people, 0.15.0 is out!. Please go ahead and read the changes and see if there is something you like :). We will be shipping this out to all the other bridges in due course :)


Tulir said:

I released v0.7.1 that includes some minor bugfixes, then added a !tg backfill command to backfill all history since the last bridged message. Future improvements may include more control over how many messages to backfill, automatically backfilling for new portals and freezing incoming message handling when a backfill is in progress.

Dept of SDKs and Frameworks 🧰


There's a new maubot plugin to post pictures to a room. It's installed into Cat Disruptor 6000 and can of course be self-hosted too. It has one command: !http \<status\>, that gets<status>.jpg and posts it to the room.


Some time ago I also made this thing: It might theoretically do something useful in the future, such as allowing users to log into bridges from a single website instead of by talking to many bots. Currently it only does telegram and maybe facebook, but at least it has a fancy login UI. It could also support being embedded into Riot as a widget and/or integration manager at some point, since I made the auth thing with Matrix's OpenID feature and MSC1961.

Quotient project revived

kitsune told us:

The Quotient project is back from hibernation now that its lead developer settled in another half of the globe; commits and PRs start moving around again. Thanks to all those patiently waiting!

Dept of Clients πŸ“±


Nico said:

  • You can now select more emojis in the emoji picker. (your font may not support them yet)
  • The timeline should scroll a lot faster and room switching should be a lot faster.
  • Fixed some alignment and sharpness issues in the logo
  • You can now mute rooms (or set them to mentions only)!
  • Some fixes around all kind of weird html escaping in usernames and messages.
  • Move the reply popup into the timeline to fix some alignment issues and improve the look and feel.
  • Fix an issue, where on windows the maximum database size was set to only a few bytes because of integer overflow.
  • Fix a regression when importing key backups from Riot.
  • Nheko now only sends the file name of a file as its name instead of the full path, fixing a privacy leak.

Riot WebExtension 🧩

stoic reported:

Version is out

  • SSO Login is now supported (so logins work πŸŽ‰)
  • Updated Riot Web to stable version 1.5.8
  • Firefox-only:
    • Now correctly reopens riot tabs that were in containers when the Add-on updates
    • General tips on how to use containers to have multiple accounts can be found on the AMO description
  • Get the Firefox Add-on here
  • Get the Chrome Extension here

Riot iOS

Manu reported:

This week, we polished the E2E by default and cross-signing features we have implemented so far.

Riot Web

Ryan offered:

  • Continuing focus on cross-signing post-FOSDEM to get everything ready for release
  • QR codes and key sharing improvements planned for delivery in the near future
  • Improved Seshat integration in Riot Desktop with more status info


benoit reported:

Riot-Android (yes, the legacy app!): We have fixed the issue with SSO login with Firefox accounts, and issue with Video Call. Expect a release at the beginning of next week.


benoit announced:

RiotX: we are still stabilizing the cross-signing implementation. Many other fixes are coming. Also SSO issue with Firefox accounts has been fixed, and we will also release a new version of the application next week.

matrix-presents a matrix presentation client. The room of interest is

It's also had a fair few changes since last time:

  • QR codes now render if you are the presenter, for easy joining.
  • You can react to slides as a guest, and they show up on the presenters screen :).
  • Slides and their contents are cached in indexedeb (browser storage), to lessen the load on homeservers.
  • Add UI to create rooms in the client, albeit without an editor just yet.
  • Various CSS tweaks to try and make life better.

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. Join to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS

That's all I know 🏁

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

Matrix at FOSDEM 2020

03.02.2020 18:25 β€” Events β€” Matthew Hodgson
Last update: 03.02.2020 13:22

Hi all,

We're just back from an incredible time at FOSDEM 2020 - Europe's biggest Free & Open Source Software conference. Huge huge thanks to everyone who came to our talks (sorry if you couldn't get in :/), came to talk to us at the stand, or flagged us down to give feedback, chase PRs, file bugs, or just say thanks. Thanks also to FOSDEM to accepting all of our talks this year, and to the FOSDEM organisers for pulling together yet another amazing event :)

We ended up with three talks:

We'll do a proper blog write-up on enabling E2E encryption by default, cross-signing, and all the other E2E encryption work that's been going on once we ship the stable release - but as of Saturday(!) it has landed on Riot/Web Develop, RiotX/Android (0.14.2) and Riot/iOS develop TestFlight, but we're still debugging and we need a bit longer before cutting the final releases.

So, until then, please take a look at the videos if you missed the livestream or weren't at the event!

The FOSDEM video recording lost the slides for the bridging talk - but luckily the presentation itself is a Matrix client and so you can view the slides yourself right here!.

Here's to FOSDEM 2021!

This Week in Matrix 2020-01-31

31.01.2020 00:00 β€” This Week in Matrix β€” Ben Parsons

Dept of Status of Matrix 🌑

This weekend Matrix will be well represented at FOSDEM! We'll have a stand (come visit!), but also note that we have THREE speaking slots (all on Sunday):

No Matrix Live today - look out for a special edition this weekend!


Dept of Spec πŸ“œ


anoa told us:

Here's your weekly spec update!

MSC Status

Merged MSCs:

No MSCs were merged this week.

MSCs in Final Comment Period:

No MSCs entered FCP this week.

New MSCs:

Random happenings

MSC2260: Update the auth rules for events and MSC2261: Allow events to be redacted by room admins are being progressed to help address ongoing alias spam, while [WIP] MSC1543: Key verification using QR codes has been updated as the feature is being implemented for cross-signing - to be demoed as FOSDEM this weekend! Sorunome's MSC2403: Add "knock" feature

Spec Core Team update

The Spec Core Team is still working on implementation. Expect things to ramp up again after FOSDEM! (Looking forward to seeing some of you there!)

Dept of Servers 🏒


Neil offered:

This week we’ve been continuing our E2EE UX bug hunt, getting Sydent ready for python 3, working on alias rules (MSC2260, 2261) and fixing some bugs in our ACME support.

Next week, we’ll ship the new improved Sydent, keep going with alias rules and dust off our master process sharding plans.

Synapse Deployment

Many projects updated:

Ananace announced:

Just pushed updated 1.9.1 tags for the K8s-optimized Synapse images, including support - and example config - for running with securityContext features enabled. With a separate media repo, it's now fully possible to run these images without root, and in completely read-only environment.

Mathijs announced:

The synapse 1.9.1 release images are available on avhost/docker-matrix:v1.9.1 and mvgorcum/docker-matrix:v1.9.1 The latter image also contains simple-antispam

and then

A docker image for synapse 1.10.0rc1 is available on mvgorcum/docker-matrix:v1.10.0rc1

ma1sd 2.3.0 released

ma1uta announced:

ma1sd 2.3.0 Changes:

  • Load DNS overwrite config on startup (from
  • Remove duplicates from identity store before email notifications (from
  • Fix room name retrieval after Synapse dropped table room_names (from
  • Add logging configuration. Add --dump and --dump-and-exit options to just print the full configuration.
  • Add the postgresql backend for internal storage.
  • Improve logging configuration. Introduce the root and the app log levels.

Dept of Bridges πŸŒ‰


sorunome offered:

mx-puppet-bridge got some updates!

  • way more tests (still not good enough test coverage, though!)
  • enhanced reaction support (reaction deletions/redactions are now properly bridged from and to matrix)
  • presence status now sets im.vector.user_status event to be in line with riots status labs feature (why doesn't riot just use the spec on presence status here?!)
  • add a message deduplicator class that protocol implementations with echo back can easily implement
  • fix various small bugs

As always, if you have any questions check out the support channel and please consider to donate! (Thanks sooooo much to everyone who donated so far!) 🦊


matrix-slack-parser is, similar to matrix-discord-parser, a parser for slack->matrix and matrix->slack messages. It has been created over this week and does proper parsing (meaning HTML parsing and slack blocks, etc.). mx-puppet-slack already implements this, which leaves matrix-appservice-slack to follow suit! (cadair expressed interest, so looking forward to that!)

Dept of Clients πŸ“±

Nheko offered:

Nheko has added support kicking, inviting and banning/unbanning via the commands /kick, /invite, /ban and /unban with an optional reason specified after the userid. Kick and Ban buttons were also enabled for the userprofile. Furthermore some shortcuts for switching rooms (Ctrl+Up/Down) and paginating the timeline (PgUp/PgDown) were added. The shortcuts may change in the future though, so if those don't work for you, please give us feedback in or via the issue!

RiotX cross-signing implementation

benoit said:

RiotX: the team is mainly working on cross-signing implementation and device verification with QR code. It's nearly there !

FluffyChat Flutter is getting a Dark Mode

MTRNord said:

Sneak Peak of the next FluffyChat Flutter Update :)

FluffyChat Flutter is getting a Dark Mode for both mobile and web. Including a AMOLED compatible color version.


Dept of Bots πŸ€–

New Project: Pluggable Chatbot (PCB) written in Go announced:

I started a new Pluggable Chatbot (PCB) written in Go. Still early development, but working hard on it. Bot is pluggable, meaning more functionality can be easily added to it. Check it out at
Currently there are two examples available: echo and uppercase.

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. Join to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS

Final Thoughts πŸ’­

Half-Shot offered:

I know it's a bit naughty to post rooms in here, but for developers looking to play around with Vue.js (with matrix), we've created a support room over at

That's all I know 🏁

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

Synapse 1.9.1 released

28.01.2020 00:00 β€” Releases β€” Neil Johnson

A quick bug fix release that affects admins making use of monthly active user limits. You will know if you are affected because 1.9.0 will not start up. Apologies if you were bitten by this one!

Get the new release from github or any of the sources mentioned at

Changelog since Synapse 1.9.1

Synapse 1.9.1 (2020-01-28)


  • Fix bug where setting mau_limit_reserved_threepids config would cause Synapse to refuse to start. (#6793)

This Week in Matrix 2020-01-24

24.01.2020 00:00 β€” This Week in Matrix β€” Ben Parsons

Matrix Live πŸŽ™

Half-Shot talks to Neil about his new(ish) project, matrix-presents

Dept of Spec πŸ“œ

anoa reported:

Here are your spec updates for this week!

Merged MSCs:

  • No MSCs were merged this week.

MSCs in Final Comment Period:

  • No MSCs currently in Final Comment Period

New MSCs:

The Spec Core Team is still working on implementation, and likely will continue to be until after FOSDEM.

Dept of Servers 🏒

Dendrite / P2P

Neil Alexander announced:

A fairly big PR was merged into Dendrite yesterday (and some more fixes today) which gets /sync working better and adds the /messages endpoint, so it's now actually possible to paginate around in channels and to see room history. This massively improves the user experience when logging into a Dendrite homeserver.

In addition, another small PR was merged to fix Riot user login in the normal login workflow (not registration) and the public rooms API has been wired up for roomserver events.

A couple of changes have also been merged into gomatrixserverlib, mostly fixing the creation of /backfill requests and allowing the use of custom http.Transports for federation traffic.

P2P work is continuing - stay tuned!

Synapse 1.9.0

Neil said:

This week we shipped 1.9.0 which contained new admin API endpoints as well as bug fixes for existing ones. Aside from that, we’ve been continuing on our E2EE UX bug hunt and python3ing sydent.

Next week, we’ll keep going on the e2ee ux bug hunt and sydent work. As well as dusting off MSCs 2260 2261 to improve room aliases management.

Deploying Synapse

Several packaging projects have been updated to deploy the new version:

Dept of Bridges πŸŒ‰

matrix-appservice-IRC hits 0.14.1

Half-Shot said:

Hello wannabe IRC and Matrix users! Today the bridge team bring you the 0.14.X series of the irc bridge. This is the mammoth release featuring all the Typescript changes and postgres stuff. The Postgres changes aren't as essential as they are for Synapse, but useful if you run a ~20k Freenode bridge.

The highlights are:

  • Typescript is now used everywhere across the project, bringing a range of refactors.
  • Postgresql support has landed, while still retaining NeDB support for the present.
  • Storing your password will now cause a seamless reconnect to the IRC network, allowing you to set a password without having to bother NickServ.
  • support has landed, to trace errors in the bridge.
  • Added a reapUsers API endpoint, which allows the bridge to automatically prune users who have not interacted with the bridge for a long time.

Some of these features are still more experimental than others, so the next release hopes to clean up a lot of the outstanding bugs. That's all from us for now :)


sorunome said:

A lot happened on the mx-puppet-bridge front! Mostly documentation and code cleanup to make future development easier.

  • Introduce better documentation and a sample config
  • Introduce a demonstration protocol implementation, mx-puppet-echo, meant to help those out who want to write their own protocol implementation
  • Eliminate triple-usage of room/channel/chan, it's just called "room" everywhere now
  • Split matrix event handling and remote event handling into their own files/classes
  • Eliminate all usage of the any keyword, with the help of matrix-bot-sdk's event models
  • Start writing tests to, well, auto-test the library
  • Various small bugfixes

As always, feel free to drop by the support room and please consider to donate!


sorunome also added:

matrix-discord-parser is the joint matrix->discord and discord->matrix parser that both mx-puppet-discord and matrix-appservice-discord use. For sending messages matrix->discord optional auto-detection of code language for code blocks using highlight.js has been implemented.

Dept of Clients πŸ“±

Riot WebExt 🧩

stoic announced this pretty cool project:

Always wanted to host your own version of Riot Web locally but never came around doing it? Meet Riot WebExt, an unofficial proof of concept Browser Extension that bundles Riot Web, so everything is locally served with the click of a button. Available for Firefox and Chrome!

Firefox AMO: Chrome Store: GitHub: Room:

Ditto Chat [v0.2.0] released!

Annie announced Ditto Chat v0.2.0!

Ditto Chat is a Matrix Client in React Native.


  • Ability to Create a New Room & Search for Users
  • Notifications for Android
  • Improved Timeline Rendering (support for m.notice)


  • Color scheme is darker / night mode
  • Improved Direct Message vs Group Detection
  • Settings Screen Design (smaller, scrolls now)
  • Loads fewer events, thus initial sync is faster


  • Various Visual Bugs

Download Links:

koma and Continuum, Kotlin Matrix projects

yuforia said:

koma, Kotlin library for building clients:

  • Responses of the sync API can be received continuously using Flow (async lazy sequence) now. Compared to previous method which used Channel, Flow can be transformed and combined in a much more flexible way, and Flow stops when it's no longer being consumed, so no coroutine will be left running accidentally.

Continuum desktop client based on Koma:

  • Improve startup speed a bit more (Render more UI widgets without waiting for IO operations to finish).

FluffyChat-Flutter is now available as a web app!

MTRNord reported:

Check it out at:

It includes everything that the Android App does except for currently notifications and file sharing.


Riot iOS

Manu told us:

This week, in the cross-signing side, we updated e2e decoration, replacing padlocks with shields. We started working on the new device list in the room member screen.

RiotX, rainbows and other new features

benoit said:

RiotX: We are making progress on cross-signing and verification by QRCode. Also we are working to improve the network detection and paused sync thread issue. But the most important is: "/rainbow" command will be available soon 🌈 !

Riot Web

TravisR told us:

We've done a lot this week, and probably even more next week:

  • Continuing on the cross-signing front with support for QR code verification, verification in the right panel, a bunch of shields to indicate trust, some bootstrapping in the secret store, and more!
  • A release candidate for 1.5.8-rc.2 (please give this a test on
  • An all-new invite dialog for creating DMs and bringing people into rooms.

Dept of Interesting Projects πŸ›°

Tampere Hacklab information display powered by Matrix

Cos reported:

tsw from Tampere Hacklab has made a read-only client for information displays. It's still in early development but can already be tried out.


Dept of Jobs πŸ’°

Neil announced:

Are there any French speaking Sys Admins reading this? If that's you then I want you to know that exists and if you are interested to know more you should DM me. Remote is fine - though full time only.

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. Join to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS

That's all I know 🏁

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

Synapse 1.9.0 released

23.01.2020 00:00 β€” Releases β€” Neil Johnson

Synapse 1.9.0 contains a bunch of new admin APIs as well as bug fixes to existing ones. In particular we have a new end point that allows admins to query which rooms their server participates in.

Aside from that it is worth noting that we have officially dropped support for SQLite versions < 3.11. Though more generally we would recommend that all admins migrate to Postgres for anything other than test and evaluation purposes.

Get the new release from github or any of the sources mentioned at

Changelog since Synapse 1.8.0

Synapse 1.9.0 (2020-01-23)

WARNING: As of this release, Synapse no longer supports versions of SQLite before 3.11, and will refuse to start when configured to use an older version. Administrators are recommended to migrate their database to Postgres (see instructions here).

If your Synapse deployment uses workers, note that the reverse-proxy configurations for the, and workers have changed, with the addition of a few paths (see the updated configurations here). Existing configurations will continue to work.

Improved Documentation

  • Fix endpoint documentation for the List Rooms admin API. (#6770)

Synapse 1.9.0rc1 (2020-01-22)


  • Allow admin to create or modify a user. Contributed by Awesome Technologies Innovationslabor GmbH. (#5742)
  • Add new quarantine media admin APIs to quarantine by media ID or by user who uploaded the media. (#6681, #6756)
  • Add org.matrix.e2e_cross_signing to unstable_features in /versions as per MSC1756. (#6712)
  • Add a new admin API to list and filter rooms on the server. (#6720)


  • Correctly proxy HTTP errors due to API calls to remote group servers. (#6654)
  • Fix media repo admin APIs when using a media worker. (#6664)
  • Fix "CRITICAL" errors being logged when a request is received for a uri containing non-ascii characters. (#6682)
  • Fix a bug where we would assign a numeric user ID if somebody tried registering with an empty username. (#6690)
  • Fix purge_room admin API. (#6711)
  • Fix a bug causing Synapse to not always purge quiet rooms with a low max_lifetime in their message retention policies when running the automated purge jobs. (#6714)
  • Fix the synapse_port_db not correctly running background updates. Thanks @tadzik for reporting. (#6718)
  • Fix changing password via user admin API. (#6730)
  • Fix /events/:event_id deprecated API. (#6731)
  • Fix monthly active user limiting support for worker mode, fixes #4639. (#6742)
  • Fix bug when setting account_validity to an empty block in the config. Thanks to @Sorunome for reporting. (#6747)
  • Fix AttributeError: 'NoneType' object has no attribute 'get' in hash_password when configuration has an empty password_config. Contributed by @ivilata. (#6753)
  • Fix the docker-compose.yaml overriding the entire /etc folder of the container. Contributed by Fabian Meyer. (#6656)

Improved Documentation

  • Fix a typo in the configuration example for purge jobs in the sample configuration file. (#6621)
  • Add complete documentation of the message retention policies support. (#6624, #6665)
  • Add some helpful tips about changelog entries to the GitHub pull request template. (#6663)
  • Clarify the account_validity and email sections of the sample configuration. (#6685)
  • Add more endpoints to the documentation for Synapse workers. (#6698)

Deprecations and Removals

  • Synapse no longer supports versions of SQLite before 3.11, and will refuse to start when configured to use an older version. Administrators are recommended to migrate their database to Postgres (see instructions here). (#6675)

Internal Changes

  • Add local_current_membership table for tracking local user membership state in rooms. (#6655, #6728)
  • Port synapse.replication.tcp to async/await. (#6666)
  • Fixup synapse.replication to pass mypy checks. (#6667)
  • Allow additional_resources to implement IResource directly. (#6686)
  • Allow REST endpoint implementations to raise a RedirectException, which will redirect the user's browser to a given location. (#6687)
  • Updates and extensions to the module API. (#6688)
  • Updates to the SAML mapping provider API. (#6689, #6723)
  • Remove redundant RegistrationError class. (#6691)
  • Don't block processing of incoming EDUs behind processing PDUs in the same transaction. (#6697)
  • Remove duplicate check for the session query parameter on the /auth/xxx/fallback/web Client-Server endpoint. (#6702)
  • Attempt to retry sending a transaction when we detect a remote server has come back online, rather than waiting for a transaction to be triggered by new data. (#6706)
  • Add StateMap type alias to simplify types. (#6715)
  • Add a DeltaState to track changes to be made to current state during event persistence. (#6716)
  • Add more logging around message retention policies support. (#6717)
  • When processing a SAML response, log the assertions for easier configuration. (#6724)
  • Fixup to pass mypy. (#6732, #6764)
  • Fixup synapse.api to pass mypy. (#6733)
  • Allow streaming cache 'invalidate all' to workers. (#6749)
  • Remove unused CI docker compose files. (#6754)

This Week in Matrix 2020-01-17

17.01.2020 21:37 β€” This Week in Matrix β€” Ben Parsons
Last update: 17.01.2020 19:46

Matrix Live πŸŽ™

Dept of Status of Matrix 🌑

Google Summer of Code 2020

Sometimes it seems like existence is a constant loop. Cycles within cycles are replayed, with only minor differences to help us discern the current and the foregoing.
How can we endure it?

It's not all bad though! Google have announced the return of the Summer of Code programme, and have updated their website with the current year (2020) and latest information.

Matrix will be applying to be a Mentoring Organisation, as we have for several years now. This year, we'd like to open the umbrella a little. If you think your (Matrix-related) project could help mentor a student, and that you could offer a meaningful project to that student, please contact me directly. For reference, there were four students under the Matrix heading last year, of which one was assigned to work with Kitsune on encryption support in libQuotient.


Will you be at FOSDEM this year? Matrix will be very well represented, so please come and see us at our stand, plus attend all of the three talks we'll be conducting. Many more details to follow!

Dept of Services πŸš€

New from, a public Matrix Homeserver focused on the Dutch market. Read the announcement and sign up here.

Dept of Spec πŸ“œ

anoa offered:

Here are this week's spec πŸ•οΈ updates!

Merged MSCs:

No MSCs were merged this week.

MSCs in Final Comment Period:

No MSCs are in Final Comment Period.

New MSCs:

The Spec Core Team is still working on implementation, and likely will continue to be until after FOSDEM.

Dept of Servers 🏒

Dendrite / P2P

Neil Alexander reported:

I've spent some time this week experimenting with integrating libp2p into dendrite and gomatrixserverlib to understand if we can get link-local homeserver discovery working along with direct or indirect federation. It's still early at the moment but I have had success with early federation requests working over libp2pβ€”hopefully I'll have something interesting to show soon!

dendrite in riot


Neil reported:

This week we’ve been continuing to work on migrating sydent to py3, improving admin tooling and working on fixing e2ee bugs. We’re also looking to make changes to allow admins the power to remove room aliases (MSCs 2260 2261).

Dept of Built on Matrix πŸ—

Matrix Presents πŸ“½οΈ

Half-Shot told us:

What is it? Slideshows in Matrix, basically using the matrix room / event primitives to construct presentable federated slide shows.

What's new this week you ask? Well, it breaks less. It also does other neat things.

  • Supports guests for viewing presentations, including the ability to specify a guest HS via the URL.
  • Supports code highlighting in the presentation.
  • Lots of CSS fixes to make slides line up properly.
  • A fullscreen mode, which is actually unobstructive and quite handy.
  • Presenter mode, which allows you to switch between following the presenters view of the room, and being able to view at your own leisure.
  • Room joins now actually work, so you can be linked to a slide and expect to be able to view it.

Come check us out at

Dept of Bridges πŸŒ‰

matrix-imposter-bot, interesting relay idea said:

matrix-imposter-bot - A bot that uses your account to repeat other people's messages. This gives relay-bot capabilities to puppet-only bridges. For more details, see

mx-puppet-bridge and other soru adventures

sorunome told us:

Will the development ever stop? Who knows! Here's the latest mx-puppet-bridge updates:

  • Fix unbridging of direct chats
  • Allow room-specific ghost avatar and name overrides
  • Enhanced logging config
  • Ability to configure name patterns for users/rooms/groups


Of course mx-puppet-discord received some updates, too!

  • Receive notification on friends request
  • Add optional profile syncing
  • Implement guild-specific nicknames
  • Implement variables for name patterns


What, mx-puppet-slack updates? Yay!

  • Set external_url field
  • Implement variables for name patterns

As always, if you have any questions, please drop by the support chat and consider to donate! 🦊🦊🦊

Dept of Clients πŸ“±

Nheko replies rendering said:

I added pretty rendering of replies to nheko. It uses the same rendering as for normal messages, so you will see an image being replied to and you can even play a replied to video. You can also click on the reply to navigate to that part of the history.

RiotX: Release v0.13.0

benoit said:

RiotX: Release v0.13.0 has been uploaded today to the PlayStore and should follow in F-Droid store. It contains typing notification feature, and new screens for Room profile and room members list, and new screen for Room Member profile. Those new screens are still missing a lots of features, that will be implemented in the next weeks. For F-Droid version, it contains a fix on the broken background sync. We are also making big progress on cross-signing implementation, and we have started to write integration tests on the SDK. told us:

RiotX is now available via the repository here:

Riot iOS

Manu announced:

We are still working hard on the implementation of cross-signing.

Riot Web Cross-signing update

Thanks to Ryan from the team:

All of this is part of cross-signing:

  • Room shield decoration added
  • New post-login device verification flow
  • Toasts added to verify a new session
  • Will begin working on post-login / registration bootstrapping flows


Alexandre Franke reported:

In the past month, a few things happened:

  • When redacting messages, they get removed from history view.
  • Thumbnail for pasted images have been fixed.
  • A handful of languages got updated.
  • Moar refactoring.

koma + Continuum: kotlin lib and client

yuforia told us:

koma, Kotlin library for building clients:

  • Update network library ktor to latest release 1.3.0
  • Add option to use authentication with GET /_matrix/client/r0/publicRooms to fix HTTP Unauthorized errors with newer Synapse versions which may have allow_public_rooms_without_auth set to False.

Continuum desktop client based on Koma:

  • Fix empty room directory list by always using the authenticated API POST /_matrix/client/r0/publicRooms

Dept of Ops πŸ› 

matrix-docker-ansible-deploy updates

Slavi told us:

matrix-docker-ansible-deploy can now easily configure automatic Double Puppeting for all of its Mautrix bridges (Facebook, Hangouts, Whatsapp, Telegram). This is possible due to those bridges' integration with matrix-synapse-shared-secret-auth - yet another component that the playbook can install. Our documentation page for each bridge provides relevant information on how to get it enabled.


matrix-docker-ansible-deploy can now install and configure matrix-appservice-webhooks, thanks to a contribution from BjΓΆrn Marten from netresearch. Our documentation page about Appservice Webhooks tells you how to get started.

auto-update Riot-Web script said:

I have created simple Bash script for auto-update Riot-Web to latest version. Because now have no public Wiki, I publish it as Gist here:

ruby-grafana-matrix ingress updates

Ananace said:

My Grafana notification ingress gem received the missing piece of functionality for configuring it for posting both m.text as well as the original m.notice messages (as well as defaulting to m.text now as the more common expectation) - for those that want the messages to also provide Matrix notifications instead of just acting as an added history/flow. This can also be configured per-rule, so that you are able to have multiple notification ingresses configured with different message types.

It's always so lovely when people - other than myself - use my projects, especially when providing feedback on them. So many simple-to-implement features that get forgotten just because they weren't part of the original MVP.

Dept of Bots πŸ€–

TWIM bot updated for opsdroid 0.17 offered:

TWIM bot has been updates to use all the new features of opsdroid 0.17 it now supports Edits, both in updating it's database and by editing messages which get posted to . Also it supports 'TWIMing' a post by the user who posted it reacting with ⭕️, this is mainly designed as an easy way to mark images as TWIM posts. πŸš€

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. Join to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS

That's all I know 🏁

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

This Week in Matrix 2020-01-10

10.01.2020 00:00 β€” This Week in Matrix β€” Ben Parsons

Matrix Live πŸŽ™

Dept of Spec πŸ“œ

anoa informed us:

We've had a slight lull from people crawling out from winter holiday hibernation caves, but there's likely more to come as everyone gets back into the swing of things.

Merged MSCs

No MSCs were merged this week.

MSCs in Final Comment Period

No MSCs are currently in FCP.

New MSCs

The Spec Core Team is continuing to work on implementation of existing MSCs.

Dept of Servers 🏒

Synapse 1.8.0 is out now

Get the latest news here!

Synapse 1.8.0 has arrived, it contains a whole host of bug fixes and tweaks, most notably fixing some long standing problems with search.
More generally we are spending a lot of time improving the e2ee experience ahead of switching on e2ee by default, so watch this space.

Deploying Synapse

Several packaging projects have been updated to deploy the new version:

matrix-media-repo v1.0.0 - repeat, v1.0.0!!

TravisR offered:

matrix-media-repo v1.0.0 has been released! If it is suitable for your environment, please give it a go.

Dendrite federation work!

Neil Alexander announced:

Federation fixes have been pushed to gomatrixserverlib and Dendrite's master branches, that include the following tweaks:

  • Using the v2 endpoints for /send_join and /send_leave
  • Fixing the resolution of room aliases to room IDs in the Dendrite federation API
  • A rewrite of the auth chain functions which should be a bit smoother
  • A couple of other minor tweaks to some of the types

In addition, I've spent the last few days working on Dendrite's storage backends, adding somewhat-hacky support for SQLite and investigating ORM modelling for some of the simpler components, as a part of getting Dendrite to run as a "true monolith" for the P2P work.

cortex (synapse worker in Rust) supports e2ee rooms

Black Hat offered:

cortex's federation sender finally supports e2ee rooms! I'm testing its performance on an Intel Atom z8350 and it looks great.

Dept of Bridges πŸŒ‰

Matrix App for Zapier

@coppero1237 appeared to us, then announced:

The MVP is now available:

Use the Zapier App to integrate your Matrix room with any of Zapier's 1500+ apps, including:

  • Github
  • Trello
  • Pagerduty
  • Google calendar
  • Jira
  • Salesforce

Currently the MVP supports sending messages to a room. Reading messages from a room is future work.

If you're interested providing feedback, requesting a feature, future development, or just understanding how it works, please join the matrix room,

Source code:

matrix-zammad bridge

Half-Shot offered:

matrix-zammad now supports reacting to tickets to close them, provided you've set up your puppeted token in the config. It's useful if you get a lot of spam tickets :p


sorunome reported:

Lots of changes in mx-puppet-bridge!

  • Allow sending status messages into bridged rooms
  • add a bridgeChannel function for protocol implementations
  • add config options to set displayname and avatar url of the AS bot
  • leave the bridge bot of a bridged room, whenever possible
  • auto-leave a puppeted ghost after an hour inactivity (to prevent DMs having three users in them)
  • automatically dedupe media when uploading
  • matrix group to remote protocol group mapping


Along with mx-puppet-bridge, things got implemented in mx-puppet-discord!

  • allow bridging of single channels in a guild
  • display an error if sending a message to discord fails
  • add joinentireguild command
  • handle webhooks properly
  • map discord guilds to matrix groups

If you enjoy this software, please consider to donate, thank you! 🦊

And another mx-puppet-discord update!

  • [User Tokens] Proper User-Agent spoofing - friends management now seems mostly safe! Leaving the warning thing in just-in-case, though

Dept of Clients πŸ“±

πŸ“½οΈ Matrix Presents!

I'm adding this to the client section because it behaves like a client, but it's not what we'd normally think of...

Half-Shot reported:

Work has resumed on matrix-presents, newly rewritten in Vue.js! The project was first demoed back in Oggcamp 2018 where I gave a meta presentation on the virtues Matrix for other mediums. This time around, it's being brought back with:

  • A user interface for managing, joining and creating slideshows.
  • Control over how slides are advanced (pinned to the presenters view, or unlocked)
  • Finer control over how slides are laid out, using a fragments system to build slides out of submessages.

This is currently in heavy development and will debut at Fosdem 2020!

A regularly updated version of the app is hosted at

(And for those of you expecting a form of table tennis, there is an easter egg in progress πŸ˜ƒ)

Continuum, desktop client in Kotlin

yuforia offered:

Continuum, a desktop client in Kotlin:

  • Update README to include information on building from source
  • Fix: database not updated after leaving a room
  • Move user's access token and list of joined rooms from database to more lightweight key-value storage

RiotX v0.12.0

benoit reported:

RiotX v0.12.0 has been released with some performance improvement, especially on initial sync and on timeline loading time. The release also contains bugfixes and a cleanup in the application settings. A new "developer mode" has been added to show advanced features only to power users. We are now working on the room profile screen, and we are making progress on the cross-signing implementation. Besides that, we are working to make RiotX available on the F-Droid store.

I must say RiotX is getting a lot more stable and reliable recently!

Riot iOS

Manu told us:

We are still working on the implementation of cross-signing and verification by DM.

Dept of Ops πŸ› 


In addition to mentioning Synapse 1.8.0 support, Ananace said:

Synapse 1.8.0 Kubernetes-optimized images are pushed, I've also updated the example manifests as part of some work on making it easier to deploy - expect a MVP of a Helm Chart some time Soonβ„’

Also, to add a bit of context/information to this;

Helm is the de-facto standard package manager for Kubernetes clusters, where a Chart is a package for an application that can be installed and configured. The Helm Chart I'm working on won't be a one-click install to begin with, for the Minimum Viable Product it will require manually generating and storing the Synapse signing key - though I have thoughts on how to later delegate that to a small one-time job that Helm can run if necessary

Opsdroid 0.17

Cadair offered:

Opsdroid 0.17 was released in December, it comes with many changes but the main matrix improvements are support for extra event types like Replies, Edits, Reactions, Room Name changes, Room Topic changes, Alias changes, Room avatar changes, Power levels, and support for generic matrix state events. All these events are supported for both sending and implementing skills based on receiving them.

Dept of Ping πŸ“

Let's reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server. Join to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS

That's all I know 🏁

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

Synapse 1.8.0 released

09.01.2020 00:00 β€” Releases β€” Neil Johnson

Synapse 1.8.0 has arrived, it contains a whole host of bug fixes and tweaks, most notably fixing some long standing problems with search.

More generally we are spending a lot of time improving the e2ee experience ahead of switching on e2ee by default, so watch this space.

Get the new release from github or any of the sources mentioned at

Synapse 1.8.0 (2020-01-09)


  • Fix GET request on /_synapse/admin/v2/users endpoint. Contributed by Awesome Technologies Innovationslabor GmbH. (#6563)
  • Fix incorrect signing of responses from the key server implementation. (#6657)

Synapse 1.8.0rc1 (2020-01-07)


  • Add v2 APIs for the send_join and send_leave federation endpoints (as described in MSC1802). (#6349)
  • Add a develop script to generate full SQL schemas. (#6394)
  • Add custom SAML username mapping functionality through an external provider plugin. (#6411)
  • Automatically delete empty groups/communities. (#6453)
  • Add option limit_profile_requests_to_users_who_share_rooms to prevent requirement of a local user sharing a room with another user to query their profile information. (#6523)
  • Add an export_signing_key script to extract the public part of signing keys when rotating them. (#6546)
  • Add experimental config option to specify multiple databases. (#6580)
  • Raise an error if someone tries to use the log_file config option. (#6626)


  • Prevent redacted events from being returned during message search. (#6377, #6522)
  • Prevent error on trying to search a upgraded room when the server is not in the predecessor room. (#6385)
  • Improve performance of looking up cross-signing keys. (#6486)
  • Fix race which occasionally caused deleted devices to reappear. (#6514)
  • Fix missing row in device_max_stream_id that could cause unable to decrypt errors after server restart. (#6555)
  • Fix a bug which meant that we did not send systemd notifications on startup if acme was enabled. (#6571)
  • Fix exception when fetching the key. (#6625)
  • Fix bug where a moderator upgraded a room and became an admin in the new room. (#6633)
  • Fix an error which was thrown by the PresenceHandler _on_shutdown handler. (#6640)
  • Fix exceptions in the synchrotron worker log when events are rejected. (#6645)
  • Ensure that upgraded rooms are removed from the directory. (#6648)
  • Fix a bug causing Synapse not to fetch missing events when it believes it has every event in the room. (#6652)

Improved Documentation

Deprecations and Removals

  • Remove redundant code from event authorisation implementation. (#6502)
  • Remove unused, undocumented /_matrix/content API. (#6628)

Internal Changes

  • Add experimental support for multiple physical databases and split out state storage to separate data store. (#6245, #6510, #6511, #6513, #6564, #6565)
  • Port sections of code base to async/await. (#6496, #6504, #6505, #6517, #6559, #6647, #6653)
  • Remove SnapshotCache in favour of ResponseCache. (#6506)
  • Silence mypy errors for files outside those specified. (#6512)
  • Clean up some logging when handling incoming events over federation. (#6515)
  • Test more folders against mypy. (#6534)
  • Update mypy to new version. (#6537)
  • Adjust the sytest blacklist for worker mode. (#6538)
  • Remove unused get_pagination_rows methods from EventSource classes. (#6557)
  • Clean up logs from the push notifier at startup. (#6558)
  • Improve diagnostics on database upgrade failure. (#6570)
  • Reduce the reconnect time when worker replication fails, to make it easier to catch up. (#6617)
  • Simplify http handling by removing redundant SynapseRequestFactory. (#6619)
  • Add a workaround for synapse raising exceptions when fetching the notary's own key from the notary. (#6620)
  • Automate generation of the sample log config. (#6627)
  • Simplify event creation code by removing redundant queries on the event_reference_hashes table. (#6629)
  • Fix errors when frozen_dicts are enabled. (#6642)

Get the new release from github or any of the sources mentioned at