This repository has been archived by the owner on Nov 14, 2024. It is now read-only.
Releases: matrix-org/dendrite
Releases · matrix-org/dendrite
Dendrite 0.8.7
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
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
Features
- New living documentation available at https://matrix-org.github.io/dendrite/, including new installation instructions
- The built-in NATS Server has been updated to version 2.8.2
Fixes
- Monolith deployments will no longer panic at startup if given a config file that does not include the
internal_api
andexternal_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
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
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 will only enable open registration if you pass the
- 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 thedatabase
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
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 returnM_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
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
Features
- Support for presence has been added
- Presence is not enabled by default
- The
global.presence.enable_inbound
andglobal.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
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 adestination
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 thefrom
andto
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 withlazy_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
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