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.
Features
- 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)
Bugfixes
- 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 incorrectend
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
kick_users.py
script. This is broken under Python 3, and is not added to the environment whenpip 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/cursesio.py
script, which fails to run under Python 3. (#12910) - Remove unused
contrib/experiements/test_messaging.py
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.m.rule.room.server_acl
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)