Skip to content
Synapse 1.61.0rc1 (2022-06-07)

This release removes support for the non-standard feature known both as 'groups' and as 'communities', which have been superseded by *Spaces*.


- Add new `media_retention` options to the homeserver config for routinely cleaning up non-recently accessed media. ([\#12732](, [\#12972](, [\#12977](
- Experimental support for [MSC3772]( Push rule for mutually related events. ([\#12740](, [\#12859](
- Update to the `check_event_for_spam` module callback: Deprecate the current callback signature, replace it with a new signature that is both less ambiguous (replacing booleans with explicit allow/block) and more powerful (ability to return explicit error codes). ([\#12808](
- Add storage and module API methods to get monthly active users (and their corresponding appservices) within an optionally specified time range. ([\#12838](, [\#12917](
- Support the new error code `ORG.MATRIX.MSC3823.USER_ACCOUNT_SUSPENDED` from [MSC3823]( ([\#12845](, [\#12923](
- Add a configurable background job to delete stale devices. ([\#12855](
- Improve URL previews for pages with empty elements. ([\#12951](
- Allow updating a user's password using the admin API without logging out their devices. Contributed by @jcgruenhage. ([\#12952](


- Always send an `access_token` in `/thirdparty/` requests to appservices, as required by the [Application Service API specification]( ([\#12746](
- Implement [MSC3816]( sending the root event in a thread should count as having 'participated' in it. ([\#12766](
- Delete events from the `federation_inbound_events_staging` table when a room is purged through the admin API. ([\#12784](
- Fix a bug where we did not correctly handle invalid device list updates over federation. Contributed by Carl Bordum Hansen. ([\#12829](
- Fix a bug which allowed multiple async operations to access database locks concurrently. Contributed by @sumnerevans @ Beeper. ([\#12832](
- Fix an issue introduced in Synapse 0.34 where the `/notifications` endpoint would only return notifications if a user registered at least one pusher. Contributed by Famedly. ([\#12840](
- Fix a bug where servers using a Postgres database would fail to backfill from an insertion event when MSC2716 is enabled (`experimental_features.msc2716_enabled`). ([\#12843](
- Fix [MSC3787]( rooms being omitted from room directory, room summary and space hierarchy responses. ([\#12858](
- Fix a bug introduced in Synapse 1.54.0 which could sometimes cause exceptions when handling federated traffic. ([\#12877](
- Fix a bug introduced in Synapse 1.59.0 which caused room deletion to fail with a foreign key violation error. ([\#12889](
- Fix a long-standing bug which caused the `/messages` endpoint to return an incorrect `end` attribute when there were no more events. Contributed by @Vetchu. ([\#12903](
- Fix a bug introduced in Synapse 1.58.0 where `/sync` would fail if the most recent event in a room was a redaction of an event that has since been purged. ([\#12905](
- Fix a potential memory leak when generating thumbnails. ([\#12932](
- Fix a long-standing bug where a URL preview would break if the image failed to download. ([\#12950](

Improved Documentation

- Fix typographical errors in documentation. ([\#12863](
- Fix documentation incorrectly stating the `sendToDevice` endpoint can be directed at generic workers. Contributed by Nick @ Beeper. ([\#12867](

Deprecations and Removals

- Remove support for the non-standard groups/communities feature from Synapse. ([\#12553](, [\#12558](, [\#12563](, [\#12895](, [\#12897](, [\#12899](, [\#12900](, [\#12936](, [\#12966](
- Remove contributed `` script. This is broken under Python 3, and is not added to the environment when `pip install`ing Synapse. ([\#12908](
- Remove `contrib/jitsimeetbridge`. This was an unused experiment that hasn't been meaningfully changed since 2014. ([\#12909](
- Remove unused `contrib/experiements/` script, which fails to run under Python 3. ([\#12910](
- Remove unused `contrib/experiements/` script. This fails to run on Python 3. ([\#12911](

Internal Changes

- Test Synapse against Complement with workers. ([\#12810](, [\#12933](
- Reduce the amount of state we pull from the DB. ([\#12811](, [\#12964](
- Try other homeservers when re-syncing state for rooms with partial state. ([\#12812](
- Resume state re-syncing for rooms with partial state after a Synapse restart. ([\#12813](
- Remove Mutual Rooms' ([MSC2666]( endpoint dependency on the User Directory. ([\#12836](
- Experimental: expand `check_event_for_spam` with ability to return additional fields. This enables spam-checker implementations to experiment with mechanisms to give users more information about why they are blocked and whether any action is needed from them to be unblocked. ([\#12846](
- Remove `dont_notify` from the `` rule. ([\#12849](
- Remove the unstable `/hierarchy` endpoint from [MSC2946]( ([\#12851](
- Pull out less state when handling gaps in room DAG. ([\#12852](, [\#12904](
- Clean-up the push rules datastore. ([\#12856](
- Correct a type annotation in the URL preview source code. ([\#12860](
- Update `pyjwt` dependency to [2.4.0]( ([\#12865](
- Enable the `/account/whoami` endpoint on synapse worker processes. Contributed by Nick @ Beeper. ([\#12866](
- Enable the `batch_send` endpoint on synapse worker processes. Contributed by Nick @ Beeper. ([\#12868](
- Don't generate empty AS transactions when the AS is flagged as down. Contributed by Nick @ Beeper. ([\#12869](
- Fix up the variable `state_store` naming. ([\#12871](
- Faster room joins: when querying the current state of the room, wait for state to be populated. ([\#12872](
- Avoid running queries which will never result in deletions. ([\#12879](
- Use constants for EDU types. ([\#12884](
- Reduce database load of `/sync` when presence is enabled. ([\#12885](
- Refactor `have_seen_events` to reduce memory consumed when processing federation traffic. ([\#12886](
- Refactor receipt linearization code. ([\#12888](
- Add type annotations to `synapse.logging.opentracing`. ([\#12894](
- Remove PyNaCl occurrences directly used in Synapse code. ([\#12902](
- Bump types-jsonschema from 4.4.1 to 4.4.6. ([\#12912](
- Rename storage classes. ([\#12913](
- Preparation for database schema simplifications: stop reading from `event_edges.room_id`. ([\#12914](
- Check if we are in a virtual environment before overriding the `PYTHONPATH` environment variable in the demo script. ([\#12916](
- Improve the logging when signature checks on events fail. ([\#12925](