https://github.com/matrix-org/dendrite fork for cross-compile for ARM
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

330 lines
17 KiB

6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
  1. # Changelog
  2. ## Dendrite 0.3.11 (2021-03-02)
  3. ### Fixes
  4. - **SECURITY:** A bug in SQLite mode which could cause the registration flow to complete unexpectedly for existing accounts has been fixed (PostgreSQL deployments are not affected)
  5. - A panic in the federation sender has been fixed when shutting down destination queues
  6. - The `/keys/upload` endpoint now correctly returns the number of one-time keys in response to an empty upload request
  7. ## Dendrite 0.3.10 (2021-02-17)
  8. ### Features
  9. * In-memory caches will now gradually evict old entries, reducing idle memory usage
  10. * Federation sender queues will now be fully unloaded when idle, reducing idle memory usage
  11. * The `power_level_content_override` option is now supported in `/createRoom`
  12. * The `/send` endpoint will now attempt more servers in the room when trying to fetch missing events or state
  13. ### Fixes
  14. * A panic in the membership updater has been fixed
  15. * Events in the sync API that weren't excluded from sync can no longer be incorrectly excluded from sync by backfill
  16. * Retrieving remote media now correcly respects the locally configured maximum file size, even when the `Content-Length` header is unavailable
  17. * The `/send` endpoint will no longer hit the database more than once to find servers in the room
  18. ## Dendrite 0.3.9 (2021-02-04)
  19. ### Features
  20. * Performance of initial/complete syncs has been improved dramatically
  21. * State events that can't be authed are now dropped when joining a room rather than unexpectedly causing the room join to fail
  22. * State events that already appear in the timeline will no longer be requested from the sync API database more than once, which may reduce memory usage in some cases
  23. ### Fixes
  24. * A crash at startup due to a conflict in the sync API account data has been fixed
  25. * A crash at startup due to mismatched event IDs in the federation sender has been fixed
  26. * A redundant check which may cause the roomserver memberships table to get out of sync has been removed
  27. ## Dendrite 0.3.8 (2021-01-28)
  28. ### Fixes
  29. * A well-known lookup regression in version 0.3.7 has been fixed
  30. ## Dendrite 0.3.7 (2021-01-26)
  31. ### Features
  32. * Sync filtering support (for event types, senders and limits)
  33. * In-process DNS caching support for deployments where a local DNS caching resolver is not available (disabled by default)
  34. * Experimental support for MSC2444 (Peeking over Federation) has been merged
  35. * Experimental federation support for MSC2946 (Spaces Summary) has been merged
  36. ### Fixes
  37. * Dendrite will no longer load a given event more than once for state resolution, which may help to reduce memory usage and database I/O slightly in some cases
  38. * Large well-known responses will no longer use significant amounts of memory
  39. ## Dendrite 0.3.6 (2021-01-18)
  40. ### Features
  41. * Experimental support for MSC2946 (Spaces Summary) has been merged
  42. * Send-to-device messages have been refactored and now take advantage of having their own stream position, making delivery more reliable
  43. * Unstable features and MSCs are now listed in `/versions` (contributed by [sumitks866](https://github.com/sumitks866))
  44. * Well-known and DNS SRV record results for federated servers are now cached properly, improving outbound federation performance and reducing traffic
  45. ### Fixes
  46. * Updating forward extremities will no longer result in so many unnecessary state snapshots, reducing on-going disk usage in the roomserver database
  47. * Pagination tokens for `/messages` have been fixed, which should improve the reliability of scrollback/pagination
  48. * Dendrite now avoids returning `null`s in fields of the `/sync` response, and omitting some fields altogether when not needed, which should fix sync issues with Element Android
  49. * Requests for user device lists now time out quicker, which prevents federated `/send` requests from also timing out in many cases
  50. * Empty push rules are no longer sent over and over again in `/sync`
  51. * An integer overflow in the device list updater which could result in panics on 32-bit platforms has been fixed (contributed by [Lesterpig](https://github.com/Lesterpig))
  52. * Event IDs are now logged properly in federation sender and sync API consumer errors
  53. ## Dendrite 0.3.5 (2021-01-11)
  54. ### Features
  55. * All `/sync` streams are now logically separate after a refactoring exercise
  56. ### Fixes
  57. * Event references are now deeply checked properly when calculating forward extremities, reducing the amount of forward extremities in most cases, which improves RAM utilisation and reduces the work done by state resolution
  58. * Sync no longer sends incorrect `next_batch` tokens with old stream positions, reducing flashbacks of old messages in clients
  59. * The federation `/send` endpoint no longer uses the request context, which could result in some events failing to be persisted if the sending server gave up the HTTP connection
  60. * Appservices can now auth as users in their namespaces properly
  61. ## Dendrite 0.3.4 (2020-12-18)
  62. ### Features
  63. * The stream tokens for `/sync` have been refactored, giving PDUs, typing notifications, read receipts, invites and send-to-device messages their own respective stream positions, greatly improving the correctness of sync
  64. * A new roominfo cache has been added, which results in less database hits in the roomserver
  65. * Prometheus metrics have been added for sync requests, destination queues and client API event send perceived latency
  66. ### Fixes
  67. * Event IDs are no longer recalculated so often in `/sync`, which reduces CPU usage
  68. * Sync requests are now woken up correctly for our own device list updates
  69. * The device list stream position is no longer lost, so unnecessary device updates no longer appear in every other sync
  70. * A crash on concurrent map read/writes has been fixed in the stream token code
  71. * The roomserver input API no longer starts more worker goroutines than needed
  72. * The roomserver no longer uses the request context for queued tasks which could lead to send requests failing to be processed
  73. * A new index has been added to the sync API current state table, which improves lookup performance significantly
  74. * The client API `/joined_rooms` endpoint no longer incorrectly returns `null` if there are 0 rooms joined
  75. * The roomserver will now query appservices when looking up a local room alias that isn't known
  76. * The check on registration for appservice-exclusive namespaces has been fixed
  77. ## Dendrite 0.3.3 (2020-12-09)
  78. ### Features
  79. * Federation sender should now use considerably less CPU cycles and RAM when sending events into large rooms
  80. * The roomserver now uses considerably less CPU cycles by not calculating event IDs so often
  81. * Experimental support for [MSC2836](https://github.com/matrix-org/matrix-doc/pull/2836) (threading) has been merged
  82. * Dendrite will no longer hold federation HTTP connections open unnecessarily, which should help to reduce ambient CPU/RAM usage and hold fewer long-term file descriptors
  83. ### Fixes
  84. * A bug in the latest event updater has been fixed, which should prevent the roomserver from losing forward extremities in some rare cases
  85. * A panic has been fixed when federation is disabled (contributed by [kraem](https://github.com/kraem))
  86. * The response format of the `/joined_members` endpoint has been fixed (contributed by [alexkursell](https://github.com/alexkursell))
  87. ## Dendrite 0.3.2 (2020-12-02)
  88. ### Features
  89. * Federation can now be disabled with the `global.disable_federation` configuration option
  90. ### Fixes
  91. * The `"since"` parameter is now checked more thoroughly in the sync API, which led to a bug that could cause forgotten rooms to reappear (contributed by [kaniini](https://github.com/kaniini))
  92. * The polylith now proxies signing key requests through the federation sender correctly
  93. * The code for checking if remote servers are allowed to see events now no longer wastes CPU time retrieving irrelevant state events
  94. ## Dendrite 0.3.1 (2020-11-20)
  95. ### Features
  96. * Memory optimisation by reference passing, significantly reducing the number of allocations and duplication in memory
  97. * A hook API has been added for experimental MSCs, with an early implementation of MSC2836
  98. * The last seen timestamp and IP address are now updated automatically when calling `/sync`
  99. * The last seen timestamp and IP address are now reported in `/_matrix/client/r0/devices` (contributed by [alexkursell](https://github.com/alexkursell))
  100. * An optional configuration option `sync_api.real_ip_header` has been added for specifying which HTTP header contains the real client IP address (for if Dendrite is running behind a reverse HTTP proxy)
  101. * Partial implementation of `/_matrix/client/r0/admin/whois` (contributed by [DavidSpenler](https://github.com/DavidSpenler))
  102. ### Fixes
  103. * A concurrency bug has been fixed in the federation API that could cause Dendrite to crash
  104. * The error when registering a username with invalid characters has been corrected (contributed by [bodqhrohro](https://github.com/bodqhrohro))
  105. ## Dendrite 0.3.0 (2020-11-16)
  106. ### Features
  107. * Read receipts (both inbound and outbound) are now supported (contributed by [S7evinK](https://github.com/S7evinK))
  108. * Forgetting rooms is now supported (contributed by [S7evinK](https://github.com/S7evinK))
  109. * The `-version` command line flag has been added (contributed by [S7evinK](https://github.com/S7evinK))
  110. ### Fixes
  111. * User accounts that contain the `=` character can now be registered
  112. * Backfilling should now work properly on rooms with world-readable history visibility (contributed by [MayeulC](https://github.com/MayeulC))
  113. * The `gjson` dependency has been updated for correct JSON integer ranges
  114. * Some more client event fields have been marked as omit-when-empty (contributed by [S7evinK](https://github.com/S7evinK))
  115. * The `build.sh` script has been updated to work properly on all POSIX platforms (contributed by [felix](https://github.com/felix))
  116. ## Dendrite 0.2.1 (2020-10-22)
  117. ### Fixes
  118. * Forward extremities are now calculated using only references from other extremities, rather than including outliers, which should fix cases where state can become corrupted ([#1556](https://github.com/matrix-org/dendrite/pull/1556))
  119. * Old state events will no longer be processed by the sync API as new, which should fix some cases where clients incorrectly believe they have joined or left rooms ([#1548](https://github.com/matrix-org/dendrite/pull/1548))
  120. * More SQLite database locking issues have been resolved in the latest events updater ([#1554](https://github.com/matrix-org/dendrite/pull/1554))
  121. * Internal HTTP API calls are now made using H2C (HTTP/2) in polylith mode, mitigating some potential head-of-line blocking issues ([#1541](https://github.com/matrix-org/dendrite/pull/1541))
  122. * Roomserver output events no longer incorrectly flag state rewrites ([#1557](https://github.com/matrix-org/dendrite/pull/1557))
  123. * Notification levels are now parsed correctly in power level events ([gomatrixserverlib#228](https://github.com/matrix-org/gomatrixserverlib/pull/228), contributed by [Pestdoktor](https://github.com/Pestdoktor))
  124. * Invalid UTF-8 is now correctly rejected when making federation requests ([gomatrixserverlib#229](https://github.com/matrix-org/gomatrixserverlib/pull/229), contributed by [Pestdoktor](https://github.com/Pestdoktor))
  125. ## Dendrite 0.2.0 (2020-10-20)
  126. ### Important
  127. * This release makes breaking changes for polylith deployments, since they now use the multi-personality binary rather than separate binary files
  128. * Users of polylith deployments should revise their setups to use the new binary - see the Features section below
  129. * This release also makes breaking changes for Docker deployments, as are now publishing images to Docker Hub in separate repositories for monolith and polylith
  130. * 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)
  131. * 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
  132. * [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
  133. * 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
  134. ### Features
  135. * Dendrite polylith deployments now use a special multi-personality binary, rather than separate binaries
  136. * This is cleaner, builds faster and simplifies deployment
  137. * The first command line argument states the component to run, e.g. `./dendrite-polylith-multi roomserver`
  138. * Database migrations are now run at startup
  139. * Invalid UTF-8 in requests is now rejected (contributed by [Pestdoktor](https://github.com/Pestdoktor))
  140. * Fully read markers are now implemented in the client API (contributed by [Lesterpig](https://github.com/Lesterpig))
  141. * Missing auth events are now retrieved from other servers in the room, rather than just the event origin
  142. * `m.room.create` events are now validated properly when processing a `/send_join` response
  143. * The roomserver now implements `KindOld` for handling historic events without them becoming forward extremity candidates, i.e. for backfilled or missing events
  144. ### Fixes
  145. * State resolution v2 performance has been improved dramatically when dealing with large state sets
  146. * The roomserver no longer processes outlier events if they are already known
  147. * A SQLite locking issue in the previous events updater has been fixed
  148. * The client API `/state` endpoint now correctly returns state after the leave event, if the user has left the room
  149. * The client API `/createRoom` endpoint now sends cumulative state to the roomserver for the initial room events
  150. * The federation API `/send` endpoint now correctly requests the entire room state from the roomserver when needed
  151. * Some internal HTTP API paths have been fixed in the user API (contributed by [S7evinK](https://github.com/S7evinK))
  152. * A race condition in the rate limiting code resulting in concurrent map writes has been fixed
  153. * Each component now correctly starts a consumer/producer connection in monolith mode (when using Kafka)
  154. * State resolution is no longer run for single trusted state snapshots that have been verified before
  155. * A crash when rolling back the transaction in the latest events updater has been fixed
  156. * Typing events are now ignored when the sender domain does not match the origin server
  157. * Duplicate redaction entries no longer result in database errors
  158. * Recursion has been removed from the code path for retrieving missing events
  159. * `QueryMissingAuthPrevEvents` now returns events that have no associated state as if they are missing
  160. * Signing key fetchers no longer ignore keys for the local domain, if retrieving a key that is not known in the local config
  161. * Federation timeouts have been adjusted so we don't give up on remote requests so quickly
  162. * `create-account` no longer relies on the device database (contributed by [ThatNerdyPikachu](https://github.com/ThatNerdyPikachu))
  163. ### Known issues
  164. * 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
  165. ## Dendrite 0.1.0 (2020-10-08)
  166. First versioned release of Dendrite.
  167. ## Client-Server API Features
  168. ### Account registration and management
  169. * Registration: By password only.
  170. * Login: By password only. No fallback.
  171. * Logout: Yes.
  172. * Change password: Yes.
  173. * Link email/msisdn to account: No.
  174. * Deactivate account: Yes.
  175. * Check if username is available: Yes.
  176. * Account data: Yes.
  177. * OpenID: No.
  178. ### Rooms
  179. * Room creation: Yes, including presets.
  180. * Joining rooms: Yes, including by alias or `?server_name=`.
  181. * Event sending: Yes, including transaction IDs.
  182. * Aliases: Yes.
  183. * Published room directory: Yes.
  184. * Kicking users: Yes.
  185. * Banning users: Yes.
  186. * Inviting users: Yes, but not third-party invites.
  187. * Forgetting rooms: No.
  188. * Room versions: All (v1 * v6)
  189. * Tagging: Yes.
  190. ### User management
  191. * User directory: Basic support.
  192. * Ignoring users: No.
  193. * Groups/Communities: No.
  194. ### Device management
  195. * Creating devices: Yes.
  196. * Deleting devices: Yes.
  197. * Send-to-device messaging: Yes.
  198. ### Sync
  199. * Filters: Timeline limit only. Rest unimplemented.
  200. * Deprecated `/events` and `/initialSync`: No.
  201. ### Room events
  202. * Typing: Yes.
  203. * Receipts: No.
  204. * Read Markers: No.
  205. * Presence: No.
  206. * Content repository (attachments): Yes.
  207. * History visibility: No, defaults to `joined`.
  208. * Push notifications: No.
  209. * Event context: No.
  210. * Reporting content: No.
  211. ### End-to-End Encryption
  212. * Uploading device keys: Yes.
  213. * Downloading device keys: Yes.
  214. * Claiming one-time keys: Yes.
  215. * Querying key changes: Yes.
  216. * Cross-Signing: No.
  217. ### Misc
  218. * Server-side search: No.
  219. * Guest access: Partial.
  220. * Room previews: No, partial support for Peeking via MSC2753.
  221. * Third-Party networks: No.
  222. * Server notices: No.
  223. * Policy lists: No.
  224. ## Federation Features
  225. * Querying keys (incl. notary): Yes.
  226. * Server ACLs: Yes.
  227. * Sending transactions: Yes.
  228. * Joining rooms: Yes.
  229. * Inviting to rooms: Yes, but not third-party invites.
  230. * Leaving rooms: Yes.
  231. * Content repository: Yes.
  232. * Backfilling / get_missing_events: Yes.
  233. * Retrieving state of the room (`/state` and `/state_ids`): Yes.
  234. * Public rooms: Yes.
  235. * Querying profile data: Yes.
  236. * Device management: Yes.
  237. * Send-to-Device messaging: Yes.
  238. * Querying/Claiming E2E Keys: Yes.
  239. * Typing: Yes.
  240. * Presence: No.
  241. * Receipts: No.
  242. * OpenID: No.