atagen

matrix-rust-sdk

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

Blame: bindings/matrix-sdk-ffi/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 `RoomInfo::fully_read_event_id` to expose the user's `m.fully_read` event
7ff8adafe9e4atagen2026-10-22 12:30 UTC12
  ID. ([#6569](https://github.com/matrix-org/matrix-rust-sdk/pulls/6569))
7ff8adafe9e4atagen2026-10-22 12:30 UTC13
- Expose `Client::tile_server` on the FFI, returning a `TileServerInfo` record
7ff8adafe9e4atagen2026-10-22 12:30 UTC14
  when the homeserver advertises a map tile server through its matrix client
7ff8adafe9e4atagen2026-10-22 12:30 UTC15
  well-known
7ff8adafe9e4atagen2026-10-22 12:30 UTC16
  ([MSC3488](https://github.com/matrix-org/matrix-spec-proposals/pull/3488)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC17
  The record carries a single `map_style_url` field pointing at a MapLibre
7ff8adafe9e4atagen2026-10-22 12:30 UTC18
  `style.json`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC19
  ([#6610](https://github.com/matrix-org/matrix-rust-sdk/pulls/6610))
7ff8adafe9e4atagen2026-10-22 12:30 UTC20
- Expose `SqliteStoreBuilder::key` to allow clients to specify a key as a
7ff8adafe9e4atagen2026-10-22 12:30 UTC21
  32-bytes array that will be used as is, skipping the key derivation process
7ff8adafe9e4atagen2026-10-22 12:30 UTC22
  and speeding up opening DB connections. Note this should only be used for
7ff8adafe9e4atagen2026-10-22 12:30 UTC23
  truly random values with high entropy, for user-provided passphrases the
7ff8adafe9e4atagen2026-10-22 12:30 UTC24
  `SqliteStoreBuilder::passphrase` function should still be used. Some examples
7ff8adafe9e4atagen2026-10-22 12:30 UTC25
  for the bindings are:
7ff8adafe9e4atagen2026-10-22 12:30 UTC26
7ff8adafe9e4atagen2026-10-22 12:30 UTC27
  Kotlin:
7ff8adafe9e4atagen2026-10-22 12:30 UTC28
7ff8adafe9e4atagen2026-10-22 12:30 UTC29
  ```kotlin
7ff8adafe9e4atagen2026-10-22 12:30 UTC30
  val buffer = ByteArray(size = 32)
7ff8adafe9e4atagen2026-10-22 12:30 UTC31
  SecureRandom().nextBytes(buffer)
7ff8adafe9e4atagen2026-10-22 12:30 UTC32
  return buffer // this now contains the key
7ff8adafe9e4atagen2026-10-22 12:30 UTC33
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC34
7ff8adafe9e4atagen2026-10-22 12:30 UTC35
  Swift:
7ff8adafe9e4atagen2026-10-22 12:30 UTC36
7ff8adafe9e4atagen2026-10-22 12:30 UTC37
  ```swift
7ff8adafe9e4atagen2026-10-22 12:30 UTC38
  var bytes = [UInt8](repeating: 0, count: 32)
7ff8adafe9e4atagen2026-10-22 12:30 UTC39
  SecRandomCopyBytes(kSecRandomDefault, bytes.count, &bytes)
7ff8adafe9e4atagen2026-10-22 12:30 UTC40
  return Data(bytes: bytes) // this now contains the key
7ff8adafe9e4atagen2026-10-22 12:30 UTC41
  ``` ([#6805](https://github.com/matrix-org/matrix-rust-sdk/pulls/6805))
7ff8adafe9e4atagen2026-10-22 12:30 UTC42
7ff8adafe9e4atagen2026-10-22 12:30 UTC43
### Changed
7ff8adafe9e4atagen2026-10-22 12:30 UTC44
7ff8adafe9e4atagen2026-10-22 12:30 UTC45
- [**breaking**] `SpaceRoomList::rooms` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC46
  `SpaceRoomList::subscribe_to_room_updates` are now asynchronous.
7ff8adafe9e4atagen2026-10-22 12:30 UTC47
  ([#6561](https://github.com/matrix-org/matrix-rust-sdk/pulls/6561))
7ff8adafe9e4atagen2026-10-22 12:30 UTC48
- [**breaking**] `Client::set_pusher` now takes an `append: bool` parameter,
7ff8adafe9e4atagen2026-10-22 12:30 UTC49
  forwarded to the homeserver. Pass `true` to keep an existing pusher with the
7ff8adafe9e4atagen2026-10-22 12:30 UTC50
  same `app_id` and `pushkey` registered for other users (e.g. multi-profile
7ff8adafe9e4atagen2026-10-22 12:30 UTC51
  clients on a single device); pass `false` to preserve the previous default
7ff8adafe9e4atagen2026-10-22 12:30 UTC52
  behaviour. ([#6600](https://github.com/matrix-org/matrix-rust-sdk/pulls/6600))
7ff8adafe9e4atagen2026-10-22 12:30 UTC53
7ff8adafe9e4atagen2026-10-22 12:30 UTC54
## [0.17.0] - 2026-05-08
7ff8adafe9e4atagen2026-10-22 12:30 UTC55
7ff8adafe9e4atagen2026-10-22 12:30 UTC56
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC57
7ff8adafe9e4atagen2026-10-22 12:30 UTC58
- Add `Client::set_avatar_url` to manually set the avatar URL of the user to a
7ff8adafe9e4atagen2026-10-22 12:30 UTC59
  provided MXC one.
7ff8adafe9e4atagen2026-10-22 12:30 UTC60
- Allow setting a custom Sliding Sync connection ID and timeline limit on
7ff8adafe9e4atagen2026-10-22 12:30 UTC61
  `RoomListService`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC62
  ([#6289](https://github.com/matrix-org/matrix-rust-sdk/pull/6289))
7ff8adafe9e4atagen2026-10-22 12:30 UTC63
- Fix devices on Android 11 crashing because the SDK could not be initialized
7ff8adafe9e4atagen2026-10-22 12:30 UTC64
  using `libloading` to get a reference to the JVM. Replaced `libloading` with
7ff8adafe9e4atagen2026-10-22 12:30 UTC65
  `jvm-getter`, which works like a compatibility layer.
7ff8adafe9e4atagen2026-10-22 12:30 UTC66
  ([#6370](https://github.com/matrix-org/matrix-rust-sdk/pull/6370))
7ff8adafe9e4atagen2026-10-22 12:30 UTC67
- Added `android_platform.rs` for fixing the `rustls` integration on Android,
7ff8adafe9e4atagen2026-10-22 12:30 UTC68
  which was broken.
7ff8adafe9e4atagen2026-10-22 12:30 UTC69
  ([#6306](https://github.com/matrix-org/matrix-rust-sdk/pull/6306))
7ff8adafe9e4atagen2026-10-22 12:30 UTC70
- [**breaking**] `OtherState` properly supports redacted events that still have
7ff8adafe9e4atagen2026-10-22 12:30 UTC71
  fields in the content. The following fields are no longer optional:
7ff8adafe9e4atagen2026-10-22 12:30 UTC72
  - `federate` in `OtherState::RoomCreate`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC73
  - `history_visibility` in `OtherState::RoomHistoryVisibility`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC74
  - `thresholds` in `OtherState::RoomPowerLevels`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC75
- `omit_checksums` option is now enabled for the Kotlin bindings in all
7ff8adafe9e4atagen2026-10-22 12:30 UTC76
  FFI-exporting crates. We enabled them because with JNA direct mapping enabled
7ff8adafe9e4atagen2026-10-22 12:30 UTC77
  they result in invalid checks in ARM 32bit devices, preventing the SDK from
7ff8adafe9e4atagen2026-10-22 12:30 UTC78
  working altogether (see
7ff8adafe9e4atagen2026-10-22 12:30 UTC79
[this issue](https://github.com/mozilla/uniffi-rs/issues/2740)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC80
([#6069](https://github.com/matrix-org/matrix-rust-sdk/pull/6069),
7ff8adafe9e4atagen2026-10-22 12:30 UTC81
[#6112](https://github.com/matrix-org/matrix-rust-sdk/pull/6112),
7ff8adafe9e4atagen2026-10-22 12:30 UTC82
[#6115](https://github.com/matrix-org/matrix-rust-sdk/pull/6115),
7ff8adafe9e4atagen2026-10-22 12:30 UTC83
[#6116](https://github.com/matrix-org/matrix-rust-sdk/pull/6116)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC84
- `Client::create_room` now uses `RoomPowerLevelsContentOverride` under the hood
7ff8adafe9e4atagen2026-10-22 12:30 UTC85
  instead of `RoomPowerLevelsEventContent` to be able to explicitly set values
7ff8adafe9e4atagen2026-10-22 12:30 UTC86
  which would previously be ignored if they matched the default power level
7ff8adafe9e4atagen2026-10-22 12:30 UTC87
  values specified by the spec: these may not be the same in the homeserver and
7ff8adafe9e4atagen2026-10-22 12:30 UTC88
  result in rooms with incorrect power levels being created.
7ff8adafe9e4atagen2026-10-22 12:30 UTC89
  ([#6034](https://github.com/matrix-org/matrix-rust-sdk/pull/6034))
7ff8adafe9e4atagen2026-10-22 12:30 UTC90
- Fix the `is_last_admin` check in `LeaveSpaceRoom` since it was not
7ff8adafe9e4atagen2026-10-22 12:30 UTC91
  accounting for the membership state.
7ff8adafe9e4atagen2026-10-22 12:30 UTC92
  [#6032](https://github.com/matrix-org/matrix-rust-sdk/pull/6032)
7ff8adafe9e4atagen2026-10-22 12:30 UTC93
- [**breaking**] `LatestEventValue::Local { is_sending: bool }` is replaced
7ff8adafe9e4atagen2026-10-22 12:30 UTC94
  by [`state: LatestEventValueLocalState`] to represent 3 states: `IsSending`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC95
  `HasBeenSent` and `CannotBeSent`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC96
  ([#5968](https://github.com/matrix-org/matrix-rust-sdk/pull/5968/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC97
7ff8adafe9e4atagen2026-10-22 12:30 UTC98
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC99
7ff8adafe9e4atagen2026-10-22 12:30 UTC100
- `RoomNotificationInfo`, `NotificationItem` and `SpaceRoom` now have `is_dm`
7ff8adafe9e4atagen2026-10-22 12:30 UTC101
  fields. ([#6537](https://github.com/matrix-org/matrix-rust-sdk/pull/6537))
7ff8adafe9e4atagen2026-10-22 12:30 UTC102
- Expose `RoomMember::is_service_member` field.
7ff8adafe9e4atagen2026-10-22 12:30 UTC103
  ([#6536](https://github.com/matrix-org/matrix-rust-sdk/pull/6536))
7ff8adafe9e4atagen2026-10-22 12:30 UTC104
- Expose `beacon` and `beacon_info` fields in `RoomPowerLevelsValues` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC105
  `RoomPowerLevelChanges`, allowing clients to read and update the power levels
7ff8adafe9e4atagen2026-10-22 12:30 UTC106
  required to send beacon (live location) message events and beacon info state
7ff8adafe9e4atagen2026-10-22 12:30 UTC107
  events respectively.
7ff8adafe9e4atagen2026-10-22 12:30 UTC108
  ([#6540](https://github.com/matrix-org/matrix-rust-sdk/pull/6540))
7ff8adafe9e4atagen2026-10-22 12:30 UTC109
- Expose `ClientBuilder::dm_room_definition` to customize the DM room definition
7ff8adafe9e4atagen2026-10-22 12:30 UTC110
  used by the `Client`, added `RoomInfo::is_dm` field based on it.
7ff8adafe9e4atagen2026-10-22 12:30 UTC111
  ([#6490](https://github.com/matrix-org/matrix-rust-sdk/pull/6490))
7ff8adafe9e4atagen2026-10-22 12:30 UTC112
- Expose `HumanQrGrantLoginError::Unknown` reason in error message.
7ff8adafe9e4atagen2026-10-22 12:30 UTC113
  ([#6514](https://github.com/matrix-org/matrix-rust-sdk/pull/6514))
7ff8adafe9e4atagen2026-10-22 12:30 UTC114
- Add a list of `declined_by: Vec<String>` to the
7ff8adafe9e4atagen2026-10-22 12:30 UTC115
  `TimelineItemContent::RtcNotification`, this will contain the list of users
7ff8adafe9e4atagen2026-10-22 12:30 UTC116
  that have declined the call.
7ff8adafe9e4atagen2026-10-22 12:30 UTC117
  ([#6494](https://github.com/matrix-org/matrix-rust-sdk/pull/6494))
7ff8adafe9e4atagen2026-10-22 12:30 UTC118
- Add `RoomInfo::active_service_members_count` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC119
  `NotificationRoomInfo::active_service_members_count`, returning the amount of
7ff8adafe9e4atagen2026-10-22 12:30 UTC120
  service members that are part of the room.
7ff8adafe9e4atagen2026-10-22 12:30 UTC121
  ([#6483](https://github.com/matrix-org/matrix-rust-sdk/pull/6483))
7ff8adafe9e4atagen2026-10-22 12:30 UTC122
- Add `Client::get_dm_rooms` function to get a list with the DMs for the
7ff8adafe9e4atagen2026-10-22 12:30 UTC123
  provided user id.
7ff8adafe9e4atagen2026-10-22 12:30 UTC124
  ([#6487](https://github.com/matrix-org/matrix-rust-sdk/pull/6487))
7ff8adafe9e4atagen2026-10-22 12:30 UTC125
- Expose `ffi::NotificationRoomInfo::service_members` so clients can use the
7ff8adafe9e4atagen2026-10-22 12:30 UTC126
  list of service members to calculate if a room is a DM from the notification
7ff8adafe9e4atagen2026-10-22 12:30 UTC127
  info. ([#6474](https://github.com/matrix-org/matrix-rust-sdk/pull/6474))
7ff8adafe9e4atagen2026-10-22 12:30 UTC128
- Enable `experimental-push-secrets` feature by default.
7ff8adafe9e4atagen2026-10-22 12:30 UTC129
  ([#6473](https://github.com/matrix-org/matrix-rust-sdk/pull/6394))
7ff8adafe9e4atagen2026-10-22 12:30 UTC130
- Add new high-level search helpers `RoomSearchIterator` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC131
  `GlobalSearchIterator` to perform searches for messages in a room or across
7ff8adafe9e4atagen2026-10-22 12:30 UTC132
  all rooms. ([6394](https://github.com/matrix-org/matrix-rust-sdk/pull/6394))
7ff8adafe9e4atagen2026-10-22 12:30 UTC133
- Added the `Client.request_openid_token()` method.
7ff8adafe9e4atagen2026-10-22 12:30 UTC134
  ([#6458](https://github.com/matrix-org/matrix-rust-sdk/pull/6458))
7ff8adafe9e4atagen2026-10-22 12:30 UTC135
- Added the `Client::import_secrets_bundle` method.
7ff8adafe9e4atagen2026-10-22 12:30 UTC136
  ([#6212](https://github.com/matrix-org/matrix-rust-sdk/pull/6212))
7ff8adafe9e4atagen2026-10-22 12:30 UTC137
- [**breaking**] Remove support for `native-tls` and remove all feature
7ff8adafe9e4atagen2026-10-22 12:30 UTC138
  flags for selecting TLS backend, as `rustls` is the now the only supported
7ff8adafe9e4atagen2026-10-22 12:30 UTC139
  TLS backend.
7ff8adafe9e4atagen2026-10-22 12:30 UTC140
  ([#6409](https://github.com/matrix-org/matrix-rust-sdk/pull/6409))
7ff8adafe9e4atagen2026-10-22 12:30 UTC141
- Expose `event_type_raw` and `latest_json()` on `EventTimelineItem`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC142
  allowing clients to access the raw event type string and full event JSON for
7ff8adafe9e4atagen2026-10-22 12:30 UTC143
  custom event handling without pattern-matching through nested enums.
7ff8adafe9e4atagen2026-10-22 12:30 UTC144
  ([#6387](https://github.com/matrix-org/matrix-rust-sdk/pull/6387))
7ff8adafe9e4atagen2026-10-22 12:30 UTC145
  ([#6424](https://github.com/matrix-org/matrix-rust-sdk/pull/6424))
7ff8adafe9e4atagen2026-10-22 12:30 UTC146
- Expose sync v2 API through FFI via `Client.sync_v2()` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC147
  `Client.sync_once_v2()`, enabling mobile clients to sync without
7ff8adafe9e4atagen2026-10-22 12:30 UTC148
  requiring Sliding Sync support on the homeserver. `Client.sync_v2()`
7ff8adafe9e4atagen2026-10-22 12:30 UTC149
  accepts a `SyncListenerV2` callback that receives a `SyncResponseV2`
7ff8adafe9e4atagen2026-10-22 12:30 UTC150
  after each successful sync.
7ff8adafe9e4atagen2026-10-22 12:30 UTC151
  ([#6359](https://github.com/matrix-org/matrix-rust-sdk/pull/6359))
7ff8adafe9e4atagen2026-10-22 12:30 UTC152
- Added `HomeserverCapabilities` and `Client::homeserver_capabilities()` to get
7ff8adafe9e4atagen2026-10-22 12:30 UTC153
  the capabilities of the homeserver.
7ff8adafe9e4atagen2026-10-22 12:30 UTC154
  ([#6371](https://github.com/matrix-org/matrix-rust-sdk/pull/6371))
7ff8adafe9e4atagen2026-10-22 12:30 UTC155
- Expose `Room.send_state_event_raw()` for sending arbitrary state events
7ff8adafe9e4atagen2026-10-22 12:30 UTC156
  through the FFI layer.
7ff8adafe9e4atagen2026-10-22 12:30 UTC157
  ([#6350](https://github.com/matrix-org/matrix-rust-sdk/pull/6350))
7ff8adafe9e4atagen2026-10-22 12:30 UTC158
- Introduce a `ThreadListService` which offers reactive interfaces for rendering
7ff8adafe9e4atagen2026-10-22 12:30 UTC159
  and managing the list of threads from a particular room.
7ff8adafe9e4atagen2026-10-22 12:30 UTC160
  ([6311](https://github.com/matrix-org/matrix-rust-sdk/pull/6311))
7ff8adafe9e4atagen2026-10-22 12:30 UTC161
- [**breaking**] Move `LiveLocation` out of `TimelineItemContent` and into
7ff8adafe9e4atagen2026-10-22 12:30 UTC162
  `MsgLikeKind` so it has access to `MsgLikeContent` `reactions`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC163
  ([#6286](https://github.com/matrix-org/matrix-rust-sdk/pull/6286))
7ff8adafe9e4atagen2026-10-22 12:30 UTC164
- Add `HumanQrLoginError::UnsupportedQrCodeType` for when a QR is parseable but
7ff8adafe9e4atagen2026-10-22 12:30 UTC165
  cannot be used to complete a login.
7ff8adafe9e4atagen2026-10-22 12:30 UTC166
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6285)
7ff8adafe9e4atagen2026-10-22 12:30 UTC167
- Add `HumanQrGrantLoginError::UnsupportedQrCodeType` for when a QR is parseable
7ff8adafe9e4atagen2026-10-22 12:30 UTC168
  but cannot be used to grant a login.
7ff8adafe9e4atagen2026-10-22 12:30 UTC169
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6285)
7ff8adafe9e4atagen2026-10-22 12:30 UTC170
- Add the `QrCodeData::base_url` and `QrCodeData::intent` methods.
7ff8adafe9e4atagen2026-10-22 12:30 UTC171
  ([#6283](https://github.com/matrix-org/matrix-rust-sdk/pull/6283))
7ff8adafe9e4atagen2026-10-22 12:30 UTC172
- Add `Encryption::recover_and_fix_backup` to automatically fix key storage
7ff8adafe9e4atagen2026-10-22 12:30 UTC173
  backup if the private backup decryption key is missing, invalid or
7ff8adafe9e4atagen2026-10-22 12:30 UTC174
  inconsistent with the public key.
7ff8adafe9e4atagen2026-10-22 12:30 UTC175
  ([#6252](https://github.com/matrix-org/matrix-rust-sdk/pull/6252))
7ff8adafe9e4atagen2026-10-22 12:30 UTC176
- Add support for
7ff8adafe9e4atagen2026-10-22 12:30 UTC177
  [MSC3489](https://github.com/matrix-org/matrix-spec-proposals/pull/3489)  
7ff8adafe9e4atagen2026-10-22 12:30 UTC178
  live location sharing through a new `TimelineItemContent::LiveLocation`
7ff8adafe9e4atagen2026-10-22 12:30 UTC179
  variant. ([#6232](https://github.com/matrix-org/matrix-rust-sdk/pull/6232))
7ff8adafe9e4atagen2026-10-22 12:30 UTC180
- Add `HumanQrGrantLoginError::ConnectionInsecure` for errors establishing the
7ff8adafe9e4atagen2026-10-22 12:30 UTC181
  secure channel
7ff8adafe9e4atagen2026-10-22 12:30 UTC182
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC183
- Add `HumanQrGrantLoginError::Expired` for when a timeout is encountered during
7ff8adafe9e4atagen2026-10-22 12:30 UTC184
  the grant ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC185
- Add `HumanQrGrantLoginError::Cancelled` for when the grant is cancelled
7ff8adafe9e4atagen2026-10-22 12:30 UTC186
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC187
- Add `HumanQrGrantLoginError::OtherDeviceAlreadySignedIn` for when the other
7ff8adafe9e4atagen2026-10-22 12:30 UTC188
  device is already signed in
7ff8adafe9e4atagen2026-10-22 12:30 UTC189
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC190
- Add `HumanQrGrantLoginError::DeviceNotFound` for when the requested device was
7ff8adafe9e4atagen2026-10-22 12:30 UTC191
  not returned by the homeserver
7ff8adafe9e4atagen2026-10-22 12:30 UTC192
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC193
- Add `RoomInfo::is_low_priority` for getting the room's `m.lowpriority` tag
7ff8adafe9e4atagen2026-10-22 12:30 UTC194
  state ([#6183](https://github.com/matrix-org/matrix-rust-sdk/pull/6183))
7ff8adafe9e4atagen2026-10-22 12:30 UTC195
- Add `Client::subscribe_to_duplicate_key_upload_errors` for listening to
7ff8adafe9e4atagen2026-10-22 12:30 UTC196
  duplicate key upload errors from `/keys/upload`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC197
  ([#6135](https://github.com/matrix-org/matrix-rust-sdk/pull/6135/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC198
- Add `NotificationItem::raw_event` to get the raw event content of the event
7ff8adafe9e4atagen2026-10-22 12:30 UTC199
  that triggered the notification, which can be useful for debugging and to
7ff8adafe9e4atagen2026-10-22 12:30 UTC200
  support clients that want to implement custom handling for certain
7ff8adafe9e4atagen2026-10-22 12:30 UTC201
  notifications.
7ff8adafe9e4atagen2026-10-22 12:30 UTC202
  ([#6122](https://github.com/matrix-org/matrix-rust-sdk/pull/6122))
7ff8adafe9e4atagen2026-10-22 12:30 UTC203
- [**breaking**] Extend `TimelineFocus::Event` to allow marking the target
7ff8adafe9e4atagen2026-10-22 12:30 UTC204
  event as the root of a thread.
7ff8adafe9e4atagen2026-10-22 12:30 UTC205
  [#6050](https://github.com/matrix-org/matrix-rust-sdk/pull/6050)
7ff8adafe9e4atagen2026-10-22 12:30 UTC206
- [**breaking**] Remove `TimelineFilter::EventTypeFilter` which has been
7ff8adafe9e4atagen2026-10-22 12:30 UTC207
  replaced by the more generic `TimelineFilter::EventFilter`. Users of
7ff8adafe9e4atagen2026-10-22 12:30 UTC208
  `TimelineEventTypeFilter::include` and `TimelineEventTypeFilter::exclude` can
7ff8adafe9e4atagen2026-10-22 12:30 UTC209
  switch to `TimelineEventFilter::include_event_types` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC210
  `TimelineEventFilter::exclude_event_types`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC211
  ([#6070](https://github.com/matrix-org/matrix-rust-sdk/pull/6070/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC212
- Add `TimelineFilter::EventFilter` for filtering events based on their type or
7ff8adafe9e4atagen2026-10-22 12:30 UTC213
  content. For content filtering, only membership and profile change filters
7ff8adafe9e4atagen2026-10-22 12:30 UTC214
  are available as of now.
7ff8adafe9e4atagen2026-10-22 12:30 UTC215
  ([#6048](https://github.com/matrix-org/matrix-rust-sdk/pull/6048/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC216
- Introduce `SpaceFilter`s as a mechanism for narrowing down what's displayed in
7ff8adafe9e4atagen2026-10-22 12:30 UTC217
  the room list
7ff8adafe9e4atagen2026-10-22 12:30 UTC218
  ([#6025](https://github.com/matrix-org/matrix-rust-sdk/pull/6025))
7ff8adafe9e4atagen2026-10-22 12:30 UTC219
- Expose room power level thresholds in `OtherState::RoomPowerLevels` (ban,
7ff8adafe9e4atagen2026-10-22 12:30 UTC220
  kick, invite, redact, state & events defaults, per-event overrides,
7ff8adafe9e4atagen2026-10-22 12:30 UTC221
  notifications), so clients can compute the required power level for actions
7ff8adafe9e4atagen2026-10-22 12:30 UTC222
  and compare with previous values.
7ff8adafe9e4atagen2026-10-22 12:30 UTC223
  ([#5931](https://github.com/matrix-org/matrix-rust-sdk/pull/5931))
7ff8adafe9e4atagen2026-10-22 12:30 UTC224
- Add `RoomCreationParameters::is_space` parameter to be able to create spaces.
7ff8adafe9e4atagen2026-10-22 12:30 UTC225
  ([#6010](https://github.com/matrix-org/matrix-rust-sdk/pull/6010/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC226
- [**breaking**] `LazyTimelineItemProvider::get_shields` no longer returns an an
7ff8adafe9e4atagen2026-10-22 12:30 UTC227
  `Option`: the `ShieldState` type contains a `None` variant, so the `Option`
7ff8adafe9e4atagen2026-10-22 12:30 UTC228
  was redundant. The `message` field has also been removed: since there was no
7ff8adafe9e4atagen2026-10-22 12:30 UTC229
  way to localise the returned string, applications should not be using it.
7ff8adafe9e4atagen2026-10-22 12:30 UTC230
  ([#5959](https://github.com/matrix-org/matrix-rust-sdk/pull/5959))
7ff8adafe9e4atagen2026-10-22 12:30 UTC231
- Add `Room::list_threads` to list all the threads in a room.
7ff8adafe9e4atagen2026-10-22 12:30 UTC232
  ([#5953](https://github.com/matrix-org/matrix-rust-sdk/pull/5953))
7ff8adafe9e4atagen2026-10-22 12:30 UTC233
- Add `SpaceService::get_space_room` to get a space given its id from the space
7ff8adafe9e4atagen2026-10-22 12:30 UTC234
  graph if available.
7ff8adafe9e4atagen2026-10-22 12:30 UTC235
[#5944](https://github.com/matrix-org/matrix-rust-sdk/pull/5944)
7ff8adafe9e4atagen2026-10-22 12:30 UTC236
- Add `QrCodeData::to_bytes()` to allow generation of a QR code.
7ff8adafe9e4atagen2026-10-22 12:30 UTC237
  ([#5939](https://github.com/matrix-org/matrix-rust-sdk/pull/5939))
7ff8adafe9e4atagen2026-10-22 12:30 UTC238
- [**breaking**]: The new Latest Event API replaces the old API.
7ff8adafe9e4atagen2026-10-22 12:30 UTC239
  `Room::new_latest_event` overwrites the `Room::latest_event` method. See the
7ff8adafe9e4atagen2026-10-22 12:30 UTC240
  documentation of `matrix_sdk::latest_event` to learn about the new API.
7ff8adafe9e4atagen2026-10-22 12:30 UTC241
  [#5624](https://github.com/matrix-org/matrix-rust-sdk/pull/5624/)
7ff8adafe9e4atagen2026-10-22 12:30 UTC242
- Created `RoomPowerLevels::events` function which returns a
7ff8adafe9e4atagen2026-10-22 12:30 UTC243
  `HashMap<TimelineEventType, i64>` with all the power levels per event type.
7ff8adafe9e4atagen2026-10-22 12:30 UTC244
  ([#5937](https://github.com/matrix-org/matrix-rust-sdk/pull/5937))
7ff8adafe9e4atagen2026-10-22 12:30 UTC245
- Expose `EventTimelineItem::forwarder` and `forwarder_profile`, which, if
7ff8adafe9e4atagen2026-10-22 12:30 UTC246
  present, provide the ID and profile of the user who forwarded the keys used to
7ff8adafe9e4atagen2026-10-22 12:30 UTC247
  decrypt the event as part of an
7ff8adafe9e4atagen2026-10-22 12:30 UTC248
  [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) key
7ff8adafe9e4atagen2026-10-22 12:30 UTC249
  bundle. ([#6000](https://github.com/matrix-org/matrix-rust-sdk/pull/6000))
7ff8adafe9e4atagen2026-10-22 12:30 UTC250
- Add `NonFavorite` filter to the Room List API.
7ff8adafe9e4atagen2026-10-22 12:30 UTC251
  ([#5991](https://github.com/matrix-org/matrix-rust-sdk/pull/5991)
7ff8adafe9e4atagen2026-10-22 12:30 UTC252
- Add `call_intent` (either `RtcCallIntent::Audio` or `RtcCallIntent::Video`)
7ff8adafe9e4atagen2026-10-22 12:30 UTC253
  field to `RtcNotification` event content.
7ff8adafe9e4atagen2026-10-22 12:30 UTC254
  ([#6207](https://github.com/matrix-org/matrix-rust-sdk/pull/6207))
7ff8adafe9e4atagen2026-10-22 12:30 UTC255
- Add `RoomInfo::active_room_call_consensus_intent` method to get the call
7ff8adafe9e4atagen2026-10-22 12:30 UTC256
  intent for the current call, based on what members are advertising.
7ff8adafe9e4atagen2026-10-22 12:30 UTC257
  ([#6274](https://github.com/matrix-org/matrix-rust-sdk/pull/6274))
7ff8adafe9e4atagen2026-10-22 12:30 UTC258
7ff8adafe9e4atagen2026-10-22 12:30 UTC259
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC260
7ff8adafe9e4atagen2026-10-22 12:30 UTC261
- [**breaking**] All OIDC related types and functions have been renamed from
7ff8adafe9e4atagen2026-10-22 12:30 UTC262
  `Oidc`/`oidc` to `OAuth`/`oauth` to align with the finalised naming in the
7ff8adafe9e4atagen2026-10-22 12:30 UTC263
  spec. ([#6500](https://github.com/matrix-org/matrix-rust-sdk/pull/6500))
7ff8adafe9e4atagen2026-10-22 12:30 UTC264
- [**breaking**] `LiveLocationShares` has been renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC265
  `LiveLocationsObserver` and `Room::live_location_shares` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC266
  `Room::live_locations_observer`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC267
  ([#6446](https://github.com/matrix-org/matrix-rust-sdk/pull/6446))
7ff8adafe9e4atagen2026-10-22 12:30 UTC268
- [**breaking**] `Room::observe_live_location_shares` has been replaced by
7ff8adafe9e4atagen2026-10-22 12:30 UTC269
  `Room::live_locations_observer`. Call [`LiveLocationsObserver::subscribe`] on
7ff8adafe9e4atagen2026-10-22 12:30 UTC270
  it to receive an initial snapshot and a stream of incremental updates.The
7ff8adafe9e4atagen2026-10-22 12:30 UTC271
  stream is seeded from the event cache on creation and includes the own user's
7ff8adafe9e4atagen2026-10-22 12:30 UTC272
  shares (previously excluded). `LiveLocationShare.is_live` has been removed;
7ff8adafe9e4atagen2026-10-22 12:30 UTC273
  instead `ts` (start timestamp) and `timeout` (duration in milliseconds) are
7ff8adafe9e4atagen2026-10-22 12:30 UTC274
  now exposed so clients can compute liveness themselves via
7ff8adafe9e4atagen2026-10-22 12:30 UTC275
  `current_time < ts + timeout`. Non-live shares are automatically removed from
7ff8adafe9e4atagen2026-10-22 12:30 UTC276
  the list. A new `LiveLocationShareListener` callback interface must be
7ff8adafe9e4atagen2026-10-22 12:30 UTC277
  implemented and passed to the method.
7ff8adafe9e4atagen2026-10-22 12:30 UTC278
  ([#6385](https://github.com/matrix-org/matrix-rust-sdk/pull/6385))
7ff8adafe9e4atagen2026-10-22 12:30 UTC279
- [**breaking**] The `RoomAliases` variants of `StateEventContent`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC280
  `StateEventType` and `OtherState` was removed. This state event type was
7ff8adafe9e4atagen2026-10-22 12:30 UTC281
  removed from the Matrix specification a while ago, and support for it has been
7ff8adafe9e4atagen2026-10-22 12:30 UTC282
  removed in Ruma.
7ff8adafe9e4atagen2026-10-22 12:30 UTC283
  ([#6414](https://github.com/matrix-org/matrix-rust-sdk/pull/6414))
7ff8adafe9e4atagen2026-10-22 12:30 UTC284
- `Client::new` no longer unnecessarily instantiates an `OAuth` component if
7ff8adafe9e4atagen2026-10-22 12:30 UTC285
  `CrossProcessLockConfig::SingleProcess` is used.
7ff8adafe9e4atagen2026-10-22 12:30 UTC286
  ([#6293](https://github.com/matrix-org/matrix-rust-sdk/pull/6293))
7ff8adafe9e4atagen2026-10-22 12:30 UTC287
- [**breaking**] `Room::report_content()` no longer takes a `score` argument,
7ff8adafe9e4atagen2026-10-22 12:30 UTC288
  because it was removed from the Matrix specification.
7ff8adafe9e4atagen2026-10-22 12:30 UTC289
  ([#6256](https://github.com/matrix-org/matrix-rust-sdk/pull/6256))
7ff8adafe9e4atagen2026-10-22 12:30 UTC290
- [**breaking**] The `current_version` field of
7ff8adafe9e4atagen2026-10-22 12:30 UTC291
  `ErrorKind::WrongRoomKeysVersion` is no longer optional.
7ff8adafe9e4atagen2026-10-22 12:30 UTC292
  ([#6241](https://github.com/matrix-org/matrix-rust-sdk/pull/6241))
7ff8adafe9e4atagen2026-10-22 12:30 UTC293
- [**breaking**] The following variants of `AccountManagementAction` were
7ff8adafe9e4atagen2026-10-22 12:30 UTC294
  renamed to match their new names after being merge in the Matrix
7ff8adafe9e4atagen2026-10-22 12:30 UTC295
  specification:
7ff8adafe9e4atagen2026-10-22 12:30 UTC296
  - `SessionsList` is renamed to `DevicesList`
7ff8adafe9e4atagen2026-10-22 12:30 UTC297
  - `SessionView` is renamed to `DeviceView`
7ff8adafe9e4atagen2026-10-22 12:30 UTC298
  - `SessionEnd` is renamed to `DeviceDelete`
7ff8adafe9e4atagen2026-10-22 12:30 UTC299
  ([#6217](https://github.com/matrix-org/matrix-rust-sdk/pull/6217))
7ff8adafe9e4atagen2026-10-22 12:30 UTC300
- [**breaking**] `HumanQrGrantLoginError::UnableToCreateDevice` has been removed
7ff8adafe9e4atagen2026-10-22 12:30 UTC301
  ([#6141](https://github.com/matrix-org/matrix-rust-sdk/pull/6141)
7ff8adafe9e4atagen2026-10-22 12:30 UTC302
- [**breaking**] Removed `ClientBuilder::enable_oidc_refresh_lock` in favour of
7ff8adafe9e4atagen2026-10-22 12:30 UTC303
  using `ClientBuilder::cross_process_lock_config` to configure that lock when a
7ff8adafe9e4atagen2026-10-22 12:30 UTC304
  `MultiProcess` configuration is supplied.
7ff8adafe9e4atagen2026-10-22 12:30 UTC305
  ([#6204](https://github.com/matrix-org/matrix-rust-sdk/pull/6204))
7ff8adafe9e4atagen2026-10-22 12:30 UTC306
- `RoomPaginationStatus` is renamed to `PaginationStatus`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC307
  ([#6174](https://github.com/matrix-org/matrix-rust-sdk/pull/6174/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC308
- [**breaking**] Replaced `ClientBuilder::cross_process_store_locks_holder_name`
7ff8adafe9e4atagen2026-10-22 12:30 UTC309
  with `ClientBuilder::cross_process_lock_config`, which accepts a
7ff8adafe9e4atagen2026-10-22 12:30 UTC310
  `CrossProcessLockConfig` value to specify whether the resulting `Client` will
7ff8adafe9e4atagen2026-10-22 12:30 UTC311
  be used in a single process or multiple processes.
7ff8adafe9e4atagen2026-10-22 12:30 UTC312
  ([#6160](https://github.com/matrix-org/matrix-rust-sdk/pull/6160))
7ff8adafe9e4atagen2026-10-22 12:30 UTC313
- [**breaking**] Refactored `is_last_admin` to `is_last_owner` the check will
7ff8adafe9e4atagen2026-10-22 12:30 UTC314
  now account also for v12 rooms, where creators and users with PL 150 matter.
7ff8adafe9e4atagen2026-10-22 12:30 UTC315
  ([#6036](https://github.com/matrix-org/matrix-rust-sdk/pull/6036))
7ff8adafe9e4atagen2026-10-22 12:30 UTC316
- [**breaking**] The existing `TimelineEventType` was renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC317
  `TimelineEventContent`, because it contained the actual contents of the event.
7ff8adafe9e4atagen2026-10-22 12:30 UTC318
  Then, we created a new `TimelineEventType` enum that actually contains _just_
7ff8adafe9e4atagen2026-10-22 12:30 UTC319
  the event type.
7ff8adafe9e4atagen2026-10-22 12:30 UTC320
  ([#5937](https://github.com/matrix-org/matrix-rust-sdk/pull/5937))
7ff8adafe9e4atagen2026-10-22 12:30 UTC321
- [**breaking**] The function `TimelineEvent::event_type` is now
7ff8adafe9e4atagen2026-10-22 12:30 UTC322
  `TimelineEvent::content`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC323
  ([#5937](https://github.com/matrix-org/matrix-rust-sdk/pull/5937))
7ff8adafe9e4atagen2026-10-22 12:30 UTC324
- [**breaking**] The `SpaceService` will no longer auto-subscribe to required
7ff8adafe9e4atagen2026-10-22 12:30 UTC325
  client events when invoking the `subscribe_to_joined_spaces` but instead do it
7ff8adafe9e4atagen2026-10-22 12:30 UTC326
  through its, now async, constructor.
7ff8adafe9e4atagen2026-10-22 12:30 UTC327
  ([#5972](https://github.com/matrix-org/matrix-rust-sdk/pull/5972))
7ff8adafe9e4atagen2026-10-22 12:30 UTC328
- [**breaking**] The `SpaceService`'s `joined_spaces` method has been renamed
7ff8adafe9e4atagen2026-10-22 12:30 UTC329
  `top_level_joined_spaces` and `subscribe_to_joined_spaces` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC330
  `space_service.subscribe_to_top_level_joined_spaces`
7ff8adafe9e4atagen2026-10-22 12:30 UTC331
  ([#5972](https://github.com/matrix-org/matrix-rust-sdk/pull/5972))
7ff8adafe9e4atagen2026-10-22 12:30 UTC332
7ff8adafe9e4atagen2026-10-22 12:30 UTC333
## [0.16.1] - 2026-05-08
7ff8adafe9e4atagen2026-10-22 12:30 UTC334
7ff8adafe9e4atagen2026-10-22 12:30 UTC335
No notable changes in this release.
7ff8adafe9e4atagen2026-10-22 12:30 UTC336
7ff8adafe9e4atagen2026-10-22 12:30 UTC337
## [0.16.0] - 2025-12-04
7ff8adafe9e4atagen2026-10-22 12:30 UTC338
7ff8adafe9e4atagen2026-10-22 12:30 UTC339
### Breaking changes
7ff8adafe9e4atagen2026-10-22 12:30 UTC340
7ff8adafe9e4atagen2026-10-22 12:30 UTC341
- `TimelineConfiguration::track_read_receipts`'s type is now an enum to allow
7ff8adafe9e4atagen2026-10-22 12:30 UTC342
  tracking to be enabled for all events (like before) or only for message-like
7ff8adafe9e4atagen2026-10-22 12:30 UTC343
  events (which prevents read receipts from being placed on state events).
7ff8adafe9e4atagen2026-10-22 12:30 UTC344
  ([#5900](https://github.com/matrix-org/matrix-rust-sdk/pull/5900))
7ff8adafe9e4atagen2026-10-22 12:30 UTC345
- `Client::reset_server_info()` has been split into `reset_supported_versions()`
7ff8adafe9e4atagen2026-10-22 12:30 UTC346
  and `reset_well_known()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC347
  ([#5910](https://github.com/matrix-org/matrix-rust-sdk/pull/5910))
7ff8adafe9e4atagen2026-10-22 12:30 UTC348
- Add `HumanQrLoginError::NotFound` for non-existing / expired rendezvous
7ff8adafe9e4atagen2026-10-22 12:30 UTC349
  sessions ([#5898](https://github.com/matrix-org/matrix-rust-sdk/pull/5898))
7ff8adafe9e4atagen2026-10-22 12:30 UTC350
- Add `HumanQrGrantLoginError::NotFound` for non-existing / expired rendezvous
7ff8adafe9e4atagen2026-10-22 12:30 UTC351
  sessions ([#5898](https://github.com/matrix-org/matrix-rust-sdk/pull/5898))
7ff8adafe9e4atagen2026-10-22 12:30 UTC352
- The `LatestEventValue::Local` type gains 2 new fields: `sender` and `profile`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC353
  ([#5885](https://github.com/matrix-org/matrix-rust-sdk/pull/5885))
7ff8adafe9e4atagen2026-10-22 12:30 UTC354
- The `Encryption::user_identity()` method has received a new argument. The
7ff8adafe9e4atagen2026-10-22 12:30 UTC355
  `fallback_to_server` argument controls if we should attempt to fetch the user
7ff8adafe9e4atagen2026-10-22 12:30 UTC356
  identity from the homeserver if it wasn't found in the local storage.
7ff8adafe9e4atagen2026-10-22 12:30 UTC357
  ([#5870](https://github.com/matrix-org/matrix-rust-sdk/pull/5870))
7ff8adafe9e4atagen2026-10-22 12:30 UTC358
- Expose the power level required to modify `m.space.child` on
7ff8adafe9e4atagen2026-10-22 12:30 UTC359
  `room::power_levels::RoomPowerLevelsValues`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC360
- Rename `Client::login_with_qr_code` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC361
  `Client::new_login_with_qr_code_handler`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC362
  ([#5836](https://github.com/matrix-org/matrix-rust-sdk/pull/5836))
7ff8adafe9e4atagen2026-10-22 12:30 UTC363
- Add the `sqlite` feature, along with the `indexeddb` feature, to enable either
7ff8adafe9e4atagen2026-10-22 12:30 UTC364
  the SQLite or IndexedDB store. The `session_paths`, `session_passphrase`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC365
  `session_pool_max_size`, `session_cache_size` and `session_journal_size_limit`
7ff8adafe9e4atagen2026-10-22 12:30 UTC366
  methods on `ClientBuilder` have been removed. New methods are added:
7ff8adafe9e4atagen2026-10-22 12:30 UTC367
  `ClientBuilder::in_memory_store` if one wants non-persistent stores,
7ff8adafe9e4atagen2026-10-22 12:30 UTC368
  `ClientBuilder::sqlite_store` to configure and to use SQLite stores (if
7ff8adafe9e4atagen2026-10-22 12:30 UTC369
  the `sqlite` feature is enabled), and `ClientBuilder::indexeddb_store` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC370
  configure and to use IndexedDB stores (if the `indexeddb` feature is enabled).
7ff8adafe9e4atagen2026-10-22 12:30 UTC371
  ([#5811](https://github.com/matrix-org/matrix-rust-sdk/pull/5811))
7ff8adafe9e4atagen2026-10-22 12:30 UTC372
7ff8adafe9e4atagen2026-10-22 12:30 UTC373
  The code:
7ff8adafe9e4atagen2026-10-22 12:30 UTC374
7ff8adafe9e4atagen2026-10-22 12:30 UTC375
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC376
  client_builder
7ff8adafe9e4atagen2026-10-22 12:30 UTC377
      .session_paths("data_path", "cache_path")
7ff8adafe9e4atagen2026-10-22 12:30 UTC378
      .passphrase("foobar")
7ff8adafe9e4atagen2026-10-22 12:30 UTC379
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC380
7ff8adafe9e4atagen2026-10-22 12:30 UTC381
  now becomes:
7ff8adafe9e4atagen2026-10-22 12:30 UTC382
7ff8adafe9e4atagen2026-10-22 12:30 UTC383
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC384
  client_builder
7ff8adafe9e4atagen2026-10-22 12:30 UTC385
      .sqlite_store(
7ff8adafe9e4atagen2026-10-22 12:30 UTC386
          SqliteSessionStoreBuilder::new("data_path", "cache_path")
7ff8adafe9e4atagen2026-10-22 12:30 UTC387
              .passphrase("foobar")
7ff8adafe9e4atagen2026-10-22 12:30 UTC388
      )
7ff8adafe9e4atagen2026-10-22 12:30 UTC389
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC390
7ff8adafe9e4atagen2026-10-22 12:30 UTC391
- UniFFI was upgraded to `v0.30.0`
7ff8adafe9e4atagen2026-10-22 12:30 UTC392
  ([#5808](https://github.com/matrix-org/matrix-rust-sdk/pull/5808)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC393
- The `waveform` parameter in `Timeline::send_voice_message` format changed to a
7ff8adafe9e4atagen2026-10-22 12:30 UTC394
  list of `f32` between 0 and 1.
7ff8adafe9e4atagen2026-10-22 12:30 UTC395
  ([#5732](https://github.com/matrix-org/matrix-rust-sdk/pull/5732))
7ff8adafe9e4atagen2026-10-22 12:30 UTC396
- The `normalized_power_level` field has been removed from the `RoomMember`
7ff8adafe9e4atagen2026-10-22 12:30 UTC397
  struct.
7ff8adafe9e4atagen2026-10-22 12:30 UTC398
  ([#5635](https://github.com/matrix-org/matrix-rust-sdk/pull/5635))
7ff8adafe9e4atagen2026-10-22 12:30 UTC399
- Remove the deprecated `CallNotify` event (`org.matrix.msc4075.call.notify`) in
7ff8adafe9e4atagen2026-10-22 12:30 UTC400
  favor of the new `RtcNotification` event
7ff8adafe9e4atagen2026-10-22 12:30 UTC401
  (`org.matrix.msc4075.rtc.notification`).
7ff8adafe9e4atagen2026-10-22 12:30 UTC402
  ([#5668](https://github.com/matrix-org/matrix-rust-sdk/pull/5668))
7ff8adafe9e4atagen2026-10-22 12:30 UTC403
- Add `QrLoginProgress::SyncingSecrets` to indicate that secrets are being
7ff8adafe9e4atagen2026-10-22 12:30 UTC404
  synced between the two devices.
7ff8adafe9e4atagen2026-10-22 12:30 UTC405
  ([#5760](https://github.com/matrix-org/matrix-rust-sdk/pull/5760))
7ff8adafe9e4atagen2026-10-22 12:30 UTC406
- Add `Room::subscribe_to_send_queue_updates` to observe room send queue
7ff8adafe9e4atagen2026-10-22 12:30 UTC407
  updates. ([#5761](https://github.com/matrix-org/matrix-rust-sdk/pull/5761))
7ff8adafe9e4atagen2026-10-22 12:30 UTC408
- `Client::login_with_qr_code` now returns a handler that allows performing the
7ff8adafe9e4atagen2026-10-22 12:30 UTC409
  flow with either the current device scanning or generating the QR code.
7ff8adafe9e4atagen2026-10-22 12:30 UTC410
  Additionally, new errors `HumanQrLoginError::CheckCodeAlreadySent` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC411
  `HumanQrLoginError::CheckCodeCannotBeSent` were added.
7ff8adafe9e4atagen2026-10-22 12:30 UTC412
  ([#5786](https://github.com/matrix-org/matrix-rust-sdk/pull/5786))
7ff8adafe9e4atagen2026-10-22 12:30 UTC413
- `ComposerDraft` now includes attachments alongside the text message.
7ff8adafe9e4atagen2026-10-22 12:30 UTC414
  ([#5794](https://github.com/matrix-org/matrix-rust-sdk/pull/5794))
7ff8adafe9e4atagen2026-10-22 12:30 UTC415
- Add `Client::subscribe_to_send_queue_updates` to observe global send queue
7ff8adafe9e4atagen2026-10-22 12:30 UTC416
  updates. ([#5784](https://github.com/matrix-org/matrix-rust-sdk/pull/5784))
7ff8adafe9e4atagen2026-10-22 12:30 UTC417
7ff8adafe9e4atagen2026-10-22 12:30 UTC418
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC419
7ff8adafe9e4atagen2026-10-22 12:30 UTC420
- Add `Client::get_store_sizes()` so to query the size of the existing stores,
7ff8adafe9e4atagen2026-10-22 12:30 UTC421
  if available.
7ff8adafe9e4atagen2026-10-22 12:30 UTC422
  ([#5911](https://github.com/matrix-org/matrix-rust-sdk/pull/5911))
7ff8adafe9e4atagen2026-10-22 12:30 UTC423
- Expose `is_space` in `NotificationRoomInfo`, allowing clients to determine if
7ff8adafe9e4atagen2026-10-22 12:30 UTC424
  the room that triggered the notification is a space.
7ff8adafe9e4atagen2026-10-22 12:30 UTC425
- Add push actions to `NotificationItem` and replace `SyncNotification` with
7ff8adafe9e4atagen2026-10-22 12:30 UTC426
  `NotificationItem`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC427
  ([#5835](https://github.com/matrix-org/matrix-rust-sdk/pull/5835))
7ff8adafe9e4atagen2026-10-22 12:30 UTC428
- Add `Client::new_grant_login_with_qr_code_handler` for granting login to a new
7ff8adafe9e4atagen2026-10-22 12:30 UTC429
  device by way of a QR code.
7ff8adafe9e4atagen2026-10-22 12:30 UTC430
  ([#5836](https://github.com/matrix-org/matrix-rust-sdk/pull/5836))
7ff8adafe9e4atagen2026-10-22 12:30 UTC431
- Add `Client::register_notification_handler` for observing notifications
7ff8adafe9e4atagen2026-10-22 12:30 UTC432
  generated from sync responses.
7ff8adafe9e4atagen2026-10-22 12:30 UTC433
  ([#5831](https://github.com/matrix-org/matrix-rust-sdk/pull/5831))
7ff8adafe9e4atagen2026-10-22 12:30 UTC434
- Add `Room::mark_as_fully_read_unchecked` so clients can mark a room as read
7ff8adafe9e4atagen2026-10-22 12:30 UTC435
  without needing a `Timeline` instance. Note this method is not recommended as
7ff8adafe9e4atagen2026-10-22 12:30 UTC436
  it can potentially cause incorrect read receipts, but it can needed in certain
7ff8adafe9e4atagen2026-10-22 12:30 UTC437
  cases.
7ff8adafe9e4atagen2026-10-22 12:30 UTC438
- Add `Timeline::latest_event_id` to be able to fetch the event id of the latest
7ff8adafe9e4atagen2026-10-22 12:30 UTC439
  event of the timeline.
7ff8adafe9e4atagen2026-10-22 12:30 UTC440
- Add `Room::load_or_fetch_event` so we can get a `TimelineEvent` given its
7ff8adafe9e4atagen2026-10-22 12:30 UTC441
  event id ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC442
- Add `TimelineEvent::thread_root_event_id` to expose the thread root event id
7ff8adafe9e4atagen2026-10-22 12:30 UTC443
  for this type too
7ff8adafe9e4atagen2026-10-22 12:30 UTC444
  ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC445
- Add `NotificationSettings::get_raw_push_rules` so clients can fetch the raw
7ff8adafe9e4atagen2026-10-22 12:30 UTC446
  JSON content of the push rules of the current user and include it in bug
7ff8adafe9e4atagen2026-10-22 12:30 UTC447
  reports ([#5706](https://github.com/matrix-org/matrix-rust-sdk/pull/5706)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC448
- Add new API to decline calls
7ff8adafe9e4atagen2026-10-22 12:30 UTC449
  ([MSC4310](https://github.com/matrix-org/matrix-spec-proposals/pull/4310)):
7ff8adafe9e4atagen2026-10-22 12:30 UTC450
  `Room::decline_call` and `Room::subscribe_to_call_decline_events`
7ff8adafe9e4atagen2026-10-22 12:30 UTC451
  ([#5614](https://github.com/matrix-org/matrix-rust-sdk/pull/5614))
7ff8adafe9e4atagen2026-10-22 12:30 UTC452
- Expose `m.federate` in `OtherState::RoomCreate` and `history_visibility` in
7ff8adafe9e4atagen2026-10-22 12:30 UTC453
  `OtherState::RoomHistoryVisibility`, allowing clients to know whether a room
7ff8adafe9e4atagen2026-10-22 12:30 UTC454
  federates and how its history is shared in the appropriate timeline events.
7ff8adafe9e4atagen2026-10-22 12:30 UTC455
- Expose `join_rule` in `OtherState::RoomJoinRules`, allowing clients to know
7ff8adafe9e4atagen2026-10-22 12:30 UTC456
  the join rules of a room from the appropriate timeline events.
7ff8adafe9e4atagen2026-10-22 12:30 UTC457
7ff8adafe9e4atagen2026-10-22 12:30 UTC458
### Changes
7ff8adafe9e4atagen2026-10-22 12:30 UTC459
7ff8adafe9e4atagen2026-10-22 12:30 UTC460
- `Timeline::latest_event_id` now uses its `ui::Timeline::latest_event_id`
7ff8adafe9e4atagen2026-10-22 12:30 UTC461
  counterpart, instead of getting the latest event from the timeline and then
7ff8adafe9e4atagen2026-10-22 12:30 UTC462
  its id.([#5864](https://github.com/matrix-org/matrix-rust-sdk/pull/5864))
7ff8adafe9e4atagen2026-10-22 12:30 UTC463
- Build Android ARM64 bindings using better default RUSTFLAGS (the same used for
7ff8adafe9e4atagen2026-10-22 12:30 UTC464
  iOS ARM64). This should improve performance.
7ff8adafe9e4atagen2026-10-22 12:30 UTC465
  [(#5854)](https://github.com/matrix-org/matrix-rust-sdk/pull/5854)
7ff8adafe9e4atagen2026-10-22 12:30 UTC466
7ff8adafe9e4atagen2026-10-22 12:30 UTC467
## [0.14.0] - 2025-09-04
7ff8adafe9e4atagen2026-10-22 12:30 UTC468
7ff8adafe9e4atagen2026-10-22 12:30 UTC469
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC470
7ff8adafe9e4atagen2026-10-22 12:30 UTC471
- Add `LowPriority` and `NonLowPriority` variants to
7ff8adafe9e4atagen2026-10-22 12:30 UTC472
  `RoomListEntriesDynamicFilterKind` for filtering rooms based on their low
7ff8adafe9e4atagen2026-10-22 12:30 UTC473
  priority status. These filters allow clients to show only low priority rooms
7ff8adafe9e4atagen2026-10-22 12:30 UTC474
  or exclude low priority rooms from the room list.
7ff8adafe9e4atagen2026-10-22 12:30 UTC475
  ([#5508](https://github.com/matrix-org/matrix-rust-sdk/pull/5508))
7ff8adafe9e4atagen2026-10-22 12:30 UTC476
- Add `room_version` and `privileged_creators_role` to `RoomInfo`
7ff8adafe9e4atagen2026-10-22 12:30 UTC477
  ([#5449](https://github.com/matrix-org/matrix-rust-sdk/pull/5449)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC478
- The [`unstable-hydra`] feature has been enabled, which enables room v12
7ff8adafe9e4atagen2026-10-22 12:30 UTC479
  changes in the SDK.
7ff8adafe9e4atagen2026-10-22 12:30 UTC480
  ([#5450](https://github.com/matrix-org/matrix-rust-sdk/pull/5450)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC481
- Add experimental support for
7ff8adafe9e4atagen2026-10-22 12:30 UTC482
  [MSC4306](https://github.com/matrix-org/matrix-spec-proposals/pull/4306), with
7ff8adafe9e4atagen2026-10-22 12:30 UTC483
  the `Room::fetch_thread_subscription()` and `Room::set_thread_subscription()`
7ff8adafe9e4atagen2026-10-22 12:30 UTC484
  methods. ([#5442](https://github.com/matrix-org/matrix-rust-sdk/pull/5442))
7ff8adafe9e4atagen2026-10-22 12:30 UTC485
- [**breaking**] [`GalleryUploadParameters::reply`] and
7ff8adafe9e4atagen2026-10-22 12:30 UTC486
  [`UploadParameters::reply`] have been both replaced with a new optional
7ff8adafe9e4atagen2026-10-22 12:30 UTC487
  `in_reply_to` field, that's a string which will be parsed into an
7ff8adafe9e4atagen2026-10-22 12:30 UTC488
  `OwnedEventId` when sending the event. The thread relationship will be
7ff8adafe9e4atagen2026-10-22 12:30 UTC489
  automatically filled in, based on the timeline focus.
7ff8adafe9e4atagen2026-10-22 12:30 UTC490
  ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427))
7ff8adafe9e4atagen2026-10-22 12:30 UTC491
- [**breaking**] [`Timeline::send_reply()`] now automatically fills in the
7ff8adafe9e4atagen2026-10-22 12:30 UTC492
  thread relationship, based on the timeline focus. As a result, it only takes
7ff8adafe9e4atagen2026-10-22 12:30 UTC493
  an `OwnedEventId` parameter, instead of the `Reply` type. The proper way to
7ff8adafe9e4atagen2026-10-22 12:30 UTC494
  start a thread is now thus to create a threaded-focused timeline, and then use
7ff8adafe9e4atagen2026-10-22 12:30 UTC495
  `Timeline::send()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC496
  ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427))
7ff8adafe9e4atagen2026-10-22 12:30 UTC497
- Add `HomeserverLoginDetails::supports_sso_login` for legacy SSO support
7ff8adafe9e4atagen2026-10-22 12:30 UTC498
  information. This is primarily for Element X to give a dedicated error message
7ff8adafe9e4atagen2026-10-22 12:30 UTC499
  in case it connects a homeserver with only this method available.
7ff8adafe9e4atagen2026-10-22 12:30 UTC500
  ([#5222](https://github.com/matrix-org/matrix-rust-sdk/pull/5222))
7ff8adafe9e4atagen2026-10-22 12:30 UTC501
7ff8adafe9e4atagen2026-10-22 12:30 UTC502
### Breaking changes
7ff8adafe9e4atagen2026-10-22 12:30 UTC503
7ff8adafe9e4atagen2026-10-22 12:30 UTC504
- The timeline will now always use the send queue to upload medias, so the
7ff8adafe9e4atagen2026-10-22 12:30 UTC505
  `UploadParameters::use_send_queue` bool has been removed. Make sure to listen
7ff8adafe9e4atagen2026-10-22 12:30 UTC506
  to the send queue's error updates, and to handle send queue restarts.
7ff8adafe9e4atagen2026-10-22 12:30 UTC507
  ([#5525](https://github.com/matrix-org/matrix-rust-sdk/pull/5525))
7ff8adafe9e4atagen2026-10-22 12:30 UTC508
- Support for the legacy media upload progress has been disabled. Media upload
7ff8adafe9e4atagen2026-10-22 12:30 UTC509
  progress is available through the send queue, and can be enabled thanks to
7ff8adafe9e4atagen2026-10-22 12:30 UTC510
  `Client::enable_send_queue_upload_progress()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC511
  ([#5525](https://github.com/matrix-org/matrix-rust-sdk/pull/5525))
7ff8adafe9e4atagen2026-10-22 12:30 UTC512
- `TimelineDiff` is now exported as a true `uniffi::Enum` instead of the weird
7ff8adafe9e4atagen2026-10-22 12:30 UTC513
  `uniffi::Object` hybrid. This matches both `RoomDirectorySearchEntryUpdate`
7ff8adafe9e4atagen2026-10-22 12:30 UTC514
  and `RoomListEntriesUpdate` and can be used in the same way.
7ff8adafe9e4atagen2026-10-22 12:30 UTC515
  ([#5474](https://github.com/matrix-org/matrix-rust-sdk/pull/5474))
7ff8adafe9e4atagen2026-10-22 12:30 UTC516
- The `creator` field of `RoomInfo` has been renamed to `creators` and can now
7ff8adafe9e4atagen2026-10-22 12:30 UTC517
  contain a list of user IDs, to reflect that a room can now have several
7ff8adafe9e4atagen2026-10-22 12:30 UTC518
  creators, as introduced in room version 12.
7ff8adafe9e4atagen2026-10-22 12:30 UTC519
  ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436))
7ff8adafe9e4atagen2026-10-22 12:30 UTC520
- The `PowerLevel` type was introduced to represent power levels instead of
7ff8adafe9e4atagen2026-10-22 12:30 UTC521
  `i64` to differentiate the infinite power level of creators, as introduced in
7ff8adafe9e4atagen2026-10-22 12:30 UTC522
  room version 12. It is used in `suggested_role_for_power_level`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC523
  `suggested_power_level_for_role` and `RoomMember`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC524
  ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436))
7ff8adafe9e4atagen2026-10-22 12:30 UTC525
- `Client::get_url` now returns a `Vec<u8>` instead of a `String`. It also
7ff8adafe9e4atagen2026-10-22 12:30 UTC526
  throws an error when the response isn't status code 200 OK, instead of
7ff8adafe9e4atagen2026-10-22 12:30 UTC527
  providing the error in the response body.
7ff8adafe9e4atagen2026-10-22 12:30 UTC528
  ([#5438](https://github.com/matrix-org/matrix-rust-sdk/pull/5438))
7ff8adafe9e4atagen2026-10-22 12:30 UTC529
- `RoomPreview::info()` doesn't return a result anymore. All unknown join rules
7ff8adafe9e4atagen2026-10-22 12:30 UTC530
  are handled in the `JoinRule::Custom` variant.
7ff8adafe9e4atagen2026-10-22 12:30 UTC531
  ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337))
7ff8adafe9e4atagen2026-10-22 12:30 UTC532
- The `reason` argument of `Room::report_room` is now required, do to a
7ff8adafe9e4atagen2026-10-22 12:30 UTC533
  clarification in the spec.
7ff8adafe9e4atagen2026-10-22 12:30 UTC534
  ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337))
7ff8adafe9e4atagen2026-10-22 12:30 UTC535
- `PublicRoomJoinRule` has more variants, supporting all the known values from
7ff8adafe9e4atagen2026-10-22 12:30 UTC536
  the spec. ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337))
7ff8adafe9e4atagen2026-10-22 12:30 UTC537
- The fields of `MediaPreviewConfig` are both optional, allowing to use the type
7ff8adafe9e4atagen2026-10-22 12:30 UTC538
  for room account data as well as global account data.
7ff8adafe9e4atagen2026-10-22 12:30 UTC539
  ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337))
7ff8adafe9e4atagen2026-10-22 12:30 UTC540
- The `event_id` field of `PredecessorRoom` was removed, due to its removal in
7ff8adafe9e4atagen2026-10-22 12:30 UTC541
  the Matrix specification with MSC4291.
7ff8adafe9e4atagen2026-10-22 12:30 UTC542
  ([#5419](https://github.com/matrix-org/matrix-rust-sdk/pull/5419))
7ff8adafe9e4atagen2026-10-22 12:30 UTC543
- `Client::url_for_oidc` now allows requesting additional scopes for the OAuth2
7ff8adafe9e4atagen2026-10-22 12:30 UTC544
  authorization code grant.
7ff8adafe9e4atagen2026-10-22 12:30 UTC545
  ([#5395](https://github.com/matrix-org/matrix-rust-sdk/pull/5395))
7ff8adafe9e4atagen2026-10-22 12:30 UTC546
- `Client::url_for_oidc` now allows passing an optional existing device id from
7ff8adafe9e4atagen2026-10-22 12:30 UTC547
  a previous login call.
7ff8adafe9e4atagen2026-10-22 12:30 UTC548
  ([#5394](https://github.com/matrix-org/matrix-rust-sdk/pull/5394))
7ff8adafe9e4atagen2026-10-22 12:30 UTC549
- `ClientBuilder::build_with_qr_code` has been removed. Instead, the Client
7ff8adafe9e4atagen2026-10-22 12:30 UTC550
  should be built by passing `QrCodeData::server_name` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC551
  `ClientBuilder::server_name_or_homeserver_url`, after which QR login can be
7ff8adafe9e4atagen2026-10-22 12:30 UTC552
  performed by calling `Client::login_with_qr_code`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC553
  ([#5388](https://github.com/matrix-org/matrix-rust-sdk/pull/5388))
7ff8adafe9e4atagen2026-10-22 12:30 UTC554
- The MSRV has been bumped to Rust 1.88.
7ff8adafe9e4atagen2026-10-22 12:30 UTC555
  ([#5431](https://github.com/matrix-org/matrix-rust-sdk/pull/5431))
7ff8adafe9e4atagen2026-10-22 12:30 UTC556
- `Room::send_call_notification` and `Room::send_call_notification_if_needed`
7ff8adafe9e4atagen2026-10-22 12:30 UTC557
  have been removed, since the event type they send is outdated, and `Client` is
7ff8adafe9e4atagen2026-10-22 12:30 UTC558
  not actually supposed to be able to join MatrixRTC sessions (yet). In
7ff8adafe9e4atagen2026-10-22 12:30 UTC559
  practice, users of these methods probably already rely on another MatrixRTC
7ff8adafe9e4atagen2026-10-22 12:30 UTC560
  implementation to participate in sessions, and such an implementation should
7ff8adafe9e4atagen2026-10-22 12:30 UTC561
  be capable of sending notifications itself.
7ff8adafe9e4atagen2026-10-22 12:30 UTC562
- The `GalleryItemInfo` variants now take an `UploadSource` rather than a
7ff8adafe9e4atagen2026-10-22 12:30 UTC563
  `String` path to enable uploading from bytes directly.
7ff8adafe9e4atagen2026-10-22 12:30 UTC564
  ([#5529](https://github.com/matrix-org/matrix-rust-sdk/pull/5529))
7ff8adafe9e4atagen2026-10-22 12:30 UTC565
- Media and gallery uploads now use `UploadSource` to specify the thumbnail.
7ff8adafe9e4atagen2026-10-22 12:30 UTC566
  ([#5530](https://github.com/matrix-org/matrix-rust-sdk/pull/5530))
7ff8adafe9e4atagen2026-10-22 12:30 UTC567
7ff8adafe9e4atagen2026-10-22 12:30 UTC568
## [0.13.0] - 2025-07-10
7ff8adafe9e4atagen2026-10-22 12:30 UTC569
7ff8adafe9e4atagen2026-10-22 12:30 UTC570
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC571
7ff8adafe9e4atagen2026-10-22 12:30 UTC572
- Add `NotificationRoomInfo::topic` to the `NotificationRoomInfo` struct, which
7ff8adafe9e4atagen2026-10-22 12:30 UTC573
  contains the topic of the room. This is useful for displaying the room topic
7ff8adafe9e4atagen2026-10-22 12:30 UTC574
  in notifications.
7ff8adafe9e4atagen2026-10-22 12:30 UTC575
  ([#5300](https://github.com/matrix-org/matrix-rust-sdk/pull/5300))
7ff8adafe9e4atagen2026-10-22 12:30 UTC576
- Add `EmbeddedEventDetails::timestamp` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC577
  `EmbeddedEventDetails::event_or_transaction_id` which are already available in
7ff8adafe9e4atagen2026-10-22 12:30 UTC578
  regular timeline items.
7ff8adafe9e4atagen2026-10-22 12:30 UTC579
  ([#5331](https://github.com/matrix-org/matrix-rust-sdk/pull/5331))
7ff8adafe9e4atagen2026-10-22 12:30 UTC580
- `RoomListService::subscribe_to_rooms` becomes `async` and automatically calls
7ff8adafe9e4atagen2026-10-22 12:30 UTC581
  `matrix_sdk::latest_events::LatestEvents::listen_to_room`
7ff8adafe9e4atagen2026-10-22 12:30 UTC582
  ([#5369](https://github.com/matrix-org/matrix-rust-sdk/pull/5369))
7ff8adafe9e4atagen2026-10-22 12:30 UTC583
7ff8adafe9e4atagen2026-10-22 12:30 UTC584
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC585
7ff8adafe9e4atagen2026-10-22 12:30 UTC586
- Adjust features in the `matrix-sdk-ffi` crate to expose more platform-specific
7ff8adafe9e4atagen2026-10-22 12:30 UTC587
  knobs. Previously the `matrix-sdk-ffi` was configured primarily by target
7ff8adafe9e4atagen2026-10-22 12:30 UTC588
  configs, choosing between the tls flavor (`rustls-tls` or `native-tls`) and
7ff8adafe9e4atagen2026-10-22 12:30 UTC589
  features like `sentry` based purely on the target. As we work to add an
7ff8adafe9e4atagen2026-10-22 12:30 UTC590
  additional Wasm target to this crate, the cross product of target specific
7ff8adafe9e4atagen2026-10-22 12:30 UTC591
  features has become somewhat chaotic, and we have shifted to externalize these
7ff8adafe9e4atagen2026-10-22 12:30 UTC592
  choices as feature flags.
7ff8adafe9e4atagen2026-10-22 12:30 UTC593
7ff8adafe9e4atagen2026-10-22 12:30 UTC594
  To maintain existing compatibility on the major platforms, these features
7ff8adafe9e4atagen2026-10-22 12:30 UTC595
  should be used: Android: `"bundled-sqlite,unstable-msc4274,rustls-tls,sentry"`
7ff8adafe9e4atagen2026-10-22 12:30 UTC596
  iOS: `"bundled-sqlite,unstable-msc4274,native-tls,sentry"` Javascript/Wasm:
7ff8adafe9e4atagen2026-10-22 12:30 UTC597
  `"unstable-msc4274,native-tls"`
7ff8adafe9e4atagen2026-10-22 12:30 UTC598
7ff8adafe9e4atagen2026-10-22 12:30 UTC599
  In the future additional choices (such as session storage, `sqlite` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC600
  `indexeddb`) will likely be added as well.
7ff8adafe9e4atagen2026-10-22 12:30 UTC601
7ff8adafe9e4atagen2026-10-22 12:30 UTC602
Breaking changes:
7ff8adafe9e4atagen2026-10-22 12:30 UTC603
7ff8adafe9e4atagen2026-10-22 12:30 UTC604
- `Client::reset_server_capabilities` has been renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC605
  `Client::reset_server_info`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC606
  ([#5167](https://github.com/matrix-org/matrix-rust-sdk/pull/5167))
7ff8adafe9e4atagen2026-10-22 12:30 UTC607
- `RoomPreview::join_rule`, `NotificationItem::join_rule`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC608
  `RoomInfo::is_public`, and `Room::is_public()` return values are now optional.
7ff8adafe9e4atagen2026-10-22 12:30 UTC609
  They will be set to `None` if the join rule state event is missing for a given
7ff8adafe9e4atagen2026-10-22 12:30 UTC610
  room. `NotificationRoomInfo::is_public` has been removed; callers can inspect
7ff8adafe9e4atagen2026-10-22 12:30 UTC611
  the value of `NotificationItem::join_rule` to determine if the room is public
7ff8adafe9e4atagen2026-10-22 12:30 UTC612
  (i.e. if the join rule is `Public`).
7ff8adafe9e4atagen2026-10-22 12:30 UTC613
  ([#5278](https://github.com/matrix-org/matrix-rust-sdk/pull/5278))
7ff8adafe9e4atagen2026-10-22 12:30 UTC614
7ff8adafe9e4atagen2026-10-22 12:30 UTC615
## [0.12.0] - 2025-06-10
7ff8adafe9e4atagen2026-10-22 12:30 UTC616
7ff8adafe9e4atagen2026-10-22 12:30 UTC617
Breaking changes:
7ff8adafe9e4atagen2026-10-22 12:30 UTC618
7ff8adafe9e4atagen2026-10-22 12:30 UTC619
- `Client::send_call_notification_if_needed` now returns `Result<bool>` instead
7ff8adafe9e4atagen2026-10-22 12:30 UTC620
  of `Result<()>` so we can check if the event was sent.
7ff8adafe9e4atagen2026-10-22 12:30 UTC621
- `Client::upload_avatar` and `Timeline::send_attachment` now may fail if a file
7ff8adafe9e4atagen2026-10-22 12:30 UTC622
  too large for the homeserver media config is uploaded.
7ff8adafe9e4atagen2026-10-22 12:30 UTC623
- `UploadParameters` replaces field `filename: String` with
7ff8adafe9e4atagen2026-10-22 12:30 UTC624
  `source: UploadSource`. `UploadSource` is an enum which may take a filename or
7ff8adafe9e4atagen2026-10-22 12:30 UTC625
  a filename and bytes, which allows a foreign language to read file contents
7ff8adafe9e4atagen2026-10-22 12:30 UTC626
  natively and then pass those contents to the foreign function when uploading a
7ff8adafe9e4atagen2026-10-22 12:30 UTC627
  file through the `Timeline`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC628
  ([#4948](https://github.com/matrix-org/matrix-rust-sdk/pull/4948))
7ff8adafe9e4atagen2026-10-22 12:30 UTC629
- `RoomInfo` replaces its field `is_tombstoned: bool` with
7ff8adafe9e4atagen2026-10-22 12:30 UTC630
  `tombstone: Option<RoomTombstoneInfo>`, containing the data needed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC631
  implement the room migration UI, a message and the replacement room id.
7ff8adafe9e4atagen2026-10-22 12:30 UTC632
  ([#5027](https://github.com/matrix-org/matrix-rust-sdk/pull/5027))
7ff8adafe9e4atagen2026-10-22 12:30 UTC633
7ff8adafe9e4atagen2026-10-22 12:30 UTC634
Additions:
7ff8adafe9e4atagen2026-10-22 12:30 UTC635
7ff8adafe9e4atagen2026-10-22 12:30 UTC636
- `Client::subscribe_to_room_info` allows clients to subscribe to room info
7ff8adafe9e4atagen2026-10-22 12:30 UTC637
  updates in rooms which may not be known yet. This is useful when displaying a
7ff8adafe9e4atagen2026-10-22 12:30 UTC638
  room preview for an unknown room, so when we receive any membership change for
7ff8adafe9e4atagen2026-10-22 12:30 UTC639
  it, we can automatically update the UI.
7ff8adafe9e4atagen2026-10-22 12:30 UTC640
- `Client::get_max_media_upload_size` to get the max size of a request sent to
7ff8adafe9e4atagen2026-10-22 12:30 UTC641
  the homeserver so we can tweak our media uploads by compressing/transcoding
7ff8adafe9e4atagen2026-10-22 12:30 UTC642
  the media.
7ff8adafe9e4atagen2026-10-22 12:30 UTC643
- Add `ClientBuilder::enable_share_history_on_invite` to enable experimental
7ff8adafe9e4atagen2026-10-22 12:30 UTC644
  support for sharing encrypted room history on invite, per
7ff8adafe9e4atagen2026-10-22 12:30 UTC645
  [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268).
7ff8adafe9e4atagen2026-10-22 12:30 UTC646
  ([#5141](https://github.com/matrix-org/matrix-rust-sdk/pull/5141))
7ff8adafe9e4atagen2026-10-22 12:30 UTC647
- Support for adding a Sentry layer to the FFI bindings has been added. Only
7ff8adafe9e4atagen2026-10-22 12:30 UTC648
  `tracing` statements with the field `sentry=true` will be forwarded to Sentry,
7ff8adafe9e4atagen2026-10-22 12:30 UTC649
  in addition to default Sentry filters.
7ff8adafe9e4atagen2026-10-22 12:30 UTC650
- Add room topic string to `StateEventContent`
7ff8adafe9e4atagen2026-10-22 12:30 UTC651
- Add `UploadSource` for representing upload data - this is analogous to
7ff8adafe9e4atagen2026-10-22 12:30 UTC652
  `matrix_sdk_ui::timeline::AttachmentSource`
7ff8adafe9e4atagen2026-10-22 12:30 UTC653
- Add `Client::observe_account_data_event` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC654
  `Client::observe_room_account_data_event` to subscribe to global and room
7ff8adafe9e4atagen2026-10-22 12:30 UTC655
  account data changes.
7ff8adafe9e4atagen2026-10-22 12:30 UTC656
  ([#4994](https://github.com/matrix-org/matrix-rust-sdk/pull/4994))
7ff8adafe9e4atagen2026-10-22 12:30 UTC657
- Add `Timeline::send_gallery` to send MSC4274-style galleries.
7ff8adafe9e4atagen2026-10-22 12:30 UTC658
  ([#5163](https://github.com/matrix-org/matrix-rust-sdk/pull/5163))
7ff8adafe9e4atagen2026-10-22 12:30 UTC659
- Add `reply_params` to `GalleryUploadParameters` to allow sending galleries as
7ff8adafe9e4atagen2026-10-22 12:30 UTC660
  (threaded) replies.
7ff8adafe9e4atagen2026-10-22 12:30 UTC661
  ([#5173](https://github.com/matrix-org/matrix-rust-sdk/pull/5173))
7ff8adafe9e4atagen2026-10-22 12:30 UTC662
7ff8adafe9e4atagen2026-10-22 12:30 UTC663
Breaking changes:
7ff8adafe9e4atagen2026-10-22 12:30 UTC664
7ff8adafe9e4atagen2026-10-22 12:30 UTC665
- `contacts` has been removed from `OidcConfiguration` (it was unused since the
7ff8adafe9e4atagen2026-10-22 12:30 UTC666
  switch to OAuth).
7ff8adafe9e4atagen2026-10-22 12:30 UTC667
7ff8adafe9e4atagen2026-10-22 12:30 UTC668
## [0.11.0] - 2025-04-11
7ff8adafe9e4atagen2026-10-22 12:30 UTC669
7ff8adafe9e4atagen2026-10-22 12:30 UTC670
Breaking changes:
7ff8adafe9e4atagen2026-10-22 12:30 UTC671
7ff8adafe9e4atagen2026-10-22 12:30 UTC672
- `TracingConfiguration` now includes a new field `trace_log_packs`, which gives
7ff8adafe9e4atagen2026-10-22 12:30 UTC673
  a convenient way to set the TRACE log level for multiple targets related to a
7ff8adafe9e4atagen2026-10-22 12:30 UTC674
  given feature.
7ff8adafe9e4atagen2026-10-22 12:30 UTC675
  ([#4824](https://github.com/matrix-org/matrix-rust-sdk/pull/4824))
7ff8adafe9e4atagen2026-10-22 12:30 UTC676
7ff8adafe9e4atagen2026-10-22 12:30 UTC677
- `setup_tracing` has been renamed `init_platform`; in addition to the
7ff8adafe9e4atagen2026-10-22 12:30 UTC678
  `TracingConfiguration` parameter it also now takes a boolean indicating
7ff8adafe9e4atagen2026-10-22 12:30 UTC679
  whether to spawn a minimal tokio runtime for the application; in general for
7ff8adafe9e4atagen2026-10-22 12:30 UTC680
  main app processes this can be set to `false`, and memory-constrained programs
7ff8adafe9e4atagen2026-10-22 12:30 UTC681
  can set it to `true`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC682
7ff8adafe9e4atagen2026-10-22 12:30 UTC683
- Matrix client API errors coming from API responses will now be mapped to
7ff8adafe9e4atagen2026-10-22 12:30 UTC684
  `ClientError::MatrixApi`, containing both the original message and the
7ff8adafe9e4atagen2026-10-22 12:30 UTC685
  associated error code and kind.
7ff8adafe9e4atagen2026-10-22 12:30 UTC686
7ff8adafe9e4atagen2026-10-22 12:30 UTC687
- `EventSendState` now has two additional variants: `CrossSigningNotSetup` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC688
  `SendingFromUnverifiedDevice`. These indicate that your own device is not
7ff8adafe9e4atagen2026-10-22 12:30 UTC689
  properly cross-signed, which is a requirement when using the identity-based
7ff8adafe9e4atagen2026-10-22 12:30 UTC690
  strategy, and can only be returned when using the identity-based strategy.
7ff8adafe9e4atagen2026-10-22 12:30 UTC691
7ff8adafe9e4atagen2026-10-22 12:30 UTC692
  In addition, the `VerifiedUserHasUnsignedDevice` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC693
  `VerifiedUserChangedIdentity` variants can be returned when using the
7ff8adafe9e4atagen2026-10-22 12:30 UTC694
  identity-based strategy, in addition to when using the device-based strategy
7ff8adafe9e4atagen2026-10-22 12:30 UTC695
  with `error_on_verified_user_problem` is set.
7ff8adafe9e4atagen2026-10-22 12:30 UTC696
7ff8adafe9e4atagen2026-10-22 12:30 UTC697
- `EventSendState` now has two additional variants:
7ff8adafe9e4atagen2026-10-22 12:30 UTC698
  `VerifiedUserHasUnsignedDevice` and `VerifiedUserChangedIdentity`. These
7ff8adafe9e4atagen2026-10-22 12:30 UTC699
  reflect problems with verified users in the room and as such can only be
7ff8adafe9e4atagen2026-10-22 12:30 UTC700
  returned when the room key recipient strategy has
7ff8adafe9e4atagen2026-10-22 12:30 UTC701
  `error_on_verified_user_problem` set.
7ff8adafe9e4atagen2026-10-22 12:30 UTC702
7ff8adafe9e4atagen2026-10-22 12:30 UTC703
- The `AuthenticationService` has been removed:
7ff8adafe9e4atagen2026-10-22 12:30 UTC704
  - Instead of calling `configure_homeserver`, build your own client with the
7ff8adafe9e4atagen2026-10-22 12:30 UTC705
    `serverNameOrHomeserverUrl` builder method to keep the same behaviour.
7ff8adafe9e4atagen2026-10-22 12:30 UTC706
    - The parts of `AuthenticationError` related to discovery will be
7ff8adafe9e4atagen2026-10-22 12:30 UTC707
      represented in the `ClientBuildError` returned
7ff8adafe9e4atagen2026-10-22 12:30 UTC708
      when calling `build()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC709
  - The remaining methods can be found on the built `Client`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC710
    - There is a new `abortOidcLogin` method that should be called if the
7ff8adafe9e4atagen2026-10-22 12:30 UTC711
      webview is dismissed without a callback (
7ff8adafe9e4atagen2026-10-22 12:30 UTC712
      or fails to present).
7ff8adafe9e4atagen2026-10-22 12:30 UTC713
    - The rest of `AuthenticationError` is now found in the OidcError type.
7ff8adafe9e4atagen2026-10-22 12:30 UTC714
- `OidcAuthenticationData` is now called `OidcAuthorizationData`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC715
- The `get_element_call_required_permissions` function now requires the
7ff8adafe9e4atagen2026-10-22 12:30 UTC716
  device_id.
7ff8adafe9e4atagen2026-10-22 12:30 UTC717
7ff8adafe9e4atagen2026-10-22 12:30 UTC718
- Some `OidcPrompt` cases have been removed (`None`, `SelectAccount`).
7ff8adafe9e4atagen2026-10-22 12:30 UTC719
- `Room::is_encrypted` is replaced by `Room::latest_encryption_state`
7ff8adafe9e4atagen2026-10-22 12:30 UTC720
  which returns a value of the new `EncryptionState` enum; another
7ff8adafe9e4atagen2026-10-22 12:30 UTC721
  `Room::encryption_state` non-async and infallible method is added to get the
7ff8adafe9e4atagen2026-10-22 12:30 UTC722
  `EncryptionState` without running a network request.
7ff8adafe9e4atagen2026-10-22 12:30 UTC723
  ([#4777](https://github.com/matrix-org/matrix-rust-sdk/pull/4777)). One can
7ff8adafe9e4atagen2026-10-22 12:30 UTC724
  safely replace:
7ff8adafe9e4atagen2026-10-22 12:30 UTC725
7ff8adafe9e4atagen2026-10-22 12:30 UTC726
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC727
  room.is_encrypted().await?
7ff8adafe9e4atagen2026-10-22 12:30 UTC728
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC729
7ff8adafe9e4atagen2026-10-22 12:30 UTC730
  by
7ff8adafe9e4atagen2026-10-22 12:30 UTC731
7ff8adafe9e4atagen2026-10-22 12:30 UTC732
  ```rust
7ff8adafe9e4atagen2026-10-22 12:30 UTC733
  room.latest_encryption_state().await?.is_encrypted()
7ff8adafe9e4atagen2026-10-22 12:30 UTC734
  ```
7ff8adafe9e4atagen2026-10-22 12:30 UTC735
7ff8adafe9e4atagen2026-10-22 12:30 UTC736
- `ClientBuilder::passphrase` is renamed `session_passphrase`
7ff8adafe9e4atagen2026-10-22 12:30 UTC737
  ([#4870](https://github.com/matrix-org/matrix-rust-sdk/pull/4870/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC738
7ff8adafe9e4atagen2026-10-22 12:30 UTC739
- Merge `Timeline::send_thread_reply` into `Timeline::send_reply`. This
7ff8adafe9e4atagen2026-10-22 12:30 UTC740
  changes the parameters of `send_reply` which now requires passing the
7ff8adafe9e4atagen2026-10-22 12:30 UTC741
  event ID (and thread reply behaviour) inside a `ReplyParameters` struct.
7ff8adafe9e4atagen2026-10-22 12:30 UTC742
  ([#4880](https://github.com/matrix-org/matrix-rust-sdk/pull/4880/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC743
7ff8adafe9e4atagen2026-10-22 12:30 UTC744
- The `dynamic_registrations_file` field of `OidcConfiguration` was removed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC745
  Clients are supposed to re-register with the homeserver for every login.
7ff8adafe9e4atagen2026-10-22 12:30 UTC746
7ff8adafe9e4atagen2026-10-22 12:30 UTC747
- `RoomPreview::own_membership_details` is now
7ff8adafe9e4atagen2026-10-22 12:30 UTC748
  `RoomPreview::member_with_sender_info`, takes any user id and returns an
7ff8adafe9e4atagen2026-10-22 12:30 UTC749
  `Option<RoomMemberWithSenderInfo>`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC750
7ff8adafe9e4atagen2026-10-22 12:30 UTC751
Additions:
7ff8adafe9e4atagen2026-10-22 12:30 UTC752
7ff8adafe9e4atagen2026-10-22 12:30 UTC753
- Add `Encryption::get_user_identity` which returns `UserIdentity`
7ff8adafe9e4atagen2026-10-22 12:30 UTC754
- Add `ClientBuilder::room_key_recipient_strategy`
7ff8adafe9e4atagen2026-10-22 12:30 UTC755
- Add `Room::send_raw`
7ff8adafe9e4atagen2026-10-22 12:30 UTC756
- Add `NotificationSettings::set_custom_push_rule`
7ff8adafe9e4atagen2026-10-22 12:30 UTC757
- Expose `withdraw_verification` to `UserIdentity`
7ff8adafe9e4atagen2026-10-22 12:30 UTC758
- Expose `report_room` to `Room`
7ff8adafe9e4atagen2026-10-22 12:30 UTC759
- Add `RoomInfo::encryption_state`
7ff8adafe9e4atagen2026-10-22 12:30 UTC760
  ([#4788](https://github.com/matrix-org/matrix-rust-sdk/pull/4788))
7ff8adafe9e4atagen2026-10-22 12:30 UTC761
- Add `Timeline::send_thread_reply` for clients that need to start threads
7ff8adafe9e4atagen2026-10-22 12:30 UTC762
  themselves.
7ff8adafe9e4atagen2026-10-22 12:30 UTC763
  ([4819](https://github.com/matrix-org/matrix-rust-sdk/pull/4819))
7ff8adafe9e4atagen2026-10-22 12:30 UTC764
- Add `ClientBuilder::session_pool_max_size`, `::session_cache_size` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC765
  `::session_journal_size_limit` to control the stores configuration, especially
7ff8adafe9e4atagen2026-10-22 12:30 UTC766
  their memory consumption
7ff8adafe9e4atagen2026-10-22 12:30 UTC767
  ([#4870](https://github.com/matrix-org/matrix-rust-sdk/pull/4870/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC768
- Add `ClientBuilder::system_is_memory_constrained` to indicate that the system
7ff8adafe9e4atagen2026-10-22 12:30 UTC769
  has less memory available than the current standard
7ff8adafe9e4atagen2026-10-22 12:30 UTC770
  ([#4894](https://github.com/matrix-org/matrix-rust-sdk/pull/4894))
7ff8adafe9e4atagen2026-10-22 12:30 UTC771
- Add `Room::member_with_sender_info` to get both a room member's info and for
7ff8adafe9e4atagen2026-10-22 12:30 UTC772
  the user who sent the `m.room.member` event the `RoomMember` is based on.