diff --git a/CHANGES.md b/CHANGES.md
index e10ac0314abf85580e2588b57be7cde20d730d5b..f6ca5c472144c98412da1a7aa69873cfa8b9824b 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,115 @@
+Synapse 1.60.0rc1 (2022-05-24)
+==============================
+
+Features
+--------
+
+- Measure the time taken in spam-checking callbacks and expose those measurements as metrics. ([\#12513](https://github.com/matrix-org/synapse/issues/12513))
+- Add a `default_power_level_content_override` config option to set default room power levels per room preset. ([\#12618](https://github.com/matrix-org/synapse/issues/12618))
+- Add support for [MSC3787: Allowing knocks to restricted rooms](https://github.com/matrix-org/matrix-spec-proposals/pull/3787). ([\#12623](https://github.com/matrix-org/synapse/issues/12623))
+- Send `USER_IP` commands on a different Redis channel, in order to reduce traffic to workers that do not process these commands. ([\#12672](https://github.com/matrix-org/synapse/issues/12672), [\#12809](https://github.com/matrix-org/synapse/issues/12809))
+- Synapse will now reload [cache config](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#caching) when it receives a [SIGHUP](https://en.wikipedia.org/wiki/SIGHUP) signal. ([\#12673](https://github.com/matrix-org/synapse/issues/12673))
+- Add a config options to allow for auto-tuning of caches. ([\#12701](https://github.com/matrix-org/synapse/issues/12701))
+- Update [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716) implementation to process marker events from the current state to avoid markers being lost in timeline gaps for federated servers which would cause the imported history to be undiscovered. ([\#12718](https://github.com/matrix-org/synapse/issues/12718))
+- Add a `drop_federated_event` callback to `SpamChecker` to disregard inbound federated events before they take up much processing power, in an emergency. ([\#12744](https://github.com/matrix-org/synapse/issues/12744))
+- Implement [MSC3818: Copy room type on upgrade](https://github.com/matrix-org/matrix-spec-proposals/pull/3818). ([\#12786](https://github.com/matrix-org/synapse/issues/12786), [\#12792](https://github.com/matrix-org/synapse/issues/12792))
+- Update to `check_event_for_spam`. 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](https://github.com/matrix-org/synapse/issues/12808))
+
+
+Bugfixes
+--------
+
+- Fix a bug introduced in Synapse 1.7.0 that would prevent events from being sent to clients if there's a retention policy in the room when the support for retention policies is disabled. ([\#12611](https://github.com/matrix-org/synapse/issues/12611))
+- Fix a bug introduced in Synapse 1.57.0 where `/messages` would throw a 500 error when querying for a non-existent room. ([\#12683](https://github.com/matrix-org/synapse/issues/12683))
+- Add a unique index to `state_group_edges` to prevent duplicates being accidentally introduced and the consequential impact to performance. ([\#12687](https://github.com/matrix-org/synapse/issues/12687))
+- Fix a long-standing bug where an empty room would be created when a user with an insufficient power level tried to upgrade a room. ([\#12696](https://github.com/matrix-org/synapse/issues/12696))
+- Fix a bug introduced in Synapse 1.30.0 where empty rooms could be automatically created if a monthly active users limit is set. ([\#12713](https://github.com/matrix-org/synapse/issues/12713))
+- Fix push to dismiss notifications when read on another client. Contributed by @SpiritCroc @ Beeper. ([\#12721](https://github.com/matrix-org/synapse/issues/12721))
+- Fix poor database performance when reading the cache invalidation stream for large servers with lots of workers. ([\#12747](https://github.com/matrix-org/synapse/issues/12747))
+- Delete events from the `federation_inbound_events_staging` table when a room is purged through the admin API. ([\#12770](https://github.com/matrix-org/synapse/issues/12770))
+- Give a meaningful error message when a client tries to create a room with an invalid alias localpart. ([\#12779](https://github.com/matrix-org/synapse/issues/12779))
+- Fix a bug introduced in 1.43.0 where a file (`providers.json`) was never closed. Contributed by @arkamar. ([\#12794](https://github.com/matrix-org/synapse/issues/12794))
+- Fix a long-standing bug where finished log contexts would be re-started when failing to contact remote homeservers. ([\#12803](https://github.com/matrix-org/synapse/issues/12803))
+- Fix a bug, introduced in Synapse 1.21.0, that led to media thumbnails being unusable before the index has been added in the background. ([\#12823](https://github.com/matrix-org/synapse/issues/12823))
+
+
+Updates to the Docker image
+---------------------------
+
+- Fix the docker file after a dependency update. ([\#12853](https://github.com/matrix-org/synapse/issues/12853))
+
+
+Improved Documentation
+----------------------
+
+- Fix a typo in the Media Admin API documentation. ([\#12715](https://github.com/matrix-org/synapse/issues/12715))
+- Update the OpenID Connect example for Keycloak to be compatible with newer versions of Keycloak. Contributed by @nhh. ([\#12727](https://github.com/matrix-org/synapse/issues/12727))
+- Fix typo in server listener documentation. ([\#12742](https://github.com/matrix-org/synapse/issues/12742))
+- Link to the configuration manual from the welcome page of the documentation. ([\#12748](https://github.com/matrix-org/synapse/issues/12748))
+- Fix typo in 'run_background_tasks_on' option name in configuration manual documentation. ([\#12749](https://github.com/matrix-org/synapse/issues/12749))
+- Add information regarding the `rc_invites` ratelimiting option to the configuration docs. ([\#12759](https://github.com/matrix-org/synapse/issues/12759))
+- Add documentation for cancellation of request processing. ([\#12761](https://github.com/matrix-org/synapse/issues/12761))
+- Recommend using docker to run tests against postgres. ([\#12765](https://github.com/matrix-org/synapse/issues/12765))
+- Add missing user directory endpoint from the generic worker documentation. Contributed by @olmari. ([\#12773](https://github.com/matrix-org/synapse/issues/12773))
+- Add additional info to documentation of config option `cache_autotuning`. ([\#12776](https://github.com/matrix-org/synapse/issues/12776))
+- Update configuration manual documentation to document size-related suffixes. ([\#12777](https://github.com/matrix-org/synapse/issues/12777))
+- Fix invalid YAML syntax in the example documentation for the `url_preview_accept_language` config option. ([\#12785](https://github.com/matrix-org/synapse/issues/12785))
+
+
+Deprecations and Removals
+-------------------------
+
+- Require a body in POST requests to `/rooms/{roomId}/receipt/{receiptType}/{eventId}`, as required by the [Matrix specification](https://spec.matrix.org/v1.2/client-server-api/#post_matrixclientv3roomsroomidreceiptreceipttypeeventid). This breaks compatibility with Element Android 1.2.0 and earlier: users of those clients will be unable to send read receipts. ([\#12709](https://github.com/matrix-org/synapse/issues/12709))
+
+
+Internal Changes
+----------------
+
+- Improve event caching mechanism to avoid having multiple copies of an event in memory at a time. ([\#10533](https://github.com/matrix-org/synapse/issues/10533))
+- Add some type hints to datastore. ([\#12477](https://github.com/matrix-org/synapse/issues/12477), [\#12717](https://github.com/matrix-org/synapse/issues/12717), [\#12753](https://github.com/matrix-org/synapse/issues/12753))
+- Preparation for faster-room-join work: return subsets of room state which we already have, immediately. ([\#12498](https://github.com/matrix-org/synapse/issues/12498))
+- Replace string literal instances of stream key types with typed constants. ([\#12567](https://github.com/matrix-org/synapse/issues/12567))
+- Add `@cancellable` decorator, for use on endpoint methods that can be cancelled when clients disconnect. ([\#12586](https://github.com/matrix-org/synapse/issues/12586))
+- Add ability to cancel disconnected requests to `SynapseRequest`. ([\#12588](https://github.com/matrix-org/synapse/issues/12588))
+- Add a helper class for testing request cancellation. ([\#12630](https://github.com/matrix-org/synapse/issues/12630))
+- Improve documentation of the `synapse.push` module. ([\#12676](https://github.com/matrix-org/synapse/issues/12676))
+- Refactor functions to on `PushRuleEvaluatorForEvent`. ([\#12677](https://github.com/matrix-org/synapse/issues/12677))
+- Preparation for database schema simplifications: stop writing to `event_reference_hashes`. ([\#12679](https://github.com/matrix-org/synapse/issues/12679))
+- Remove code which updates unused database column `application_services_state.last_txn`. ([\#12680](https://github.com/matrix-org/synapse/issues/12680))
+- Refactor `EventContext` class. ([\#12689](https://github.com/matrix-org/synapse/issues/12689))
+- Remove an unneeded class in the push code. ([\#12691](https://github.com/matrix-org/synapse/issues/12691))
+- Consolidate parsing of relation information from events. ([\#12693](https://github.com/matrix-org/synapse/issues/12693))
+- Capture the `Deferred` for request cancellation in `_AsyncResource`. ([\#12694](https://github.com/matrix-org/synapse/issues/12694))
+- Fixes an incorrect type hint for `Filter._check_event_relations`. ([\#12695](https://github.com/matrix-org/synapse/issues/12695))
+- Respect the `@cancellable` flag for `DirectServe{Html,Json}Resource`s. ([\#12698](https://github.com/matrix-org/synapse/issues/12698))
+- Respect the `@cancellable` flag for `RestServlet`s and `BaseFederationServlet`s. ([\#12699](https://github.com/matrix-org/synapse/issues/12699))
+- Respect the `@cancellable` flag for `ReplicationEndpoint`s. ([\#12700](https://github.com/matrix-org/synapse/issues/12700))
+- Convert namespace class `Codes` into a string enum. ([\#12703](https://github.com/matrix-org/synapse/issues/12703))
+- Complain if a federation endpoint has the `@cancellable` flag, since some of the wrapper code may not handle cancellation correctly yet. ([\#12705](https://github.com/matrix-org/synapse/issues/12705))
+- Enable cancellation of `GET /rooms/$room_id/members`, `GET /rooms/$room_id/state` and `GET /rooms/$room_id/state/$event_type/*` requests. ([\#12708](https://github.com/matrix-org/synapse/issues/12708))
+- Optimize private read receipt filtering. ([\#12711](https://github.com/matrix-org/synapse/issues/12711))
+- Add type annotations to increase the number of modules passing `disallow-untyped-defs`. ([\#12716](https://github.com/matrix-org/synapse/issues/12716), [\#12726](https://github.com/matrix-org/synapse/issues/12726))
+- Drop the logging level of status messages for the URL preview cache expiry job from INFO to DEBUG. ([\#12720](https://github.com/matrix-org/synapse/issues/12720))
+- Downgrade some OIDC errors to warnings in the logs, to reduce the noise of Sentry reports. ([\#12723](https://github.com/matrix-org/synapse/issues/12723))
+- Update configs used by Complement to allow more invites/3PID validations during tests. ([\#12731](https://github.com/matrix-org/synapse/issues/12731))
+- Tidy up and type-hint the database engine modules. ([\#12734](https://github.com/matrix-org/synapse/issues/12734))
+- Fix a long-standing bug where the user directory background process would fail to make forward progress if a user included a null codepoint in their display name or avatar. ([\#12762](https://github.com/matrix-org/synapse/issues/12762))
+- Tweak the mypy plugin so that `@cached` can accept `on_invalidate=None`. ([\#12769](https://github.com/matrix-org/synapse/issues/12769))
+- Move methods that call `add_push_rule` to the `PushRuleStore` class. ([\#12772](https://github.com/matrix-org/synapse/issues/12772))
+- Make handling of federation Authorization header (more) compliant with RFC7230. ([\#12774](https://github.com/matrix-org/synapse/issues/12774))
+- Refactor `resolve_state_groups_for_events` to not pull out full state when no state resolution happens. ([\#12775](https://github.com/matrix-org/synapse/issues/12775))
+- Do not keep going if there are 5 back-to-back background update failures. ([\#12781](https://github.com/matrix-org/synapse/issues/12781))
+- Fix federation when using the demo scripts. ([\#12783](https://github.com/matrix-org/synapse/issues/12783))
+- The `hash_password` script now fails when it is called without specifying a config file. ([\#12789](https://github.com/matrix-org/synapse/issues/12789))
+- Simplify `disallow_untyped_defs` config in `mypy.ini`. ([\#12790](https://github.com/matrix-org/synapse/issues/12790))
+- Update EventContext `get_current_event_ids` and `get_prev_event_ids` to accept state filters and update calls where possible. ([\#12791](https://github.com/matrix-org/synapse/issues/12791))
+- Remove Caddy from the Synapse workers image used in Complement. ([\#12818](https://github.com/matrix-org/synapse/issues/12818))
+- Add Complement's shared registration secret to the Complement worker image. This fixes tests that depend on it. ([\#12819](https://github.com/matrix-org/synapse/issues/12819))
+- Support registering Application Services when running with workers under Complement. ([\#12826](https://github.com/matrix-org/synapse/issues/12826))
+- Add some type hints to test files. ([\#12833](https://github.com/matrix-org/synapse/issues/12833))
+- Disable 'faster room join' Complement tests when testing against Synapse with workers. ([\#12842](https://github.com/matrix-org/synapse/issues/12842))
+
+
 Synapse 1.59.1 (2022-05-18)
 ===========================
 
diff --git a/changelog.d/10533.misc b/changelog.d/10533.misc
deleted file mode 100644
index f70dc6496fcfac748db9cd1eeac915c6503d7984..0000000000000000000000000000000000000000
--- a/changelog.d/10533.misc
+++ /dev/null
@@ -1 +0,0 @@
-Improve event caching mechanism to avoid having multiple copies of an event in memory at a time.
diff --git a/changelog.d/12477.misc b/changelog.d/12477.misc
deleted file mode 100644
index e793d08e5e3f2ba9d10fd806a56da6d7d7a781c9..0000000000000000000000000000000000000000
--- a/changelog.d/12477.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add some type hints to datastore.
\ No newline at end of file
diff --git a/changelog.d/12498.misc b/changelog.d/12498.misc
deleted file mode 100644
index 8a00b94fbeef25fcb9fb7635610ec082c034058a..0000000000000000000000000000000000000000
--- a/changelog.d/12498.misc
+++ /dev/null
@@ -1 +0,0 @@
-Preparation for faster-room-join work: return subsets of room state which we already have, immediately.
diff --git a/changelog.d/12513.feature b/changelog.d/12513.feature
deleted file mode 100644
index 01bf1d9d2cf651a59485fa4abbca8f4d0437adf4..0000000000000000000000000000000000000000
--- a/changelog.d/12513.feature
+++ /dev/null
@@ -1 +0,0 @@
-Measure the time taken in spam-checking callbacks and expose those measurements as metrics.
diff --git a/changelog.d/12567.misc b/changelog.d/12567.misc
deleted file mode 100644
index 35f08569bada796db84dce678b3903808ab23d7e..0000000000000000000000000000000000000000
--- a/changelog.d/12567.misc
+++ /dev/null
@@ -1 +0,0 @@
-Replace string literal instances of stream key types with typed constants.
\ No newline at end of file
diff --git a/changelog.d/12586.misc b/changelog.d/12586.misc
deleted file mode 100644
index d26e332305ce31222026affd46624959eae51a3f..0000000000000000000000000000000000000000
--- a/changelog.d/12586.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add `@cancellable` decorator, for use on endpoint methods that can be cancelled when clients disconnect.
diff --git a/changelog.d/12588.misc b/changelog.d/12588.misc
deleted file mode 100644
index f62d5c8e210c82fea369fd8c5c3c45c90aa60d32..0000000000000000000000000000000000000000
--- a/changelog.d/12588.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add ability to cancel disconnected requests to `SynapseRequest`.
diff --git a/changelog.d/12611.bugfix b/changelog.d/12611.bugfix
deleted file mode 100644
index 093c45a20b7f2a8068d3f3d10a91bb700c23cb45..0000000000000000000000000000000000000000
--- a/changelog.d/12611.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in Synapse 1.7.0 that would prevent events from being sent to clients if there's a retention policy in the room when the support for retention policies is disabled.
diff --git a/changelog.d/12618.feature b/changelog.d/12618.feature
deleted file mode 100644
index 37fa03b3cb41d846be8a53446dbb5b1800f60b96..0000000000000000000000000000000000000000
--- a/changelog.d/12618.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add a `default_power_level_content_override` config option to set default room power levels per room preset.
diff --git a/changelog.d/12623.feature b/changelog.d/12623.feature
deleted file mode 100644
index cdee19fafa36e73fde51882991e44ba6aeead264..0000000000000000000000000000000000000000
--- a/changelog.d/12623.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add support for [MSC3787: Allowing knocks to restricted rooms](https://github.com/matrix-org/matrix-spec-proposals/pull/3787).
\ No newline at end of file
diff --git a/changelog.d/12630.misc b/changelog.d/12630.misc
deleted file mode 100644
index 43e12603e2d877028cb8ef3e6d1a5cdf84e73ed9..0000000000000000000000000000000000000000
--- a/changelog.d/12630.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add a helper class for testing request cancellation.
diff --git a/changelog.d/12672.feature b/changelog.d/12672.feature
deleted file mode 100644
index b989e0d208c494505a43ff6586197816c14085ad..0000000000000000000000000000000000000000
--- a/changelog.d/12672.feature
+++ /dev/null
@@ -1 +0,0 @@
-Send `USER_IP` commands on a different Redis channel, in order to reduce traffic to workers that do not process these commands.
\ No newline at end of file
diff --git a/changelog.d/12673.feature b/changelog.d/12673.feature
deleted file mode 100644
index f2bddd6e1c276dbb3b0c0629a7081c0cb461e2da..0000000000000000000000000000000000000000
--- a/changelog.d/12673.feature
+++ /dev/null
@@ -1 +0,0 @@
-Synapse will now reload [cache config](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#caching) when it receives a [SIGHUP](https://en.wikipedia.org/wiki/SIGHUP) signal.
diff --git a/changelog.d/12676.misc b/changelog.d/12676.misc
deleted file mode 100644
index 26490af00deee13aae3641e029d888bf79811039..0000000000000000000000000000000000000000
--- a/changelog.d/12676.misc
+++ /dev/null
@@ -1 +0,0 @@
-Improve documentation of the `synapse.push` module.
diff --git a/changelog.d/12677.misc b/changelog.d/12677.misc
deleted file mode 100644
index eed12e69e9ba944cb0f5d4c8bff8543da722d926..0000000000000000000000000000000000000000
--- a/changelog.d/12677.misc
+++ /dev/null
@@ -1 +0,0 @@
-Refactor functions to on `PushRuleEvaluatorForEvent`.
diff --git a/changelog.d/12679.misc b/changelog.d/12679.misc
deleted file mode 100644
index 6df1116b49ee5c7dcb7578219d20050f03010990..0000000000000000000000000000000000000000
--- a/changelog.d/12679.misc
+++ /dev/null
@@ -1 +0,0 @@
-Preparation for database schema simplifications: stop writing to `event_reference_hashes`.
diff --git a/changelog.d/12680.misc b/changelog.d/12680.misc
deleted file mode 100644
index dfd1f0a6c658d1683fac4b328d3c006285173ee4..0000000000000000000000000000000000000000
--- a/changelog.d/12680.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove code which updates unused database column `application_services_state.last_txn`.
diff --git a/changelog.d/12683.bugfix b/changelog.d/12683.bugfix
deleted file mode 100644
index 2ce84a223a3730fe7b6e585d7945050e8e4b7cef..0000000000000000000000000000000000000000
--- a/changelog.d/12683.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in Synapse 1.57.0 where `/messages` would throw a 500 error when querying for a non-existent room.
diff --git a/changelog.d/12687.bugfix b/changelog.d/12687.bugfix
deleted file mode 100644
index 196d9766707a4235f6980ce4d71bf20a0a210665..0000000000000000000000000000000000000000
--- a/changelog.d/12687.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Add a unique index to `state_group_edges` to prevent duplicates being accidentally introduced and the consequential impact to performance.
\ No newline at end of file
diff --git a/changelog.d/12689.misc b/changelog.d/12689.misc
deleted file mode 100644
index daa484ea3019e4a45195c3cff8f982a3686b4017..0000000000000000000000000000000000000000
--- a/changelog.d/12689.misc
+++ /dev/null
@@ -1 +0,0 @@
-Refactor `EventContext` class.
diff --git a/changelog.d/12691.misc b/changelog.d/12691.misc
deleted file mode 100644
index c635434211110aadbed6eaaa3dc34db48c1e1ddd..0000000000000000000000000000000000000000
--- a/changelog.d/12691.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove an unneeded class in the push code.
diff --git a/changelog.d/12693.misc b/changelog.d/12693.misc
deleted file mode 100644
index 8bd1e1cb0cd5875d2488171897170cf9e29792ac..0000000000000000000000000000000000000000
--- a/changelog.d/12693.misc
+++ /dev/null
@@ -1 +0,0 @@
-Consolidate parsing of relation information from events.
diff --git a/changelog.d/12694.misc b/changelog.d/12694.misc
deleted file mode 100644
index e1e956a51301732ece5dd58fff2201d7a4314765..0000000000000000000000000000000000000000
--- a/changelog.d/12694.misc
+++ /dev/null
@@ -1 +0,0 @@
-Capture the `Deferred` for request cancellation in `_AsyncResource`.
diff --git a/changelog.d/12695.misc b/changelog.d/12695.misc
deleted file mode 100644
index 1b39d969a4c588c2893715c6d93f793b15cfcceb..0000000000000000000000000000000000000000
--- a/changelog.d/12695.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fixes an incorrect type hint for `Filter._check_event_relations`.
diff --git a/changelog.d/12696.bugfix b/changelog.d/12696.bugfix
deleted file mode 100644
index e410184a22af57372e5ec77e7f71cb90e83d2bca..0000000000000000000000000000000000000000
--- a/changelog.d/12696.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a long-standing bug where an empty room would be created when a user with an insufficient power level tried to upgrade a room.
diff --git a/changelog.d/12698.misc b/changelog.d/12698.misc
deleted file mode 100644
index 5d626352f9c292c59af94188fc621fa1f07202cc..0000000000000000000000000000000000000000
--- a/changelog.d/12698.misc
+++ /dev/null
@@ -1 +0,0 @@
-Respect the `@cancellable` flag for `DirectServe{Html,Json}Resource`s.
diff --git a/changelog.d/12699.misc b/changelog.d/12699.misc
deleted file mode 100644
index d278a956c7a9ab5027bbf86476aad6331d2a512b..0000000000000000000000000000000000000000
--- a/changelog.d/12699.misc
+++ /dev/null
@@ -1 +0,0 @@
-Respect the `@cancellable` flag for `RestServlet`s and `BaseFederationServlet`s.
diff --git a/changelog.d/12700.misc b/changelog.d/12700.misc
deleted file mode 100644
index d93eb5dada74fe41c2c80c81ce274468b2275691..0000000000000000000000000000000000000000
--- a/changelog.d/12700.misc
+++ /dev/null
@@ -1 +0,0 @@
-Respect the `@cancellable` flag for `ReplicationEndpoint`s.
diff --git a/changelog.d/12701.feature b/changelog.d/12701.feature
deleted file mode 100644
index bb2264602c84d0831bf8c7e9de22feae8f247546..0000000000000000000000000000000000000000
--- a/changelog.d/12701.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add a config options to allow for auto-tuning of caches.
diff --git a/changelog.d/12703.misc b/changelog.d/12703.misc
deleted file mode 100644
index 9aaa1bbaa3d004c9f7fcb1447dfddf8ea8854cd7..0000000000000000000000000000000000000000
--- a/changelog.d/12703.misc
+++ /dev/null
@@ -1 +0,0 @@
-Convert namespace class `Codes` into a string enum.
\ No newline at end of file
diff --git a/changelog.d/12705.misc b/changelog.d/12705.misc
deleted file mode 100644
index a913d8bb85eb17b92f928b0370e202e046ddba86..0000000000000000000000000000000000000000
--- a/changelog.d/12705.misc
+++ /dev/null
@@ -1 +0,0 @@
-Complain if a federation endpoint has the `@cancellable` flag, since some of the wrapper code may not handle cancellation correctly yet.
diff --git a/changelog.d/12708.misc b/changelog.d/12708.misc
deleted file mode 100644
index aa99e7311b97a5fba43c123e82bd8bb79c4515d8..0000000000000000000000000000000000000000
--- a/changelog.d/12708.misc
+++ /dev/null
@@ -1 +0,0 @@
-Enable cancellation of `GET /rooms/$room_id/members`, `GET /rooms/$room_id/state` and `GET /rooms/$room_id/state/$event_type/*` requests.
diff --git a/changelog.d/12709.removal b/changelog.d/12709.removal
deleted file mode 100644
index 6bb03e28941f20fd4fd451d537bc6a7a167f61cf..0000000000000000000000000000000000000000
--- a/changelog.d/12709.removal
+++ /dev/null
@@ -1 +0,0 @@
-Require a body in POST requests to `/rooms/{roomId}/receipt/{receiptType}/{eventId}`, as required by the [Matrix specification](https://spec.matrix.org/v1.2/client-server-api/#post_matrixclientv3roomsroomidreceiptreceipttypeeventid). This breaks compatibility with Element Android 1.2.0 and earlier: users of those clients will be unable to send read receipts.
diff --git a/changelog.d/12711.misc b/changelog.d/12711.misc
deleted file mode 100644
index 0831ce045268533fbf47cd6cffab99ee3e48f336..0000000000000000000000000000000000000000
--- a/changelog.d/12711.misc
+++ /dev/null
@@ -1 +0,0 @@
-Optimize private read receipt filtering.
diff --git a/changelog.d/12713.bugfix b/changelog.d/12713.bugfix
deleted file mode 100644
index 91e70f102c5d639b43cddf22bafb36219bc48818..0000000000000000000000000000000000000000
--- a/changelog.d/12713.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in Synapse 1.30.0 where empty rooms could be automatically created if a monthly active users limit is set.
diff --git a/changelog.d/12715.doc b/changelog.d/12715.doc
deleted file mode 100644
index 150d78c3f63400584d34271ba1a8adbade9d0e48..0000000000000000000000000000000000000000
--- a/changelog.d/12715.doc
+++ /dev/null
@@ -1 +0,0 @@
-Fix a typo in the Media Admin API documentation.
diff --git a/changelog.d/12716.misc b/changelog.d/12716.misc
deleted file mode 100644
index b07e1b52ee7c91d398ba70e3fa0b3f3266144a69..0000000000000000000000000000000000000000
--- a/changelog.d/12716.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type annotations to increase the number of modules passing `disallow-untyped-defs`.
\ No newline at end of file
diff --git a/changelog.d/12717.misc b/changelog.d/12717.misc
deleted file mode 100644
index e793d08e5e3f2ba9d10fd806a56da6d7d7a781c9..0000000000000000000000000000000000000000
--- a/changelog.d/12717.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add some type hints to datastore.
\ No newline at end of file
diff --git a/changelog.d/12718.feature b/changelog.d/12718.feature
deleted file mode 100644
index 1056f519a4c1cffc53bea17b3377b2c1eaad8649..0000000000000000000000000000000000000000
--- a/changelog.d/12718.feature
+++ /dev/null
@@ -1 +0,0 @@
-Update [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716) implementation to process marker events from the current state to avoid markers being lost in timeline gaps for federated servers which would cause the imported history to be undiscovered.
diff --git a/changelog.d/12720.misc b/changelog.d/12720.misc
deleted file mode 100644
index 01b427f200ae164be979f90dd81c481c3da0f430..0000000000000000000000000000000000000000
--- a/changelog.d/12720.misc
+++ /dev/null
@@ -1 +0,0 @@
-Drop the logging level of status messages for the URL preview cache expiry job from INFO to DEBUG.
\ No newline at end of file
diff --git a/changelog.d/12721.bugfix b/changelog.d/12721.bugfix
deleted file mode 100644
index 6987f7ab15e1263108eaddea7d623aa6d90a6553..0000000000000000000000000000000000000000
--- a/changelog.d/12721.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix push to dismiss notifications when read on another client. Contributed by @SpiritCroc @ Beeper.
diff --git a/changelog.d/12723.misc b/changelog.d/12723.misc
deleted file mode 100644
index 4f5bffeda639e8d17156a61ff8c07cc53d7a4a49..0000000000000000000000000000000000000000
--- a/changelog.d/12723.misc
+++ /dev/null
@@ -1 +0,0 @@
-Downgrade some OIDC errors to warnings in the logs, to reduce the noise of Sentry reports.
diff --git a/changelog.d/12726.misc b/changelog.d/12726.misc
deleted file mode 100644
index b07e1b52ee7c91d398ba70e3fa0b3f3266144a69..0000000000000000000000000000000000000000
--- a/changelog.d/12726.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type annotations to increase the number of modules passing `disallow-untyped-defs`.
\ No newline at end of file
diff --git a/changelog.d/12727.doc b/changelog.d/12727.doc
deleted file mode 100644
index c41e50c85ba07ca0d89524a50a17d4abf0c4074d..0000000000000000000000000000000000000000
--- a/changelog.d/12727.doc
+++ /dev/null
@@ -1 +0,0 @@
-Update the OpenID Connect example for Keycloak to be compatible with newer versions of Keycloak. Contributed by @nhh.
diff --git a/changelog.d/12731.misc b/changelog.d/12731.misc
deleted file mode 100644
index 962100d516c10b2d1882c9ac0cea422c8a59f936..0000000000000000000000000000000000000000
--- a/changelog.d/12731.misc
+++ /dev/null
@@ -1 +0,0 @@
-Update configs used by Complement to allow more invites/3PID validations during tests.
\ No newline at end of file
diff --git a/changelog.d/12734.misc b/changelog.d/12734.misc
deleted file mode 100644
index ffbfb0d6323333b4f0208299f6f11b4797982384..0000000000000000000000000000000000000000
--- a/changelog.d/12734.misc
+++ /dev/null
@@ -1 +0,0 @@
-Tidy up and type-hint the database engine modules.
diff --git a/changelog.d/12742.doc b/changelog.d/12742.doc
deleted file mode 100644
index 0084e27a7d035e8bece994d694bf7ff8f4e3e12f..0000000000000000000000000000000000000000
--- a/changelog.d/12742.doc
+++ /dev/null
@@ -1 +0,0 @@
-Fix typo in server listener documentation.
\ No newline at end of file
diff --git a/changelog.d/12744.feature b/changelog.d/12744.feature
deleted file mode 100644
index 9836d94f8ca6e5cb6e3e0ae8e53b985fc84bb792..0000000000000000000000000000000000000000
--- a/changelog.d/12744.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add a `drop_federated_event` callback to `SpamChecker` to disregard inbound federated events before they take up much processing power, in an emergency.
diff --git a/changelog.d/12747.bugfix b/changelog.d/12747.bugfix
deleted file mode 100644
index 0fb0059237cc45e262a8be45142795b97b517665..0000000000000000000000000000000000000000
--- a/changelog.d/12747.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix poor database performance when reading the cache invalidation stream for large servers with lots of workers.
diff --git a/changelog.d/12748.doc b/changelog.d/12748.doc
deleted file mode 100644
index 996ad3a1b926b021e4e835aa64a11e16e27effd8..0000000000000000000000000000000000000000
--- a/changelog.d/12748.doc
+++ /dev/null
@@ -1 +0,0 @@
-Link to the configuration manual from the welcome page of the documentation.
diff --git a/changelog.d/12749.doc b/changelog.d/12749.doc
deleted file mode 100644
index 4560319ee43b9fee02a22fca0b444e4930e35198..0000000000000000000000000000000000000000
--- a/changelog.d/12749.doc
+++ /dev/null
@@ -1 +0,0 @@
-Fix typo in 'run_background_tasks_on' option name in configuration manual documentation.
diff --git a/changelog.d/12753.misc b/changelog.d/12753.misc
deleted file mode 100644
index e793d08e5e3f2ba9d10fd806a56da6d7d7a781c9..0000000000000000000000000000000000000000
--- a/changelog.d/12753.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add some type hints to datastore.
\ No newline at end of file
diff --git a/changelog.d/12759.doc b/changelog.d/12759.doc
deleted file mode 100644
index 45d1c9c0ca1a8de90b2706ae8405c02a9f48f7b1..0000000000000000000000000000000000000000
--- a/changelog.d/12759.doc
+++ /dev/null
@@ -1 +0,0 @@
-Add information regarding the `rc_invites` ratelimiting option to the configuration docs.
diff --git a/changelog.d/12761.doc b/changelog.d/12761.doc
deleted file mode 100644
index 2eb2c0976f1b781a50a67838c589bfa87142be30..0000000000000000000000000000000000000000
--- a/changelog.d/12761.doc
+++ /dev/null
@@ -1 +0,0 @@
-Add documentation for cancellation of request processing.
diff --git a/changelog.d/12762.misc b/changelog.d/12762.misc
deleted file mode 100644
index 990fb6fe74eb06e19d4e634f9dab45ba62094948..0000000000000000000000000000000000000000
--- a/changelog.d/12762.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix a long-standing bug where the user directory background process would fail to make forward progress if a user included a null codepoint in their display name or avatar.
diff --git a/changelog.d/12765.doc b/changelog.d/12765.doc
deleted file mode 100644
index 277b037d6b03a3dc14dd5f552ad28c1d39f723e5..0000000000000000000000000000000000000000
--- a/changelog.d/12765.doc
+++ /dev/null
@@ -1 +0,0 @@
-Recommend using docker to run tests against postgres.
diff --git a/changelog.d/12769.misc b/changelog.d/12769.misc
deleted file mode 100644
index 27bd53abe376d4a8a928cc24aa00a1b5b8687455..0000000000000000000000000000000000000000
--- a/changelog.d/12769.misc
+++ /dev/null
@@ -1 +0,0 @@
-Tweak the mypy plugin so that `@cached` can accept `on_invalidate=None`.
diff --git a/changelog.d/12770.bugfix b/changelog.d/12770.bugfix
deleted file mode 100644
index a958f9a16ba361dfa26089e0a8d9f0a96a19af0f..0000000000000000000000000000000000000000
--- a/changelog.d/12770.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Delete events from the `federation_inbound_events_staging` table when a room is purged through the admin API.
diff --git a/changelog.d/12772.misc b/changelog.d/12772.misc
deleted file mode 100644
index da66f376fe8eaa696c155fc431509df1227b738b..0000000000000000000000000000000000000000
--- a/changelog.d/12772.misc
+++ /dev/null
@@ -1 +0,0 @@
-Move methods that call `add_push_rule` to the `PushRuleStore` class.
diff --git a/changelog.d/12773.doc b/changelog.d/12773.doc
deleted file mode 100644
index 6de37165342716f1e797b3b8c76b829ae6a5aa5f..0000000000000000000000000000000000000000
--- a/changelog.d/12773.doc
+++ /dev/null
@@ -1 +0,0 @@
-Add missing user directory endpoint from the generic worker documentation. Contributed by @olmari.
\ No newline at end of file
diff --git a/changelog.d/12774.misc b/changelog.d/12774.misc
deleted file mode 100644
index 8651f2e0e0624cb9568954c9b88d1f83a23be063..0000000000000000000000000000000000000000
--- a/changelog.d/12774.misc
+++ /dev/null
@@ -1 +0,0 @@
-Make handling of federation Authorization header (more) compliant with RFC7230.
diff --git a/changelog.d/12775.misc b/changelog.d/12775.misc
deleted file mode 100644
index eac326cde3a7c27283ba3b2e93692cc4c499a7c4..0000000000000000000000000000000000000000
--- a/changelog.d/12775.misc
+++ /dev/null
@@ -1 +0,0 @@
-Refactor `resolve_state_groups_for_events` to not pull out full state when no state resolution happens.
\ No newline at end of file
diff --git a/changelog.d/12776.doc b/changelog.d/12776.doc
deleted file mode 100644
index c00489a8ce1416eeffcb8f441a1236992f6e75a0..0000000000000000000000000000000000000000
--- a/changelog.d/12776.doc
+++ /dev/null
@@ -1,2 +0,0 @@
-Add additional info to documentation of config option `cache_autotuning`.
-
diff --git a/changelog.d/12777.doc b/changelog.d/12777.doc
deleted file mode 100644
index cc9c07704d02c846d0cc4690c2151a24df4074af..0000000000000000000000000000000000000000
--- a/changelog.d/12777.doc
+++ /dev/null
@@ -1,2 +0,0 @@
-Update configuration manual documentation to document size-related suffixes.
-
diff --git a/changelog.d/12779.bugfix b/changelog.d/12779.bugfix
deleted file mode 100644
index 7cf7a1f65f24e62f9f08e0295af4b56f422f0259..0000000000000000000000000000000000000000
--- a/changelog.d/12779.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Give a meaningful error message when a client tries to create a room with an invalid alias localpart.
\ No newline at end of file
diff --git a/changelog.d/12781.misc b/changelog.d/12781.misc
deleted file mode 100644
index 8a045716172aea229623904d5fe5300e49b4b9bc..0000000000000000000000000000000000000000
--- a/changelog.d/12781.misc
+++ /dev/null
@@ -1 +0,0 @@
-Do not keep going if there are 5 back-to-back background update failures.
\ No newline at end of file
diff --git a/changelog.d/12783.misc b/changelog.d/12783.misc
deleted file mode 100644
index 97575608bb8b2e35c2ac72e1428e922a8dd6c241..0000000000000000000000000000000000000000
--- a/changelog.d/12783.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix federation when using the demo scripts.
diff --git a/changelog.d/12785.doc b/changelog.d/12785.doc
deleted file mode 100644
index 5209dfeb053e56e0132ac04a51943bc7565ba45a..0000000000000000000000000000000000000000
--- a/changelog.d/12785.doc
+++ /dev/null
@@ -1 +0,0 @@
-Fix invalid YAML syntax in the example documentation for the `url_preview_accept_language` config option.
diff --git a/changelog.d/12786.feature b/changelog.d/12786.feature
deleted file mode 100644
index c90ddd411ee2e159cd8b6b9b0b727b153c957b67..0000000000000000000000000000000000000000
--- a/changelog.d/12786.feature
+++ /dev/null
@@ -1 +0,0 @@
-Implement [MSC3818: Copy room type on upgrade](https://github.com/matrix-org/matrix-spec-proposals/pull/3818).
diff --git a/changelog.d/12789.misc b/changelog.d/12789.misc
deleted file mode 100644
index 3398d00110c8666b96906f69bd371f9e88ddb22c..0000000000000000000000000000000000000000
--- a/changelog.d/12789.misc
+++ /dev/null
@@ -1 +0,0 @@
-The `hash_password` script now fails when it is called without specifying a config file.
diff --git a/changelog.d/12790.misc b/changelog.d/12790.misc
deleted file mode 100644
index b78156cf4e1d4131b22575d51725f097e40d6f68..0000000000000000000000000000000000000000
--- a/changelog.d/12790.misc
+++ /dev/null
@@ -1 +0,0 @@
-Simplify `disallow_untyped_defs` config in `mypy.ini`.
diff --git a/changelog.d/12791.misc b/changelog.d/12791.misc
deleted file mode 100644
index b6e92b7eafad8fb3e6412e413bc3fd67fc80698c..0000000000000000000000000000000000000000
--- a/changelog.d/12791.misc
+++ /dev/null
@@ -1 +0,0 @@
-Update EventContext `get_current_event_ids` and `get_prev_event_ids` to accept state filters and update calls where possible.
diff --git a/changelog.d/12792.feature b/changelog.d/12792.feature
deleted file mode 100644
index 4778b8a394d4b228ddc439ae75b18090d4609bb0..0000000000000000000000000000000000000000
--- a/changelog.d/12792.feature
+++ /dev/null
@@ -1 +0,0 @@
-Implement [MSC3818: Copy room type on upgrade](https://github.com/matrix-org/matrix-spec-proposals/pull/3818).
\ No newline at end of file
diff --git a/changelog.d/12794.bugfix b/changelog.d/12794.bugfix
deleted file mode 100644
index 2d1a2838e128c9f4c4536e1fdaac70af7f7856d3..0000000000000000000000000000000000000000
--- a/changelog.d/12794.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in 1.43.0 where a file (`providers.json`) was never closed. Contributed by @arkamar.
diff --git a/changelog.d/12803.bugfix b/changelog.d/12803.bugfix
deleted file mode 100644
index 6ddd3d24e05f65477bb384f4df23c0937ae9c4b9..0000000000000000000000000000000000000000
--- a/changelog.d/12803.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a long-standing bug where finished log contexts would be re-started when failing to contact remote homeservers.
diff --git a/changelog.d/12808.feature b/changelog.d/12808.feature
deleted file mode 100644
index 561c8b9d34a4be3c47f4be47c8ebeab45d327ff1..0000000000000000000000000000000000000000
--- a/changelog.d/12808.feature
+++ /dev/null
@@ -1 +0,0 @@
-Update to `check_event_for_spam`. 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).
\ No newline at end of file
diff --git a/changelog.d/12809.feature b/changelog.d/12809.feature
deleted file mode 100644
index b989e0d208c494505a43ff6586197816c14085ad..0000000000000000000000000000000000000000
--- a/changelog.d/12809.feature
+++ /dev/null
@@ -1 +0,0 @@
-Send `USER_IP` commands on a different Redis channel, in order to reduce traffic to workers that do not process these commands.
\ No newline at end of file
diff --git a/changelog.d/12818.misc b/changelog.d/12818.misc
deleted file mode 100644
index 2f9dacc21dd9656124703f1da670e1fbda3e1aa4..0000000000000000000000000000000000000000
--- a/changelog.d/12818.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove Caddy from the Synapse workers image used in Complement.
\ No newline at end of file
diff --git a/changelog.d/12819.misc b/changelog.d/12819.misc
deleted file mode 100644
index 7a03102a632d1f163ae1669934be1bfe652fdb8b..0000000000000000000000000000000000000000
--- a/changelog.d/12819.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add Complement's shared registration secret to the Complement worker image. This fixes tests that depend on it.
\ No newline at end of file
diff --git a/changelog.d/12823.bugfix b/changelog.d/12823.bugfix
deleted file mode 100644
index 1a1f5957e712eb661075e4cd9273fff139a23edf..0000000000000000000000000000000000000000
--- a/changelog.d/12823.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug, introduced in Synapse 1.21.0, that led to media thumbnails being unusable before the index has been added in the background.
diff --git a/changelog.d/12826.misc b/changelog.d/12826.misc
deleted file mode 100644
index f5e91f1ed5928827229eb65bcc4588cbf1ea145c..0000000000000000000000000000000000000000
--- a/changelog.d/12826.misc
+++ /dev/null
@@ -1 +0,0 @@
-Support registering Application Services when running with workers under Complement.
\ No newline at end of file
diff --git a/changelog.d/12833.misc b/changelog.d/12833.misc
deleted file mode 100644
index fad5df1afa3473dc9b69ab649e69e8d96a7f9bd6..0000000000000000000000000000000000000000
--- a/changelog.d/12833.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add some type hints to test files.
\ No newline at end of file
diff --git a/changelog.d/12842.misc b/changelog.d/12842.misc
deleted file mode 100644
index cec3f97d86fd0ceeba07687ae2700176d87cf8a3..0000000000000000000000000000000000000000
--- a/changelog.d/12842.misc
+++ /dev/null
@@ -1 +0,0 @@
-Disable 'faster room join' Complement tests when testing against Synapse with workers.
\ No newline at end of file
diff --git a/changelog.d/12853.docker b/changelog.d/12853.docker
deleted file mode 100644
index cad10a79cc826e0c9ec764fb2bf4a6885f1e5dfe..0000000000000000000000000000000000000000
--- a/changelog.d/12853.docker
+++ /dev/null
@@ -1 +0,0 @@
-Fix the docker file after a dependency update.
diff --git a/debian/changelog b/debian/changelog
index dda342a630dba659401dca527999902b4db8d406..6eba9b3a1bbdf7cb17f3a6536906a6c4be9cf709 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+matrix-synapse-py3 (1.60.0~rc1) stable; urgency=medium
+
+  * New Synapse release 1.60.0rc1.
+
+ -- Synapse Packaging team <packages@matrix.org>  Tue, 24 May 2022 12:05:01 +0100
+
 matrix-synapse-py3 (1.59.1) stable; urgency=medium
 
   * New Synapse release 1.59.1.
diff --git a/pyproject.toml b/pyproject.toml
index 5a5a2eaba73d78802b88b1798c8a959fc7a0f345..9359d211f79e4fe845c24d68131f0668c309218a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -54,7 +54,7 @@ skip_gitignore = true
 
 [tool.poetry]
 name = "matrix-synapse"
-version = "1.59.1"
+version = "1.60.0rc1"
 description = "Homeserver for the Matrix decentralised comms protocol"
 authors = ["Matrix.org Team and Contributors <packages@matrix.org>"]
 license = "Apache-2.0"