diff --git a/CHANGES.md b/CHANGES.md
index 38a0814bbf535f81d4b2a22dc89f5b3169f04fe1..6066a38c5a7b2d1f5c118a96661d92de72051c8c 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,103 @@
+Synapse 1.22.0rc1 (2020-10-22)
+==============================
+
+Features
+--------
+
+- Add a configuration option for always using the "userinfo endpoint" for OpenID Connect. This fixes support for some identity providers, e.g. GitLab. Contributed by Benjamin Koch. ([\#7658](https://github.com/matrix-org/synapse/issues/7658))
+- Add ability for `ThirdPartyEventRules` modules to query and manipulate whether a room is in the public rooms directory. ([\#8292](https://github.com/matrix-org/synapse/issues/8292), [\#8467](https://github.com/matrix-org/synapse/issues/8467))
+- Add support for olm fallback keys ([MSC2732](https://github.com/matrix-org/matrix-doc/pull/2732)). ([\#8312](https://github.com/matrix-org/synapse/issues/8312), [\#8501](https://github.com/matrix-org/synapse/issues/8501))
+- Add support for running background tasks in a separate worker process. ([\#8369](https://github.com/matrix-org/synapse/issues/8369), [\#8458](https://github.com/matrix-org/synapse/issues/8458), [\#8489](https://github.com/matrix-org/synapse/issues/8489), [\#8513](https://github.com/matrix-org/synapse/issues/8513), [\#8544](https://github.com/matrix-org/synapse/issues/8544), [\#8599](https://github.com/matrix-org/synapse/issues/8599))
+- Add support for device dehydration ([MSC2697](https://github.com/matrix-org/matrix-doc/pull/2697)). ([\#8380](https://github.com/matrix-org/synapse/issues/8380))
+- Add support for [MSC2409](https://github.com/matrix-org/matrix-doc/pull/2409), which allows sending typing, read receipts, and presence events to appservices. ([\#8437](https://github.com/matrix-org/synapse/issues/8437), [\#8590](https://github.com/matrix-org/synapse/issues/8590))
+- Change default room version to "6", per [MSC2788](https://github.com/matrix-org/matrix-doc/pull/2788). ([\#8461](https://github.com/matrix-org/synapse/issues/8461))
+- Add the ability to send non-membership events into a room via the `ModuleApi`. ([\#8479](https://github.com/matrix-org/synapse/issues/8479))
+- Increase default upload size limit from 10M to 50M. Contributed by @Akkowicz. ([\#8502](https://github.com/matrix-org/synapse/issues/8502))
+- Add support for modifying event content in `ThirdPartyRules` modules. ([\#8535](https://github.com/matrix-org/synapse/issues/8535), [\#8564](https://github.com/matrix-org/synapse/issues/8564))
+
+
+Bugfixes
+--------
+
+- Fix a longstanding bug where invalid ignored users in account data could break clients. ([\#8454](https://github.com/matrix-org/synapse/issues/8454))
+- Fix a bug where backfilling a room with an event that was missing the `redacts` field would break. ([\#8457](https://github.com/matrix-org/synapse/issues/8457))
+- Don't attempt to respond to some requests if the client has already disconnected. ([\#8465](https://github.com/matrix-org/synapse/issues/8465))
+- Fix message duplication if something goes wrong after persisting the event. ([\#8476](https://github.com/matrix-org/synapse/issues/8476))
+- Fix incremental sync returning an incorrect `prev_batch` token in timeline section, which when used to paginate returned events that were included in the incremental sync. Broken since v0.16.0. ([\#8486](https://github.com/matrix-org/synapse/issues/8486))
+- Expose the `uk.half-shot.msc2778.login.application_service` to clients from the login API. This feature was added in v1.21.0, but was not exposed as a potential login flow. ([\#8504](https://github.com/matrix-org/synapse/issues/8504))
+- Fix error code for `/profile/{userId}/displayname` to be `M_BAD_JSON`. ([\#8517](https://github.com/matrix-org/synapse/issues/8517))
+- Fix a bug introduced in v1.7.0 that could cause Synapse to insert values from non-state `m.room.retention` events into the `room_retention` database table. ([\#8527](https://github.com/matrix-org/synapse/issues/8527))
+- Fix not sending events over federation when using sharded event writers. ([\#8536](https://github.com/matrix-org/synapse/issues/8536))
+- Fix a long standing bug where email notifications for encrypted messages were blank. ([\#8545](https://github.com/matrix-org/synapse/issues/8545))
+- Fix increase in the number of `There was no active span...` errors logged when using OpenTracing. ([\#8567](https://github.com/matrix-org/synapse/issues/8567))
+- Fix a bug that prevented errors encountered during execution of the `synapse_port_db` from being correctly printed. ([\#8585](https://github.com/matrix-org/synapse/issues/8585))
+- Fix appservice transactions to only include a maximum of 100 persistent and 100 ephemeral events. ([\#8606](https://github.com/matrix-org/synapse/issues/8606))
+
+
+Updates to the Docker image
+---------------------------
+
+- Added multi-arch support (arm64,arm/v7) for the docker images. Contributed by @maquis196. ([\#7921](https://github.com/matrix-org/synapse/issues/7921))
+- Add support for passing commandline args to the synapse process. Contributed by @samuel-p. ([\#8390](https://github.com/matrix-org/synapse/issues/8390))
+
+
+Improved Documentation
+----------------------
+
+- Update the directions for using the manhole with coroutines. ([\#8462](https://github.com/matrix-org/synapse/issues/8462))
+- Improve readme by adding new shield.io badges. ([\#8493](https://github.com/matrix-org/synapse/issues/8493))
+- Added note about docker in manhole.md regarding which ip address to bind to. Contributed by @Maquis196. ([\#8526](https://github.com/matrix-org/synapse/issues/8526))
+- Document the new behaviour of the `allowed_lifetime_min` and `allowed_lifetime_max` settings in the room retention configuration. ([\#8529](https://github.com/matrix-org/synapse/issues/8529))
+
+
+Deprecations and Removals
+-------------------------
+
+- Drop unused `device_max_stream_id` table. ([\#8589](https://github.com/matrix-org/synapse/issues/8589))
+
+
+Internal Changes
+----------------
+
+- Check for unreachable code with mypy. ([\#8432](https://github.com/matrix-org/synapse/issues/8432))
+- Add unit test for event persister sharding. ([\#8433](https://github.com/matrix-org/synapse/issues/8433))
+- Allow events to be sent to clients sooner when using sharded event persisters. ([\#8439](https://github.com/matrix-org/synapse/issues/8439), [\#8488](https://github.com/matrix-org/synapse/issues/8488), [\#8496](https://github.com/matrix-org/synapse/issues/8496), [\#8499](https://github.com/matrix-org/synapse/issues/8499))
+- Configure `public_baseurl` when using demo scripts. ([\#8443](https://github.com/matrix-org/synapse/issues/8443))
+- Add SQL logging on queries that happen during startup. ([\#8448](https://github.com/matrix-org/synapse/issues/8448))
+- Speed up unit tests when using PostgreSQL. ([\#8450](https://github.com/matrix-org/synapse/issues/8450))
+- Remove redundant database loads of stream_ordering for events we already have. ([\#8452](https://github.com/matrix-org/synapse/issues/8452))
+- Reduce inconsistencies between codepaths for membership and non-membership events. ([\#8463](https://github.com/matrix-org/synapse/issues/8463))
+- Combine `SpamCheckerApi` with the more generic `ModuleApi`. ([\#8464](https://github.com/matrix-org/synapse/issues/8464))
+- Additional testing for `ThirdPartyEventRules`. ([\#8468](https://github.com/matrix-org/synapse/issues/8468))
+- Add `-d` option to `./scripts-dev/lint.sh` to lint files that have changed since the last git commit. ([\#8472](https://github.com/matrix-org/synapse/issues/8472))
+- Unblacklist some sytests. ([\#8474](https://github.com/matrix-org/synapse/issues/8474))
+- Include the log level in the phone home stats. ([\#8477](https://github.com/matrix-org/synapse/issues/8477))
+- Remove outdated sphinx documentation, scripts and configuration. ([\#8480](https://github.com/matrix-org/synapse/issues/8480))
+- Clarify error message when plugin config parsers raise an error. ([\#8492](https://github.com/matrix-org/synapse/issues/8492))
+- Remove the deprecated `Handlers` object. ([\#8494](https://github.com/matrix-org/synapse/issues/8494))
+- Fix a threadsafety bug in unit tests. ([\#8497](https://github.com/matrix-org/synapse/issues/8497))
+- Add user agent to user_daily_visits table. ([\#8503](https://github.com/matrix-org/synapse/issues/8503))
+- Add type hints to various parts of the code base. ([\#8407](https://github.com/matrix-org/synapse/issues/8407), [\#8505](https://github.com/matrix-org/synapse/issues/8505), [\#8507](https://github.com/matrix-org/synapse/issues/8507), [\#8547](https://github.com/matrix-org/synapse/issues/8547), [\#8562](https://github.com/matrix-org/synapse/issues/8562), [\#8609](https://github.com/matrix-org/synapse/issues/8609))
+- Remove unused code from the test framework. ([\#8514](https://github.com/matrix-org/synapse/issues/8514))
+- Apply some internal fixes to the `HomeServer` class to make its code more idiomatic and statically-verifiable. ([\#8515](https://github.com/matrix-org/synapse/issues/8515))
+- Factor out common code between `RoomMemberHandler._locally_reject_invite` and `EventCreationHandler.create_event`. ([\#8537](https://github.com/matrix-org/synapse/issues/8537))
+- Improve database performance by executing more queries without starting transactions. ([\#8542](https://github.com/matrix-org/synapse/issues/8542))
+- Rename `Cache` to `DeferredCache`, to better reflect its purpose. ([\#8548](https://github.com/matrix-org/synapse/issues/8548))
+- Move metric registration code down into `LruCache`. ([\#8561](https://github.com/matrix-org/synapse/issues/8561), [\#8591](https://github.com/matrix-org/synapse/issues/8591))
+- Replace `DeferredCache` with the lighter-weight `LruCache` where possible. ([\#8563](https://github.com/matrix-org/synapse/issues/8563))
+- Add virtualenv-generated folders to `.gitignore`. ([\#8566](https://github.com/matrix-org/synapse/issues/8566))
+- Add `get_immediate` method to `DeferredCache`. ([\#8568](https://github.com/matrix-org/synapse/issues/8568))
+- Fix mypy not properly checking across the codebase, additionally, fix a typing assertion error in `handlers/auth.py`. ([\#8569](https://github.com/matrix-org/synapse/issues/8569))
+- Fix `synmark` benchmark runner. ([\#8571](https://github.com/matrix-org/synapse/issues/8571))
+- Modify `DeferredCache.get()` to return `Deferred`s instead of `ObservableDeferred`s. ([\#8572](https://github.com/matrix-org/synapse/issues/8572))
+- Adjust a protocol-type definition to fit `sqlite3` assertions. ([\#8577](https://github.com/matrix-org/synapse/issues/8577))
+- Support macOS on the `synmark` benchmark runner. ([\#8578](https://github.com/matrix-org/synapse/issues/8578))
+- Update `mypy` static type checker to 0.790. ([\#8583](https://github.com/matrix-org/synapse/issues/8583), [\#8600](https://github.com/matrix-org/synapse/issues/8600))
+- Re-organize the structured logging code to separate the TCP transport handling from the JSON formatting. ([\#8587](https://github.com/matrix-org/synapse/issues/8587))
+- Remove extraneous unittest logging decorators from unit tests. ([\#8592](https://github.com/matrix-org/synapse/issues/8592))
+- Minor optimisations in caching code. ([\#8593](https://github.com/matrix-org/synapse/issues/8593), [\#8594](https://github.com/matrix-org/synapse/issues/8594))
+
+
 Synapse 1.21.2 (2020-10-15)
 ===========================
 
diff --git a/changelog.d/7658.feature b/changelog.d/7658.feature
deleted file mode 100644
index fbf345988d356aee5a3c43346624ce013992dbcf..0000000000000000000000000000000000000000
--- a/changelog.d/7658.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add a configuration option for always using the "userinfo endpoint" for OpenID Connect. This fixes support for some identity providers, e.g. GitLab. Contributed by Benjamin Koch.
diff --git a/changelog.d/7921.docker b/changelog.d/7921.docker
deleted file mode 100644
index 7cecd67c6a2676a999ccaabaa5fa435200fa5cd1..0000000000000000000000000000000000000000
--- a/changelog.d/7921.docker
+++ /dev/null
@@ -1 +0,0 @@
-Added multi-arch support (arm64,arm/v7) for the docker images. Contributed by @maquis196.
diff --git a/changelog.d/8292.feature b/changelog.d/8292.feature
deleted file mode 100644
index 6d0335e2c827fbb0ae34c121d405a27c2d0c2f86..0000000000000000000000000000000000000000
--- a/changelog.d/8292.feature
+++ /dev/null
@@ -1 +0,0 @@
-Allow `ThirdPartyEventRules` modules to query and manipulate whether a room is in the public rooms directory.
\ No newline at end of file
diff --git a/changelog.d/8312.feature b/changelog.d/8312.feature
deleted file mode 100644
index 222a1b032a4d66bb2305b467d99675fa8ef82507..0000000000000000000000000000000000000000
--- a/changelog.d/8312.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add support for olm fallback keys ([MSC2732](https://github.com/matrix-org/matrix-doc/pull/2732)).
\ No newline at end of file
diff --git a/changelog.d/8369.feature b/changelog.d/8369.feature
deleted file mode 100644
index 542993110bc80386980b59af8a4a5e4ed4b1ebd0..0000000000000000000000000000000000000000
--- a/changelog.d/8369.feature
+++ /dev/null
@@ -1 +0,0 @@
-Allow running background tasks in a separate worker process.
diff --git a/changelog.d/8380.feature b/changelog.d/8380.feature
deleted file mode 100644
index 05ccea19dce4fb30fad45aa2a8fcd2d3fd7482f2..0000000000000000000000000000000000000000
--- a/changelog.d/8380.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add support for device dehydration ([MSC2697](https://github.com/matrix-org/matrix-doc/pull/2697)).
diff --git a/changelog.d/8390.docker b/changelog.d/8390.docker
deleted file mode 100644
index f71b8e4bbf2d95340c5ff88cf1030e259ff8b194..0000000000000000000000000000000000000000
--- a/changelog.d/8390.docker
+++ /dev/null
@@ -1 +0,0 @@
-Add support for passing commandline args to the synapse process. Contributed by @samuel-p.
diff --git a/changelog.d/8407.misc b/changelog.d/8407.misc
deleted file mode 100644
index d37002d75bf1714c295051067c66e70a33c964bd..0000000000000000000000000000000000000000
--- a/changelog.d/8407.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add typing information to the device handler.
diff --git a/changelog.d/8432.misc b/changelog.d/8432.misc
deleted file mode 100644
index 01fdad4caf6a880e393c52086bb0015b62538420..0000000000000000000000000000000000000000
--- a/changelog.d/8432.misc
+++ /dev/null
@@ -1 +0,0 @@
-Check for unreachable code with mypy.
diff --git a/changelog.d/8433.misc b/changelog.d/8433.misc
deleted file mode 100644
index 05f8b5bbf41e2a8207e9ce88bf5e1ec5393dd11c..0000000000000000000000000000000000000000
--- a/changelog.d/8433.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add unit test for event persister sharding.
diff --git a/changelog.d/8437.feature b/changelog.d/8437.feature
deleted file mode 100644
index 4abcccb326e04942354c0e641508f55c8ec8c17f..0000000000000000000000000000000000000000
--- a/changelog.d/8437.feature
+++ /dev/null
@@ -1 +0,0 @@
-Implement [MSC2409](https://github.com/matrix-org/matrix-doc/pull/2409) to send typing, read receipts, and presence events to appservices.
diff --git a/changelog.d/8439.misc b/changelog.d/8439.misc
deleted file mode 100644
index 237cb3b31135ea88f47c81eaf113d725e8c5633d..0000000000000000000000000000000000000000
--- a/changelog.d/8439.misc
+++ /dev/null
@@ -1 +0,0 @@
-Allow events to be sent to clients sooner when using sharded event persisters.
diff --git a/changelog.d/8443.misc b/changelog.d/8443.misc
deleted file mode 100644
index 633598e6b3027ebe316f359a2c7548071fcb747c..0000000000000000000000000000000000000000
--- a/changelog.d/8443.misc
+++ /dev/null
@@ -1 +0,0 @@
-Configure `public_baseurl` when using demo scripts.
diff --git a/changelog.d/8448.misc b/changelog.d/8448.misc
deleted file mode 100644
index 5ddda1803b9b6f2083cf1f9b8d6efbc009860a11..0000000000000000000000000000000000000000
--- a/changelog.d/8448.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add SQL logging on queries that happen during startup.
diff --git a/changelog.d/8450.misc b/changelog.d/8450.misc
deleted file mode 100644
index 4e04c523abef007468d7cb7b70d73388f8dda3fb..0000000000000000000000000000000000000000
--- a/changelog.d/8450.misc
+++ /dev/null
@@ -1 +0,0 @@
-Speed up unit tests when using PostgreSQL.
diff --git a/changelog.d/8452.misc b/changelog.d/8452.misc
deleted file mode 100644
index 8288d91c78b1342bcacc33c793ed3748bd818842..0000000000000000000000000000000000000000
--- a/changelog.d/8452.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove redundant databae loads of stream_ordering for events we already have.
diff --git a/changelog.d/8454.bugfix b/changelog.d/8454.bugfix
deleted file mode 100644
index c06d490b6f152ffc835c431f3fdb0fa10e9f1a14..0000000000000000000000000000000000000000
--- a/changelog.d/8454.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a longstanding bug where invalid ignored users in account data could break clients.
diff --git a/changelog.d/8457.bugfix b/changelog.d/8457.bugfix
deleted file mode 100644
index 545b06d180c1a5032c5567d0911101b9650aa6a5..0000000000000000000000000000000000000000
--- a/changelog.d/8457.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug where backfilling a room with an event that was missing the `redacts` field would break.
diff --git a/changelog.d/8458.feature b/changelog.d/8458.feature
deleted file mode 100644
index 542993110bc80386980b59af8a4a5e4ed4b1ebd0..0000000000000000000000000000000000000000
--- a/changelog.d/8458.feature
+++ /dev/null
@@ -1 +0,0 @@
-Allow running background tasks in a separate worker process.
diff --git a/changelog.d/8461.feature b/changelog.d/8461.feature
deleted file mode 100644
index 3665d670e1178f55d4a0d83f74be2d51718da94d..0000000000000000000000000000000000000000
--- a/changelog.d/8461.feature
+++ /dev/null
@@ -1 +0,0 @@
-Change default room version to "6", per [MSC2788](https://github.com/matrix-org/matrix-doc/pull/2788).
diff --git a/changelog.d/8462.doc b/changelog.d/8462.doc
deleted file mode 100644
index cf84db6db7f2f4f89b6473e45e40bdb39987fd8f..0000000000000000000000000000000000000000
--- a/changelog.d/8462.doc
+++ /dev/null
@@ -1 +0,0 @@
-Update the directions for using the manhole with coroutines.
diff --git a/changelog.d/8463.misc b/changelog.d/8463.misc
deleted file mode 100644
index 040c9bb90f12ea87ff563e8d47668271fabb4dca..0000000000000000000000000000000000000000
--- a/changelog.d/8463.misc
+++ /dev/null
@@ -1 +0,0 @@
-Reduce inconsistencies between codepaths for membership and non-membership events.
diff --git a/changelog.d/8464.misc b/changelog.d/8464.misc
deleted file mode 100644
index a552e88f9fc827d487ef9fbf84512992170b2298..0000000000000000000000000000000000000000
--- a/changelog.d/8464.misc
+++ /dev/null
@@ -1 +0,0 @@
-Combine `SpamCheckerApi` with the more generic `ModuleApi`.
diff --git a/changelog.d/8465.bugfix b/changelog.d/8465.bugfix
deleted file mode 100644
index 73f895b268795daa85ac38d014a488872696ce10..0000000000000000000000000000000000000000
--- a/changelog.d/8465.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Don't attempt to respond to some requests if the client has already disconnected.
\ No newline at end of file
diff --git a/changelog.d/8467.feature b/changelog.d/8467.feature
deleted file mode 100644
index 6d0335e2c827fbb0ae34c121d405a27c2d0c2f86..0000000000000000000000000000000000000000
--- a/changelog.d/8467.feature
+++ /dev/null
@@ -1 +0,0 @@
-Allow `ThirdPartyEventRules` modules to query and manipulate whether a room is in the public rooms directory.
\ No newline at end of file
diff --git a/changelog.d/8468.misc b/changelog.d/8468.misc
deleted file mode 100644
index 32ba991e64219f62d98234b3ba2a3a405ef5d924..0000000000000000000000000000000000000000
--- a/changelog.d/8468.misc
+++ /dev/null
@@ -1 +0,0 @@
-Additional testing for `ThirdPartyEventRules`.
diff --git a/changelog.d/8472.misc b/changelog.d/8472.misc
deleted file mode 100644
index 880f3f5e14fa89cf3954fe9fd32d5907a476e1a0..0000000000000000000000000000000000000000
--- a/changelog.d/8472.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add `-d` option to `./scripts-dev/lint.sh` to lint files that have changed since the last git commit.
\ No newline at end of file
diff --git a/changelog.d/8474.misc b/changelog.d/8474.misc
deleted file mode 100644
index 65e329a6e3e3400254756db593b6467490e34ba7..0000000000000000000000000000000000000000
--- a/changelog.d/8474.misc
+++ /dev/null
@@ -1 +0,0 @@
-Unblacklist some sytests.
diff --git a/changelog.d/8476.bugfix b/changelog.d/8476.bugfix
deleted file mode 100644
index 993a269979af0549cc152758809a3443c831cb1b..0000000000000000000000000000000000000000
--- a/changelog.d/8476.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix message duplication if something goes wrong after persisting the event.
diff --git a/changelog.d/8477.misc b/changelog.d/8477.misc
deleted file mode 100644
index 2ee1606b6e3242a51238155cb2a1c3ce71318237..0000000000000000000000000000000000000000
--- a/changelog.d/8477.misc
+++ /dev/null
@@ -1 +0,0 @@
-Include the log level in the phone home stats.
diff --git a/changelog.d/8479.feature b/changelog.d/8479.feature
deleted file mode 100644
index 11adeec8a987770a3446502343c573d3ffd3deea..0000000000000000000000000000000000000000
--- a/changelog.d/8479.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add the ability to send non-membership events into a room via the `ModuleApi`.
\ No newline at end of file
diff --git a/changelog.d/8480.misc b/changelog.d/8480.misc
deleted file mode 100644
index 81633af2965e7c46032fe9aac0bb512fd485573a..0000000000000000000000000000000000000000
--- a/changelog.d/8480.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove outdated sphinx documentation, scripts and configuration.
\ No newline at end of file
diff --git a/changelog.d/8486.bugfix b/changelog.d/8486.bugfix
deleted file mode 100644
index 63fc091ba6749508d7a780c18ffac36ef688e8cc..0000000000000000000000000000000000000000
--- a/changelog.d/8486.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix incremental sync returning an incorrect `prev_batch` token in timeline section, which when used to paginate returned events that were included in the incremental sync. Broken since v0.16.0.
diff --git a/changelog.d/8488.misc b/changelog.d/8488.misc
deleted file mode 100644
index 237cb3b31135ea88f47c81eaf113d725e8c5633d..0000000000000000000000000000000000000000
--- a/changelog.d/8488.misc
+++ /dev/null
@@ -1 +0,0 @@
-Allow events to be sent to clients sooner when using sharded event persisters.
diff --git a/changelog.d/8489.feature b/changelog.d/8489.feature
deleted file mode 100644
index 22591870a49fd30c05a63e1ee7144c88ddba695a..0000000000000000000000000000000000000000
--- a/changelog.d/8489.feature
+++ /dev/null
@@ -1 +0,0 @@
- Allow running background tasks in a separate worker process.
diff --git a/changelog.d/8492.misc b/changelog.d/8492.misc
deleted file mode 100644
index a344aee791b281ec458e78fca414e5b228c991a7..0000000000000000000000000000000000000000
--- a/changelog.d/8492.misc
+++ /dev/null
@@ -1 +0,0 @@
-Clarify error message when plugin config parsers raise an error.
diff --git a/changelog.d/8493.doc b/changelog.d/8493.doc
deleted file mode 100644
index 26797cd99e3b8c7a4c5a9a002707e2f4b207c6d9..0000000000000000000000000000000000000000
--- a/changelog.d/8493.doc
+++ /dev/null
@@ -1 +0,0 @@
-Improve readme by adding new shield.io badges.
diff --git a/changelog.d/8494.misc b/changelog.d/8494.misc
deleted file mode 100644
index 6e56c6b8548c41483bd1c2c084650c1e2a6cd871..0000000000000000000000000000000000000000
--- a/changelog.d/8494.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove the deprecated `Handlers` object.
diff --git a/changelog.d/8496.misc b/changelog.d/8496.misc
deleted file mode 100644
index 237cb3b31135ea88f47c81eaf113d725e8c5633d..0000000000000000000000000000000000000000
--- a/changelog.d/8496.misc
+++ /dev/null
@@ -1 +0,0 @@
-Allow events to be sent to clients sooner when using sharded event persisters.
diff --git a/changelog.d/8497.misc b/changelog.d/8497.misc
deleted file mode 100644
index 8bc05e8df63b602f82cd6acb64ccd812cfb87cea..0000000000000000000000000000000000000000
--- a/changelog.d/8497.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix a threadsafety bug in unit tests.
diff --git a/changelog.d/8499.misc b/changelog.d/8499.misc
deleted file mode 100644
index 237cb3b31135ea88f47c81eaf113d725e8c5633d..0000000000000000000000000000000000000000
--- a/changelog.d/8499.misc
+++ /dev/null
@@ -1 +0,0 @@
-Allow events to be sent to clients sooner when using sharded event persisters.
diff --git a/changelog.d/8501.feature b/changelog.d/8501.feature
deleted file mode 100644
index 5220ddd4825241aa0316ed856e2c18c561dbcd33..0000000000000000000000000000000000000000
--- a/changelog.d/8501.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add support for olm fallback keys ([MSC2732](https://github.com/matrix-org/matrix-doc/pull/2732)).
diff --git a/changelog.d/8502.feature b/changelog.d/8502.feature
deleted file mode 100644
index faab8d30422dcf87046fb637edd9aa0a3c745be6..0000000000000000000000000000000000000000
--- a/changelog.d/8502.feature
+++ /dev/null
@@ -1 +0,0 @@
-Increase default upload size limit from 10M to 50M. Contributed by @Akkowicz.
diff --git a/changelog.d/8503.misc b/changelog.d/8503.misc
deleted file mode 100644
index edb1be8aa8e9f07e8b7e3797f6d5742bd1973fa0..0000000000000000000000000000000000000000
--- a/changelog.d/8503.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add user agent to user_daily_visits table.
diff --git a/changelog.d/8504.bugfix b/changelog.d/8504.bugfix
deleted file mode 100644
index 2bd0dbb8b46443e6d5a401931501b5e3fdbd6539..0000000000000000000000000000000000000000
--- a/changelog.d/8504.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Expose the `uk.half-shot.msc2778.login.application_service` to clients from the login API. This feature was added in v1.21.0, but was not exposed as a potential login flow.
diff --git a/changelog.d/8505.misc b/changelog.d/8505.misc
deleted file mode 100644
index 5aa5c113bd784eb35b10ffc4548f1b4079f5949c..0000000000000000000000000000000000000000
--- a/changelog.d/8505.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type hints to various parts of the code base.
diff --git a/changelog.d/8507.misc b/changelog.d/8507.misc
deleted file mode 100644
index 724da8a9960e1d5d44a7d433d60d7d544e1a1560..0000000000000000000000000000000000000000
--- a/changelog.d/8507.misc
+++ /dev/null
@@ -1 +0,0 @@
- Add type hints to various parts of the code base.
diff --git a/changelog.d/8513.feature b/changelog.d/8513.feature
deleted file mode 100644
index 542993110bc80386980b59af8a4a5e4ed4b1ebd0..0000000000000000000000000000000000000000
--- a/changelog.d/8513.feature
+++ /dev/null
@@ -1 +0,0 @@
-Allow running background tasks in a separate worker process.
diff --git a/changelog.d/8514.misc b/changelog.d/8514.misc
deleted file mode 100644
index 0e7ac4f2207d32c46280d063ecf1cba68ff6e264..0000000000000000000000000000000000000000
--- a/changelog.d/8514.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove unused code from the test framework.
diff --git a/changelog.d/8515.misc b/changelog.d/8515.misc
deleted file mode 100644
index 1f8aa292d81d27dd44f7f88959cbfca6ddc7e098..0000000000000000000000000000000000000000
--- a/changelog.d/8515.misc
+++ /dev/null
@@ -1 +0,0 @@
-Apply some internal fixes to the `HomeServer` class to make its code more idiomatic and statically-verifiable.
diff --git a/changelog.d/8517.bugfix b/changelog.d/8517.bugfix
deleted file mode 100644
index 1ab623c59fcf8d04abd4354ad340e1ef9bf0f7f4..0000000000000000000000000000000000000000
--- a/changelog.d/8517.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix error code for `/profile/{userId}/displayname` to be `M_BAD_JSON`.
diff --git a/changelog.d/8526.doc b/changelog.d/8526.doc
deleted file mode 100644
index cbf48680c12f20b10703f21dacab5ef1c8e663a6..0000000000000000000000000000000000000000
--- a/changelog.d/8526.doc
+++ /dev/null
@@ -1 +0,0 @@
-Added note about docker in manhole.md regarding which ip address to bind to. Contributed by @Maquis196.
diff --git a/changelog.d/8527.bugfix b/changelog.d/8527.bugfix
deleted file mode 100644
index 727e0ba2992a994b3ba1f36735079d462ee274a8..0000000000000000000000000000000000000000
--- a/changelog.d/8527.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in v1.7.0 that could cause Synapse to insert values from non-state `m.room.retention` events into the `room_retention` database table.
diff --git a/changelog.d/8529.doc b/changelog.d/8529.doc
deleted file mode 100644
index 6e710e6527bb59d96f38da948422b88930a68813..0000000000000000000000000000000000000000
--- a/changelog.d/8529.doc
+++ /dev/null
@@ -1 +0,0 @@
-Document the new behaviour of the `allowed_lifetime_min` and `allowed_lifetime_max` settings in the room retention configuration.
diff --git a/changelog.d/8535.feature b/changelog.d/8535.feature
deleted file mode 100644
index 45342e66ad7dadaf8e82644744d52f88fb075933..0000000000000000000000000000000000000000
--- a/changelog.d/8535.feature
+++ /dev/null
@@ -1 +0,0 @@
-Support modifying event content in `ThirdPartyRules` modules.
diff --git a/changelog.d/8536.bugfix b/changelog.d/8536.bugfix
deleted file mode 100644
index 8d238cc00853f57b13b2fc64ffc4b99644be0c94..0000000000000000000000000000000000000000
--- a/changelog.d/8536.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix not sending events over federation when using sharded event writers.
diff --git a/changelog.d/8537.misc b/changelog.d/8537.misc
deleted file mode 100644
index 26309b5b93933022ee4524c71cfbdba5583ad33e..0000000000000000000000000000000000000000
--- a/changelog.d/8537.misc
+++ /dev/null
@@ -1 +0,0 @@
-Factor out common code between `RoomMemberHandler._locally_reject_invite` and `EventCreationHandler.create_event`.
diff --git a/changelog.d/8542.misc b/changelog.d/8542.misc
deleted file mode 100644
index 63149fd9b982f9f86937b6614beac313fd8f5785..0000000000000000000000000000000000000000
--- a/changelog.d/8542.misc
+++ /dev/null
@@ -1 +0,0 @@
-Improve database performance by executing more queries without starting transactions.
diff --git a/changelog.d/8544.feature b/changelog.d/8544.feature
deleted file mode 100644
index 542993110bc80386980b59af8a4a5e4ed4b1ebd0..0000000000000000000000000000000000000000
--- a/changelog.d/8544.feature
+++ /dev/null
@@ -1 +0,0 @@
-Allow running background tasks in a separate worker process.
diff --git a/changelog.d/8545.bugfix b/changelog.d/8545.bugfix
deleted file mode 100644
index 64ba307df06942be62a20ef1e0beb341d8f2e5d1..0000000000000000000000000000000000000000
--- a/changelog.d/8545.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a long standing bug where email notifications for encrypted messages were blank.
diff --git a/changelog.d/8547.misc b/changelog.d/8547.misc
deleted file mode 100644
index fafb1c8347b20ef44cdfd85b217d36bcf7aefc9a..0000000000000000000000000000000000000000
--- a/changelog.d/8547.misc
+++ /dev/null
@@ -1 +0,0 @@
-Enable mypy type checking for `synapse.util.caches`.
diff --git a/changelog.d/8548.misc b/changelog.d/8548.misc
deleted file mode 100644
index fba10bd731cab6a5ec14e43e68b07da1b93dc643..0000000000000000000000000000000000000000
--- a/changelog.d/8548.misc
+++ /dev/null
@@ -1 +0,0 @@
-Rename `Cache` to `DeferredCache`, to better reflect its purpose.
diff --git a/changelog.d/8561.misc b/changelog.d/8561.misc
deleted file mode 100644
index a40dedfa8e6bc73a71b9c94a16efef4cb388f0d3..0000000000000000000000000000000000000000
--- a/changelog.d/8561.misc
+++ /dev/null
@@ -1 +0,0 @@
-Move metric registration code down into `LruCache`.
diff --git a/changelog.d/8562.misc b/changelog.d/8562.misc
deleted file mode 100644
index ebdbddb50048c8c1b10832f925c4a52655d0f3dc..0000000000000000000000000000000000000000
--- a/changelog.d/8562.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type annotations for `LruCache`.
diff --git a/changelog.d/8563.misc b/changelog.d/8563.misc
deleted file mode 100644
index eeba8e5fee534931f225c1450134ebb913724b75..0000000000000000000000000000000000000000
--- a/changelog.d/8563.misc
+++ /dev/null
@@ -1 +0,0 @@
-Replace `DeferredCache` with the lighter-weight `LruCache` where possible.
diff --git a/changelog.d/8564.feature b/changelog.d/8564.feature
deleted file mode 100644
index 45342e66ad7dadaf8e82644744d52f88fb075933..0000000000000000000000000000000000000000
--- a/changelog.d/8564.feature
+++ /dev/null
@@ -1 +0,0 @@
-Support modifying event content in `ThirdPartyRules` modules.
diff --git a/changelog.d/8566.misc b/changelog.d/8566.misc
deleted file mode 100644
index 453cf48ffa9c06fe368686fa0e6c21f14341c2ca..0000000000000000000000000000000000000000
--- a/changelog.d/8566.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add virtualenv-generated folders to `.gitignore`.
\ No newline at end of file
diff --git a/changelog.d/8567.bugfix b/changelog.d/8567.bugfix
deleted file mode 100644
index 4d835df6fd43dff7dff9c49433a5818df70e97ed..0000000000000000000000000000000000000000
--- a/changelog.d/8567.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix increase in the number of `There was no active span...` errors logged when using OpenTracing.
diff --git a/changelog.d/8568.misc b/changelog.d/8568.misc
deleted file mode 100644
index 0ed7db92d355e5e6b8afd0d0473ad6a6a3e284d3..0000000000000000000000000000000000000000
--- a/changelog.d/8568.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add `get_immediate` method to `DeferredCache`.
diff --git a/changelog.d/8569.misc b/changelog.d/8569.misc
deleted file mode 100644
index 3b6e0625e57e4537ec29091be78cf1b6cfd583ce..0000000000000000000000000000000000000000
--- a/changelog.d/8569.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix mypy not properly checking across the codebase, additionally, fix a typing assertion error in `handlers/auth.py`.
\ No newline at end of file
diff --git a/changelog.d/8571.misc b/changelog.d/8571.misc
deleted file mode 100644
index f6a65057e0d9a1acd9d04216deb7e17184646a0c..0000000000000000000000000000000000000000
--- a/changelog.d/8571.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix `synmark` benchmark runner.
diff --git a/changelog.d/8572.misc b/changelog.d/8572.misc
deleted file mode 100644
index ea2a6d340d71db861976dec8f736410e5181f23b..0000000000000000000000000000000000000000
--- a/changelog.d/8572.misc
+++ /dev/null
@@ -1 +0,0 @@
-Modify `DeferredCache.get()` to return `Deferred`s instead of `ObservableDeferred`s.
diff --git a/changelog.d/8577.misc b/changelog.d/8577.misc
deleted file mode 100644
index 75fe563a0258066ef3e5eca8b7d7da4ea2a1aba5..0000000000000000000000000000000000000000
--- a/changelog.d/8577.misc
+++ /dev/null
@@ -1 +0,0 @@
-Adjust a protocol-type definition to fit `sqlite3` assertions.
\ No newline at end of file
diff --git a/changelog.d/8578.misc b/changelog.d/8578.misc
deleted file mode 100644
index e93462255b39c3df30f149408db3080f513a61eb..0000000000000000000000000000000000000000
--- a/changelog.d/8578.misc
+++ /dev/null
@@ -1 +0,0 @@
-Support macOS on the `synmark` benchmark runner.
diff --git a/changelog.d/8583.misc b/changelog.d/8583.misc
deleted file mode 100644
index d24973f09af15a94e4d7572a9fa6ead55fc69dfa..0000000000000000000000000000000000000000
--- a/changelog.d/8583.misc
+++ /dev/null
@@ -1 +0,0 @@
-Update `mypy` static type checker to 0.790.
\ No newline at end of file
diff --git a/changelog.d/8585.bugfix b/changelog.d/8585.bugfix
deleted file mode 100644
index e97e6ac1d8cb5bacdc71d20c49398ffc75a3e118..0000000000000000000000000000000000000000
--- a/changelog.d/8585.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug that prevented errors encountered during execution of the `synapse_port_db` from being correctly printed.
\ No newline at end of file
diff --git a/changelog.d/8587.misc b/changelog.d/8587.misc
deleted file mode 100644
index 9e56551a34bf44826125ddfb09b3d0ba81e5238c..0000000000000000000000000000000000000000
--- a/changelog.d/8587.misc
+++ /dev/null
@@ -1 +0,0 @@
-Re-organize the structured logging code to separate the TCP transport handling from the JSON formatting.
diff --git a/changelog.d/8589.removal b/changelog.d/8589.removal
deleted file mode 100644
index b80f29d6bbd9d8b05f8564aeffc7bfbb67c3dc91..0000000000000000000000000000000000000000
--- a/changelog.d/8589.removal
+++ /dev/null
@@ -1 +0,0 @@
-Drop unused `device_max_stream_id` table.
diff --git a/changelog.d/8590.misc b/changelog.d/8590.misc
deleted file mode 100644
index 4abcccb326e04942354c0e641508f55c8ec8c17f..0000000000000000000000000000000000000000
--- a/changelog.d/8590.misc
+++ /dev/null
@@ -1 +0,0 @@
-Implement [MSC2409](https://github.com/matrix-org/matrix-doc/pull/2409) to send typing, read receipts, and presence events to appservices.
diff --git a/changelog.d/8591.misc b/changelog.d/8591.misc
deleted file mode 100644
index 8f16bc3e7e221da1fecc336e16e41af692e74c03..0000000000000000000000000000000000000000
--- a/changelog.d/8591.misc
+++ /dev/null
@@ -1 +0,0 @@
- Move metric registration code down into `LruCache`.
diff --git a/changelog.d/8592.misc b/changelog.d/8592.misc
deleted file mode 100644
index 099e8fb7bb2c1aed7ccd4bb0cc2c13080aa4b55d..0000000000000000000000000000000000000000
--- a/changelog.d/8592.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove extraneous unittest logging decorators from unit tests.
\ No newline at end of file
diff --git a/changelog.d/8593.misc b/changelog.d/8593.misc
deleted file mode 100644
index d266ba19a4dc026d974f4b5f10f8bb1d56dbafdc..0000000000000000000000000000000000000000
--- a/changelog.d/8593.misc
+++ /dev/null
@@ -1 +0,0 @@
-Minor optimisations in caching code.
diff --git a/changelog.d/8594.misc b/changelog.d/8594.misc
deleted file mode 100644
index d266ba19a4dc026d974f4b5f10f8bb1d56dbafdc..0000000000000000000000000000000000000000
--- a/changelog.d/8594.misc
+++ /dev/null
@@ -1 +0,0 @@
-Minor optimisations in caching code.
diff --git a/changelog.d/8599.feature b/changelog.d/8599.feature
deleted file mode 100644
index 542993110bc80386980b59af8a4a5e4ed4b1ebd0..0000000000000000000000000000000000000000
--- a/changelog.d/8599.feature
+++ /dev/null
@@ -1 +0,0 @@
-Allow running background tasks in a separate worker process.
diff --git a/changelog.d/8600.misc b/changelog.d/8600.misc
deleted file mode 100644
index a5a922e641dc73d5a802e0099f1bb6e3750c388b..0000000000000000000000000000000000000000
--- a/changelog.d/8600.misc
+++ /dev/null
@@ -1 +0,0 @@
-Update `mypy` static type checker to 0.790.
diff --git a/changelog.d/8606.feature b/changelog.d/8606.feature
deleted file mode 100644
index fad723c1085955f2ee8005e55fc954db31e5a677..0000000000000000000000000000000000000000
--- a/changelog.d/8606.feature
+++ /dev/null
@@ -1 +0,0 @@
-Limit appservice transactions to 100 persistent and 100 ephemeral events.
diff --git a/changelog.d/8609.misc b/changelog.d/8609.misc
deleted file mode 100644
index 5e3f3c1993978c6c7abbe58be212ddfa94c68339..0000000000000000000000000000000000000000
--- a/changelog.d/8609.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type hints to profile and base handler.
diff --git a/synapse/__init__.py b/synapse/__init__.py
index 83b8e4897f3cfab66fb421a561b40a759dfe5f3e..c9d53e767a1bcb11bfc544073a12a998e3be4046 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -48,7 +48,7 @@ try:
 except ImportError:
     pass
 
-__version__ = "1.21.2"
+__version__ = "1.22.0rc1"
 
 if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)):
     # We import here so that we don't have to install a bunch of deps when