atagen

matrix-rust-sdk

public
Star0
Watch0
ssh://brewery@pls.lobotomise.me:33/atagen/matrix-rust-sdk.git

Blame: crates/matrix-sdk/CHANGELOG.md

7ff8adafe9e4atagen2026-10-22 12:30 UTC1
# Changelog
7ff8adafe9e4atagen2026-10-22 12:30 UTC2
7ff8adafe9e4atagen2026-10-22 12:30 UTC3
All notable changes to this project will be documented in this file.
7ff8adafe9e4atagen2026-10-22 12:30 UTC4
7ff8adafe9e4atagen2026-10-22 12:30 UTC5
<!-- changelog start -->
7ff8adafe9e4atagen2026-10-22 12:30 UTC6
7ff8adafe9e4atagen2026-10-22 12:30 UTC7
## [0.18.0](https://github.com/matrix-org/matrix-rust-sdk/tree/0.18.0) - 2026-06-02
7ff8adafe9e4atagen2026-10-22 12:30 UTC8
7ff8adafe9e4atagen2026-10-22 12:30 UTC9
### Added
7ff8adafe9e4atagen2026-10-22 12:30 UTC10
7ff8adafe9e4atagen2026-10-22 12:30 UTC11
- Add `Client::tile_server` and a `TileServerInfo` struct to expose the
7ff8adafe9e4atagen2026-10-22 12:30 UTC12
  homeserver-advertised map tile server (`tile_server` field of the matrix
7ff8adafe9e4atagen2026-10-22 12:30 UTC13
  client well-known,
7ff8adafe9e4atagen2026-10-22 12:30 UTC14
  [MSC3488](https://github.com/matrix-org/matrix-spec-proposals/pull/3488)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC15
  Returns `None` when the homeserver hasn't advertised one or the well-known is
7ff8adafe9e4atagen2026-10-22 12:30 UTC16
  unavailable.
7ff8adafe9e4atagen2026-10-22 12:30 UTC17
  ([#6610](https://github.com/matrix-org/matrix-rust-sdk/pulls/6610))
7ff8adafe9e4atagen2026-10-22 12:30 UTC18
7ff8adafe9e4atagen2026-10-22 12:30 UTC19
### Changed
7ff8adafe9e4atagen2026-10-22 12:30 UTC20
7ff8adafe9e4atagen2026-10-22 12:30 UTC21
- [**breaking**] `RumaApiError` is now a type alias for `UiaaResponse`, because
7ff8adafe9e4atagen2026-10-22 12:30 UTC22
  they have similar variants containing the same data. The `ClientApi` variant
7ff8adafe9e4atagen2026-10-22 12:30 UTC23
  is now `MatrixError`, and the `Uiaa` variant is `AuthResponse`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC24
  ([#6574](https://github.com/matrix-org/matrix-rust-sdk/pulls/6574))
7ff8adafe9e4atagen2026-10-22 12:30 UTC25
- [**breaking**] `Pusher::set` now takes an `append: bool` parameter, forwarded
7ff8adafe9e4atagen2026-10-22 12:30 UTC26
  to the homeserver on `POST /_matrix/client/v3/pushers/set`. Pass `true` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC27
  keep an existing pusher with the same `app_id` and `pushkey` registered for
7ff8adafe9e4atagen2026-10-22 12:30 UTC28
  other users (e.g. multi-profile clients on a single device); pass `false` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC29
  preserve the previous default behaviour.
7ff8adafe9e4atagen2026-10-22 12:30 UTC30
  ([#6600](https://github.com/matrix-org/matrix-rust-sdk/pulls/6600))
7ff8adafe9e4atagen2026-10-22 12:30 UTC31
7ff8adafe9e4atagen2026-10-22 12:30 UTC32
### Fixed
7ff8adafe9e4atagen2026-10-22 12:30 UTC33
7ff8adafe9e4atagen2026-10-22 12:30 UTC34
- Upgrade Ruma to 0.16.0, fixing a deserialization issue for
7ff8adafe9e4atagen2026-10-22 12:30 UTC35
  `m.key.verification.accept` events.
7ff8adafe9e4atagen2026-10-22 12:30 UTC36
  ([#6628](https://github.com/matrix-org/matrix-rust-sdk/pulls/6628))
7ff8adafe9e4atagen2026-10-22 12:30 UTC37
- A cyclic reference of `Client` has been detected in
7ff8adafe9e4atagen2026-10-22 12:30 UTC38
  `ThreadSubscriptionCatchup`, preventing `Client` to drop correctly. This is
7ff8adafe9e4atagen2026-10-22 12:30 UTC39
  now fixed, removing a memory leak about `Client`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC40
  ([#6594](https://github.com/matrix-org/matrix-rust-sdk/pulls/6594))
7ff8adafe9e4atagen2026-10-22 12:30 UTC41
- Fix a panic due to non-deterministic sorting of pinned events.
7ff8adafe9e4atagen2026-10-22 12:30 UTC42
  ([#6595](https://github.com/matrix-org/matrix-rust-sdk/pulls/6595))
7ff8adafe9e4atagen2026-10-22 12:30 UTC43
7ff8adafe9e4atagen2026-10-22 12:30 UTC44
## [0.17.0] - 2026-05-08
7ff8adafe9e4atagen2026-10-22 12:30 UTC45
7ff8adafe9e4atagen2026-10-22 12:30 UTC46
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC47
7ff8adafe9e4atagen2026-10-22 12:30 UTC48
- [**breaking**] `Room::is_dm` was renamed to `Room::compute_is_dm` to match its
7ff8adafe9e4atagen2026-10-22 12:30 UTC49
  behavior, since it'll now compute and cache the result. A new _synchronous_
7ff8adafe9e4atagen2026-10-22 12:30 UTC50
  `Room::is_dm` function was added which centralizes the logic of checking if
7ff8adafe9e4atagen2026-10-22 12:30 UTC51
  something is a DM based on that cached value and the provided
7ff8adafe9e4atagen2026-10-22 12:30 UTC52
  `DmRoomDefinition`. `Room::sync_members` will also now compute active service
7ff8adafe9e4atagen2026-10-22 12:30 UTC53
  members. ([#6537](https://github.com/matrix-org/matrix-rust-sdk/pull/6537))
7ff8adafe9e4atagen2026-10-22 12:30 UTC54
- [**breaking**] Enforce atomic and synchronized updates to `RoomInfo`. Requires
7ff8adafe9e4atagen2026-10-22 12:30 UTC55
  `StateStore::save_changes` to acquire state store lock and replaces
7ff8adafe9e4atagen2026-10-22 12:30 UTC56
  `Room::set_room_info` with an atomic version, `Room::update_room_info`, which
7ff8adafe9e4atagen2026-10-22 12:30 UTC57
  is also synchronized by the state store lock.
7ff8adafe9e4atagen2026-10-22 12:30 UTC58
  ([#6478](https://github.com/matrix-org/matrix-rust-sdk/pull/6478))
7ff8adafe9e4atagen2026-10-22 12:30 UTC59
- Added `beacon` and `beacon_info` fields to `RoomPowerLevelChanges`, allowing
7ff8adafe9e4atagen2026-10-22 12:30 UTC60
  callers to read and update the power levels required to send beacon (live
7ff8adafe9e4atagen2026-10-22 12:30 UTC61
  location) message events and beacon info state events respectively.
7ff8adafe9e4atagen2026-10-22 12:30 UTC62
  ([#6540](https://github.com/matrix-org/matrix-rust-sdk/pull/6540))
7ff8adafe9e4atagen2026-10-22 12:30 UTC63
- Added `DmRoomDefinition` as a parameter of `ClientBuilder` so we can specify
7ff8adafe9e4atagen2026-10-22 12:30 UTC64
  it when creating a Client. Also added a `Room::is_dm` method and added some
7ff8adafe9e4atagen2026-10-22 12:30 UTC65
  logic to use the new DM definitions in `Client::get_dm_rooms` and when using
7ff8adafe9e4atagen2026-10-22 12:30 UTC66
  message search.
7ff8adafe9e4atagen2026-10-22 12:30 UTC67
  ([#6490](https://github.com/matrix-org/matrix-rust-sdk/pull/6490))
7ff8adafe9e4atagen2026-10-22 12:30 UTC68
- Sharing encrypted history on room invite, per
7ff8adafe9e4atagen2026-10-22 12:30 UTC69
  [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) is
7ff8adafe9e4atagen2026-10-22 12:30 UTC70
  now enabled by default (though can still be disabled via
7ff8adafe9e4atagen2026-10-22 12:30 UTC71
  `ClientBuilder::with_enable_share_history_on_invite`).
7ff8adafe9e4atagen2026-10-22 12:30 UTC72
  ([#6497](https://github.com/matrix-org/matrix-rust-sdk/pull/6497))
7ff8adafe9e4atagen2026-10-22 12:30 UTC73
- Add `Client::get_dm_rooms` function to get an iterator with the DMs for the
7ff8adafe9e4atagen2026-10-22 12:30 UTC74
  provided user id.
7ff8adafe9e4atagen2026-10-22 12:30 UTC75
  ([#6487](https://github.com/matrix-org/matrix-rust-sdk/pull/6487))
7ff8adafe9e4atagen2026-10-22 12:30 UTC76
- Support the stable `m.key_backup` prefix for MSC4287: Sharing key backup
7ff8adafe9e4atagen2026-10-22 12:30 UTC77
  preference between clients.
7ff8adafe9e4atagen2026-10-22 12:30 UTC78
  ([#6410](https://github.com/matrix-org/matrix-rust-sdk/pull/6410))
7ff8adafe9e4atagen2026-10-22 12:30 UTC79
- Add new high-level search helpers in `matrix_sdk_ui::search` to perform
7ff8adafe9e4atagen2026-10-22 12:30 UTC80
  searches for messages in a room or across all rooms.
7ff8adafe9e4atagen2026-10-22 12:30 UTC81
  ([#6394](https://github.com/matrix-org/matrix-rust-sdk/pull/6394))
7ff8adafe9e4atagen2026-10-22 12:30 UTC82
- Latest Event does not emit an update when it computes the same value as the
7ff8adafe9e4atagen2026-10-22 12:30 UTC83
  previous Latest Event.
7ff8adafe9e4atagen2026-10-22 12:30 UTC84
  ([#6396](https://github.com/matrix-org/matrix-rust-sdk/pull/6396))
7ff8adafe9e4atagen2026-10-22 12:30 UTC85
- Add support for pushing the backup key to other clients, and receiving a
7ff8adafe9e4atagen2026-10-22 12:30 UTC86
  pushed backup key from other clients
7ff8adafe9e4atagen2026-10-22 12:30 UTC87
  ([MSC4385](https://github.com/matrix-org/matrix-spec-proposals/pull/4385)),
7ff8adafe9e4atagen2026-10-22 12:30 UTC88
  gated behind the `experimental-push-secrets` feature.
7ff8adafe9e4atagen2026-10-22 12:30 UTC89
  ([#6432](https://github.com/matrix-org/matrix-rust-sdk/pull/6432))
7ff8adafe9e4atagen2026-10-22 12:30 UTC90
- Add `room_versions()` & `account_moderation()` to `HomeserverCapabilities`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC91
  ([#6413](https://github.com/matrix-org/matrix-rust-sdk/pull/6413))
7ff8adafe9e4atagen2026-10-22 12:30 UTC92
- Enable sending redaction events through the send queue via
7ff8adafe9e4atagen2026-10-22 12:30 UTC93
  `RoomSendQueue::redact`. This includes local echoes for redaction events
7ff8adafe9e4atagen2026-10-22 12:30 UTC94
  through the new `LocalEchoContent::Redaction` variant.
7ff8adafe9e4atagen2026-10-22 12:30 UTC95
  ([#6250](https://github.com/matrix-org/matrix-rust-sdk/pull/6250))
7ff8adafe9e4atagen2026-10-22 12:30 UTC96
- [**breaking**] Remove support for `native-tls` and remove all feature
7ff8adafe9e4atagen2026-10-22 12:30 UTC97
  flags for selecting TLS backend, as `rustls` is the now the only supported
7ff8adafe9e4atagen2026-10-22 12:30 UTC98
  TLS backend.
7ff8adafe9e4atagen2026-10-22 12:30 UTC99
  ([#6409](https://github.com/matrix-org/matrix-rust-sdk/pull/6409))
7ff8adafe9e4atagen2026-10-22 12:30 UTC100
- [**breaking**] Added `HomeserverCapabilities` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC101
  `Client::homeserver_capabilities()` to get the capabilities of the homeserver.
7ff8adafe9e4atagen2026-10-22 12:30 UTC102
  This replaces `Client::get_capabilities()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC103
  ([#6371](https://github.com/matrix-org/matrix-rust-sdk/pull/6371))
7ff8adafe9e4atagen2026-10-22 12:30 UTC104
- [**breaking**] `matrix_sdk::error::Error` has a new variant `Timeout` which
7ff8adafe9e4atagen2026-10-22 12:30 UTC105
  occurs when a cross-signing reset does not succeed after some period of time.
7ff8adafe9e4atagen2026-10-22 12:30 UTC106
  ([#6325](https://github.com/matrix-org/matrix-rust-sdk/pull/6325))
7ff8adafe9e4atagen2026-10-22 12:30 UTC107
- The `beacon_info` start event
7ff8adafe9e4atagen2026-10-22 12:30 UTC108
  ([MSC3672](https://github.com/matrix-org/matrix-spec-proposals/pull/3672)) is
7ff8adafe9e4atagen2026-10-22 12:30 UTC109
  now included when computing the latest event for a room, so live location
7ff8adafe9e4atagen2026-10-22 12:30 UTC110
  sharing sessions can be surfaced as a room's most recent activity.
7ff8adafe9e4atagen2026-10-22 12:30 UTC111
  ([#6295](https://github.com/matrix-org/matrix-rust-sdk/pull/6295))
7ff8adafe9e4atagen2026-10-22 12:30 UTC112
- [**breaking**] The `EventCacheError` is now `Clone`able, which implied marking
7ff8adafe9e4atagen2026-10-22 12:30 UTC113
  a few other error types as `Clone`able, and wrapping a few other error
7ff8adafe9e4atagen2026-10-22 12:30 UTC114
  variants with `Arc`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC115
  ([#6305](https://github.com/matrix-org/matrix-rust-sdk/pull/6305))
7ff8adafe9e4atagen2026-10-22 12:30 UTC116
- [**breaking**]: The unread count computation has now moved from the sliding
7ff8adafe9e4atagen2026-10-22 12:30 UTC117
  sync processing, to the event cache. As a result, it is necessary to enable
7ff8adafe9e4atagen2026-10-22 12:30 UTC118
  the event cache if you want to keep a precise unread counts, using
7ff8adafe9e4atagen2026-10-22 12:30 UTC119
  `Client::event_cache().subscribe()`. The unread counts will now also be
7ff8adafe9e4atagen2026-10-22 12:30 UTC120
  available even if you used a previous version of sync (v2), as long as you've
7ff8adafe9e4atagen2026-10-22 12:30 UTC121
  enabled the event cache beforehand.
7ff8adafe9e4atagen2026-10-22 12:30 UTC122
  ([#6253](https://github.com/matrix-org/matrix-rust-sdk/pull/6253))
7ff8adafe9e4atagen2026-10-22 12:30 UTC123
- [**breaking**] `room::reply::Event` has a new field `add_mentions` which is
7ff8adafe9e4atagen2026-10-22 12:30 UTC124
  passed forward in `room::reply::make_reply_event`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC125
  ([#6270](https://github.com/matrix-org/matrix-rust-sdk/pull/6270))
7ff8adafe9e4atagen2026-10-22 12:30 UTC126
- Add `Recovery::recover_and_fix_backup` to automatically fix key storage backup
7ff8adafe9e4atagen2026-10-22 12:30 UTC127
  if the private backup decryption key is missing, invalid or inconsistent with
7ff8adafe9e4atagen2026-10-22 12:30 UTC128
  the public key.
7ff8adafe9e4atagen2026-10-22 12:30 UTC129
  ([#6252](https://github.com/matrix-org/matrix-rust-sdk/pull/6252))
7ff8adafe9e4atagen2026-10-22 12:30 UTC130
- Attempt to import stored room key bundles for rooms awaiting bundles at
7ff8adafe9e4atagen2026-10-22 12:30 UTC131
  client startup.
7ff8adafe9e4atagen2026-10-22 12:30 UTC132
  ([#6215](https://github.com/matrix-org/matrix-rust-sdk/pull/6215))
7ff8adafe9e4atagen2026-10-22 12:30 UTC133
- Add `OAuth::cached_server_metadata()` that caches the authorization server
7ff8adafe9e4atagen2026-10-22 12:30 UTC134
  metadata for a while.
7ff8adafe9e4atagen2026-10-22 12:30 UTC135
  ([#6217](https://github.com/matrix-org/matrix-rust-sdk/pull/6217))
7ff8adafe9e4atagen2026-10-22 12:30 UTC136
- Add `QRCodeGrantLoginError::SecureChannel` for secure channel errors
7ff8adafe9e4atagen2026-10-22 12:30 UTC137
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC138
- Add `QRCodeGrantLoginError::UnexpectedMessage` for protocol message errors
7ff8adafe9e4atagen2026-10-22 12:30 UTC139
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC140
- Add `QRCodeGrantLoginError::LoginFailure` for login failure errors received
7ff8adafe9e4atagen2026-10-22 12:30 UTC141
  from the other device
7ff8adafe9e4atagen2026-10-22 12:30 UTC142
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC143
- Add `QRCodeGrantLoginError::DeviceNotFound` for when the requested device was
7ff8adafe9e4atagen2026-10-22 12:30 UTC144
  not returned by the homeserver
7ff8adafe9e4atagen2026-10-22 12:30 UTC145
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC146
- Add `Client::subscribe_to_duplicate_key_upload_errors` for listening to
7ff8adafe9e4atagen2026-10-22 12:30 UTC147
  duplicate key upload errors from `/keys/upload`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC148
  ([#6135](https://github.com/matrix-org/matrix-rust-sdk/pull/6135/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC149
- Add `Room::pin_event` and `Room::unpin_event`, which allow pinning and
7ff8adafe9e4atagen2026-10-22 12:30 UTC150
  unpinning events from a room. These were extracted from the `matrix_sdk_ui`
7ff8adafe9e4atagen2026-10-22 12:30 UTC151
  crate, with no changes in functionality.
7ff8adafe9e4atagen2026-10-22 12:30 UTC152
  ([#6106](https://github.com/matrix-org/matrix-rust-sdk/pull/6106))
7ff8adafe9e4atagen2026-10-22 12:30 UTC153
- `LatestEventValue::RemoteInvite` is added to handle a Latest Event for invite
7ff8adafe9e4atagen2026-10-22 12:30 UTC154
  room. ([#6056](https://github.com/matrix-org/matrix-rust-sdk/pull/6056))
7ff8adafe9e4atagen2026-10-22 12:30 UTC155
- Add `Room::set_own_member_display_name` to set the current user's display name
7ff8adafe9e4atagen2026-10-22 12:30 UTC156
  within only the one single room (can be used for /myroomnick functionality).
7ff8adafe9e4atagen2026-10-22 12:30 UTC157
  [#5981](https://github.com/matrix-org/matrix-rust-sdk/pull/5981)
7ff8adafe9e4atagen2026-10-22 12:30 UTC158
- Sending `MessageLike` and `RawMessageLike` events through a `Room` now returns
7ff8adafe9e4atagen2026-10-22 12:30 UTC159
  the used `EncryptionInfo`, if any.
7ff8adafe9e4atagen2026-10-22 12:30 UTC160
  ([#5936](https://github.com/matrix-org/matrix-rust-sdk/pull/5936))
7ff8adafe9e4atagen2026-10-22 12:30 UTC161
- [**breaking**]: The new Latest Event API replaces the old API. All the
7ff8adafe9e4atagen2026-10-22 12:30 UTC162
  `new_` prefixes have been removed, thus `Room::new_latest_event` becomes
7ff8adafe9e4atagen2026-10-22 12:30 UTC163
  and overwrites the `Room::latest_event` value. The new Latest Event values
7ff8adafe9e4atagen2026-10-22 12:30 UTC164
  stored in `RoomInfo` are also erased once during the first update of the
7ff8adafe9e4atagen2026-10-22 12:30 UTC165
  SDK. The new values will be re-calculated. The following types or functions
7ff8adafe9e4atagen2026-10-22 12:30 UTC166
  are removed: `PossibleLatestEvent`, `is_suitable_for_latest_event`, and
7ff8adafe9e4atagen2026-10-22 12:30 UTC167
  `LatestEvent` (replaced by `LatestEventValue`). See the documentation of
7ff8adafe9e4atagen2026-10-22 12:30 UTC168
  `matrix_sdk::latest_event` to learn about the new API.
7ff8adafe9e4atagen2026-10-22 12:30 UTC169
  ([#5624](https://github.com/matrix-org/matrix-rust-sdk/pull/5624/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC170
- Expose a new method `RoomEventCache::find_event_relations` for loading
7ff8adafe9e4atagen2026-10-22 12:30 UTC171
  events relating to a specific event ID from the cache.
7ff8adafe9e4atagen2026-10-22 12:30 UTC172
  ([#5930](https://github.com/matrix-org/matrix-rust-sdk/pull/5930/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC173
- Replace in-memory stores with IndexedDB implementations when initializing
7ff8adafe9e4atagen2026-10-22 12:30 UTC174
  `Client` with `BuilderStoreConfig::IndexedDb`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC175
  ([#5946](https://github.com/matrix-org/matrix-rust-sdk/pull/5946))
7ff8adafe9e4atagen2026-10-22 12:30 UTC176
- Call: Add support for the new Intents for voice only calls
7ff8adafe9e4atagen2026-10-22 12:30 UTC177
  `Intent.StartCallDmVoice` and `Intent.JoinExistingDmVoice`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC178
  ([#6003](https://github.com/matrix-org/matrix-rust-sdk/pull/6003))
7ff8adafe9e4atagen2026-10-22 12:30 UTC179
- Add `SlidingSync::unsubscribe_to_rooms` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC180
  `SlidingSync::clear_and_subscribe_to_rooms`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC181
  ([#6012](https://github.com/matrix-org/matrix-rust-sdk/pull/6012))
7ff8adafe9e4atagen2026-10-22 12:30 UTC182
- [**breaking**] Sliding Sync has a new `PollTimeout` type, used by
7ff8adafe9e4atagen2026-10-22 12:30 UTC183
  `SlidingSyncBuilder::requires_timeout`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC184
  ([#6005](https://github.com/matrix-org/matrix-rust-sdk/pull/6005))
7ff8adafe9e4atagen2026-10-22 12:30 UTC185
- Inviting a user to a room with `Client::enable_share_history_on_invite` set
7ff8adafe9e4atagen2026-10-22 12:30 UTC186
  to true will now trigger a download of all historical keys for the room in
7ff8adafe9e4atagen2026-10-22 12:30 UTC187
  question from the client's key backup.
7ff8adafe9e4atagen2026-10-22 12:30 UTC188
  ([#6017](https://github.com/matrix-org/matrix-rust-sdk/pull/6017))
7ff8adafe9e4atagen2026-10-22 12:30 UTC189
- Add widget partial support for MSC4039. Allows widgets to download
7ff8adafe9e4atagen2026-10-22 12:30 UTC190
  non-encrypted files from the content repository (like avatars).
7ff8adafe9e4atagen2026-10-22 12:30 UTC191
  ([#6354](https://github.com/matrix-org/matrix-rust-sdk/pull/6354))
7ff8adafe9e4atagen2026-10-22 12:30 UTC192
7ff8adafe9e4atagen2026-10-22 12:30 UTC193
### Breaking changes
7ff8adafe9e4atagen2026-10-22 12:30 UTC194
7ff8adafe9e4atagen2026-10-22 12:30 UTC195
- [**breaking**] `LiveLocationShares` has been renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC196
  `LiveLocationsObserver` and `Room::live_location_shares` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC197
  `Room::live_locations_observer`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC198
  ([#6446](https://github.com/matrix-org/matrix-rust-sdk/pull/6446))
7ff8adafe9e4atagen2026-10-22 12:30 UTC199
7ff8adafe9e4atagen2026-10-22 12:30 UTC200
- `Room::observe_live_location_shares` has been replaced by
7ff8adafe9e4atagen2026-10-22 12:30 UTC201
  `Room::live_locations_observer`. The new API returns a `LiveLocationsObserver`
7ff8adafe9e4atagen2026-10-22 12:30 UTC202
  struct with a `subscribe()` method that provides an initial snapshot
7ff8adafe9e4atagen2026-10-22 12:30 UTC203
  (`Vector<LiveLocationShare>`) and a batched stream of `VectorDiff` updates,
7ff8adafe9e4atagen2026-10-22 12:30 UTC204
  instead of emitting individual `LiveLocationShare` items as beacon events
7ff8adafe9e4atagen2026-10-22 12:30 UTC205
  arrive. The initial snapshot is loaded from the event cache on creation,
7ff8adafe9e4atagen2026-10-22 12:30 UTC206
  includes the own user's shares (previously excluded), and properly handles
7ff8adafe9e4atagen2026-10-22 12:30 UTC207
  share start/stop by listening to beacon_info state events.
7ff8adafe9e4atagen2026-10-22 12:30 UTC208
  ([#6385](https://github.com/matrix-org/matrix-rust-sdk/pull/6385))
7ff8adafe9e4atagen2026-10-22 12:30 UTC209
7ff8adafe9e4atagen2026-10-22 12:30 UTC210
### Bugfix
7ff8adafe9e4atagen2026-10-22 12:30 UTC211
7ff8adafe9e4atagen2026-10-22 12:30 UTC212
- Add the `session` key in `OAuthCrossSigningResetInfo`, allowing to provide
7ff8adafe9e4atagen2026-10-22 12:30 UTC213
  `AuthData::OAuth` in `CrossSigningResetHandle::auth()`, to match the behavior
7ff8adafe9e4atagen2026-10-22 12:30 UTC214
  described in the Matrix spec.
7ff8adafe9e4atagen2026-10-22 12:30 UTC215
  ([#6525](https://github.com/matrix-org/matrix-rust-sdk/pull/6525))
7ff8adafe9e4atagen2026-10-22 12:30 UTC216
- When threads are enabled, a focused event timeline is used and the focused
7ff8adafe9e4atagen2026-10-22 12:30 UTC217
  event is not part of a thread, hide other threaded events by default like it
7ff8adafe9e4atagen2026-10-22 12:30 UTC218
  happens on the live focus timeline.
7ff8adafe9e4atagen2026-10-22 12:30 UTC219
  ([#6519](https://github.com/matrix-org/matrix-rust-sdk/pull/6519))
7ff8adafe9e4atagen2026-10-22 12:30 UTC220
- Add a recursion limit attribute that raises it from the default value of 128
7ff8adafe9e4atagen2026-10-22 12:30 UTC221
  to 256. ([#6489](https://github.com/matrix-org/matrix-rust-sdk/pull/6489))
7ff8adafe9e4atagen2026-10-22 12:30 UTC222
- Reject invalid edits as candidates for the latest event.
7ff8adafe9e4atagen2026-10-22 12:30 UTC223
  ([#6454](https://github.com/matrix-org/matrix-rust-sdk/pull/6454))
7ff8adafe9e4atagen2026-10-22 12:30 UTC224
- Fix an infinite loop when loading pinned events from the storage.
7ff8adafe9e4atagen2026-10-22 12:30 UTC225
  ([#6453](https://github.com/matrix-org/matrix-rust-sdk/pull/6453))
7ff8adafe9e4atagen2026-10-22 12:30 UTC226
- `beacon_info` stop events (`live: false`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC227
  [MSC3672](https://github.com/matrix-org/matrix-spec-proposals/pull/3672)) are
7ff8adafe9e4atagen2026-10-22 12:30 UTC228
  now also eligible as the latest event for a room, preventing the live location
7ff8adafe9e4atagen2026-10-22 12:30 UTC229
  sharing item from disappearing from the room list summary once the session
7ff8adafe9e4atagen2026-10-22 12:30 UTC230
  ends. ([#6373](https://github.com/matrix-org/matrix-rust-sdk/pull/6373))
7ff8adafe9e4atagen2026-10-22 12:30 UTC231
- Android: add back custom certificates and disabling SSL verification options
7ff8adafe9e4atagen2026-10-22 12:30 UTC232
  in `ClientBuilder` using the previous `webkpi` verifier instead of platform
7ff8adafe9e4atagen2026-10-22 12:30 UTC233
  verifier, otherwise these features will fail.
7ff8adafe9e4atagen2026-10-22 12:30 UTC234
  ([#6328](https://github.com/matrix-org/matrix-rust-sdk/pull/6328))
7ff8adafe9e4atagen2026-10-22 12:30 UTC235
- Room keys are now rotated whenever the client receives an `m.room.member`
7ff8adafe9e4atagen2026-10-22 12:30 UTC236
  event not belonging to the current user with non-`join` membership in order to
7ff8adafe9e4atagen2026-10-22 12:30 UTC237
  prevent
7ff8adafe9e4atagen2026-10-22 12:30 UTC238
  [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) from
7ff8adafe9e4atagen2026-10-22 12:30 UTC239
  leaking room keys in an unintuitive manner.
7ff8adafe9e4atagen2026-10-22 12:30 UTC240
  ([#6292](https://github.com/matrix-org/matrix-rust-sdk/pull/6292))
7ff8adafe9e4atagen2026-10-22 12:30 UTC241
  ([#6457](https://github.com/matrix-org/matrix-rust-sdk/pull/6457))
7ff8adafe9e4atagen2026-10-22 12:30 UTC242
- Only share historic room keys on invite if the current room history is shared.
7ff8adafe9e4atagen2026-10-22 12:30 UTC243
  ([#6275](https://github.com/matrix-org/matrix-rust-sdk/pull/6275))
7ff8adafe9e4atagen2026-10-22 12:30 UTC244
- The event cache's thread subscriptions background task won't enable if the
7ff8adafe9e4atagen2026-10-22 12:30 UTC245
  server doesn't advertise support for the experimental thread subscription
7ff8adafe9e4atagen2026-10-22 12:30 UTC246
  feature. In the past, this would result in sending spurious requests that
7ff8adafe9e4atagen2026-10-22 12:30 UTC247
  aren't supported by the user's homeserver.
7ff8adafe9e4atagen2026-10-22 12:30 UTC248
  ([#6245](https://github.com/matrix-org/matrix-rust-sdk/pull/6245))
7ff8adafe9e4atagen2026-10-22 12:30 UTC249
- Handle race between send queue update and remote echo in latest event
7ff8adafe9e4atagen2026-10-22 12:30 UTC250
  computation.
7ff8adafe9e4atagen2026-10-22 12:30 UTC251
  ([#6220](https://github.com/matrix-org/matrix-rust-sdk/pull/6220))
7ff8adafe9e4atagen2026-10-22 12:30 UTC252
- Return `QRCodeGrantLoginError::DeviceNotFound` instead of
7ff8adafe9e4atagen2026-10-22 12:30 UTC253
  `QRCodeGrantLoginError::DeviceIDAlreadyInUse` for when the new device is not
7ff8adafe9e4atagen2026-10-22 12:30 UTC254
  returned by the homeserver.
7ff8adafe9e4atagen2026-10-22 12:30 UTC255
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC256
- Latest Event is correctly computed when multiple edits exist for the same
7ff8adafe9e4atagen2026-10-22 12:30 UTC257
  event candidate.
7ff8adafe9e4atagen2026-10-22 12:30 UTC258
  ([#6096](https://github.com/matrix-org/matrix-rust-sdk/pull/6096))
7ff8adafe9e4atagen2026-10-22 12:30 UTC259
- Restrict which `m.room.member` can be a `LatestEventValue` candidate by
7ff8adafe9e4atagen2026-10-22 12:30 UTC260
  relying on `MembershipChange` for more control.
7ff8adafe9e4atagen2026-10-22 12:30 UTC261
  ([#6143](https://github.com/matrix-org/matrix-rust-sdk/pull/6143))
7ff8adafe9e4atagen2026-10-22 12:30 UTC262
- Add manual WAL checkpoints when opening Sqlite DBs and when vacuuming them,
7ff8adafe9e4atagen2026-10-22 12:30 UTC263
  since the WAL files aren't automatically shrinking.
7ff8adafe9e4atagen2026-10-22 12:30 UTC264
  ([#6004](https://github.com/matrix-org/matrix-rust-sdk/pull/6004))
7ff8adafe9e4atagen2026-10-22 12:30 UTC265
- Use the server name extracted from the user id in
7ff8adafe9e4atagen2026-10-22 12:30 UTC266
  `Client::fetch_client_well_known` as a fallback value. Otherwise, sometimes
7ff8adafe9e4atagen2026-10-22 12:30 UTC267
  the server name is not available and we can't reload the well-known contents.
7ff8adafe9e4atagen2026-10-22 12:30 UTC268
  ([#5996](https://github.com/matrix-org/matrix-rust-sdk/pull/5996))
7ff8adafe9e4atagen2026-10-22 12:30 UTC269
- Latest Event is lazier: a `RoomLatestEvents` can be registered even if its
7ff8adafe9e4atagen2026-10-22 12:30 UTC270
  associated `RoomEventCache` isn't created yet.
7ff8adafe9e4atagen2026-10-22 12:30 UTC271
  ([#5947](https://github.com/matrix-org/matrix-rust-sdk/pull/5947))
7ff8adafe9e4atagen2026-10-22 12:30 UTC272
- Allow granting of QR login to a new client whose device ID is not a base64
7ff8adafe9e4atagen2026-10-22 12:30 UTC273
  encoded Curve25519 public key.
7ff8adafe9e4atagen2026-10-22 12:30 UTC274
  ([#5940](https://github.com/matrix-org/matrix-rust-sdk/pull/5940))
7ff8adafe9e4atagen2026-10-22 12:30 UTC275
- Remove an unwrap in `SlidingSync::send_sync_request` when an asynchronous task
7ff8adafe9e4atagen2026-10-22 12:30 UTC276
  panics or is cancelled.
7ff8adafe9e4atagen2026-10-22 12:30 UTC277
  ([#6316](https://github.com/matrix-org/matrix-rust-sdk/pull/6316))
7ff8adafe9e4atagen2026-10-22 12:30 UTC278
7ff8adafe9e4atagen2026-10-22 12:30 UTC279
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC280
7ff8adafe9e4atagen2026-10-22 12:30 UTC281
- [**breaking**] Upgrade Ruma to 0.15.1.
7ff8adafe9e4atagen2026-10-22 12:30 UTC282
  ([#6503](https://github.com/matrix-org/matrix-rust-sdk/pull/6503))
7ff8adafe9e4atagen2026-10-22 12:30 UTC283
- Revert back to to determining lock dirtiness in
7ff8adafe9e4atagen2026-10-22 12:30 UTC284
  `Encryption::{spin_lock_store, try_lock_once_store}` through logic defined in
7ff8adafe9e4atagen2026-10-22 12:30 UTC285
  `OlmMachine`, rather than `CrossProcessLock`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC286
  ([#6496](https://github.com/matrix-org/matrix-rust-sdk/pull/6496))
7ff8adafe9e4atagen2026-10-22 12:30 UTC287
- [**breaking**] Update `Encryption::{spin_lock_store, try_lock_once_store}` so
7ff8adafe9e4atagen2026-10-22 12:30 UTC288
  that lock dirtiness is determined entirely by `CrossProcessLock`, rather than
7ff8adafe9e4atagen2026-10-22 12:30 UTC289
  logic defined by `OlmMachine`. Also enforce that lock generation is opaque by
7ff8adafe9e4atagen2026-10-22 12:30 UTC290
  removing `CrossProcessLockStoreGuardWithGeneration`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC291
  ([#6326](https://github.com/matrix-org/matrix-rust-sdk/pull/6326))
7ff8adafe9e4atagen2026-10-22 12:30 UTC292
- [**breaking**] The `EventCache` now owns pagination tasks, and will run them
7ff8adafe9e4atagen2026-10-22 12:30 UTC293
  to completion, even if a manual caller stopped polling the called future.
7ff8adafe9e4atagen2026-10-22 12:30 UTC294
  ([#6304](https://github.com/matrix-org/matrix-rust-sdk/pull/6304))
7ff8adafe9e4atagen2026-10-22 12:30 UTC295
- [**breaking**] `RoomEventCache::thread_pagination` is now async and fallible.
7ff8adafe9e4atagen2026-10-22 12:30 UTC296
  ([#6280](https://github.com/matrix-org/matrix-rust-sdk/pull/6280))
7ff8adafe9e4atagen2026-10-22 12:30 UTC297
- [**breaking**] The `UrlOrQuery` enum was moved from the
7ff8adafe9e4atagen2026-10-22 12:30 UTC298
  `authentication::oauth` module to the `utils` module. It can also be converted
7ff8adafe9e4atagen2026-10-22 12:30 UTC299
  from a `QueryString`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC300
  ([#6224](https://github.com/matrix-org/matrix-rust-sdk/pull/6224))
7ff8adafe9e4atagen2026-10-22 12:30 UTC301
- [**breaking**] `MatrixAuth::login_with_sso_callback()` takes a `UrlOrQuery`
7ff8adafe9e4atagen2026-10-22 12:30 UTC302
  instead of a `Url`, to make it more convenient to use with
7ff8adafe9e4atagen2026-10-22 12:30 UTC303
  `LocalServerBuilder` / `LocalServerRedirectHandle`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC304
  ([#6224](https://github.com/matrix-org/matrix-rust-sdk/pull/6224))
7ff8adafe9e4atagen2026-10-22 12:30 UTC305
- [**breaking**] `Room::report_content()` no longer takes a `score` argument,
7ff8adafe9e4atagen2026-10-22 12:30 UTC306
  because it was removed from the Matrix specification. The
7ff8adafe9e4atagen2026-10-22 12:30 UTC307
  `ReportedContentScore` type was removed too.
7ff8adafe9e4atagen2026-10-22 12:30 UTC308
  ([#6256](https://github.com/matrix-org/matrix-rust-sdk/pull/6256))
7ff8adafe9e4atagen2026-10-22 12:30 UTC309
- [**breaking**] `Client::enabled_thread_subscriptions()` is now async and
7ff8adafe9e4atagen2026-10-22 12:30 UTC310
  fallible, as it will check for both static enablement of the thread
7ff8adafe9e4atagen2026-10-22 12:30 UTC311
  subscription feature as well as dynamically checking that the user's
7ff8adafe9e4atagen2026-10-22 12:30 UTC312
  homeserver supports it.
7ff8adafe9e4atagen2026-10-22 12:30 UTC313
- [**breaking**] `SessionChange::UnknownToken` is now a tuple variant containing
7ff8adafe9e4atagen2026-10-22 12:30 UTC314
  an `UnknownTokenErrorData`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC315
  ([#6241](https://github.com/matrix-org/matrix-rust-sdk/pull/6241))
7ff8adafe9e4atagen2026-10-22 12:30 UTC316
- [**breaking**] `EventCacheError::BackPaginationError` has been renamed
7ff8adafe9e4atagen2026-10-22 12:30 UTC317
  `PaginationError`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC318
  ([#6239](https://github.com/matrix-org/matrix-rust-sdk/pull/6239))
7ff8adafe9e4atagen2026-10-22 12:30 UTC319
- [**breaking**] The functions on the `OAuth` API to access the account
7ff8adafe9e4atagen2026-10-22 12:30 UTC320
  management URL and its actions were removed. The methods available on the
7ff8adafe9e4atagen2026-10-22 12:30 UTC321
  `AuthorizationServerMetadata` should be used instead.
7ff8adafe9e4atagen2026-10-22 12:30 UTC322
  ([#6217](https://github.com/matrix-org/matrix-rust-sdk/pull/6217))
7ff8adafe9e4atagen2026-10-22 12:30 UTC323
- [**breaking**] `QRCodeGrantLoginError::UnableToCreateDevice` has been removed
7ff8adafe9e4atagen2026-10-22 12:30 UTC324
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC325
- The `RoomEventCache::paginate_thread_backwards` method is replaced by
7ff8adafe9e4atagen2026-10-22 12:30 UTC326
  `RoomEventCache::thread_pagination` which returns a new `ThreadPagination`
7ff8adafe9e4atagen2026-10-22 12:30 UTC327
  type, similar to `RoomPagination`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC328
  ([#6174](https://github.com/matrix-org/matrix-rust-sdk/pull/6174))
7ff8adafe9e4atagen2026-10-22 12:30 UTC329
7ff8adafe9e4atagen2026-10-22 12:30 UTC330
  Before:
7ff8adafe9e4atagen2026-10-22 12:30 UTC331
7ff8adafe9e4atagen2026-10-22 12:30 UTC332
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC333
  room_event_cache.paginate_thread_backwards(thread_id, 42).await
7ff8adafe9e4atagen2026-10-22 12:30 UTC334
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC335
7ff8adafe9e4atagen2026-10-22 12:30 UTC336
  After:
7ff8adafe9e4atagen2026-10-22 12:30 UTC337
7ff8adafe9e4atagen2026-10-22 12:30 UTC338
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC339
  room_event_cache.thread_pagination(thread_id).run_backwards_once(42).await
7ff8adafe9e4atagen2026-10-22 12:30 UTC340
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC341
7ff8adafe9e4atagen2026-10-22 12:30 UTC342
- `RoomPaginationStatus` is renamed to `PaginationStatus`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC343
  ([#6174](https://github.com/matrix-org/matrix-rust-sdk/pull/6174/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC344
- [**breaking**] Replaced `ClientBuilder::cross_process_store_locks_holder_name`
7ff8adafe9e4atagen2026-10-22 12:30 UTC345
  with `ClientBuilder::cross_process_store_config` to allow specifying the
7ff8adafe9e4atagen2026-10-22 12:30 UTC346
  configuration for the cross-process lock and whether it should act as a no-op
7ff8adafe9e4atagen2026-10-22 12:30 UTC347
  (client used in a single process) or we should keep the previous behavior
7ff8adafe9e4atagen2026-10-22 12:30 UTC348
  (client used in multiple processes).
7ff8adafe9e4atagen2026-10-22 12:30 UTC349
  ([#6160](https://github.com/matrix-org/matrix-rust-sdk/pull/6160))
7ff8adafe9e4atagen2026-10-22 12:30 UTC350
7ff8adafe9e4atagen2026-10-22 12:30 UTC351
## [0.16.1] - 2026-05-08
7ff8adafe9e4atagen2026-10-22 12:30 UTC352
7ff8adafe9e4atagen2026-10-22 12:30 UTC353
- Add a recursion limit attribute that raises it from the default value of 128
7ff8adafe9e4atagen2026-10-22 12:30 UTC354
  to 256. ([#6489](https://github.com/matrix-org/matrix-rust-sdk/pull/6489))
7ff8adafe9e4atagen2026-10-22 12:30 UTC355
- Reject invalid edits as candidates for the latest event.
7ff8adafe9e4atagen2026-10-22 12:30 UTC356
  ([#6454](https://github.com/matrix-org/matrix-rust-sdk/pull/6454))
7ff8adafe9e4atagen2026-10-22 12:30 UTC357
7ff8adafe9e4atagen2026-10-22 12:30 UTC358
## [0.16.0] - 2025-12-04
7ff8adafe9e4atagen2026-10-22 12:30 UTC359
7ff8adafe9e4atagen2026-10-22 12:30 UTC360
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC361
7ff8adafe9e4atagen2026-10-22 12:30 UTC362
- Add `Client::get_store_sizes()` so to query the size of the existing stores,
7ff8adafe9e4atagen2026-10-22 12:30 UTC363
  if available.
7ff8adafe9e4atagen2026-10-22 12:30 UTC364
  ([#5911](https://github.com/matrix-org/matrix-rust-sdk/pull/5911))
7ff8adafe9e4atagen2026-10-22 12:30 UTC365
- Add `QRCodeLoginError::NotFound` for non-existing / expired rendezvous
7ff8adafe9e4atagen2026-10-22 12:30 UTC366
  sessions ([#5898](https://github.com/matrix-org/matrix-rust-sdk/pull/5898))
7ff8adafe9e4atagen2026-10-22 12:30 UTC367
- Add `QRCodeGrantLoginError::NotFound` for non-existing / expired rendezvous
7ff8adafe9e4atagen2026-10-22 12:30 UTC368
  sessions ([#5898](https://github.com/matrix-org/matrix-rust-sdk/pull/5898))
7ff8adafe9e4atagen2026-10-22 12:30 UTC369
- Improve logging around key history bundles when joining a room.
7ff8adafe9e4atagen2026-10-22 12:30 UTC370
  ([#5866](https://github.com/matrix-org/matrix-rust-sdk/pull/5866))
7ff8adafe9e4atagen2026-10-22 12:30 UTC371
- Expose the power level required to modify `m.space.child` on
7ff8adafe9e4atagen2026-10-22 12:30 UTC372
  `room::power_levels::RoomPowerLevelChanges`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC373
  ([#5857](https://github.com/matrix-org/matrix-rust-sdk/pull/5857))
7ff8adafe9e4atagen2026-10-22 12:30 UTC374
- Add the `Client::server_versions_cached()` method.
7ff8adafe9e4atagen2026-10-22 12:30 UTC375
  ([#5853](https://github.com/matrix-org/matrix-rust-sdk/pull/5853))
7ff8adafe9e4atagen2026-10-22 12:30 UTC376
- Extend `authentication::oauth::OAuth::grant_login_with_qr_code` to support
7ff8adafe9e4atagen2026-10-22 12:30 UTC377
  granting login by scanning a QR code on the existing device.
7ff8adafe9e4atagen2026-10-22 12:30 UTC378
  ([#5818](https://github.com/matrix-org/matrix-rust-sdk/pull/5818))
7ff8adafe9e4atagen2026-10-22 12:30 UTC379
- Add a new `RequestConfig::skip_auth()` option. This is useful to ensure that
7ff8adafe9e4atagen2026-10-22 12:30 UTC380
  certain request won't ever include an authorization header.
7ff8adafe9e4atagen2026-10-22 12:30 UTC381
  ([#5822](https://github.com/matrix-org/matrix-rust-sdk/pull/5822))
7ff8adafe9e4atagen2026-10-22 12:30 UTC382
- Add support for extended profile fields with
7ff8adafe9e4atagen2026-10-22 12:30 UTC383
  `Account::fetch_profile_field_of()`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC384
  `Account::fetch_profile_field_of_static()`, `Account::set_profile_field()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC385
  `Account::delete_profile_field()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC386
  ([#5771](https://github.com/matrix-org/matrix-rust-sdk/pull/5771))
7ff8adafe9e4atagen2026-10-22 12:30 UTC387
- [**breaking**] Remove the `matrix-sdk-crypto` re-export.
7ff8adafe9e4atagen2026-10-22 12:30 UTC388
  ([#5769](https://github.com/matrix-org/matrix-rust-sdk/pull/5769))
7ff8adafe9e4atagen2026-10-22 12:30 UTC389
- Allow `Client::get_dm_room()` to be called without the `e2e-encryption` crate
7ff8adafe9e4atagen2026-10-22 12:30 UTC390
  feature. ([#5787](https://github.com/matrix-org/matrix-rust-sdk/pull/5787))
7ff8adafe9e4atagen2026-10-22 12:30 UTC391
- [**breaking**] Add
7ff8adafe9e4atagen2026-10-22 12:30 UTC392
  `encryption::secret_storage::SecretStorageError::ImportError` to indicate an
7ff8adafe9e4atagen2026-10-22 12:30 UTC393
  error that occurred when importing a secret from secret storage.
7ff8adafe9e4atagen2026-10-22 12:30 UTC394
  ([#5647](https://github.com/matrix-org/matrix-rust-sdk/pull/5647))
7ff8adafe9e4atagen2026-10-22 12:30 UTC395
- [**breaking**] Add
7ff8adafe9e4atagen2026-10-22 12:30 UTC396
  `authentication::oauth::qrcode::login::LoginProgress::SyncingSecrets` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC397
  indicate that secrets are being synced between the two devices.
7ff8adafe9e4atagen2026-10-22 12:30 UTC398
  ([#5760](https://github.com/matrix-org/matrix-rust-sdk/pull/5760))
7ff8adafe9e4atagen2026-10-22 12:30 UTC399
- Add `authentication::oauth::OAuth::grant_login_with_qr_code` to reciprocate a
7ff8adafe9e4atagen2026-10-22 12:30 UTC400
  login by generating a QR code on the existing device.
7ff8adafe9e4atagen2026-10-22 12:30 UTC401
  ([#5801](https://github.com/matrix-org/matrix-rust-sdk/pull/5801))
7ff8adafe9e4atagen2026-10-22 12:30 UTC402
- [**breaking**] `OAuth::login_with_qr_code` now returns a builder that allows
7ff8adafe9e4atagen2026-10-22 12:30 UTC403
  performing the flow with either the current device scanning or generating the
7ff8adafe9e4atagen2026-10-22 12:30 UTC404
  QR code. Additionally, new errors `SecureChannelError::CannotReceiveCheckCode`
7ff8adafe9e4atagen2026-10-22 12:30 UTC405
  and `QRCodeLoginError::ServerReset` were added.
7ff8adafe9e4atagen2026-10-22 12:30 UTC406
  ([#5711](https://github.com/matrix-org/matrix-rust-sdk/pull/5711))
7ff8adafe9e4atagen2026-10-22 12:30 UTC407
- [**breaking**] `ThreadedEventsLoader::new` now takes optional `tokens`
7ff8adafe9e4atagen2026-10-22 12:30 UTC408
  parameter to customise where the pagination begins
7ff8adafe9e4atagen2026-10-22 12:30 UTC409
  ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678).
7ff8adafe9e4atagen2026-10-22 12:30 UTC410
- Make `PaginationTokens` `pub`, as well as its `previous` and `next` tokens so
7ff8adafe9e4atagen2026-10-22 12:30 UTC411
  they can be assigned from other files
7ff8adafe9e4atagen2026-10-22 12:30 UTC412
  ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678).
7ff8adafe9e4atagen2026-10-22 12:30 UTC413
- Add new API to decline calls
7ff8adafe9e4atagen2026-10-22 12:30 UTC414
  ([MSC4310](https://github.com/matrix-org/matrix-spec-proposals/pull/4310)):
7ff8adafe9e4atagen2026-10-22 12:30 UTC415
  `Room::make_decline_call_event` and `Room::subscribe_to_call_decline_events`
7ff8adafe9e4atagen2026-10-22 12:30 UTC416
  ([#5614](https://github.com/matrix-org/matrix-rust-sdk/pull/5614))
7ff8adafe9e4atagen2026-10-22 12:30 UTC417
- Use `StateStore::upsert_thread_subscriptions()` to bulk process thread
7ff8adafe9e4atagen2026-10-22 12:30 UTC418
  subscription updates received via the sync response or from the MSC4308
7ff8adafe9e4atagen2026-10-22 12:30 UTC419
  companion endpoint.
7ff8adafe9e4atagen2026-10-22 12:30 UTC420
  ([#5848](https://github.com/matrix-org/matrix-rust-sdk/pull/5848))
7ff8adafe9e4atagen2026-10-22 12:30 UTC421
7ff8adafe9e4atagen2026-10-22 12:30 UTC422
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC423
7ff8adafe9e4atagen2026-10-22 12:30 UTC424
- [**breaking**]: `Client::server_vendor_info()` requires to enable the
7ff8adafe9e4atagen2026-10-22 12:30 UTC425
  `federation-api` feature.
7ff8adafe9e4atagen2026-10-22 12:30 UTC426
  ([#5912](https://github.com/matrix-org/matrix-rust-sdk/pull/5912))
7ff8adafe9e4atagen2026-10-22 12:30 UTC427
- [**breaking**]: `Client::reset_server_info()` has been split into
7ff8adafe9e4atagen2026-10-22 12:30 UTC428
  `reset_supported_versions()` and `reset_well_known()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC429
  ([#5910](https://github.com/matrix-org/matrix-rust-sdk/pull/5910))
7ff8adafe9e4atagen2026-10-22 12:30 UTC430
- [**breaking**]: `Client::send()` has extra bounds where
7ff8adafe9e4atagen2026-10-22 12:30 UTC431
  `Request::Authentication: AuthScheme<Input<'a> = SendAccessToken<'a>>` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC432
  `Request::PathBuilder: SupportedPathBuilder`. This method should still work
7ff8adafe9e4atagen2026-10-22 12:30 UTC433
  for any request to the Client-Server API. This allows to drop the
7ff8adafe9e4atagen2026-10-22 12:30 UTC434
  `HttpError::NotClientRequest` error in favor of a compile-time error.
7ff8adafe9e4atagen2026-10-22 12:30 UTC435
  ([#5781](https://github.com/matrix-org/matrix-rust-sdk/pull/5781),
7ff8adafe9e4atagen2026-10-22 12:30 UTC436
  [#5789](https://github.com/matrix-org/matrix-rust-sdk/pull/5789),
7ff8adafe9e4atagen2026-10-22 12:30 UTC437
  [#5815](https://github.com/matrix-org/matrix-rust-sdk/pull/5815))
7ff8adafe9e4atagen2026-10-22 12:30 UTC438
- [**breaking**]: The `waveform` field was moved from `AttachmentInfo::Voice` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC439
  `BaseAudioInfo`, allowing to set it for any audio message. Its format also
7ff8adafe9e4atagen2026-10-22 12:30 UTC440
  changed, and it is now a list of `f32` between 0 and 1.
7ff8adafe9e4atagen2026-10-22 12:30 UTC441
  ([#5732](https://github.com/matrix-org/matrix-rust-sdk/pull/5732))
7ff8adafe9e4atagen2026-10-22 12:30 UTC442
- [**breaking**] The `caption` and `formatted_caption` fields and methods of
7ff8adafe9e4atagen2026-10-22 12:30 UTC443
  `AttachmentConfig`, `GalleryConfig` and `GalleryItemInfo` have been merged
7ff8adafe9e4atagen2026-10-22 12:30 UTC444
  into a single field that uses `TextMessageEventContent`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC445
  ([#5733](https://github.com/matrix-org/matrix-rust-sdk/pull/5733))
7ff8adafe9e4atagen2026-10-22 12:30 UTC446
- The Matrix SDK crate now uses the 2024 edition of Rust.
7ff8adafe9e4atagen2026-10-22 12:30 UTC447
  ([#5677](https://github.com/matrix-org/matrix-rust-sdk/pull/5677))
7ff8adafe9e4atagen2026-10-22 12:30 UTC448
- [**breaking**] Make `LoginProgress::EstablishingSecureChannel` generic in
7ff8adafe9e4atagen2026-10-22 12:30 UTC449
  order to reuse it for the currently missing QR login flow.
7ff8adafe9e4atagen2026-10-22 12:30 UTC450
  ([#5750](https://github.com/matrix-org/matrix-rust-sdk/pull/5750))
7ff8adafe9e4atagen2026-10-22 12:30 UTC451
- [**breaking**] The `new_virtual_element_call_widget` now uses a `props` and a
7ff8adafe9e4atagen2026-10-22 12:30 UTC452
  `config` parameter instead of only `props`. This splits the configuration of
7ff8adafe9e4atagen2026-10-22 12:30 UTC453
  the widget into required properties ("widget_id", "parent_url"...) so the
7ff8adafe9e4atagen2026-10-22 12:30 UTC454
  widget can work and optional config parameters ("skip_lobby", "header",
7ff8adafe9e4atagen2026-10-22 12:30 UTC455
  "..."). The config option should in most cases only provide the `"intent"`
7ff8adafe9e4atagen2026-10-22 12:30 UTC456
  property. All other config options will then be chosen by EC based on platform
7ff8adafe9e4atagen2026-10-22 12:30 UTC457
  - `intent`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC458
7ff8adafe9e4atagen2026-10-22 12:30 UTC459
  Before:
7ff8adafe9e4atagen2026-10-22 12:30 UTC460
7ff8adafe9e4atagen2026-10-22 12:30 UTC461
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC462
  new_virtual_element_call_widget(
7ff8adafe9e4atagen2026-10-22 12:30 UTC463
    VirtualElementCallWidgetProperties {
7ff8adafe9e4atagen2026-10-22 12:30 UTC464
      widget_id: "my_widget_id", // required property
7ff8adafe9e4atagen2026-10-22 12:30 UTC465
      skip_lobby: Some(true), // optional configuration
7ff8adafe9e4atagen2026-10-22 12:30 UTC466
      preload: Some(true), // optional configuration
7ff8adafe9e4atagen2026-10-22 12:30 UTC467
      // ...
7ff8adafe9e4atagen2026-10-22 12:30 UTC468
    }
7ff8adafe9e4atagen2026-10-22 12:30 UTC469
  )
7ff8adafe9e4atagen2026-10-22 12:30 UTC470
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC471
7ff8adafe9e4atagen2026-10-22 12:30 UTC472
  Now:
7ff8adafe9e4atagen2026-10-22 12:30 UTC473
7ff8adafe9e4atagen2026-10-22 12:30 UTC474
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC475
  new_virtual_element_call_widget(
7ff8adafe9e4atagen2026-10-22 12:30 UTC476
    VirtualElementCallWidgetProperties {
7ff8adafe9e4atagen2026-10-22 12:30 UTC477
      widget_id: "my_widget_id", // required property
7ff8adafe9e4atagen2026-10-22 12:30 UTC478
      // ... only required properties
7ff8adafe9e4atagen2026-10-22 12:30 UTC479
    },
7ff8adafe9e4atagen2026-10-22 12:30 UTC480
    VirtualElementCallWidgetConfig {
7ff8adafe9e4atagen2026-10-22 12:30 UTC481
      intend: Intend.StartCallDM, // defines the default values for all other configuration
7ff8adafe9e4atagen2026-10-22 12:30 UTC482
      skip_lobby: Some(false), // overwrite a specific default value
7ff8adafe9e4atagen2026-10-22 12:30 UTC483
      ..VirtualElementCallWidgetConfig::default() // set all other config options to `None`. Use defaults from intent.
7ff8adafe9e4atagen2026-10-22 12:30 UTC484
    }
7ff8adafe9e4atagen2026-10-22 12:30 UTC485
  )
7ff8adafe9e4atagen2026-10-22 12:30 UTC486
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC487
7ff8adafe9e4atagen2026-10-22 12:30 UTC488
  ([#5560](https://github.com/matrix-org/matrix-rust-sdk/pull/5560))
7ff8adafe9e4atagen2026-10-22 12:30 UTC489
7ff8adafe9e4atagen2026-10-22 12:30 UTC490
### Bugfix
7ff8adafe9e4atagen2026-10-22 12:30 UTC491
7ff8adafe9e4atagen2026-10-22 12:30 UTC492
- A new local `LatestEventValue` was always created as `LocalIsSending`. It
7ff8adafe9e4atagen2026-10-22 12:30 UTC493
  must be created as `LocalCannotBeSent` if a previous local `LatestEventValue`
7ff8adafe9e4atagen2026-10-22 12:30 UTC494
  exists and is `LocalCannotBeSent`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC495
  ([#5908](https://github.com/matrix-org/matrix-rust-sdk/pull/5908))
7ff8adafe9e4atagen2026-10-22 12:30 UTC496
- Switch QR login implementation from `std::time::Instant` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC497
  `ruma::time::Instant` which is compatible with Wasm.
7ff8adafe9e4atagen2026-10-22 12:30 UTC498
  ([#5889](https://github.com/matrix-org/matrix-rust-sdk/pull/5889))
7ff8adafe9e4atagen2026-10-22 12:30 UTC499
7ff8adafe9e4atagen2026-10-22 12:30 UTC500
## [0.14.0] - 2025-09-04
7ff8adafe9e4atagen2026-10-22 12:30 UTC501
7ff8adafe9e4atagen2026-10-22 12:30 UTC502
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC503
7ff8adafe9e4atagen2026-10-22 12:30 UTC504
- `Client::fetch_thread_subscriptions` implements support for the companion
7ff8adafe9e4atagen2026-10-22 12:30 UTC505
  endpoint of the experimental MSC4308, allowing to fetch thread subscriptions
7ff8adafe9e4atagen2026-10-22 12:30 UTC506
  for a given range, as specified by the MSC.
7ff8adafe9e4atagen2026-10-22 12:30 UTC507
  ([#5590](https://github.com/matrix-org/matrix-rust-sdk/pull/5590))
7ff8adafe9e4atagen2026-10-22 12:30 UTC508
- Add a `Client::joined_space_rooms` method that allows retrieving the list of
7ff8adafe9e4atagen2026-10-22 12:30 UTC509
  joined spaces.
7ff8adafe9e4atagen2026-10-22 12:30 UTC510
  ([#5592](https://github.com/matrix-org/matrix-rust-sdk/pull/5592))
7ff8adafe9e4atagen2026-10-22 12:30 UTC511
- `Room::enable_encryption` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC512
  `Room::enable_encryption_with_state_event_encryption` will poll the encryption
7ff8adafe9e4atagen2026-10-22 12:30 UTC513
  state for up to 3 seconds, rather than checking once after a single sync has
7ff8adafe9e4atagen2026-10-22 12:30 UTC514
  completed. ([#5559](https://github.com/matrix-org/matrix-rust-sdk/pull/5559))
7ff8adafe9e4atagen2026-10-22 12:30 UTC515
- Add `Room::enable_encryption_with_state` to enable E2E encryption with
7ff8adafe9e4atagen2026-10-22 12:30 UTC516
  encrypted state event support, gated behind the
7ff8adafe9e4atagen2026-10-22 12:30 UTC517
  `experimental-encrypted-state-events` feature.
7ff8adafe9e4atagen2026-10-22 12:30 UTC518
  ([#5557](https://github.com/matrix-org/matrix-rust-sdk/pull/5557))
7ff8adafe9e4atagen2026-10-22 12:30 UTC519
- Add `ignore_timeout_on_first_sync` to the `SyncSettings`, which should allow
7ff8adafe9e4atagen2026-10-22 12:30 UTC520
  to have a quicker first response when using one of the `sync`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC521
  `sync_with_callback`, `sync_with_result_callback` or `sync_stream` methods on
7ff8adafe9e4atagen2026-10-22 12:30 UTC522
  `Client`, if the response is empty.
7ff8adafe9e4atagen2026-10-22 12:30 UTC523
  ([#5481](https://github.com/matrix-org/matrix-rust-sdk/pull/5481))
7ff8adafe9e4atagen2026-10-22 12:30 UTC524
- The methods to use the `/v3/sync` endpoint set the `use_state_after` field,
7ff8adafe9e4atagen2026-10-22 12:30 UTC525
  which means that, if the server supports it, the response will contain the
7ff8adafe9e4atagen2026-10-22 12:30 UTC526
  state changes between the last sync and the end of the timeline.
7ff8adafe9e4atagen2026-10-22 12:30 UTC527
  ([#5488](https://github.com/matrix-org/matrix-rust-sdk/pull/5488))
7ff8adafe9e4atagen2026-10-22 12:30 UTC528
- Add experimental support for
7ff8adafe9e4atagen2026-10-22 12:30 UTC529
  [MSC4306](https://github.com/matrix-org/matrix-spec-proposals/pull/4306), with
7ff8adafe9e4atagen2026-10-22 12:30 UTC530
  the `Room::fetch_thread_subscription()`, `Room::subscribe_thread()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC531
  `Room::unsubscribe_thread()` methods.
7ff8adafe9e4atagen2026-10-22 12:30 UTC532
  ([#5439](https://github.com/matrix-org/matrix-rust-sdk/pull/5439))
7ff8adafe9e4atagen2026-10-22 12:30 UTC533
- [**breaking**] `RoomMemberRole` has a new `Creator` variant, that
7ff8adafe9e4atagen2026-10-22 12:30 UTC534
  differentiates room creators with infinite power levels, as introduced in room
7ff8adafe9e4atagen2026-10-22 12:30 UTC535
  version 12.
7ff8adafe9e4atagen2026-10-22 12:30 UTC536
  ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436))
7ff8adafe9e4atagen2026-10-22 12:30 UTC537
- Add `Account::fetch_account_data_static` to fetch account data from the server
7ff8adafe9e4atagen2026-10-22 12:30 UTC538
  with a statically-known type, with a signature similar to
7ff8adafe9e4atagen2026-10-22 12:30 UTC539
  `Account::account_data`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC540
  ([#5424](https://github.com/matrix-org/matrix-rust-sdk/pull/5424))
7ff8adafe9e4atagen2026-10-22 12:30 UTC541
- Add support to accept historic room key bundles that arrive out of order, i.e.
7ff8adafe9e4atagen2026-10-22 12:30 UTC542
  the bundle arrives after the invite has already been accepted.
7ff8adafe9e4atagen2026-10-22 12:30 UTC543
  ([#5322](https://github.com/matrix-org/matrix-rust-sdk/pull/5322))
7ff8adafe9e4atagen2026-10-22 12:30 UTC544
- [**breaking**] `OAuth::login` now allows requesting additional scopes for the
7ff8adafe9e4atagen2026-10-22 12:30 UTC545
  authorization code grant.
7ff8adafe9e4atagen2026-10-22 12:30 UTC546
  ([#5395](https://github.com/matrix-org/matrix-rust-sdk/pull/5395))
7ff8adafe9e4atagen2026-10-22 12:30 UTC547
7ff8adafe9e4atagen2026-10-22 12:30 UTC548
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC549
7ff8adafe9e4atagen2026-10-22 12:30 UTC550
- [**breaking**] Upgrade ruma to 0.13.0
7ff8adafe9e4atagen2026-10-22 12:30 UTC551
  ([#5623](https://github.com/matrix-org/matrix-rust-sdk/pull/5623))
7ff8adafe9e4atagen2026-10-22 12:30 UTC552
- [**breaking**] `SyncSettings` token is now `SyncToken` enum type which has
7ff8adafe9e4atagen2026-10-22 12:30 UTC553
  default behaviour of `SyncToken::ReusePrevious` token. This breaks
7ff8adafe9e4atagen2026-10-22 12:30 UTC554
  `Client::sync_once`. For old behaviour, set the token to `SyncToken::NoToken`
7ff8adafe9e4atagen2026-10-22 12:30 UTC555
  with the usual `SyncSettings::token` setter.
7ff8adafe9e4atagen2026-10-22 12:30 UTC556
  ([#5522](https://github.com/matrix-org/matrix-rust-sdk/pull/5522))
7ff8adafe9e4atagen2026-10-22 12:30 UTC557
- [**breaking**] Change the upload_encrypted_file and make it clone the client
7ff8adafe9e4atagen2026-10-22 12:30 UTC558
  instead of owning it. The lifetime of the `UploadEncryptedFile` request
7ff8adafe9e4atagen2026-10-22 12:30 UTC559
  returned by `Client::upload_encrypted_file()` only depends on the request
7ff8adafe9e4atagen2026-10-22 12:30 UTC560
  lifetime now.
7ff8adafe9e4atagen2026-10-22 12:30 UTC561
  ([#5470](https://github.com/matrix-org/matrix-rust-sdk/pull/5470))
7ff8adafe9e4atagen2026-10-22 12:30 UTC562
- [**breaking**] Add an `IsPrefix = False` bound to the `account_data()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC563
  `fetch_account_data_static()` methods of `Account`. These methods only worked
7ff8adafe9e4atagen2026-10-22 12:30 UTC564
  for events where the full event type is statically-known, and this is now
7ff8adafe9e4atagen2026-10-22 12:30 UTC565
  enforced at compile-time. `account_data_raw()` and `fetch_account_data()`
7ff8adafe9e4atagen2026-10-22 12:30 UTC566
  respectively can be used instead for event types with a variable suffix.
7ff8adafe9e4atagen2026-10-22 12:30 UTC567
  ([#5444](https://github.com/matrix-org/matrix-rust-sdk/pull/5444))
7ff8adafe9e4atagen2026-10-22 12:30 UTC568
- [**breaking**] `RoomMemberRole::suggested_role_for_power_level()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC569
  `RoomMemberRole::suggested_power_level()` now use `UserPowerLevel` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC570
  represent power levels instead of `i64` to differentiate the infinite power
7ff8adafe9e4atagen2026-10-22 12:30 UTC571
  level of creators, as introduced in room version 12.
7ff8adafe9e4atagen2026-10-22 12:30 UTC572
  ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436))
7ff8adafe9e4atagen2026-10-22 12:30 UTC573
- [**breaking**] The `reason` argument of `Room::report_room()` is now required,
7ff8adafe9e4atagen2026-10-22 12:30 UTC574
  due to a clarification in the spec.
7ff8adafe9e4atagen2026-10-22 12:30 UTC575
  ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337))
7ff8adafe9e4atagen2026-10-22 12:30 UTC576
- [**breaking**] The `join_rule` field of `RoomPreview` is now a
7ff8adafe9e4atagen2026-10-22 12:30 UTC577
  `JoinRuleSummary`. It has the same variants as `SpaceRoomJoinRule` but
7ff8adafe9e4atagen2026-10-22 12:30 UTC578
  contains as summary of the allow rules for the restricted variants.
7ff8adafe9e4atagen2026-10-22 12:30 UTC579
  ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337))
7ff8adafe9e4atagen2026-10-22 12:30 UTC580
- [**breaking**] The MSRV has been bumped to Rust 1.88.
7ff8adafe9e4atagen2026-10-22 12:30 UTC581
  ([#5431](https://github.com/matrix-org/matrix-rust-sdk/pull/5431))
7ff8adafe9e4atagen2026-10-22 12:30 UTC582
- [**breaking**] `Room::send_call_notification` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC583
  `Room::send_call_notification_if_needed` have been removed, since the event
7ff8adafe9e4atagen2026-10-22 12:30 UTC584
  type they send is outdated, and `Client` is not actually supposed to be able
7ff8adafe9e4atagen2026-10-22 12:30 UTC585
  to join MatrixRTC sessions (yet). In practice, users of these methods probably
7ff8adafe9e4atagen2026-10-22 12:30 UTC586
  already rely on another MatrixRTC implementation to participate in sessions,
7ff8adafe9e4atagen2026-10-22 12:30 UTC587
  and such an implementation should be capable of sending notifications itself.
7ff8adafe9e4atagen2026-10-22 12:30 UTC588
  ([#5452](https://github.com/matrix-org/matrix-rust-sdk/pull/5452))
7ff8adafe9e4atagen2026-10-22 12:30 UTC589
7ff8adafe9e4atagen2026-10-22 12:30 UTC590
### Bugfix
7ff8adafe9e4atagen2026-10-22 12:30 UTC591
7ff8adafe9e4atagen2026-10-22 12:30 UTC592
- The event handlers APIs now properly support events whose type is not fully
7ff8adafe9e4atagen2026-10-22 12:30 UTC593
  statically-known. Before, those events would never trigger an event handler.
7ff8adafe9e4atagen2026-10-22 12:30 UTC594
  ([#5444](https://github.com/matrix-org/matrix-rust-sdk/pull/5444))
7ff8adafe9e4atagen2026-10-22 12:30 UTC595
- All HTTP requests now have a default `read_timeout` of 60s, which means
7ff8adafe9e4atagen2026-10-22 12:30 UTC596
  they'll disconnect if the connection stalls.
7ff8adafe9e4atagen2026-10-22 12:30 UTC597
`RequestConfig::timeout` is now optional and can be disabled on a per-request
7ff8adafe9e4atagen2026-10-22 12:30 UTC598
basis. This will be done for the requests used to download media, so they don't
7ff8adafe9e4atagen2026-10-22 12:30 UTC599
get cancelled after the default 30s timeout for no good reason.
7ff8adafe9e4atagen2026-10-22 12:30 UTC600
([#5437](https://github.com/matrix-org/matrix-rust-sdk/pull/5437))
7ff8adafe9e4atagen2026-10-22 12:30 UTC601
7ff8adafe9e4atagen2026-10-22 12:30 UTC602
## [0.13.0] - 2025-07-10
7ff8adafe9e4atagen2026-10-22 12:30 UTC603
7ff8adafe9e4atagen2026-10-22 12:30 UTC604
### Security fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC605
7ff8adafe9e4atagen2026-10-22 12:30 UTC606
- Fix SQL injection vulnerability in `EventCache`
7ff8adafe9e4atagen2026-10-22 12:30 UTC607
  ([d0c0100](https://github.com/matrix-org/matrix-rust-sdk/commit/d0c01006e4808db5eb96ad5c496416f284d8bd3c),
7ff8adafe9e4atagen2026-10-22 12:30 UTC608
  Moderate, [CVE-2025-53549](https://www.cve.org/CVERecord?id=CVE-2025-53549),
7ff8adafe9e4atagen2026-10-22 12:30 UTC609
  [GHSA-275g-g844-73jh](https://github.com/matrix-org/matrix-rust-sdk/security/advisories/GHSA-275g-g844-73jh))
7ff8adafe9e4atagen2026-10-22 12:30 UTC610
7ff8adafe9e4atagen2026-10-22 12:30 UTC611
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC612
7ff8adafe9e4atagen2026-10-22 12:30 UTC613
- `Room.leave()` will now attempt to leave all reachable predecessors too.
7ff8adafe9e4atagen2026-10-22 12:30 UTC614
  ([#5381](https://github.com/matrix-org/matrix-rust-sdk/pull/5381))
7ff8adafe9e4atagen2026-10-22 12:30 UTC615
- When joining a room via `Client::join_room_by_id()`, if the client has
7ff8adafe9e4atagen2026-10-22 12:30 UTC616
  `enable_share_history_on_invite` enabled, we will correctly check for received
7ff8adafe9e4atagen2026-10-22 12:30 UTC617
  room key bundles. Previously this was only done when calling `Room::join`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC618
  ([#5043](https://github.com/matrix-org/matrix-rust-sdk/pull/5043))
7ff8adafe9e4atagen2026-10-22 12:30 UTC619
- `m.room.avatar` has been added as required state for sliding sync until
7ff8adafe9e4atagen2026-10-22 12:30 UTC620
  [the existing backend issue](https://github.com/element-hq/synapse/issues/18598)
7ff8adafe9e4atagen2026-10-22 12:30 UTC621
causing deleted room avatars to not be flagged is fixed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC622
([#5293](https://github.com/matrix-org/matrix-rust-sdk/pull/5293))
7ff8adafe9e4atagen2026-10-22 12:30 UTC623
7ff8adafe9e4atagen2026-10-22 12:30 UTC624
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC625
7ff8adafe9e4atagen2026-10-22 12:30 UTC626
- Add `Client::supported_versions()`, which returns the results of both
7ff8adafe9e4atagen2026-10-22 12:30 UTC627
  `Client::server_versions()` and `Client::unstable_features()` with a single
7ff8adafe9e4atagen2026-10-22 12:30 UTC628
  call. ([#5357](https://github.com/matrix-org/matrix-rust-sdk/pull/5357))
7ff8adafe9e4atagen2026-10-22 12:30 UTC629
- `WidgetDriver::send_to_device` Now supports sending encrypted to-device
7ff8adafe9e4atagen2026-10-22 12:30 UTC630
  messages. ([#5252](https://github.com/matrix-org/matrix-rust-sdk/pull/5252))
7ff8adafe9e4atagen2026-10-22 12:30 UTC631
- `Client::add_event_handler`: Set `Option<EncryptionInfo>` in
7ff8adafe9e4atagen2026-10-22 12:30 UTC632
  `EventHandlerData` for to-device messages. If the to-device message was
7ff8adafe9e4atagen2026-10-22 12:30 UTC633
  encrypted, the `EncryptionInfo` will be set. If it is `None` the message was
7ff8adafe9e4atagen2026-10-22 12:30 UTC634
  sent in clear.
7ff8adafe9e4atagen2026-10-22 12:30 UTC635
  ([#5099](https://github.com/matrix-org/matrix-rust-sdk/pull/5099))
7ff8adafe9e4atagen2026-10-22 12:30 UTC636
- `EventCache::subscribe_to_room_generic_updates` is added to subscribe to _all_
7ff8adafe9e4atagen2026-10-22 12:30 UTC637
  room updates without having to subscribe to all rooms individually
7ff8adafe9e4atagen2026-10-22 12:30 UTC638
  ([#5247](https://github.com/matrix-org/matrix-rust-sdk/pull/5247))
7ff8adafe9e4atagen2026-10-22 12:30 UTC639
- [**breaking**] The element call widget URL configuration struct uses the new
7ff8adafe9e4atagen2026-10-22 12:30 UTC640
  `header` url parameter instead of the now deprecated `hideHeader` parameter.
7ff8adafe9e4atagen2026-10-22 12:30 UTC641
  This is only compatible with EC v0.13.0 or newer.
7ff8adafe9e4atagen2026-10-22 12:30 UTC642
- [**breaking**] `RoomEventCacheGenericUpdate` gains a new `Clear` variant, and
7ff8adafe9e4atagen2026-10-22 12:30 UTC643
  sees its `TimelineUpdated` variant being renamed to `UpdateTimeline`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC644
  ([#5363](https://github.com/matrix-org/matrix-rust-sdk/pull/5363/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC645
- [**breaking**]: The element call widget URL configuration struct uses the new
7ff8adafe9e4atagen2026-10-22 12:30 UTC646
  `header` url parameter instead of the now deprecated `hideHeader` parameter.
7ff8adafe9e4atagen2026-10-22 12:30 UTC647
  This is only compatible with EC v0.13.0 or newer.
7ff8adafe9e4atagen2026-10-22 12:30 UTC648
- [**breaking**]: The experimental `Encryption::encrypt_and_send_raw_to_device`
7ff8adafe9e4atagen2026-10-22 12:30 UTC649
  function now takes a `share_strategy` parameter, and will not send to devices
7ff8adafe9e4atagen2026-10-22 12:30 UTC650
  that do not satisfy the given share strategy.
7ff8adafe9e4atagen2026-10-22 12:30 UTC651
  ([#5457](https://github.com/matrix-org/matrix-rust-sdk/pull/5457/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC652
7ff8adafe9e4atagen2026-10-22 12:30 UTC653
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC654
7ff8adafe9e4atagen2026-10-22 12:30 UTC655
- [**breaking**]: `Client::unstable_features()` returns a
7ff8adafe9e4atagen2026-10-22 12:30 UTC656
  `BTreeSet<FeatureFlag>`, containing only the features whose value was set to
7ff8adafe9e4atagen2026-10-22 12:30 UTC657
  true in the response to the `/versions` endpoint.
7ff8adafe9e4atagen2026-10-22 12:30 UTC658
  ([#5357](https://github.com/matrix-org/matrix-rust-sdk/pull/5357))
7ff8adafe9e4atagen2026-10-22 12:30 UTC659
- [**breaking**]: The family of `Room::can_user_*` methods has been removed. The
7ff8adafe9e4atagen2026-10-22 12:30 UTC660
  same functionality can be accessed using the `RoomPowerLevels::user_can_*`
7ff8adafe9e4atagen2026-10-22 12:30 UTC661
  family of methods. The `RoomPowerLevels` object can be accessed using the
7ff8adafe9e4atagen2026-10-22 12:30 UTC662
  `Room::power_levels()` method.
7ff8adafe9e4atagen2026-10-22 12:30 UTC663
  ([#5250](https://github.com/matrix-org/matrix-rust-sdk/pull/5250/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC664
- `ClientServerCapabilities` has been renamed to `ClientServerInfo`. Alongside
7ff8adafe9e4atagen2026-10-22 12:30 UTC665
  this, `Client::reset_server_info` is now `Client::reset_server_info` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC666
  `Client::fetch_server_capabilities` is now `Client::fetch_server_versions`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC667
  returning the server versions response directly.
7ff8adafe9e4atagen2026-10-22 12:30 UTC668
  ([#5167](https://github.com/matrix-org/matrix-rust-sdk/pull/5167))
7ff8adafe9e4atagen2026-10-22 12:30 UTC669
- `RoomEventCacheListener` is renamed `RoomEventCacheSubscriber`
7ff8adafe9e4atagen2026-10-22 12:30 UTC670
  ([#5269](https://github.com/matrix-org/matrix-rust-sdk/pull/5269))
7ff8adafe9e4atagen2026-10-22 12:30 UTC671
- `RoomPreview::join_rule` is now optional, and will be set to `None` if the
7ff8adafe9e4atagen2026-10-22 12:30 UTC672
  join rule state event is missing for a given room.
7ff8adafe9e4atagen2026-10-22 12:30 UTC673
  ([#5278](https://github.com/matrix-org/matrix-rust-sdk/pull/5278))
7ff8adafe9e4atagen2026-10-22 12:30 UTC674
7ff8adafe9e4atagen2026-10-22 12:30 UTC675
## [0.12.0] - 2025-06-10
7ff8adafe9e4atagen2026-10-22 12:30 UTC676
7ff8adafe9e4atagen2026-10-22 12:30 UTC677
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC678
7ff8adafe9e4atagen2026-10-22 12:30 UTC679
- `Client::send_call_notification_if_needed` now returns `Result<bool>` instead
7ff8adafe9e4atagen2026-10-22 12:30 UTC680
  of `Result<()>` so we can check if the event was sent.
7ff8adafe9e4atagen2026-10-22 12:30 UTC681
  ([#5171](https://github.com/matrix-org/matrix-rust-sdk/pull/5171))
7ff8adafe9e4atagen2026-10-22 12:30 UTC682
- Added `SendMediaUploadRequest` wrapper for `SendRequest`, which checks the
7ff8adafe9e4atagen2026-10-22 12:30 UTC683
  size of the request to upload making sure it doesn't exceed the
7ff8adafe9e4atagen2026-10-22 12:30 UTC684
  `m.upload.size` value that can be fetched through
7ff8adafe9e4atagen2026-10-22 12:30 UTC685
  `Client::load_or_fetch_max_upload_size`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC686
  ([#5119](https://github.com/matrix-org/matrix-rust-sdk/pull/5119))
7ff8adafe9e4atagen2026-10-22 12:30 UTC687
- Add `ClientBuilder::with_enable_share_history_on_invite` to enable
7ff8adafe9e4atagen2026-10-22 12:30 UTC688
  experimental support for sharing encrypted room history on invite, per
7ff8adafe9e4atagen2026-10-22 12:30 UTC689
  [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268).
7ff8adafe9e4atagen2026-10-22 12:30 UTC690
  ([#5141](https://github.com/matrix-org/matrix-rust-sdk/pull/5141))
7ff8adafe9e4atagen2026-10-22 12:30 UTC691
- `Room::list_threads()` is a new method to list all the threads in a room.
7ff8adafe9e4atagen2026-10-22 12:30 UTC692
  ([#4973](https://github.com/matrix-org/matrix-rust-sdk/pull/4973))
7ff8adafe9e4atagen2026-10-22 12:30 UTC693
- `Room::relations()` is a new method to list all the events related to another
7ff8adafe9e4atagen2026-10-22 12:30 UTC694
  event ("relations"), with additional filters for relation type or relation
7ff8adafe9e4atagen2026-10-22 12:30 UTC695
  type + event type.
7ff8adafe9e4atagen2026-10-22 12:30 UTC696
  ([#4973](https://github.com/matrix-org/matrix-rust-sdk/pull/4973))
7ff8adafe9e4atagen2026-10-22 12:30 UTC697
- The `EventCache`'s persistent storage has been enabled by default. This means
7ff8adafe9e4atagen2026-10-22 12:30 UTC698
  that all the events received by sync or back-paginations will be stored, in
7ff8adafe9e4atagen2026-10-22 12:30 UTC699
  memory or on disk, by default, as soon as `EventCache::subscribe()` has been
7ff8adafe9e4atagen2026-10-22 12:30 UTC700
  called (which happens automatically if you're using the
7ff8adafe9e4atagen2026-10-22 12:30 UTC701
  `matrix_sdk_ui::Timeline`). This offers offline access and super quick
7ff8adafe9e4atagen2026-10-22 12:30 UTC702
  back-paginations (when the cache has been filled) whenever the event cache is
7ff8adafe9e4atagen2026-10-22 12:30 UTC703
  enabled. It's also not possible to disable the persistent storage anymore.
7ff8adafe9e4atagen2026-10-22 12:30 UTC704
  Note that by default, the event cache store uses an in-memory store, so the
7ff8adafe9e4atagen2026-10-22 12:30 UTC705
  events will be lost when the process exits. To store the events on disk, you
7ff8adafe9e4atagen2026-10-22 12:30 UTC706
  need to use the sqlite event cache store.
7ff8adafe9e4atagen2026-10-22 12:30 UTC707
  ([#4308](https://github.com/matrix-org/matrix-rust-sdk/pull/4308))
7ff8adafe9e4atagen2026-10-22 12:30 UTC708
- `Room::set_unread_flag()` now sets the stable `m.marked_unread` room account
7ff8adafe9e4atagen2026-10-22 12:30 UTC709
  data, which was stabilized in Matrix 1.12. `Room::is_marked_unread()` also
7ff8adafe9e4atagen2026-10-22 12:30 UTC710
  ignores the unstable `com.famedly.marked_unread` room account data if the
7ff8adafe9e4atagen2026-10-22 12:30 UTC711
  stable variant is present.
7ff8adafe9e4atagen2026-10-22 12:30 UTC712
  ([#5034](https://github.com/matrix-org/matrix-rust-sdk/pull/5034))
7ff8adafe9e4atagen2026-10-22 12:30 UTC713
- `Encryption::encrypt_and_send_raw_to_device`: Introduced as an experimental
7ff8adafe9e4atagen2026-10-22 12:30 UTC714
  method for sending custom encrypted to-device events. This feature is gated
7ff8adafe9e4atagen2026-10-22 12:30 UTC715
  behind the `experimental-send-custom-to-device` flag, as it remains under
7ff8adafe9e4atagen2026-10-22 12:30 UTC716
  active development and may undergo changes.
7ff8adafe9e4atagen2026-10-22 12:30 UTC717
  ([4998](https://github.com/matrix-org/matrix-rust-sdk/pull/4998))
7ff8adafe9e4atagen2026-10-22 12:30 UTC718
- `Room::send_single_receipt()` and `Room::send_multiple_receipts()` now also
7ff8adafe9e4atagen2026-10-22 12:30 UTC719
  unset the unread flag of the room if an unthreaded read receipt is sent.
7ff8adafe9e4atagen2026-10-22 12:30 UTC720
  ([#5055](https://github.com/matrix-org/matrix-rust-sdk/pull/5055))
7ff8adafe9e4atagen2026-10-22 12:30 UTC721
- `Client::is_user_ignored(&UserId)` can be used to check if a user is currently
7ff8adafe9e4atagen2026-10-22 12:30 UTC722
  ignored. ([#5081](https://github.com/matrix-org/matrix-rust-sdk/pull/5081))
7ff8adafe9e4atagen2026-10-22 12:30 UTC723
- `RoomSendQueue::send_gallery` has been added to allow sending MSC4274-style
7ff8adafe9e4atagen2026-10-22 12:30 UTC724
  media galleries via the send queue under the `unstable-msc4274` feature.
7ff8adafe9e4atagen2026-10-22 12:30 UTC725
  ([#4977](https://github.com/matrix-org/matrix-rust-sdk/pull/4977))
7ff8adafe9e4atagen2026-10-22 12:30 UTC726
7ff8adafe9e4atagen2026-10-22 12:30 UTC727
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC728
7ff8adafe9e4atagen2026-10-22 12:30 UTC729
- A invited DM room joined with `Client::join_room_by_id()` or
7ff8adafe9e4atagen2026-10-22 12:30 UTC730
  `Client::join_room_by_id_or_alias()` will now be correctly marked as a DM.
7ff8adafe9e4atagen2026-10-22 12:30 UTC731
  ([#5043](https://github.com/matrix-org/matrix-rust-sdk/pull/5043))
7ff8adafe9e4atagen2026-10-22 12:30 UTC732
- API responses with an HTTP status code `520` won't be retried anymore, as this
7ff8adafe9e4atagen2026-10-22 12:30 UTC733
  is used by some proxies (including Cloudflare) to warn that an unknown error
7ff8adafe9e4atagen2026-10-22 12:30 UTC734
  has happened in the actual server.
7ff8adafe9e4atagen2026-10-22 12:30 UTC735
  ([#5105](https://github.com/matrix-org/matrix-rust-sdk/pull/5105))
7ff8adafe9e4atagen2026-10-22 12:30 UTC736
7ff8adafe9e4atagen2026-10-22 12:30 UTC737
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC738
7ff8adafe9e4atagen2026-10-22 12:30 UTC739
- Support for the deprecated `GET /auth_issuer` endpoint was removed in the
7ff8adafe9e4atagen2026-10-22 12:30 UTC740
  `OAuth` API. Only the `GET /auth_metadata` endpoint is used now.
7ff8adafe9e4atagen2026-10-22 12:30 UTC741
  ([#5302](https://github.com/matrix-org/matrix-rust-sdk/pull/5302))
7ff8adafe9e4atagen2026-10-22 12:30 UTC742
- `Room::push_context()` has been renamed into
7ff8adafe9e4atagen2026-10-22 12:30 UTC743
  `Room::push_condition_room_ctx()`. The newer `Room::push_context` now returns
7ff8adafe9e4atagen2026-10-22 12:30 UTC744
  a `matrix_sdk::Room::PushContext`, which can be used to compute the push
7ff8adafe9e4atagen2026-10-22 12:30 UTC745
  actions for any event.
7ff8adafe9e4atagen2026-10-22 12:30 UTC746
  ([#4962](https://github.com/matrix-org/matrix-rust-sdk/pull/4962))
7ff8adafe9e4atagen2026-10-22 12:30 UTC747
- `Room::decrypt_event()` now requires an extra `matrix_sdk::Room::PushContext`
7ff8adafe9e4atagen2026-10-22 12:30 UTC748
  parameter to compute the push notifications for the decrypted event.
7ff8adafe9e4atagen2026-10-22 12:30 UTC749
  ([#4962](https://github.com/matrix-org/matrix-rust-sdk/pull/4962))
7ff8adafe9e4atagen2026-10-22 12:30 UTC750
- `SlidingSyncRoom` has been removed. With it, the `SlidingSync::get_room`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC751
  `get_all_rooms`, `get_rooms`, `get_number_of_rooms`, and
7ff8adafe9e4atagen2026-10-22 12:30 UTC752
  `FrozenSlidingSync` methods and type have been removed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC753
  ([#5047](https://github.com/matrix-org/matrix-rust-sdk/pull/5047))
7ff8adafe9e4atagen2026-10-22 12:30 UTC754
- `Room::set_unread_flag()` is now a no-op if the unread flag already has the
7ff8adafe9e4atagen2026-10-22 12:30 UTC755
  wanted value.
7ff8adafe9e4atagen2026-10-22 12:30 UTC756
  ([#5055](https://github.com/matrix-org/matrix-rust-sdk/pull/5055))
7ff8adafe9e4atagen2026-10-22 12:30 UTC757
7ff8adafe9e4atagen2026-10-22 12:30 UTC758
## [0.11.0] - 2025-04-11
7ff8adafe9e4atagen2026-10-22 12:30 UTC759
7ff8adafe9e4atagen2026-10-22 12:30 UTC760
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC761
7ff8adafe9e4atagen2026-10-22 12:30 UTC762
- `Room::load_or_fetch_event()` is a new method that will find an event in the
7ff8adafe9e4atagen2026-10-22 12:30 UTC763
  event cache (if enabled), or using network like `Room::event()` does.
7ff8adafe9e4atagen2026-10-22 12:30 UTC764
  ([#4837](https://github.com/matrix-org/matrix-rust-sdk/pull/4837))
7ff8adafe9e4atagen2026-10-22 12:30 UTC765
- [**breaking**]: The element call widget URL configuration struct
7ff8adafe9e4atagen2026-10-22 12:30 UTC766
  (`VirtualElementCallWidgetOptions`) and URL generation have changed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC767
  - It supports the new fields: `hide_screensharing`, `posthog_api_host`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC768
    `posthog_api_key`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC769
  `rageshake_submit_url`, `sentry_dsn`, `sentry_environment`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC770
  - The widget URL will no longer automatically add `/room` to the base domain.
7ff8adafe9e4atagen2026-10-22 12:30 UTC771
    For backward compatibility
7ff8adafe9e4atagen2026-10-22 12:30 UTC772
  the app itself would need to add `/room` to the `element_call_url`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC773
  - And replaced:
7ff8adafe9e4atagen2026-10-22 12:30 UTC774
    - `analytics_id` -> `posthog_user_id` (The widget URL query parameters will
7ff8adafe9e4atagen2026-10-22 12:30 UTC775
      include `analytics_id` & `posthog_user_id` for backward compatibility)
7ff8adafe9e4atagen2026-10-22 12:30 UTC776
    - `skip_lobby` -> `intent` (`Intent.StartCall`, `Intent.JoinExisting`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC777
      The widget URL query parameters will include `skip_lobby` if `intent` is
7ff8adafe9e4atagen2026-10-22 12:30 UTC778
      `Intent.StartCall` for backward compatibility)
7ff8adafe9e4atagen2026-10-22 12:30 UTC779
  - `VirtualElementCallWidgetOptions` now implements `Default`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC780
  ([#4822](https://github.com/matrix-org/matrix-rust-sdk/pull/4822))
7ff8adafe9e4atagen2026-10-22 12:30 UTC781
- [**breaking**]: The `RoomPagination::run_backwards` method has been removed
7ff8adafe9e4atagen2026-10-22 12:30 UTC782
  and replaced by two
7ff8adafe9e4atagen2026-10-22 12:30 UTC783
simpler methods:
7ff8adafe9e4atagen2026-10-22 12:30 UTC784
  - `RoomPagination::run_backwards_until()`, which will retrigger
7ff8adafe9e4atagen2026-10-22 12:30 UTC785
    back-paginations until a certain number of events have been received (and
7ff8adafe9e4atagen2026-10-22 12:30 UTC786
    retry if the timeline has been reset in the background).
7ff8adafe9e4atagen2026-10-22 12:30 UTC787
  - `RoomPagination::run_backwards_once()`, which will run a single
7ff8adafe9e4atagen2026-10-22 12:30 UTC788
    back-pagination (and retry if
7ff8adafe9e4atagen2026-10-22 12:30 UTC789
  the timeline has been reset in the background).
7ff8adafe9e4atagen2026-10-22 12:30 UTC790
  ([#4689](https://github.com/matrix-org/matrix-rust-sdk/pull/4689))
7ff8adafe9e4atagen2026-10-22 12:30 UTC791
- [**breaking**]: The `OAuth::account_management_url` method now caches the
7ff8adafe9e4atagen2026-10-22 12:30 UTC792
  result of a call, subsequent calls to the method will not contact the server
7ff8adafe9e4atagen2026-10-22 12:30 UTC793
  for a while, instead the cached URI will be returned. If caching of this URI
7ff8adafe9e4atagen2026-10-22 12:30 UTC794
  is not desirable, the `OAuth::fetch_account_management_url` method can be
7ff8adafe9e4atagen2026-10-22 12:30 UTC795
  used. ([#4663](https://github.com/matrix-org/matrix-rust-sdk/pull/4663))
7ff8adafe9e4atagen2026-10-22 12:30 UTC796
- The `MediaRetentionPolicy` can now trigger regular cleanups with its new
7ff8adafe9e4atagen2026-10-22 12:30 UTC797
  `cleanup_frequency` setting.
7ff8adafe9e4atagen2026-10-22 12:30 UTC798
  ([#4603](https://github.com/matrix-org/matrix-rust-sdk/pull/4603))
7ff8adafe9e4atagen2026-10-22 12:30 UTC799
- [**breaking**] The HTTP client only allows TLS 1.2 or newer, as recommended by
7ff8adafe9e4atagen2026-10-22 12:30 UTC800
  [BCP 195](https://datatracker.ietf.org/doc/bcp195/).
7ff8adafe9e4atagen2026-10-22 12:30 UTC801
  ([#4647](https://github.com/matrix-org/matrix-rust-sdk/pull/4647))
7ff8adafe9e4atagen2026-10-22 12:30 UTC802
- Add `Room::report_room` api.
7ff8adafe9e4atagen2026-10-22 12:30 UTC803
  ([#4713](https://github.com/matrix-org/matrix-rust-sdk/pull/4713))
7ff8adafe9e4atagen2026-10-22 12:30 UTC804
- `Client::notification_client` will create a copy of the existing `Client`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC805
  but now it'll make sure it doesn't handle any verification events to
7ff8adafe9e4atagen2026-10-22 12:30 UTC806
  avoid an issue with these events being received and processed twice if
7ff8adafe9e4atagen2026-10-22 12:30 UTC807
  `NotificationProcessSetup` was `SingleSetup`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC808
- [**breaking**] `Room::is_encrypted` is replaced by
7ff8adafe9e4atagen2026-10-22 12:30 UTC809
  `Room::latest_encryption_state` which returns a value of the new
7ff8adafe9e4atagen2026-10-22 12:30 UTC810
  `EncryptionState` enum; another `Room::encryption_state` non-async and
7ff8adafe9e4atagen2026-10-22 12:30 UTC811
  infallible method is added to get the `EncryptionState` without calling
7ff8adafe9e4atagen2026-10-22 12:30 UTC812
  `Room::request_encryption_state`. This latter method is also now public.
7ff8adafe9e4atagen2026-10-22 12:30 UTC813
  ([#4777](https://github.com/matrix-org/matrix-rust-sdk/pull/4777)). One can
7ff8adafe9e4atagen2026-10-22 12:30 UTC814
  safely replace:
7ff8adafe9e4atagen2026-10-22 12:30 UTC815
7ff8adafe9e4atagen2026-10-22 12:30 UTC816
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC817
  room.is_encrypted().await?
7ff8adafe9e4atagen2026-10-22 12:30 UTC818
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC819
7ff8adafe9e4atagen2026-10-22 12:30 UTC820
  by
7ff8adafe9e4atagen2026-10-22 12:30 UTC821
7ff8adafe9e4atagen2026-10-22 12:30 UTC822
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC823
  room.latest_encryption_state().await?.is_encrypted()
7ff8adafe9e4atagen2026-10-22 12:30 UTC824
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC825
7ff8adafe9e4atagen2026-10-22 12:30 UTC826
- `LocalServerBuilder`, behind the `local-server` feature, can be used to spawn
7ff8adafe9e4atagen2026-10-22 12:30 UTC827
  a server when the end-user needs to be redirected to an address on localhost.
7ff8adafe9e4atagen2026-10-22 12:30 UTC828
  It was used for `SsoLoginBuilder` and can now be used in other cases, like for
7ff8adafe9e4atagen2026-10-22 12:30 UTC829
  login with the OAuth 2.0 API.
7ff8adafe9e4atagen2026-10-22 12:30 UTC830
  ([#4804](https://github.com/matrix-org/matrix-rust-sdk/pull/4804)
7ff8adafe9e4atagen2026-10-22 12:30 UTC831
- The `OAuth` api is no longer gated behind the `experimental-oidc` cargo
7ff8adafe9e4atagen2026-10-22 12:30 UTC832
  feature.
7ff8adafe9e4atagen2026-10-22 12:30 UTC833
  ([#4830](https://github.com/matrix-org/matrix-rust-sdk/pull/4830))
7ff8adafe9e4atagen2026-10-22 12:30 UTC834
- Re-export `SqliteStoreConfig` and add
7ff8adafe9e4atagen2026-10-22 12:30 UTC835
  `ClientBuilder::sqlite_store_with_config_and_cache_path` to configure the
7ff8adafe9e4atagen2026-10-22 12:30 UTC836
  SQLite store with the new `SqliteStoreConfig` structure
7ff8adafe9e4atagen2026-10-22 12:30 UTC837
  ([#4870](https://github.com/matrix-org/matrix-rust-sdk/pull/4870))
7ff8adafe9e4atagen2026-10-22 12:30 UTC838
- Add `Client::logout()` that allows to log out regardless of the `AuthApi` that
7ff8adafe9e4atagen2026-10-22 12:30 UTC839
  is used for the session.
7ff8adafe9e4atagen2026-10-22 12:30 UTC840
  ([#4886](https://github.com/matrix-org/matrix-rust-sdk/pull/4886))
7ff8adafe9e4atagen2026-10-22 12:30 UTC841
7ff8adafe9e4atagen2026-10-22 12:30 UTC842
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC843
7ff8adafe9e4atagen2026-10-22 12:30 UTC844
- Ensure all known secrets are removed from secret storage when invoking the
7ff8adafe9e4atagen2026-10-22 12:30 UTC845
  `Recovery::disable()` method. While the server is not guaranteed to delete
7ff8adafe9e4atagen2026-10-22 12:30 UTC846
  these secrets, making an attempt to remove them is considered good practice.
7ff8adafe9e4atagen2026-10-22 12:30 UTC847
  Note that all secrets are uploaded to the server in an encrypted form.
7ff8adafe9e4atagen2026-10-22 12:30 UTC848
  ([#4629](https://github.com/matrix-org/matrix-rust-sdk/pull/4629))
7ff8adafe9e4atagen2026-10-22 12:30 UTC849
- Most of the features in the `OAuth` API should now work under WASM
7ff8adafe9e4atagen2026-10-22 12:30 UTC850
  ([#4830](https://github.com/matrix-org/matrix-rust-sdk/pull/4830))
7ff8adafe9e4atagen2026-10-22 12:30 UTC851
7ff8adafe9e4atagen2026-10-22 12:30 UTC852
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC853
7ff8adafe9e4atagen2026-10-22 12:30 UTC854
- [**breaking**] Switched from the unmaintained backoff crate to the
7ff8adafe9e4atagen2026-10-22 12:30 UTC855
  [backon](https://docs.rs/backon/1.5.0/backon/) crate. As part of this change,
7ff8adafe9e4atagen2026-10-22 12:30 UTC856
  the `RequestConfig::retry_limit` method was renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC857
  `RequestConfig::max_retry_time` and the parameter for the method was updated
7ff8adafe9e4atagen2026-10-22 12:30 UTC858
  from a `u64` to a `usize`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC859
  ([#4916](https://github.com/matrix-org/matrix-rust-sdk/pull/4916))
7ff8adafe9e4atagen2026-10-22 12:30 UTC860
- [**breaking**] We now require Rust 1.85 as the minimum supported Rust version
7ff8adafe9e4atagen2026-10-22 12:30 UTC861
  to compile. Yay for async closures!
7ff8adafe9e4atagen2026-10-22 12:30 UTC862
  ([#4745](https://github.com/matrix-org/matrix-rust-sdk/pull/4745))
7ff8adafe9e4atagen2026-10-22 12:30 UTC863
- [**breaking**] The `server_url` and `server_response` methods of
7ff8adafe9e4atagen2026-10-22 12:30 UTC864
  `SsoLoginBuilder` are replaced by `server_builder()`, which allows more
7ff8adafe9e4atagen2026-10-22 12:30 UTC865
  fine-grained settings for the server.
7ff8adafe9e4atagen2026-10-22 12:30 UTC866
  ([#4804](https://github.com/matrix-org/matrix-rust-sdk/pull/4804)
7ff8adafe9e4atagen2026-10-22 12:30 UTC867
- [**breaking**]: `OidcSessionTokens` and `MatrixSessionTokens` have been merged
7ff8adafe9e4atagen2026-10-22 12:30 UTC868
  into `SessionTokens`. Methods to get and watch session tokens are now
7ff8adafe9e4atagen2026-10-22 12:30 UTC869
  available directly on `Client`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC870
  `(MatrixAuth/Oidc)::session_tokens_stream()`, can be replaced by
7ff8adafe9e4atagen2026-10-22 12:30 UTC871
  `Client::subscribe_to_session_changes()` and then calling
7ff8adafe9e4atagen2026-10-22 12:30 UTC872
  `Client::session_tokens()` on a `SessionChange::TokenRefreshed`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC873
  ([#4772](https://github.com/matrix-org/matrix-rust-sdk/pull/4772))
7ff8adafe9e4atagen2026-10-22 12:30 UTC874
- [**breaking**] `Oidc::url_for_oidc()` doesn't take the
7ff8adafe9e4atagen2026-10-22 12:30 UTC875
  `VerifiedClientMetadata` to register as an argument, the one in
7ff8adafe9e4atagen2026-10-22 12:30 UTC876
  `OidcRegistrations` is used instead. However it now takes the redirect URI to
7ff8adafe9e4atagen2026-10-22 12:30 UTC877
  use, instead of always using the first one in the client metadata.
7ff8adafe9e4atagen2026-10-22 12:30 UTC878
  ([#4771](https://github.com/matrix-org/matrix-rust-sdk/pull/4771))
7ff8adafe9e4atagen2026-10-22 12:30 UTC879
- [**breaking**] The `server_url` and `server_response` methods of
7ff8adafe9e4atagen2026-10-22 12:30 UTC880
  `SsoLoginBuilder` are replaced by `server_builder()`, which allows more
7ff8adafe9e4atagen2026-10-22 12:30 UTC881
  fine-grained settings for the server.
7ff8adafe9e4atagen2026-10-22 12:30 UTC882
- [**breaking**]: Rename the `Oidc` API to `OAuth`, since it's using almost
7ff8adafe9e4atagen2026-10-22 12:30 UTC883
  exclusively OAuth 2.0 rather than OpenID Connect.
7ff8adafe9e4atagen2026-10-22 12:30 UTC884
  ([#4805](https://github.com/matrix-org/matrix-rust-sdk/pull/4805))
7ff8adafe9e4atagen2026-10-22 12:30 UTC885
  - The `oidc` module was renamed to `oauth`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC886
  - `Client::oidc()` was renamed to `Client::oauth()` and the `AuthApi::Oidc`
7ff8adafe9e4atagen2026-10-22 12:30 UTC887
    variant was renamed to `AuthApi::OAuth`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC888
  - `OidcSession` was renamed to `OAuthSession` and the `AuthSession::Oidc`
7ff8adafe9e4atagen2026-10-22 12:30 UTC889
    variant was renamed to `AuthSession::OAuth`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC890
  - `OidcAuthCodeUrlBuilder` and `OidcAuthorizationData` were renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC891
    `OAuthAuthCodeUrlBuilder` and `OAuthAuthorizationData`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC892
  - `OidcError` was renamed to `OAuthError` and the `RefreshTokenError::Oidc`
7ff8adafe9e4atagen2026-10-22 12:30 UTC893
    variant was renamed to `RefreshTokenError::OAuth`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC894
  - `Oidc::provider_metadata()` was renamed to `OAuth::server_metadata()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC895
- [**breaking**]: `OAuth::finish_login()` must always be called, instead of
7ff8adafe9e4atagen2026-10-22 12:30 UTC896
  `OAuth::finish_authorization()`
7ff8adafe9e4atagen2026-10-22 12:30 UTC897
  ([#4817](https://github.com/matrix-org/matrix-rust-sdk/pull/4817))
7ff8adafe9e4atagen2026-10-22 12:30 UTC898
  - `OAuth::abort_authorization()` was renamed to `OAuth::abort_login()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC899
  - `OAuth::finish_login()` can be called several times for the same session,
7ff8adafe9e4atagen2026-10-22 12:30 UTC900
    but it will return an error if it is called with a new session.
7ff8adafe9e4atagen2026-10-22 12:30 UTC901
  - `OAuthError::MissingDeviceId` was removed, it cannot occur anymore.
7ff8adafe9e4atagen2026-10-22 12:30 UTC902
- [**breaking**] `OidcRegistrations` was renamed to `OAuthRegistrationStore`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC903
  ([#4814](https://github.com/matrix-org/matrix-rust-sdk/pull/4814))
7ff8adafe9e4atagen2026-10-22 12:30 UTC904
  - `OidcRegistrationsError` was renamed to `OAuthRegistrationStoreError`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC905
  - The `registrations` module was renamed and is now private.
7ff8adafe9e4atagen2026-10-22 12:30 UTC906
    `OAuthRegistrationStore` and `ClientId` are exported from `oauth`, and
7ff8adafe9e4atagen2026-10-22 12:30 UTC907
    `OAuthRegistrationStoreError` is exported from `oauth::error`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC908
  - All the methods of `OAuthRegistrationStore` are now `async` and return a
7ff8adafe9e4atagen2026-10-22 12:30 UTC909
    `Result`: errors when reading the file are no longer ignored, and blocking
7ff8adafe9e4atagen2026-10-22 12:30 UTC910
    I/O is performed in a separate thread.
7ff8adafe9e4atagen2026-10-22 12:30 UTC911
  - `OAuthRegistrationStore::new()` takes a `PathBuf` instead of a `Path`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC912
  - `OAuthRegistrationStore::new()` no longer takes a `static_registrations`
7ff8adafe9e4atagen2026-10-22 12:30 UTC913
    parameter. It should be provided if needed with
7ff8adafe9e4atagen2026-10-22 12:30 UTC914
    `OAuthRegistrationStore::with_static_registrations()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC915
- [**breaking**] Allow to use any registration method with `OAuth::login()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC916
  `OAuth::login_with_qr_code()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC917
  ([#4827](https://github.com/matrix-org/matrix-rust-sdk/pull/4827))
7ff8adafe9e4atagen2026-10-22 12:30 UTC918
  - `OAuth::login` takes an optional `ClientRegistrationData` to be able to
7ff8adafe9e4atagen2026-10-22 12:30 UTC919
    register and login with a single function call.
7ff8adafe9e4atagen2026-10-22 12:30 UTC920
  - `OAuth::url_for_oidc()` was removed, it can be replaced by a call to
7ff8adafe9e4atagen2026-10-22 12:30 UTC921
    `OAuth::login()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC922
  - `OAuth::login_with_qr_code()` takes an optional `ClientRegistrationData`
7ff8adafe9e4atagen2026-10-22 12:30 UTC923
    instead of the client metadata.
7ff8adafe9e4atagen2026-10-22 12:30 UTC924
  - `OAuth::finish_login` takes a `UrlOrQuery` instead of an
7ff8adafe9e4atagen2026-10-22 12:30 UTC925
    `AuthorizationCode`. The deserialization of the query string will occur
7ff8adafe9e4atagen2026-10-22 12:30 UTC926
    inside the method and eventual errors will be handled.
7ff8adafe9e4atagen2026-10-22 12:30 UTC927
  - `OAuth::login_with_oidc_callback()` was removed, it can be replaced by a
7ff8adafe9e4atagen2026-10-22 12:30 UTC928
    call to `OAuth::finish_login()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC929
  - `AuthorizationResponse`, `AuthorizationCode` and `AuthorizationError` are
7ff8adafe9e4atagen2026-10-22 12:30 UTC930
    now private.
7ff8adafe9e4atagen2026-10-22 12:30 UTC931
- [**breaking**] - `OAuth::account_management_url()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC932
  `OAuth::fetch_account_management_url()` don't take an action anymore but
7ff8adafe9e4atagen2026-10-22 12:30 UTC933
  return an `AccountManagementUrlBuilder`. The final URL can be obtained with
7ff8adafe9e4atagen2026-10-22 12:30 UTC934
  `AccountManagementUrlBuilder::build()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC935
  ([#4831](https://github.com/matrix-org/matrix-rust-sdk/pull/4831))
7ff8adafe9e4atagen2026-10-22 12:30 UTC936
- [**breaking**] `Client::store` is renamed `state_store`
7ff8adafe9e4atagen2026-10-22 12:30 UTC937
  ([#4851](https://github.com/matrix-org/matrix-rust-sdk/pull/4851))
7ff8adafe9e4atagen2026-10-22 12:30 UTC938
- [**breaking**] The parameters `event_id` and `enforce_thread` on
7ff8adafe9e4atagen2026-10-22 12:30 UTC939
  [`Room::make_reply_event()`] have been wrapped in a `reply` struct parameter.
7ff8adafe9e4atagen2026-10-22 12:30 UTC940
  ([#4880](https://github.com/matrix-org/matrix-rust-sdk/pull/4880/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC941
- [**breaking**]: The `Oidc` API was updated to match the latest version of the
7ff8adafe9e4atagen2026-10-22 12:30 UTC942
  next-gen auth MSCs. The most notable change is that these MSCs are now based
7ff8adafe9e4atagen2026-10-22 12:30 UTC943
  on OAuth 2.0 rather then OpenID Connect. To reflect that, most types have been
7ff8adafe9e4atagen2026-10-22 12:30 UTC944
  renamed, with the `Oidc` prefix changed to `OAuth`. The API has also been
7ff8adafe9e4atagen2026-10-22 12:30 UTC945
  cleaned up, it is now simpler and has fewer methods while keeping most of the
7ff8adafe9e4atagen2026-10-22 12:30 UTC946
  available features. Here is a detailed list of changes:
7ff8adafe9e4atagen2026-10-22 12:30 UTC947
  - Rename the `Oidc` API to `OAuth`, since it's using almost exclusively OAuth
7ff8adafe9e4atagen2026-10-22 12:30 UTC948
    2.0 rather than OpenID Connect.
7ff8adafe9e4atagen2026-10-22 12:30 UTC949
    ([#4805](https://github.com/matrix-org/matrix-rust-sdk/pull/4805))
7ff8adafe9e4atagen2026-10-22 12:30 UTC950
    - The `oidc` module was renamed to `oauth`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC951
    - `Client::oidc()` was renamed to `Client::oauth()` and the `AuthApi::Oidc`
7ff8adafe9e4atagen2026-10-22 12:30 UTC952
      variant was renamed to `AuthApi::OAuth`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC953
    - `OidcSession` was renamed to `OAuthSession` and the `AuthSession::Oidc`
7ff8adafe9e4atagen2026-10-22 12:30 UTC954
      variant was renamed to `AuthSession::OAuth`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC955
    - `OidcAuthCodeUrlBuilder` and `OidcAuthorizationData` were renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC956
      `OAuthAuthCodeUrlBuilder` and `OAuthAuthorizationData`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC957
    - `OidcError` was renamed to `OAuthError` and the `RefreshTokenError::Oidc`
7ff8adafe9e4atagen2026-10-22 12:30 UTC958
      variant was renamed to `RefreshTokenError::OAuth`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC959
    - `Oidc::provider_metadata()` was renamed to `OAuth::server_metadata()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC960
  - The `authentication::qrcode` module was moved inside
7ff8adafe9e4atagen2026-10-22 12:30 UTC961
    `authentication::oauth`, because it is only available through the `OAuth`
7ff8adafe9e4atagen2026-10-22 12:30 UTC962
    API. ([#4687](https://github.com/matrix-org/matrix-rust-sdk/pull/4687/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC963
  - The `OAuth` API only supports public clients, i.e. clients
7ff8adafe9e4atagen2026-10-22 12:30 UTC964
    without a secret.
7ff8adafe9e4atagen2026-10-22 12:30 UTC965
    ([#4634](https://github.com/matrix-org/matrix-rust-sdk/pull/4634))
7ff8adafe9e4atagen2026-10-22 12:30 UTC966
    - `OAuth::restore_registered_client()` takes a `ClientId` instead of
7ff8adafe9e4atagen2026-10-22 12:30 UTC967
      `ClientCredentials`
7ff8adafe9e4atagen2026-10-22 12:30 UTC968
    - `OAuth::restore_registered_client()` must NOT be called after
7ff8adafe9e4atagen2026-10-22 12:30 UTC969
      `OAuth::register_client()` anymore.
7ff8adafe9e4atagen2026-10-22 12:30 UTC970
  - `Oidc::authorize_scope()` was removed because it has no use
7ff8adafe9e4atagen2026-10-22 12:30 UTC971
    case anymore, according to the latest version of
7ff8adafe9e4atagen2026-10-22 12:30 UTC972
    [MSC2967](https://github.com/matrix-org/matrix-spec-proposals/pull/2967).
7ff8adafe9e4atagen2026-10-22 12:30 UTC973
    ([#4664](https://github.com/matrix-org/matrix-rust-sdk/pull/4664))
7ff8adafe9e4atagen2026-10-22 12:30 UTC974
  - The `OAuth` API uses the `GET /auth_metadata` endpoint from the latest
7ff8adafe9e4atagen2026-10-22 12:30 UTC975
    version of
7ff8adafe9e4atagen2026-10-22 12:30 UTC976
    [MSC2965](https://github.com/matrix-org/matrix-spec-proposals/pull/2965) by
7ff8adafe9e4atagen2026-10-22 12:30 UTC977
    default. The previous `GET /auth_issuer` endpoint is still supported as a
7ff8adafe9e4atagen2026-10-22 12:30 UTC978
    fallback for now.
7ff8adafe9e4atagen2026-10-22 12:30 UTC979
    ([#4673](https://github.com/matrix-org/matrix-rust-sdk/pull/4673))
7ff8adafe9e4atagen2026-10-22 12:30 UTC980
    - It is not possible to provide a custom issuer anymore:
7ff8adafe9e4atagen2026-10-22 12:30 UTC981
      `Oidc::given_provider_metadata()` was removed, and the parameter was
7ff8adafe9e4atagen2026-10-22 12:30 UTC982
      removed from `OAuth::register_client()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC983
    - `Oidc::fetch_authentication_issuer()` was removed. To check if the
7ff8adafe9e4atagen2026-10-22 12:30 UTC984
      homeserver supports OAuth 2.0, use `OAuth::server_metadata()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC985
    - `OAuth::server_metadata()` returns an `OAuthDiscoveryError`. It has a
7ff8adafe9e4atagen2026-10-22 12:30 UTC986
      `NotSupported` variant and an `is_not_supported()` method to check if the
7ff8adafe9e4atagen2026-10-22 12:30 UTC987
      error is due to the server not supporting OAuth 2.0.
7ff8adafe9e4atagen2026-10-22 12:30 UTC988
    - `OAuthError::MissingAuthenticationIssuer` was removed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC989
  - The behavior of `OAuth::logout()` is now aligned with
7ff8adafe9e4atagen2026-10-22 12:30 UTC990
    [MSC4254](https://github.com/matrix-org/matrix-spec-proposals/pull/4254)
7ff8adafe9e4atagen2026-10-22 12:30 UTC991
    ([#4674](https://github.com/matrix-org/matrix-rust-sdk/pull/4674))
7ff8adafe9e4atagen2026-10-22 12:30 UTC992
    - Support for
7ff8adafe9e4atagen2026-10-22 12:30 UTC993
      [RP-Initiated Logout](https://openid.net/specs/openid-connect-rpinitiated-1_0.html)
7ff8adafe9e4atagen2026-10-22 12:30 UTC994
      was removed, so it doesn't return an `OidcEndSessionUrlBuilder` anymore.
7ff8adafe9e4atagen2026-10-22 12:30 UTC995
    - Only one request is made to revoke the access token, since the server is
7ff8adafe9e4atagen2026-10-22 12:30 UTC996
      supposed to revoke both the access token and the associated refresh token
7ff8adafe9e4atagen2026-10-22 12:30 UTC997
      when the request is made.
7ff8adafe9e4atagen2026-10-22 12:30 UTC998
  - Remove most of the parameter methods of `OAuthAuthCodeUrlBuilder`, since
7ff8adafe9e4atagen2026-10-22 12:30 UTC999
    they were parameters defined in OpenID Connect. Only the `prompt` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1000
    `user_id_hint` parameters are still supported.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1001
    ([#4699](https://github.com/matrix-org/matrix-rust-sdk/pull/4699))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1002
  - Remove support for ID tokens in the `OAuth` API.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1003
    ([#4726](https://github.com/matrix-org/matrix-rust-sdk/pull/4726))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1004
    - `OAuth::restore_registered_client()` doesn't take a
7ff8adafe9e4atagen2026-10-22 12:30 UTC1005
      `VerifiedClientMetadata` anymore.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1006
    - `Oidc::latest_id_token()` and `Oidc::client_metadata()` were removed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1007
  - The `OAuth` API makes use of the oauth2 and ruma crates rather than
7ff8adafe9e4atagen2026-10-22 12:30 UTC1008
    mas-oidc-client.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1009
    ([#4761](https://github.com/matrix-org/matrix-rust-sdk/pull/4761))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1010
    ([#4789](https://github.com/matrix-org/matrix-rust-sdk/pull/4789))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1011
    - `ClientId` is a different type reexported from the oauth2 crate.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1012
    - The error types that were in the `oauth` module have been moved to the
7ff8adafe9e4atagen2026-10-22 12:30 UTC1013
      `oauth::error` module.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1014
    - The `device_id` parameter of `OAuth::login` is now an
7ff8adafe9e4atagen2026-10-22 12:30 UTC1015
      `Option<OwnedDeviceId>`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1016
    - The `state` field of `OAuthAuthorizationData` and the parameter of the
7ff8adafe9e4atagen2026-10-22 12:30 UTC1017
      same name in `OAuth::abort_login()` now use `CsrfToken`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1018
    - The `types` and `requests` modules are gone and the necessary types are
7ff8adafe9e4atagen2026-10-22 12:30 UTC1019
      exported from the `oauth` module or available from `ruma`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1020
    - `AccountManagementUrlFull` now takes an `OwnedDeviceId` when a device ID
7ff8adafe9e4atagen2026-10-22 12:30 UTC1021
      is required.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1022
    - `(Verified)ProviderMetadata` was replaced by
7ff8adafe9e4atagen2026-10-22 12:30 UTC1023
      `AuthorizationServerMetadata`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1024
    - `OAuth::register_client()` doesn't accept a software statement anymore.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1025
    - `(Verified)ClientMetadata` was replaced by `Raw<ClientMetadata>`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1026
      `ClientMetadata` is an opinionated type that only supports the fields
7ff8adafe9e4atagen2026-10-22 12:30 UTC1027
      required for the `OAuth` API, however any type can be used to construct
7ff8adafe9e4atagen2026-10-22 12:30 UTC1028
      the metadata by serializing it to JSON and converting it.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1029
  - `OAuth::finish_login()` must always be called, instead of
7ff8adafe9e4atagen2026-10-22 12:30 UTC1030
    `OAuth::finish_authorization()`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1031
    ([#4817](https://github.com/matrix-org/matrix-rust-sdk/pull/4817))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1032
    - `OAuth::abort_authorization()` was renamed to `OAuth::abort_login()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1033
    - `OAuth::finish_login()` can be called several times for the same session,
7ff8adafe9e4atagen2026-10-22 12:30 UTC1034
      but it will return an error if it is called with a new session.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1035
    - `OAuthError::MissingDeviceId` was removed, it cannot occur anymore.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1036
  - Allow to use any registration method with `OAuth::login()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1037
    `OAuth::login_with_qr_code()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1038
    ([#4827](https://github.com/matrix-org/matrix-rust-sdk/pull/4827))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1039
    - `OAuth::login` takes an optional `ClientRegistrationData` to be able to
7ff8adafe9e4atagen2026-10-22 12:30 UTC1040
      register and login with a single function call.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1041
    - `OAuth::url_for_oidc()` was removed, it can be replaced by a call to
7ff8adafe9e4atagen2026-10-22 12:30 UTC1042
      `OAuth::login()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1043
    - `OAuth::login_with_qr_code()` takes an optional `ClientRegistrationData`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1044
      instead of the client metadata.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1045
    - `OAuth::finish_login` takes a `UrlOrQuery` instead of an
7ff8adafe9e4atagen2026-10-22 12:30 UTC1046
      `AuthorizationCode`. The deserialization of the query string will occur
7ff8adafe9e4atagen2026-10-22 12:30 UTC1047
      inside the method and eventual errors will be handled.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1048
    - `OAuth::login_with_oidc_callback()` was removed, it can be replaced by a
7ff8adafe9e4atagen2026-10-22 12:30 UTC1049
      call to `OAuth::finish_login()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1050
    - `AuthorizationResponse`, `AuthorizationCode` and `AuthorizationError` are
7ff8adafe9e4atagen2026-10-22 12:30 UTC1051
      now private.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1052
  - `OAuth::account_management_url()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1053
    `OAuth::fetch_account_management_url()` don't take an action anymore but
7ff8adafe9e4atagen2026-10-22 12:30 UTC1054
    return an `AccountManagementUrlBuilder`. The final URL can be obtained with
7ff8adafe9e4atagen2026-10-22 12:30 UTC1055
    `AccountManagementUrlBuilder::build()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1056
    ([#4831](https://github.com/matrix-org/matrix-rust-sdk/pull/4831))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1057
  - `OidcRegistrations` was removed. Clients are supposed to re-register with
7ff8adafe9e4atagen2026-10-22 12:30 UTC1058
    the homeserver for every login.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1059
    ([#4879](https://github.com/matrix-org/matrix-rust-sdk/pull/4879))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1060
  - `OAuth::restore_registered_client()` doesn't take an `issuer` anymore.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1061
    ([#4879](https://github.com/matrix-org/matrix-rust-sdk/pull/4879))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1062
    - `Oidc::issuer()` was removed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1063
    - The `issuer` field of `UserSession` was removed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1064
- `SendHandle::media_handles` was generalized into a vector
7ff8adafe9e4atagen2026-10-22 12:30 UTC1065
  ([#4898](https://github.com/matrix-org/matrix-rust-sdk/pull/4898))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1066
7ff8adafe9e4atagen2026-10-22 12:30 UTC1067
## [0.10.0] - 2025-02-04
7ff8adafe9e4atagen2026-10-22 12:30 UTC1068
7ff8adafe9e4atagen2026-10-22 12:30 UTC1069
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC1070
7ff8adafe9e4atagen2026-10-22 12:30 UTC1071
- Allow to set and check whether an image is animated via its `ImageInfo`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1072
  ([#4503](https://github.com/matrix-org/matrix-rust-sdk/pull/4503))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1073
7ff8adafe9e4atagen2026-10-22 12:30 UTC1074
- Implement `Default` for `BaseImageInfo`, `BaseVideoInfo`, `BaseAudioInfo` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1075
  `BaseFileInfo`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1076
  ([#4503](https://github.com/matrix-org/matrix-rust-sdk/pull/4503))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1077
7ff8adafe9e4atagen2026-10-22 12:30 UTC1078
- Expose `Client::server_versions()` publicly to allow users of the library to
7ff8adafe9e4atagen2026-10-22 12:30 UTC1079
  get the versions of Matrix supported by the homeserver.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1080
  ([#4519](https://github.com/matrix-org/matrix-rust-sdk/pull/4519))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1081
7ff8adafe9e4atagen2026-10-22 12:30 UTC1082
- Create `RoomPrivacySettings` helper to group room settings functionality
7ff8adafe9e4atagen2026-10-22 12:30 UTC1083
  related to room access and visibility.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1084
  ([#4401](https://github.com/matrix-org/matrix-rust-sdk/pull/4401))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1085
7ff8adafe9e4atagen2026-10-22 12:30 UTC1086
- Enable HTTP/2 support in the HTTP client.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1087
  ([#4566](https://github.com/matrix-org/matrix-rust-sdk/pull/4566))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1088
7ff8adafe9e4atagen2026-10-22 12:30 UTC1089
- Add support for creating custom conditional push rules in
7ff8adafe9e4atagen2026-10-22 12:30 UTC1090
  `NotificationSettings::create_custom_conditional_push_rule`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1091
  ([#4587](https://github.com/matrix-org/matrix-rust-sdk/pull/4587))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1092
7ff8adafe9e4atagen2026-10-22 12:30 UTC1093
- The media contents stored in the media cache can now be controlled with a
7ff8adafe9e4atagen2026-10-22 12:30 UTC1094
  `MediaRetentionPolicy` and the new `Media` methods `media_retention_policy()`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC1095
  `set_media_retention_policy()`, `clean_up_media_cache()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1096
  ([#4571](https://github.com/matrix-org/matrix-rust-sdk/pull/4571))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1097
7ff8adafe9e4atagen2026-10-22 12:30 UTC1098
- Add support for creating custom conditional push rules in
7ff8adafe9e4atagen2026-10-22 12:30 UTC1099
  `NotificationSettings::create_custom_conditional_push_rule`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1100
  ([#4587](https://github.com/matrix-org/matrix-rust-sdk/pull/4587))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1101
7ff8adafe9e4atagen2026-10-22 12:30 UTC1102
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC1103
7ff8adafe9e4atagen2026-10-22 12:30 UTC1104
- [**breaking**]: The `RoomEventCacheUpdate::Clear` variant has been removed, as
7ff8adafe9e4atagen2026-10-22 12:30 UTC1105
  it is redundant with the `RoomEventCacheUpdate::UpdateTimelineEvents { diffs:
7ff8adafe9e4atagen2026-10-22 12:30 UTC1106
  Vec<VectorDiff<_>>, .. }` where `VectorDiff` has its own `Clear` variant.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1107
  ([#4627](https://github.com/matrix-org/matrix-rust-sdk/pull/4627))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1108
7ff8adafe9e4atagen2026-10-22 12:30 UTC1109
- Improve the performance of `EventCache` (approximately 4.5 times faster).
7ff8adafe9e4atagen2026-10-22 12:30 UTC1110
  ([#4616](https://github.com/matrix-org/matrix-rust-sdk/pull/4616))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1111
7ff8adafe9e4atagen2026-10-22 12:30 UTC1112
- [**breaking**]: The reexported types `SyncTimelineEvent` and `TimelineEvent`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1113
  have been fused into a single type `TimelineEvent`, and its field
7ff8adafe9e4atagen2026-10-22 12:30 UTC1114
  `push_actions` has been made `Option`al (it is set to `None` when we couldn't
7ff8adafe9e4atagen2026-10-22 12:30 UTC1115
  compute the push actions, because we lacked some information).
7ff8adafe9e4atagen2026-10-22 12:30 UTC1116
  ([#4568](https://github.com/matrix-org/matrix-rust-sdk/pull/4568))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1117
7ff8adafe9e4atagen2026-10-22 12:30 UTC1118
- [**breaking**] Move the optional `RequestConfig` argument of the
7ff8adafe9e4atagen2026-10-22 12:30 UTC1119
  `Client::send()` method to the `with_request_config()` builder method. You
7ff8adafe9e4atagen2026-10-22 12:30 UTC1120
  should call `Client::send(request).with_request_config(request_config).await`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1121
  now instead.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1122
  ([#4443](https://github.com/matrix-org/matrix-rust-sdk/pull/4443))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1123
7ff8adafe9e4atagen2026-10-22 12:30 UTC1124
- [**breaking**] Remove the `AttachmentConfig::with_thumbnail()` constructor and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1125
  replace it with the `AttachmentConfig::thumbnail()` builder method. You should
7ff8adafe9e4atagen2026-10-22 12:30 UTC1126
  call `AttachmentConfig::new().thumbnail(thumbnail)` now instead.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1127
  ([#4452](https://github.com/matrix-org/matrix-rust-sdk/pull/4452))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1128
7ff8adafe9e4atagen2026-10-22 12:30 UTC1129
- [**breaking**] `Room::send_attachment()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1130
  `RoomSendQueue::send_attachment()` now take any type that implements
7ff8adafe9e4atagen2026-10-22 12:30 UTC1131
  `Into<String>` for the filename.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1132
  ([#4451](https://github.com/matrix-org/matrix-rust-sdk/pull/4451))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1133
7ff8adafe9e4atagen2026-10-22 12:30 UTC1134
- [**breaking**] `Recovery::are_we_the_last_man_standing()` has been renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC1135
  `is_last_device()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1136
  ([#4522](https://github.com/matrix-org/matrix-rust-sdk/pull/4522))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1137
7ff8adafe9e4atagen2026-10-22 12:30 UTC1138
- [**breaking**] The `matrix_auth` module is now at `authentication::matrix`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1139
  ([#4575](https://github.com/matrix-org/matrix-rust-sdk/pull/4575))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1140
7ff8adafe9e4atagen2026-10-22 12:30 UTC1141
- [**breaking**] The `oidc` module is now at `authentication::oidc`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1142
  ([#4575](https://github.com/matrix-org/matrix-rust-sdk/pull/4575))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1143
7ff8adafe9e4atagen2026-10-22 12:30 UTC1144
## [0.9.0] - 2024-12-18
7ff8adafe9e4atagen2026-10-22 12:30 UTC1145
7ff8adafe9e4atagen2026-10-22 12:30 UTC1146
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC1147
7ff8adafe9e4atagen2026-10-22 12:30 UTC1148
- Use the inviter's server name and the server name from the room alias as
7ff8adafe9e4atagen2026-10-22 12:30 UTC1149
  fallback values for the via parameter when requesting the room summary from
7ff8adafe9e4atagen2026-10-22 12:30 UTC1150
  the homeserver. This ensures requests succeed even when the room being
7ff8adafe9e4atagen2026-10-22 12:30 UTC1151
  previewed is hosted on a federated server.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1152
  ([#4357](https://github.com/matrix-org/matrix-rust-sdk/pull/4357))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1153
7ff8adafe9e4atagen2026-10-22 12:30 UTC1154
- Do not use the encrypted original file's content type as the encrypted
7ff8adafe9e4atagen2026-10-22 12:30 UTC1155
  thumbnail's content type.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1156
  ([#ecf4434](https://github.com/matrix-org/matrix-rust-sdk/commit/ecf44348cf6a872b843fb7d7af1a88f724c58c3e))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1157
7ff8adafe9e4atagen2026-10-22 12:30 UTC1158
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC1159
7ff8adafe9e4atagen2026-10-22 12:30 UTC1160
- Enable persistent storage for the `EventCache`. This allows events received
7ff8adafe9e4atagen2026-10-22 12:30 UTC1161
  through the `/sync` endpoint or backpagination to be stored persistently,
7ff8adafe9e4atagen2026-10-22 12:30 UTC1162
  enabling client applications to restore a room's view, including events,
7ff8adafe9e4atagen2026-10-22 12:30 UTC1163
  without requiring server communication.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1164
  ([#4347](https://github.com/matrix-org/matrix-rust-sdk/pull/4347))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1165
7ff8adafe9e4atagen2026-10-22 12:30 UTC1166
- [**breaking**] Make all fields of Thumbnail required
7ff8adafe9e4atagen2026-10-22 12:30 UTC1167
  ([#4324](https://github.com/matrix-org/matrix-rust-sdk/pull/4324))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1168
7ff8adafe9e4atagen2026-10-22 12:30 UTC1169
- `Backups::exists_on_server`, which always fetches up-to-date information from
7ff8adafe9e4atagen2026-10-22 12:30 UTC1170
  the server about whether a key storage backup exists, was renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC1171
  `fetch_exists_on_the_server`, and a new implementation of `exists_on_server`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1172
  which caches the most recent answer is now provided.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1173
7ff8adafe9e4atagen2026-10-22 12:30 UTC1174
## [0.8.0] - 2024-11-19
7ff8adafe9e4atagen2026-10-22 12:30 UTC1175
7ff8adafe9e4atagen2026-10-22 12:30 UTC1176
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC1177
7ff8adafe9e4atagen2026-10-22 12:30 UTC1178
- Add more invalid characters for room aliases.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1179
- Match the right status code in `Client::is_room_alias_available`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1180
- Fix a bug where room keys were considered to be downloaded before backups were
7ff8adafe9e4atagen2026-10-22 12:30 UTC1181
  enabled. This bug only affects the
7ff8adafe9e4atagen2026-10-22 12:30 UTC1182
  `BackupDownloadStrategy::AfterDecryptionFailure`, where no attempt would be
7ff8adafe9e4atagen2026-10-22 12:30 UTC1183
  made to download a room key, if a decryption failure with a given room key
7ff8adafe9e4atagen2026-10-22 12:30 UTC1184
  would have been encountered before the backups were enabled.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1185
7ff8adafe9e4atagen2026-10-22 12:30 UTC1186
### Documentation
7ff8adafe9e4atagen2026-10-22 12:30 UTC1187
7ff8adafe9e4atagen2026-10-22 12:30 UTC1188
- Improve documentation of `Client::observe_events`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1189
7ff8adafe9e4atagen2026-10-22 12:30 UTC1190
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC1191
7ff8adafe9e4atagen2026-10-22 12:30 UTC1192
- Add `create_room_alias` function.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1193
- `Client::cross_process_store_locks_holder_name` is used everywhere:
7ff8adafe9e4atagen2026-10-22 12:30 UTC1194
- `StoreConfig::new()` now takes a
7ff8adafe9e4atagen2026-10-22 12:30 UTC1195
  `cross_process_store_locks_holder_name` argument.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1196
- `StoreConfig` no longer implements `Default`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1197
- `BaseClient::new()` has been removed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1198
- `BaseClient::clone_with_in_memory_state_store()` now takes a
7ff8adafe9e4atagen2026-10-22 12:30 UTC1199
  `cross_process_store_locks_holder_name` argument.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1200
- `BaseClient` no longer implements `Default`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1201
- `EventCacheStoreLock::new()` no longer takes a `key` argument.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1202
- `BuilderStoreConfig` no longer has
7ff8adafe9e4atagen2026-10-22 12:30 UTC1203
  `cross_process_store_locks_holder_name` field for `Sqlite` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1204
  `IndexedDb`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1205
7ff8adafe9e4atagen2026-10-22 12:30 UTC1206
- `EncryptionSyncService` and `Notification` are using
7ff8adafe9e4atagen2026-10-22 12:30 UTC1207
  `Client::cross_process_store_locks_holder_name`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1208
7ff8adafe9e4atagen2026-10-22 12:30 UTC1209
- Allow passing a custom `RequestConfig` to an upload request.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1210
- Retry uploads if they've failed with transient errors.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1211
- Implement `EventHandlerContext` for tuples.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1212
- Introduce a mechanism similar to `Client::add_event_handler` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1213
  `Client::add_room_event_handler` but with a reactive programming pattern. Add
7ff8adafe9e4atagen2026-10-22 12:30 UTC1214
  `Client::observe_events` and `Client::observe_room_events`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1215
7ff8adafe9e4atagen2026-10-22 12:30 UTC1216
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC1217
  // Get an observer.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1218
  let observer =
7ff8adafe9e4atagen2026-10-22 12:30 UTC1219
     client.observe_events::<SyncRoomMessageEvent, (Room, Vec<Action>)>();
7ff8adafe9e4atagen2026-10-22 12:30 UTC1220
7ff8adafe9e4atagen2026-10-22 12:30 UTC1221
  // Subscribe to the observer.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1222
  let mut subscriber = observer.subscribe();
7ff8adafe9e4atagen2026-10-22 12:30 UTC1223
7ff8adafe9e4atagen2026-10-22 12:30 UTC1224
  // Use the subscriber as a `Stream`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1225
  let (message_event, (room, push_actions)) = subscriber.next().await.unwrap();
7ff8adafe9e4atagen2026-10-22 12:30 UTC1226
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC1227
7ff8adafe9e4atagen2026-10-22 12:30 UTC1228
  When calling `observe_events`, one has to specify the type of event (in the
7ff8adafe9e4atagen2026-10-22 12:30 UTC1229
  example, `SyncRoomMessageEvent`) and a context (in the example, `(Room,
7ff8adafe9e4atagen2026-10-22 12:30 UTC1230
  Vec<Action>)`, respectively for the room and the push actions).
7ff8adafe9e4atagen2026-10-22 12:30 UTC1231
7ff8adafe9e4atagen2026-10-22 12:30 UTC1232
- Implement unwedging for media uploads.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1233
- Send state from state sync and not from timeline to widget
7ff8adafe9e4atagen2026-10-22 12:30 UTC1234
  ([#4254](https://github.com/matrix-org/matrix-rust-sdk/pull/4254))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1235
7ff8adafe9e4atagen2026-10-22 12:30 UTC1236
- Allow aborting media uploads.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1237
- Add `RoomPreviewInfo::num_active_members`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1238
- Use room directory search as another data source.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1239
- Check if the user is allowed to do a room mention before trying to send a call
7ff8adafe9e4atagen2026-10-22 12:30 UTC1240
  notify event.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1241
  ([#4271](https://github.com/matrix-org/matrix-rust-sdk/pull/4271))
7ff8adafe9e4atagen2026-10-22 12:30 UTC1242
7ff8adafe9e4atagen2026-10-22 12:30 UTC1243
- Add `Client::cross_process_store_locks_holder_name()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1244
- Add a `PreviouslyVerified` variant to `VerificationLevel` indicating that the
7ff8adafe9e4atagen2026-10-22 12:30 UTC1245
  identity is unverified and previously it was verified.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1246
7ff8adafe9e4atagen2026-10-22 12:30 UTC1247
- New `UserIdentity::pin` method.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1248
- New `ClientBuilder::with_decryption_trust_requirement` method.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1249
- New `ClientBuilder::with_room_key_recipient_strategy` method
7ff8adafe9e4atagen2026-10-22 12:30 UTC1250
- New `Room.set_account_data` and `Room.set_account_data_raw` RoomAccountData
7ff8adafe9e4atagen2026-10-22 12:30 UTC1251
  setters, analogous to the GlobalAccountData
7ff8adafe9e4atagen2026-10-22 12:30 UTC1252
7ff8adafe9e4atagen2026-10-22 12:30 UTC1253
- New `RequestConfig.max_concurrent_requests` which allows to limit the maximum
7ff8adafe9e4atagen2026-10-22 12:30 UTC1254
  number of concurrent requests the internal HTTP client issues (all others have
7ff8adafe9e4atagen2026-10-22 12:30 UTC1255
  to wait until the number drops below that threshold again)
7ff8adafe9e4atagen2026-10-22 12:30 UTC1256
7ff8adafe9e4atagen2026-10-22 12:30 UTC1257
- Implement proper redact handling in the widget driver. This allows the Rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC1258
  SDK widget driver to support widgets that rely on redacting.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1259
7ff8adafe9e4atagen2026-10-22 12:30 UTC1260
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC1261
7ff8adafe9e4atagen2026-10-22 12:30 UTC1262
- [**breaking**] Rename `DisplayName` to `RoomDisplayName`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1263
- Improve `is_room_alias_format_valid` so it's more strict.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1264
- Remove duplicated fields in media event contents.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1265
- Use `SendHandle` for media uploads too.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1266
- Move `event_cache_store/` to `event_cache/store/` in `matrix-sdk-base`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1267
- Move `linked_chunk` from `matrix-sdk` to `matrix-sdk-common`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1268
- Move `Event` and `Gap` into `matrix_sdk_base::event_cache`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1269
- Move `formatted_caption_from` to the SDK, rename it.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1270
- Tidy up and start commenting the widget code.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1271
- Get rid of `ProcessingContext` and inline it in its callers.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1272
- Get rid of unused `limits` parameter when constructing a `WidgetMachine`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1273
- Use a specialized mutex for locking access to the state store and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1274
  `being_sent`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1275
7ff8adafe9e4atagen2026-10-22 12:30 UTC1276
- Renamed `VerificationLevel::PreviouslyVerified` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC1277
  `VerificationLevel::VerificationViolation`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1278
7ff8adafe9e4atagen2026-10-22 12:30 UTC1279
- [**breaking**] Replace the `Notification` type from Ruma in `SyncResponse` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1280
  `Client::register_notification_handler` by a custom one.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1281
7ff8adafe9e4atagen2026-10-22 12:30 UTC1282
- [**breaking**] The ambiguity maps in `SyncResponse` are moved to `JoinedRoom`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1283
  and `LeftRoom`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1284
7ff8adafe9e4atagen2026-10-22 12:30 UTC1285
- [**breaking**] `Room::can_user_redact` and `Member::can_redact` are split
7ff8adafe9e4atagen2026-10-22 12:30 UTC1286
  between `*_redact_own` and `*_redact_other`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1287
7ff8adafe9e4atagen2026-10-22 12:30 UTC1288
- [**breaking**] `AmbiguityCache` contains the room member's user ID.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1289
- [**breaking**] Replace `impl MediaEventContent` with `&impl MediaEventContent`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1290
  in
7ff8adafe9e4atagen2026-10-22 12:30 UTC1291
  `Media::get_file`/`Media::remove_file`/`Media::get_thumbnail`/`Media::remove_thumbnail`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1292
7ff8adafe9e4atagen2026-10-22 12:30 UTC1293
- [**breaking**] A custom sliding sync proxy set with
7ff8adafe9e4atagen2026-10-22 12:30 UTC1294
  `ClientBuilder::sliding_sync_proxy` now takes precedence over a discovered
7ff8adafe9e4atagen2026-10-22 12:30 UTC1295
  proxy.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1296
7ff8adafe9e4atagen2026-10-22 12:30 UTC1297
- [**breaking**] `Client::get_profile` was moved to `Account` and renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC1298
  `Account::fetch_user_profile_of`. `Account::get_profile` was renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC1299
  `Account::fetch_user_profile`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1300
7ff8adafe9e4atagen2026-10-22 12:30 UTC1301
- [**breaking**] The `HttpError::UnableToCloneRequest` error variant has been
7ff8adafe9e4atagen2026-10-22 12:30 UTC1302
  removed because it was never used or generated by the SDK.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1303
7ff8adafe9e4atagen2026-10-22 12:30 UTC1304
- [**breaking**] The `Error::InconsistentState` error variant has been removed
7ff8adafe9e4atagen2026-10-22 12:30 UTC1305
  because it was never used or generated by the SDK.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1306
7ff8adafe9e4atagen2026-10-22 12:30 UTC1307
- [**breaking**] The widget capabilities in the FFI now need two additional
7ff8adafe9e4atagen2026-10-22 12:30 UTC1308
  flags: `update_delayed_event`, `send_delayed_event`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1309
7ff8adafe9e4atagen2026-10-22 12:30 UTC1310
- [**breaking**] `Room::event` now takes an optional `RequestConfig` to allow
7ff8adafe9e4atagen2026-10-22 12:30 UTC1311
  for tweaking the network behavior.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1312
7ff8adafe9e4atagen2026-10-22 12:30 UTC1313
- [**breaking**] The `instant` module was removed, use the `ruma::time` module
7ff8adafe9e4atagen2026-10-22 12:30 UTC1314
  instead.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1315
7ff8adafe9e4atagen2026-10-22 12:30 UTC1316
- [**breaking**] Add `ClientBuilder::sqlite_store_with_cache_path` to build a
7ff8adafe9e4atagen2026-10-22 12:30 UTC1317
  client that stores caches in a different directory to state/crypto.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1318
7ff8adafe9e4atagen2026-10-22 12:30 UTC1319
- [**breaking**] The `body` parameter in `get_media_file` has been replaced with
7ff8adafe9e4atagen2026-10-22 12:30 UTC1320
  a `filename` parameter now that Ruma has a `filename()` method.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1321
7ff8adafe9e4atagen2026-10-22 12:30 UTC1322
## 0.7.0
7ff8adafe9e4atagen2026-10-22 12:30 UTC1323
7ff8adafe9e4atagen2026-10-22 12:30 UTC1324
Breaking changes:
7ff8adafe9e4atagen2026-10-22 12:30 UTC1325
7ff8adafe9e4atagen2026-10-22 12:30 UTC1326
- The `Client::sync_token` accessor function is no longer public. If you were
7ff8adafe9e4atagen2026-10-22 12:30 UTC1327
  using this for `Client::sync_once()`, you can get the token from the result of
7ff8adafe9e4atagen2026-10-22 12:30 UTC1328
  the `Client::sync_once()` method instead
7ff8adafe9e4atagen2026-10-22 12:30 UTC1329
  ([#1216](https://github.com/matrix-org/matrix-rust-sdk/pull/1216)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC1330
- `Common::members` and `Common::members_no_sync` take a `RoomMemberships` to be
7ff8adafe9e4atagen2026-10-22 12:30 UTC1331
  able to filter the results by any membership state.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1332
  - `Common::active_members(_no_sync)` and `Common::joined_members(_no_sync)`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1333
    are deprecated.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1334
- `matrix-sdk-sqlite` is the new default store implementation outside of WASM,
7ff8adafe9e4atagen2026-10-22 12:30 UTC1335
  behind the `sqlite` feature.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1336
  - The `sled` feature was removed. The `matrix-sdk-sled` crate is deprecated
7ff8adafe9e4atagen2026-10-22 12:30 UTC1337
    and no longer maintained.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1338
- Replace `Client::authentication_issuer` with
7ff8adafe9e4atagen2026-10-22 12:30 UTC1339
  `Client::authentication_server_info` that contains all the fields discovered
7ff8adafe9e4atagen2026-10-22 12:30 UTC1340
  from the homeserver for authenticating with OIDC
7ff8adafe9e4atagen2026-10-22 12:30 UTC1341
- Remove `HttpSend` trait in favor of allowing a custom `reqwest::Client`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1342
  instance to be supplied
7ff8adafe9e4atagen2026-10-22 12:30 UTC1343
- Move all the types and methods using the native Matrix login and registration
7ff8adafe9e4atagen2026-10-22 12:30 UTC1344
  APIs from `Client` to the new `matrix_auth::MatrixAuth` API that is accessible
7ff8adafe9e4atagen2026-10-22 12:30 UTC1345
  via `Client::matrix_auth()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1346
- Move `Session` and `SessionTokens` to the `matrix_auth` module.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1347
  - Move the session methods on `Client` to the `MatrixAuth` API.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1348
  - Split `Session`'s content into several types. Its (de)serialization is still
7ff8adafe9e4atagen2026-10-22 12:30 UTC1349
    backwards compatible.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1350
- The room API has been simplified
7ff8adafe9e4atagen2026-10-22 12:30 UTC1351
  - Removed the previous `Room`, `Joined`, `Invited` and `Left` types
7ff8adafe9e4atagen2026-10-22 12:30 UTC1352
  - Merged all of the functionality from `Joined`, `Invited` and `Left` into
7ff8adafe9e4atagen2026-10-22 12:30 UTC1353
    `room::Common`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1354
  - Renamed `room::Common` to just `Room` and made it accessible as
7ff8adafe9e4atagen2026-10-22 12:30 UTC1355
    `matrix_sdk::Room`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1356
- Event handler closures now need to implement `FnOnce` + `Clone` instead of
7ff8adafe9e4atagen2026-10-22 12:30 UTC1357
  `Fn`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1358
  - As a consequence, you no longer need to explicitly need to `clone` variables
7ff8adafe9e4atagen2026-10-22 12:30 UTC1359
    they capture before constructing an `async move {}` block inside
7ff8adafe9e4atagen2026-10-22 12:30 UTC1360
- `Room::sync_members` doesn't return the underlying Ruma response anymore. If
7ff8adafe9e4atagen2026-10-22 12:30 UTC1361
  you need to get the room members, you can use `Room::members` or
7ff8adafe9e4atagen2026-10-22 12:30 UTC1362
  `Room::get_member` which will make sure that the members are up to date.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1363
- The `transaction_id` parameter of `Room::{send, send_raw}` was removed
7ff8adafe9e4atagen2026-10-22 12:30 UTC1364
  - Instead, both methods now return types that implement `IntoFuture` (so can
7ff8adafe9e4atagen2026-10-22 12:30 UTC1365
    be awaited like before) and have a `with_transaction_id` builder-style
7ff8adafe9e4atagen2026-10-22 12:30 UTC1366
    method
7ff8adafe9e4atagen2026-10-22 12:30 UTC1367
- The parameter order of `Room::{send_raw, send_state_event_raw}` has changed,
7ff8adafe9e4atagen2026-10-22 12:30 UTC1368
  `content` is now last
7ff8adafe9e4atagen2026-10-22 12:30 UTC1369
  - The parameter type of `content` has also changed to a generic;
7ff8adafe9e4atagen2026-10-22 12:30 UTC1370
    `serde_json::Value` arguments are still allowed, but so are other types like
7ff8adafe9e4atagen2026-10-22 12:30 UTC1371
    `Box<serde_json::value::RawValue>`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1372
- All "named futures" (structs implementing `IntoFuture`) are now exported from
7ff8adafe9e4atagen2026-10-22 12:30 UTC1373
  modules named `futures` instead of directly in the respective parent module
7ff8adafe9e4atagen2026-10-22 12:30 UTC1374
- `Verification` is non-exhaustive, to make the `qrcode` cargo feature additive
7ff8adafe9e4atagen2026-10-22 12:30 UTC1375
7ff8adafe9e4atagen2026-10-22 12:30 UTC1376
Bug fixes:
7ff8adafe9e4atagen2026-10-22 12:30 UTC1377
7ff8adafe9e4atagen2026-10-22 12:30 UTC1378
- `Client::rooms` now returns all rooms, even invited, as advertised.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1379
7ff8adafe9e4atagen2026-10-22 12:30 UTC1380
Additions:
7ff8adafe9e4atagen2026-10-22 12:30 UTC1381
7ff8adafe9e4atagen2026-10-22 12:30 UTC1382
- Add secret storage support, the secret store can be opened using the
7ff8adafe9e4atagen2026-10-22 12:30 UTC1383
  `Client::encryption()::open_secret_store()` method, which allows you to import
7ff8adafe9e4atagen2026-10-22 12:30 UTC1384
  or export secrets from the account-data backed secret-store.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1385
7ff8adafe9e4atagen2026-10-22 12:30 UTC1386
- Add `VerificationRequest::state` and `VerificationRequest::changes` to check
7ff8adafe9e4atagen2026-10-22 12:30 UTC1387
  and listen to changes in the state of the `VerificationRequest`. This removes
7ff8adafe9e4atagen2026-10-22 12:30 UTC1388
  the need to listen to individual matrix events once the `VerificationRequest`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1389
  object has been acquired.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1390
- The `Room` methods to retrieve state events can now return a sync or stripped
7ff8adafe9e4atagen2026-10-22 12:30 UTC1391
  event, so they can be used for invited rooms too.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1392
- Add `Client::subscribe_to_room_updates` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC1393
  `room::Common::subscribe_to_updates`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1394
- Add `Client::rooms_filtered`
7ff8adafe9e4atagen2026-10-22 12:30 UTC1395
- Add methods on `Client` that can handle several authentication APIs.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1396
- Add new method `force_discard_session` on `Room` that allows to discard the
7ff8adafe9e4atagen2026-10-22 12:30 UTC1397
  current outbound session (room key) for that room. Can be used by clients for
7ff8adafe9e4atagen2026-10-22 12:30 UTC1398
  the `/discardsession` command.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1399
7ff8adafe9e4atagen2026-10-22 12:30 UTC1400
## 0.6.2
7ff8adafe9e4atagen2026-10-22 12:30 UTC1401
7ff8adafe9e4atagen2026-10-22 12:30 UTC1402
- Fix the access token being printed in tracing span fields.
7ff8adafe9e4atagen2026-10-22 12:30 UTC1403
7ff8adafe9e4atagen2026-10-22 12:30 UTC1404
## 0.6.1
7ff8adafe9e4atagen2026-10-22 12:30 UTC1405
7ff8adafe9e4atagen2026-10-22 12:30 UTC1406
- Fixes a bug where the access token used for Matrix requests was added as a
7ff8adafe9e4atagen2026-10-22 12:30 UTC1407
  field to a tracing span.