dendrite

Dendrite is a second-generation Matrix homeserver written in Go!

APACHE-2.0 License

Stars
5.4K
Committers
186

Bot releases are hidden (Show)

dendrite - Dendrite 0.13.7 Latest Release

Published by S7evinK 6 months ago

Fixes

  • Fixed an issue where the displayname/avatar of an invited user was replaced with the inviter's details
  • Improved server startup performance by avoiding unnecessary room ACL queries
    • This change reduces memory footprint as it caches ACL regex patterns once instead of for each room
    • Unnecessary Relay related queries have been removed. Note: To use relays, you now need to explicitly enable them using the federation_api.enable_relays config
  • Fixed space summaries over federation
  • Improved usage of external NATS JetStream by reusing existing connections instead of opening new ones unnecessarily

Features

  • Modernized Appservices (contributed by tulir)
  • Added event reporting with Synapse Admin endpoints for querying them
  • Updated dependencies

New Contributors

Full Changelog: https://github.com/matrix-org/dendrite/compare/v0.13.6...v0.13.7

dendrite - Dendrite 0.13.6

Published by S7evinK 9 months ago

Upgrading to this version is highly recommended, as it contains several QoL improvements.

Fixes

  • Use AckExplicitPolicy for JetStream consumers, so messages don't pile up in NATS
  • A rare panic when assigning a state key NID has been fixed
  • A rare panic when checking powerlevels has been fixed
  • Notary keys request for all keys now work correctly
  • Spec compliance:
    • Return M_INVALID_PARAM querying room aliases
    • Handle empty from parameter when requesting /messages
    • Add CORP headers on media endpoints
    • Remove aliases from /publicRooms responses
    • Allow + in MXIDs (Contributed by RosstheRoss)
  • Fixes membership transitions from knock to join in knock_restricted rooms
  • Incremental syncs now batch query events (Contributed by recht)
  • Move /joined_members back to the clientAPI/roomserver, which should make bridges happier again
  • Backfilling from other servers now only uses at max 100 events instead of potentially thousands

New Contributors

Full Changelog: https://github.com/matrix-org/dendrite/compare/v0.13.5...v0.13.6

dendrite - Dendrite 0.13.5

Published by S7evinK 10 months ago

Upgrading to this version is highly recommended, as it fixes several long-standing bugs in
our CanonicalJSON implementation.

Fixes

  • Convert unicode escapes to lowercase (gomatrixserverlib)
  • Fix canonical json utf-16 surrogate pair detection logic (gomatrixserverlib)
  • Handle negative zero and exponential numbers in Canonical JSON verification (gomatrixserverlib)
  • Avoid logging unnecessary messages when unable to fetch server keys if multiple fetchers are used (gomatrixserverlib)
  • Issues around the device list updater have been fixed, which should ensure that there are always
    workers available to process incoming device list updates.
  • A panic in the /hierarchy endpoints used for spaces has been fixed (client-server and server-server API)
  • Fixes around the way we handle database transactions (including a potential connection leak)
  • ACLs are now updated when received as outliers
  • A race condition, which could lead to bridges instantly leaving a room after joining it, between the SyncAPI and
    Appservices has been fixed

Features

  • Appservice login is now supported!
  • Users can now kick themselves (used by some bridges)

What's Changed

New Contributors

Full Changelog: https://github.com/matrix-org/dendrite/compare/v0.13.4...v0.13.5

dendrite - Dendrite 0.13.4

Published by S7evinK 12 months ago

Upgrading to this version is highly recommended, as it fixes a long-standing bug in the state resolution
algorithm.

Fixes:

  • The "device list updater" now de-duplicates the servers to fetch devices from on startup. (This also
    avoids spamming the logs when shutting down.)
  • A bug in the state resolution algorithm has been fixed. This bug could result in users "being reset"
    out of rooms and other missing state events due to calculating the wrong state.
  • A bug when setting notifications from Element Android has been fixed by implementing MSC3987

Features

  • Updated dependencies
    • Internal NATS Server has been updated from v2.9.19 to v2.9.23

Full Changelog: https://github.com/matrix-org/dendrite/compare/v0.13.3...v0.13.4

dendrite - Dendrite 0.13.3

Published by S7evinK about 1 year ago

Fixes:

  • The user_id query parameter when authenticating is now used correctly (contributed by tulir)
  • Invitations are now correctly pushed to devices
  • A bug which could result in the corruption of m.direct account data has been fixed

Features

  • Sliding Sync proxy can be configured in the /.well-known/matrix/client response
  • Room version 11 is now supported
  • Clients can request the federation event_format when creating filters
  • Many under the hood improvements for MSC4014: Pseudonymous Identities

Other

  • Dendrite now requires Go 1.20 if building from source

New Contributors

Full Changelog: https://github.com/matrix-org/dendrite/compare/v0.13.2...v0.13.3

dendrite - Dendrite 0.13.2

Published by S7evinK about 1 year ago

Fixes:

  • Migrations in SQLite are now prepared on the correct context (transaction or database)
  • The InputRoomEvent stream now has a maximum age of 24h, which should help with slow start up times of NATS JetStream (contributed by neilalexander)
  • Event size checks are more in line with Synapse
  • Requests to /messages have been optimized, possibly reducing database round trips
  • Re-add the revision of Dendrite when building from source (Note: This only works if git is installed)
  • Getting local members to notify has been optimized, which should significantly reduce memory allocation and cache usage
  • When getting queried about user profiles, we now return HTTP404 if the user/profiles does not exist
  • Background federated joins should now be fixed and not timeout after a short time
  • Database connections are now correctly re-used
  • Restored the old behavior of the /purgeRoom admin endpoint (does not evacuate the room before purging)
  • Don't expose information about the system when trying to download files that don't exist

Features

  • Further improvements and fixes for MSC4014: Pseudonymous Identities
    • Lookup correct prev events in the sync API
    • Populate prev_sender correctly in the sync API
    • Event federation should work better
  • Added new dendrite_up Prometheus metric, containing the version of Dendrite
  • Space summaries (MSC2946) have been moved from MSC to being natively supported
  • For easier issue investigation, logs for application services now contain the application service ID (contributed by maxberger)
  • The default room version to use when creating rooms can now be configured using room_server.default_room_version

New Contributors

Full Changelog: https://github.com/matrix-org/dendrite/compare/v0.13.1...v0.13.2

dendrite - Dendrite 0.13.1

Published by S7evinK over 1 year ago

This releases fixes a long-standing "off-by-one" error which could result in state resets. Upgrading to this version is highly recommended.

When deduplicating state events, we were checking if the event in question was already in a state snapshot. If it was in a previous state snapshot, we would
then remove it from the list of events to store. If this happened, we were, unfortunately, skipping the next event to check. This resulted in
events getting stored in state snapshots where they may not be needed. When we now compared two of those state snapshots, one of them
contained the skipped event, while the other didn't. This difference possibly shouldn't exist, resulting in unexpected state resets and explains
reports of missing state events as well.

Rooms where a state reset occurred earlier should, hopefully, reconcile over time.

Fixes:

  • A long-standing "off-by-one" error has been fixed, which could result in state resets
  • Roomserver Prometheus Metrics are available again

Features

  • Updated dependencies
    • Internal NATS Server has been updated from v2.9.15 to v2.9.19

Full Changelog: https://github.com/matrix-org/dendrite/compare/v0.13.0...v0.13.1

dendrite - Dendrite 0.13.0

Published by S7evinK over 1 year ago

Features

  • Results in responses to /search now highlight words more accurately and not only the search terms as before
  • Support for connecting to appservices listening on unix sockets has been added (contributed by cyberb)
  • Admin APIs for token authenticated registration have been added (contributed by santhoshivan23)
  • Initial support for MSC4014: Pseudonymous Identities
    • This is highly experimental, things like changing usernames/avatars, inviting users, upgrading rooms isn't working

Fixes

  • m.upload.size is now optional, finally allowing uploads with unlimited file size
  • A bug while resolving server names has been fixed (contributed by anton-molyboha)
  • Application services should only receive one invitation instead of 2 (or worse), which could result in state resets previously
  • Several admin endpoints are now using POST instead of GET
  • /delete_devices now uses user-interactive authentication
  • Several "membership" (e.g /kick, /ban) endpoints are using less heavy database queries to check if the user is allowed to perform this action
  • /3pid endpoints are now available on /v3 instead of the /unstable prefix
  • Upgrading rooms ignores state events of other users, which could result in failed upgrades before
  • Uploading key backups with a wrong version now returns M_WRONG_ROOM_KEYS_VERSION
  • A potential state reset when joining the same room multiple times in short sequence has been fixed
  • A bug where we returned the full event as redacted_because in redaction events has been fixed
  • The displayname and avatar_url can now be set to empty strings
  • Unsafe hotserving of files has been fixed (contributed by joshqou)
  • Joining new rooms would potentially return "redacted" events, due to history visibility not being set correctly, this could result in events being rejected
  • Backfilling resulting in unsuported room version '' should now be solved

Other

  • Huge refactoring of Dendrite and gomatrixserverlib

New Contributors

Full Changelog: https://github.com/matrix-org/dendrite/compare/v0.12.0...v0.13.0

dendrite - Dendrite 0.12.0

Published by S7evinK over 1 year ago

⚠️ The binary for dendrite-monolith-server was renamed to dendrite, please modify any existing scripts/services

Features

  • The userapi and keyserver have been merged (no actions needed regarding the database)
  • The internal NATS JetStream server is now using logrus for logging (contributed by dvob)
  • The roomserver database has been refactored to have separate interfaces when working with rooms and events. Also includes increased usage of the cache to avoid database round trips. (database is unchanged)
  • The pinecone demo now shuts down more cleanly
  • The Helm chart now has the ability to deploy a Grafana chart as well (contributed by genofire)
  • Support for listening on unix sockets has been added (contributed by cyberb)
  • The internal NATS server was updated to v2.9.15
  • Initial support for runtime/trace has been added, to further track down long-running tasks

Fixes

  • The session_id is now correctly set when using SQLite
  • An issue where device keys could be removed if a device ID is reused has been fixed
  • A possible DoS issue related to relations has been fixed (reported by sleroq)
  • When backfilling events, errors are now ignored if we still could fetch events

Other

  • ⚠️ DEPRECATION: Polylith/HTTP API mode has been removed
  • The default endpoint to report usages stats to has been updated
dendrite - Dendrite 0.11.1

Published by S7evinK over 1 year ago

⚠️ DEPRECATION WARNING: This is the last release to have polylith and HTTP API mode. Future releases are monolith only.

Features

  • Dendrite can now be compiled against Go 1.20
  • Initial store and forward support has been added
  • A landing page showing that Dendrite is running has been added (contributed by LukasLJL)

Fixes

  • /sync is now using significantly less database round trips when using Postgres, resulting in faster initial syncs, allowing larger accounts to login again
  • Many under the hood pinecone improvements
  • Publishing rooms is now possible again
dendrite - Dendrite 0.11.0

Published by S7evinK over 1 year ago

The last three missing federation API Sytests have been fixed - bringing us to 100% server-server Synapse parity, with client-server parity at 93% 🎉

Features

  • Added /_dendrite/admin/purgeRoom/{roomID} to clean up the database
  • The default room version was updated to 10 (contributed by FSG-Cat)

Fixes

  • An oversight in the create-config binary, which now correctly sets the media path if specified (contributed by BieHDC)
  • The Helm chart now uses the $.Chart.AppVersion as the default image version to pull, with the possibility to override it (contributed by genofire)
dendrite - Dendrite 0.10.9

Published by S7evinK almost 2 years ago

Features

  • Stale device lists are now cleaned up on startup, removing entries for users the server doesn't share a room with anymore
  • Dendrite now has its own Helm chart
  • Guest access is now handled correctly (disallow joins, kick guests on revocation of guest access, as well as over federation)

Fixes

  • Push rules have seen several tweaks and fixes, which should, for example, fix notifications for m.read_receipts
  • Outgoing presence will now correctly be sent to newly joined hosts
  • Fixes the /_dendrite/admin/resetPassword/{userID} admin endpoint to use the correct variable
  • Federated backfilling for medium/large rooms has been fixed
  • /login causing wrong device list updates has been resolved
  • /sync should now return the correct room summary heroes
  • The default config options for recaptcha_sitekey_class and recaptcha_form_field are now set correctly
  • /messages now omits empty state to be more spec compliant (contributed by handlerug)
  • /sync has been optimised to only query state events for history visibility if they are really needed
dendrite - Dendrite 0.10.8

Published by neilalexander almost 2 years ago

Features

  • The built-in NATS Server has been updated to version 2.9.8
  • A number of under-the-hood changes have been merged for future virtual hosting support in Dendrite (running multiple domain names on the same Dendrite deployment)

Fixes

  • Event auth handling of invites has been refactored, which should fix some edge cases being handled incorrectly
  • Fix a bug when returning an empty protocol list, which could cause Element to display "The homeserver may be too old to support third party networks" when opening the public room directory
  • The sync API will no longer filter out the user's own membership when using lazy-loading
  • Dendrite will now correctly detect JetStream consumers being deleted, stopping the consumer goroutine as needed
  • A panic in the federation API where the server list could go out of bounds has been fixed
  • Blacklisted servers will now be excluded when querying joined servers, which improves CPU usage and performs less unnecessary outbound requests
  • A database writer will now be used to assign state key NIDs when requesting NIDs that may not exist yet
  • Dendrite will now correctly move local aliases for an upgraded room when the room is upgraded remotely
  • Dendrite will now correctly move account data for an upgraded room when the room is upgraded remotely
  • Missing state key NIDs will now be allocated on request rather than returning an error
  • Guest access is now correctly denied on a number of endpoints
  • Presence information will now be correctly sent for new private chats
  • A number of unspecced fields have been removed from outbound /send transactions
dendrite - Dendrite 0.10.7

Published by neilalexander almost 2 years ago

NOTE: Docker users may need to change the ownership of the Dendrite files (config, JetStream, logs, media and fulltext index path) to the dendrite user (UID 1337) to complete this upgrade.

Features

  • Dendrite will now use a native SQLite port when building with CGO_ENABLED=0
  • A number of thirdparty endpoints have been added, improving support for appservices

Fixes

  • The "state" section of the /sync response is no longer limited, so state events should not be dropped unexpectedly
  • The deduplication of the "timeline" and "state" sections in /sync is now performed after applying history visibility, so state events should not be dropped unexpectedly
  • The prev_batch token returned by /sync is now calculated after applying history visibility, so that the pagination boundaries are correct
  • The room summary membership counts in /sync should now be calculated properly in more cases
  • A false membership leave event should no longer be sent down /sync as a result of retiring an accepted invite (contributed by tak-hntlabs)
  • Presence updates are now only sent to other servers for which the user shares rooms
  • A bug which could cause a panic when converting events into the ClientEvent format has been fixed
dendrite - Dendrite 0.10.6

Published by neilalexander almost 2 years ago

Features

  • History visibility checks have been optimised, which should speed up response times on a variety of endpoints (including /sync, /messages, /context and others) and reduce database load
  • The built-in NATS Server has been updated to version 2.9.4
  • Some other minor dependencies have been updated

Fixes

  • A panic has been fixed in the sync API PDU stream which could cause requests to fail
  • The /members response now contains the room_id field, which may fix some E2EE problems with clients using the JS SDK (contributed by ashkitten)
  • The auth difference calculation in state resolution v2 has been tweaked for clarity (and moved into gomatrixserverlib with the rest of the state resolution code)
dendrite - Dendrite 0.10.5

Published by neilalexander almost 2 years ago

Features

  • It is now possible to use hCaptcha instead of reCAPTCHA for protecting registration
  • A new auto_join_rooms configuration option has been added for automatically joining new users to a set of rooms
  • A new /_dendrite/admin/downloadState/{serverName}/{roomID} endpoint has been added, which allows a server administrator to attempt to repair a room with broken room state by downloading a state snapshot from another federated server in the room

Fixes

  • Querying cross-signing keys for users should now be considerably faster
  • A bug in state resolution where some events were not correctly selected for third-party invites has been fixed
  • A bug in state resolution which could result in not in room event rejections has been fixed
  • When accepting a DM invite, it should now be possible to see messages that were sent before the invite was accepted
  • Claiming remote E2EE one-time keys has been refactored and should be more reliable now
  • Various fixes have been made to the /members endpoint, which may help with E2EE reliability and clients rendering memberships
  • A race condition in the federation API destination queues has been fixed when associating queued events with remote server destinations
  • A bug in the sync API where too many events were selected resulting in high CPU usage has been fixed
  • Configuring the avatar URL for the Server Notices user should work correctly now
dendrite - Dendrite 0.10.4

Published by neilalexander almost 2 years ago

Features

  • Various tables belonging to the user API will be renamed so that they are namespaced with the userapi_ prefix
    • Note that, after upgrading to this version, you should not revert to an older version of Dendrite as the database changes will not be reverted automatically
  • The backoff and retry behaviour in the federation API has been refactored and improved

Fixes

  • Private read receipt support is now advertised in the client /versions endpoint
  • Private read receipts will now clear notification counts properly
  • A bug where a false leave membership transition was inserted into the timeline after accepting an invite has been fixed
  • Some panics caused by concurrent map writes in the key server have been fixed
  • The sync API now calculates membership transitions from state deltas more accurately
  • Transaction IDs are now scoped to endpoints, which should fix some bugs where transaction ID reuse could cause nonsensical cached responses from some endpoints
  • The length of the type, sender, state_key and room_id fields in events are now verified by number of bytes rather than codepoints after a spec clarification, reverting a change made in Dendrite 0.9.6
dendrite - Dendrite 0.10.3

Published by neilalexander about 2 years ago

Features

  • Event relations are now tracked and support for the /room/{roomID}/relations/... client API endpoints have been added
  • Support has been added for private read receipts
  • The built-in NATS Server has been updated to version 2.9.3

Fixes

  • The unread_notifications are now always populated in joined room responses
  • The /get_missing_events federation API endpoint should now work correctly for rooms with joined and invited visibility settings, returning redacted events for events that other servers are not allowed to see
  • The /event client API endpoint now applies history visibility correctly
  • Read markers should now be updated much more reliably
  • A rare bug in the sync API which could cause some join memberships to be incorrectly overwritten by other memberships when working out which rooms to populate has been fixed
  • The federation API now correctly updates the joined hosts table during a state rewrite
dendrite - Dendrite 0.10.2

Published by neilalexander about 2 years ago

Features

  • Dendrite will now fail to start if there is an obvious problem with the configured max_open_conns when using PostgreSQL database backends, since this can lead to instability and performance issues
  • Unnecessary/empty fields will no longer be sent in /sync responses
  • It is now possible to configure old_private_keys from previous Matrix installations on the same domain if only public key is known, to make it easier to expire old keys correctly
    • You can configure either just the private_key path, or you can supply both the public_key and key_id

Fixes

  • The sync transaction behaviour has been modified further so that errors in one stream should not propagate to other streams unnecessarily
  • Rooms should now be classified as DM rooms correctly by passing through is_direct and unsigned hints
  • A bug which caused marking device lists as stale to consume lots of CPU has been fixed
  • Users accepting invites should no longer cause unnecessary federated joins if there are already other local users in the room
  • The sync API state range queries have been optimised by adding missing indexes
  • It should now be possible to configure non-English languages for full-text search in search.language
  • The roomserver will no longer attempt to perform federated requests to the local server when trying to fetch missing events
  • The /keys/upload endpoint will now always return the one_time_keys_counts, which may help with E2EE reliability
  • The sync API will now retrieve the latest stream position before processing each stream rather than at the beginning of the request, to hopefully reduce the number of round-trips to /sync
dendrite - Dendrite 0.10.1

Published by neilalexander about 2 years ago

Features

  • The built-in NATS Server has been updated to version 2.9.2

Fixes

  • A regression introduced in 0.10.0 in /sync as a result of transaction errors has been fixed
  • Account data updates will no longer send duplicate output events