diff --git a/CHANGELOG b/CHANGELOG
index 050d3f15..bd07e7ae 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,24 +2,132 @@ This file describes the new features in each poezio release.
* Poezio 0.14 - dev
-- Plugin API:
- - BREAKING: E2EEPlugin.decrypt's `tab` parameter is now of type
- Optional[ChatTab] instead of ChatTab.
- - E2EEPlugin decrypts encrypted messages even when they have no body.
- - E2EEPlugin lets through already encrypted messages without giving them to the user.
+# Configuration changes:
-# Minor Changes
+- ADDED: `mam_sync`, `mam_sync_limit`.
+- CHANGED: `ca_cert_path` is commented out. Poezio will attempt to guess
+ common CA bundle paths. The option can be used to overwrite this behaviour.
+- REMOVED: `force_remote_bookmarks`.
+- REMOVED: options related to activity, mood, gaming, tune:
+ `enable_user_activity`, `enable_user_mood`, `enable_user_gaming`,
+ `enable_user_tune`, `display_activity_notifications`,
+ `display_mood_notifications`, `display_gaming_notifications`,
+ `display_tune_notifications`.
+- REMOVED: `deterministic_muc_colors`.
+# Changes
+
+- DEPRECATION: /leave is deprecated. Use /part or /close instead.
+- REMOVED: rich presence (activity, mood, gaming, tune) from poezio, alongside
+ with configuration options and commands: /activity, /mood,
+ and /gaming. These are moved to the new user_extras plugin.
+- REMOVED: non-deterministic nick colors in MUC.
+- REMOVED: XEP-0319 support removed for privacy and performance.
+- ADDED: New /request_voice command for moderated rooms
+- ADDED: Support using /join with an XMPP URI (xmpp:...?join)
+- Stop highlighting on MUC history messages just because they're delayed
+- Stop displaying the traceback in debug log when /xhtml fails
+- Add (back?) reason and altroom arguments for /destroy_room
+- Ensure launch.sh can be use outside the repository (Thanks kaliko)
+- #3517: Detect `/set option = value` pattern and do as it `/set option value`
+ was called.
+- #3411: Newlines now considered as word separator in input manipulation
+- #3385: Newlines taken into account on completion
+- #3371: Allow resizing certificate confirmation window
+- Make theming more configurable around nicks
+- Log MUC payload in the information buffer
+- /destroy_room: Allow empty altroom argument
+- impromptu: Wait for subject before configuring and inviting
+- Impromptu: rooms now have pronouceable short names
+- impromptu: ensure a room is empty before joining
+- impromptu: now uses mediated invites
+- Fetch from MAM by default when use_log is False.
+
+## Bug fixes
+
+- Ensure bookmark is present before removing it in /close.
+- Ensure bookmarks are saved correctly on method config change, and on /close.
+- Ensure nick is added to bookmark when specified
+- Do not crash on bookmark without a nickname (Thanks Ge0rG)
+- Ensure the correct tab is bookmarked on /bookmark and /join
+- /bookmark: treat empty nick as no nick to avoid failing on empty resource
+- xhtml: Add a new line after a blockquote
+- Fix closing a tab not in bookmarks
+- Disco barejid instead of domains on sent carbons. Follow-up of 5e40437.
+ (Thanks Ge0rG)
+- #3536: Only use JID internally when handling affiliations. Add nick if
+ present.
+- Prevent traceback in /last_activity.
+- Fix bad error handling when checking bookmarks storage
+- `/join / password` works again
+- Report available presence in tabs correctly
+- #3532: /display_correction now reports the correct time for private messages
+- #3527: Fix composing indicators not showing
+- #3519: Fix pasting text in data forms and bookmarkstab
+- #3432: Fix /me logging
+- Retrieve nick colors from the correct section
+- Do not scroll right by default in dataforms/bookmark text
+- Hack around the time limit for topic messages
+- Ensure MUC-PM logging filenames are generated as expected (Thanks Ge0rG, southerntofu)
+- Fix poezio displaying many times the same participant in the user list.
+- #3554: Fix default dataform field handling
+- #3553: Fix MUCListTab not joining selected MUCs
+- Fix /color completion (Thanks eijebong)
+
+## Plugins
+
+- ADDED: untrackme plugin. based on remove_get_trackers.
+- ADDED: user_extras plugin. /activity, /mood and /gaming moved from core.
+- ADDED: sticker plugin.
+- DEPRECATED: remove_get_trackers
- Reorder: Prevent GapTabs from being serialized and ignore when serialized as
they're recreated automatically.
-- Ensure bookmark is present before removing it in /close.
-- Impromptu rooms now have pronouceable short names
-- Poezio will now attempt to check common paths itself. ca_cert_path is
- commented in the config file by default and can be overriden.
+- Code: prevent traceback when not enough arguments
+- Link: Add support for aesgcm, gemini and gopher URIs
+- Contact: iterate all data forms (Thanks Ge0rG)
+- Fix plugins (embed, lastlog, otr, quote, time_marker) to use poezio.ui.types
+- Disco: Added error handling
-# Bug fixes
+## API
-- Reorder: Fix traceback on serialized gap tabs.
+- BREAKING: E2EEPlugin.decrypt's `tab` parameter is now of type
+ Optional[ChatTab] instead of ChatTab.
+- BREAKING: E2EEPlugin.supported_tab_types is now required
+- BREAKING: decrypt method is now async
+- E2EEPlugin decrypts encrypted messages even when they have no body.
+- E2EEPlugin lets through already encrypted messages without giving them
+ to the user lib (poezio-omemo, for example).
+- Correctly pass realjid to decrypt call for MUC messages
+- /_fingerprint command is added. Plugins can implement
+ `get_fingerprints` and `format_fingerprint` for it to return a (formatted)
+ value.
+
+# Under the hood
+
+- Moved development from 'master' to 'main' branch
+- Lots of type hints added (decorators, multiuserchat, shlex, common, muctab,
+ etc.) fixing many bugs
+- Lots of event handlers and calls are now async in poezio. Many callbacks removed.
+- Lots of refactoring
+- Performance improvements:
+ - Trim all messages by 24 bytes on 64-bit systems
+ - Reduce log parsing by a lot
+- #3457: No more safeJID calls.
+- Rework some features to use slixmpp's API instead of custom poezio code
+ (i.e., muc's set_subject, set_role, set_affiliation, destroy_room,
+ cancel_config, set_room_config, and most events)
+- Split commands from Core
+- Require typing_extensions package
+- Require setuptools package explicitly because of pkg_resources' import
+ (Thanks Thomas)
+- Replace asyncio.ensure_future with asyncio.create_task
+
+# Meta
+
+- Improve README, badges, new text, more links
+- Update install.txt with instructions for guix (Thanks Raghav)
+- Remove references to dev.louiz.org. Everything is now happening at
+ lab.louiz.org.
* Poezio 0.13.1