diff --git a/CHANGES.md b/CHANGES.md index 17fb75be..d05b871a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,89 +1,149 @@ -# Dendrite 0.1.0 (2020-10-08) +# Changelog + +## Dendrite 0.2.0 (2020-10-20) + +### Important + +* This release makes breaking changes for polylith deployments, since they now use the multi-personality binary rather than separate binary files + * Users of polylith deployments should revise their setups to use the new binary - see the Features section below +* This release also makes breaking changes for Docker deployments, as are now publishing images to Docker Hub in separate repositories for monolith and polylith + * New repositories are as follows: [matrixdotorg/dendrite-monolith](https://hub.docker.com/repository/docker/matrixdotorg/dendrite-monolith) and [matrixdotorg/dendrite-polylith](https://hub.docker.com/repository/docker/matrixdotorg/dendrite-polylith) + * The new `latest` tag will be updated with the latest release, and new versioned tags, e.g. `v0.2.0`, will preserve specific release versions + * [Sample Compose configs](https://github.com/matrix-org/dendrite/tree/master/build/docker) have been updated - if you are running a Docker deployment, please review the changes + * Images for the client API proxy and federation API proxy are no longer provided as they are unsupported - please use [nginx](docs/nginx/) (or another reverse proxy) instead + +### Features + +* Dendrite polylith deployments now use a special multi-personality binary, rather than separate binaries + * This is cleaner, builds faster and simplifies deployment + * The first command line argument states the component to run, e.g. `./dendrite-polylith-multi roomserver` +* Database migrations are now run at startup +* Invalid UTF-8 in requests is now rejected (contributed by [Pestdoktor](https://github.com/Pestdoktor)) +* Fully read markers are now implemented in the client API (contributed by [Lesterpig](https://github.com/Lesterpig)) +* Missing auth events are now retrieved from other servers in the room, rather than just the event origin +* `m.room.create` events are now validated properly when processing a `/send_join` response +* The roomserver now implements `KindOld` for handling historic events without them becoming forward extremity candidates, i.e. for backfilled or missing events + +### Fixes + +* State resolution v2 performance has been improved dramatically when dealing with large state sets +* The roomserver no longer processes outlier events if they are already known +* A SQLite locking issue in the previous events updater has been fixed +* The client API `/state` endpoint now correctly returns state after the leave event, if the user has left the room +* The client API `/createRoom` endpoint now sends cumulative state to the roomserver for the initial room events +* The federation API `/send` endpoint now correctly requests the entire room state from the roomserver when needed +* Some internal HTTP API paths have been fixed in the user API (contributed by [S7evinK](https://github.com/S7evinK)) +* A race condition in the rate limiting code resulting in concurrent map writes has been fixed +* Each component now correctly starts a consumer/producer connection in monolith mode (when using Kafka) +* State resolution is no longer run for single trusted state snapshots that have been verified before +* A crash when rolling back the transaction in the latest events updater has been fixed +* Typing events are now ignored when the sender domain does not match the origin server +* Duplicate redaction entries no longer result in database errors +* Recursion has been removed from the code path for retrieving missing events +* `QueryMissingAuthPrevEvents` now returns events that have no associated state as if they are missing +* Signing key fetchers no longer ignore keys for the local domain, if retrieving a key that is not known in the local config +* Federation timeouts have been adjusted so we don't give up on remote requests so quickly +* `create-account` no longer relies on the device database (contributed by [ThatNerdyPikachu](https://github.com/ThatNerdyPikachu)) + +### Known issues + +* Old events can incorrectly appear in `/sync` as if they are new when retrieving missing events from federated servers, causing them to appear at the bottom of the timeline in clients + +## Dendrite 0.1.0 (2020-10-08) First versioned release of Dendrite. ## Client-Server API Features ### Account registration and management -- Registration: By password only. -- Login: By password only. No fallback. -- Logout: Yes. -- Change password: Yes. -- Link email/msisdn to account: No. -- Deactivate account: Yes. -- Check if username is available: Yes. -- Account data: Yes. -- OpenID: No. + +* Registration: By password only. +* Login: By password only. No fallback. +* Logout: Yes. +* Change password: Yes. +* Link email/msisdn to account: No. +* Deactivate account: Yes. +* Check if username is available: Yes. +* Account data: Yes. +* OpenID: No. ### Rooms -- Room creation: Yes, including presets. -- Joining rooms: Yes, including by alias or `?server_name=`. -- Event sending: Yes, including transaction IDs. -- Aliases: Yes. -- Published room directory: Yes. -- Kicking users: Yes. -- Banning users: Yes. -- Inviting users: Yes, but not third-party invites. -- Forgetting rooms: No. -- Room versions: All (v1 - v6) -- Tagging: Yes. + +* Room creation: Yes, including presets. +* Joining rooms: Yes, including by alias or `?server_name=`. +* Event sending: Yes, including transaction IDs. +* Aliases: Yes. +* Published room directory: Yes. +* Kicking users: Yes. +* Banning users: Yes. +* Inviting users: Yes, but not third-party invites. +* Forgetting rooms: No. +* Room versions: All (v1 * v6) +* Tagging: Yes. ### User management -- User directory: Basic support. -- Ignoring users: No. -- Groups/Communities: No. + +* User directory: Basic support. +* Ignoring users: No. +* Groups/Communities: No. ### Device management -- Creating devices: Yes. -- Deleting devices: Yes. -- Send-to-device messaging: Yes. + +* Creating devices: Yes. +* Deleting devices: Yes. +* Send-to-device messaging: Yes. ### Sync -- Filters: Timeline limit only. Rest unimplemented. -- Deprecated `/events` and `/initialSync`: No. + +* Filters: Timeline limit only. Rest unimplemented. +* Deprecated `/events` and `/initialSync`: No. ### Room events -- Typing: Yes. -- Receipts: No. -- Read Markers: No. -- Presence: No. -- Content repository (attachments): Yes. -- History visibility: No, defaults to `joined`. -- Push notifications: No. -- Event context: No. -- Reporting content: No. + +* Typing: Yes. +* Receipts: No. +* Read Markers: No. +* Presence: No. +* Content repository (attachments): Yes. +* History visibility: No, defaults to `joined`. +* Push notifications: No. +* Event context: No. +* Reporting content: No. ### End-to-End Encryption -- Uploading device keys: Yes. -- Downloading device keys: Yes. -- Claiming one-time keys: Yes. -- Querying key changes: Yes. -- Cross-Signing: No. + +* Uploading device keys: Yes. +* Downloading device keys: Yes. +* Claiming one-time keys: Yes. +* Querying key changes: Yes. +* Cross-Signing: No. ### Misc -- Server-side search: No. -- Guest access: Partial. -- Room previews: No, partial support for Peeking via MSC2753. -- Third-Party networks: No. -- Server notices: No. -- Policy lists: No. + +* Server-side search: No. +* Guest access: Partial. +* Room previews: No, partial support for Peeking via MSC2753. +* Third-Party networks: No. +* Server notices: No. +* Policy lists: No. ## Federation Features -- Querying keys (incl. notary): Yes. -- Server ACLs: Yes. -- Sending transactions: Yes. -- Joining rooms: Yes. -- Inviting to rooms: Yes, but not third-party invites. -- Leaving rooms: Yes. -- Content repository: Yes. -- Backfilling / get_missing_events: Yes. -- Retrieving state of the room (`/state` and `/state_ids`): Yes. -- Public rooms: Yes. -- Querying profile data: Yes. -- Device management: Yes. -- Send-to-Device messaging: Yes. -- Querying/Claiming E2E Keys: Yes. -- Typing: Yes. -- Presence: No. -- Receipts: No. -- OpenID: No. \ No newline at end of file + +* Querying keys (incl. notary): Yes. +* Server ACLs: Yes. +* Sending transactions: Yes. +* Joining rooms: Yes. +* Inviting to rooms: Yes, but not third-party invites. +* Leaving rooms: Yes. +* Content repository: Yes. +* Backfilling / get_missing_events: Yes. +* Retrieving state of the room (`/state` and `/state_ids`): Yes. +* Public rooms: Yes. +* Querying profile data: Yes. +* Device management: Yes. +* Send-to-Device messaging: Yes. +* Querying/Claiming E2E Keys: Yes. +* Typing: Yes. +* Presence: No. +* Receipts: No. +* OpenID: No. \ No newline at end of file diff --git a/internal/version.go b/internal/version.go index a9e245d4..040ffa32 100644 --- a/internal/version.go +++ b/internal/version.go @@ -16,7 +16,7 @@ var build string const ( VersionMajor = 0 - VersionMinor = 1 + VersionMinor = 2 VersionPatch = 0 VersionTag = "" // example: "rc1" )