Skip to content

Releases: matrix-org/dendrite

Dendrite 0.8.7

01 Jun 10:40
f41931b
Compare
Choose a tag to compare

Features

  • Support added for room version 10

Fixes

  • A number of state handling bugs have been fixed, which previously resulted in missing state events, unexpected state deletions, reverted memberships and unexpectedly rejected/soft-failed events in some specific cases
  • Fixed destination queue performance issues as a result of missing indexes, which speeds up outbound federation considerably
  • A bug which could cause the /register endpoint to return HTTP 500 has been fixed

Dendrite 0.8.6

26 May 12:01
45c4c00
Compare
Choose a tag to compare

Features

  • Room versions 8 and 9 are now marked as stable
  • Dendrite can now assist remote users to join restricted rooms via /make_join and /send_join

Fixes

  • The sync API no longer returns immediately on /sync requests unnecessarily if it can be avoided
  • A race condition has been fixed in the sync API when updating presence via /sync
  • A race condition has been fixed sending E2EE keys to remote servers over federation when joining rooms
  • The trusted_private_chat preset should now grant power level 100 to all participant users, which should improve the user experience of direct messages
  • Invited users are now authed correctly in restricted rooms
  • The join_authorised_by_users_server key is now correctly stripped in restricted rooms when updating the membership event
  • Appservices should now receive invite events correctly
  • Device list updates should no longer contain optional fields with null values
  • The /deactivate endpoint has been fixed to no longer confuse Element with incorrect completed flows

Dendrite 0.8.5

13 May 12:17
6af3538
Compare
Choose a tag to compare

Features

Fixes

  • Monolith deployments will no longer panic at startup if given a config file that does not include the internal_api and external_api options
  • State resolution v2 now correctly identifies other events related to power events, which should fix some event auth issues
  • The latest events updater will no longer implicitly trust the new forward extremities when calculating the current room state, which may help to avoid some state resets
  • The one-time key count is now correctly returned in /sync even if the request otherwise timed out, which should reduce the chance that unnecessary one-time keys will be uploaded by clients
  • The create-account tool should now work properly when the database is configured using the global connection pool

Dendrite 0.8.4

10 May 11:44
1897e2f
Compare
Choose a tag to compare

Fixes

  • Fixes a regression introduced in the previous version where appservices, push and phone-home statistics would not work over plain HTTP
  • Adds missing indexes to the sync API output events table, which should significantly improve /sync performance and reduce database CPU usage
  • Building Dendrite with the bimg thumbnailer should now work again (contributed by database64128)

Dendrite 0.8.3

09 May 16:31
6b3c183
Compare
Choose a tag to compare

Features

  • Open registration is now harder to enable, which should reduce the chance that Dendrite servers will be used to conduct spam or abuse attacks
    • Dendrite will only enable open registration if you pass the --really-enable-open-registration command line flag at startup
    • If open registration is enabled but this command line flag is not passed, Dendrite will fail to start up
  • Dendrite now supports phone-home statistic reporting
    • These statistics include things like the number of registered and active users, some configuration options and platform/environment details, to help us to understand how Dendrite is used
    • This is not enabled by default — it must be enabled in the global.report_stats section of the config file
  • Monolith installations can now be configured with a single global database connection pool (in global.database in the config) rather than having to configure each component separately
    • This also means that you no longer need to balance connection counts between different components, as they will share the same larger pool
    • Specific components can override the global database settings by specifying their own database block
    • To use only the global pool, you must configure global.database and then remove the database block from all of the component sections of the config file
  • A new admin API endpoint /_dendrite/admin/evacuateRoom/{roomID} has been added, allowing server admins to forcefully part all local users from a given room
  • The sync notifier now only loads members for the relevant rooms, which should reduce CPU usage and load on the database
  • A number of component interfaces have been refactored for cleanliness and developer ease
  • Event auth errors in the log should now be much more useful, including the reason for the event failures
  • The forward extremity calculation in the roomserver has been simplified
  • A new index has been added to the one-time keys table in the keyserver which should speed up key count lookups

Fixes

  • Dendrite will no longer process events for rooms where there are no local users joined, which should help to reduce CPU and RAM usage
  • A bug has been fixed in event auth when changing the user levels in m.room.power_levels events
  • Usernames should no longer be duplicated when no room name is set
  • Device display names should now be correctly propagated over federation
  • A panic when uploading cross-signing signatures has been fixed
  • Presence is now correctly limited in /sync based on the filters
  • The presence stream position returned by /sync will now be correct if no presence events were returned
  • The media /config endpoint will no longer return a maximum upload size field if it is configured to be unlimited in the Dendrite config
  • The server notices room will no longer produce "User is already joined to the room" errors
  • Consumer errors will no longer flood the logs during a graceful shutdown
  • Sync API and federation API consumers will no longer unnecessarily query added state events matching the one in the output event
  • The Sync API will no longer unnecessarily track invites for remote users

Dendrite 0.8.2

27 Apr 15:04
3422193
Compare
Choose a tag to compare

Features

  • Lazy-loading has been added to the /sync endpoint, which should speed up syncs considerably
  • Filtering has been added to the /messages endpoint
  • The room summary now contains "heroes" (up to 5 users in the room) for clients to display when no room name is set
  • The existing lazy-loading caches will now be used by /messages and /context so that member events will not be sent to clients more times than necessary
  • The account data stream now uses the provided filters
  • The built-in NATS Server has been updated to version 2.8.0
  • The /state and /state_ids endpoints will now return M_NOT_FOUND for rejected events
  • Repeated calls to the /redact endpoint will now be idempotent when a transaction ID is given
  • Dendrite should now be able to run as a Windows service under Service Control Manager

Fixes

  • Fictitious presence updates will no longer be created for users which have not sent us presence updates, which should speed up complete syncs considerably
  • Uploading cross-signing device signatures should now be more reliable, fixing a number of bugs with cross-signing
  • All account data should now be sent properly on a complete sync, which should eliminate problems with client settings or key backups appearing to be missing
  • Account data will now be limited correctly on incremental syncs, returning the stream position of the most recent update rather than the latest stream position
  • Account data will not be sent for parted rooms, which should reduce the number of left/forgotten rooms reappearing in clients as empty rooms
  • The TURN username hash has been fixed which should help to resolve some problems when using TURN for voice calls (contributed by fcwoknhenuxdfiyv)
  • Push rules can no longer be modified using the account data endpoints
  • Querying account availability should now work properly in polylith deployments
  • A number of bugs with sync filters have been fixed
  • A default sync filter will now be used if the request contains a filter ID that does not exist
  • The pushkey_ts field is now using seconds instead of milliseconds
  • A race condition when gracefully shutting down has been fixed, so JetStream should no longer cause the process to exit before other Dendrite components are finished shutting down

Dendrite 0.8.1

07 Apr 16:13
955e6eb
Compare
Choose a tag to compare

Fixes

  • A bug which could result in the sync API deadlocking due to lock contention in the notifier has been fixed

Dendrite 0.8.0

07 Apr 15:09
87b1ed1
Compare
Choose a tag to compare

Features

  • Support for presence has been added
    • Presence is not enabled by default
    • The global.presence.enable_inbound and global.presence.enable_outbound configuration options allow configuring inbound and outbound presence separately
  • Support for room upgrades via the /room/{roomID}/upgrade endpoint has been added (contributed by DavidSpenler, alexkursell)
  • Support for ignoring users has been added
  • Joined and invite user counts are now sent in the /sync room summaries
  • Queued federation and stale device list updates will now be staggered at startup over an up-to 2 minute warm-up period, rather than happening all at once
  • Memory pressure created by the sync notifier has been reduced
  • The EDU server component has now been removed, with the work being moved to more relevant components

Fixes

  • It is now possible to set the power_level_content_override when creating a room to include power levels over 100
  • /send_join and /state responses will now not unmarshal the JSON twice
  • The stream event consumer for push notifications will no longer request membership events that are irrelevant
  • Appservices will no longer incorrectly receive state events twice

Dendrite 0.7.0

25 Mar 14:53
08d995d
Compare
Choose a tag to compare

Features

  • The roomserver input API will now queue all events into NATS, which provides better crash resilience
  • The roomserver input API now configures per-room consumers, which should use less memory
  • Canonical aliases can now be added and removed
  • MSC2946 Spaces Summary now works correctly, both locally and over federation
  • Healthcheck endpoints are now available at:
    • /_dendrite/monitor/up, which will return 200 when Dendrite is ready to accept requests
    • /_dendrite/monitor/health, which will return 200 if healthy and 503 if degraded for some reason
  • The X-Matrix federation authorisation header now includes a destination field, as per MSC3383
  • The /sync endpoint now uses less memory by only ranging state for rooms that the user has participated in
  • The /messages endpoint now accepts stream positions in both the from and to parameters
  • Dendrite will now log a warning at startup if the file descriptor limit is set too low
  • The federation client will now attempt to use HTTP/2 if available
  • The federation client will now attempt to resume TLS sessions if possible, to reduce handshake overheads
  • The built-in NATS Server has been updated to version 2.7.4
  • NATS streams that don't match the desired configuration will now be recreated automatically
  • When performing a graceful shutdown, Dendrite will now wait for NATS Server to shutdown completely, which should avoid some corruption of data on-disk
  • The create-account tool has seen a number of improvements, will now ask for passwords automatically

Fixes

  • The /sync endpoint will no longer lose state events when truncating the timeline for history visibility
  • The /context endpoint now works correctly with lazy_load_members
  • The /directory/list/room/{roomID} endpoint now correctly reports whether a room is published in the server room directory or not
  • Some bugs around appservice username validation have been fixed
  • Roomserver output messages are no longer unnecessarily inflated by state events, which should reduce the number of NATS message size errors
  • Stream IDs for device list updates are now always 64-bit, which should fix some problems when running Dendrite on a 32-bit system
  • Purging room state in the sync API has been fixed after a faulty database query was corrected
  • The federation client will now release host records for remote destinations after 5 minutes instead of holding them in memory forever
  • Remote media requests will now correctly return an error if the file cannot be found or downloaded
  • A panic in the media API that could happen when the remote file doesn't exist has been fixed
  • Various bugs around membership state and invites have been fixed
  • The memberships table will now be correctly updated when rejecting a federated invite
  • The client API and appservice API will now access the user database using the user API rather than accessing the database directly

Dendrite 0.6.5

04 Mar 16:20
86d4eef
Compare
Choose a tag to compare

Features

  • Early support for push notifications has been added, with support for push rules, pushers, HTTP push gateways and the /notifications endpoint (contributions by danpe, PiotrKozimor and tommie)
  • Spaces Summary (MSC2946) is now correctly supported (when msc2946 is enabled in the config)
  • All media API endpoints are now available under the /v3 namespace
  • Profile updates (display name and avatar) are now sent asynchronously so they shouldn't block the client for a very long time
  • State resolution v2 has been optimised further to considerably reduce the number of memory allocations
  • State resolution v2 will no longer duplicate events unnecessarily when calculating the auth difference
  • The create-account tool now has a -reset-password option for resetting the passwords of existing accounts
  • The /sync endpoint now calculates device list changes much more quickly with less RAM used
  • The /messages endpoint now lazy-loads members correctly

Fixes

  • Read receipts now work correctly by correcting bugs in the stream positions and receipt coalescing
  • Topological sorting of state and join responses has been corrected, which should help to reduce the number of auth problems when joining new federated rooms
  • Media thumbnails should now work properly after having unnecessarily strict rate limiting removed
  • The roomserver no longer holds transactions for as long when processing input events
  • Uploading device keys and cross-signing keys will now correctly no-op if there were no changes
  • Parameters are now remembered correctly during registration
  • Devices can now only be deleted within the appropriate UIA flow
  • The /context endpoint now returns 404 instead of 500 if the event was not found
  • SQLite mode will no longer leak memory as a result of not closing prepared statements