Releases: matrix-org/dendrite
Releases · matrix-org/dendrite
Dendrite 0.9.7
Features
- Initial supporting code to enable full-text search has been merged (although not ready for use yet)
- Newly created rooms now have higher default power levels for enabling encryption, setting server ACLs or sending tombstone events
- Incoming signing key updates over federation are now queued in JetStream for processing, so that they cannot be dropped accidentally
Fixes
- A race condition between the roomserver output events being generated, forward extremities being updated and room info being updated has been fixed
- Appservices will no longer receive invite events which they are not interested in, which caused heavy load in some cases or excessive request sizes in others
- A bug in state resolution v2 where events could incorrectly be classified as control events has been fixed
- A bug in state resolution v2 where some specific events with unexpected non-empty state keys are dropped has been fixed
- A bug in state resolution v2 when fetching auth events vs partial state has been fixed
- Stale device lists should now be handled correctly for all user IDs, which may help with E2EE reliability
- A number of database writer issues have been fixed in the user API and sync API, which should help to reduce
database is locked
errors with SQLite databases - Database migrations should now be detected more reliably to prevent unexpected errors at startup
- A number of minor database transaction issues have been fixed, particularly for assigning NIDs in the roomserver, cleaning up device keys and cleaning up notifications
- The database query for finding shared users in the sync API has been optimised, using significantly less CPU time as a result
Dendrite 0.9.6
Features
- The appservice API has been refactored for improved performance and stability
- The appservice database has been deprecated, as the roomserver output stream is now used as the data source instead
- The
generate-config
tool has been updated to support additional scenarios, i.e. for CI configuration generation and generating both monolith and polylith skeleton config files
Fixes
- The username length check has been fixed on new account creation
- The length of the
type
,sender
,state_key
androom_id
fields in events are now verified by number of codepoints rather than bytes, fixing the "Cat Overflow" bug - UTF-16 surrogate handling in the canonical JSON implementation has been fixed
- A race condition when starting the keyserver has been fixed
- A race condition when configuring HTTP servers and routing at startup has been fixed
- A bug where the incorrect limit was used for lazy-loading memberships has been fixed
- The number of push notifications will now be sent to the push gateway
- A missing index causing slow performance on the sync API send-to-device table has been added (contributed by PiotrKozimor)
- Event auth will now correctly check for the existence of the
"creator"
field in create events
Dendrite 0.9.5
Fixes
- The roomserver will now correctly unreject previously rejected events if necessary when reprocessing
- The handling of event soft-failure has been improved on the roomserver input by no longer applying rejection rules and still calculating state before the event if possible
- The federation
/state
and/state_ids
endpoints should now return the correct error code when the state isn't known instead of returning a HTTP 500 - The federation
/event
should now return outlier events correctly instead of returning a HTTP 500 - A bug in the federation backoff allowing zero intervals has been corrected
- The
create-account
utility will no longer error if the homeserver URL ends in a trailing slash - A regression in
/sync
introduced in 0.9.4 should be fixed
Dendrite 0.9.4
Fixes
- A bug in the roomserver around handling rejected outliers has been fixed
- Backfilled events will now use the correct history visibility where possible
- The device list updater backoff has been fixed, which should reduce the number of outbound HTTP requests and
Failed to query device keys for some users
log entries for dead servers - The
/sync
endpoint will no longer incorrectly return room entries for retired invites which could cause some rooms to show up in the client "Historical" section - The
/createRoom
endpoint will now correctly populateis_direct
in invite membership events, which may help clients to classify direct messages correctly - The
create-account
tool will now log an error if the shared secret is not set in the Dendrite config - A couple of minor bugs have been fixed in the membership lazy-loading
- Queued EDUs in the federation API are now cached properly
Dendrite 0.9.3
Important
- This is a security release to fix a vulnerability within event auth, affecting all versions of Dendrite before 0.9.3. Upgrading to this version is highly recommended. For more information, see here.
Fixes
- Dendrite will now correctly parse the
"events_default"
power level value for event auth.
Dendrite 0.9.2
Features
- Dendrite now supports history visibility on the
/sync
,/messages
and/context
endpoints- It should now be possible to view the history of a room in more cases (as opposed to limiting scrollback to the join event or defaulting to the restrictive
"join"
visibility rule as before)
- It should now be possible to view the history of a room in more cases (as opposed to limiting scrollback to the join event or defaulting to the restrictive
- The default room version for newly created rooms is now room version 9
- New admin endpoint
/_dendrite/admin/resetPassword/{userID}
has been added, which replaces the-reset-password
flag increate-account
- The
create-account
binary now uses shared secret registration over HTTP to create new accounts, which fixes a number of problems with account data and push rules not being configured correctly for new accounts - The internal HTTP APIs for polylith deployments have been refactored for correctness and consistency
- The federation API will now automatically clean up some EDUs that have failed to send within a certain period of time
- The
/hierarchy
endpoint will now return potentially joinable rooms (contributed by texuf) - The user directory will now show or hide users correctly
Fixes
- Send-to-device messages should no longer be incorrectly duplicated in
/sync
- The federation sender will no longer create unnecessary destination queues as a result of a logic error
- A bug where database migrations may not execute properly when upgrading from older versions has been fixed
- A crash when failing to update user account data has been fixed
- A race condition when generating notification counts has been fixed
- A race condition when setting up NATS has been fixed (contributed by brianathere)
- Stale cache data for membership lazy-loading is now correctly invalidated when doing a complete sync
- Data races within user-interactive authentication have been fixed (contributed by tak-hntlabs)
Dendrite 0.9.1
Fixes
- Upgrades a dependency which caused issues building Dendrite with Go 1.19
- The roomserver will no longer give up prematurely after failing to call
/state_ids
- Removes the faulty room info cache, which caused of a number of race conditions and occasional bugs (including when creating and joining rooms)
- The media endpoint now sets the
Cache-Control
header correctly to prevent web-based clients from hitting media endpoints excessively - The sync API will now advance the PDU stream position correctly in all cases (contributed by sergekh2)
- The sync API will now delete the correct range of send-to-device messages when advancing the stream position
- The device list
changed
key in the/sync
response should now return the correct users - A data race when looking up missing state has been fixed
- The
/send_join
API is now applying stronger validation to the received membership event
Dendrite 0.9.0
Please note that Go 1.18 is now required to build this version.
Features
- Dendrite now uses Ristretto for managing in-memory caches
- Should improve cache utilisation considerably over time by more intelligently selecting and managing cache entries compared to the previous LRU-based cache
- Defaults to a 1GB cache size if not configured otherwise
- The estimated cache size in memory and maximum age can now be configured with new configuration options to prevent unbounded cache growth
- Added support for serving the
/.well-known/matrix/client
hint directly from Dendrite- Configurable with the new configuration option
- Refactored membership updater, which should eliminate some bugs caused by the membership table getting out of sync with the room state
- The User API is now responsible for sending account data updates to other components, which may fix some races and duplicate account data events
- Optimised database query for checking whether a remote server is allowed to request an event over federation without using anywhere near as much CPU time (PostgreSQL only)
- Database migrations have been refactored to eliminate some problems that were present with
goose
and upgrading from older Dendrite versions - Media fetching will now use the
/v3
endpoints for downloading media from remote homeservers - HTTP 404 and HTTP 405 errors from the client-facing APIs should now be returned with CORS headers so that web-based clients do not produce incorrect access control warnings for unknown endpoints
- Some preparation work for full history visibility support
Fixes
- Fixes a crash that could occur during event redaction
- The
/members
endpoint will no longer incorrectly return HTTP 500 as a result of some invite events - Send-to-device messages should now be ordered more reliably and the last position in the stream updated correctly
- Parsing of appservice configuration files is now less strict (contributed by Kab1r)
- The sync API should now identify shared users correctly when waking up for E2EE key changes
- The federation
/state
endpoint will now return a HTTP 403 when the state before an event isn't known instead of a HTTP 500 - Presence timestamps should now be calculated with the correct precision
- A race condition in the roomserver's room info has been fixed
- A race condition in the sync API has been fixed
Dendrite 0.8.9
Features
- Incoming device list updates over federation are now queued in JetStream for processing so that they will no longer block incoming federation transactions and should never end up dropped, which will hopefully help E2EE reliability
- The
/context
endpoint now returns"start"
and"end"
parameters to allow pagination from a context call - The
/messages
endpoint will no longer return"end"
when there are no more messages remaining - Deactivated user accounts will now leave all rooms automatically
- New admin endpoint
/_dendrite/admin/evacuateUser/{userID}
has been added for forcing a local user to leave all joined rooms - Dendrite will now automatically attempt to raise the file descriptor limit at startup if it is too low
Fixes
- A rare crash when retrieving remote device lists has been fixed
- Fixes a bug where events were not redacted properly over federation
- The
/invite
endpoints will now return an error instead of silently proceeding if the user ID is obviously malformed
Dendrite 0.8.8
Features
- The performance of state resolution has been increased significantly for larger rooms
- A number of changes have been made to rate limiting:
- Logged in users will now be rate-limited on a per-session basis rather than by remote IP
- Rate limiting no longer applies to admin or appservice users
- It is now possible to configure additional users that are exempt from rate limiting using the
exempt_user_ids
option in therate_limiting
section of the Dendrite config
- Setting state is now idempotent via the client API state endpoints
Fixes
- Room upgrades now properly propagate tombstone events to remote servers
- Room upgrades will no longer send tombstone events if creating the upgraded room fails
- A crash has been fixed when evaluating restricted room joins