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 | No significant changes. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 10 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 11 | ## [0.17.0] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 12 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 13 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 14 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 15 | - [**breaking**] Change to the stable identifiers for `m.history_not_shared`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 16 | We still support reading the unstable identifier. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 17 | ([#6467](https://github.com/matrix-org/matrix-rust-sdk/pull/6467)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 18 | - Add a method to check the validity of edits. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 19 | ([#6454](https://github.com/matrix-org/matrix-rust-sdk/pull/6454)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 20 | - A background task monitor has been added, that can spawn background tasks and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 21 | monitor their execution on a separate channel. Such tasks can run forever, or |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 22 | they can run for one-shot jobs. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 23 | ([#6075](https://github.com/matrix-org/matrix-rust-sdk/pull/6075) && |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 24 | [#6421](https://github.com/matrix-org/matrix-rust-sdk/pull/6421)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 25 | - Add `AcquireCrossProcessLockResult` and `AcquireCrossProcessLockFn` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 26 | for convenience in generalizing cross-process lock acquisition. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 27 | ([#6326](https://github.com/matrix-org/matrix-rust-sdk/pull/6326)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 28 | - Add support in the `MemoryStore`'s implementation of `EventCacheStore` for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 29 | having duplicate events in a room, where each duplicate is in a different |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 30 | `LinkedChunk`. This is useful, e.g., when an event is in a room and a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 31 | thread in that room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 32 | - [**breaking**] In order to support having duplicate events in the same room |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 33 | (in different `LinkedChunk`'s) a few functions were changed in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 34 | `RelationalLinkedChunk`. The items in the `Iterator` returned by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 35 | `RelationalLinkedChunk::items` now also include the `LinkedChunkId` in which |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 36 | the `Item` was found. Additionally, `RelationalLinkedChunk::save_item` now |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 37 | requires the `Item` to be `Clone` as it may be stored in multiple |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 38 | `LinkedChunk`s. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 39 | (#[6200](https://github.com/matrix-org/matrix-rust-sdk/pull/6200)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 40 | - [**breaking**] Added `CrossProcessLockConfig`, which can be used to configure |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 41 | the behavior of the cross-process lock. `CrossProcessLock` now takes a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 42 | `CrossProcessLockConfig` as an argument to its constructor instead of a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 43 | `lock_holder` value. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 44 | ([#6160](https://github.com/matrix-org/matrix-rust-sdk/pull/6160)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 45 | - [**breaking**] `ShieldStateCode` no longer includes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 46 | `SentInClear`. `VerificationState::to_shield_state_{lax,strict}` never |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 47 | returned that code, and so having it in the enum was somewhat misleading. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 48 | ([#5959](https://github.com/matrix-org/matrix-rust-sdk/pull/5959)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 49 | - Add field `forwarder` of type `ForwarderInfo` to `EncryptionInfo`, which |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 50 | exposes information about the forwarder of the keys with which an event was |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 51 | encrypted if they were shared as part of an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 52 | [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) room |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 53 | key bundle. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 54 | ([#5945](https://github.com/matrix-org/matrix-rust-sdk/pull/5945)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 55 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 56 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 57 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 58 | - Fix an off-by-one check for `Error:InvalidItemIndex` in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 59 | `LinkedChunk::remove_item_at`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 60 | ([#6057](https://github.com/matrix-org/matrix-rust-sdk/pull/6057)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 61 | - Fix `TimelineEvent::from_bundled_latest_event` sometimes removing the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 62 | `session_id` of UTDs. This broken event could later be saved to the event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 63 | cache and become an unresolvable UTD. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 64 | ([#5970](https://github.com/matrix-org/matrix-rust-sdk/pull/5970)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 65 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 66 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 67 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 68 | - [**breaking**] Remove `ttl_cache::TtlCache` because it is now unused. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 69 | ([#6484](https://github.com/matrix-org/matrix-rust-sdk/pull/6484)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 70 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 71 | ## [0.16.1] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 72 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 73 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 74 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 75 | - Add a method to check the validity of edits. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 76 | ([#6454](https://github.com/matrix-org/matrix-rust-sdk/pull/6454)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 77 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 78 | ## [0.16.0] - 2025-12-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 79 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 80 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 81 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 82 | - [**breaking**] Cross-process lock can be dirty. The |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 83 | `CrossProcess::try_lock_once` now returns a new type `CrossProcessResult`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 84 | which is an enum with `Clean`, `Dirty` or `Unobtained` variants. When the lock |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 85 | is dirty it means it's been acquired once, then acquired another time from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 86 | another holder, so the current holder may want to refresh its internal state. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 87 | ([#5672](https://github.com/matrix-org/matrix-rust-sdk/pull/5672)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 88 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 89 | ## [0.14.0] - 2025-09-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 90 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 91 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 92 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 93 | - Tracing subscribers created via |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 94 | [`matrix_sdk_common::js_tracing::MakeJsLogWriter`] or |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 95 | [`make_tracing_subscriber`] will now drop log events at the `TRACE` level. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 96 | Previously `TRACE` logs were treated the same as `DEBUG` logs. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 97 | ([#5590](https://github.com/matrix-org/matrix-rust-sdk/pull/5590)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 98 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 99 | - [**breaking**] Use `Raw<AnyTimelineEvent>` in place of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 100 | `Raw<AnyMessageLikeEvent>` in `DecryptedRoomEvent::event`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 101 | ([#5512](https://github.com/matrix-org/matrix-rust-sdk/pull/5512)). Affects |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 102 | the following functions: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 103 | - `OlmMachine::decrypt_room_event` - existing matches on the result's event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 104 | field should be updated to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 105 | `AnyTimelineEvent::MessageLike(AnyMessageLikeEvent::...)` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 106 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 107 | ## [0.13.0] - 2025-07-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 108 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 109 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 110 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 111 | - Expose the `ROOM_VERSION_RULES_FALLBACK` that should be used when the rules of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 112 | a room are unknown. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 113 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 114 | - Expose the `ROOM_VERSION_FALLBACK` that should be used when the version of a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 115 | room is unknown. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 116 | ([#5306](https://github.com/matrix-org/matrix-rust-sdk/pull/5306)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 117 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 118 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 119 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 120 | - [**breaking**] `extract_bundled_thread_summary()` returns a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 121 | `Raw<AnySyncMessageLikeEvent>` for the latest event instead of a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 122 | `Raw<AnyMessageLikeEvent>`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 123 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 124 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 125 | ## [0.12.0] - 2025-06-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 126 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 127 | No notable changes in this release. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 128 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 129 | ## [0.11.0] - 2025-04-11 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 130 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 131 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 132 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 133 | - Add a simple TTL cache implementation. The `TtlCache` struct can be used as a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 134 | key/value map that expires items after 15 minutes. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 135 | ([#4663](https://github.com/matrix-org/matrix-rust-sdk/pull/4663)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 136 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 137 | ## [0.10.0] - 2025-02-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 138 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 139 | - [**breaking**]: `SyncTimelineEvent` and `TimelineEvent` have been |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 140 | fused into a single type `TimelineEvent`, and its field `push_actions` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 141 | has been made `Option`al (it is set to `None` when we couldn't |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 142 | compute the push actions, because we lacked some information). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 143 | ([#4568](https://github.com/matrix-org/matrix-rust-sdk/pull/4568)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 144 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 145 | ## [0.9.0] - 2024-12-18 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 146 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 147 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 148 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 149 | - Change the behavior of `LinkedChunk::new_with_update_history()` to emit an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 150 | `Update::NewItemsChunk` when a new, initial empty, chunk is created. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 151 | ([#4327](https://github.com/matrix-org/matrix-rust-sdk/pull/4321)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 152 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 153 | - [**breaking**] Make `Room::history_visibility()` return an Option, and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 154 | introduce `Room::history_visibility_or_default()` to return a better |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 155 | sensible default, according to the spec. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 156 | ([#4325](https://github.com/matrix-org/matrix-rust-sdk/pull/4325)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 157 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 158 | - Clear the internal state of the `AsVector` struct if an `Update::Clear` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 159 | state has been received. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 160 | ([#4321](https://github.com/matrix-org/matrix-rust-sdk/pull/4321)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 161 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 162 | ### Documentation |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 163 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 164 | - Document that a decrypted raw event always has a room id. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 165 | ([#728e1fd](https://github.com/matrix-org/matrix-rust-sdk/commit/728e1fda2ae9f1bfa87df162aa553040be705223)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 166 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 167 | ## [0.8.0] - 2024-11-19 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 168 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 169 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 170 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 171 | - Move `linked_chunk` from `matrix-sdk` to `matrix-sdk-common`. |