7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1 | # Changelog |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 2 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 3 | All notable changes to this project will be documented in this file. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 4 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 5 | <!-- changelog start --> |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 6 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 7 | ## [0.18.0](https://github.com/matrix-org/matrix-rust-sdk/tree/0.18.0) - 2026-06-02 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 8 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 9 | ### Added |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 10 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 11 | - Add `Client::tile_server` and a `TileServerInfo` struct to expose the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 12 | homeserver-advertised map tile server (`tile_server` field of the matrix |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 13 | client well-known, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 14 | [MSC3488](https://github.com/matrix-org/matrix-spec-proposals/pull/3488)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 15 | Returns `None` when the homeserver hasn't advertised one or the well-known is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 16 | unavailable. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 17 | ([#6610](https://github.com/matrix-org/matrix-rust-sdk/pulls/6610)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 18 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 19 | ### Changed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 20 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 21 | - [**breaking**] `RumaApiError` is now a type alias for `UiaaResponse`, because |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 22 | they have similar variants containing the same data. The `ClientApi` variant |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 23 | is now `MatrixError`, and the `Uiaa` variant is `AuthResponse`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 24 | ([#6574](https://github.com/matrix-org/matrix-rust-sdk/pulls/6574)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 25 | - [**breaking**] `Pusher::set` now takes an `append: bool` parameter, forwarded |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 26 | to the homeserver on `POST /_matrix/client/v3/pushers/set`. Pass `true` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 27 | keep an existing pusher with the same `app_id` and `pushkey` registered for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 28 | other users (e.g. multi-profile clients on a single device); pass `false` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 29 | preserve the previous default behaviour. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 30 | ([#6600](https://github.com/matrix-org/matrix-rust-sdk/pulls/6600)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 31 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 32 | ### Fixed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 33 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 34 | - Upgrade Ruma to 0.16.0, fixing a deserialization issue for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 35 | `m.key.verification.accept` events. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 36 | ([#6628](https://github.com/matrix-org/matrix-rust-sdk/pulls/6628)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 37 | - A cyclic reference of `Client` has been detected in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 38 | `ThreadSubscriptionCatchup`, preventing `Client` to drop correctly. This is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 39 | now fixed, removing a memory leak about `Client`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 40 | ([#6594](https://github.com/matrix-org/matrix-rust-sdk/pulls/6594)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 41 | - Fix a panic due to non-deterministic sorting of pinned events. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 42 | ([#6595](https://github.com/matrix-org/matrix-rust-sdk/pulls/6595)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 43 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 44 | ## [0.17.0] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 45 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 46 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 47 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 48 | - [**breaking**] `Room::is_dm` was renamed to `Room::compute_is_dm` to match its |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 49 | behavior, since it'll now compute and cache the result. A new _synchronous_ |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 50 | `Room::is_dm` function was added which centralizes the logic of checking if |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 51 | something is a DM based on that cached value and the provided |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 52 | `DmRoomDefinition`. `Room::sync_members` will also now compute active service |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 53 | members. ([#6537](https://github.com/matrix-org/matrix-rust-sdk/pull/6537)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 54 | - [**breaking**] Enforce atomic and synchronized updates to `RoomInfo`. Requires |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 55 | `StateStore::save_changes` to acquire state store lock and replaces |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 56 | `Room::set_room_info` with an atomic version, `Room::update_room_info`, which |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 57 | is also synchronized by the state store lock. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 58 | ([#6478](https://github.com/matrix-org/matrix-rust-sdk/pull/6478)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 59 | - Added `beacon` and `beacon_info` fields to `RoomPowerLevelChanges`, allowing |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 60 | callers to read and update the power levels required to send beacon (live |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 61 | location) message events and beacon info state events respectively. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 62 | ([#6540](https://github.com/matrix-org/matrix-rust-sdk/pull/6540)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 63 | - Added `DmRoomDefinition` as a parameter of `ClientBuilder` so we can specify |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 64 | it when creating a Client. Also added a `Room::is_dm` method and added some |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 65 | logic to use the new DM definitions in `Client::get_dm_rooms` and when using |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 66 | message search. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 67 | ([#6490](https://github.com/matrix-org/matrix-rust-sdk/pull/6490)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 68 | - Sharing encrypted history on room invite, per |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 69 | [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 70 | now enabled by default (though can still be disabled via |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 71 | `ClientBuilder::with_enable_share_history_on_invite`). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 72 | ([#6497](https://github.com/matrix-org/matrix-rust-sdk/pull/6497)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 73 | - Add `Client::get_dm_rooms` function to get an iterator with the DMs for the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 74 | provided user id. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 75 | ([#6487](https://github.com/matrix-org/matrix-rust-sdk/pull/6487)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 76 | - Support the stable `m.key_backup` prefix for MSC4287: Sharing key backup |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 77 | preference between clients. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 78 | ([#6410](https://github.com/matrix-org/matrix-rust-sdk/pull/6410)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 79 | - Add new high-level search helpers in `matrix_sdk_ui::search` to perform |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 80 | searches for messages in a room or across all rooms. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 81 | ([#6394](https://github.com/matrix-org/matrix-rust-sdk/pull/6394)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 82 | - Latest Event does not emit an update when it computes the same value as the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 83 | previous Latest Event. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 84 | ([#6396](https://github.com/matrix-org/matrix-rust-sdk/pull/6396)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 85 | - Add support for pushing the backup key to other clients, and receiving a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 86 | pushed backup key from other clients |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 87 | ([MSC4385](https://github.com/matrix-org/matrix-spec-proposals/pull/4385)), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 88 | gated behind the `experimental-push-secrets` feature. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 89 | ([#6432](https://github.com/matrix-org/matrix-rust-sdk/pull/6432)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 90 | - Add `room_versions()` & `account_moderation()` to `HomeserverCapabilities`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 91 | ([#6413](https://github.com/matrix-org/matrix-rust-sdk/pull/6413)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 92 | - Enable sending redaction events through the send queue via |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 93 | `RoomSendQueue::redact`. This includes local echoes for redaction events |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 94 | through the new `LocalEchoContent::Redaction` variant. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 95 | ([#6250](https://github.com/matrix-org/matrix-rust-sdk/pull/6250)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 96 | - [**breaking**] Remove support for `native-tls` and remove all feature |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 97 | flags for selecting TLS backend, as `rustls` is the now the only supported |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 98 | TLS backend. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 99 | ([#6409](https://github.com/matrix-org/matrix-rust-sdk/pull/6409)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 100 | - [**breaking**] Added `HomeserverCapabilities` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 101 | `Client::homeserver_capabilities()` to get the capabilities of the homeserver. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 102 | This replaces `Client::get_capabilities()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 103 | ([#6371](https://github.com/matrix-org/matrix-rust-sdk/pull/6371)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 104 | - [**breaking**] `matrix_sdk::error::Error` has a new variant `Timeout` which |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 105 | occurs when a cross-signing reset does not succeed after some period of time. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 106 | ([#6325](https://github.com/matrix-org/matrix-rust-sdk/pull/6325)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 107 | - The `beacon_info` start event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 108 | ([MSC3672](https://github.com/matrix-org/matrix-spec-proposals/pull/3672)) is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 109 | now included when computing the latest event for a room, so live location |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 110 | sharing sessions can be surfaced as a room's most recent activity. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 111 | ([#6295](https://github.com/matrix-org/matrix-rust-sdk/pull/6295)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 112 | - [**breaking**] The `EventCacheError` is now `Clone`able, which implied marking |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 113 | a few other error types as `Clone`able, and wrapping a few other error |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 114 | variants with `Arc`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 115 | ([#6305](https://github.com/matrix-org/matrix-rust-sdk/pull/6305)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 116 | - [**breaking**]: The unread count computation has now moved from the sliding |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 117 | sync processing, to the event cache. As a result, it is necessary to enable |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 118 | the event cache if you want to keep a precise unread counts, using |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 119 | `Client::event_cache().subscribe()`. The unread counts will now also be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 120 | available even if you used a previous version of sync (v2), as long as you've |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 121 | enabled the event cache beforehand. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 122 | ([#6253](https://github.com/matrix-org/matrix-rust-sdk/pull/6253)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 123 | - [**breaking**] `room::reply::Event` has a new field `add_mentions` which is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 124 | passed forward in `room::reply::make_reply_event`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 125 | ([#6270](https://github.com/matrix-org/matrix-rust-sdk/pull/6270)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 126 | - Add `Recovery::recover_and_fix_backup` to automatically fix key storage backup |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 127 | if the private backup decryption key is missing, invalid or inconsistent with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 128 | the public key. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 129 | ([#6252](https://github.com/matrix-org/matrix-rust-sdk/pull/6252)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 130 | - Attempt to import stored room key bundles for rooms awaiting bundles at |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 131 | client startup. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 132 | ([#6215](https://github.com/matrix-org/matrix-rust-sdk/pull/6215)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 133 | - Add `OAuth::cached_server_metadata()` that caches the authorization server |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 134 | metadata for a while. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 135 | ([#6217](https://github.com/matrix-org/matrix-rust-sdk/pull/6217)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 136 | - Add `QRCodeGrantLoginError::SecureChannel` for secure channel errors |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 137 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 138 | - Add `QRCodeGrantLoginError::UnexpectedMessage` for protocol message errors |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 139 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 140 | - Add `QRCodeGrantLoginError::LoginFailure` for login failure errors received |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 141 | from the other device |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 142 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 143 | - Add `QRCodeGrantLoginError::DeviceNotFound` for when the requested device was |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 144 | not returned by the homeserver |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 145 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 146 | - Add `Client::subscribe_to_duplicate_key_upload_errors` for listening to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 147 | duplicate key upload errors from `/keys/upload`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 148 | ([#6135](https://github.com/matrix-org/matrix-rust-sdk/pull/6135/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 149 | - Add `Room::pin_event` and `Room::unpin_event`, which allow pinning and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 150 | unpinning events from a room. These were extracted from the `matrix_sdk_ui` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 151 | crate, with no changes in functionality. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 152 | ([#6106](https://github.com/matrix-org/matrix-rust-sdk/pull/6106)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 153 | - `LatestEventValue::RemoteInvite` is added to handle a Latest Event for invite |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 154 | room. ([#6056](https://github.com/matrix-org/matrix-rust-sdk/pull/6056)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 155 | - Add `Room::set_own_member_display_name` to set the current user's display name |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 156 | within only the one single room (can be used for /myroomnick functionality). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 157 | [#5981](https://github.com/matrix-org/matrix-rust-sdk/pull/5981) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 158 | - Sending `MessageLike` and `RawMessageLike` events through a `Room` now returns |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 159 | the used `EncryptionInfo`, if any. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 160 | ([#5936](https://github.com/matrix-org/matrix-rust-sdk/pull/5936)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 161 | - [**breaking**]: The new Latest Event API replaces the old API. All the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 162 | `new_` prefixes have been removed, thus `Room::new_latest_event` becomes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 163 | and overwrites the `Room::latest_event` value. The new Latest Event values |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 164 | stored in `RoomInfo` are also erased once during the first update of the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 165 | SDK. The new values will be re-calculated. The following types or functions |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 166 | are removed: `PossibleLatestEvent`, `is_suitable_for_latest_event`, and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 167 | `LatestEvent` (replaced by `LatestEventValue`). See the documentation of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 168 | `matrix_sdk::latest_event` to learn about the new API. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 169 | ([#5624](https://github.com/matrix-org/matrix-rust-sdk/pull/5624/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 170 | - Expose a new method `RoomEventCache::find_event_relations` for loading |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 171 | events relating to a specific event ID from the cache. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 172 | ([#5930](https://github.com/matrix-org/matrix-rust-sdk/pull/5930/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 173 | - Replace in-memory stores with IndexedDB implementations when initializing |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 174 | `Client` with `BuilderStoreConfig::IndexedDb`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 175 | ([#5946](https://github.com/matrix-org/matrix-rust-sdk/pull/5946)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 176 | - Call: Add support for the new Intents for voice only calls |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 177 | `Intent.StartCallDmVoice` and `Intent.JoinExistingDmVoice`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 178 | ([#6003](https://github.com/matrix-org/matrix-rust-sdk/pull/6003)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 179 | - Add `SlidingSync::unsubscribe_to_rooms` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 180 | `SlidingSync::clear_and_subscribe_to_rooms`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 181 | ([#6012](https://github.com/matrix-org/matrix-rust-sdk/pull/6012)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 182 | - [**breaking**] Sliding Sync has a new `PollTimeout` type, used by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 183 | `SlidingSyncBuilder::requires_timeout`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 184 | ([#6005](https://github.com/matrix-org/matrix-rust-sdk/pull/6005)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 185 | - Inviting a user to a room with `Client::enable_share_history_on_invite` set |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 186 | to true will now trigger a download of all historical keys for the room in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 187 | question from the client's key backup. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 188 | ([#6017](https://github.com/matrix-org/matrix-rust-sdk/pull/6017)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 189 | - Add widget partial support for MSC4039. Allows widgets to download |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 190 | non-encrypted files from the content repository (like avatars). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 191 | ([#6354](https://github.com/matrix-org/matrix-rust-sdk/pull/6354)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 192 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 193 | ### Breaking changes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 194 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 195 | - [**breaking**] `LiveLocationShares` has been renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 196 | `LiveLocationsObserver` and `Room::live_location_shares` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 197 | `Room::live_locations_observer`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 198 | ([#6446](https://github.com/matrix-org/matrix-rust-sdk/pull/6446)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 199 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 200 | - `Room::observe_live_location_shares` has been replaced by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 201 | `Room::live_locations_observer`. The new API returns a `LiveLocationsObserver` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 202 | struct with a `subscribe()` method that provides an initial snapshot |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 203 | (`Vector<LiveLocationShare>`) and a batched stream of `VectorDiff` updates, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 204 | instead of emitting individual `LiveLocationShare` items as beacon events |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 205 | arrive. The initial snapshot is loaded from the event cache on creation, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 206 | includes the own user's shares (previously excluded), and properly handles |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 207 | share start/stop by listening to beacon_info state events. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 208 | ([#6385](https://github.com/matrix-org/matrix-rust-sdk/pull/6385)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 209 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 210 | ### Bugfix |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 211 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 212 | - Add the `session` key in `OAuthCrossSigningResetInfo`, allowing to provide |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 213 | `AuthData::OAuth` in `CrossSigningResetHandle::auth()`, to match the behavior |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 214 | described in the Matrix spec. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 215 | ([#6525](https://github.com/matrix-org/matrix-rust-sdk/pull/6525)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 216 | - When threads are enabled, a focused event timeline is used and the focused |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 217 | event is not part of a thread, hide other threaded events by default like it |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 218 | happens on the live focus timeline. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 219 | ([#6519](https://github.com/matrix-org/matrix-rust-sdk/pull/6519)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 220 | - Add a recursion limit attribute that raises it from the default value of 128 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 221 | to 256. ([#6489](https://github.com/matrix-org/matrix-rust-sdk/pull/6489)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 222 | - Reject invalid edits as candidates for the latest event. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 223 | ([#6454](https://github.com/matrix-org/matrix-rust-sdk/pull/6454)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 224 | - Fix an infinite loop when loading pinned events from the storage. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 225 | ([#6453](https://github.com/matrix-org/matrix-rust-sdk/pull/6453)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 226 | - `beacon_info` stop events (`live: false`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 227 | [MSC3672](https://github.com/matrix-org/matrix-spec-proposals/pull/3672)) are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 228 | now also eligible as the latest event for a room, preventing the live location |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 229 | sharing item from disappearing from the room list summary once the session |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 230 | ends. ([#6373](https://github.com/matrix-org/matrix-rust-sdk/pull/6373)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 231 | - Android: add back custom certificates and disabling SSL verification options |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 232 | in `ClientBuilder` using the previous `webkpi` verifier instead of platform |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 233 | verifier, otherwise these features will fail. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 234 | ([#6328](https://github.com/matrix-org/matrix-rust-sdk/pull/6328)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 235 | - Room keys are now rotated whenever the client receives an `m.room.member` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 236 | event not belonging to the current user with non-`join` membership in order to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 237 | prevent |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 238 | [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 239 | leaking room keys in an unintuitive manner. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 240 | ([#6292](https://github.com/matrix-org/matrix-rust-sdk/pull/6292)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 241 | ([#6457](https://github.com/matrix-org/matrix-rust-sdk/pull/6457)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 242 | - Only share historic room keys on invite if the current room history is shared. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 243 | ([#6275](https://github.com/matrix-org/matrix-rust-sdk/pull/6275)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 244 | - The event cache's thread subscriptions background task won't enable if the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 245 | server doesn't advertise support for the experimental thread subscription |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 246 | feature. In the past, this would result in sending spurious requests that |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 247 | aren't supported by the user's homeserver. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 248 | ([#6245](https://github.com/matrix-org/matrix-rust-sdk/pull/6245)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 249 | - Handle race between send queue update and remote echo in latest event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 250 | computation. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 251 | ([#6220](https://github.com/matrix-org/matrix-rust-sdk/pull/6220)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 252 | - Return `QRCodeGrantLoginError::DeviceNotFound` instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 253 | `QRCodeGrantLoginError::DeviceIDAlreadyInUse` for when the new device is not |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 254 | returned by the homeserver. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 255 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 256 | - Latest Event is correctly computed when multiple edits exist for the same |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 257 | event candidate. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 258 | ([#6096](https://github.com/matrix-org/matrix-rust-sdk/pull/6096)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 259 | - Restrict which `m.room.member` can be a `LatestEventValue` candidate by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 260 | relying on `MembershipChange` for more control. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 261 | ([#6143](https://github.com/matrix-org/matrix-rust-sdk/pull/6143)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 262 | - Add manual WAL checkpoints when opening Sqlite DBs and when vacuuming them, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 263 | since the WAL files aren't automatically shrinking. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 264 | ([#6004](https://github.com/matrix-org/matrix-rust-sdk/pull/6004)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 265 | - Use the server name extracted from the user id in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 266 | `Client::fetch_client_well_known` as a fallback value. Otherwise, sometimes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 267 | the server name is not available and we can't reload the well-known contents. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 268 | ([#5996](https://github.com/matrix-org/matrix-rust-sdk/pull/5996)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 269 | - Latest Event is lazier: a `RoomLatestEvents` can be registered even if its |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 270 | associated `RoomEventCache` isn't created yet. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 271 | ([#5947](https://github.com/matrix-org/matrix-rust-sdk/pull/5947)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 272 | - Allow granting of QR login to a new client whose device ID is not a base64 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 273 | encoded Curve25519 public key. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 274 | ([#5940](https://github.com/matrix-org/matrix-rust-sdk/pull/5940)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 275 | - Remove an unwrap in `SlidingSync::send_sync_request` when an asynchronous task |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 276 | panics or is cancelled. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 277 | ([#6316](https://github.com/matrix-org/matrix-rust-sdk/pull/6316)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 278 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 279 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 280 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 281 | - [**breaking**] Upgrade Ruma to 0.15.1. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 282 | ([#6503](https://github.com/matrix-org/matrix-rust-sdk/pull/6503)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 283 | - Revert back to to determining lock dirtiness in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 284 | `Encryption::{spin_lock_store, try_lock_once_store}` through logic defined in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 285 | `OlmMachine`, rather than `CrossProcessLock`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 286 | ([#6496](https://github.com/matrix-org/matrix-rust-sdk/pull/6496)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 287 | - [**breaking**] Update `Encryption::{spin_lock_store, try_lock_once_store}` so |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 288 | that lock dirtiness is determined entirely by `CrossProcessLock`, rather than |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 289 | logic defined by `OlmMachine`. Also enforce that lock generation is opaque by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 290 | removing `CrossProcessLockStoreGuardWithGeneration`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 291 | ([#6326](https://github.com/matrix-org/matrix-rust-sdk/pull/6326)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 292 | - [**breaking**] The `EventCache` now owns pagination tasks, and will run them |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 293 | to completion, even if a manual caller stopped polling the called future. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 294 | ([#6304](https://github.com/matrix-org/matrix-rust-sdk/pull/6304)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 295 | - [**breaking**] `RoomEventCache::thread_pagination` is now async and fallible. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 296 | ([#6280](https://github.com/matrix-org/matrix-rust-sdk/pull/6280)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 297 | - [**breaking**] The `UrlOrQuery` enum was moved from the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 298 | `authentication::oauth` module to the `utils` module. It can also be converted |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 299 | from a `QueryString`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 300 | ([#6224](https://github.com/matrix-org/matrix-rust-sdk/pull/6224)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 301 | - [**breaking**] `MatrixAuth::login_with_sso_callback()` takes a `UrlOrQuery` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 302 | instead of a `Url`, to make it more convenient to use with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 303 | `LocalServerBuilder` / `LocalServerRedirectHandle`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 304 | ([#6224](https://github.com/matrix-org/matrix-rust-sdk/pull/6224)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 305 | - [**breaking**] `Room::report_content()` no longer takes a `score` argument, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 306 | because it was removed from the Matrix specification. The |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 307 | `ReportedContentScore` type was removed too. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 308 | ([#6256](https://github.com/matrix-org/matrix-rust-sdk/pull/6256)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 309 | - [**breaking**] `Client::enabled_thread_subscriptions()` is now async and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 310 | fallible, as it will check for both static enablement of the thread |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 311 | subscription feature as well as dynamically checking that the user's |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 312 | homeserver supports it. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 313 | - [**breaking**] `SessionChange::UnknownToken` is now a tuple variant containing |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 314 | an `UnknownTokenErrorData`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 315 | ([#6241](https://github.com/matrix-org/matrix-rust-sdk/pull/6241)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 316 | - [**breaking**] `EventCacheError::BackPaginationError` has been renamed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 317 | `PaginationError`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 318 | ([#6239](https://github.com/matrix-org/matrix-rust-sdk/pull/6239)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 319 | - [**breaking**] The functions on the `OAuth` API to access the account |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 320 | management URL and its actions were removed. The methods available on the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 321 | `AuthorizationServerMetadata` should be used instead. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 322 | ([#6217](https://github.com/matrix-org/matrix-rust-sdk/pull/6217)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 323 | - [**breaking**] `QRCodeGrantLoginError::UnableToCreateDevice` has been removed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 324 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 325 | - The `RoomEventCache::paginate_thread_backwards` method is replaced by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 326 | `RoomEventCache::thread_pagination` which returns a new `ThreadPagination` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 327 | type, similar to `RoomPagination`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 328 | ([#6174](https://github.com/matrix-org/matrix-rust-sdk/pull/6174)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 329 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 330 | Before: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 331 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 332 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 333 | room_event_cache.paginate_thread_backwards(thread_id, 42).await |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 334 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 335 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 336 | After: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 337 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 338 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 339 | room_event_cache.thread_pagination(thread_id).run_backwards_once(42).await |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 340 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 341 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 342 | - `RoomPaginationStatus` is renamed to `PaginationStatus`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 343 | ([#6174](https://github.com/matrix-org/matrix-rust-sdk/pull/6174/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 344 | - [**breaking**] Replaced `ClientBuilder::cross_process_store_locks_holder_name` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 345 | with `ClientBuilder::cross_process_store_config` to allow specifying the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 346 | configuration for the cross-process lock and whether it should act as a no-op |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 347 | (client used in a single process) or we should keep the previous behavior |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 348 | (client used in multiple processes). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 349 | ([#6160](https://github.com/matrix-org/matrix-rust-sdk/pull/6160)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 350 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 351 | ## [0.16.1] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 352 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 353 | - Add a recursion limit attribute that raises it from the default value of 128 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 354 | to 256. ([#6489](https://github.com/matrix-org/matrix-rust-sdk/pull/6489)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 355 | - Reject invalid edits as candidates for the latest event. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 356 | ([#6454](https://github.com/matrix-org/matrix-rust-sdk/pull/6454)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 357 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 358 | ## [0.16.0] - 2025-12-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 359 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 360 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 361 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 362 | - Add `Client::get_store_sizes()` so to query the size of the existing stores, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 363 | if available. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 364 | ([#5911](https://github.com/matrix-org/matrix-rust-sdk/pull/5911)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 365 | - Add `QRCodeLoginError::NotFound` for non-existing / expired rendezvous |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 366 | sessions ([#5898](https://github.com/matrix-org/matrix-rust-sdk/pull/5898)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 367 | - Add `QRCodeGrantLoginError::NotFound` for non-existing / expired rendezvous |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 368 | sessions ([#5898](https://github.com/matrix-org/matrix-rust-sdk/pull/5898)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 369 | - Improve logging around key history bundles when joining a room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 370 | ([#5866](https://github.com/matrix-org/matrix-rust-sdk/pull/5866)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 371 | - Expose the power level required to modify `m.space.child` on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 372 | `room::power_levels::RoomPowerLevelChanges`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 373 | ([#5857](https://github.com/matrix-org/matrix-rust-sdk/pull/5857)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 374 | - Add the `Client::server_versions_cached()` method. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 375 | ([#5853](https://github.com/matrix-org/matrix-rust-sdk/pull/5853)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 376 | - Extend `authentication::oauth::OAuth::grant_login_with_qr_code` to support |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 377 | granting login by scanning a QR code on the existing device. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 378 | ([#5818](https://github.com/matrix-org/matrix-rust-sdk/pull/5818)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 379 | - Add a new `RequestConfig::skip_auth()` option. This is useful to ensure that |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 380 | certain request won't ever include an authorization header. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 381 | ([#5822](https://github.com/matrix-org/matrix-rust-sdk/pull/5822)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 382 | - Add support for extended profile fields with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 383 | `Account::fetch_profile_field_of()`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 384 | `Account::fetch_profile_field_of_static()`, `Account::set_profile_field()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 385 | `Account::delete_profile_field()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 386 | ([#5771](https://github.com/matrix-org/matrix-rust-sdk/pull/5771)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 387 | - [**breaking**] Remove the `matrix-sdk-crypto` re-export. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 388 | ([#5769](https://github.com/matrix-org/matrix-rust-sdk/pull/5769)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 389 | - Allow `Client::get_dm_room()` to be called without the `e2e-encryption` crate |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 390 | feature. ([#5787](https://github.com/matrix-org/matrix-rust-sdk/pull/5787)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 391 | - [**breaking**] Add |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 392 | `encryption::secret_storage::SecretStorageError::ImportError` to indicate an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 393 | error that occurred when importing a secret from secret storage. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 394 | ([#5647](https://github.com/matrix-org/matrix-rust-sdk/pull/5647)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 395 | - [**breaking**] Add |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 396 | `authentication::oauth::qrcode::login::LoginProgress::SyncingSecrets` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 397 | indicate that secrets are being synced between the two devices. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 398 | ([#5760](https://github.com/matrix-org/matrix-rust-sdk/pull/5760)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 399 | - Add `authentication::oauth::OAuth::grant_login_with_qr_code` to reciprocate a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 400 | login by generating a QR code on the existing device. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 401 | ([#5801](https://github.com/matrix-org/matrix-rust-sdk/pull/5801)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 402 | - [**breaking**] `OAuth::login_with_qr_code` now returns a builder that allows |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 403 | performing the flow with either the current device scanning or generating the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 404 | QR code. Additionally, new errors `SecureChannelError::CannotReceiveCheckCode` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 405 | and `QRCodeLoginError::ServerReset` were added. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 406 | ([#5711](https://github.com/matrix-org/matrix-rust-sdk/pull/5711)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 407 | - [**breaking**] `ThreadedEventsLoader::new` now takes optional `tokens` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 408 | parameter to customise where the pagination begins |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 409 | ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 410 | - Make `PaginationTokens` `pub`, as well as its `previous` and `next` tokens so |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 411 | they can be assigned from other files |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 412 | ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 413 | - Add new API to decline calls |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 414 | ([MSC4310](https://github.com/matrix-org/matrix-spec-proposals/pull/4310)): |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 415 | `Room::make_decline_call_event` and `Room::subscribe_to_call_decline_events` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 416 | ([#5614](https://github.com/matrix-org/matrix-rust-sdk/pull/5614)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 417 | - Use `StateStore::upsert_thread_subscriptions()` to bulk process thread |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 418 | subscription updates received via the sync response or from the MSC4308 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 419 | companion endpoint. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 420 | ([#5848](https://github.com/matrix-org/matrix-rust-sdk/pull/5848)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 421 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 422 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 423 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 424 | - [**breaking**]: `Client::server_vendor_info()` requires to enable the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 425 | `federation-api` feature. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 426 | ([#5912](https://github.com/matrix-org/matrix-rust-sdk/pull/5912)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 427 | - [**breaking**]: `Client::reset_server_info()` has been split into |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 428 | `reset_supported_versions()` and `reset_well_known()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 429 | ([#5910](https://github.com/matrix-org/matrix-rust-sdk/pull/5910)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 430 | - [**breaking**]: `Client::send()` has extra bounds where |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 431 | `Request::Authentication: AuthScheme<Input<'a> = SendAccessToken<'a>>` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 432 | `Request::PathBuilder: SupportedPathBuilder`. This method should still work |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 433 | for any request to the Client-Server API. This allows to drop the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 434 | `HttpError::NotClientRequest` error in favor of a compile-time error. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 435 | ([#5781](https://github.com/matrix-org/matrix-rust-sdk/pull/5781), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 436 | [#5789](https://github.com/matrix-org/matrix-rust-sdk/pull/5789), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 437 | [#5815](https://github.com/matrix-org/matrix-rust-sdk/pull/5815)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 438 | - [**breaking**]: The `waveform` field was moved from `AttachmentInfo::Voice` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 439 | `BaseAudioInfo`, allowing to set it for any audio message. Its format also |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 440 | changed, and it is now a list of `f32` between 0 and 1. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 441 | ([#5732](https://github.com/matrix-org/matrix-rust-sdk/pull/5732)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 442 | - [**breaking**] The `caption` and `formatted_caption` fields and methods of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 443 | `AttachmentConfig`, `GalleryConfig` and `GalleryItemInfo` have been merged |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 444 | into a single field that uses `TextMessageEventContent`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 445 | ([#5733](https://github.com/matrix-org/matrix-rust-sdk/pull/5733)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 446 | - The Matrix SDK crate now uses the 2024 edition of Rust. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 447 | ([#5677](https://github.com/matrix-org/matrix-rust-sdk/pull/5677)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 448 | - [**breaking**] Make `LoginProgress::EstablishingSecureChannel` generic in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 449 | order to reuse it for the currently missing QR login flow. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 450 | ([#5750](https://github.com/matrix-org/matrix-rust-sdk/pull/5750)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 451 | - [**breaking**] The `new_virtual_element_call_widget` now uses a `props` and a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 452 | `config` parameter instead of only `props`. This splits the configuration of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 453 | the widget into required properties ("widget_id", "parent_url"...) so the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 454 | widget can work and optional config parameters ("skip_lobby", "header", |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 455 | "..."). The config option should in most cases only provide the `"intent"` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 456 | property. All other config options will then be chosen by EC based on platform |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 457 | - `intent`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 458 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 459 | Before: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 460 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 461 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 462 | new_virtual_element_call_widget( |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 463 | VirtualElementCallWidgetProperties { |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 464 | widget_id: "my_widget_id", // required property |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 465 | skip_lobby: Some(true), // optional configuration |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 466 | preload: Some(true), // optional configuration |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 467 | // ... |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 468 | } |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 469 | ) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 470 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 471 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 472 | Now: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 473 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 474 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 475 | new_virtual_element_call_widget( |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 476 | VirtualElementCallWidgetProperties { |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 477 | widget_id: "my_widget_id", // required property |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 478 | // ... only required properties |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 479 | }, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 480 | VirtualElementCallWidgetConfig { |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 481 | intend: Intend.StartCallDM, // defines the default values for all other configuration |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 482 | skip_lobby: Some(false), // overwrite a specific default value |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 483 | ..VirtualElementCallWidgetConfig::default() // set all other config options to `None`. Use defaults from intent. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 484 | } |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 485 | ) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 486 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 487 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 488 | ([#5560](https://github.com/matrix-org/matrix-rust-sdk/pull/5560)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 489 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 490 | ### Bugfix |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 491 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 492 | - A new local `LatestEventValue` was always created as `LocalIsSending`. It |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 493 | must be created as `LocalCannotBeSent` if a previous local `LatestEventValue` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 494 | exists and is `LocalCannotBeSent`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 495 | ([#5908](https://github.com/matrix-org/matrix-rust-sdk/pull/5908)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 496 | - Switch QR login implementation from `std::time::Instant` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 497 | `ruma::time::Instant` which is compatible with Wasm. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 498 | ([#5889](https://github.com/matrix-org/matrix-rust-sdk/pull/5889)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 499 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 500 | ## [0.14.0] - 2025-09-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 501 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 502 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 503 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 504 | - `Client::fetch_thread_subscriptions` implements support for the companion |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 505 | endpoint of the experimental MSC4308, allowing to fetch thread subscriptions |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 506 | for a given range, as specified by the MSC. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 507 | ([#5590](https://github.com/matrix-org/matrix-rust-sdk/pull/5590)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 508 | - Add a `Client::joined_space_rooms` method that allows retrieving the list of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 509 | joined spaces. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 510 | ([#5592](https://github.com/matrix-org/matrix-rust-sdk/pull/5592)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 511 | - `Room::enable_encryption` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 512 | `Room::enable_encryption_with_state_event_encryption` will poll the encryption |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 513 | state for up to 3 seconds, rather than checking once after a single sync has |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 514 | completed. ([#5559](https://github.com/matrix-org/matrix-rust-sdk/pull/5559)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 515 | - Add `Room::enable_encryption_with_state` to enable E2E encryption with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 516 | encrypted state event support, gated behind the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 517 | `experimental-encrypted-state-events` feature. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 518 | ([#5557](https://github.com/matrix-org/matrix-rust-sdk/pull/5557)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 519 | - Add `ignore_timeout_on_first_sync` to the `SyncSettings`, which should allow |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 520 | to have a quicker first response when using one of the `sync`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 521 | `sync_with_callback`, `sync_with_result_callback` or `sync_stream` methods on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 522 | `Client`, if the response is empty. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 523 | ([#5481](https://github.com/matrix-org/matrix-rust-sdk/pull/5481)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 524 | - The methods to use the `/v3/sync` endpoint set the `use_state_after` field, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 525 | which means that, if the server supports it, the response will contain the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 526 | state changes between the last sync and the end of the timeline. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 527 | ([#5488](https://github.com/matrix-org/matrix-rust-sdk/pull/5488)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 528 | - Add experimental support for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 529 | [MSC4306](https://github.com/matrix-org/matrix-spec-proposals/pull/4306), with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 530 | the `Room::fetch_thread_subscription()`, `Room::subscribe_thread()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 531 | `Room::unsubscribe_thread()` methods. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 532 | ([#5439](https://github.com/matrix-org/matrix-rust-sdk/pull/5439)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 533 | - [**breaking**] `RoomMemberRole` has a new `Creator` variant, that |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 534 | differentiates room creators with infinite power levels, as introduced in room |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 535 | version 12. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 536 | ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 537 | - Add `Account::fetch_account_data_static` to fetch account data from the server |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 538 | with a statically-known type, with a signature similar to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 539 | `Account::account_data`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 540 | ([#5424](https://github.com/matrix-org/matrix-rust-sdk/pull/5424)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 541 | - Add support to accept historic room key bundles that arrive out of order, i.e. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 542 | the bundle arrives after the invite has already been accepted. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 543 | ([#5322](https://github.com/matrix-org/matrix-rust-sdk/pull/5322)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 544 | - [**breaking**] `OAuth::login` now allows requesting additional scopes for the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 545 | authorization code grant. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 546 | ([#5395](https://github.com/matrix-org/matrix-rust-sdk/pull/5395)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 547 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 548 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 549 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 550 | - [**breaking**] Upgrade ruma to 0.13.0 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 551 | ([#5623](https://github.com/matrix-org/matrix-rust-sdk/pull/5623)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 552 | - [**breaking**] `SyncSettings` token is now `SyncToken` enum type which has |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 553 | default behaviour of `SyncToken::ReusePrevious` token. This breaks |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 554 | `Client::sync_once`. For old behaviour, set the token to `SyncToken::NoToken` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 555 | with the usual `SyncSettings::token` setter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 556 | ([#5522](https://github.com/matrix-org/matrix-rust-sdk/pull/5522)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 557 | - [**breaking**] Change the upload_encrypted_file and make it clone the client |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 558 | instead of owning it. The lifetime of the `UploadEncryptedFile` request |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 559 | returned by `Client::upload_encrypted_file()` only depends on the request |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 560 | lifetime now. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 561 | ([#5470](https://github.com/matrix-org/matrix-rust-sdk/pull/5470)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 562 | - [**breaking**] Add an `IsPrefix = False` bound to the `account_data()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 563 | `fetch_account_data_static()` methods of `Account`. These methods only worked |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 564 | for events where the full event type is statically-known, and this is now |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 565 | enforced at compile-time. `account_data_raw()` and `fetch_account_data()` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 566 | respectively can be used instead for event types with a variable suffix. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 567 | ([#5444](https://github.com/matrix-org/matrix-rust-sdk/pull/5444)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 568 | - [**breaking**] `RoomMemberRole::suggested_role_for_power_level()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 569 | `RoomMemberRole::suggested_power_level()` now use `UserPowerLevel` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 570 | represent power levels instead of `i64` to differentiate the infinite power |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 571 | level of creators, as introduced in room version 12. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 572 | ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 573 | - [**breaking**] The `reason` argument of `Room::report_room()` is now required, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 574 | due to a clarification in the spec. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 575 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 576 | - [**breaking**] The `join_rule` field of `RoomPreview` is now a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 577 | `JoinRuleSummary`. It has the same variants as `SpaceRoomJoinRule` but |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 578 | contains as summary of the allow rules for the restricted variants. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 579 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 580 | - [**breaking**] The MSRV has been bumped to Rust 1.88. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 581 | ([#5431](https://github.com/matrix-org/matrix-rust-sdk/pull/5431)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 582 | - [**breaking**] `Room::send_call_notification` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 583 | `Room::send_call_notification_if_needed` have been removed, since the event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 584 | type they send is outdated, and `Client` is not actually supposed to be able |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 585 | to join MatrixRTC sessions (yet). In practice, users of these methods probably |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 586 | already rely on another MatrixRTC implementation to participate in sessions, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 587 | and such an implementation should be capable of sending notifications itself. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 588 | ([#5452](https://github.com/matrix-org/matrix-rust-sdk/pull/5452)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 589 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 590 | ### Bugfix |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 591 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 592 | - The event handlers APIs now properly support events whose type is not fully |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 593 | statically-known. Before, those events would never trigger an event handler. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 594 | ([#5444](https://github.com/matrix-org/matrix-rust-sdk/pull/5444)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 595 | - All HTTP requests now have a default `read_timeout` of 60s, which means |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 596 | they'll disconnect if the connection stalls. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 597 | `RequestConfig::timeout` is now optional and can be disabled on a per-request |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 598 | basis. This will be done for the requests used to download media, so they don't |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 599 | get cancelled after the default 30s timeout for no good reason. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 600 | ([#5437](https://github.com/matrix-org/matrix-rust-sdk/pull/5437)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 601 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 602 | ## [0.13.0] - 2025-07-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 603 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 604 | ### Security fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 605 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 606 | - Fix SQL injection vulnerability in `EventCache` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 607 | ([d0c0100](https://github.com/matrix-org/matrix-rust-sdk/commit/d0c01006e4808db5eb96ad5c496416f284d8bd3c), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 608 | Moderate, [CVE-2025-53549](https://www.cve.org/CVERecord?id=CVE-2025-53549), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 609 | [GHSA-275g-g844-73jh](https://github.com/matrix-org/matrix-rust-sdk/security/advisories/GHSA-275g-g844-73jh)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 610 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 611 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 612 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 613 | - `Room.leave()` will now attempt to leave all reachable predecessors too. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 614 | ([#5381](https://github.com/matrix-org/matrix-rust-sdk/pull/5381)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 615 | - When joining a room via `Client::join_room_by_id()`, if the client has |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 616 | `enable_share_history_on_invite` enabled, we will correctly check for received |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 617 | room key bundles. Previously this was only done when calling `Room::join`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 618 | ([#5043](https://github.com/matrix-org/matrix-rust-sdk/pull/5043)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 619 | - `m.room.avatar` has been added as required state for sliding sync until |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 620 | [the existing backend issue](https://github.com/element-hq/synapse/issues/18598) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 621 | causing deleted room avatars to not be flagged is fixed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 622 | ([#5293](https://github.com/matrix-org/matrix-rust-sdk/pull/5293)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 623 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 624 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 625 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 626 | - Add `Client::supported_versions()`, which returns the results of both |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 627 | `Client::server_versions()` and `Client::unstable_features()` with a single |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 628 | call. ([#5357](https://github.com/matrix-org/matrix-rust-sdk/pull/5357)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 629 | - `WidgetDriver::send_to_device` Now supports sending encrypted to-device |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 630 | messages. ([#5252](https://github.com/matrix-org/matrix-rust-sdk/pull/5252)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 631 | - `Client::add_event_handler`: Set `Option<EncryptionInfo>` in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 632 | `EventHandlerData` for to-device messages. If the to-device message was |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 633 | encrypted, the `EncryptionInfo` will be set. If it is `None` the message was |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 634 | sent in clear. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 635 | ([#5099](https://github.com/matrix-org/matrix-rust-sdk/pull/5099)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 636 | - `EventCache::subscribe_to_room_generic_updates` is added to subscribe to _all_ |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 637 | room updates without having to subscribe to all rooms individually |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 638 | ([#5247](https://github.com/matrix-org/matrix-rust-sdk/pull/5247)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 639 | - [**breaking**] The element call widget URL configuration struct uses the new |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 640 | `header` url parameter instead of the now deprecated `hideHeader` parameter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 641 | This is only compatible with EC v0.13.0 or newer. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 642 | - [**breaking**] `RoomEventCacheGenericUpdate` gains a new `Clear` variant, and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 643 | sees its `TimelineUpdated` variant being renamed to `UpdateTimeline`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 644 | ([#5363](https://github.com/matrix-org/matrix-rust-sdk/pull/5363/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 645 | - [**breaking**]: The element call widget URL configuration struct uses the new |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 646 | `header` url parameter instead of the now deprecated `hideHeader` parameter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 647 | This is only compatible with EC v0.13.0 or newer. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 648 | - [**breaking**]: The experimental `Encryption::encrypt_and_send_raw_to_device` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 649 | function now takes a `share_strategy` parameter, and will not send to devices |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 650 | that do not satisfy the given share strategy. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 651 | ([#5457](https://github.com/matrix-org/matrix-rust-sdk/pull/5457/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 652 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 653 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 654 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 655 | - [**breaking**]: `Client::unstable_features()` returns a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 656 | `BTreeSet<FeatureFlag>`, containing only the features whose value was set to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 657 | true in the response to the `/versions` endpoint. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 658 | ([#5357](https://github.com/matrix-org/matrix-rust-sdk/pull/5357)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 659 | - [**breaking**]: The family of `Room::can_user_*` methods has been removed. The |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 660 | same functionality can be accessed using the `RoomPowerLevels::user_can_*` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 661 | family of methods. The `RoomPowerLevels` object can be accessed using the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 662 | `Room::power_levels()` method. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 663 | ([#5250](https://github.com/matrix-org/matrix-rust-sdk/pull/5250/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 664 | - `ClientServerCapabilities` has been renamed to `ClientServerInfo`. Alongside |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 665 | this, `Client::reset_server_info` is now `Client::reset_server_info` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 666 | `Client::fetch_server_capabilities` is now `Client::fetch_server_versions`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 667 | returning the server versions response directly. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 668 | ([#5167](https://github.com/matrix-org/matrix-rust-sdk/pull/5167)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 669 | - `RoomEventCacheListener` is renamed `RoomEventCacheSubscriber` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 670 | ([#5269](https://github.com/matrix-org/matrix-rust-sdk/pull/5269)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 671 | - `RoomPreview::join_rule` is now optional, and will be set to `None` if the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 672 | join rule state event is missing for a given room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 673 | ([#5278](https://github.com/matrix-org/matrix-rust-sdk/pull/5278)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 674 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 675 | ## [0.12.0] - 2025-06-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 676 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 677 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 678 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 679 | - `Client::send_call_notification_if_needed` now returns `Result<bool>` instead |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 680 | of `Result<()>` so we can check if the event was sent. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 681 | ([#5171](https://github.com/matrix-org/matrix-rust-sdk/pull/5171)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 682 | - Added `SendMediaUploadRequest` wrapper for `SendRequest`, which checks the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 683 | size of the request to upload making sure it doesn't exceed the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 684 | `m.upload.size` value that can be fetched through |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 685 | `Client::load_or_fetch_max_upload_size`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 686 | ([#5119](https://github.com/matrix-org/matrix-rust-sdk/pull/5119)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 687 | - Add `ClientBuilder::with_enable_share_history_on_invite` to enable |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 688 | experimental support for sharing encrypted room history on invite, per |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 689 | [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 690 | ([#5141](https://github.com/matrix-org/matrix-rust-sdk/pull/5141)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 691 | - `Room::list_threads()` is a new method to list all the threads in a room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 692 | ([#4973](https://github.com/matrix-org/matrix-rust-sdk/pull/4973)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 693 | - `Room::relations()` is a new method to list all the events related to another |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 694 | event ("relations"), with additional filters for relation type or relation |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 695 | type + event type. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 696 | ([#4973](https://github.com/matrix-org/matrix-rust-sdk/pull/4973)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 697 | - The `EventCache`'s persistent storage has been enabled by default. This means |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 698 | that all the events received by sync or back-paginations will be stored, in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 699 | memory or on disk, by default, as soon as `EventCache::subscribe()` has been |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 700 | called (which happens automatically if you're using the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 701 | `matrix_sdk_ui::Timeline`). This offers offline access and super quick |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 702 | back-paginations (when the cache has been filled) whenever the event cache is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 703 | enabled. It's also not possible to disable the persistent storage anymore. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 704 | Note that by default, the event cache store uses an in-memory store, so the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 705 | events will be lost when the process exits. To store the events on disk, you |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 706 | need to use the sqlite event cache store. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 707 | ([#4308](https://github.com/matrix-org/matrix-rust-sdk/pull/4308)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 708 | - `Room::set_unread_flag()` now sets the stable `m.marked_unread` room account |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 709 | data, which was stabilized in Matrix 1.12. `Room::is_marked_unread()` also |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 710 | ignores the unstable `com.famedly.marked_unread` room account data if the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 711 | stable variant is present. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 712 | ([#5034](https://github.com/matrix-org/matrix-rust-sdk/pull/5034)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 713 | - `Encryption::encrypt_and_send_raw_to_device`: Introduced as an experimental |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 714 | method for sending custom encrypted to-device events. This feature is gated |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 715 | behind the `experimental-send-custom-to-device` flag, as it remains under |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 716 | active development and may undergo changes. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 717 | ([4998](https://github.com/matrix-org/matrix-rust-sdk/pull/4998)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 718 | - `Room::send_single_receipt()` and `Room::send_multiple_receipts()` now also |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 719 | unset the unread flag of the room if an unthreaded read receipt is sent. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 720 | ([#5055](https://github.com/matrix-org/matrix-rust-sdk/pull/5055)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 721 | - `Client::is_user_ignored(&UserId)` can be used to check if a user is currently |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 722 | ignored. ([#5081](https://github.com/matrix-org/matrix-rust-sdk/pull/5081)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 723 | - `RoomSendQueue::send_gallery` has been added to allow sending MSC4274-style |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 724 | media galleries via the send queue under the `unstable-msc4274` feature. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 725 | ([#4977](https://github.com/matrix-org/matrix-rust-sdk/pull/4977)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 726 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 727 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 728 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 729 | - A invited DM room joined with `Client::join_room_by_id()` or |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 730 | `Client::join_room_by_id_or_alias()` will now be correctly marked as a DM. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 731 | ([#5043](https://github.com/matrix-org/matrix-rust-sdk/pull/5043)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 732 | - API responses with an HTTP status code `520` won't be retried anymore, as this |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 733 | is used by some proxies (including Cloudflare) to warn that an unknown error |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 734 | has happened in the actual server. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 735 | ([#5105](https://github.com/matrix-org/matrix-rust-sdk/pull/5105)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 736 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 737 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 738 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 739 | - Support for the deprecated `GET /auth_issuer` endpoint was removed in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 740 | `OAuth` API. Only the `GET /auth_metadata` endpoint is used now. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 741 | ([#5302](https://github.com/matrix-org/matrix-rust-sdk/pull/5302)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 742 | - `Room::push_context()` has been renamed into |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 743 | `Room::push_condition_room_ctx()`. The newer `Room::push_context` now returns |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 744 | a `matrix_sdk::Room::PushContext`, which can be used to compute the push |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 745 | actions for any event. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 746 | ([#4962](https://github.com/matrix-org/matrix-rust-sdk/pull/4962)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 747 | - `Room::decrypt_event()` now requires an extra `matrix_sdk::Room::PushContext` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 748 | parameter to compute the push notifications for the decrypted event. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 749 | ([#4962](https://github.com/matrix-org/matrix-rust-sdk/pull/4962)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 750 | - `SlidingSyncRoom` has been removed. With it, the `SlidingSync::get_room`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 751 | `get_all_rooms`, `get_rooms`, `get_number_of_rooms`, and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 752 | `FrozenSlidingSync` methods and type have been removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 753 | ([#5047](https://github.com/matrix-org/matrix-rust-sdk/pull/5047)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 754 | - `Room::set_unread_flag()` is now a no-op if the unread flag already has the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 755 | wanted value. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 756 | ([#5055](https://github.com/matrix-org/matrix-rust-sdk/pull/5055)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 757 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 758 | ## [0.11.0] - 2025-04-11 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 759 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 760 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 761 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 762 | - `Room::load_or_fetch_event()` is a new method that will find an event in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 763 | event cache (if enabled), or using network like `Room::event()` does. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 764 | ([#4837](https://github.com/matrix-org/matrix-rust-sdk/pull/4837)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 765 | - [**breaking**]: The element call widget URL configuration struct |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 766 | (`VirtualElementCallWidgetOptions`) and URL generation have changed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 767 | - It supports the new fields: `hide_screensharing`, `posthog_api_host`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 768 | `posthog_api_key`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 769 | `rageshake_submit_url`, `sentry_dsn`, `sentry_environment`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 770 | - The widget URL will no longer automatically add `/room` to the base domain. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 771 | For backward compatibility |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 772 | the app itself would need to add `/room` to the `element_call_url`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 773 | - And replaced: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 774 | - `analytics_id` -> `posthog_user_id` (The widget URL query parameters will |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 775 | include `analytics_id` & `posthog_user_id` for backward compatibility) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 776 | - `skip_lobby` -> `intent` (`Intent.StartCall`, `Intent.JoinExisting`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 777 | The widget URL query parameters will include `skip_lobby` if `intent` is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 778 | `Intent.StartCall` for backward compatibility) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 779 | - `VirtualElementCallWidgetOptions` now implements `Default`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 780 | ([#4822](https://github.com/matrix-org/matrix-rust-sdk/pull/4822)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 781 | - [**breaking**]: The `RoomPagination::run_backwards` method has been removed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 782 | and replaced by two |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 783 | simpler methods: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 784 | - `RoomPagination::run_backwards_until()`, which will retrigger |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 785 | back-paginations until a certain number of events have been received (and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 786 | retry if the timeline has been reset in the background). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 787 | - `RoomPagination::run_backwards_once()`, which will run a single |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 788 | back-pagination (and retry if |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 789 | the timeline has been reset in the background). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 790 | ([#4689](https://github.com/matrix-org/matrix-rust-sdk/pull/4689)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 791 | - [**breaking**]: The `OAuth::account_management_url` method now caches the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 792 | result of a call, subsequent calls to the method will not contact the server |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 793 | for a while, instead the cached URI will be returned. If caching of this URI |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 794 | is not desirable, the `OAuth::fetch_account_management_url` method can be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 795 | used. ([#4663](https://github.com/matrix-org/matrix-rust-sdk/pull/4663)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 796 | - The `MediaRetentionPolicy` can now trigger regular cleanups with its new |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 797 | `cleanup_frequency` setting. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 798 | ([#4603](https://github.com/matrix-org/matrix-rust-sdk/pull/4603)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 799 | - [**breaking**] The HTTP client only allows TLS 1.2 or newer, as recommended by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 800 | [BCP 195](https://datatracker.ietf.org/doc/bcp195/). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 801 | ([#4647](https://github.com/matrix-org/matrix-rust-sdk/pull/4647)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 802 | - Add `Room::report_room` api. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 803 | ([#4713](https://github.com/matrix-org/matrix-rust-sdk/pull/4713)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 804 | - `Client::notification_client` will create a copy of the existing `Client`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 805 | but now it'll make sure it doesn't handle any verification events to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 806 | avoid an issue with these events being received and processed twice if |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 807 | `NotificationProcessSetup` was `SingleSetup`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 808 | - [**breaking**] `Room::is_encrypted` is replaced by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 809 | `Room::latest_encryption_state` which returns a value of the new |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 810 | `EncryptionState` enum; another `Room::encryption_state` non-async and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 811 | infallible method is added to get the `EncryptionState` without calling |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 812 | `Room::request_encryption_state`. This latter method is also now public. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 813 | ([#4777](https://github.com/matrix-org/matrix-rust-sdk/pull/4777)). One can |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 814 | safely replace: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 815 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 816 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 817 | room.is_encrypted().await? |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 818 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 819 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 820 | by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 821 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 822 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 823 | room.latest_encryption_state().await?.is_encrypted() |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 824 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 825 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 826 | - `LocalServerBuilder`, behind the `local-server` feature, can be used to spawn |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 827 | a server when the end-user needs to be redirected to an address on localhost. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 828 | It was used for `SsoLoginBuilder` and can now be used in other cases, like for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 829 | login with the OAuth 2.0 API. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 830 | ([#4804](https://github.com/matrix-org/matrix-rust-sdk/pull/4804) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 831 | - The `OAuth` api is no longer gated behind the `experimental-oidc` cargo |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 832 | feature. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 833 | ([#4830](https://github.com/matrix-org/matrix-rust-sdk/pull/4830)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 834 | - Re-export `SqliteStoreConfig` and add |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 835 | `ClientBuilder::sqlite_store_with_config_and_cache_path` to configure the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 836 | SQLite store with the new `SqliteStoreConfig` structure |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 837 | ([#4870](https://github.com/matrix-org/matrix-rust-sdk/pull/4870)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 838 | - Add `Client::logout()` that allows to log out regardless of the `AuthApi` that |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 839 | is used for the session. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 840 | ([#4886](https://github.com/matrix-org/matrix-rust-sdk/pull/4886)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 841 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 842 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 843 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 844 | - Ensure all known secrets are removed from secret storage when invoking the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 845 | `Recovery::disable()` method. While the server is not guaranteed to delete |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 846 | these secrets, making an attempt to remove them is considered good practice. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 847 | Note that all secrets are uploaded to the server in an encrypted form. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 848 | ([#4629](https://github.com/matrix-org/matrix-rust-sdk/pull/4629)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 849 | - Most of the features in the `OAuth` API should now work under WASM |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 850 | ([#4830](https://github.com/matrix-org/matrix-rust-sdk/pull/4830)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 851 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 852 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 853 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 854 | - [**breaking**] Switched from the unmaintained backoff crate to the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 855 | [backon](https://docs.rs/backon/1.5.0/backon/) crate. As part of this change, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 856 | the `RequestConfig::retry_limit` method was renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 857 | `RequestConfig::max_retry_time` and the parameter for the method was updated |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 858 | from a `u64` to a `usize`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 859 | ([#4916](https://github.com/matrix-org/matrix-rust-sdk/pull/4916)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 860 | - [**breaking**] We now require Rust 1.85 as the minimum supported Rust version |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 861 | to compile. Yay for async closures! |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 862 | ([#4745](https://github.com/matrix-org/matrix-rust-sdk/pull/4745)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 863 | - [**breaking**] The `server_url` and `server_response` methods of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 864 | `SsoLoginBuilder` are replaced by `server_builder()`, which allows more |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 865 | fine-grained settings for the server. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 866 | ([#4804](https://github.com/matrix-org/matrix-rust-sdk/pull/4804) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 867 | - [**breaking**]: `OidcSessionTokens` and `MatrixSessionTokens` have been merged |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 868 | into `SessionTokens`. Methods to get and watch session tokens are now |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 869 | available directly on `Client`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 870 | `(MatrixAuth/Oidc)::session_tokens_stream()`, can be replaced by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 871 | `Client::subscribe_to_session_changes()` and then calling |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 872 | `Client::session_tokens()` on a `SessionChange::TokenRefreshed`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 873 | ([#4772](https://github.com/matrix-org/matrix-rust-sdk/pull/4772)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 874 | - [**breaking**] `Oidc::url_for_oidc()` doesn't take the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 875 | `VerifiedClientMetadata` to register as an argument, the one in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 876 | `OidcRegistrations` is used instead. However it now takes the redirect URI to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 877 | use, instead of always using the first one in the client metadata. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 878 | ([#4771](https://github.com/matrix-org/matrix-rust-sdk/pull/4771)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 879 | - [**breaking**] The `server_url` and `server_response` methods of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 880 | `SsoLoginBuilder` are replaced by `server_builder()`, which allows more |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 881 | fine-grained settings for the server. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 882 | - [**breaking**]: Rename the `Oidc` API to `OAuth`, since it's using almost |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 883 | exclusively OAuth 2.0 rather than OpenID Connect. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 884 | ([#4805](https://github.com/matrix-org/matrix-rust-sdk/pull/4805)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 885 | - The `oidc` module was renamed to `oauth`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 886 | - `Client::oidc()` was renamed to `Client::oauth()` and the `AuthApi::Oidc` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 887 | variant was renamed to `AuthApi::OAuth`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 888 | - `OidcSession` was renamed to `OAuthSession` and the `AuthSession::Oidc` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 889 | variant was renamed to `AuthSession::OAuth`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 890 | - `OidcAuthCodeUrlBuilder` and `OidcAuthorizationData` were renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 891 | `OAuthAuthCodeUrlBuilder` and `OAuthAuthorizationData`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 892 | - `OidcError` was renamed to `OAuthError` and the `RefreshTokenError::Oidc` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 893 | variant was renamed to `RefreshTokenError::OAuth`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 894 | - `Oidc::provider_metadata()` was renamed to `OAuth::server_metadata()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 895 | - [**breaking**]: `OAuth::finish_login()` must always be called, instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 896 | `OAuth::finish_authorization()` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 897 | ([#4817](https://github.com/matrix-org/matrix-rust-sdk/pull/4817)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 898 | - `OAuth::abort_authorization()` was renamed to `OAuth::abort_login()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 899 | - `OAuth::finish_login()` can be called several times for the same session, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 900 | but it will return an error if it is called with a new session. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 901 | - `OAuthError::MissingDeviceId` was removed, it cannot occur anymore. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 902 | - [**breaking**] `OidcRegistrations` was renamed to `OAuthRegistrationStore`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 903 | ([#4814](https://github.com/matrix-org/matrix-rust-sdk/pull/4814)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 904 | - `OidcRegistrationsError` was renamed to `OAuthRegistrationStoreError`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 905 | - The `registrations` module was renamed and is now private. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 906 | `OAuthRegistrationStore` and `ClientId` are exported from `oauth`, and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 907 | `OAuthRegistrationStoreError` is exported from `oauth::error`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 908 | - All the methods of `OAuthRegistrationStore` are now `async` and return a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 909 | `Result`: errors when reading the file are no longer ignored, and blocking |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 910 | I/O is performed in a separate thread. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 911 | - `OAuthRegistrationStore::new()` takes a `PathBuf` instead of a `Path`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 912 | - `OAuthRegistrationStore::new()` no longer takes a `static_registrations` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 913 | parameter. It should be provided if needed with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 914 | `OAuthRegistrationStore::with_static_registrations()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 915 | - [**breaking**] Allow to use any registration method with `OAuth::login()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 916 | `OAuth::login_with_qr_code()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 917 | ([#4827](https://github.com/matrix-org/matrix-rust-sdk/pull/4827)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 918 | - `OAuth::login` takes an optional `ClientRegistrationData` to be able to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 919 | register and login with a single function call. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 920 | - `OAuth::url_for_oidc()` was removed, it can be replaced by a call to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 921 | `OAuth::login()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 922 | - `OAuth::login_with_qr_code()` takes an optional `ClientRegistrationData` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 923 | instead of the client metadata. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 924 | - `OAuth::finish_login` takes a `UrlOrQuery` instead of an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 925 | `AuthorizationCode`. The deserialization of the query string will occur |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 926 | inside the method and eventual errors will be handled. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 927 | - `OAuth::login_with_oidc_callback()` was removed, it can be replaced by a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 928 | call to `OAuth::finish_login()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 929 | - `AuthorizationResponse`, `AuthorizationCode` and `AuthorizationError` are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 930 | now private. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 931 | - [**breaking**] - `OAuth::account_management_url()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 932 | `OAuth::fetch_account_management_url()` don't take an action anymore but |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 933 | return an `AccountManagementUrlBuilder`. The final URL can be obtained with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 934 | `AccountManagementUrlBuilder::build()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 935 | ([#4831](https://github.com/matrix-org/matrix-rust-sdk/pull/4831)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 936 | - [**breaking**] `Client::store` is renamed `state_store` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 937 | ([#4851](https://github.com/matrix-org/matrix-rust-sdk/pull/4851)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 938 | - [**breaking**] The parameters `event_id` and `enforce_thread` on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 939 | [`Room::make_reply_event()`] have been wrapped in a `reply` struct parameter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 940 | ([#4880](https://github.com/matrix-org/matrix-rust-sdk/pull/4880/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 941 | - [**breaking**]: The `Oidc` API was updated to match the latest version of the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 942 | next-gen auth MSCs. The most notable change is that these MSCs are now based |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 943 | on OAuth 2.0 rather then OpenID Connect. To reflect that, most types have been |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 944 | renamed, with the `Oidc` prefix changed to `OAuth`. The API has also been |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 945 | cleaned up, it is now simpler and has fewer methods while keeping most of the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 946 | available features. Here is a detailed list of changes: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 947 | - Rename the `Oidc` API to `OAuth`, since it's using almost exclusively OAuth |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 948 | 2.0 rather than OpenID Connect. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 949 | ([#4805](https://github.com/matrix-org/matrix-rust-sdk/pull/4805)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 950 | - The `oidc` module was renamed to `oauth`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 951 | - `Client::oidc()` was renamed to `Client::oauth()` and the `AuthApi::Oidc` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 952 | variant was renamed to `AuthApi::OAuth`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 953 | - `OidcSession` was renamed to `OAuthSession` and the `AuthSession::Oidc` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 954 | variant was renamed to `AuthSession::OAuth`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 955 | - `OidcAuthCodeUrlBuilder` and `OidcAuthorizationData` were renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 956 | `OAuthAuthCodeUrlBuilder` and `OAuthAuthorizationData`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 957 | - `OidcError` was renamed to `OAuthError` and the `RefreshTokenError::Oidc` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 958 | variant was renamed to `RefreshTokenError::OAuth`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 959 | - `Oidc::provider_metadata()` was renamed to `OAuth::server_metadata()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 960 | - The `authentication::qrcode` module was moved inside |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 961 | `authentication::oauth`, because it is only available through the `OAuth` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 962 | API. ([#4687](https://github.com/matrix-org/matrix-rust-sdk/pull/4687/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 963 | - The `OAuth` API only supports public clients, i.e. clients |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 964 | without a secret. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 965 | ([#4634](https://github.com/matrix-org/matrix-rust-sdk/pull/4634)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 966 | - `OAuth::restore_registered_client()` takes a `ClientId` instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 967 | `ClientCredentials` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 968 | - `OAuth::restore_registered_client()` must NOT be called after |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 969 | `OAuth::register_client()` anymore. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 970 | - `Oidc::authorize_scope()` was removed because it has no use |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 971 | case anymore, according to the latest version of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 972 | [MSC2967](https://github.com/matrix-org/matrix-spec-proposals/pull/2967). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 973 | ([#4664](https://github.com/matrix-org/matrix-rust-sdk/pull/4664)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 974 | - The `OAuth` API uses the `GET /auth_metadata` endpoint from the latest |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 975 | version of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 976 | [MSC2965](https://github.com/matrix-org/matrix-spec-proposals/pull/2965) by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 977 | default. The previous `GET /auth_issuer` endpoint is still supported as a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 978 | fallback for now. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 979 | ([#4673](https://github.com/matrix-org/matrix-rust-sdk/pull/4673)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 980 | - It is not possible to provide a custom issuer anymore: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 981 | `Oidc::given_provider_metadata()` was removed, and the parameter was |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 982 | removed from `OAuth::register_client()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 983 | - `Oidc::fetch_authentication_issuer()` was removed. To check if the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 984 | homeserver supports OAuth 2.0, use `OAuth::server_metadata()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 985 | - `OAuth::server_metadata()` returns an `OAuthDiscoveryError`. It has a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 986 | `NotSupported` variant and an `is_not_supported()` method to check if the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 987 | error is due to the server not supporting OAuth 2.0. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 988 | - `OAuthError::MissingAuthenticationIssuer` was removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 989 | - The behavior of `OAuth::logout()` is now aligned with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 990 | [MSC4254](https://github.com/matrix-org/matrix-spec-proposals/pull/4254) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 991 | ([#4674](https://github.com/matrix-org/matrix-rust-sdk/pull/4674)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 992 | - Support for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 993 | [RP-Initiated Logout](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 994 | was removed, so it doesn't return an `OidcEndSessionUrlBuilder` anymore. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 995 | - Only one request is made to revoke the access token, since the server is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 996 | supposed to revoke both the access token and the associated refresh token |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 997 | when the request is made. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 998 | - Remove most of the parameter methods of `OAuthAuthCodeUrlBuilder`, since |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 999 | they were parameters defined in OpenID Connect. Only the `prompt` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1000 | `user_id_hint` parameters are still supported. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1001 | ([#4699](https://github.com/matrix-org/matrix-rust-sdk/pull/4699)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1002 | - Remove support for ID tokens in the `OAuth` API. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1003 | ([#4726](https://github.com/matrix-org/matrix-rust-sdk/pull/4726)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1004 | - `OAuth::restore_registered_client()` doesn't take a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1005 | `VerifiedClientMetadata` anymore. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1006 | - `Oidc::latest_id_token()` and `Oidc::client_metadata()` were removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1007 | - The `OAuth` API makes use of the oauth2 and ruma crates rather than |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1008 | mas-oidc-client. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1009 | ([#4761](https://github.com/matrix-org/matrix-rust-sdk/pull/4761)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1010 | ([#4789](https://github.com/matrix-org/matrix-rust-sdk/pull/4789)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1011 | - `ClientId` is a different type reexported from the oauth2 crate. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1012 | - The error types that were in the `oauth` module have been moved to the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1013 | `oauth::error` module. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1014 | - The `device_id` parameter of `OAuth::login` is now an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1015 | `Option<OwnedDeviceId>`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1016 | - The `state` field of `OAuthAuthorizationData` and the parameter of the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1017 | same name in `OAuth::abort_login()` now use `CsrfToken`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1018 | - The `types` and `requests` modules are gone and the necessary types are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1019 | exported from the `oauth` module or available from `ruma`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1020 | - `AccountManagementUrlFull` now takes an `OwnedDeviceId` when a device ID |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1021 | is required. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1022 | - `(Verified)ProviderMetadata` was replaced by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1023 | `AuthorizationServerMetadata`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1024 | - `OAuth::register_client()` doesn't accept a software statement anymore. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1025 | - `(Verified)ClientMetadata` was replaced by `Raw<ClientMetadata>`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1026 | `ClientMetadata` is an opinionated type that only supports the fields |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1027 | required for the `OAuth` API, however any type can be used to construct |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1028 | the metadata by serializing it to JSON and converting it. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1029 | - `OAuth::finish_login()` must always be called, instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1030 | `OAuth::finish_authorization()` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1031 | ([#4817](https://github.com/matrix-org/matrix-rust-sdk/pull/4817)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1032 | - `OAuth::abort_authorization()` was renamed to `OAuth::abort_login()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1033 | - `OAuth::finish_login()` can be called several times for the same session, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1034 | but it will return an error if it is called with a new session. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1035 | - `OAuthError::MissingDeviceId` was removed, it cannot occur anymore. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1036 | - Allow to use any registration method with `OAuth::login()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1037 | `OAuth::login_with_qr_code()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1038 | ([#4827](https://github.com/matrix-org/matrix-rust-sdk/pull/4827)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1039 | - `OAuth::login` takes an optional `ClientRegistrationData` to be able to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1040 | register and login with a single function call. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1041 | - `OAuth::url_for_oidc()` was removed, it can be replaced by a call to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1042 | `OAuth::login()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1043 | - `OAuth::login_with_qr_code()` takes an optional `ClientRegistrationData` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1044 | instead of the client metadata. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1045 | - `OAuth::finish_login` takes a `UrlOrQuery` instead of an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1046 | `AuthorizationCode`. The deserialization of the query string will occur |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1047 | inside the method and eventual errors will be handled. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1048 | - `OAuth::login_with_oidc_callback()` was removed, it can be replaced by a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1049 | call to `OAuth::finish_login()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1050 | - `AuthorizationResponse`, `AuthorizationCode` and `AuthorizationError` are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1051 | now private. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1052 | - `OAuth::account_management_url()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1053 | `OAuth::fetch_account_management_url()` don't take an action anymore but |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1054 | return an `AccountManagementUrlBuilder`. The final URL can be obtained with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1055 | `AccountManagementUrlBuilder::build()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1056 | ([#4831](https://github.com/matrix-org/matrix-rust-sdk/pull/4831)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1057 | - `OidcRegistrations` was removed. Clients are supposed to re-register with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1058 | the homeserver for every login. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1059 | ([#4879](https://github.com/matrix-org/matrix-rust-sdk/pull/4879)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1060 | - `OAuth::restore_registered_client()` doesn't take an `issuer` anymore. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1061 | ([#4879](https://github.com/matrix-org/matrix-rust-sdk/pull/4879)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1062 | - `Oidc::issuer()` was removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1063 | - The `issuer` field of `UserSession` was removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1064 | - `SendHandle::media_handles` was generalized into a vector |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1065 | ([#4898](https://github.com/matrix-org/matrix-rust-sdk/pull/4898)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1066 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1067 | ## [0.10.0] - 2025-02-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1068 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1069 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1070 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1071 | - Allow to set and check whether an image is animated via its `ImageInfo`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1072 | ([#4503](https://github.com/matrix-org/matrix-rust-sdk/pull/4503)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1073 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1074 | - Implement `Default` for `BaseImageInfo`, `BaseVideoInfo`, `BaseAudioInfo` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1075 | `BaseFileInfo`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1076 | ([#4503](https://github.com/matrix-org/matrix-rust-sdk/pull/4503)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1077 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1078 | - Expose `Client::server_versions()` publicly to allow users of the library to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1079 | get the versions of Matrix supported by the homeserver. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1080 | ([#4519](https://github.com/matrix-org/matrix-rust-sdk/pull/4519)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1081 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1082 | - Create `RoomPrivacySettings` helper to group room settings functionality |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1083 | related to room access and visibility. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1084 | ([#4401](https://github.com/matrix-org/matrix-rust-sdk/pull/4401)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1085 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1086 | - Enable HTTP/2 support in the HTTP client. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1087 | ([#4566](https://github.com/matrix-org/matrix-rust-sdk/pull/4566)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1088 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1089 | - Add support for creating custom conditional push rules in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1090 | `NotificationSettings::create_custom_conditional_push_rule`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1091 | ([#4587](https://github.com/matrix-org/matrix-rust-sdk/pull/4587)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1092 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1093 | - The media contents stored in the media cache can now be controlled with a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1094 | `MediaRetentionPolicy` and the new `Media` methods `media_retention_policy()`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1095 | `set_media_retention_policy()`, `clean_up_media_cache()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1096 | ([#4571](https://github.com/matrix-org/matrix-rust-sdk/pull/4571)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1097 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1098 | - Add support for creating custom conditional push rules in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1099 | `NotificationSettings::create_custom_conditional_push_rule`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1100 | ([#4587](https://github.com/matrix-org/matrix-rust-sdk/pull/4587)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1101 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1102 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1103 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1104 | - [**breaking**]: The `RoomEventCacheUpdate::Clear` variant has been removed, as |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1105 | it is redundant with the `RoomEventCacheUpdate::UpdateTimelineEvents { diffs: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1106 | Vec<VectorDiff<_>>, .. }` where `VectorDiff` has its own `Clear` variant. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1107 | ([#4627](https://github.com/matrix-org/matrix-rust-sdk/pull/4627)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1108 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1109 | - Improve the performance of `EventCache` (approximately 4.5 times faster). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1110 | ([#4616](https://github.com/matrix-org/matrix-rust-sdk/pull/4616)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1111 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1112 | - [**breaking**]: The reexported types `SyncTimelineEvent` and `TimelineEvent` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1113 | have been fused into a single type `TimelineEvent`, and its field |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1114 | `push_actions` has been made `Option`al (it is set to `None` when we couldn't |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1115 | compute the push actions, because we lacked some information). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1116 | ([#4568](https://github.com/matrix-org/matrix-rust-sdk/pull/4568)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1117 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1118 | - [**breaking**] Move the optional `RequestConfig` argument of the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1119 | `Client::send()` method to the `with_request_config()` builder method. You |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1120 | should call `Client::send(request).with_request_config(request_config).await` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1121 | now instead. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1122 | ([#4443](https://github.com/matrix-org/matrix-rust-sdk/pull/4443)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1123 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1124 | - [**breaking**] Remove the `AttachmentConfig::with_thumbnail()` constructor and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1125 | replace it with the `AttachmentConfig::thumbnail()` builder method. You should |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1126 | call `AttachmentConfig::new().thumbnail(thumbnail)` now instead. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1127 | ([#4452](https://github.com/matrix-org/matrix-rust-sdk/pull/4452)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1128 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1129 | - [**breaking**] `Room::send_attachment()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1130 | `RoomSendQueue::send_attachment()` now take any type that implements |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1131 | `Into<String>` for the filename. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1132 | ([#4451](https://github.com/matrix-org/matrix-rust-sdk/pull/4451)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1133 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1134 | - [**breaking**] `Recovery::are_we_the_last_man_standing()` has been renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1135 | `is_last_device()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1136 | ([#4522](https://github.com/matrix-org/matrix-rust-sdk/pull/4522)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1137 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1138 | - [**breaking**] The `matrix_auth` module is now at `authentication::matrix`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1139 | ([#4575](https://github.com/matrix-org/matrix-rust-sdk/pull/4575)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1140 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1141 | - [**breaking**] The `oidc` module is now at `authentication::oidc`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1142 | ([#4575](https://github.com/matrix-org/matrix-rust-sdk/pull/4575)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1143 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1144 | ## [0.9.0] - 2024-12-18 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1145 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1146 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1147 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1148 | - Use the inviter's server name and the server name from the room alias as |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1149 | fallback values for the via parameter when requesting the room summary from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1150 | the homeserver. This ensures requests succeed even when the room being |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1151 | previewed is hosted on a federated server. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1152 | ([#4357](https://github.com/matrix-org/matrix-rust-sdk/pull/4357)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1153 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1154 | - Do not use the encrypted original file's content type as the encrypted |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1155 | thumbnail's content type. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1156 | ([#ecf4434](https://github.com/matrix-org/matrix-rust-sdk/commit/ecf44348cf6a872b843fb7d7af1a88f724c58c3e)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1157 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1158 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1159 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1160 | - Enable persistent storage for the `EventCache`. This allows events received |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1161 | through the `/sync` endpoint or backpagination to be stored persistently, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1162 | enabling client applications to restore a room's view, including events, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1163 | without requiring server communication. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1164 | ([#4347](https://github.com/matrix-org/matrix-rust-sdk/pull/4347)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1165 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1166 | - [**breaking**] Make all fields of Thumbnail required |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1167 | ([#4324](https://github.com/matrix-org/matrix-rust-sdk/pull/4324)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1168 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1169 | - `Backups::exists_on_server`, which always fetches up-to-date information from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1170 | the server about whether a key storage backup exists, was renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1171 | `fetch_exists_on_the_server`, and a new implementation of `exists_on_server` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1172 | which caches the most recent answer is now provided. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1173 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1174 | ## [0.8.0] - 2024-11-19 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1175 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1176 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1177 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1178 | - Add more invalid characters for room aliases. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1179 | - Match the right status code in `Client::is_room_alias_available`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1180 | - Fix a bug where room keys were considered to be downloaded before backups were |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1181 | enabled. This bug only affects the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1182 | `BackupDownloadStrategy::AfterDecryptionFailure`, where no attempt would be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1183 | made to download a room key, if a decryption failure with a given room key |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1184 | would have been encountered before the backups were enabled. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1185 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1186 | ### Documentation |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1187 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1188 | - Improve documentation of `Client::observe_events`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1189 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1190 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1191 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1192 | - Add `create_room_alias` function. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1193 | - `Client::cross_process_store_locks_holder_name` is used everywhere: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1194 | - `StoreConfig::new()` now takes a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1195 | `cross_process_store_locks_holder_name` argument. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1196 | - `StoreConfig` no longer implements `Default`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1197 | - `BaseClient::new()` has been removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1198 | - `BaseClient::clone_with_in_memory_state_store()` now takes a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1199 | `cross_process_store_locks_holder_name` argument. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1200 | - `BaseClient` no longer implements `Default`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1201 | - `EventCacheStoreLock::new()` no longer takes a `key` argument. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1202 | - `BuilderStoreConfig` no longer has |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1203 | `cross_process_store_locks_holder_name` field for `Sqlite` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1204 | `IndexedDb`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1205 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1206 | - `EncryptionSyncService` and `Notification` are using |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1207 | `Client::cross_process_store_locks_holder_name`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1208 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1209 | - Allow passing a custom `RequestConfig` to an upload request. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1210 | - Retry uploads if they've failed with transient errors. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1211 | - Implement `EventHandlerContext` for tuples. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1212 | - Introduce a mechanism similar to `Client::add_event_handler` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1213 | `Client::add_room_event_handler` but with a reactive programming pattern. Add |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1214 | `Client::observe_events` and `Client::observe_room_events`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1215 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1216 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1217 | // Get an observer. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1218 | let observer = |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1219 | client.observe_events::<SyncRoomMessageEvent, (Room, Vec<Action>)>(); |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1220 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1221 | // Subscribe to the observer. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1222 | let mut subscriber = observer.subscribe(); |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1223 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1224 | // Use the subscriber as a `Stream`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1225 | let (message_event, (room, push_actions)) = subscriber.next().await.unwrap(); |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1226 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1227 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1228 | When calling `observe_events`, one has to specify the type of event (in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1229 | example, `SyncRoomMessageEvent`) and a context (in the example, `(Room, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1230 | Vec<Action>)`, respectively for the room and the push actions). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1231 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1232 | - Implement unwedging for media uploads. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1233 | - Send state from state sync and not from timeline to widget |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1234 | ([#4254](https://github.com/matrix-org/matrix-rust-sdk/pull/4254)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1235 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1236 | - Allow aborting media uploads. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1237 | - Add `RoomPreviewInfo::num_active_members`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1238 | - Use room directory search as another data source. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1239 | - Check if the user is allowed to do a room mention before trying to send a call |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1240 | notify event. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1241 | ([#4271](https://github.com/matrix-org/matrix-rust-sdk/pull/4271)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1242 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1243 | - Add `Client::cross_process_store_locks_holder_name()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1244 | - Add a `PreviouslyVerified` variant to `VerificationLevel` indicating that the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1245 | identity is unverified and previously it was verified. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1246 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1247 | - New `UserIdentity::pin` method. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1248 | - New `ClientBuilder::with_decryption_trust_requirement` method. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1249 | - New `ClientBuilder::with_room_key_recipient_strategy` method |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1250 | - New `Room.set_account_data` and `Room.set_account_data_raw` RoomAccountData |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1251 | setters, analogous to the GlobalAccountData |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1252 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1253 | - New `RequestConfig.max_concurrent_requests` which allows to limit the maximum |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1254 | number of concurrent requests the internal HTTP client issues (all others have |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1255 | to wait until the number drops below that threshold again) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1256 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1257 | - Implement proper redact handling in the widget driver. This allows the Rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1258 | SDK widget driver to support widgets that rely on redacting. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1259 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1260 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1261 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1262 | - [**breaking**] Rename `DisplayName` to `RoomDisplayName`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1263 | - Improve `is_room_alias_format_valid` so it's more strict. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1264 | - Remove duplicated fields in media event contents. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1265 | - Use `SendHandle` for media uploads too. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1266 | - Move `event_cache_store/` to `event_cache/store/` in `matrix-sdk-base`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1267 | - Move `linked_chunk` from `matrix-sdk` to `matrix-sdk-common`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1268 | - Move `Event` and `Gap` into `matrix_sdk_base::event_cache`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1269 | - Move `formatted_caption_from` to the SDK, rename it. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1270 | - Tidy up and start commenting the widget code. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1271 | - Get rid of `ProcessingContext` and inline it in its callers. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1272 | - Get rid of unused `limits` parameter when constructing a `WidgetMachine`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1273 | - Use a specialized mutex for locking access to the state store and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1274 | `being_sent`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1275 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1276 | - Renamed `VerificationLevel::PreviouslyVerified` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1277 | `VerificationLevel::VerificationViolation`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1278 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1279 | - [**breaking**] Replace the `Notification` type from Ruma in `SyncResponse` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1280 | `Client::register_notification_handler` by a custom one. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1281 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1282 | - [**breaking**] The ambiguity maps in `SyncResponse` are moved to `JoinedRoom` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1283 | and `LeftRoom`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1284 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1285 | - [**breaking**] `Room::can_user_redact` and `Member::can_redact` are split |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1286 | between `*_redact_own` and `*_redact_other`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1287 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1288 | - [**breaking**] `AmbiguityCache` contains the room member's user ID. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1289 | - [**breaking**] Replace `impl MediaEventContent` with `&impl MediaEventContent` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1290 | in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1291 | `Media::get_file`/`Media::remove_file`/`Media::get_thumbnail`/`Media::remove_thumbnail` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1292 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1293 | - [**breaking**] A custom sliding sync proxy set with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1294 | `ClientBuilder::sliding_sync_proxy` now takes precedence over a discovered |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1295 | proxy. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1296 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1297 | - [**breaking**] `Client::get_profile` was moved to `Account` and renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1298 | `Account::fetch_user_profile_of`. `Account::get_profile` was renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1299 | `Account::fetch_user_profile`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1300 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1301 | - [**breaking**] The `HttpError::UnableToCloneRequest` error variant has been |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1302 | removed because it was never used or generated by the SDK. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1303 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1304 | - [**breaking**] The `Error::InconsistentState` error variant has been removed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1305 | because it was never used or generated by the SDK. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1306 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1307 | - [**breaking**] The widget capabilities in the FFI now need two additional |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1308 | flags: `update_delayed_event`, `send_delayed_event`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1309 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1310 | - [**breaking**] `Room::event` now takes an optional `RequestConfig` to allow |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1311 | for tweaking the network behavior. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1312 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1313 | - [**breaking**] The `instant` module was removed, use the `ruma::time` module |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1314 | instead. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1315 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1316 | - [**breaking**] Add `ClientBuilder::sqlite_store_with_cache_path` to build a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1317 | client that stores caches in a different directory to state/crypto. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1318 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1319 | - [**breaking**] The `body` parameter in `get_media_file` has been replaced with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1320 | a `filename` parameter now that Ruma has a `filename()` method. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1321 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1322 | ## 0.7.0 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1323 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1324 | Breaking changes: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1325 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1326 | - The `Client::sync_token` accessor function is no longer public. If you were |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1327 | using this for `Client::sync_once()`, you can get the token from the result of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1328 | the `Client::sync_once()` method instead |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1329 | ([#1216](https://github.com/matrix-org/matrix-rust-sdk/pull/1216)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1330 | - `Common::members` and `Common::members_no_sync` take a `RoomMemberships` to be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1331 | able to filter the results by any membership state. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1332 | - `Common::active_members(_no_sync)` and `Common::joined_members(_no_sync)` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1333 | are deprecated. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1334 | - `matrix-sdk-sqlite` is the new default store implementation outside of WASM, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1335 | behind the `sqlite` feature. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1336 | - The `sled` feature was removed. The `matrix-sdk-sled` crate is deprecated |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1337 | and no longer maintained. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1338 | - Replace `Client::authentication_issuer` with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1339 | `Client::authentication_server_info` that contains all the fields discovered |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1340 | from the homeserver for authenticating with OIDC |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1341 | - Remove `HttpSend` trait in favor of allowing a custom `reqwest::Client` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1342 | instance to be supplied |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1343 | - Move all the types and methods using the native Matrix login and registration |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1344 | APIs from `Client` to the new `matrix_auth::MatrixAuth` API that is accessible |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1345 | via `Client::matrix_auth()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1346 | - Move `Session` and `SessionTokens` to the `matrix_auth` module. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1347 | - Move the session methods on `Client` to the `MatrixAuth` API. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1348 | - Split `Session`'s content into several types. Its (de)serialization is still |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1349 | backwards compatible. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1350 | - The room API has been simplified |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1351 | - Removed the previous `Room`, `Joined`, `Invited` and `Left` types |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1352 | - Merged all of the functionality from `Joined`, `Invited` and `Left` into |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1353 | `room::Common` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1354 | - Renamed `room::Common` to just `Room` and made it accessible as |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1355 | `matrix_sdk::Room` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1356 | - Event handler closures now need to implement `FnOnce` + `Clone` instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1357 | `Fn` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1358 | - As a consequence, you no longer need to explicitly need to `clone` variables |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1359 | they capture before constructing an `async move {}` block inside |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1360 | - `Room::sync_members` doesn't return the underlying Ruma response anymore. If |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1361 | you need to get the room members, you can use `Room::members` or |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1362 | `Room::get_member` which will make sure that the members are up to date. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1363 | - The `transaction_id` parameter of `Room::{send, send_raw}` was removed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1364 | - Instead, both methods now return types that implement `IntoFuture` (so can |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1365 | be awaited like before) and have a `with_transaction_id` builder-style |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1366 | method |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1367 | - The parameter order of `Room::{send_raw, send_state_event_raw}` has changed, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1368 | `content` is now last |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1369 | - The parameter type of `content` has also changed to a generic; |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1370 | `serde_json::Value` arguments are still allowed, but so are other types like |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1371 | `Box<serde_json::value::RawValue>` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1372 | - All "named futures" (structs implementing `IntoFuture`) are now exported from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1373 | modules named `futures` instead of directly in the respective parent module |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1374 | - `Verification` is non-exhaustive, to make the `qrcode` cargo feature additive |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1375 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1376 | Bug fixes: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1377 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1378 | - `Client::rooms` now returns all rooms, even invited, as advertised. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1379 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1380 | Additions: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1381 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1382 | - Add secret storage support, the secret store can be opened using the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1383 | `Client::encryption()::open_secret_store()` method, which allows you to import |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1384 | or export secrets from the account-data backed secret-store. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1385 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1386 | - Add `VerificationRequest::state` and `VerificationRequest::changes` to check |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1387 | and listen to changes in the state of the `VerificationRequest`. This removes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1388 | the need to listen to individual matrix events once the `VerificationRequest` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1389 | object has been acquired. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1390 | - The `Room` methods to retrieve state events can now return a sync or stripped |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1391 | event, so they can be used for invited rooms too. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1392 | - Add `Client::subscribe_to_room_updates` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1393 | `room::Common::subscribe_to_updates` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1394 | - Add `Client::rooms_filtered` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1395 | - Add methods on `Client` that can handle several authentication APIs. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1396 | - Add new method `force_discard_session` on `Room` that allows to discard the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1397 | current outbound session (room key) for that room. Can be used by clients for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1398 | the `/discardsession` command. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1399 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1400 | ## 0.6.2 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1401 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1402 | - Fix the access token being printed in tracing span fields. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1403 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1404 | ## 0.6.1 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1405 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1406 | - Fixes a bug where the access token used for Matrix requests was added as a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1407 | field to a tracing span. |