Synapse 1.50.0 (2022-01-18)
This release contains a critical bug that may prevent clients from being able to connect. As such, it is not recommended to upgrade to 1.50.0. Instead, please upgrade straight to to 1.50.1. Further details are available in this issue.
Please note that we now only support Python 3.7+ and PostgreSQL 10+ (if applicable), because Python 3.6 and PostgreSQL 9.6 have reached end-of-life.
No significant changes since 1.50.0rc2.
Synapse 1.50.0rc2 (2022-01-14)
This release candidate fixes a federation-breaking regression introduced in Synapse 1.50.0rc1.
Bugfixes
- Fix a bug introduced in Synapse v1.0.0 whereby some device list updates would not be sent to remote homeservers if there were too many to send at once. (#11729)
- Fix a bug introduced in Synapse v1.50.0rc1 whereby outbound federation could fail because too many EDUs were produced for device updates. (#11730)
Improved Documentation
- Document that now the minimum supported PostgreSQL version is 10. (#11725)
Internal Changes
- Fix a typechecker problem related to our (ab)use of
nacl.signing.SigningKey
s. (#11714)
Synapse 1.50.0rc1 (2022-01-05)
Features
- Allow guests to send state events per MSC3419. (#11378)
- Add experimental support for part of MSC3202: allowing application services to masquerade as specific devices. (#11538)
- Add admin API to get users' account data. (#11664)
- Include the room topic in the stripped state included with invites and knocking. (#11666)
- Send and handle cross-signing messages using the stable prefix. (#10520)
- Support unprefixed versions of fallback key property names. (#11541)
Bugfixes
- Fix a long-standing bug where relations from other rooms could be included in the bundled aggregations of an event. (#11516)
- Fix a long-standing bug which could cause
AssertionError
s to be written to the log when Synapse was restarted after purging events from the database. (#11536, #11642) - Fix a bug introduced in Synapse 1.17.0 where a pusher created for an email with capital letters would fail to be created. (#11547)
- Fix a long-standing bug where responses included bundled aggregations when they should not, per MSC2675. (#11592, #11623)
- Fix a long-standing bug that some unknown endpoints would return HTML error pages instead of JSON
M_UNRECOGNIZED
errors. (#11602) - Fix a bug introduced in Synapse 1.19.3 which could sometimes cause
AssertionError
s when backfilling rooms over federation. (#11632)
Improved Documentation
- Update Synapse install command for FreeBSD as the package is now prefixed with
py38
. Contributed by @itchychips. (#11267) - Document the usage of refresh tokens. (#11427)
- Add details for how to configure a TURN server when behind a NAT. Contibuted by @AndrewFerr. (#11553)
- Add references for using Postgres to the Docker documentation. (#11640)
- Fix the documentation link in newly-generated configuration files. (#11678)
- Correct the documentation for
nginx
to use a case-sensitive url pattern. Fixes an error introduced in v1.21.0. (#11680) - Clarify SSO mapping provider documentation by writing
def
orasync def
before the names of methods, as appropriate. (#11681)
Deprecations and Removals
- Replace
mock
package by its standard library version. (#11588) - Drop support for Python 3.6 and Ubuntu 18.04. (#11633)
Internal Changes
- Allow specific, experimental events to be created without
prev_events
. Used by MSC2716. (#11243) - A test helper (
wait_for_background_updates
) no longer depends on classes defining astore
property. (#11331) - Add type hints to
synapse.appservice
. (#11360) - Add missing type hints to
synapse.config
module. (#11480) - Add test to ensure we share the same
state_group
across the whole historical batch when using the MSC2716/batch_send
endpoint. (#11487) - Refactor
tests.util.setup_test_homeserver
andtests.server.setup_test_homeserver
. (#11503) - Move
glob_to_regex
andre_word_boundary
tomatrix-python-common
. (#11505, #11687) - Use
HTTPStatus
constants in place of literals intests.rest.client.test_auth
. (#11520) - Add a receipt types constant for
m.read
. (#11531) - Clean up
synapse.rest.admin
. (#11535) - Add missing
errcode
toparse_string
andparse_boolean
. (#11542) - Use
HTTPStatus
constants in place of literals insynapse.http
. (#11543) - Add missing type hints to storage classes. (#11546, #11549, #11551, #11555, #11575, #11589, #11594, #11652, #11653, #11654, #11657)
- Fix an inaccurate and misleading comment in the
/sync
code. (#11550) - Add missing type hints to
synapse.logging.context
. (#11556) - Stop populating unused database column
state_events.prev_state
. (#11558) - Minor efficiency improvements in event persistence. (#11560)
- Add some safety checks that storage functions are used correctly. (#11564, #11580)
- Make
get_device
returnNone
if the device doesn't exist rather than raising an exception. (#11565) - Split the HTML parsing code from the URL preview resource code. (#11566)
- Remove redundant
COALESCE()
s aroundCOUNT()
s in database queries. (#11570) - Add missing type hints to
synapse.http
. (#11571) - Add MSC2716 and MSC3030 to
/versions
->unstable_features
to detect server support. (#11582) - Add type hints to
synapse/tests/rest/admin
. (#11590) - Drop end-of-life Python 3.6 and Postgres 9.6 from CI. (#11595)
- Update black version and run it on all the files. (#11596)
- Add opentracing type stubs and fix associated mypy errors. (#11603, #11622)
- Improve OpenTracing support for requests which use a
ResponseCache
. (#11607) - Improve OpenTracing support for incoming HTTP requests. (#11618)
- A number of improvements to opentracing support. (#11619)
- Refactor the way that the
outlier
flag is set on events received over federation. (#11634) - Improve the error messages from
get_create_event_for_room
. (#11638) - Remove redundant
get_current_events_token
method. (#11643) - Convert
namedtuples
toattrs
. (#11665, #11574) - Update the
/capabilities
response to include whether support for MSC3440 is available. (#11690) - Send the
Accept
header in HTTP requests made usingSimpleHttpClient.get_json
. (#11677) - Work around Mjolnir compatibility issue by adding an import for
glob_to_regex
insynapse.util
, where it moved from. (#11696)