diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..c219e7d
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,228 @@
+# ChangeLog for the aerc project
+
+All notable changes to this project will be documented in this file.
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
+
+## [Unreleased](https://git.sr.ht/~rjarry/aerc/log/master)
+
+### Added
+
+- Read-only mbox backend support.
+- Import/Export mbox files with `:import-mbox` and `:export-mbox`.
+- `address-book-cmd` can now also be specified in `accounts.conf`.
+
+### Changed
+
+- Aerc will no longer exit while a send is in progress.
+- When scrolling through large folders, client side threading is now debounced
+  to avoid lagging.
+- The provided awk filters are now POSIX compliant and should work on MacOS and
+  BSD.
+
+### Fixed
+
+- Transient crashes when closing tabs.
+- Binding a command to `<c-i>` and `<c-m>`.
+- Reselection after delete and scroll when client side threading is enabled.
+- `check-mail` now works when the default folder is empty on startup.
+
+## [0.11.0](https://git.sr.ht/~rjarry/aerc/refs/0.11.0) - 2022-07-11
+
+### Added
+
+- Deal with calendar invites with `:accept`, `:accept-tentative` and `:decline`.
+- IMAP cache support.
+- Maildir++ support.
+- Background mail count polling for all folders.
+- Authentication-Results display (DKIM, SPF & DMARC).
+- Folder-specific key bindings.
+- Customizable PGP icons.
+- Open URLs from messages with `:open-link`.
+- Forward all individual attachments with `:forward -A`.
+
+### Changed
+
+- Messages are now deselected after performing a command. Use `:remark` to
+  reselect the previously selected messages and chain other commands.
+- Pressing `<Enter>` in the default postpone folder now runs `:recall` instead
+  of `:view`.
+- PGP signed/encrypted indicators have been reworked.
+- The `threading-enabled` option now affects if message threading should be
+  enabled at startup. This option no longer conflicts with `:toggle-threads`.
+
+### Fixed
+
+- `:pipe`, `:save` and `:open` for signed and/or encrypted PGP messages.
+- Messages that have failed `gpg` encryption/signing are no longer sent.
+- Recalling attachments from drafts.
+
+## [0.10.0](https://git.sr.ht/~rjarry/aerc/refs/0.10.0) - 2022-05-07
+
+### Added
+
+- Format specifier for compact folder names in dirlist.
+- Customizable, per-folder status line.
+- Allow binding commands to `<` and `>` keys.
+- Optional filter to parse ICS files (uses `python3` vobject library).
+- Save all attachments with `:save -a`.
+- Native `gpg` support.
+- PGP `auto-sign` and `opportunistic-encrypt` options.
+- Attach your PGP public key to a message with `:attach-key`.
+
+### Fixed
+
+- Stack overflow with faulty `References` headers when `:toggle-threads` is
+  enabled.
+
+## [0.9.0](https://git.sr.ht/~rjarry/aerc/refs/0.9.0) - 2022-03-21
+
+### Added
+
+- Allow `:pipe` on multiple selected messages.
+- Client side on-the-fly message threading with `:toggle-threads` (conflicts
+  with existing `threading-enabled` option).
+- Per-account, better status line.
+- Consecutive, incremental `:search` and `:filter` support.
+- Foldable tree for directory list.
+- `Bcc` and `Body` in `mailto:` handler.
+- Fuzzy tab completion for commands and folders.
+- Key pass though mode for the message viewer to allow searching with `less`.
+
+### Changed
+
+- Use terminfo for setting terminal title.
+
+## [0.8.2](https://git.sr.ht/~rjarry/aerc/refs/0.8.2) - 2022-02-19
+
+### Added
+
+- New `colorize` filter with diff, multi-level quotes and URL coloring.
+- XDG desktop entry to use as default `mailto:` handler.
+- IMAP automatic reconnect.
+- Recover drafts after crash with `:recover`.
+- Show possible actions with user configured bindings when reviewing a message.
+- Allow setting any header in email templates.
+- Improved `:change-folder` responsiveness.
+- New `:compose` option to never include your own address when replying.
+
+### Changed
+
+- Templates and style sets are now searched from multiple directories. Not from
+  a single hard-coded folder set at build time. In addition of the configured
+  `PREFIX/share/aerc/*` folders at build time, aerc now also looks into
+  `~/.config/aerc/*`, `~/.local/share/aerc/*`, `/usr/local/share/aerc/*` and
+  `/usr/share/aerc/*`
+- A warning is displayed when trying to configure account specific bindings
+  for a non-existent account.
+
+### Fixed
+
+- `Ctrl-h` binding not working.
+- Open files leaks for maildir and notmuch.
+
+## 0.8.1 - 2022-02-20 [YANKED]
+
+## 0.8.0 - 2022-02-19 [YANKED]
+
+## [0.7.1](https://git.sr.ht/~rjarry/aerc/refs/0.7.1) - 2022-01-15
+
+### Added
+
+- IMAP low level TCP settings.
+- Experimental IMAP server-side and notmuch threading.
+- `:recall` now works from any folder.
+- PGP/MIME signing and encryption.
+- Account specific bindings.
+
+### Fixed
+
+- Address book completion for multiple addresses.
+- Maildir external mailbox changes monitoring.
+
+## 0.7.0 - 2022-01-14 [YANKED]
+
+## [0.6.0](https://git.sr.ht/~rjarry/aerc/refs/0.6.0) - 2021-11-09
+
+*The project was forked to https://git.sr.ht/~rjarry/aerc.*
+
+### Added
+
+- Allow more modifiers for key bindings.
+- Dynamic dates in message list.
+- Match any header in filters specifiers.
+
+### Fixed
+
+- Don't read entire messages into memory.
+
+## [0.5.0](https://git.sr.ht/~sircmpwn/aerc/refs/0.5.0) - 2020-11-10
+
+### Added
+
+- Remove folder with `:rmdir`.
+- Configurable style sets.
+- UI context aware options and styling.
+- oauthbearer support for SMTP.
+- IMAP sort support.
+
+## [0.4.0](https://git.sr.ht/~sircmpwn/aerc/refs/0.4.0) - 2020-05-20
+
+### Added
+
+- Address book completion.
+- Initial PGP support using an internal key store.
+- Messages can now be selected with `:mark`.
+- Drafts handing with `:postpone` and `:recall`.
+- Tab management with `:move-tab` and `:pin-tab`.
+- Add arbitrary headers in the compose window with `:header`.
+- Interactive prompt with `:choose`.
+- Notmuch labels improvements.
+- Support setting some headers in message templates.
+
+### Changed
+
+- `aerc.conf` ini parser only uses `=` as delimiter. `:` is now ignored.
+
+## [0.3.0](https://git.sr.ht/~sircmpwn/aerc/refs/0.3.0) - 2019-11-21
+
+### Added
+
+- A new notmuch backend is available. See `aerc-notmuch(5)` for details.
+- Message templates now let you change the default reply and forwarded message
+  templates, as well as add new templates of your own. See `aerc-templates(7)`
+  for details.
+- Mouse input is now optionally available and has been rigged up throughout the
+  UI, set `[ui]mouse-enabled=true` in `aerc.conf` to enable.
+- `:cc` and `:bcc` commands are available in the message composer.
+- Users may now configure arbitrary message headers for editing in the message
+  composer.
+
+## [0.2.0](https://git.sr.ht/~sircmpwn/aerc/refs/0.2.0) - 2019-07-29
+
+### Added
+
+- Maildir & sendmail transport support
+- Search and filtering are supported (via `/` and `\` by default)
+- `aerc mailto:...` now opens the composer in running aerc instance
+- Initial tab completion support has been added
+- Improved headers and addressing in the composer and message view
+- Message attachments may now be added in the composer
+- Commands can now be run in the background with `:exec` or `:pipe -b`
+- A new triggers system allows running aerc commands when new emails arrive,
+  which may (for example) be used to send desktop notifications or move new
+  emails to a folder
+
+### Changed
+
+- The filters have been rewritten in awk, dropping the Python dependencies.
+  `w3m` and `dante` are both still required for HTML email, but the HTML filter
+  has been commented out in the default config file.
+- The default keybindings and configuration options have changed considerably,
+  and users are encouraged to pull the latest versions out of `/usr/share` and
+  re-apply their modifications to them, or to at least review the diff with
+  their current configurations. aerc may not behave properly without taking
+  this into account.
+
+## [0.1.0](https://git.sr.ht/~sircmpwn/aerc/refs/0.1.0) - 2019-06-03
+
+Initial release.
diff --git a/README.md b/README.md
index 06db966..12aa6ac 100644
--- a/README.md
+++ b/README.md
@@ -116,6 +116,10 @@ you did not break anything.
 - If applicable, update unit tests.
 - If adding a new feature, please consider adding new tests.
 - Do not forget to update the docs.
+- If your commit brings visible changes for end-users, add an entry in the
+  *Unreleased* section of the
+  [CHANGELOG.md](https://git.sr.ht/~rjarry/aerc/tree/master/item/CHANGELOG.md)
+  file.
 
 Once you are happy with your work, you can create a commit (or several
 commits). Follow these general rules:
@@ -199,3 +203,5 @@ Submit *confirmed* bug reports and *confirmed* feature requests on
 [https://todo.sr.ht/~rjarry/aerc](https://todo.sr.ht/~rjarry/aerc).
 
 [License](https://git.sr.ht/~rjarry/aerc/tree/master/item/LICENSE).
+
+[Change log](https://git.sr.ht/~rjarry/aerc/tree/master/item/CHANGELOG.md).
diff --git a/contrib/release.sh b/contrib/release.sh
index 12a0c5f..65f5d7b 100755
--- a/contrib/release.sh
+++ b/contrib/release.sh
@@ -9,16 +9,20 @@ read -rp "next tag ($next_tag)? " n
 if [ -n "$n" ]; then
 	next_tag="$n"
 fi
+tag_url="https://git.sr.ht/~rjarry/aerc/refs/$next_tag"
 
-echo "======= Updating version in Makefile..."
+echo "======= Creating release commit..."
 sed -i Makefile -e "s/$prev_tag/$next_tag/g"
-git add Makefile
+sed -i CHANGELOG.md -e "s|^## \[Unreleased\].*|&\n\n## [$next_tag]($tag_url) - $(date +%Y-%m-%d)|"
+git add Makefile CHANGELOG.md
 git commit -sm "Release version $next_tag"
 
 echo "======= Creating tag..."
-git tag --edit --sign \
+changes=$(sed -n "/^## \[$next_tag\].*/,/^## \[$prev_tag\].*/{//!p;}" \
+	CHANGELOG.md | sed '1d;$d;s/^#\+/#/' )
+git -c core.commentchar='%' tag --edit --sign \
 	-m "Release $next_tag highlights:" \
-	-m "$(git log --format='- %s' $prev_tag..)" \
+	-m "$changes" \
 	-m "Thanks to all contributors!" \
 	-m "~\$ git shortlog -sn $prev_tag..$next_tag
 $(git shortlog -sn $prev_tag..)" \
@@ -46,7 +50,7 @@ Hi all,
 
 I am glad to announce the release of aerc $next_tag.
 
-https://git.sr.ht/~rjarry/aerc/refs/$next_tag
+$tag_url
 
 $(git tag -l --format='%(contents)' "$next_tag" | sed -n '/BEGIN PGP SIGNATURE/q;p')
 EOF