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 | ### Changed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 10 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 11 | - [**breaking**] `SpaceRoom::new_from_known` and `SpaceRoom::new_from_summary` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 12 | are now asynchronous so we can properly check if they are DMs on demand |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 13 | instead of trusting the pre-computed value. Some other related functions are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 14 | now `async` too. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 15 | ([#6561](https://github.com/matrix-org/matrix-rust-sdk/pulls/6561)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 16 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 17 | ### Fixed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 18 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 19 | - Remove the ability to reply to live location events. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 20 | ([#6563](https://github.com/matrix-org/matrix-rust-sdk/pulls/6563)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 21 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 22 | ## [0.17.0] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 23 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 24 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 25 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 26 | - Fix a possible panic in `RoomList::entries_with_dynamic_adapters`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 27 | ([#6459](https://github.com/matrix-org/matrix-rust-sdk/pull/6459)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 28 | - Keep stopped `beacon_info` live location sessions visible in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 29 | `Room::latest_event()`, so room summaries still show the last live location |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 30 | sharing session after it ends. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 31 | ([#6437](https://github.com/matrix-org/matrix-rust-sdk/pull/6437)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 32 | - Allow setting a custom Sliding Sync connection ID and timeline limit on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 33 | `RoomListService`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 34 | ([#6289](https://github.com/matrix-org/matrix-rust-sdk/pull/6289)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 35 | - Don't show a "sent in clear" shield on live location timeline items in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 36 | encrypted rooms, since `beacon_info` is a state event that cannot be |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 37 | encrypted by design. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 38 | ([#6308](https://github.com/matrix-org/matrix-rust-sdk/pull/6308)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 39 | - Include secondary relations when re-initializing a threaded timeline after a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 40 | lag. ([#6209](https://github.com/matrix-org/matrix-rust-sdk/pull/6209)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 41 | - Ensure that the display name of a `Room` in a `NotificationStatus` coming |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 42 | from a `NotificationClient` excludes service members. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 43 | ([#6136](https://github.com/matrix-org/matrix-rust-sdk/pull/6136)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 44 | - Fix the `is_last_admin` check in `LeaveSpaceRoom` since it was not |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 45 | accounting for the membership state. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 46 | [#6032](https://github.com/matrix-org/matrix-rust-sdk/pull/6032) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 47 | - [**breaking**] `LatestEventValue::Local { is_sending: bool }` is replaced |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 48 | by [`state: LatestEventValueLocalState`] to represent 3 states: `IsSending`, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 49 | `HasBeenSent` and `CannotBeSent`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 50 | ([#5968](https://github.com/matrix-org/matrix-rust-sdk/pull/5968/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 51 | - Fix the redecryption of events in timelines built using the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 52 | `TimelineFocus` of `PinnedEvents`, `Thread`, `Event`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 53 | ([#5955](https://github.com/matrix-org/matrix-rust-sdk/pull/5955)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 54 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 55 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 56 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 57 | - `SpaceRoom` and `NotificationItem` now have an `is_dm` field to indicate |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 58 | whether the room is a DM room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 59 | ([#6537](https://github.com/matrix-org/matrix-rust-sdk/pull/6537)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 60 | - Add a list of `declined_by: Vec<OwnedUserId>` to the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 61 | `TimelineItemContent::RtcNotification`, this will contain the list of users |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 62 | that have declined the call. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 63 | ([#6494](https://github.com/matrix-org/matrix-rust-sdk/pull/6494)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 64 | - [**breaking**] Add the `suggested` field to the `SpaceRoom` struct, which |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 65 | indicates whether a space's admins have marked that sub-space/room as a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 66 | "suggested" one to join. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 67 | ([6417](https://github.com/matrix-org/matrix-rust-sdk/pull/6417)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 68 | - Handle local echoes of redactions in the timeline. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 69 | ([#6250](https://github.com/matrix-org/matrix-rust-sdk/pull/6250)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 70 | - [**breaking**] Remove support for `native-tls` and remove all feature |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 71 | flags for selecting TLS backend, as `rustls` is the now the only supported |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 72 | TLS backend. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 73 | ([#6409](https://github.com/matrix-org/matrix-rust-sdk/pull/6409)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 74 | - Add `call_intent` to `TimelineItemContent::RtcNotification` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 75 | ([#6412](https://github.com/matrix-org/matrix-rust-sdk/pull/6412)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 76 | - Introduce a `ThreadListService` which offers reactive interfaces for rendering |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 77 | and managing the list of threads from a particular room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 78 | ([#6311](https://github.com/matrix-org/matrix-rust-sdk/pull/6311)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 79 | - [**breaking**] Remove the `Room::load_thread_list` in favor of the new |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 80 | `ThreadListService` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 81 | ([#6311](https://github.com/matrix-org/matrix-rust-sdk/pull/6311)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 82 | - Add support for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 83 | [MSC3489](https://github.com/matrix-org/matrix-spec-proposals/pull/3489) live |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 84 | location sharing through a new `TimelineItemContent::LiveLocation` variant. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 85 | - The internal timeline unique ID may be recycled when an event is deduplicated |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 86 | from the timeline, so that embedders can notice that it's the same item and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 87 | avoid unnecessary re-rendering. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 88 | ([#6228](https://github.com/matrix-org/matrix-rust-sdk/pull/6228)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 89 | - [**breaking**] Add `NotificationState.EventRedacted` enum value, to handle the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 90 | case where a notification resolves to a redacted event. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 91 | ([#6203](https://github.com/matrix-org/matrix-rust-sdk/pull/6203)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 92 | - [**breaking**] Extend `TimelineFocus::Event` to allow marking the target |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 93 | event as the root of a thread. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 94 | ([#6050](https://github.com/matrix-org/matrix-rust-sdk/pull/6050)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 95 | - [**breaking**] Remove `TimelineEventTypeFilter` which has been replaced by |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 96 | the more generic `TimelineEventFilter`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 97 | ([#6070](https://github.com/matrix-org/matrix-rust-sdk/pull/6070/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 98 | - Add `TimelineEventFilter` for filtering events based on their type or |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 99 | content. For content filtering, only membership and profile change filters |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 100 | are available as of now. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 101 | ([#6048](https://github.com/matrix-org/matrix-rust-sdk/pull/6048/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 102 | - Introduce `SpaceFilter`s as a mechanism for narrowing down what's displayed in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 103 | the room list |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 104 | ([#6025](https://github.com/matrix-org/matrix-rust-sdk/pull/6025)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 105 | - Utilize the cache and include common relations when focusing a timeline on an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 106 | event without requestion context. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 107 | ([#5858](https://github.com/matrix-org/matrix-rust-sdk/pull/5858)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 108 | - [**breaking**] `EventTimelineItem::get_shield` now returns a new type, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 109 | `TimelineEventShieldState`, which extends the old `ShieldState` with a code |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 110 | for `SentInClear`, now that the latter has been removed from `ShieldState`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 111 | ([#5959](https://github.com/matrix-org/matrix-rust-sdk/pull/5959)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 112 | - Add `SpaceService::get_space_room` to get a space |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 113 | given its id from the space graph if available. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 114 | ([#5944](https://github.com/matrix-org/matrix-rust-sdk/pull/5944)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 115 | - [**breaking**]: The new Latest Event API replaces the old API. All the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 116 | `new_` prefixes have been removed. The following methods are removed: |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 117 | `EventTimelineItem::from_latest_event`, and `Timeline::latest_event`. See the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 118 | documentation of `matrix_sdk::latest_event` to learn about the new API. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 119 | ([#5624](https://github.com/matrix-org/matrix-rust-sdk/pull/5624/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 120 | - `Room::load_event_with_relations` now also calls `/relations` to fetch related |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 121 | events when falling back to network mode after a cache miss. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 122 | ([#5930](https://github.com/matrix-org/matrix-rust-sdk/pull/5930)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 123 | - Expose `EventTimelineItem::forwarder` and `forwarder_profile`, which, if |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 124 | present, provide the ID and profile of the user who forwarded the keys used to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 125 | decrypt the event as part of an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 126 | [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) key |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 127 | bundle. ([#6000](https://github.com/matrix-org/matrix-rust-sdk/pull/6000)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 128 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 129 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 130 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 131 | - Use `DmRoomDefinition` to check if a room should be considered part of the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 132 | `RoomCategory::People` or `RoomCategory::Room` when using room list filters. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 133 | ([#6490](https://github.com/matrix-org/matrix-rust-sdk/pull/6490)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 134 | - [**breaking**] `AnyOtherStateEventContentChange::RoomAliases` was removed. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 135 | This state event type was removed from the Matrix specification a while ago, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 136 | and support for it has been removed in Ruma. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 137 | ([#6414](https://github.com/matrix-org/matrix-rust-sdk/pull/6414)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 138 | - [**breaking**] Move `LiveLocation` out of `TimelineItemContent` and into |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 139 | `MsgLikeKind` so it has access to `MsgLikeContent` `reactions`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 140 | ([#6286](https://github.com/matrix-org/matrix-rust-sdk/pull/6286)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 141 | - [**breaking**] Rename `AnyOtherFullStateEventContent` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 142 | `AnyOtherStateEventContentChange` to match the name change in the upstream |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 143 | types. ([#6218](https://github.com/matrix-org/matrix-rust-sdk/pull/6218)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 144 | - [**breaking**] Remove `WithLocking` from `EncryptionSyncService`, the locking |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 145 | mechanism will be taken from the parent `Client` with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 146 | `Client::cross_process_store_config`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 147 | ([#6160](https://github.com/matrix-org/matrix-rust-sdk/pull/6160)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 148 | - [**breaking**] The [`Timeline::pin_event`] and [`Timeline::unpin_event`] |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 149 | methods have been moved to the SDK crate, in the `Room` object. Users can |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 150 | replace previous uses with `timeline.room().pin_event()` etc. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 151 | ([#6106](https://github.com/matrix-org/matrix-rust-sdk/pull/6106)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 152 | - [**breaking**] Refactored `is_last_admin` to `is_last_owner` the check will |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 153 | now account also for v12 rooms, where creators and users with PL 150 matter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 154 | ([#6036](https://github.com/matrix-org/matrix-rust-sdk/pull/6036)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 155 | - [**breaking**] The `SpaceService` will no longer auto-subscribe to required |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 156 | client events when invoking the `subscribe_to_joined_spaces` but instead do it |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 157 | through its, now async, constructor. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 158 | ([#5972](https://github.com/matrix-org/matrix-rust-sdk/pull/5972)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 159 | - [**breaking**] The `SpaceService`'s `joined_spaces` method has been renamed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 160 | `top_level_joined_spaces` and `subscribe_to_joined_spaces` to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 161 | `space_service.subscribe_to_top_level_joined_spaces` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 162 | ([#5972](https://github.com/matrix-org/matrix-rust-sdk/pull/5972)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 163 | - `RoomListService::subscribe_to_rooms` now forgets previous subscriptions. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 164 | ([#6012](https://github.com/matrix-org/matrix-rust-sdk/pull/6012)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 165 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 166 | ## [0.16.1] - 2026-05-08 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 167 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 168 | No notable changes in this release. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 169 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 170 | ## [0.16.0] - 2025-12-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 171 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 172 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 173 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 174 | - [**breaking**] `TimelineBuilder::track_read_marker_and_receipts` now takes a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 175 | parameter to allow tracking to be enabled for all events (like before) or only |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 176 | for message-like events (which prevents read receipts from being placed on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 177 | state events). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 178 | ([#5900](https://github.com/matrix-org/matrix-rust-sdk/pull/5900)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 179 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 180 | ## [0.15.0] - 2025-11-27 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 181 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 182 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 183 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 184 | - Expose `is_space` in `NotificationItem`, allowing clients to determine if the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 185 | room that triggered the notification is a space. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 186 | - [**breaking**] The `LatestEventValue::Local` type gains 2 new fields: `sender` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 187 | and `profile`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 188 | ([#5885](https://github.com/matrix-org/matrix-rust-sdk/pull/5885)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 189 | - Add push actions to `NotificationItem`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 190 | ([#5835](https://github.com/matrix-org/matrix-rust-sdk/pull/5835)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 191 | - Add support for top level space ordering through |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 192 | [MSC3230](https://github.com/matrix-org/matrix-spec-proposals/pull/3230) and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 193 | `m.space_order` room account data fields |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 194 | ([#5799](https://github.com/matrix-org/matrix-rust-sdk/pull/5799)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 195 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 196 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 197 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 198 | - `Timeline::latest_event` will return the latest event in the timeline, not the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 199 | latest item of the timeline if it's an event. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 200 | - `TimelineFocusKind::Event` can now handle both the existing event pagination |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 201 | and thread pagination if the focused event is part of a thread |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 202 | ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 203 | - [**breaking**] The `Room` type in `room_list_service` is renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 204 | `RoomListItem`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 205 | ([#5684](https://github.com/matrix-org/matrix-rust-sdk/pull/5684)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 206 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 207 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 208 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 209 | - `Timeline::latest_event_id` won't take threaded events into account on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 210 | live/event focused timelines if `hide_threaded_events` is enabled. This fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 211 | a bug in `Timeline::mark_as_read` that incorrectly tried to send a read |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 212 | receipt for threaded events that aren't really part of those timelines. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 213 | ([#5864](https://github.com/matrix-org/matrix-rust-sdk/pull/5864/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 214 | - Avoid replacing timeline items when the encryption info is unchanged. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 215 | ([#5660](https://github.com/matrix-org/matrix-rust-sdk/pull/5660)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 216 | - Improvement performance of `RoomList` by introducing a new `RoomListItem` type |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 217 | (that replaces the `Room` type). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 218 | ([#5684](https://github.com/matrix-org/matrix-rust-sdk/pull/5684)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 219 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 220 | ## [0.14.0] - 2025-09-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 221 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 222 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 223 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 224 | - Add a new [`SpaceService`] that provides high level reactive interfaces for |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 225 | listing the user's joined top level spaces as long as their children. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 226 | ([#5509](https://github.com/matrix-org/matrix-rust-sdk/pull/5509)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 227 | - Add `new_filter_low_priority` and `new_filter_non_low_priority` filters to the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 228 | room list filtering system, allowing clients to filter rooms based on their |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 229 | low priority status. The filters use the `Room::is_low_priority()` method |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 230 | which checks for the `m.lowpriority` room tag. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 231 | ([#5508](https://github.com/matrix-org/matrix-rust-sdk/pull/5508)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 232 | - [**breaking**] Refactor the `non_space` filter into a `space` filter, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 233 | favouring its use in combination with the `not` filter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 234 | ([#5508](https://github.com/matrix-org/matrix-rust-sdk/pull/5508)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 235 | - [**breaking**] Space rooms are now being retrieved through sliding sync and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 236 | the newly introduced [`room_list_service::filters::new_filter_non_space`] |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 237 | filter should be used to exclude them from any room list. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 238 | ([5479](https://github.com/matrix-org/matrix-rust-sdk/pull/5479)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 239 | - [**breaking**] [`Timeline::send_gallery()`] now automatically fills in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 240 | thread relationship, based on the timeline focus. As a result, the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 241 | `GalleryConfig::reply()` builder method has been replaced with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 242 | `GalleryConfig::in_reply_to`, and only takes an optional event id (the event |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 243 | that is effectively replied to) instead of the `Reply` type. The proper way to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 244 | start a thread with a gallery event is now thus to create a threaded-focused |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 245 | timeline, and then use `Timeline::send_gallery()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 246 | ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 247 | - [**breaking**] [`Timeline::send_attachment()`] now automatically fills in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 248 | thread relationship, based on the timeline focus. As a result, there's a new |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 249 | `matrix_sdk_ui::timeline::AttachmentConfig` type in town, that has a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 250 | simplified optional parameter `replied_to` of type `OwnedEventId` instead of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 251 | the `Reply` type and that must be used in place of |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 252 | `matrix_sdk::attachment::AttachmentConfig`. The proper way to start a thread |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 253 | with a media attachment is now thus to create a threaded-focused timeline, and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 254 | then use `Timeline::send_attachment()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 255 | ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 256 | - [**breaking**] [`Timeline::send_reply()`] now automatically fills in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 257 | thread relationship, based on the timeline focus. As a result, it only takes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 258 | an `OwnedEventId` parameter, instead of the `Reply` type. The proper way to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 259 | start a thread is now thus to create a threaded-focused timeline, and then use |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 260 | `Timeline::send()`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 261 | ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 262 | - `Timeline::send()` will now automatically fill the thread relationship, if the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 263 | timeline has a thread focus, and the sent event doesn't have a prefilled |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 264 | `relates_to` field (i.e. a relationship). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 265 | ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 266 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 267 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 268 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 269 | - [**breaking**] The MSRV has been bumped to Rust 1.88. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 270 | ([#5431](https://github.com/matrix-org/matrix-rust-sdk/pull/5431)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 271 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 272 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 273 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 274 | - Correctly remove unable-to-decrypt items that have been decrypted but contain |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 275 | unsupported event types. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 276 | ([#5463](https://github.com/matrix-org/matrix-rust-sdk/pull/5463)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 277 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 278 | ## [0.13.0] - 2025-07-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 279 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 280 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 281 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 282 | - Infer timeline read receipt threads for the `send_single_receipt` method from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 283 | the focus mode and associated `hide_threaded_events` flag. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 284 | ([5325](https://github.com/matrix-org/matrix-rust-sdk/pull/5325)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 285 | - Add `NotificationItem::room_topic` to the `NotificationItem` struct, which |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 286 | contains the topic of the room. This is useful for displaying the room topic |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 287 | in notifications. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 288 | ([#5300](https://github.com/matrix-org/matrix-rust-sdk/pull/5300)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 289 | - Add `EmbeddedEvent::timestamp` and `EmbeddedEvent::identifier` which are |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 290 | already available in regular timeline items. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 291 | ([#5331](https://github.com/matrix-org/matrix-rust-sdk/pull/5331)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 292 | - `RoomListService::subscribe_to_rooms` becomes `async` and automatically calls |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 293 | `matrix_sdk::latest_events::LatestEvents::listen_to_room` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 294 | ([#5369](https://github.com/matrix-org/matrix-rust-sdk/pull/5369)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 295 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 296 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 297 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 298 | - [**breaking**] The function provided to `TimelineBuilder::event_filter()` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 299 | must take `RoomVersionRules` as second argument instead of a `RoomVersionId`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 300 | The `default_event_filter()` reflects that change. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 301 | ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 302 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 303 | ## [0.12.0] - 2025-06-10 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 304 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 305 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 306 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 307 | - [**breaking**] [`TimelineItemContent::reactions()`] returns an |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 308 | `Option<&ReactionsByKeyBySender>` instead of `ReactionsByKeyBySender`. This |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 309 | reflects the fact that some timeline items cannot hold reactions at all. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 310 | - `NotificationItem::room_join_rule` is now optional to reflect that the join |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 311 | rule state event might be missing, in which case it will be set to `None`. The |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 312 | `NotificationItem::is_public` field has been replaced with a method that |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 313 | returns an `Option<bool>`, based on the same logic. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 314 | ([#5278](https://github.com/matrix-org/matrix-rust-sdk/pull/5278)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 315 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 316 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 317 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 318 | - Introduce `Timeline` regions, which helps to remove a class of bugs in the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 319 | `Timeline` where items could be inserted in the wrong _regions_, such as |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 320 | a remote timeline item before the `TimelineStart` virtual timeline item. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 321 | ([#5000](https://github.com/matrix-org/matrix-rust-sdk/pull/5000)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 322 | - `NotificationClient` will filter out events sent by ignored users on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 323 | `get_notification` and `get_notifications`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 324 | ([#5081](https://github.com/matrix-org/matrix-rust-sdk/pull/5081)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 325 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 326 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 327 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 328 | - `Timeline::send_single_receipt()` and `Timeline::send_multiple_receipts()` now |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 329 | also unset the unread flag of the room if an unthreaded read receipt is sent. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 330 | ([#5055](https://github.com/matrix-org/matrix-rust-sdk/pull/5055)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 331 | - `Timeline::mark_as_read()` unsets the unread flag of the room if it was set. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 332 | ([#5055](https://github.com/matrix-org/matrix-rust-sdk/pull/5055)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 333 | - Add new method `Timeline::send_gallery` to allow sending MSC4274-style |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 334 | galleries. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 335 | ([#5125](https://github.com/matrix-org/matrix-rust-sdk/pull/5125)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 336 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 337 | ## [0.11.0] - 2025-04-11 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 338 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 339 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 340 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 341 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 342 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 343 | - [**breaking**] Optionally allow starting threads with `Timeline::send_reply`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 344 | ([#4819](https://github.com/matrix-org/matrix-rust-sdk/pull/4819)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 345 | - [**breaking**] Push `RepliedToInfo`, `ReplyContent`, `EnforceThread` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 346 | `UnsupportedReplyItem` (becoming `ReplyError`) down into matrix_sdk. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 347 | [`Timeline::send_reply()`] now takes an event ID rather than a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 348 | `RepliedToInfo`. `Timeline::replied_to_info_from_event_id` has been made |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 349 | private in `matrix_sdk`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 350 | ([#4842](https://github.com/matrix-org/matrix-rust-sdk/pull/4842)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 351 | - Allow sending media as (thread) replies. The reply behaviour can be configured |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 352 | through new fields on [`AttachmentConfig`]. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 353 | ([#4852](https://github.com/matrix-org/matrix-rust-sdk/pull/4852)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 354 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 355 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 356 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 357 | - [**breaking**] Reactions on a given timeline item have been moved from |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 358 | [`EventTimelineItem::reactions()`] to [`TimelineItemContent::reactions()`]; |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 359 | they're thus available from an [`EventTimelineItem`] by calling |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 360 | `.content().reactions()`. They're also returned by ownership (cloned) instead |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 361 | of by reference. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 362 | ([#4576](https://github.com/matrix-org/matrix-rust-sdk/pull/4576)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 363 | - [**breaking**] The parameters `event_id` and `enforce_thread` on |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 364 | [`Timeline::send_reply()`] have been wrapped in a `reply` struct parameter. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 365 | ([#4880](https://github.com/matrix-org/matrix-rust-sdk/pull/4880/)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 366 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 367 | ## [0.10.0] - 2025-02-04 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 368 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 369 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 370 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 371 | - Don't consider rooms in the banned state to be non-left rooms. This bug was |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 372 | introduced due to the introduction of the banned state for rooms, and the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 373 | non-left room filter did not take the new room state into account. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 374 | ([#4448](https://github.com/matrix-org/matrix-rust-sdk/pull/4448)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 375 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 376 | - Fix `EventTimelineItem::latest_edit_json()` when it is populated by a live |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 377 | edit. ([#4552](https://github.com/matrix-org/matrix-rust-sdk/pull/4552)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 378 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 379 | - Fix our own explicit read receipt being ignored when loading it from the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 380 | state store, which resulted in our own read receipt being wrong sometimes. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 381 | ([#4600](https://github.com/matrix-org/matrix-rust-sdk/pull/4600)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 382 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 383 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 384 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 385 | - [**breaking**] `Timeline::send_attachment()` now takes a type that implements |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 386 | `Into<AttachmentSource>` instead of a type that implements `Into<PathBuf>`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 387 | `AttachmentSource` allows to send an attachment either from a file, or with |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 388 | the bytes and the filename of the attachment. Note that all types that |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 389 | implement `Into<PathBuf>` also implement `Into<AttachmentSource>`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 390 | ([#4451](https://github.com/matrix-org/matrix-rust-sdk/pull/4451)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 391 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 392 | - [**breaking**] Add an "offline" mode to the `SyncService`. This allows the |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 393 | `SyncService` to attempt to restart the sync automatically. It can be enabled |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 394 | with the `SyncServiceBuilder::with_offline_mode` method. Due to this addition, |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 395 | the `SyncService::stop` method has been made infallible. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 396 | ([#4592](https://github.com/matrix-org/matrix-rust-sdk/pull/4592)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 397 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 398 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 399 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 400 | - Drastically improve the performance of the `Timeline` when it receives |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 401 | hundreds and hundreds of events (approximately 10 times faster). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 402 | ([#4601](https://github.com/matrix-org/matrix-rust-sdk/pull/4601), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 403 | [#4608](https://github.com/matrix-org/matrix-rust-sdk/pull/4608), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 404 | [#4612](https://github.com/matrix-org/matrix-rust-sdk/pull/4612)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 405 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 406 | - [**breaking**] `Timeline::paginate_forwards` and |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 407 | `Timeline::paginate_backwards` are unified to work on a live or focused |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 408 | timeline. `Timeline::live_paginate_*` and `Timeline::focused_paginate_*` have |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 409 | been removed |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 410 | ([#4584](https://github.com/matrix-org/matrix-rust-sdk/pull/4584)). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 411 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 412 | - [**breaking**] `Timeline::subscribe_batched` replaces |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 413 | `Timeline::subscribe`. `subscribe` has been removed in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 414 | [#4567](https://github.com/matrix-org/matrix-rust-sdk/pull/4567), |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 415 | and `subscribe_batched` has been renamed to `subscribe` in |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 416 | [#4585](https://github.com/matrix-org/matrix-rust-sdk/pull/4585). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 417 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 418 | ## [0.9.0] - 2024-12-18 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 419 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 420 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 421 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 422 | - Add the `m.room.create` and the `m.room.history_visibility` state events to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 423 | the required state for the sync. These two state events are required to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 424 | properly compute the room preview of a joined room. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 425 | ([#4325](https://github.com/matrix-org/matrix-rust-sdk/pull/4325)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 426 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 427 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 428 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 429 | - Introduce a new variant to the `UtdCause` enum tailored for device-historical |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 430 | messages. These messages cannot be decrypted unless the client regains access |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 431 | to message history through key storage (e.g., room key backups). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 432 | ([#4375](https://github.com/matrix-org/matrix-rust-sdk/pull/4375)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 433 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 434 | ## [0.8.0] - 2024-11-19 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 435 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 436 | ### Bug fixes |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 437 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 438 | - Disable `share_pos()` inside `RoomListService`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 439 | - `UtdHookManager` no longer re-reports UTD events as late decryptions. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 440 | ([#3480](https://github.com/matrix-org/matrix-rust-sdk/pull/3480)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 441 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 442 | - Messages that we were unable to decrypt no longer display a red padlock. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 443 | ([#3956](https://github.com/matrix-org/matrix-rust-sdk/issues/3956)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 444 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 445 | - `UtdHookManager` no longer reports UTD events that were already reported in a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 446 | previous session. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 447 | ([#3519](https://github.com/matrix-org/matrix-rust-sdk/pull/3519)) |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 448 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 449 | ### Features |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 450 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 451 | - Add `m.room.join_rules` to the required state. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 452 | - `EncryptionSyncService` and `Notification` are using |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 453 | `Client::cross_process_store_locks_holder_name`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 454 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 455 | ### Refactor |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 456 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 457 | - [**breaking**] `Timeline::edit` now takes a |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 458 | `RoomMessageEventContentWithoutRelation`. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 459 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 460 | - [**breaking**] `Timeline::send_attachment` now takes an `impl Into<PathBuf>` |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 461 | for the path of the file to send. |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 462 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 463 | - [**breaking**] `Timeline::item_by_transaction_id` has been renamed to |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 464 | `Timeline::local_item_by_transaction_id` (always returns local echoes). |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 465 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 466 | ## 0.7.0 |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 467 | |
7ff8adafe9e4 | atagen | 2026-10-22 12:30 UTC | 468 | Initial release |