From c0cbda9451282ec8823b8dab45d27c17a0b10df9 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Thu, 9 Apr 2020 09:56:46 +0200
Subject: [PATCH] Version bump and changelog for 0.21

---
 CHANGELOG                                     | 258 ++++++++++++++++++
 CONTRIBUTING.rst                              |  45 +++
 api/funkwhale_api/__init__.py                 |   2 +-
 changes/changelog.d/1004.bugfix               |   1 -
 changes/changelog.d/1006.bugfix               |   1 -
 changes/changelog.d/1012.enhancement          |   1 -
 changes/changelog.d/1013.enhancement          |   1 -
 changes/changelog.d/1036.enhancement          |   1 -
 changes/changelog.d/1037.bugfix               |   1 -
 changes/changelog.d/1038.feature              |   1 -
 changes/changelog.d/1039.feature              |   1 -
 changes/changelog.d/1040.feature              |   1 -
 changes/changelog.d/1041.enhancement          |   1 -
 changes/changelog.d/1042.bugfix               |   1 -
 changes/changelog.d/1060.feature              |   1 -
 changes/changelog.d/170.feature               |   1 -
 changes/changelog.d/340.bugfix                |   1 -
 changes/changelog.d/348.bugfix                |   1 -
 changes/changelog.d/391.enhancement           |   1 -
 changes/changelog.d/588.enhancement           |   1 -
 changes/changelog.d/594.feature               |   1 -
 changes/changelog.d/680.bugfix                |   1 -
 changes/changelog.d/775.enhancement           |   1 -
 changes/changelog.d/859.enhancement           |   1 -
 changes/changelog.d/923.enhancement           |   1 -
 changes/changelog.d/926.feature               |   1 -
 changes/changelog.d/943.bugfix                |   1 -
 changes/changelog.d/948.bugfix                |   1 -
 changes/changelog.d/959.enhancement           |   1 -
 changes/changelog.d/960.bugfix                |   1 -
 changes/changelog.d/961.bugfix                |   1 -
 changes/changelog.d/966.bugfix                |   1 -
 changes/changelog.d/970.bugfix                |   1 -
 changes/changelog.d/974.enhancement           |   1 -
 changes/changelog.d/982.bugfix                |   1 -
 changes/changelog.d/986.bugfix                |   1 -
 changes/changelog.d/988.enhancement           |   1 -
 changes/changelog.d/994.enhancement           |   1 -
 changes/changelog.d/997.enhancement           |   1 -
 .../docker-reduced-size.enhancement           |   1 -
 changes/changelog.d/known-nodes.enhancement   |   1 -
 changes/changelog.d/media-proxy.enhancement   |   1 -
 changes/changelog.d/nodeinfo.enhancement      |   1 -
 changes/changelog.d/radio.enhancement         |   1 -
 changes/changelog.d/server-cli.feature        |   1 -
 .../subsonic-throttling.enhancement           |   1 -
 changes/notes.rst                             | 155 -----------
 47 files changed, 304 insertions(+), 199 deletions(-)
 delete mode 100644 changes/changelog.d/1004.bugfix
 delete mode 100644 changes/changelog.d/1006.bugfix
 delete mode 100644 changes/changelog.d/1012.enhancement
 delete mode 100644 changes/changelog.d/1013.enhancement
 delete mode 100644 changes/changelog.d/1036.enhancement
 delete mode 100644 changes/changelog.d/1037.bugfix
 delete mode 100644 changes/changelog.d/1038.feature
 delete mode 100644 changes/changelog.d/1039.feature
 delete mode 100644 changes/changelog.d/1040.feature
 delete mode 100644 changes/changelog.d/1041.enhancement
 delete mode 100644 changes/changelog.d/1042.bugfix
 delete mode 100644 changes/changelog.d/1060.feature
 delete mode 100644 changes/changelog.d/170.feature
 delete mode 100644 changes/changelog.d/340.bugfix
 delete mode 100644 changes/changelog.d/348.bugfix
 delete mode 100644 changes/changelog.d/391.enhancement
 delete mode 100644 changes/changelog.d/588.enhancement
 delete mode 100644 changes/changelog.d/594.feature
 delete mode 100644 changes/changelog.d/680.bugfix
 delete mode 100644 changes/changelog.d/775.enhancement
 delete mode 100644 changes/changelog.d/859.enhancement
 delete mode 100644 changes/changelog.d/923.enhancement
 delete mode 100644 changes/changelog.d/926.feature
 delete mode 100644 changes/changelog.d/943.bugfix
 delete mode 100644 changes/changelog.d/948.bugfix
 delete mode 100644 changes/changelog.d/959.enhancement
 delete mode 100644 changes/changelog.d/960.bugfix
 delete mode 100644 changes/changelog.d/961.bugfix
 delete mode 100644 changes/changelog.d/966.bugfix
 delete mode 100644 changes/changelog.d/970.bugfix
 delete mode 100644 changes/changelog.d/974.enhancement
 delete mode 100644 changes/changelog.d/982.bugfix
 delete mode 100644 changes/changelog.d/986.bugfix
 delete mode 100644 changes/changelog.d/988.enhancement
 delete mode 100644 changes/changelog.d/994.enhancement
 delete mode 100644 changes/changelog.d/997.enhancement
 delete mode 100644 changes/changelog.d/docker-reduced-size.enhancement
 delete mode 100644 changes/changelog.d/known-nodes.enhancement
 delete mode 100644 changes/changelog.d/media-proxy.enhancement
 delete mode 100644 changes/changelog.d/nodeinfo.enhancement
 delete mode 100644 changes/changelog.d/radio.enhancement
 delete mode 100644 changes/changelog.d/server-cli.feature
 delete mode 100644 changes/changelog.d/subsonic-throttling.enhancement

diff --git a/CHANGELOG b/CHANGELOG
index 18fccc4c71..51b1f46ace 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -10,6 +10,264 @@ This changelog is viewable on the web at https://docs.funkwhale.audio/changelog.
 
 .. towncrier
 
+0.21-rc1 (2020-04-09)
+---------------------
+
+Upgrade instructions are available at
+https://docs.funkwhale.audio/index.html, there are also additional operations you need to execute, listed in the changelog below (search "Manual action").
+
+
+Channels and podcasts
+^^^^^^^^^^^^^^^^^^^^^
+
+Funkwhale 0.21 includes a brand new feature: Channels!
+
+Channels can be used as a replacement to public libraries,
+to publish audio content, both musical and non-musical. They federate with other Funkwhale pods, but also other
+fediverse software, in particular Mastodon, Pleroma, Friendica and Reel2Bits, meaning people can subscribe to your channel
+from any of these software. To get started with publication, simply visit your profile and create a channel from there.
+
+Each Funkwhale channel also comes with RSS feed that is compatible with existing podcasting applications, like AntennaPod
+on Android and, within Funkwhale, you can also subscribe to any podcast from its RSS feed!
+
+Many, many thanks to the numerous people who helped with the feature design, development and testing, and in particular
+to the members of the working group who met every week for months in order to get this done, and the members of other third-party
+projects who took the time to work with us to ensure compatibility.
+
+Redesigned navigation, player and queue
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This release includes a full redesign of our navigation, player and queue. Overall, it should provide
+a better, less confusing experience, especially on mobile devices. This redesign was suggested
+14 months ago, and took a while, but thanks to the involvement and feedback of many people, we got it done!
+
+Improved search bar for searching remote objects
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The search bar now support fetching arbitrary objects using a URL. In particular, you can use this to quickly:
+
+- Subscribe to a remote library via its URL
+- Listen a public track from another pod
+- Subscribe to a channel
+
+Screening for sign-ups and custom sign-up form
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Instance admins can now configure their pod so that registrations required manual approval from a moderator. This
+is especially useful on private or semi-private pods where you don't want to close registrations completely,
+but don't want spam or unwanted users to join your pod.
+
+When this is enabled and a new user register, their request is put in a moderation queue, and moderators
+are notified by email. When the request is approved or refused, the user is also notified by email.
+
+In addition, it's also possible to customize the sign-up form by:
+
+- Providing a custom help text, in markdown format
+- Including additional fields in the form, for instance to ask the user why they want to join. Data collected through these fields is included in the sign-up request and viewable by the mods
+
+Federated reports
+^^^^^^^^^^^^^^^^^
+
+It's now possible to send a copy of a report to the server hosting the reported object, in order to make moderation easier and more distributed.
+
+This feature is inspired by Mastodon's current design, and should work with at least Funkwhale and Mastodon servers.
+
+Improved search performance
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Our search engine went through a full rewrite to make it faster. This new engine is enabled
+by default when using the search bar, or when searching for artists, albums and tracks. It leverages
+PostgreSQL full-text search capabilities.
+
+During our tests, we observed huge performance improvements after the switch, by an order of
+magnitude. This should be especially perceptible on pods with large databases, more modest hardware
+or hard drives.
+
+We plan to remove the old engine in an upcoming release. In the meantime, if anything goes wrong,
+you can switch back by setting ``USE_FULL_TEXT_SEARCH=false`` in your ``.env`` file.
+
+Enforced email verification
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The brand new ``ACCOUNT_EMAIL_VERIFICATION_ENFORCE`` setting can be used to make email verification
+mandatory for your users. It defaults to ``false``, and doesn't apply to superuser accounts created through
+the CLI.
+
+If you enable this, ensure you have a SMTP server configured too.
+
+User management through the server CLI
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+We now support user creation (incl. non-admin accounts), update and removal directly
+from the server CLI. Typical use cases include:
+
+- Changing a user password from the command line
+- Creating or updating users from deployments scripts or playbooks
+- Removing or granting permissions or upload quota to multiple users at once
+- Marking multiple users as inactive
+
+All user-related commands are available under the ``python manage.py fw users`` namespace.
+Please refer to the `Admin documentation <https://docs.funkwhale.audio/admin/commands.html#user-management>`_ for
+more information and instructions.
+
+Progressive web app [Manual action suggested, non-docker only]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+We've made Funkwhale's Web UI a Progressive Web Application (PWA), in order to improve the user experience
+during offline use, and on mobile devices.
+
+In order to fully benefit from this change, if your pod isn't deployed using Docker, ensure
+the following instruction is present in your nginx configuration::
+
+    location /front/ {
+        # Add the following line in the /front/ location
+        add_header Service-Worker-Allowed "/";
+    }
+
+Postgres docker changed environment variable [manual action required, docker multi-container only]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you're running with docker and our multi-container setup, there was a breaking change starting in the 11.7 postgres image (https://github.com/docker-library/postgres/pull/658)
+
+You need to add this to your .env file: ``POSTGRES_HOST_AUTH_METHOD=trust``
+
+Newer deployments aren't affected.
+
+Upgrade from Postgres 10 to 11 [manual action required, docker all-in-one only]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+With our upgrade to Alpine 3.10, the ``funkwhale/all-in-one`` image now includes PostgreSQL 11.
+
+In order to update to Funkwhale 0.21, you will first need to uprade Funkwhale's PostgreSQL database, following the steps below::
+
+    # open a shell as the Funkwhale user
+    sudo -u funkwhale -H bash
+
+    # move to the funkwhale data directory
+    # (replace this with your own if you used a different path)
+    cd /srv/funkwhale/data
+
+    # stop the funkwhale container
+    docker stop funkwhale
+
+    # backup the database files
+    cp -r data/ ../postgres.bak
+
+    # Upgrade the database
+    docker run --rm \
+        -v $(pwd)/data:/var/lib/postgresql/10/data \
+        -v $(pwd)/upgraded-postgresql:/var/lib/postgresql/11/data \
+        -e PGUSER=funkwhale \
+        -e POSTGRES_INITDB_ARGS="-U funkwhale --locale C --encoding UTF8" \
+        tianon/postgres-upgrade:10-to-11
+
+    # replace the Postgres 10 files with Postgres 11 files
+    mv data/ postgres-10
+    mv upgraded-postgresql/ data
+
+Once you have completed the Funkwhale upgrade with our regular instructions and everything works properly,
+you can remove the backups/old files::
+
+    sudo -u funkwhale -H bash
+    cd /srv/funkwhale/data
+    rm -rf ../postgres.bak
+    rm -rf postgres-10
+
+
+Features:
+
+- Support for publishing and subscribing to podcasts (#170)
+- Brand new navigation, queue and player redesign (#594)
+- Can now browse a library content through the UI (#926)
+- Federated reports (#1038)
+- Screening for sign-ups (#1040)
+- Make it possible to enforce email verification (#1039)
+- Added a new radio based on another user listenings (#1060)
+- User management through the server CLI
+
+
+Enhancements:
+
+- Added ability to reject library follows from notifications screen (#859)
+- Added periodic background task and CLI command to associate genre tags to artists and albums based on identical tags found on corresponding tracks (#988)
+- Added support for CELERYD_CONCURRENCY env var to control the number of worker processes (#997)
+- Added the ability to sort albums by release date (#1013)
+- Added two new radios to play your own content or a given library tracks
+- Advertise list of known nodes on /api/v1/federation/domains and in nodeinfo if stats sharing is enabled
+- Changed footer to use instance name if available, and append ellipses if instance URL/Name is too long (#1012)
+- Favor local uploads when playing a track with multiple uploads (#1036)
+- Include only local content in nodeinfo stats, added downloads count
+- Make media and static files serving more reliable when reverse proxy X_FORWARDED_* headers are incorrect (#947)
+- Order the playlist columns by modification date in the Browse tab (#775)
+- Reduced size of funkwhale/funkwhale docker images thanks to multi-stage builds (!1042)
+- Remember display settings in Album, Artist, Radio and Playlist views (#391)
+- Removed unnecessary "Federation music needs approval" setting (#959)
+- Replaced our slow research logic by PostgreSQL full-text search (#994)
+- Support autoplay when loading embed frame from Mastodon and third-party websites (#1041)
+- Support filtering playlist by name and several additional UX improvements in playlists modal (#974)
+- Support modifying album cover art through the web UI (#588)
+- Use a dedicated scope for throttling subsonic to avoid intrusive rate-limiting
+- Use same markdown widget for all content fields (rules, description, reports, notes, etc.)
+
+
+Bugfixes:
+
+- Added missing manuallyApprovesFollowers entry in JSON-LD contexts (#961)
+- Fix issue with browser shortcuts such as search and focus URL not being recognised (#340, #985)
+- Fixed admin dropdown not showing after login (#1042)
+- Fixed an issue with celerybeat container failing to restart (#1004)
+- Fixed invalid displayed number of tracks in playlist (#986)
+- Fixed issue with recent results not being loaded from the API (#948)
+- Fixed issue with sorting by album name not working (#960)
+- Fixed short audio glitch when switching switching to another track with player paused (#970)
+- Improved deduplication logic to prevent skipped files during import (#348, #474, #557, #740, #928)
+- More resilient tag parsing with empty release date or album artist (#1037)
+- More robust importer against malformed dates (#966)
+- Removed "nodeinfo disabled" setting, as nodeinfo is required for the UI to work (#982)
+- Replaced PDF icon by List icon in playlist placeholder (#943)
+- Resolve an issue where disc numbers were not taken into consideration when playing an album from the album card (#1006)
+- Set correct size for album covers in playlist cards (#680)
+
+Contributors to this release (translation, development, documentation, reviews, design, testing, third-party projects):
+
+- annando
+- Anton Strömkvist
+- Audrey
+- ButterflyOfFire
+- Ciarán Ainsworth
+- dashie
+- Eliot Berriot
+- Eloisa
+- eorn
+- Francesc Galí
+- GinnyMcQueen
+- guillermau
+- Haelwenn
+- jinxx
+- Jonathan Aylard
+- Keunes
+- M.G
+- marzzzello
+- Mathé Grievink
+- Mélanie Chauvel
+- Mjourdan
+- Morgan Kesler
+- Noureddine HADDAG
+- Noe Gaumont
+- Ollie
+- Peter Wickenberg
+- Renon
+- Satsuki Yanagi
+- Shlee
+- techknowlogick
+- ThibG
+- Tony Wasserka
+- unklebonehead
+- wakest
+- wxcafé
+- Xosé M
+
+
 0.20.1 (2019-10-28)
 -------------------
 
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 583f30d929..fe081b97c4 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -721,3 +721,48 @@ The latter is especially useful when you are debugging failing tests.
 .. note::
 
     The front-end test suite coverage is still pretty low
+
+
+Making a release
+----------------
+
+To make a new 3.4 release::
+
+    # setup
+    export NEXT_RELEASE=3.4  # replace with the next release number
+    export PREVIOUS_RELEASE=3.3  # replace with the previous release number
+
+    # ensure you have an up-to-date repo
+    git checkout develop  # use master if you're doing a hotfix release
+    git pull
+
+    # compile changelog
+    towncrier --version $NEXT_RELEASE --yes
+
+    # polish changelog
+    # - update the date
+    # - look for typos
+    # - add list of contributors via `python3 scripts/get-contributions-stats.py develop $PREVIOUS_RELEASE`
+    nano CHANGELOG
+
+    # Set the `__version__` variable to $NEXT_RELEASE
+    nano nano api/funkwhale_api/__init__.py
+
+    # commit
+    git add .
+    git commit -m "Version bump and changelog for $NEXT_RELEASE"
+
+    # tag
+    git tag $NEXT_RELEASE
+
+    # publish
+    git push --tags && git push
+
+    # if you're doing a hotfix release from master
+    git checkout develop && git merge master && git push
+
+    # if you're doing a non-hotfix release, and a real release (not a real release) from develop
+    git checkout master && git merge develop && git push
+
+Then, visit https://dev.funkwhale.audio/funkwhale/funkwhale/-/tags, copy-paste the changelog on the corresponding
+tag, and announce the good news ;)
diff --git a/api/funkwhale_api/__init__.py b/api/funkwhale_api/__init__.py
index 601359964b..c46d17733d 100644
--- a/api/funkwhale_api/__init__.py
+++ b/api/funkwhale_api/__init__.py
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-__version__ = "0.20.1"
+__version__ = "0.21-rc1"
 __version_info__ = tuple(
     [
         int(num) if num.isdigit() else num
diff --git a/changes/changelog.d/1004.bugfix b/changes/changelog.d/1004.bugfix
deleted file mode 100644
index 5c99a3e1f8..0000000000
--- a/changes/changelog.d/1004.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fixed an issue with celerybeat container failing to restart (#1004)
\ No newline at end of file
diff --git a/changes/changelog.d/1006.bugfix b/changes/changelog.d/1006.bugfix
deleted file mode 100644
index 57e3b1269a..0000000000
--- a/changes/changelog.d/1006.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Resolve an issue where disc numbers were not taken into consideration when playing an album from the album card (#1006)
\ No newline at end of file
diff --git a/changes/changelog.d/1012.enhancement b/changes/changelog.d/1012.enhancement
deleted file mode 100644
index ae47d6dc64..0000000000
--- a/changes/changelog.d/1012.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Changed footer to use instance name if available, and append ellipses if instance URL/Name is too long (#1012)
\ No newline at end of file
diff --git a/changes/changelog.d/1013.enhancement b/changes/changelog.d/1013.enhancement
deleted file mode 100644
index e8e7894954..0000000000
--- a/changes/changelog.d/1013.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Added the ability to sort albums by release date (#1013)
\ No newline at end of file
diff --git a/changes/changelog.d/1036.enhancement b/changes/changelog.d/1036.enhancement
deleted file mode 100644
index d876cfd605..0000000000
--- a/changes/changelog.d/1036.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Favor local uploads when playing a track with multiple uploads (#1036)
diff --git a/changes/changelog.d/1037.bugfix b/changes/changelog.d/1037.bugfix
deleted file mode 100644
index 38771e171c..0000000000
--- a/changes/changelog.d/1037.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-More resilient tag parsing with empty release date or album artist (#1037)
diff --git a/changes/changelog.d/1038.feature b/changes/changelog.d/1038.feature
deleted file mode 100644
index 1e6913ab3c..0000000000
--- a/changes/changelog.d/1038.feature
+++ /dev/null
@@ -1 +0,0 @@
-Federated reports (#1038)
diff --git a/changes/changelog.d/1039.feature b/changes/changelog.d/1039.feature
deleted file mode 100644
index bc1fee4fca..0000000000
--- a/changes/changelog.d/1039.feature
+++ /dev/null
@@ -1 +0,0 @@
-Make it possible to enforce email verification (#1039)
diff --git a/changes/changelog.d/1040.feature b/changes/changelog.d/1040.feature
deleted file mode 100644
index ec905688bd..0000000000
--- a/changes/changelog.d/1040.feature
+++ /dev/null
@@ -1 +0,0 @@
-Screening for sign-ups (#1040)
diff --git a/changes/changelog.d/1041.enhancement b/changes/changelog.d/1041.enhancement
deleted file mode 100644
index 6c608c160c..0000000000
--- a/changes/changelog.d/1041.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Support autoplay when loading embed frame from Mastodon and third-party websites (#1041)
diff --git a/changes/changelog.d/1042.bugfix b/changes/changelog.d/1042.bugfix
deleted file mode 100644
index 24be4bbb21..0000000000
--- a/changes/changelog.d/1042.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fixed admin dropdown not showing after login (#1042)
diff --git a/changes/changelog.d/1060.feature b/changes/changelog.d/1060.feature
deleted file mode 100644
index 245a6be0ce..0000000000
--- a/changes/changelog.d/1060.feature
+++ /dev/null
@@ -1 +0,0 @@
-Added a new radio based on another user listenings (#1060)
diff --git a/changes/changelog.d/170.feature b/changes/changelog.d/170.feature
deleted file mode 100644
index 1efe171164..0000000000
--- a/changes/changelog.d/170.feature
+++ /dev/null
@@ -1 +0,0 @@
-Support for publishing and subscribing to podcasts (#170)
diff --git a/changes/changelog.d/340.bugfix b/changes/changelog.d/340.bugfix
deleted file mode 100644
index eb6cdddbe4..0000000000
--- a/changes/changelog.d/340.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix issue with browser shortcuts such as search and focus URL not being recognised (#340, #985)
\ No newline at end of file
diff --git a/changes/changelog.d/348.bugfix b/changes/changelog.d/348.bugfix
deleted file mode 100644
index 10c04b9821..0000000000
--- a/changes/changelog.d/348.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Improved deduplication logic to prevent skipped files during import (#348, #474, #557, #740, #928)
diff --git a/changes/changelog.d/391.enhancement b/changes/changelog.d/391.enhancement
deleted file mode 100644
index 28c19ecf3e..0000000000
--- a/changes/changelog.d/391.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Remember display settings in Album, Artist, Radio and Playlist views (#391)
diff --git a/changes/changelog.d/588.enhancement b/changes/changelog.d/588.enhancement
deleted file mode 100644
index 1ce18953de..0000000000
--- a/changes/changelog.d/588.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Support modifying album cover art through the web UI (#588)
diff --git a/changes/changelog.d/594.feature b/changes/changelog.d/594.feature
deleted file mode 100644
index 3ab7ccdd9a..0000000000
--- a/changes/changelog.d/594.feature
+++ /dev/null
@@ -1 +0,0 @@
-Brand new navigation, queue and player redesign (#594)
diff --git a/changes/changelog.d/680.bugfix b/changes/changelog.d/680.bugfix
deleted file mode 100644
index ebe4636ee9..0000000000
--- a/changes/changelog.d/680.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Set correct size for album covers in playlist cards (#680)
diff --git a/changes/changelog.d/775.enhancement b/changes/changelog.d/775.enhancement
deleted file mode 100644
index c63ebec933..0000000000
--- a/changes/changelog.d/775.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Order the playlist columns by modification date in the Browse tab (#775)
diff --git a/changes/changelog.d/859.enhancement b/changes/changelog.d/859.enhancement
deleted file mode 100644
index 91c16ddafd..0000000000
--- a/changes/changelog.d/859.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Added ability to reject library follows from notifications screen (#859)
\ No newline at end of file
diff --git a/changes/changelog.d/923.enhancement b/changes/changelog.d/923.enhancement
deleted file mode 100644
index 44b9d60e8f..0000000000
--- a/changes/changelog.d/923.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Use same markdown widget for all content fields (rules, description, reports, notes, etc.)
diff --git a/changes/changelog.d/926.feature b/changes/changelog.d/926.feature
deleted file mode 100644
index 00d3f70737..0000000000
--- a/changes/changelog.d/926.feature
+++ /dev/null
@@ -1 +0,0 @@
-Can now browse a library content through the UI (#926)
diff --git a/changes/changelog.d/943.bugfix b/changes/changelog.d/943.bugfix
deleted file mode 100644
index af5014203e..0000000000
--- a/changes/changelog.d/943.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Replaced PDF icon by List icon in playlist placeholder (#943)
diff --git a/changes/changelog.d/948.bugfix b/changes/changelog.d/948.bugfix
deleted file mode 100644
index f9deef2f84..0000000000
--- a/changes/changelog.d/948.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fixed issue with recent results not being loaded from the API (#948)
\ No newline at end of file
diff --git a/changes/changelog.d/959.enhancement b/changes/changelog.d/959.enhancement
deleted file mode 100644
index 8dc027208d..0000000000
--- a/changes/changelog.d/959.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Removed unnecessary "Federation music needs approval" setting (#959)
\ No newline at end of file
diff --git a/changes/changelog.d/960.bugfix b/changes/changelog.d/960.bugfix
deleted file mode 100644
index a3082e85d3..0000000000
--- a/changes/changelog.d/960.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fixed issue with sorting by album name not working (#960)
\ No newline at end of file
diff --git a/changes/changelog.d/961.bugfix b/changes/changelog.d/961.bugfix
deleted file mode 100644
index b2813ff316..0000000000
--- a/changes/changelog.d/961.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-    Added missing manuallyApprovesFollowers entry in JSON-LD contexts (#961)
diff --git a/changes/changelog.d/966.bugfix b/changes/changelog.d/966.bugfix
deleted file mode 100644
index c3718fcb6c..0000000000
--- a/changes/changelog.d/966.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-More robust importer against malformed dates (#966)
diff --git a/changes/changelog.d/970.bugfix b/changes/changelog.d/970.bugfix
deleted file mode 100644
index 400e54f74c..0000000000
--- a/changes/changelog.d/970.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fixed short audio glitch when switching switching to another track with player paused (#970)
diff --git a/changes/changelog.d/974.enhancement b/changes/changelog.d/974.enhancement
deleted file mode 100644
index 0d59fbd0a2..0000000000
--- a/changes/changelog.d/974.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Support filtering playlist by name and several additional UX improvements in playlists modal (#974)
diff --git a/changes/changelog.d/982.bugfix b/changes/changelog.d/982.bugfix
deleted file mode 100644
index 1e0252c3f1..0000000000
--- a/changes/changelog.d/982.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Removed "nodeinfo disabled" setting, as nodeinfo is required for the UI to work (#982)
diff --git a/changes/changelog.d/986.bugfix b/changes/changelog.d/986.bugfix
deleted file mode 100644
index b18d8ec8d9..0000000000
--- a/changes/changelog.d/986.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fixed invalid displayed number of tracks in playlist (#986)
diff --git a/changes/changelog.d/988.enhancement b/changes/changelog.d/988.enhancement
deleted file mode 100644
index 087fc66d35..0000000000
--- a/changes/changelog.d/988.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Added periodic background task and CLI command to associate genre tags to artists and albums based on identical tags found on corresponding tracks (#988)
diff --git a/changes/changelog.d/994.enhancement b/changes/changelog.d/994.enhancement
deleted file mode 100644
index d4c467c39d..0000000000
--- a/changes/changelog.d/994.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Replaced our slow research logic by PostgreSQL full-text search (#994)
diff --git a/changes/changelog.d/997.enhancement b/changes/changelog.d/997.enhancement
deleted file mode 100644
index 2fdb7d78b7..0000000000
--- a/changes/changelog.d/997.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Added support for CELERYD_CONCURRENCY env var to control the number of worker processes (#997)
diff --git a/changes/changelog.d/docker-reduced-size.enhancement b/changes/changelog.d/docker-reduced-size.enhancement
deleted file mode 100644
index 1565d94ee8..0000000000
--- a/changes/changelog.d/docker-reduced-size.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Reduced size of funkwhale/funkwhale docker images thanks to multi-stage builds (!1042)
diff --git a/changes/changelog.d/known-nodes.enhancement b/changes/changelog.d/known-nodes.enhancement
deleted file mode 100644
index 00497de4a9..0000000000
--- a/changes/changelog.d/known-nodes.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Advertise list of known nodes on /api/v1/federation/domains and in nodeinfo if stats sharing is enabled
diff --git a/changes/changelog.d/media-proxy.enhancement b/changes/changelog.d/media-proxy.enhancement
deleted file mode 100644
index e9fae2b5ea..0000000000
--- a/changes/changelog.d/media-proxy.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Make media and static files serving more reliable when reverse proxy X_FORWARDED_* headers are incorrect (#947)
diff --git a/changes/changelog.d/nodeinfo.enhancement b/changes/changelog.d/nodeinfo.enhancement
deleted file mode 100644
index 3b9daa4873..0000000000
--- a/changes/changelog.d/nodeinfo.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Include only local content in nodeinfo stats, added downloads count
diff --git a/changes/changelog.d/radio.enhancement b/changes/changelog.d/radio.enhancement
deleted file mode 100644
index a46a9cd92b..0000000000
--- a/changes/changelog.d/radio.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Added two new radios to play your own content or a given library tracks
diff --git a/changes/changelog.d/server-cli.feature b/changes/changelog.d/server-cli.feature
deleted file mode 100644
index 11eb9ec252..0000000000
--- a/changes/changelog.d/server-cli.feature
+++ /dev/null
@@ -1 +0,0 @@
-User management through the server CLI
diff --git a/changes/changelog.d/subsonic-throttling.enhancement b/changes/changelog.d/subsonic-throttling.enhancement
deleted file mode 100644
index aad8623408..0000000000
--- a/changes/changelog.d/subsonic-throttling.enhancement
+++ /dev/null
@@ -1 +0,0 @@
-Use a dedicated scope for throttling subsonic to avoid intrusive rate-limiting
diff --git a/changes/notes.rst b/changes/notes.rst
index 7ceab7338f..96ac3d7651 100644
--- a/changes/notes.rst
+++ b/changes/notes.rst
@@ -5,158 +5,3 @@ Next release notes
 
     Those release notes refer to the current development branch and are reset
     after each release.
-
-Channels and podcasts
-^^^^^^^^^^^^^^^^^^^^^
-
-Funkwhale 0.21 includes a brand new feature: Channels!
-
-Channels can be used as a replacement to public libraries,
-to publish audio content, both musical and non-musical. They federate with other Funkwhale pods, but also other
-fediverse software, in particular Mastodon, Pleroma, Friendica and Reel2Bits, meaning people can subscribe to your channel
-from any of these software. To get started with publication, simply visit your profile and create a channel from there.
-
-Each Funkwhale channel also comes with RSS feed that is compatible with existing podcasting applications, like AntennaPod
-on Android and, within Funkwhale, you can also subscribe to any podcast from its RSS feed!
-
-Many, many thanks to the numerous people who helped with the feature design, development and testing, and in particular
-to the members of the working group who met every week for months in order to get this done.
-
-Redesigned navigation, player and queue
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This release includes a full redesign of our navigation, player and queue. Overall, it should provide
-a better, less confusing experience, especially on mobile devices. This redesign was suggested
-14 months ago, and took a while, but thanks to the involvement and feedback of many people, we got it done!
-
-Improved search bar for searching remote objects
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The search bar now support fetching arbitrary objects using a URL. In particular, you can use this to quickly:
-
-- Subscribe to a remote library via its URL
-- Listen a public track from another pod
-- Subscribe to a channel
-
-Screening for sign-ups and custom sign-up form
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Instance admins can now configure their pod so that registrations required manual approval from a moderator. This
-is especially useful on private or semi-private pods where you don't want to close registrations completely,
-but don't want spam or unwanted users to join your pod.
-
-When this is enabled and a new user register, their request is put in a moderation queue, and moderators
-are notified by email. When the request is approved or refused, the user is also notified by email.
-
-In addition, it's also possible to customize the sign-up form by:
-
-- Providing a custom help text, in markdown format
-- Including additional fields in the form, for instance to ask the user why they want to join. Data collected through these fields is included in the sign-up request and viewable by the mods
-
-Federated reports
-^^^^^^^^^^^^^^^^^
-
-It's now possible to send a copy of a report to the server hosting the reported object, in order to make moderation easier and more distributed.
-
-This feature is inspired by Mastodon's current design, and should work with at least Funkwhale and Mastodon servers.
-
-Improved search performance
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Our search engine went through a full rewrite to make it faster. This new engine is enabled
-by default when using the search bar, or when searching for artists, albums and tracks. It leverages
-PostgreSQL full-text search capabilities.
-
-During our tests, we observed huge performance improvements after the switch, by an order of
-magnitude. This should be especially perceptible on pods with large databases, more modest hardware
-or hard drives.
-
-We plan to remove the old engine in an upcoming release. In the meantime, if anything goes wrong,
-you can switch back by setting ``USE_FULL_TEXT_SEARCH=false`` in your ``.env`` file.
-
-Enforced email verification
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The brand new ``ACCOUNT_EMAIL_VERIFICATION_ENFORCE`` setting can be used to make email verification
-mandatory for your users. It defaults to ``false``, and doesn't apply to superuser accounts created through
-the CLI.
-
-If you enable this, ensure you have a SMTP server configured too.
-
-User management through the server CLI
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-We now support user creation (incl. non-admin accounts), update and removal directly
-from the server CLI. Typical use cases include:
-
-- Changing a user password from the command line
-- Creating or updating users from deployments scripts or playbooks
-- Removing or granting permissions or upload quota to multiple users at once
-- Marking multiple users as inactive
-
-All user-related commands are available under the ``python manage.py fw users`` namespace.
-Please refer to the `Admin documentation <https://docs.funkwhale.audio/admin/commands.html#user-management>`_ for
-more information and instructions.
-
-Progressive web app [Manual change suggested, non-docker only]
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-We've made Funkwhale's Web UI a Progressive Web Application (PWA), in order to improve the user experience
-during offline use, and on mobile devices.
-
-In order to fully benefit from this change, if your pod isn't deployed using Docker, ensure
-the following instruction is present in your nginx configuration::
-
-    location /front/ {
-        # Add the following line in the /front/ location
-        add_header Service-Worker-Allowed "/";
-    }
-
-Postgres docker changed environment variable [manual action required, docker multi-container only]
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If you're running with docker and our multi-container setup, there was a breaking change starting in the 11.7 postgres image (https://github.com/docker-library/postgres/pull/658)
-
-You need to add this to your .env file: ``POSTGRES_HOST_AUTH_METHOD=trust``
-
-Newer deployments aren't affected.
-
-Upgrade from Postgres 10 to 11 [manual action required, docker all-in-one only]
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-With our upgrade to Alpine 3.10, the ``funkwhale/all-in-one`` image now includes PostgreSQL 11.
-
-In order to update to Funkwhale 0.21, you will first need to uprade Funkwhale's PostgreSQL database, following the steps below::
-
-    # open a shell as the Funkwhale user
-    sudo -u funkwhale -H bash
-
-    # move to the funkwhale data directory
-    # (replace this with your own if you used a different path)
-    cd /srv/funkwhale/data
-
-    # stop the funkwhale container
-    docker stop funkwhale
-
-    # backup the database files
-    cp -r data/ ../postgres.bak
-
-    # Upgrade the database
-    docker run --rm \
-        -v $(pwd)/data:/var/lib/postgresql/10/data \
-        -v $(pwd)/upgraded-postgresql:/var/lib/postgresql/11/data \
-        -e PGUSER=funkwhale \
-        -e POSTGRES_INITDB_ARGS="-U funkwhale --locale C --encoding UTF8" \
-        tianon/postgres-upgrade:10-to-11
-
-    # replace the Postgres 10 files with Postgres 11 files
-    mv data/ postgres-10
-    mv upgraded-postgresql/ data
-
-Once you have completed the Funkwhale upgrade with our regular instructions and everything works properly,
-you can remove the backups/old files::
-
-    sudo -u funkwhale -H bash
-    cd /srv/funkwhale/data
-    rm -rf ../postgres.bak
-    rm -rf postgres-10
-- 
GitLab