github matrix-construct/tuwunel v1.3.0
Release v1.3.0

latest releases: v1.4.1, v1.4.0, v1.4.0-rc...
one month ago

Tuwunel 1.3.0

August 4, 2025

An unexpected performance improvement drastically reduced CPU usage. As a result, integration tests began to flake, uncovering latent concurrency bugs which were addressed. These fixes primarily impact the legacy and sliding-sync systems, and further fixes improve performance and compliance, though mostly in the legacy system as sliding-sync lacks adequate test coverage.

This release fixes many bugs and improves performance but at the cost of planned features further rescheduled to either v1.4 or v1.5.

New Features

  • Refresh tokens (MSC2918) have been implemented. Supporting clients can now timeout their access tokens with a soft-logout after a configured access_token_ttl. This feature was commissioned and made public by an enterprise sponsor.

  • Typing indicators have been added to sliding-sync thanks to @tmayoff. This feature (and the whole of sliding-sync) is still experimental and the indicator may not always appear or disappear as intended, nevertheless the effort will be enhanced by foundational fixes improving sliding-sync requested soon by the project's sponsor.

Enhancements

  • @dasha_uwu maintains their streak as a serial contributor by patching the !admin query raw command with a base64 option allowing for low-level debugging of database records.
  • @obioma has improved the documentation explaining how to use multiple configuration files with precedence.
  • Upon recommendation of @grinapo a basic request ID has been added to the tracing logs to uniquely distinguish each request while it's interleaved among others.
  • Requested by @fruzitent this and future releases are tagged by version as multi-arch docker images to be properly archived in the registry rather than simply overwriting :latest.
  • Event processing performance has been improved by fetching and processing prev_events and auth_events concurrently.
  • An experimental command !admin debug resync-database has been added for developers curious about #35

Bug Fixes

  • Thanks to @tmayoff room avatars are properly calculated and no longer the same for all spaces (#102).
  • Courtesy of @coolGi69 our bump to Rust 1.88 was properly updated for Nix. Apologies to the Nix community for getting this wrong the first time.
  • Invite rejections have been fixed, this was due to a misinterpretation of the spec in legacy sync.
  • Knock rooms might have been buggy from database records expecting a summation of the users in a room instead received the sequence number of the server, both are called "count."
  • Room knocks failed to wakeup the sync systems; some cases of account_data changes also failed to wakeup the sync systems. These have been addressed.
  • The main sequence number fundamental to the entire server's operation (the "count" or counter) has been refactored after having exceeded design limitations.
  • Sequence issues have been addressed in both legacy and sliding sync.
  • Protocol compliance issues in legacy sync have been addressed. Additional compliance tests for device list updates now pass. The state and timeline on incremental sync provide expected results in more (if not all) cases.
  • Errors requiring M_BAD_ALIAS instead of M_UNKNOWN when sending m.room.canonical_alias are now conforming.

Deprecations

  • Unauthenticated media fallbacks are no longer requested by default. This can still be enabled with request_legacy_media if desired.
  • Legacy Sliding-Sync has been removed in favor of Simplified Sliding-Sync. Clients which exclusively using Sliding-Sync have already migrated around the start of this year, so this removal should have no impact now.

Don't miss a new tuwunel release

NewReleases is sending notifications on new releases.