7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 1 | # Changelog |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 2 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 3 | All notable changes to this project will be documented in this file. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 4 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 5 | <!-- changelog start --> |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 6 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 7 | ## [0.18.0](https://github.com/matrix-org/matrix-rust-sdk/tree/0.18.0) - 2026-06-02 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 8 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 9 | ### Added |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 10 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 11 | - Add `Room::compute_joined_service_members` to compute the number of joined |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 12 | service members in a room. This is needed for calculating display names of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 13 | `SpaceRoom`s with service members. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 14 | ([#6561](https://github.com/matrix-org/matrix-rust-sdk/pulls/6561)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 15 | - Add `RoomInfo::fully_read_event_id` and `Room::fully_read_event_id` to expose |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 16 | the user's `m.fully_read` event ID. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 17 | ([#6569](https://github.com/matrix-org/matrix-rust-sdk/pulls/6569)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 18 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 19 | ### Changed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 20 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 21 | - `Client::sync_once` acquires the state store lock when processing a sync and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 22 | response and holds it until processing has completed. This mimics the behavior |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 23 | of `SlidingSync::sync_once`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 24 | ([#6555](https://github.com/matrix-org/matrix-rust-sdk/pulls/6555)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 25 | - [**breaking**] `RoomInfoNotableUpdateReasons` is now a `u16` to include a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 26 | `FULLY_READ` flag to notify on changes of the `m.fully_read` marker. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 27 | ([#6569](https://github.com/matrix-org/matrix-rust-sdk/pulls/6569)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 28 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 29 | ## [0.17.0] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 30 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 31 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 32 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 33 | - Filter out service members from `Room::heroes`. This _should_ be done by the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 34 | homeservers, but some don't. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 35 | ([#6535](https://github.com/matrix-org/matrix-rust-sdk/pull/6535)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 36 | - Room keys are now rotated whenever the client fully reloads the member list by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 37 | making a request to `/members`, which prevents clients using keys that may |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 38 | have been shared under |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 39 | [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) even |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 40 | if a gappy sync occurs. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 41 | ([#6339](https://github.com/matrix-org/matrix-rust-sdk/pull/6339)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 42 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 43 | - Fix invited/knocked rooms disappearing from the room list after |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 44 | join → leave/kick → re-invite when using Sliding Sync. The SDK now always |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 45 | emits a room update so the room is surfaced correctly again. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 46 | ([#6126](https://github.com/matrix-org/matrix-rust-sdk/pull/6126)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 47 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 48 | - [**breaking**] `BaseClient::room_info_notable_update_sender` has |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 49 | moved into `BaseStateStore`. `BaseStateStore::derive_from_other` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 50 | and `BaseStateStore::get_or_create_room` no longer takes a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 51 | `room_info_notable_update_sender` argument. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 52 | ([#6130](https://github.com/matrix-org/matrix-rust-sdk/pull/6130)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 53 | - [**breaking**] New `LatestEventValue::LocalHasBeenSent` variant to represent |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 54 | a local event that has been sent successfully. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 55 | ([#5968](https://github.com/matrix-org/matrix-rust-sdk/pull/5968)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 56 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 57 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 58 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 59 | - [**breaking**] Add `RoomSummary::active_service_members` field to act as a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 60 | cached value that will be computed when we sync members. Rename `Room::is_dm` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 61 | to `Room::compute_is_dm` since it will now also store the computed active |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 62 | service members count in the new cached field. `Room::active_service_members` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 63 | is now `Room::update_active_service_members` for the same reason. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 64 | ([#6537](https://github.com/matrix-org/matrix-rust-sdk/pull/6537)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 65 | - [**breaking**] Enforce atomic and synchronized updates to `RoomInfo`. Requires |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 66 | `StateStore::save_changes` to acquire state store lock and replaces |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 67 | `Room::set_room_info` with an atomic version, `Room::update_room_info`, which |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 68 | is also synchronized by the state store lock. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 69 | ([#6478](https://github.com/matrix-org/matrix-rust-sdk/pull/6478)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 70 | - Add `RoomMember::is_service_member` that automatically checks the room info |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 71 | and retrieves this info. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 72 | ([#6536](https://github.com/matrix-org/matrix-rust-sdk/pull/6536)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 73 | - [**breaking**] Add `DmRoomDefinition` enum, allowing clients to specify what a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 74 | DM room should look like. A `Room::is_dm` method was added to check if a room |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 75 | is a DM room too, using this definition. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 76 | ([#6490](https://github.com/matrix-org/matrix-rust-sdk/pull/6490)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 77 | - Add `Room::active_room_members`, returning a list of all the service room |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 78 | members that are active in the room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 79 | ([#6843](https://github.com/matrix-org/matrix-rust-sdk/pull/6483)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 80 | - Add support in the `MemoryStore`'s implementation of `EventCacheStore` for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 81 | having duplicate events in a room, where each duplicate is in a different |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 82 | `LinkedChunk`. This is useful, e.g., when an event is in a room and a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 83 | thread in that room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 84 | (#[6200](https://github.com/matrix-org/matrix-rust-sdk/pull/6200)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 85 | - Add `StateStore::upsert_thread_subscriptions()` method for bulk upserts. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 86 | ([#5848](https://github.com/matrix-org/matrix-rust-sdk/pull/5848)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 87 | - The `LatestEventValue::LocalHasBeenSent` variant gains a new `event_id: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 88 | OwnedEventId` field. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 89 | ([#5977](https://github.com/matrix-org/matrix-rust-sdk/pull/5977)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 90 | - [**breaking**] `RelationalLinkedChunk::apply_updates` returns an error rather |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 91 | than panicking. This is necessary in order to ensure certain behaviors are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 92 | disallowed. ([#6061](https://github.com/matrix-org/matrix-rust-sdk/pull/6061)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 93 | - Add `RoomInfo::active_room_call_consensus_intent()` method to get the call |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 94 | intent for the current call, based on what members are advertising. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 95 | ([#6274](https://github.com/matrix-org/matrix-rust-sdk/pull/6274)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 96 | - Add `Room::is_call` to check for Call rooms (MSC3417) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 97 | ([#6315](https://github.com/matrix-org/matrix-rust-sdk/pull/6315)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 98 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 99 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 100 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 101 | - [**breaking**] `TtlStoreValue` was moved and renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 102 | `matrix_sdk_common::ttl::TtlValue`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 103 | ([#6463](https://github.com/matrix-org/matrix-rust-sdk/pull/6463), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 104 | [#6484](https://github.com/matrix-org/matrix-rust-sdk/pull/6484)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 105 | - [**breaking**] `Gap::prev_token` has been renamed to `Gap::token` since it's |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 106 | now used for both the previous batch token and the next batch token. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 107 | ([#6236](https://github.com/matrix-org/matrix-rust-sdk/pull/6236)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 108 | - [**breaking**] Invite acceptance details are no longer stored in `RoomInfo`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 109 | and the accessors `RoomInfo.invite_acceptance_details()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 110 | `Room::invite_acceptance_details` have been removed. Instead, equivalent |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 111 | details are stored in the Crypto store, and, provided the `e2e-encryption` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 112 | feature is enabled, are accessible via |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 113 | `BaseClient::get_pending_key_bundle_details_for_room`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 114 | ([#6199](https://github.com/matrix-org/matrix-rust-sdk/pull/6199)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 115 | - [**breaking**] `once_cell` is no longer reexported from this crate. The types |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 116 | that were stabilized in the Rust standard library can be used instead in most |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 117 | cases. ([#6194](https://github.com/matrix-org/matrix-rust-sdk/pull/6194)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 118 | - [**breaking**] All the `*StoreLock` structs use a `CrossProcessLockConfig` now <!-- rumdl-disable-line MD013 --> |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 119 | instead of the previous `holder` value and so does `StoreConfig` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 120 | `BaseClient::clone_with_in_memory_state_store. Passing a `CrossProcessLockConfig::MultiProcess` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 121 | will keep the same behaviour we had where the client uses the cross process |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 122 | lock and using `CrossProcessLockConfig::SingleProcess` will disable the cross process lock. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 123 | ([#6061](https://github.com/matrix-org/matrix-rust-sdk/pull/6061)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 124 | - [**breaking**] The `StateStore::upsert_thread_subscription` method has been |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 125 | removed in favor of a bulk method `StateStore::upsert_thread_subscriptions`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 126 | - [**breaking**] The `message-ids` feature has been removed. It was already a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 127 | no-op and has now been eliminated entirely. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 128 | ([#5963](https://github.com/matrix-org/matrix-rust-sdk/pull/5963)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 129 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 130 | ## [0.16.1] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 131 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 132 | No notable changes in this release. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 133 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 134 | ## [0.16.0] - 2025-12-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 135 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 136 | ### Security fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 137 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 138 | - Skip the serialization of custom join rules in the `RoomInfo` which prevented |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 139 | the processing of sync responses containing events with custom join rules. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 140 | ([#5924](https://github.com/matrix-org/matrix-rust-sdk/pull/5924), Low, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 141 | [CVE-2025-66622](https://www.cve.org/CVERecord?id=CVE-2025-66622), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 142 | [GHSA-jj6p-3m75-g2p3](https://github.com/matrix-org/matrix-rust-sdk/security/advisories/GHSA-jj6p-3m75-g2p3)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 143 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 144 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 145 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 146 | - [**breaking**] `ServerInfo` has been renamed to `SupportedVersionsResponse`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 147 | and its `well_known` field has been removed. It is also wrapped in a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 148 | `TtlStoreValue` that handles the expiration of the data, rather than calling |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 149 | `maybe_decode()`. Its constructor has been removed since all its fields are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 150 | now public. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 151 | ([#5910](https://github.com/matrix-org/matrix-rust-sdk/pull/5910)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 152 | - `StateStoreData(Key/Value)::ServerInfo` has been split into the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 153 | `SupportedVersions` and `WellKnown` variants. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 154 | - [**breaking**] Upgrade Ruma to version 0.14.0. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 155 | ([#5882](https://github.com/matrix-org/matrix-rust-sdk/pull/5882)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 156 | - `Client::sync_lock` has been renamed `Client::state_store_lock`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 157 | ([#5707](https://github.com/matrix-org/matrix-rust-sdk/pull/5707)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 158 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 159 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 160 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 161 | - [**breaking**] The `EventCacheStore::get_room_events()` method has received |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 162 | two new arguments. This allows users to load only events of a certain event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 163 | type and events that were encrypted using a certain room key identified by its |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 164 | session ID. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 165 | ([#5817](https://github.com/matrix-org/matrix-rust-sdk/pull/5817)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 166 | - `ComposerDraft` can now store attachments alongside text messages. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 167 | ([#5794](https://github.com/matrix-org/matrix-rust-sdk/pull/5794)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 168 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 169 | ## [0.14.1] - 2025-09-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 170 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 171 | ### Security fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 172 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 173 | - Fix a panic in the `RoomMember::normalized_power_level` method. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 174 | ([#5635](https://github.com/matrix-org/matrix-rust-sdk/pull/5635)) ( Low, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 175 | [CVE-2025-59047](https://www.cve.org/CVERecord?id=CVE-2025-59047), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 176 | [GHSA-qhj8-q5r6-8q6j](https://github.com/matrix-org/matrix-rust-sdk/security/advisories/GHSA-qhj8-q5r6-8q6j)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 177 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 178 | ## [0.14.0] - 2025-09-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 179 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 180 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 181 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 182 | - Add `SyncResponse::RoomUpdates::is_empty` to check if there were any room |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 183 | updates. ([#5593](https://github.com/matrix-org/matrix-rust-sdk/pull/5593)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 184 | - Add `EncryptionState::StateEncrypted` to represent rooms supporting encrypted |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 185 | state events. Feature-gated behind `experimental-encrypted-state-events`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 186 | ([#5523](https://github.com/matrix-org/matrix-rust-sdk/pull/5523)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 187 | - [**breaking**] The `state` field of `JoinedRoomUpdate` and `LeftRoomUpdate` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 188 | now uses the `State` enum, depending on whether the state changes were |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 189 | received in the `state` field or the `state_after` field. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 190 | ([#5488](https://github.com/matrix-org/matrix-rust-sdk/pull/5488)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 191 | - [**breaking**] `RoomCreateWithCreatorEventContent` has a new field |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 192 | `additional_creators` that allows to specify additional room creators beside |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 193 | the user sending the `m.room.create` event, introduced with room version 12. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 194 | ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 195 | - [**breaking**] The `RoomInfo` method now remembers the inviter at the time |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 196 | when the `BaseClient::room_joined()` method was called. The caller is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 197 | responsible to remember the inviter before a server request to join the room |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 198 | is made. The `RoomInfo::invite_accepted_at` method was removed, the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 199 | `RoomInfo::invite_details` method returns both the timestamp and the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 200 | inviter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 201 | ([#5390](https://github.com/matrix-org/matrix-rust-sdk/pull/5390)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 202 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 203 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 204 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 205 | - [**breaking**] The `Stripped` variants of `RawAnySyncOrStrippedTimelineEvent`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 206 | `RawAnySyncOrStrippedState` and `AnySyncOrStrippedState` use `StrippedState` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 207 | instead of `AnyStrippedStateEvent`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 208 | ([#5473](https://github.com/matrix-org/matrix-rust-sdk/pull/5473)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 209 | - [**breaking**] The `stripped_state` field of `StateChanges` uses |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 210 | `StrippedState` instead of `AnyStrippedStateEvent`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 211 | ([#5473](https://github.com/matrix-org/matrix-rust-sdk/pull/5473)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 212 | - [**breaking**] `RelationalLinkedChunk::items` now takes a `RoomId` instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 213 | an `&OwnedLinkedChunkId` parameter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 214 | ([#5445](https://github.com/matrix-org/matrix-rust-sdk/pull/5445)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 215 | - [**breaking**] Add an `IsPrefix = False` bound to the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 216 | `get_state_event_static()`, `get_state_event_static_for_key()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 217 | `get_state_events_static()`, `get_account_data_event_static()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 218 | `get_room_account_data_event_static` methods of `StateStoreExt`. These methods |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 219 | only worked for events where the full event type is statically-known, and this |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 220 | is now enforced at compile-time. The matching non-`static` methods of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 221 | `StateStore` can be used instead for event types with a variable suffix. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 222 | ([#5444](https://github.com/matrix-org/matrix-rust-sdk/pull/5444)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 223 | - [**breaking**] |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 224 | `SyncOrStrippedState<RoomPowerLevelsEventContent>::power_levels()` takes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 225 | `AuthorizationRules` and a list of creators, because creators can have |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 226 | infinite power levels, as introduced in room version 12. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 227 | ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 228 | - [**breaking**] `RoomMember::power_level()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 229 | `RoomMember::normalized_power_level()` now use `UserPowerLevel` to represent |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 230 | power levels instead of `i64` to differentiate the infinite power level of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 231 | creators, as introduced in room version 12. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 232 | ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 233 | - [**breaking**] The `creator()` methods of `Room` and `RoomInfo` have been |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 234 | renamed to `creators()` and can now return a list of user IDs, to reflect that |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 235 | a room can have several creators, as introduced in room version 12. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 236 | ([#5436](https://github.com/matrix-org/matrix-rust-sdk/pull/5436)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 237 | - [**breaking**] `RoomInfo::room_version_or_default()` was replaced with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 238 | `room_version_rules_or_default()`. The room version should only be used for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 239 | display purposes. The rules contain flags for all the differences in behavior |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 240 | between all known room versions. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 241 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 242 | - [**breaking**] `MinimalStateEvent::redact()` takes `RedactionRules` instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 243 | a `RoomVersionId`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 244 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 245 | - [**breaking**] The `event_id` field of `PredecessorRoom` was removed, due to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 246 | its removal in the Matrix specification with MSC4291. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 247 | ([#5419](https://github.com/matrix-org/matrix-rust-sdk/pull/5419)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 248 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 249 | ## [0.13.0] - 2025-07-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 250 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 251 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 252 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 253 | - The `RoomInfo` now remembers when an invite was explicitly accepted when the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 254 | `BaseClient::room_joined()` method was called. A new getter for this |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 255 | timestamp exists, the `RoomInfo::invite_accepted_at()` method returns this |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 256 | timestamp. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 257 | ([#5333](https://github.com/matrix-org/matrix-rust-sdk/pull/5333)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 258 | - [**breaking**] The `BaseClient::new()` method now takes an additional |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 259 | `ThreadingSupport` parameter controlling whether the client is supposed to do |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 260 | extra processing for threads. Right now, it controls whether to exclude |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 261 | in-thread events from the room unread counts, but it may be expanded in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 262 | future to support more threading-related features. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 263 | ([#5325](https://github.com/matrix-org/matrix-rust-sdk/pull/5325)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 264 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 265 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 266 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 267 | - The cached `ServerCapabilities` has been renamed to `ServerInfo` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 268 | additionally contains the well-known response alongside the existing server |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 269 | versions. Despite the old name, it does not contain the server capabilities. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 270 | ([#5167](https://github.com/matrix-org/matrix-rust-sdk/pull/5167)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 271 | - `Room::join_rule` and `Room::is_public` now return an `Option` to reflect that |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 272 | the join rule state event might be missing, in which case they will return |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 273 | `None`. ([#5278](https://github.com/matrix-org/matrix-rust-sdk/pull/5278)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 274 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 275 | ## [0.12.0] - 2025-06-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 276 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 277 | No notable changes in this release. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 278 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 279 | ## [0.11.0] - 2025-04-11 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 280 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 281 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 282 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 283 | - [**breaking**] The `Client::subscribe_to_ignore_user_list_changes()` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 284 | method will now only trigger whenever the ignored user list has |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 285 | changed from what was previously known, instead of triggering |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 286 | every time an ignore-user-list event has been received from sync. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 287 | ([#4779](https://github.com/matrix-org/matrix-rust-sdk/pull/4779)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 288 | - [**breaking**] The `MediaRetentionPolicy` can now trigger regular cleanups |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 289 | with its new `cleanup_frequency` setting. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 290 | ([#4603](https://github.com/matrix-org/matrix-rust-sdk/pull/4603)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 291 | - `Clone` is a supertrait of `EventCacheStoreMedia`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 292 | - `EventCacheStoreMedia` has a new method `last_media_cleanup_time_inner` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 293 | - There are new `'static` bounds in `MediaService` for the media cache stores |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 294 | - `event_cache::store::MemoryStore` implements `Clone`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 295 | - `BaseClient` now has a `handle_verification_events` field which is `true` by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 296 | default and can be negated so the `NotificationClient` won't handle received |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 297 | verification events too, causing errors in the `VerificationMachine`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 298 | - [**breaking**] `Room::is_encryption_state_synced` has been removed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 299 | ([#4777](https://github.com/matrix-org/matrix-rust-sdk/pull/4777)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 300 | - [**breaking**] `Room::is_encrypted` is replaced by `Room::encryption_state` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 301 | which returns a value of the new `EncryptionState` enum |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 302 | ([#4777](https://github.com/matrix-org/matrix-rust-sdk/pull/4777)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 303 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 304 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 305 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 306 | - [**breaking**] `BaseClient::store` is renamed `state_store` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 307 | ([#4851](https://github.com/matrix-org/matrix-rust-sdk/pull/4851)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 308 | - [**breaking**] `BaseClient::with_store_config` is renamed `new` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 309 | ([#4847](https://github.com/matrix-org/matrix-rust-sdk/pull/4847)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 310 | - [**breaking**] `BaseClient::set_session_metadata` is renamed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 311 | `activate`, and `BaseClient::logged_in` is renamed `is_activated` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 312 | ([#4850](https://github.com/matrix-org/matrix-rust-sdk/pull/4850)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 313 | - [**breaking] `DependentQueuedRequestKind::UploadFileWithThumbnail` was renamed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 314 | to `DependentQueuedRequestKind::UploadFileOrThumbnail`. Under the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 315 | `unstable-msc4274` feature, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 316 | `DependentQueuedRequestKind::UploadFileOrThumbnail` and `SentMediaInfo` were |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 317 | generalized to allow chaining multiple dependent file / thumbnail uploads. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 318 | ([#4897](https://github.com/matrix-org/matrix-rust-sdk/pull/4897)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 319 | - [**breaking**] `RoomInfo::prev_state` has been removed due to being useless. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 320 | ([#5054](https://github.com/matrix-org/matrix-rust-sdk/pull/5054)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 321 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 322 | ## [0.10.0] - 2025-02-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 323 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 324 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 325 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 326 | - [**breaking**] `EventCacheStore` allows to control which media content is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 327 | allowed in the media cache, and how long it should be kept, with a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 328 | `MediaRetentionPolicy`: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 329 | - `EventCacheStore::add_media_content()` has an extra argument, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 330 | `ignore_policy`, which decides whether a media content should ignore the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 331 | `MediaRetentionPolicy`. It should be stored alongside the media content. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 332 | - `EventCacheStore` has four new methods: `media_retention_policy()`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 333 | `set_media_retention_policy()`, `set_ignore_media_retention_policy()` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 334 | `clean_up_media_cache()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 335 | - `EventCacheStore` implementations should delegate media cache methods to the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 336 | methods of the same name of `MediaService` to use the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 337 | `MediaRetentionPolicy`. They need to implement the `EventCacheStoreMedia` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 338 | trait that can be tested with the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 339 | `event_cache_store_media_integration_tests!` macro. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 340 | ([#4571](https://github.com/matrix-org/matrix-rust-sdk/pull/4571)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 341 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 342 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 343 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 344 | - [**breaking**] Replaced `Room::compute_display_name` with the reintroduced |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 345 | `Room::display_name()`. The new method computes a display name, or return a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 346 | cached value from the previous successful computation. If you need a sync |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 347 | variant, consider using `Room::cached_display_name()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 348 | ([#4470](https://github.com/matrix-org/matrix-rust-sdk/pull/4470)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 349 | - [**breaking**]: The reexported types `SyncTimelineEvent` and `TimelineEvent` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 350 | have been fused into a single type `TimelineEvent`, and its field |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 351 | `push_actions` has been made `Option`al (it is set to `None` when we couldn't |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 352 | compute the push actions, because we lacked some information). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 353 | ([#4568](https://github.com/matrix-org/matrix-rust-sdk/pull/4568)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 354 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 355 | ## [0.9.0] - 2024-12-18 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 356 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 357 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 358 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 359 | - Introduced support for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 360 | [MSC4171](https://github.com/matrix-org/matrix-rust-sdk/pull/4335), enabling |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 361 | the designation of certain users as service members. These flagged users are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 362 | excluded from the room display name calculation. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 363 | ([#4335](https://github.com/matrix-org/matrix-rust-sdk/pull/4335)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 364 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 365 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 366 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 367 | - Fix an off-by-one error in the `ObservableMap` when the `remove()` method is |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 368 | called. Previously, items following the removed item were not shifted left by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 369 | one position, leaving them at incorrect indices. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 370 | ([#4346](https://github.com/matrix-org/matrix-rust-sdk/pull/4346)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 371 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 372 | ## [0.8.0] - 2024-11-19 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 373 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 374 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 375 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 376 | - Add more invalid characters for room aliases. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 377 | - Use the `DisplayName` struct to protect against homoglyph attacks. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 378 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 379 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 380 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 381 | - Add `BaseClient::room_key_recipient_strategy` field |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 382 | - `AmbiguityCache` contains the room member's user ID. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 383 | - [**breaking**] `Media::get_thumbnail` and `MediaFormat::Thumbnail` allow to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 384 | request an animated thumbnail They both take a `MediaThumbnailSettings` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 385 | instead of `MediaThumbnailSize`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 386 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 387 | - Consider knocked members to be part of the room for display name |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 388 | disambiguation. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 389 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 390 | - `Client::cross_process_store_locks_holder_name` is used everywhere: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 391 | - `StoreConfig::new()` now takes a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 392 | `cross_process_store_locks_holder_name` argument. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 393 | - `StoreConfig` no longer implements `Default`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 394 | - `BaseClient::new()` has been removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 395 | - `BaseClient::clone_with_in_memory_state_store()` now takes a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 396 | `cross_process_store_locks_holder_name` argument. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 397 | - `BaseClient` no longer implements `Default`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 398 | - `EventCacheStoreLock::new()` no longer takes a `key` argument. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 399 | - `BuilderStoreConfig` no longer has |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 400 | `cross_process_store_locks_holder_name` field for `Sqlite` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 401 | `IndexedDb`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 402 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 403 | - Make `ObservableMap::stream` works on `wasm32-unknown-unknown`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 404 | - Allow aborting media uploads. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 405 | - Replace the `Notification` type from Ruma in `SyncResponse` and `StateChanges` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 406 | by a custom one. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 407 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 408 | - Introduce a `DisplayName` struct which normalizes and sanitizes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 409 | display names. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 410 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 411 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 412 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 413 | - [**breaking**] Rename `DisplayName` to `RoomDisplayName`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 414 | - Rename `AmbiguityMap` to `DisplayNameUsers`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 415 | - Move `event_cache_store/` to `event_cache/store/` in `matrix-sdk-base`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 416 | - Move `linked_chunk` from `matrix-sdk` to `matrix-sdk-common`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 417 | - Move `Event` and `Gap` into `matrix_sdk_base::event_cache`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 418 | - The ambiguity maps in `SyncResponse` are moved to `JoinedRoom` and `LeftRoom`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 419 | - `Store::get_rooms` and `Store::get_rooms_filtered` are way faster because they |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 420 | don't acquire the lock for every room they read. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 421 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 422 | - `Store::get_rooms`, `Store::get_rooms_filtered` and `Store::get_room` are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 423 | renamed `Store::rooms`, `Store::rooms_filtered` and `Store::room`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 424 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 425 | - [**breaking**] `Client::get_rooms` and `Client::get_rooms_filtered` are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 426 | renamed `Client::rooms` and `Client::rooms_filtered`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 427 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 428 | - [**breaking**] `Client::get_stripped_rooms` has finally been removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 429 | - [**breaking**] The `StateStore` methods to access data in the media cache |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 430 | where moved to a separate `EventCacheStore` trait. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 431 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 432 | - [**breaking**] The `instant` module was removed, use the `ruma::time` module |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 433 | instead. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 434 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 435 | ## 0.7.0 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 436 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 437 | - Rename `RoomType` to `RoomState` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 438 | - Add `RoomInfo::state` accessor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 439 | - Remove `members` and `stripped_members` fields in `StateChanges`. Room member |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 440 | events are now with other state events in `state` and `stripped_state`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 441 | - `StateStore::get_user_ids` takes a `RoomMemberships` to be able to filter the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 442 | results by any membership state. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 443 | - `StateStore::get_joined_user_ids` and `StateStore::get_invited_user_ids` are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 444 | deprecated. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 445 | - `Room::members` takes a `RoomMemberships` to be able to filter the results by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 446 | any membership state. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 447 | - `Room::active_members` and `Room::joined_members` are deprecated. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 448 | - `RoomMember` has new methods: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 449 | - `can_ban` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 450 | - `can_invite` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 451 | - `can_kick` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 452 | - `can_redact` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 453 | - `can_send_message` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 454 | - `can_send_state` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 455 | - `can_trigger_room_notification` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 456 | - Move `StateStore::get_member_event` to `StateStoreExt` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 457 | - `StateStore::get_stripped_room_infos` is deprecated. All room infos should now |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 458 | be returned by `get_room_infos`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 459 | - `BaseClient::get_stripped_rooms` is deprecated. Use `get_rooms_filtered` with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 460 | `RoomStateFilter::INVITED` instead. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 461 | - Add methods to `StateStore` to be able to retrieve data in batch |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 462 | - `get_state_events_for_keys` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 463 | - `get_profiles` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 464 | - `get_presence_events` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 465 | - `get_users_with_display_names` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 466 | - Move `Session`, `SessionTokens` and associated methods to the `matrix-sdk` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 467 | crate. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 468 | - Add `Room::subscribe_info` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 469 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 470 | ## 0.5.1 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 471 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 472 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 473 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 474 | - #664: Fix regression with push rules being applied to the own user_id only |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 475 | instead of all but the own user_id |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 476 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 477 | ## 0.5.0 |