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 `RoomInfo::fully_read_event_id` to expose the user's `m.fully_read` event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 12 | ID. ([#6569](https://github.com/matrix-org/matrix-rust-sdk/pulls/6569)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 13 | - Expose `Client::tile_server` on the FFI, returning a `TileServerInfo` record |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 14 | when the homeserver advertises a map tile server through its matrix client |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 15 | well-known |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 16 | ([MSC3488](https://github.com/matrix-org/matrix-spec-proposals/pull/3488)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 17 | The record carries a single `map_style_url` field pointing at a MapLibre |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 18 | `style.json`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 19 | ([#6610](https://github.com/matrix-org/matrix-rust-sdk/pulls/6610)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 20 | - Expose `SqliteStoreBuilder::key` to allow clients to specify a key as a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 21 | 32-bytes array that will be used as is, skipping the key derivation process |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 22 | and speeding up opening DB connections. Note this should only be used for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 23 | truly random values with high entropy, for user-provided passphrases the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 24 | `SqliteStoreBuilder::passphrase` function should still be used. Some examples |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 25 | for the bindings are: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 26 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 27 | Kotlin: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 28 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 29 | ```kotlin |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 30 | val buffer = ByteArray(size = 32) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 31 | SecureRandom().nextBytes(buffer) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 32 | return buffer // this now contains the key |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 33 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 34 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 35 | Swift: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 36 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 37 | ```swift |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 38 | var bytes = [UInt8](repeating: 0, count: 32) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 39 | SecRandomCopyBytes(kSecRandomDefault, bytes.count, &bytes) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 40 | return Data(bytes: bytes) // this now contains the key |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 41 | ``` ([#6805](https://github.com/matrix-org/matrix-rust-sdk/pulls/6805)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 42 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 43 | ### Changed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 44 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 45 | - [**breaking**] `SpaceRoomList::rooms` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 46 | `SpaceRoomList::subscribe_to_room_updates` are now asynchronous. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 47 | ([#6561](https://github.com/matrix-org/matrix-rust-sdk/pulls/6561)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 48 | - [**breaking**] `Client::set_pusher` now takes an `append: bool` parameter, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 49 | forwarded to the homeserver. Pass `true` to keep an existing pusher with the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 50 | same `app_id` and `pushkey` registered for other users (e.g. multi-profile |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 51 | clients on a single device); pass `false` to preserve the previous default |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 52 | behaviour. ([#6600](https://github.com/matrix-org/matrix-rust-sdk/pulls/6600)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 53 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 54 | ## [0.17.0] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 55 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 56 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 57 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 58 | - Add `Client::set_avatar_url` to manually set the avatar URL of the user to a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 59 | provided MXC one. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 60 | - Allow setting a custom Sliding Sync connection ID and timeline limit on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 61 | `RoomListService`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 62 | ([#6289](https://github.com/matrix-org/matrix-rust-sdk/pull/6289)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 63 | - Fix devices on Android 11 crashing because the SDK could not be initialized |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 64 | using `libloading` to get a reference to the JVM. Replaced `libloading` with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 65 | `jvm-getter`, which works like a compatibility layer. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 66 | ([#6370](https://github.com/matrix-org/matrix-rust-sdk/pull/6370)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 67 | - Added `android_platform.rs` for fixing the `rustls` integration on Android, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 68 | which was broken. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 69 | ([#6306](https://github.com/matrix-org/matrix-rust-sdk/pull/6306)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 70 | - [**breaking**] `OtherState` properly supports redacted events that still have |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 71 | fields in the content. The following fields are no longer optional: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 72 | - `federate` in `OtherState::RoomCreate`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 73 | - `history_visibility` in `OtherState::RoomHistoryVisibility`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 74 | - `thresholds` in `OtherState::RoomPowerLevels`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 75 | - `omit_checksums` option is now enabled for the Kotlin bindings in all |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 76 | FFI-exporting crates. We enabled them because with JNA direct mapping enabled |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 77 | they result in invalid checks in ARM 32bit devices, preventing the SDK from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 78 | working altogether (see |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 79 | [this issue](https://github.com/mozilla/uniffi-rs/issues/2740)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 80 | ([#6069](https://github.com/matrix-org/matrix-rust-sdk/pull/6069), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 81 | [#6112](https://github.com/matrix-org/matrix-rust-sdk/pull/6112), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 82 | [#6115](https://github.com/matrix-org/matrix-rust-sdk/pull/6115), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 83 | [#6116](https://github.com/matrix-org/matrix-rust-sdk/pull/6116)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 84 | - `Client::create_room` now uses `RoomPowerLevelsContentOverride` under the hood |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 85 | instead of `RoomPowerLevelsEventContent` to be able to explicitly set values |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 86 | which would previously be ignored if they matched the default power level |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 87 | values specified by the spec: these may not be the same in the homeserver and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 88 | result in rooms with incorrect power levels being created. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 89 | ([#6034](https://github.com/matrix-org/matrix-rust-sdk/pull/6034)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 90 | - Fix the `is_last_admin` check in `LeaveSpaceRoom` since it was not |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 91 | accounting for the membership state. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 92 | [#6032](https://github.com/matrix-org/matrix-rust-sdk/pull/6032) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 93 | - [**breaking**] `LatestEventValue::Local { is_sending: bool }` is replaced |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 94 | by [`state: LatestEventValueLocalState`] to represent 3 states: `IsSending`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 95 | `HasBeenSent` and `CannotBeSent`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 96 | ([#5968](https://github.com/matrix-org/matrix-rust-sdk/pull/5968/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 97 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 98 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 99 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 100 | - `RoomNotificationInfo`, `NotificationItem` and `SpaceRoom` now have `is_dm` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 101 | fields. ([#6537](https://github.com/matrix-org/matrix-rust-sdk/pull/6537)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 102 | - Expose `RoomMember::is_service_member` field. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 103 | ([#6536](https://github.com/matrix-org/matrix-rust-sdk/pull/6536)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 104 | - Expose `beacon` and `beacon_info` fields in `RoomPowerLevelsValues` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 105 | `RoomPowerLevelChanges`, allowing clients to read and update the power levels |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 106 | required to send beacon (live location) message events and beacon info state |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 107 | events respectively. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 108 | ([#6540](https://github.com/matrix-org/matrix-rust-sdk/pull/6540)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 109 | - Expose `ClientBuilder::dm_room_definition` to customize the DM room definition |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 110 | used by the `Client`, added `RoomInfo::is_dm` field based on it. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 111 | ([#6490](https://github.com/matrix-org/matrix-rust-sdk/pull/6490)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 112 | - Expose `HumanQrGrantLoginError::Unknown` reason in error message. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 113 | ([#6514](https://github.com/matrix-org/matrix-rust-sdk/pull/6514)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 114 | - Add a list of `declined_by: Vec<String>` to the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 115 | `TimelineItemContent::RtcNotification`, this will contain the list of users |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 116 | that have declined the call. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 117 | ([#6494](https://github.com/matrix-org/matrix-rust-sdk/pull/6494)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 118 | - Add `RoomInfo::active_service_members_count` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 119 | `NotificationRoomInfo::active_service_members_count`, returning the amount of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 120 | service members that are part of the room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 121 | ([#6483](https://github.com/matrix-org/matrix-rust-sdk/pull/6483)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 122 | - Add `Client::get_dm_rooms` function to get a list with the DMs for the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 123 | provided user id. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 124 | ([#6487](https://github.com/matrix-org/matrix-rust-sdk/pull/6487)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 125 | - Expose `ffi::NotificationRoomInfo::service_members` so clients can use the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 126 | list of service members to calculate if a room is a DM from the notification |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 127 | info. ([#6474](https://github.com/matrix-org/matrix-rust-sdk/pull/6474)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 128 | - Enable `experimental-push-secrets` feature by default. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 129 | ([#6473](https://github.com/matrix-org/matrix-rust-sdk/pull/6394)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 130 | - Add new high-level search helpers `RoomSearchIterator` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 131 | `GlobalSearchIterator` to perform searches for messages in a room or across |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 132 | all rooms. ([6394](https://github.com/matrix-org/matrix-rust-sdk/pull/6394)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 133 | - Added the `Client.request_openid_token()` method. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 134 | ([#6458](https://github.com/matrix-org/matrix-rust-sdk/pull/6458)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 135 | - Added the `Client::import_secrets_bundle` method. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 136 | ([#6212](https://github.com/matrix-org/matrix-rust-sdk/pull/6212)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 137 | - [**breaking**] Remove support for `native-tls` and remove all feature |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 138 | flags for selecting TLS backend, as `rustls` is the now the only supported |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 139 | TLS backend. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 140 | ([#6409](https://github.com/matrix-org/matrix-rust-sdk/pull/6409)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 141 | - Expose `event_type_raw` and `latest_json()` on `EventTimelineItem`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 142 | allowing clients to access the raw event type string and full event JSON for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 143 | custom event handling without pattern-matching through nested enums. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 144 | ([#6387](https://github.com/matrix-org/matrix-rust-sdk/pull/6387)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 145 | ([#6424](https://github.com/matrix-org/matrix-rust-sdk/pull/6424)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 146 | - Expose sync v2 API through FFI via `Client.sync_v2()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 147 | `Client.sync_once_v2()`, enabling mobile clients to sync without |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 148 | requiring Sliding Sync support on the homeserver. `Client.sync_v2()` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 149 | accepts a `SyncListenerV2` callback that receives a `SyncResponseV2` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 150 | after each successful sync. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 151 | ([#6359](https://github.com/matrix-org/matrix-rust-sdk/pull/6359)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 152 | - Added `HomeserverCapabilities` and `Client::homeserver_capabilities()` to get |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 153 | the capabilities of the homeserver. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 154 | ([#6371](https://github.com/matrix-org/matrix-rust-sdk/pull/6371)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 155 | - Expose `Room.send_state_event_raw()` for sending arbitrary state events |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 156 | through the FFI layer. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 157 | ([#6350](https://github.com/matrix-org/matrix-rust-sdk/pull/6350)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 158 | - Introduce a `ThreadListService` which offers reactive interfaces for rendering |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 159 | and managing the list of threads from a particular room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 160 | ([6311](https://github.com/matrix-org/matrix-rust-sdk/pull/6311)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 161 | - [**breaking**] Move `LiveLocation` out of `TimelineItemContent` and into |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 162 | `MsgLikeKind` so it has access to `MsgLikeContent` `reactions`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 163 | ([#6286](https://github.com/matrix-org/matrix-rust-sdk/pull/6286)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 164 | - Add `HumanQrLoginError::UnsupportedQrCodeType` for when a QR is parseable but |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 165 | cannot be used to complete a login. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 166 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6285) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 167 | - Add `HumanQrGrantLoginError::UnsupportedQrCodeType` for when a QR is parseable |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 168 | but cannot be used to grant a login. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 169 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6285) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 170 | - Add the `QrCodeData::base_url` and `QrCodeData::intent` methods. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 171 | ([#6283](https://github.com/matrix-org/matrix-rust-sdk/pull/6283)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 172 | - Add `Encryption::recover_and_fix_backup` to automatically fix key storage |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 173 | backup if the private backup decryption key is missing, invalid or |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 174 | inconsistent with the public key. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 175 | ([#6252](https://github.com/matrix-org/matrix-rust-sdk/pull/6252)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 176 | - Add support for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 177 | [MSC3489](https://github.com/matrix-org/matrix-spec-proposals/pull/3489) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 178 | live location sharing through a new `TimelineItemContent::LiveLocation` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 179 | variant. ([#6232](https://github.com/matrix-org/matrix-rust-sdk/pull/6232)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 180 | - Add `HumanQrGrantLoginError::ConnectionInsecure` for errors establishing the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 181 | secure channel |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 182 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 183 | - Add `HumanQrGrantLoginError::Expired` for when a timeout is encountered during |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 184 | the grant ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 185 | - Add `HumanQrGrantLoginError::Cancelled` for when the grant is cancelled |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 186 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 187 | - Add `HumanQrGrantLoginError::OtherDeviceAlreadySignedIn` for when the other |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 188 | device is already signed in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 189 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 190 | - Add `HumanQrGrantLoginError::DeviceNotFound` for when the requested device was |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 191 | not returned by the homeserver |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 192 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 193 | - Add `RoomInfo::is_low_priority` for getting the room's `m.lowpriority` tag |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 194 | state ([#6183](https://github.com/matrix-org/matrix-rust-sdk/pull/6183)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 195 | - Add `Client::subscribe_to_duplicate_key_upload_errors` for listening to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 196 | duplicate key upload errors from `/keys/upload`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 197 | ([#6135](https://github.com/matrix-org/matrix-rust-sdk/pull/6135/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 198 | - Add `NotificationItem::raw_event` to get the raw event content of the event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 199 | that triggered the notification, which can be useful for debugging and to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 200 | support clients that want to implement custom handling for certain |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 201 | notifications. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 202 | ([#6122](https://github.com/matrix-org/matrix-rust-sdk/pull/6122)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 203 | - [**breaking**] Extend `TimelineFocus::Event` to allow marking the target |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 204 | event as the root of a thread. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 205 | [#6050](https://github.com/matrix-org/matrix-rust-sdk/pull/6050) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 206 | - [**breaking**] Remove `TimelineFilter::EventTypeFilter` which has been |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 207 | replaced by the more generic `TimelineFilter::EventFilter`. Users of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 208 | `TimelineEventTypeFilter::include` and `TimelineEventTypeFilter::exclude` can |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 209 | switch to `TimelineEventFilter::include_event_types` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 210 | `TimelineEventFilter::exclude_event_types`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 211 | ([#6070](https://github.com/matrix-org/matrix-rust-sdk/pull/6070/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 212 | - Add `TimelineFilter::EventFilter` for filtering events based on their type or |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 213 | content. For content filtering, only membership and profile change filters |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 214 | are available as of now. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 215 | ([#6048](https://github.com/matrix-org/matrix-rust-sdk/pull/6048/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 216 | - Introduce `SpaceFilter`s as a mechanism for narrowing down what's displayed in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 217 | the room list |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 218 | ([#6025](https://github.com/matrix-org/matrix-rust-sdk/pull/6025)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 219 | - Expose room power level thresholds in `OtherState::RoomPowerLevels` (ban, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 220 | kick, invite, redact, state & events defaults, per-event overrides, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 221 | notifications), so clients can compute the required power level for actions |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 222 | and compare with previous values. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 223 | ([#5931](https://github.com/matrix-org/matrix-rust-sdk/pull/5931)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 224 | - Add `RoomCreationParameters::is_space` parameter to be able to create spaces. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 225 | ([#6010](https://github.com/matrix-org/matrix-rust-sdk/pull/6010/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 226 | - [**breaking**] `LazyTimelineItemProvider::get_shields` no longer returns an an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 227 | `Option`: the `ShieldState` type contains a `None` variant, so the `Option` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 228 | was redundant. The `message` field has also been removed: since there was no |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 229 | way to localise the returned string, applications should not be using it. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 230 | ([#5959](https://github.com/matrix-org/matrix-rust-sdk/pull/5959)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 231 | - Add `Room::list_threads` to list all the threads in a room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 232 | ([#5953](https://github.com/matrix-org/matrix-rust-sdk/pull/5953)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 233 | - Add `SpaceService::get_space_room` to get a space given its id from the space |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 234 | graph if available. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 235 | [#5944](https://github.com/matrix-org/matrix-rust-sdk/pull/5944) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 236 | - Add `QrCodeData::to_bytes()` to allow generation of a QR code. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 237 | ([#5939](https://github.com/matrix-org/matrix-rust-sdk/pull/5939)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 238 | - [**breaking**]: The new Latest Event API replaces the old API. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 239 | `Room::new_latest_event` overwrites the `Room::latest_event` method. See the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 240 | documentation of `matrix_sdk::latest_event` to learn about the new API. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 241 | [#5624](https://github.com/matrix-org/matrix-rust-sdk/pull/5624/) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 242 | - Created `RoomPowerLevels::events` function which returns a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 243 | `HashMap<TimelineEventType, i64>` with all the power levels per event type. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 244 | ([#5937](https://github.com/matrix-org/matrix-rust-sdk/pull/5937)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 245 | - Expose `EventTimelineItem::forwarder` and `forwarder_profile`, which, if |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 246 | present, provide the ID and profile of the user who forwarded the keys used to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 247 | decrypt the event as part of an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 248 | [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) key |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 249 | bundle. ([#6000](https://github.com/matrix-org/matrix-rust-sdk/pull/6000)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 250 | - Add `NonFavorite` filter to the Room List API. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 251 | ([#5991](https://github.com/matrix-org/matrix-rust-sdk/pull/5991) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 252 | - Add `call_intent` (either `RtcCallIntent::Audio` or `RtcCallIntent::Video`) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 253 | field to `RtcNotification` event content. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 254 | ([#6207](https://github.com/matrix-org/matrix-rust-sdk/pull/6207)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 255 | - Add `RoomInfo::active_room_call_consensus_intent` method to get the call |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 256 | intent for the current call, based on what members are advertising. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 257 | ([#6274](https://github.com/matrix-org/matrix-rust-sdk/pull/6274)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 258 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 259 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 260 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 261 | - [**breaking**] All OIDC related types and functions have been renamed from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 262 | `Oidc`/`oidc` to `OAuth`/`oauth` to align with the finalised naming in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 263 | spec. ([#6500](https://github.com/matrix-org/matrix-rust-sdk/pull/6500)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 264 | - [**breaking**] `LiveLocationShares` has been renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 265 | `LiveLocationsObserver` and `Room::live_location_shares` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 266 | `Room::live_locations_observer`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 267 | ([#6446](https://github.com/matrix-org/matrix-rust-sdk/pull/6446)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 268 | - [**breaking**] `Room::observe_live_location_shares` has been replaced by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 269 | `Room::live_locations_observer`. Call [`LiveLocationsObserver::subscribe`] on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 270 | it to receive an initial snapshot and a stream of incremental updates.The |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 271 | stream is seeded from the event cache on creation and includes the own user's |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 272 | shares (previously excluded). `LiveLocationShare.is_live` has been removed; |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 273 | instead `ts` (start timestamp) and `timeout` (duration in milliseconds) are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 274 | now exposed so clients can compute liveness themselves via |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 275 | `current_time < ts + timeout`. Non-live shares are automatically removed from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 276 | the list. A new `LiveLocationShareListener` callback interface must be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 277 | implemented and passed to the method. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 278 | ([#6385](https://github.com/matrix-org/matrix-rust-sdk/pull/6385)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 279 | - [**breaking**] The `RoomAliases` variants of `StateEventContent`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 280 | `StateEventType` and `OtherState` was removed. This state event type was |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 281 | removed from the Matrix specification a while ago, and support for it has been |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 282 | removed in Ruma. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 283 | ([#6414](https://github.com/matrix-org/matrix-rust-sdk/pull/6414)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 284 | - `Client::new` no longer unnecessarily instantiates an `OAuth` component if |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 285 | `CrossProcessLockConfig::SingleProcess` is used. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 286 | ([#6293](https://github.com/matrix-org/matrix-rust-sdk/pull/6293)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 287 | - [**breaking**] `Room::report_content()` no longer takes a `score` argument, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 288 | because it was removed from the Matrix specification. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 289 | ([#6256](https://github.com/matrix-org/matrix-rust-sdk/pull/6256)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 290 | - [**breaking**] The `current_version` field of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 291 | `ErrorKind::WrongRoomKeysVersion` is no longer optional. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 292 | ([#6241](https://github.com/matrix-org/matrix-rust-sdk/pull/6241)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 293 | - [**breaking**] The following variants of `AccountManagementAction` were |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 294 | renamed to match their new names after being merge in the Matrix |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 295 | specification: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 296 | - `SessionsList` is renamed to `DevicesList` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 297 | - `SessionView` is renamed to `DeviceView` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 298 | - `SessionEnd` is renamed to `DeviceDelete` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 299 | ([#6217](https://github.com/matrix-org/matrix-rust-sdk/pull/6217)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 300 | - [**breaking**] `HumanQrGrantLoginError::UnableToCreateDevice` has been removed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 301 | ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 302 | - [**breaking**] Removed `ClientBuilder::enable_oidc_refresh_lock` in favour of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 303 | using `ClientBuilder::cross_process_lock_config` to configure that lock when a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 304 | `MultiProcess` configuration is supplied. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 305 | ([#6204](https://github.com/matrix-org/matrix-rust-sdk/pull/6204)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 306 | - `RoomPaginationStatus` is renamed to `PaginationStatus`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 307 | ([#6174](https://github.com/matrix-org/matrix-rust-sdk/pull/6174/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 308 | - [**breaking**] Replaced `ClientBuilder::cross_process_store_locks_holder_name` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 309 | with `ClientBuilder::cross_process_lock_config`, which accepts a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 310 | `CrossProcessLockConfig` value to specify whether the resulting `Client` will |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 311 | be used in a single process or multiple processes. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 312 | ([#6160](https://github.com/matrix-org/matrix-rust-sdk/pull/6160)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 313 | - [**breaking**] Refactored `is_last_admin` to `is_last_owner` the check will |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 314 | now account also for v12 rooms, where creators and users with PL 150 matter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 315 | ([#6036](https://github.com/matrix-org/matrix-rust-sdk/pull/6036)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 316 | - [**breaking**] The existing `TimelineEventType` was renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 317 | `TimelineEventContent`, because it contained the actual contents of the event. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 318 | Then, we created a new `TimelineEventType` enum that actually contains _just_ |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 319 | the event type. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 320 | ([#5937](https://github.com/matrix-org/matrix-rust-sdk/pull/5937)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 321 | - [**breaking**] The function `TimelineEvent::event_type` is now |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 322 | `TimelineEvent::content`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 323 | ([#5937](https://github.com/matrix-org/matrix-rust-sdk/pull/5937)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 324 | - [**breaking**] The `SpaceService` will no longer auto-subscribe to required |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 325 | client events when invoking the `subscribe_to_joined_spaces` but instead do it |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 326 | through its, now async, constructor. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 327 | ([#5972](https://github.com/matrix-org/matrix-rust-sdk/pull/5972)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 328 | - [**breaking**] The `SpaceService`'s `joined_spaces` method has been renamed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 329 | `top_level_joined_spaces` and `subscribe_to_joined_spaces` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 330 | `space_service.subscribe_to_top_level_joined_spaces` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 331 | ([#5972](https://github.com/matrix-org/matrix-rust-sdk/pull/5972)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 332 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 333 | ## [0.16.1] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 334 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 335 | No notable changes in this release. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 336 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 337 | ## [0.16.0] - 2025-12-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 338 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 339 | ### Breaking changes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 340 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 341 | - `TimelineConfiguration::track_read_receipts`'s type is now an enum to allow |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 342 | tracking to be enabled for all events (like before) or only for message-like |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 343 | events (which prevents read receipts from being placed on state events). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 344 | ([#5900](https://github.com/matrix-org/matrix-rust-sdk/pull/5900)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 345 | - `Client::reset_server_info()` has been split into `reset_supported_versions()` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 346 | and `reset_well_known()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 347 | ([#5910](https://github.com/matrix-org/matrix-rust-sdk/pull/5910)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 348 | - Add `HumanQrLoginError::NotFound` for non-existing / expired rendezvous |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 349 | sessions ([#5898](https://github.com/matrix-org/matrix-rust-sdk/pull/5898)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 350 | - Add `HumanQrGrantLoginError::NotFound` for non-existing / expired rendezvous |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 351 | sessions ([#5898](https://github.com/matrix-org/matrix-rust-sdk/pull/5898)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 352 | - The `LatestEventValue::Local` type gains 2 new fields: `sender` and `profile`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 353 | ([#5885](https://github.com/matrix-org/matrix-rust-sdk/pull/5885)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 354 | - The `Encryption::user_identity()` method has received a new argument. The |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 355 | `fallback_to_server` argument controls if we should attempt to fetch the user |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 356 | identity from the homeserver if it wasn't found in the local storage. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 357 | ([#5870](https://github.com/matrix-org/matrix-rust-sdk/pull/5870)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 358 | - Expose the power level required to modify `m.space.child` on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 359 | `room::power_levels::RoomPowerLevelsValues`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 360 | - Rename `Client::login_with_qr_code` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 361 | `Client::new_login_with_qr_code_handler`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 362 | ([#5836](https://github.com/matrix-org/matrix-rust-sdk/pull/5836)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 363 | - Add the `sqlite` feature, along with the `indexeddb` feature, to enable either |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 364 | the SQLite or IndexedDB store. The `session_paths`, `session_passphrase`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 365 | `session_pool_max_size`, `session_cache_size` and `session_journal_size_limit` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 366 | methods on `ClientBuilder` have been removed. New methods are added: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 367 | `ClientBuilder::in_memory_store` if one wants non-persistent stores, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 368 | `ClientBuilder::sqlite_store` to configure and to use SQLite stores (if |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 369 | the `sqlite` feature is enabled), and `ClientBuilder::indexeddb_store` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 370 | configure and to use IndexedDB stores (if the `indexeddb` feature is enabled). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 371 | ([#5811](https://github.com/matrix-org/matrix-rust-sdk/pull/5811)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 372 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 373 | The code: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 374 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 375 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 376 | client_builder |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 377 | .session_paths("data_path", "cache_path") |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 378 | .passphrase("foobar") |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 379 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 380 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 381 | now becomes: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 382 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 383 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 384 | client_builder |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 385 | .sqlite_store( |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 386 | SqliteSessionStoreBuilder::new("data_path", "cache_path") |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 387 | .passphrase("foobar") |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 388 | ) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 389 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 390 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 391 | - UniFFI was upgraded to `v0.30.0` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 392 | ([#5808](https://github.com/matrix-org/matrix-rust-sdk/pull/5808)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 393 | - The `waveform` parameter in `Timeline::send_voice_message` format changed to a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 394 | list of `f32` between 0 and 1. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 395 | ([#5732](https://github.com/matrix-org/matrix-rust-sdk/pull/5732)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 396 | - The `normalized_power_level` field has been removed from the `RoomMember` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 397 | struct. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 398 | ([#5635](https://github.com/matrix-org/matrix-rust-sdk/pull/5635)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 399 | - Remove the deprecated `CallNotify` event (`org.matrix.msc4075.call.notify`) in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 400 | favor of the new `RtcNotification` event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 401 | (`org.matrix.msc4075.rtc.notification`). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 402 | ([#5668](https://github.com/matrix-org/matrix-rust-sdk/pull/5668)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 403 | - Add `QrLoginProgress::SyncingSecrets` to indicate that secrets are being |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 404 | synced between the two devices. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 405 | ([#5760](https://github.com/matrix-org/matrix-rust-sdk/pull/5760)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 406 | - Add `Room::subscribe_to_send_queue_updates` to observe room send queue |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 407 | updates. ([#5761](https://github.com/matrix-org/matrix-rust-sdk/pull/5761)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 408 | - `Client::login_with_qr_code` now returns a handler that allows performing the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 409 | flow with either the current device scanning or generating the QR code. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 410 | Additionally, new errors `HumanQrLoginError::CheckCodeAlreadySent` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 411 | `HumanQrLoginError::CheckCodeCannotBeSent` were added. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 412 | ([#5786](https://github.com/matrix-org/matrix-rust-sdk/pull/5786)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 413 | - `ComposerDraft` now includes attachments alongside the text message. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 414 | ([#5794](https://github.com/matrix-org/matrix-rust-sdk/pull/5794)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 415 | - Add `Client::subscribe_to_send_queue_updates` to observe global send queue |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 416 | updates. ([#5784](https://github.com/matrix-org/matrix-rust-sdk/pull/5784)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 417 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 418 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 419 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 420 | - Add `Client::get_store_sizes()` so to query the size of the existing stores, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 421 | if available. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 422 | ([#5911](https://github.com/matrix-org/matrix-rust-sdk/pull/5911)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 423 | - Expose `is_space` in `NotificationRoomInfo`, allowing clients to determine if |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 424 | the room that triggered the notification is a space. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 425 | - Add push actions to `NotificationItem` and replace `SyncNotification` with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 426 | `NotificationItem`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 427 | ([#5835](https://github.com/matrix-org/matrix-rust-sdk/pull/5835)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 428 | - Add `Client::new_grant_login_with_qr_code_handler` for granting login to a new |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 429 | device by way of a QR code. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 430 | ([#5836](https://github.com/matrix-org/matrix-rust-sdk/pull/5836)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 431 | - Add `Client::register_notification_handler` for observing notifications |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 432 | generated from sync responses. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 433 | ([#5831](https://github.com/matrix-org/matrix-rust-sdk/pull/5831)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 434 | - Add `Room::mark_as_fully_read_unchecked` so clients can mark a room as read |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 435 | without needing a `Timeline` instance. Note this method is not recommended as |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 436 | it can potentially cause incorrect read receipts, but it can needed in certain |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 437 | cases. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 438 | - Add `Timeline::latest_event_id` to be able to fetch the event id of the latest |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 439 | event of the timeline. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 440 | - Add `Room::load_or_fetch_event` so we can get a `TimelineEvent` given its |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 441 | event id ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 442 | - Add `TimelineEvent::thread_root_event_id` to expose the thread root event id |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 443 | for this type too |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 444 | ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 445 | - Add `NotificationSettings::get_raw_push_rules` so clients can fetch the raw |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 446 | JSON content of the push rules of the current user and include it in bug |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 447 | reports ([#5706](https://github.com/matrix-org/matrix-rust-sdk/pull/5706)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 448 | - Add new API to decline calls |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 449 | ([MSC4310](https://github.com/matrix-org/matrix-spec-proposals/pull/4310)): |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 450 | `Room::decline_call` and `Room::subscribe_to_call_decline_events` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 451 | ([#5614](https://github.com/matrix-org/matrix-rust-sdk/pull/5614)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 452 | - Expose `m.federate` in `OtherState::RoomCreate` and `history_visibility` in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 453 | `OtherState::RoomHistoryVisibility`, allowing clients to know whether a room |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 454 | federates and how its history is shared in the appropriate timeline events. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 455 | - Expose `join_rule` in `OtherState::RoomJoinRules`, allowing clients to know |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 456 | the join rules of a room from the appropriate timeline events. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 457 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 458 | ### Changes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 459 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 460 | - `Timeline::latest_event_id` now uses its `ui::Timeline::latest_event_id` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 461 | counterpart, instead of getting the latest event from the timeline and then |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 462 | its id.([#5864](https://github.com/matrix-org/matrix-rust-sdk/pull/5864)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 463 | - Build Android ARM64 bindings using better default RUSTFLAGS (the same used for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 464 | iOS ARM64). This should improve performance. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 465 | [(#5854)](https://github.com/matrix-org/matrix-rust-sdk/pull/5854) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 466 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 467 | ## [0.14.0] - 2025-09-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 468 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 469 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 470 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 471 | - Add `LowPriority` and `NonLowPriority` variants to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 472 | `RoomListEntriesDynamicFilterKind` for filtering rooms based on their low |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 473 | priority status. These filters allow clients to show only low priority rooms |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 474 | or exclude low priority rooms from the room list. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 475 | ([#5508](https://github.com/matrix-org/matrix-rust-sdk/pull/5508)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 476 | - Add `room_version` and `privileged_creators_role` to `RoomInfo` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 477 | ([#5449](https://github.com/matrix-org/matrix-rust-sdk/pull/5449)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 478 | - The [`unstable-hydra`] feature has been enabled, which enables room v12 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 479 | changes in the SDK. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 480 | ([#5450](https://github.com/matrix-org/matrix-rust-sdk/pull/5450)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 481 | - Add experimental support for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 482 | [MSC4306](https://github.com/matrix-org/matrix-spec-proposals/pull/4306), with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 483 | the `Room::fetch_thread_subscription()` and `Room::set_thread_subscription()` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 484 | methods. ([#5442](https://github.com/matrix-org/matrix-rust-sdk/pull/5442)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 485 | - [**breaking**] [`GalleryUploadParameters::reply`] and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 486 | [`UploadParameters::reply`] have been both replaced with a new optional |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 487 | `in_reply_to` field, that's a string which will be parsed into an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 488 | `OwnedEventId` when sending the event. The thread relationship will be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 489 | automatically filled in, based on the timeline focus. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 490 | ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 491 | - [**breaking**] [`Timeline::send_reply()`] now automatically fills in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 492 | thread relationship, based on the timeline focus. As a result, it only takes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 493 | an `OwnedEventId` parameter, instead of the `Reply` type. The proper way to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 494 | start a thread is now thus to create a threaded-focused timeline, and then use |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 495 | `Timeline::send()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 496 | ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 497 | - Add `HomeserverLoginDetails::supports_sso_login` for legacy SSO support |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 498 | information. This is primarily for Element X to give a dedicated error message |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 499 | in case it connects a homeserver with only this method available. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 500 | ([#5222](https://github.com/matrix-org/matrix-rust-sdk/pull/5222)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 501 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 502 | ### Breaking changes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 503 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 504 | - The timeline will now always use the send queue to upload medias, so the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 505 | `UploadParameters::use_send_queue` bool has been removed. Make sure to listen |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 506 | to the send queue's error updates, and to handle send queue restarts. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 507 | ([#5525](https://github.com/matrix-org/matrix-rust-sdk/pull/5525)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 508 | - Support for the legacy media upload progress has been disabled. Media upload |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 509 | progress is available through the send queue, and can be enabled thanks to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 510 | `Client::enable_send_queue_upload_progress()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 511 | ([#5525](https://github.com/matrix-org/matrix-rust-sdk/pull/5525)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 512 | - `TimelineDiff` is now exported as a true `uniffi::Enum` instead of the weird |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 513 | `uniffi::Object` hybrid. This matches both `RoomDirectorySearchEntryUpdate` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 514 | and `RoomListEntriesUpdate` and can be used in the same way. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 515 | ([#5474](https://github.com/matrix-org/matrix-rust-sdk/pull/5474)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 516 | - The `creator` field of `RoomInfo` has been renamed to `creators` and can now |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 517 | contain a list of user IDs, to reflect that a room can now have several |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 518 | creators, as introduced in room version 12. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 519 | ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 520 | - The `PowerLevel` type was introduced to represent power levels instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 521 | `i64` to differentiate the infinite power level of creators, as introduced in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 522 | room version 12. It is used in `suggested_role_for_power_level`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 523 | `suggested_power_level_for_role` and `RoomMember`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 524 | ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 525 | - `Client::get_url` now returns a `Vec<u8>` instead of a `String`. It also |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 526 | throws an error when the response isn't status code 200 OK, instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 527 | providing the error in the response body. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 528 | ([#5438](https://github.com/matrix-org/matrix-rust-sdk/pull/5438)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 529 | - `RoomPreview::info()` doesn't return a result anymore. All unknown join rules |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 530 | are handled in the `JoinRule::Custom` variant. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 531 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 532 | - The `reason` argument of `Room::report_room` is now required, do to a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 533 | clarification in the spec. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 534 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 535 | - `PublicRoomJoinRule` has more variants, supporting all the known values from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 536 | the spec. ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 537 | - The fields of `MediaPreviewConfig` are both optional, allowing to use the type |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 538 | for room account data as well as global account data. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 539 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 540 | - The `event_id` field of `PredecessorRoom` was removed, due to its removal in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 541 | the Matrix specification with MSC4291. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 542 | ([#5419](https://github.com/matrix-org/matrix-rust-sdk/pull/5419)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 543 | - `Client::url_for_oidc` now allows requesting additional scopes for the OAuth2 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 544 | authorization code grant. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 545 | ([#5395](https://github.com/matrix-org/matrix-rust-sdk/pull/5395)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 546 | - `Client::url_for_oidc` now allows passing an optional existing device id from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 547 | a previous login call. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 548 | ([#5394](https://github.com/matrix-org/matrix-rust-sdk/pull/5394)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 549 | - `ClientBuilder::build_with_qr_code` has been removed. Instead, the Client |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 550 | should be built by passing `QrCodeData::server_name` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 551 | `ClientBuilder::server_name_or_homeserver_url`, after which QR login can be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 552 | performed by calling `Client::login_with_qr_code`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 553 | ([#5388](https://github.com/matrix-org/matrix-rust-sdk/pull/5388)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 554 | - The MSRV has been bumped to Rust 1.88. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 555 | ([#5431](https://github.com/matrix-org/matrix-rust-sdk/pull/5431)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 556 | - `Room::send_call_notification` and `Room::send_call_notification_if_needed` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 557 | have been removed, since the event type they send is outdated, and `Client` is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 558 | not actually supposed to be able to join MatrixRTC sessions (yet). In |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 559 | practice, users of these methods probably already rely on another MatrixRTC |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 560 | implementation to participate in sessions, and such an implementation should |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 561 | be capable of sending notifications itself. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 562 | - The `GalleryItemInfo` variants now take an `UploadSource` rather than a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 563 | `String` path to enable uploading from bytes directly. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 564 | ([#5529](https://github.com/matrix-org/matrix-rust-sdk/pull/5529)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 565 | - Media and gallery uploads now use `UploadSource` to specify the thumbnail. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 566 | ([#5530](https://github.com/matrix-org/matrix-rust-sdk/pull/5530)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 567 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 568 | ## [0.13.0] - 2025-07-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 569 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 570 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 571 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 572 | - Add `NotificationRoomInfo::topic` to the `NotificationRoomInfo` struct, which |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 573 | contains the topic of the room. This is useful for displaying the room topic |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 574 | in notifications. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 575 | ([#5300](https://github.com/matrix-org/matrix-rust-sdk/pull/5300)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 576 | - Add `EmbeddedEventDetails::timestamp` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 577 | `EmbeddedEventDetails::event_or_transaction_id` which are already available in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 578 | regular timeline items. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 579 | ([#5331](https://github.com/matrix-org/matrix-rust-sdk/pull/5331)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 580 | - `RoomListService::subscribe_to_rooms` becomes `async` and automatically calls |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 581 | `matrix_sdk::latest_events::LatestEvents::listen_to_room` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 582 | ([#5369](https://github.com/matrix-org/matrix-rust-sdk/pull/5369)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 583 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 584 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 585 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 586 | - Adjust features in the `matrix-sdk-ffi` crate to expose more platform-specific |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 587 | knobs. Previously the `matrix-sdk-ffi` was configured primarily by target |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 588 | configs, choosing between the tls flavor (`rustls-tls` or `native-tls`) and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 589 | features like `sentry` based purely on the target. As we work to add an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 590 | additional Wasm target to this crate, the cross product of target specific |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 591 | features has become somewhat chaotic, and we have shifted to externalize these |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 592 | choices as feature flags. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 593 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 594 | To maintain existing compatibility on the major platforms, these features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 595 | should be used: Android: `"bundled-sqlite,unstable-msc4274,rustls-tls,sentry"` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 596 | iOS: `"bundled-sqlite,unstable-msc4274,native-tls,sentry"` Javascript/Wasm: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 597 | `"unstable-msc4274,native-tls"` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 598 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 599 | In the future additional choices (such as session storage, `sqlite` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 600 | `indexeddb`) will likely be added as well. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 601 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 602 | Breaking changes: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 603 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 604 | - `Client::reset_server_capabilities` has been renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 605 | `Client::reset_server_info`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 606 | ([#5167](https://github.com/matrix-org/matrix-rust-sdk/pull/5167)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 607 | - `RoomPreview::join_rule`, `NotificationItem::join_rule`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 608 | `RoomInfo::is_public`, and `Room::is_public()` return values are now optional. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 609 | They will be set to `None` if the join rule state event is missing for a given |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 610 | room. `NotificationRoomInfo::is_public` has been removed; callers can inspect |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 611 | the value of `NotificationItem::join_rule` to determine if the room is public |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 612 | (i.e. if the join rule is `Public`). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 613 | ([#5278](https://github.com/matrix-org/matrix-rust-sdk/pull/5278)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 614 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 615 | ## [0.12.0] - 2025-06-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 616 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 617 | Breaking changes: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 618 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 619 | - `Client::send_call_notification_if_needed` now returns `Result<bool>` instead |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 620 | of `Result<()>` so we can check if the event was sent. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 621 | - `Client::upload_avatar` and `Timeline::send_attachment` now may fail if a file |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 622 | too large for the homeserver media config is uploaded. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 623 | - `UploadParameters` replaces field `filename: String` with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 624 | `source: UploadSource`. `UploadSource` is an enum which may take a filename or |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 625 | a filename and bytes, which allows a foreign language to read file contents |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 626 | natively and then pass those contents to the foreign function when uploading a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 627 | file through the `Timeline`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 628 | ([#4948](https://github.com/matrix-org/matrix-rust-sdk/pull/4948)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 629 | - `RoomInfo` replaces its field `is_tombstoned: bool` with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 630 | `tombstone: Option<RoomTombstoneInfo>`, containing the data needed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 631 | implement the room migration UI, a message and the replacement room id. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 632 | ([#5027](https://github.com/matrix-org/matrix-rust-sdk/pull/5027)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 633 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 634 | Additions: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 635 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 636 | - `Client::subscribe_to_room_info` allows clients to subscribe to room info |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 637 | updates in rooms which may not be known yet. This is useful when displaying a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 638 | room preview for an unknown room, so when we receive any membership change for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 639 | it, we can automatically update the UI. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 640 | - `Client::get_max_media_upload_size` to get the max size of a request sent to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 641 | the homeserver so we can tweak our media uploads by compressing/transcoding |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 642 | the media. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 643 | - Add `ClientBuilder::enable_share_history_on_invite` to enable experimental |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 644 | support for sharing encrypted room history on invite, per |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 645 | [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 646 | ([#5141](https://github.com/matrix-org/matrix-rust-sdk/pull/5141)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 647 | - Support for adding a Sentry layer to the FFI bindings has been added. Only |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 648 | `tracing` statements with the field `sentry=true` will be forwarded to Sentry, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 649 | in addition to default Sentry filters. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 650 | - Add room topic string to `StateEventContent` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 651 | - Add `UploadSource` for representing upload data - this is analogous to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 652 | `matrix_sdk_ui::timeline::AttachmentSource` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 653 | - Add `Client::observe_account_data_event` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 654 | `Client::observe_room_account_data_event` to subscribe to global and room |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 655 | account data changes. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 656 | ([#4994](https://github.com/matrix-org/matrix-rust-sdk/pull/4994)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 657 | - Add `Timeline::send_gallery` to send MSC4274-style galleries. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 658 | ([#5163](https://github.com/matrix-org/matrix-rust-sdk/pull/5163)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 659 | - Add `reply_params` to `GalleryUploadParameters` to allow sending galleries as |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 660 | (threaded) replies. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 661 | ([#5173](https://github.com/matrix-org/matrix-rust-sdk/pull/5173)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 662 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 663 | Breaking changes: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 664 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 665 | - `contacts` has been removed from `OidcConfiguration` (it was unused since the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 666 | switch to OAuth). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 667 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 668 | ## [0.11.0] - 2025-04-11 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 669 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 670 | Breaking changes: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 671 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 672 | - `TracingConfiguration` now includes a new field `trace_log_packs`, which gives |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 673 | a convenient way to set the TRACE log level for multiple targets related to a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 674 | given feature. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 675 | ([#4824](https://github.com/matrix-org/matrix-rust-sdk/pull/4824)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 676 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 677 | - `setup_tracing` has been renamed `init_platform`; in addition to the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 678 | `TracingConfiguration` parameter it also now takes a boolean indicating |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 679 | whether to spawn a minimal tokio runtime for the application; in general for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 680 | main app processes this can be set to `false`, and memory-constrained programs |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 681 | can set it to `true`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 682 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 683 | - Matrix client API errors coming from API responses will now be mapped to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 684 | `ClientError::MatrixApi`, containing both the original message and the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 685 | associated error code and kind. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 686 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 687 | - `EventSendState` now has two additional variants: `CrossSigningNotSetup` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 688 | `SendingFromUnverifiedDevice`. These indicate that your own device is not |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 689 | properly cross-signed, which is a requirement when using the identity-based |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 690 | strategy, and can only be returned when using the identity-based strategy. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 691 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 692 | In addition, the `VerifiedUserHasUnsignedDevice` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 693 | `VerifiedUserChangedIdentity` variants can be returned when using the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 694 | identity-based strategy, in addition to when using the device-based strategy |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 695 | with `error_on_verified_user_problem` is set. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 696 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 697 | - `EventSendState` now has two additional variants: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 698 | `VerifiedUserHasUnsignedDevice` and `VerifiedUserChangedIdentity`. These |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 699 | reflect problems with verified users in the room and as such can only be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 700 | returned when the room key recipient strategy has |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 701 | `error_on_verified_user_problem` set. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 702 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 703 | - The `AuthenticationService` has been removed: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 704 | - Instead of calling `configure_homeserver`, build your own client with the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 705 | `serverNameOrHomeserverUrl` builder method to keep the same behaviour. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 706 | - The parts of `AuthenticationError` related to discovery will be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 707 | represented in the `ClientBuildError` returned |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 708 | when calling `build()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 709 | - The remaining methods can be found on the built `Client`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 710 | - There is a new `abortOidcLogin` method that should be called if the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 711 | webview is dismissed without a callback ( |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 712 | or fails to present). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 713 | - The rest of `AuthenticationError` is now found in the OidcError type. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 714 | - `OidcAuthenticationData` is now called `OidcAuthorizationData`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 715 | - The `get_element_call_required_permissions` function now requires the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 716 | device_id. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 717 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 718 | - Some `OidcPrompt` cases have been removed (`None`, `SelectAccount`). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 719 | - `Room::is_encrypted` is replaced by `Room::latest_encryption_state` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 720 | which returns a value of the new `EncryptionState` enum; another |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 721 | `Room::encryption_state` non-async and infallible method is added to get the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 722 | `EncryptionState` without running a network request. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 723 | ([#4777](https://github.com/matrix-org/matrix-rust-sdk/pull/4777)). One can |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 724 | safely replace: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 725 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 726 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 727 | room.is_encrypted().await? |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 728 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 729 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 730 | by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 731 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 732 | ```rust |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 733 | room.latest_encryption_state().await?.is_encrypted() |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 734 | ``` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 735 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 736 | - `ClientBuilder::passphrase` is renamed `session_passphrase` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 737 | ([#4870](https://github.com/matrix-org/matrix-rust-sdk/pull/4870/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 738 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 739 | - Merge `Timeline::send_thread_reply` into `Timeline::send_reply`. This |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 740 | changes the parameters of `send_reply` which now requires passing the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 741 | event ID (and thread reply behaviour) inside a `ReplyParameters` struct. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 742 | ([#4880](https://github.com/matrix-org/matrix-rust-sdk/pull/4880/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 743 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 744 | - The `dynamic_registrations_file` field of `OidcConfiguration` was removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 745 | Clients are supposed to re-register with the homeserver for every login. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 746 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 747 | - `RoomPreview::own_membership_details` is now |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 748 | `RoomPreview::member_with_sender_info`, takes any user id and returns an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 749 | `Option<RoomMemberWithSenderInfo>`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 750 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 751 | Additions: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 752 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 753 | - Add `Encryption::get_user_identity` which returns `UserIdentity` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 754 | - Add `ClientBuilder::room_key_recipient_strategy` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 755 | - Add `Room::send_raw` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 756 | - Add `NotificationSettings::set_custom_push_rule` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 757 | - Expose `withdraw_verification` to `UserIdentity` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 758 | - Expose `report_room` to `Room` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 759 | - Add `RoomInfo::encryption_state` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 760 | ([#4788](https://github.com/matrix-org/matrix-rust-sdk/pull/4788)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 761 | - Add `Timeline::send_thread_reply` for clients that need to start threads |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 762 | themselves. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 763 | ([4819](https://github.com/matrix-org/matrix-rust-sdk/pull/4819)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 764 | - Add `ClientBuilder::session_pool_max_size`, `::session_cache_size` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 765 | `::session_journal_size_limit` to control the stores configuration, especially |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 766 | their memory consumption |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 767 | ([#4870](https://github.com/matrix-org/matrix-rust-sdk/pull/4870/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 768 | - Add `ClientBuilder::system_is_memory_constrained` to indicate that the system |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 769 | has less memory available than the current standard |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 770 | ([#4894](https://github.com/matrix-org/matrix-rust-sdk/pull/4894)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 771 | - Add `Room::member_with_sender_info` to get both a room member's info and for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 772 | the user who sent the `m.room.member` event the `RoomMember` is based on. |