16
Cargo.lock
generated
16
Cargo.lock
generated
@@ -4806,7 +4806,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
||||
|
||||
[[package]]
|
||||
name = "tuwunel"
|
||||
version = "1.2.0"
|
||||
version = "1.3.0"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"const-str",
|
||||
@@ -4835,7 +4835,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tuwunel_admin"
|
||||
version = "1.2.0"
|
||||
version = "1.3.0"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"clap",
|
||||
@@ -4859,7 +4859,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tuwunel_api"
|
||||
version = "1.2.0"
|
||||
version = "1.3.0"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"axum",
|
||||
@@ -4892,7 +4892,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tuwunel_core"
|
||||
version = "1.2.0"
|
||||
version = "1.3.0"
|
||||
dependencies = [
|
||||
"argon2",
|
||||
"arrayvec",
|
||||
@@ -4951,7 +4951,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tuwunel_database"
|
||||
version = "1.2.0"
|
||||
version = "1.3.0"
|
||||
dependencies = [
|
||||
"async-channel",
|
||||
"const-str",
|
||||
@@ -4970,7 +4970,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tuwunel_macros"
|
||||
version = "1.2.0"
|
||||
version = "1.3.0"
|
||||
dependencies = [
|
||||
"itertools 0.14.0",
|
||||
"proc-macro2",
|
||||
@@ -4980,7 +4980,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tuwunel_router"
|
||||
version = "1.2.0"
|
||||
version = "1.3.0"
|
||||
dependencies = [
|
||||
"axum",
|
||||
"axum-client-ip",
|
||||
@@ -5014,7 +5014,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tuwunel_service"
|
||||
version = "1.2.0"
|
||||
version = "1.3.0"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"base64",
|
||||
|
||||
@@ -29,7 +29,7 @@ license = "Apache-2.0"
|
||||
readme = "README.md"
|
||||
repository = "https://github.com/matrix-construct/tuwunel"
|
||||
rust-version = "1.88.0"
|
||||
version = "1.2.0"
|
||||
version = "1.3.0"
|
||||
|
||||
[workspace.metadata.crane]
|
||||
name = "tuwunel"
|
||||
|
||||
56
RELEASE.md
56
RELEASE.md
@@ -1,27 +1,59 @@
|
||||
# Tuwunel 1.2.0
|
||||
# Tuwunel 1.3.0
|
||||
|
||||
July 3, 2025
|
||||
August 4, 2025
|
||||
|
||||
Appservices can now be declared in the config file. Thanks to @teidesu for this idea. Each appservice can be configured using a TOML section. For example `[global.appservice.mautrix-telegram]` will create an appservice identified as mautrix-telegram. The configuration is similar to the standard Matrix registration.yaml. The appservice will be inactive when commented out. Thanks to @obioma for helping to get the TOML syntax right.
|
||||
Preparations for [Project Hydra](https://matrix.org/blog/2025/07/security-predisclosure/) have taken place. Users should be prepared to upgrade to `v1.4.0-rc` next week. Due to the comprehensive low-level changes which have taken place, and the inability to develop them in public with your feedback, the release will undergo an extended `-rc` period. Due to the time difference and scheduling conflicts our release may be published between 12 to 36 hours after the suggested time; though well before the written disclosure of the issues.
|
||||
|
||||
Some foundational work for `v1.4.0` was backported into this release after the announcement was made mid-July to further extend Hydra. 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.1` or `v1.5.0`.
|
||||
|
||||
Optimized builds are now available with this release. Multi-platform docker images are available for these optimized builds for everyone using the special-tags like `:latest`, `:preview` or `:main`. The performance boost will be automatic for most users. The standalone binaries, Deb and RPM packages are also built with optimized variants. **Please note the naming scheme has changed and links may be different.**
|
||||
|
||||
### New Features
|
||||
|
||||
- Declarative Appservices.
|
||||
- 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 @grin 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. This reduces the impact of recursing large graphs while the room's mutex is locked.
|
||||
|
||||
- An experimental command `!admin debug resync-database` has been added for developers curious about #35
|
||||
|
||||
- Optimized packages & Multi-platform docker images.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Special thanks to @orhtej2 for fixing several bugs with LDAP login related to the admin feature. An `admin_base_dn` issue was fixed in https://github.com/matrix-construct/tuwunel/pull/92 and an admin filter issue in https://github.com/matrix-construct/tuwunel/pull/93.
|
||||
- Thanks to @tmayoff room avatars are properly calculated and no longer the same for all spaces (https://github.com/matrix-construct/tuwunel/pull/102).
|
||||
|
||||
- We owe a lot of gratitude to the effort of @meovary150 for figuring out that using the same `as_token` for more than one appservice can cause obscure bugs. Configurations are now checked to prevent this.
|
||||
- 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.
|
||||
|
||||
- Thanks to @SKFE396 for reporting that LZ4 support for RocksDB was missing from the built release packages and images. This has now been added back.
|
||||
- Invite rejections have been fixed, this was due to a misinterpretation of the spec in legacy sync.
|
||||
|
||||
- Thanks to @syobocat for debugging a compile error on FreeBSD where our proc-macros were provided empty values for `std::env::args()`.
|
||||
- Knock rooms might have been buggy from the ambiguous overuse of the word "count" in the codebase. Database records which expected a summation of the users in a room instead received the sequence number of the server, both are called "count."
|
||||
|
||||
- Thanks to @k3-cat and @periodic for identifying compression-related issues for the OCI images which failed to load in Podman.
|
||||
- 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.
|
||||
|
||||
- Thanks to @dasha_uwu for perhaps the third week in a row now, this time for pointing out that `ldap3` was being included as a default Cargo dependency. It's now been properly isolated under its feature-gate.
|
||||
- The main sequence number fundamental to the entire server's operation (the "count" or counter) has been refactored after having exceeded architectural limitations. It has been replaced by a two-phase counter ensuring read-after-write consistency, and quasi-transactions grouping multiple writes.
|
||||
|
||||
- Sequence issues have been addressed in both legacy and sliding sync. These systems operate using a "snapshot" approach which intentionally ignores new data received by the server after the sync request has started; the snapshot approach replaced the complex of mutexes used by Conduit. The server was not originally designed for this approach and some information "from the future" continued to leak into the snapshot's window; these leaks have been sealed.
|
||||
|
||||
- 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.
|
||||
|
||||
Reference in New Issue
Block a user