atagen

matrix-rust-sdk

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

Blame: crates/matrix-sdk-ui/CHANGELOG.md

7ff8adafe9e4atagen2026-10-22 12:30 UTC1
# Changelog
7ff8adafe9e4atagen2026-10-22 12:30 UTC2
7ff8adafe9e4atagen2026-10-22 12:30 UTC3
All notable changes to this project will be documented in this file.
7ff8adafe9e4atagen2026-10-22 12:30 UTC4
7ff8adafe9e4atagen2026-10-22 12:30 UTC5
<!-- changelog start -->
7ff8adafe9e4atagen2026-10-22 12:30 UTC6
7ff8adafe9e4atagen2026-10-22 12:30 UTC7
## [0.18.0](https://github.com/matrix-org/matrix-rust-sdk/tree/0.18.0) - 2026-06-02
7ff8adafe9e4atagen2026-10-22 12:30 UTC8
7ff8adafe9e4atagen2026-10-22 12:30 UTC9
### Changed
7ff8adafe9e4atagen2026-10-22 12:30 UTC10
7ff8adafe9e4atagen2026-10-22 12:30 UTC11
- [**breaking**] `SpaceRoom::new_from_known` and `SpaceRoom::new_from_summary`
7ff8adafe9e4atagen2026-10-22 12:30 UTC12
  are now asynchronous so we can properly check if they are DMs on demand
7ff8adafe9e4atagen2026-10-22 12:30 UTC13
  instead of trusting the pre-computed value. Some other related functions are
7ff8adafe9e4atagen2026-10-22 12:30 UTC14
  now `async` too.
7ff8adafe9e4atagen2026-10-22 12:30 UTC15
  ([#6561](https://github.com/matrix-org/matrix-rust-sdk/pulls/6561))
7ff8adafe9e4atagen2026-10-22 12:30 UTC16
7ff8adafe9e4atagen2026-10-22 12:30 UTC17
### Fixed
7ff8adafe9e4atagen2026-10-22 12:30 UTC18
7ff8adafe9e4atagen2026-10-22 12:30 UTC19
- Remove the ability to reply to live location events.
7ff8adafe9e4atagen2026-10-22 12:30 UTC20
  ([#6563](https://github.com/matrix-org/matrix-rust-sdk/pulls/6563))
7ff8adafe9e4atagen2026-10-22 12:30 UTC21
7ff8adafe9e4atagen2026-10-22 12:30 UTC22
## [0.17.0] - 2026-05-08
7ff8adafe9e4atagen2026-10-22 12:30 UTC23
7ff8adafe9e4atagen2026-10-22 12:30 UTC24
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC25
7ff8adafe9e4atagen2026-10-22 12:30 UTC26
- Fix a possible panic in `RoomList::entries_with_dynamic_adapters`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC27
  ([#6459](https://github.com/matrix-org/matrix-rust-sdk/pull/6459))
7ff8adafe9e4atagen2026-10-22 12:30 UTC28
- Keep stopped `beacon_info` live location sessions visible in
7ff8adafe9e4atagen2026-10-22 12:30 UTC29
  `Room::latest_event()`, so room summaries still show the last live location
7ff8adafe9e4atagen2026-10-22 12:30 UTC30
  sharing session after it ends.
7ff8adafe9e4atagen2026-10-22 12:30 UTC31
  ([#6437](https://github.com/matrix-org/matrix-rust-sdk/pull/6437))
7ff8adafe9e4atagen2026-10-22 12:30 UTC32
- Allow setting a custom Sliding Sync connection ID and timeline limit on
7ff8adafe9e4atagen2026-10-22 12:30 UTC33
  `RoomListService`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC34
  ([#6289](https://github.com/matrix-org/matrix-rust-sdk/pull/6289))
7ff8adafe9e4atagen2026-10-22 12:30 UTC35
- Don't show a "sent in clear" shield on live location timeline items in
7ff8adafe9e4atagen2026-10-22 12:30 UTC36
  encrypted rooms, since `beacon_info` is a state event that cannot be
7ff8adafe9e4atagen2026-10-22 12:30 UTC37
  encrypted by design.
7ff8adafe9e4atagen2026-10-22 12:30 UTC38
  ([#6308](https://github.com/matrix-org/matrix-rust-sdk/pull/6308))
7ff8adafe9e4atagen2026-10-22 12:30 UTC39
- Include secondary relations when re-initializing a threaded timeline after a
7ff8adafe9e4atagen2026-10-22 12:30 UTC40
  lag. ([#6209](https://github.com/matrix-org/matrix-rust-sdk/pull/6209))
7ff8adafe9e4atagen2026-10-22 12:30 UTC41
- Ensure that the display name of a `Room` in a `NotificationStatus` coming
7ff8adafe9e4atagen2026-10-22 12:30 UTC42
  from a `NotificationClient` excludes service members.
7ff8adafe9e4atagen2026-10-22 12:30 UTC43
  ([#6136](https://github.com/matrix-org/matrix-rust-sdk/pull/6136))
7ff8adafe9e4atagen2026-10-22 12:30 UTC44
- Fix the `is_last_admin` check in `LeaveSpaceRoom` since it was not
7ff8adafe9e4atagen2026-10-22 12:30 UTC45
  accounting for the membership state.
7ff8adafe9e4atagen2026-10-22 12:30 UTC46
  [#6032](https://github.com/matrix-org/matrix-rust-sdk/pull/6032)
7ff8adafe9e4atagen2026-10-22 12:30 UTC47
- [**breaking**] `LatestEventValue::Local { is_sending: bool }` is replaced
7ff8adafe9e4atagen2026-10-22 12:30 UTC48
  by [`state: LatestEventValueLocalState`] to represent 3 states: `IsSending`,
7ff8adafe9e4atagen2026-10-22 12:30 UTC49
  `HasBeenSent` and `CannotBeSent`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC50
  ([#5968](https://github.com/matrix-org/matrix-rust-sdk/pull/5968/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC51
- Fix the redecryption of events in timelines built using the
7ff8adafe9e4atagen2026-10-22 12:30 UTC52
  `TimelineFocus` of `PinnedEvents`, `Thread`, `Event`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC53
  ([#5955](https://github.com/matrix-org/matrix-rust-sdk/pull/5955))
7ff8adafe9e4atagen2026-10-22 12:30 UTC54
7ff8adafe9e4atagen2026-10-22 12:30 UTC55
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC56
7ff8adafe9e4atagen2026-10-22 12:30 UTC57
- `SpaceRoom` and `NotificationItem` now have an `is_dm` field to indicate
7ff8adafe9e4atagen2026-10-22 12:30 UTC58
  whether the room is a DM room.
7ff8adafe9e4atagen2026-10-22 12:30 UTC59
  ([#6537](https://github.com/matrix-org/matrix-rust-sdk/pull/6537))
7ff8adafe9e4atagen2026-10-22 12:30 UTC60
- Add a list of `declined_by: Vec<OwnedUserId>` to the
7ff8adafe9e4atagen2026-10-22 12:30 UTC61
  `TimelineItemContent::RtcNotification`, this will contain the list of users
7ff8adafe9e4atagen2026-10-22 12:30 UTC62
  that have declined the call.
7ff8adafe9e4atagen2026-10-22 12:30 UTC63
  ([#6494](https://github.com/matrix-org/matrix-rust-sdk/pull/6494))
7ff8adafe9e4atagen2026-10-22 12:30 UTC64
- [**breaking**] Add the `suggested` field to the `SpaceRoom` struct, which
7ff8adafe9e4atagen2026-10-22 12:30 UTC65
  indicates whether a space's admins have marked that sub-space/room as a
7ff8adafe9e4atagen2026-10-22 12:30 UTC66
  "suggested" one to join.
7ff8adafe9e4atagen2026-10-22 12:30 UTC67
  ([6417](https://github.com/matrix-org/matrix-rust-sdk/pull/6417))
7ff8adafe9e4atagen2026-10-22 12:30 UTC68
- Handle local echoes of redactions in the timeline.
7ff8adafe9e4atagen2026-10-22 12:30 UTC69
  ([#6250](https://github.com/matrix-org/matrix-rust-sdk/pull/6250))
7ff8adafe9e4atagen2026-10-22 12:30 UTC70
- [**breaking**] Remove support for `native-tls` and remove all feature
7ff8adafe9e4atagen2026-10-22 12:30 UTC71
  flags for selecting TLS backend, as `rustls` is the now the only supported
7ff8adafe9e4atagen2026-10-22 12:30 UTC72
  TLS backend.
7ff8adafe9e4atagen2026-10-22 12:30 UTC73
  ([#6409](https://github.com/matrix-org/matrix-rust-sdk/pull/6409))
7ff8adafe9e4atagen2026-10-22 12:30 UTC74
- Add `call_intent` to `TimelineItemContent::RtcNotification`
7ff8adafe9e4atagen2026-10-22 12:30 UTC75
  ([#6412](https://github.com/matrix-org/matrix-rust-sdk/pull/6412))
7ff8adafe9e4atagen2026-10-22 12:30 UTC76
- Introduce a `ThreadListService` which offers reactive interfaces for rendering
7ff8adafe9e4atagen2026-10-22 12:30 UTC77
  and managing the list of threads from a particular room.
7ff8adafe9e4atagen2026-10-22 12:30 UTC78
  ([#6311](https://github.com/matrix-org/matrix-rust-sdk/pull/6311))
7ff8adafe9e4atagen2026-10-22 12:30 UTC79
- [**breaking**] Remove the `Room::load_thread_list` in favor of the new
7ff8adafe9e4atagen2026-10-22 12:30 UTC80
  `ThreadListService`
7ff8adafe9e4atagen2026-10-22 12:30 UTC81
  ([#6311](https://github.com/matrix-org/matrix-rust-sdk/pull/6311))
7ff8adafe9e4atagen2026-10-22 12:30 UTC82
- Add support for
7ff8adafe9e4atagen2026-10-22 12:30 UTC83
  [MSC3489](https://github.com/matrix-org/matrix-spec-proposals/pull/3489) live
7ff8adafe9e4atagen2026-10-22 12:30 UTC84
  location sharing through a new `TimelineItemContent::LiveLocation` variant.
7ff8adafe9e4atagen2026-10-22 12:30 UTC85
- The internal timeline unique ID may be recycled when an event is deduplicated
7ff8adafe9e4atagen2026-10-22 12:30 UTC86
  from the timeline, so that embedders can notice that it's the same item and
7ff8adafe9e4atagen2026-10-22 12:30 UTC87
  avoid unnecessary re-rendering.
7ff8adafe9e4atagen2026-10-22 12:30 UTC88
  ([#6228](https://github.com/matrix-org/matrix-rust-sdk/pull/6228))
7ff8adafe9e4atagen2026-10-22 12:30 UTC89
- [**breaking**] Add `NotificationState.EventRedacted` enum value, to handle the
7ff8adafe9e4atagen2026-10-22 12:30 UTC90
  case where a notification resolves to a redacted event.
7ff8adafe9e4atagen2026-10-22 12:30 UTC91
  ([#6203](https://github.com/matrix-org/matrix-rust-sdk/pull/6203))
7ff8adafe9e4atagen2026-10-22 12:30 UTC92
- [**breaking**] Extend `TimelineFocus::Event` to allow marking the target
7ff8adafe9e4atagen2026-10-22 12:30 UTC93
  event as the root of a thread.
7ff8adafe9e4atagen2026-10-22 12:30 UTC94
  ([#6050](https://github.com/matrix-org/matrix-rust-sdk/pull/6050))
7ff8adafe9e4atagen2026-10-22 12:30 UTC95
- [**breaking**] Remove `TimelineEventTypeFilter` which has been replaced by
7ff8adafe9e4atagen2026-10-22 12:30 UTC96
  the more generic `TimelineEventFilter`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC97
  ([#6070](https://github.com/matrix-org/matrix-rust-sdk/pull/6070/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC98
- Add `TimelineEventFilter` for filtering events based on their type or
7ff8adafe9e4atagen2026-10-22 12:30 UTC99
  content. For content filtering, only membership and profile change filters
7ff8adafe9e4atagen2026-10-22 12:30 UTC100
  are available as of now.
7ff8adafe9e4atagen2026-10-22 12:30 UTC101
  ([#6048](https://github.com/matrix-org/matrix-rust-sdk/pull/6048/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC102
- Introduce `SpaceFilter`s as a mechanism for narrowing down what's displayed in
7ff8adafe9e4atagen2026-10-22 12:30 UTC103
  the room list
7ff8adafe9e4atagen2026-10-22 12:30 UTC104
  ([#6025](https://github.com/matrix-org/matrix-rust-sdk/pull/6025))
7ff8adafe9e4atagen2026-10-22 12:30 UTC105
- Utilize the cache and include common relations when focusing a timeline on an
7ff8adafe9e4atagen2026-10-22 12:30 UTC106
  event without requestion context.
7ff8adafe9e4atagen2026-10-22 12:30 UTC107
  ([#5858](https://github.com/matrix-org/matrix-rust-sdk/pull/5858))
7ff8adafe9e4atagen2026-10-22 12:30 UTC108
- [**breaking**] `EventTimelineItem::get_shield` now returns a new type,
7ff8adafe9e4atagen2026-10-22 12:30 UTC109
  `TimelineEventShieldState`, which extends the old `ShieldState` with a code
7ff8adafe9e4atagen2026-10-22 12:30 UTC110
  for `SentInClear`, now that the latter has been removed from `ShieldState`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC111
  ([#5959](https://github.com/matrix-org/matrix-rust-sdk/pull/5959))
7ff8adafe9e4atagen2026-10-22 12:30 UTC112
- Add `SpaceService::get_space_room` to get a space
7ff8adafe9e4atagen2026-10-22 12:30 UTC113
  given its id from the space graph if available.
7ff8adafe9e4atagen2026-10-22 12:30 UTC114
  ([#5944](https://github.com/matrix-org/matrix-rust-sdk/pull/5944))
7ff8adafe9e4atagen2026-10-22 12:30 UTC115
- [**breaking**]: The new Latest Event API replaces the old API. All the
7ff8adafe9e4atagen2026-10-22 12:30 UTC116
  `new_` prefixes have been removed. The following methods are removed:
7ff8adafe9e4atagen2026-10-22 12:30 UTC117
  `EventTimelineItem::from_latest_event`, and `Timeline::latest_event`. See the
7ff8adafe9e4atagen2026-10-22 12:30 UTC118
  documentation of `matrix_sdk::latest_event` to learn about the new API.
7ff8adafe9e4atagen2026-10-22 12:30 UTC119
  ([#5624](https://github.com/matrix-org/matrix-rust-sdk/pull/5624/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC120
- `Room::load_event_with_relations` now also calls `/relations` to fetch related
7ff8adafe9e4atagen2026-10-22 12:30 UTC121
  events when falling back to network mode after a cache miss.
7ff8adafe9e4atagen2026-10-22 12:30 UTC122
  ([#5930](https://github.com/matrix-org/matrix-rust-sdk/pull/5930))
7ff8adafe9e4atagen2026-10-22 12:30 UTC123
- Expose `EventTimelineItem::forwarder` and `forwarder_profile`, which, if
7ff8adafe9e4atagen2026-10-22 12:30 UTC124
  present, provide the ID and profile of the user who forwarded the keys used to
7ff8adafe9e4atagen2026-10-22 12:30 UTC125
  decrypt the event as part of an
7ff8adafe9e4atagen2026-10-22 12:30 UTC126
  [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268) key
7ff8adafe9e4atagen2026-10-22 12:30 UTC127
  bundle. ([#6000](https://github.com/matrix-org/matrix-rust-sdk/pull/6000))
7ff8adafe9e4atagen2026-10-22 12:30 UTC128
7ff8adafe9e4atagen2026-10-22 12:30 UTC129
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC130
7ff8adafe9e4atagen2026-10-22 12:30 UTC131
- Use `DmRoomDefinition` to check if a room should be considered part of the
7ff8adafe9e4atagen2026-10-22 12:30 UTC132
  `RoomCategory::People` or `RoomCategory::Room` when using room list filters.
7ff8adafe9e4atagen2026-10-22 12:30 UTC133
  ([#6490](https://github.com/matrix-org/matrix-rust-sdk/pull/6490))
7ff8adafe9e4atagen2026-10-22 12:30 UTC134
- [**breaking**] `AnyOtherStateEventContentChange::RoomAliases` was removed.
7ff8adafe9e4atagen2026-10-22 12:30 UTC135
  This state event type was removed from the Matrix specification a while ago,
7ff8adafe9e4atagen2026-10-22 12:30 UTC136
  and support for it has been removed in Ruma.
7ff8adafe9e4atagen2026-10-22 12:30 UTC137
  ([#6414](https://github.com/matrix-org/matrix-rust-sdk/pull/6414))
7ff8adafe9e4atagen2026-10-22 12:30 UTC138
- [**breaking**] Move `LiveLocation` out of `TimelineItemContent` and into
7ff8adafe9e4atagen2026-10-22 12:30 UTC139
  `MsgLikeKind` so it has access to `MsgLikeContent` `reactions`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC140
  ([#6286](https://github.com/matrix-org/matrix-rust-sdk/pull/6286))
7ff8adafe9e4atagen2026-10-22 12:30 UTC141
- [**breaking**] Rename `AnyOtherFullStateEventContent` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC142
  `AnyOtherStateEventContentChange` to match the name change in the upstream
7ff8adafe9e4atagen2026-10-22 12:30 UTC143
  types. ([#6218](https://github.com/matrix-org/matrix-rust-sdk/pull/6218))
7ff8adafe9e4atagen2026-10-22 12:30 UTC144
- [**breaking**] Remove `WithLocking` from `EncryptionSyncService`, the locking
7ff8adafe9e4atagen2026-10-22 12:30 UTC145
  mechanism will be taken from the parent `Client` with
7ff8adafe9e4atagen2026-10-22 12:30 UTC146
  `Client::cross_process_store_config`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC147
  ([#6160](https://github.com/matrix-org/matrix-rust-sdk/pull/6160))
7ff8adafe9e4atagen2026-10-22 12:30 UTC148
- [**breaking**] The [`Timeline::pin_event`] and [`Timeline::unpin_event`]
7ff8adafe9e4atagen2026-10-22 12:30 UTC149
  methods have been moved to the SDK crate, in the `Room` object. Users can
7ff8adafe9e4atagen2026-10-22 12:30 UTC150
  replace previous uses with `timeline.room().pin_event()` etc.
7ff8adafe9e4atagen2026-10-22 12:30 UTC151
  ([#6106](https://github.com/matrix-org/matrix-rust-sdk/pull/6106))
7ff8adafe9e4atagen2026-10-22 12:30 UTC152
- [**breaking**] Refactored `is_last_admin` to `is_last_owner` the check will
7ff8adafe9e4atagen2026-10-22 12:30 UTC153
  now account also for v12 rooms, where creators and users with PL 150 matter.
7ff8adafe9e4atagen2026-10-22 12:30 UTC154
  ([#6036](https://github.com/matrix-org/matrix-rust-sdk/pull/6036))
7ff8adafe9e4atagen2026-10-22 12:30 UTC155
- [**breaking**] The `SpaceService` will no longer auto-subscribe to required
7ff8adafe9e4atagen2026-10-22 12:30 UTC156
  client events when invoking the `subscribe_to_joined_spaces` but instead do it
7ff8adafe9e4atagen2026-10-22 12:30 UTC157
  through its, now async, constructor.
7ff8adafe9e4atagen2026-10-22 12:30 UTC158
  ([#5972](https://github.com/matrix-org/matrix-rust-sdk/pull/5972))
7ff8adafe9e4atagen2026-10-22 12:30 UTC159
- [**breaking**] The `SpaceService`'s `joined_spaces` method has been renamed
7ff8adafe9e4atagen2026-10-22 12:30 UTC160
  `top_level_joined_spaces` and `subscribe_to_joined_spaces` to
7ff8adafe9e4atagen2026-10-22 12:30 UTC161
  `space_service.subscribe_to_top_level_joined_spaces`
7ff8adafe9e4atagen2026-10-22 12:30 UTC162
  ([#5972](https://github.com/matrix-org/matrix-rust-sdk/pull/5972))
7ff8adafe9e4atagen2026-10-22 12:30 UTC163
- `RoomListService::subscribe_to_rooms` now forgets previous subscriptions.
7ff8adafe9e4atagen2026-10-22 12:30 UTC164
  ([#6012](https://github.com/matrix-org/matrix-rust-sdk/pull/6012))
7ff8adafe9e4atagen2026-10-22 12:30 UTC165
7ff8adafe9e4atagen2026-10-22 12:30 UTC166
## [0.16.1] - 2026-05-08
7ff8adafe9e4atagen2026-10-22 12:30 UTC167
7ff8adafe9e4atagen2026-10-22 12:30 UTC168
No notable changes in this release.
7ff8adafe9e4atagen2026-10-22 12:30 UTC169
7ff8adafe9e4atagen2026-10-22 12:30 UTC170
## [0.16.0] - 2025-12-04
7ff8adafe9e4atagen2026-10-22 12:30 UTC171
7ff8adafe9e4atagen2026-10-22 12:30 UTC172
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC173
7ff8adafe9e4atagen2026-10-22 12:30 UTC174
- [**breaking**] `TimelineBuilder::track_read_marker_and_receipts` now takes a
7ff8adafe9e4atagen2026-10-22 12:30 UTC175
  parameter to allow tracking to be enabled for all events (like before) or only
7ff8adafe9e4atagen2026-10-22 12:30 UTC176
  for message-like events (which prevents read receipts from being placed on
7ff8adafe9e4atagen2026-10-22 12:30 UTC177
  state events).
7ff8adafe9e4atagen2026-10-22 12:30 UTC178
  ([#5900](https://github.com/matrix-org/matrix-rust-sdk/pull/5900))
7ff8adafe9e4atagen2026-10-22 12:30 UTC179
7ff8adafe9e4atagen2026-10-22 12:30 UTC180
## [0.15.0] - 2025-11-27
7ff8adafe9e4atagen2026-10-22 12:30 UTC181
7ff8adafe9e4atagen2026-10-22 12:30 UTC182
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC183
7ff8adafe9e4atagen2026-10-22 12:30 UTC184
- Expose `is_space` in `NotificationItem`, allowing clients to determine if the
7ff8adafe9e4atagen2026-10-22 12:30 UTC185
  room that triggered the notification is a space.
7ff8adafe9e4atagen2026-10-22 12:30 UTC186
- [**breaking**] The `LatestEventValue::Local` type gains 2 new fields: `sender`
7ff8adafe9e4atagen2026-10-22 12:30 UTC187
  and `profile`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC188
  ([#5885](https://github.com/matrix-org/matrix-rust-sdk/pull/5885))
7ff8adafe9e4atagen2026-10-22 12:30 UTC189
- Add push actions to `NotificationItem`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC190
  ([#5835](https://github.com/matrix-org/matrix-rust-sdk/pull/5835))
7ff8adafe9e4atagen2026-10-22 12:30 UTC191
- Add support for top level space ordering through
7ff8adafe9e4atagen2026-10-22 12:30 UTC192
  [MSC3230](https://github.com/matrix-org/matrix-spec-proposals/pull/3230) and
7ff8adafe9e4atagen2026-10-22 12:30 UTC193
  `m.space_order` room account data fields
7ff8adafe9e4atagen2026-10-22 12:30 UTC194
  ([#5799](https://github.com/matrix-org/matrix-rust-sdk/pull/5799))
7ff8adafe9e4atagen2026-10-22 12:30 UTC195
7ff8adafe9e4atagen2026-10-22 12:30 UTC196
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC197
7ff8adafe9e4atagen2026-10-22 12:30 UTC198
- `Timeline::latest_event` will return the latest event in the timeline, not the
7ff8adafe9e4atagen2026-10-22 12:30 UTC199
  latest item of the timeline if it's an event.
7ff8adafe9e4atagen2026-10-22 12:30 UTC200
- `TimelineFocusKind::Event` can now handle both the existing event pagination
7ff8adafe9e4atagen2026-10-22 12:30 UTC201
  and thread pagination if the focused event is part of a thread
7ff8adafe9e4atagen2026-10-22 12:30 UTC202
  ([#5678](https://github.com/matrix-org/matrix-rust-sdk/pull/5678)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC203
- [**breaking**] The `Room` type in `room_list_service` is renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC204
  `RoomListItem`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC205
  ([#5684](https://github.com/matrix-org/matrix-rust-sdk/pull/5684))
7ff8adafe9e4atagen2026-10-22 12:30 UTC206
7ff8adafe9e4atagen2026-10-22 12:30 UTC207
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC208
7ff8adafe9e4atagen2026-10-22 12:30 UTC209
- `Timeline::latest_event_id` won't take threaded events into account on
7ff8adafe9e4atagen2026-10-22 12:30 UTC210
  live/event focused timelines if `hide_threaded_events` is enabled. This fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC211
  a bug in `Timeline::mark_as_read` that incorrectly tried to send a read
7ff8adafe9e4atagen2026-10-22 12:30 UTC212
  receipt for threaded events that aren't really part of those timelines.
7ff8adafe9e4atagen2026-10-22 12:30 UTC213
  ([#5864](https://github.com/matrix-org/matrix-rust-sdk/pull/5864/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC214
- Avoid replacing timeline items when the encryption info is unchanged.
7ff8adafe9e4atagen2026-10-22 12:30 UTC215
  ([#5660](https://github.com/matrix-org/matrix-rust-sdk/pull/5660))
7ff8adafe9e4atagen2026-10-22 12:30 UTC216
- Improvement performance of `RoomList` by introducing a new `RoomListItem` type
7ff8adafe9e4atagen2026-10-22 12:30 UTC217
  (that replaces the `Room` type).
7ff8adafe9e4atagen2026-10-22 12:30 UTC218
  ([#5684](https://github.com/matrix-org/matrix-rust-sdk/pull/5684))
7ff8adafe9e4atagen2026-10-22 12:30 UTC219
7ff8adafe9e4atagen2026-10-22 12:30 UTC220
## [0.14.0] - 2025-09-04
7ff8adafe9e4atagen2026-10-22 12:30 UTC221
7ff8adafe9e4atagen2026-10-22 12:30 UTC222
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC223
7ff8adafe9e4atagen2026-10-22 12:30 UTC224
- Add a new [`SpaceService`] that provides high level reactive interfaces for
7ff8adafe9e4atagen2026-10-22 12:30 UTC225
  listing the user's joined top level spaces as long as their children.
7ff8adafe9e4atagen2026-10-22 12:30 UTC226
  ([#5509](https://github.com/matrix-org/matrix-rust-sdk/pull/5509))
7ff8adafe9e4atagen2026-10-22 12:30 UTC227
- Add `new_filter_low_priority` and `new_filter_non_low_priority` filters to the
7ff8adafe9e4atagen2026-10-22 12:30 UTC228
  room list filtering system, allowing clients to filter rooms based on their
7ff8adafe9e4atagen2026-10-22 12:30 UTC229
  low priority status. The filters use the `Room::is_low_priority()` method
7ff8adafe9e4atagen2026-10-22 12:30 UTC230
  which checks for the `m.lowpriority` room tag.
7ff8adafe9e4atagen2026-10-22 12:30 UTC231
  ([#5508](https://github.com/matrix-org/matrix-rust-sdk/pull/5508))
7ff8adafe9e4atagen2026-10-22 12:30 UTC232
- [**breaking**] Refactor the `non_space` filter into a `space` filter,
7ff8adafe9e4atagen2026-10-22 12:30 UTC233
  favouring its use in combination with the `not` filter.
7ff8adafe9e4atagen2026-10-22 12:30 UTC234
  ([#5508](https://github.com/matrix-org/matrix-rust-sdk/pull/5508))
7ff8adafe9e4atagen2026-10-22 12:30 UTC235
- [**breaking**] Space rooms are now being retrieved through sliding sync and
7ff8adafe9e4atagen2026-10-22 12:30 UTC236
  the newly introduced [`room_list_service::filters::new_filter_non_space`]
7ff8adafe9e4atagen2026-10-22 12:30 UTC237
  filter should be used to exclude them from any room list.
7ff8adafe9e4atagen2026-10-22 12:30 UTC238
  ([5479](https://github.com/matrix-org/matrix-rust-sdk/pull/5479))
7ff8adafe9e4atagen2026-10-22 12:30 UTC239
- [**breaking**] [`Timeline::send_gallery()`] now automatically fills in the
7ff8adafe9e4atagen2026-10-22 12:30 UTC240
  thread relationship, based on the timeline focus. As a result, the
7ff8adafe9e4atagen2026-10-22 12:30 UTC241
  `GalleryConfig::reply()` builder method has been replaced with
7ff8adafe9e4atagen2026-10-22 12:30 UTC242
  `GalleryConfig::in_reply_to`, and only takes an optional event id (the event
7ff8adafe9e4atagen2026-10-22 12:30 UTC243
  that is effectively replied to) instead of the `Reply` type. The proper way to
7ff8adafe9e4atagen2026-10-22 12:30 UTC244
  start a thread with a gallery event is now thus to create a threaded-focused
7ff8adafe9e4atagen2026-10-22 12:30 UTC245
  timeline, and then use `Timeline::send_gallery()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC246
  ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427))
7ff8adafe9e4atagen2026-10-22 12:30 UTC247
- [**breaking**] [`Timeline::send_attachment()`] now automatically fills in the
7ff8adafe9e4atagen2026-10-22 12:30 UTC248
  thread relationship, based on the timeline focus. As a result, there's a new
7ff8adafe9e4atagen2026-10-22 12:30 UTC249
  `matrix_sdk_ui::timeline::AttachmentConfig` type in town, that has a
7ff8adafe9e4atagen2026-10-22 12:30 UTC250
  simplified optional parameter `replied_to` of type `OwnedEventId` instead of
7ff8adafe9e4atagen2026-10-22 12:30 UTC251
  the `Reply` type and that must be used in place of
7ff8adafe9e4atagen2026-10-22 12:30 UTC252
  `matrix_sdk::attachment::AttachmentConfig`. The proper way to start a thread
7ff8adafe9e4atagen2026-10-22 12:30 UTC253
  with a media attachment is now thus to create a threaded-focused timeline, and
7ff8adafe9e4atagen2026-10-22 12:30 UTC254
  then use `Timeline::send_attachment()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC255
  ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427))
7ff8adafe9e4atagen2026-10-22 12:30 UTC256
- [**breaking**] [`Timeline::send_reply()`] now automatically fills in the
7ff8adafe9e4atagen2026-10-22 12:30 UTC257
  thread relationship, based on the timeline focus. As a result, it only takes
7ff8adafe9e4atagen2026-10-22 12:30 UTC258
  an `OwnedEventId` parameter, instead of the `Reply` type. The proper way to
7ff8adafe9e4atagen2026-10-22 12:30 UTC259
  start a thread is now thus to create a threaded-focused timeline, and then use
7ff8adafe9e4atagen2026-10-22 12:30 UTC260
  `Timeline::send()`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC261
  ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427))
7ff8adafe9e4atagen2026-10-22 12:30 UTC262
- `Timeline::send()` will now automatically fill the thread relationship, if the
7ff8adafe9e4atagen2026-10-22 12:30 UTC263
  timeline has a thread focus, and the sent event doesn't have a prefilled
7ff8adafe9e4atagen2026-10-22 12:30 UTC264
  `relates_to` field (i.e. a relationship).
7ff8adafe9e4atagen2026-10-22 12:30 UTC265
  ([5427](https://github.com/matrix-org/matrix-rust-sdk/pull/5427))
7ff8adafe9e4atagen2026-10-22 12:30 UTC266
7ff8adafe9e4atagen2026-10-22 12:30 UTC267
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC268
7ff8adafe9e4atagen2026-10-22 12:30 UTC269
- [**breaking**] The MSRV has been bumped to Rust 1.88.
7ff8adafe9e4atagen2026-10-22 12:30 UTC270
  ([#5431](https://github.com/matrix-org/matrix-rust-sdk/pull/5431))
7ff8adafe9e4atagen2026-10-22 12:30 UTC271
7ff8adafe9e4atagen2026-10-22 12:30 UTC272
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC273
7ff8adafe9e4atagen2026-10-22 12:30 UTC274
- Correctly remove unable-to-decrypt items that have been decrypted but contain
7ff8adafe9e4atagen2026-10-22 12:30 UTC275
  unsupported event types.
7ff8adafe9e4atagen2026-10-22 12:30 UTC276
  ([#5463](https://github.com/matrix-org/matrix-rust-sdk/pull/5463))
7ff8adafe9e4atagen2026-10-22 12:30 UTC277
7ff8adafe9e4atagen2026-10-22 12:30 UTC278
## [0.13.0] - 2025-07-10
7ff8adafe9e4atagen2026-10-22 12:30 UTC279
7ff8adafe9e4atagen2026-10-22 12:30 UTC280
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC281
7ff8adafe9e4atagen2026-10-22 12:30 UTC282
- Infer timeline read receipt threads for the `send_single_receipt` method from
7ff8adafe9e4atagen2026-10-22 12:30 UTC283
  the focus mode and associated `hide_threaded_events` flag.
7ff8adafe9e4atagen2026-10-22 12:30 UTC284
  ([5325](https://github.com/matrix-org/matrix-rust-sdk/pull/5325))
7ff8adafe9e4atagen2026-10-22 12:30 UTC285
- Add `NotificationItem::room_topic` to the `NotificationItem` struct, which
7ff8adafe9e4atagen2026-10-22 12:30 UTC286
  contains the topic of the room. This is useful for displaying the room topic
7ff8adafe9e4atagen2026-10-22 12:30 UTC287
  in notifications.
7ff8adafe9e4atagen2026-10-22 12:30 UTC288
  ([#5300](https://github.com/matrix-org/matrix-rust-sdk/pull/5300))
7ff8adafe9e4atagen2026-10-22 12:30 UTC289
- Add `EmbeddedEvent::timestamp` and `EmbeddedEvent::identifier` which are
7ff8adafe9e4atagen2026-10-22 12:30 UTC290
  already available in regular timeline items.
7ff8adafe9e4atagen2026-10-22 12:30 UTC291
  ([#5331](https://github.com/matrix-org/matrix-rust-sdk/pull/5331))
7ff8adafe9e4atagen2026-10-22 12:30 UTC292
- `RoomListService::subscribe_to_rooms` becomes `async` and automatically calls
7ff8adafe9e4atagen2026-10-22 12:30 UTC293
  `matrix_sdk::latest_events::LatestEvents::listen_to_room`
7ff8adafe9e4atagen2026-10-22 12:30 UTC294
  ([#5369](https://github.com/matrix-org/matrix-rust-sdk/pull/5369))
7ff8adafe9e4atagen2026-10-22 12:30 UTC295
7ff8adafe9e4atagen2026-10-22 12:30 UTC296
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC297
7ff8adafe9e4atagen2026-10-22 12:30 UTC298
- [**breaking**] The function provided to `TimelineBuilder::event_filter()`
7ff8adafe9e4atagen2026-10-22 12:30 UTC299
  must take `RoomVersionRules` as second argument instead of a `RoomVersionId`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC300
  The `default_event_filter()` reflects that change.
7ff8adafe9e4atagen2026-10-22 12:30 UTC301
  ([#5337](https://github.com/matrix-org/matrix-rust-sdk/pull/5337))
7ff8adafe9e4atagen2026-10-22 12:30 UTC302
7ff8adafe9e4atagen2026-10-22 12:30 UTC303
## [0.12.0] - 2025-06-10
7ff8adafe9e4atagen2026-10-22 12:30 UTC304
7ff8adafe9e4atagen2026-10-22 12:30 UTC305
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC306
7ff8adafe9e4atagen2026-10-22 12:30 UTC307
- [**breaking**] [`TimelineItemContent::reactions()`] returns an
7ff8adafe9e4atagen2026-10-22 12:30 UTC308
  `Option<&ReactionsByKeyBySender>` instead of `ReactionsByKeyBySender`. This
7ff8adafe9e4atagen2026-10-22 12:30 UTC309
  reflects the fact that some timeline items cannot hold reactions at all.
7ff8adafe9e4atagen2026-10-22 12:30 UTC310
- `NotificationItem::room_join_rule` is now optional to reflect that the join
7ff8adafe9e4atagen2026-10-22 12:30 UTC311
  rule state event might be missing, in which case it will be set to `None`. The
7ff8adafe9e4atagen2026-10-22 12:30 UTC312
  `NotificationItem::is_public` field has been replaced with a method that
7ff8adafe9e4atagen2026-10-22 12:30 UTC313
  returns an `Option<bool>`, based on the same logic.
7ff8adafe9e4atagen2026-10-22 12:30 UTC314
  ([#5278](https://github.com/matrix-org/matrix-rust-sdk/pull/5278))
7ff8adafe9e4atagen2026-10-22 12:30 UTC315
7ff8adafe9e4atagen2026-10-22 12:30 UTC316
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC317
7ff8adafe9e4atagen2026-10-22 12:30 UTC318
- Introduce `Timeline` regions, which helps to remove a class of bugs in the
7ff8adafe9e4atagen2026-10-22 12:30 UTC319
  `Timeline` where items could be inserted in the wrong _regions_, such as
7ff8adafe9e4atagen2026-10-22 12:30 UTC320
  a remote timeline item before the `TimelineStart` virtual timeline item.
7ff8adafe9e4atagen2026-10-22 12:30 UTC321
  ([#5000](https://github.com/matrix-org/matrix-rust-sdk/pull/5000))
7ff8adafe9e4atagen2026-10-22 12:30 UTC322
- `NotificationClient` will filter out events sent by ignored users on
7ff8adafe9e4atagen2026-10-22 12:30 UTC323
  `get_notification` and `get_notifications`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC324
  ([#5081](https://github.com/matrix-org/matrix-rust-sdk/pull/5081))
7ff8adafe9e4atagen2026-10-22 12:30 UTC325
7ff8adafe9e4atagen2026-10-22 12:30 UTC326
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC327
7ff8adafe9e4atagen2026-10-22 12:30 UTC328
- `Timeline::send_single_receipt()` and `Timeline::send_multiple_receipts()` now
7ff8adafe9e4atagen2026-10-22 12:30 UTC329
  also unset the unread flag of the room if an unthreaded read receipt is sent.
7ff8adafe9e4atagen2026-10-22 12:30 UTC330
  ([#5055](https://github.com/matrix-org/matrix-rust-sdk/pull/5055))
7ff8adafe9e4atagen2026-10-22 12:30 UTC331
- `Timeline::mark_as_read()` unsets the unread flag of the room if it was set.
7ff8adafe9e4atagen2026-10-22 12:30 UTC332
  ([#5055](https://github.com/matrix-org/matrix-rust-sdk/pull/5055))
7ff8adafe9e4atagen2026-10-22 12:30 UTC333
- Add new method `Timeline::send_gallery` to allow sending MSC4274-style
7ff8adafe9e4atagen2026-10-22 12:30 UTC334
  galleries.
7ff8adafe9e4atagen2026-10-22 12:30 UTC335
  ([#5125](https://github.com/matrix-org/matrix-rust-sdk/pull/5125))
7ff8adafe9e4atagen2026-10-22 12:30 UTC336
7ff8adafe9e4atagen2026-10-22 12:30 UTC337
## [0.11.0] - 2025-04-11
7ff8adafe9e4atagen2026-10-22 12:30 UTC338
7ff8adafe9e4atagen2026-10-22 12:30 UTC339
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC340
7ff8adafe9e4atagen2026-10-22 12:30 UTC341
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC342
7ff8adafe9e4atagen2026-10-22 12:30 UTC343
- [**breaking**] Optionally allow starting threads with `Timeline::send_reply`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC344
  ([#4819](https://github.com/matrix-org/matrix-rust-sdk/pull/4819))
7ff8adafe9e4atagen2026-10-22 12:30 UTC345
- [**breaking**] Push `RepliedToInfo`, `ReplyContent`, `EnforceThread` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC346
  `UnsupportedReplyItem` (becoming `ReplyError`) down into matrix_sdk.
7ff8adafe9e4atagen2026-10-22 12:30 UTC347
  [`Timeline::send_reply()`] now takes an event ID rather than a
7ff8adafe9e4atagen2026-10-22 12:30 UTC348
  `RepliedToInfo`. `Timeline::replied_to_info_from_event_id` has been made
7ff8adafe9e4atagen2026-10-22 12:30 UTC349
  private in `matrix_sdk`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC350
  ([#4842](https://github.com/matrix-org/matrix-rust-sdk/pull/4842))
7ff8adafe9e4atagen2026-10-22 12:30 UTC351
- Allow sending media as (thread) replies. The reply behaviour can be configured
7ff8adafe9e4atagen2026-10-22 12:30 UTC352
  through new fields on [`AttachmentConfig`].
7ff8adafe9e4atagen2026-10-22 12:30 UTC353
  ([#4852](https://github.com/matrix-org/matrix-rust-sdk/pull/4852))
7ff8adafe9e4atagen2026-10-22 12:30 UTC354
7ff8adafe9e4atagen2026-10-22 12:30 UTC355
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC356
7ff8adafe9e4atagen2026-10-22 12:30 UTC357
- [**breaking**] Reactions on a given timeline item have been moved from
7ff8adafe9e4atagen2026-10-22 12:30 UTC358
  [`EventTimelineItem::reactions()`] to [`TimelineItemContent::reactions()`];
7ff8adafe9e4atagen2026-10-22 12:30 UTC359
  they're thus available from an [`EventTimelineItem`] by calling
7ff8adafe9e4atagen2026-10-22 12:30 UTC360
  `.content().reactions()`. They're also returned by ownership (cloned) instead
7ff8adafe9e4atagen2026-10-22 12:30 UTC361
  of by reference.
7ff8adafe9e4atagen2026-10-22 12:30 UTC362
  ([#4576](https://github.com/matrix-org/matrix-rust-sdk/pull/4576))
7ff8adafe9e4atagen2026-10-22 12:30 UTC363
- [**breaking**] The parameters `event_id` and `enforce_thread` on
7ff8adafe9e4atagen2026-10-22 12:30 UTC364
  [`Timeline::send_reply()`] have been wrapped in a `reply` struct parameter.
7ff8adafe9e4atagen2026-10-22 12:30 UTC365
  ([#4880](https://github.com/matrix-org/matrix-rust-sdk/pull/4880/))
7ff8adafe9e4atagen2026-10-22 12:30 UTC366
7ff8adafe9e4atagen2026-10-22 12:30 UTC367
## [0.10.0] - 2025-02-04
7ff8adafe9e4atagen2026-10-22 12:30 UTC368
7ff8adafe9e4atagen2026-10-22 12:30 UTC369
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC370
7ff8adafe9e4atagen2026-10-22 12:30 UTC371
- Don't consider rooms in the banned state to be non-left rooms. This bug was
7ff8adafe9e4atagen2026-10-22 12:30 UTC372
  introduced due to the introduction of the banned state for rooms, and the
7ff8adafe9e4atagen2026-10-22 12:30 UTC373
  non-left room filter did not take the new room state into account.
7ff8adafe9e4atagen2026-10-22 12:30 UTC374
  ([#4448](https://github.com/matrix-org/matrix-rust-sdk/pull/4448))
7ff8adafe9e4atagen2026-10-22 12:30 UTC375
7ff8adafe9e4atagen2026-10-22 12:30 UTC376
- Fix `EventTimelineItem::latest_edit_json()` when it is populated by a live
7ff8adafe9e4atagen2026-10-22 12:30 UTC377
  edit. ([#4552](https://github.com/matrix-org/matrix-rust-sdk/pull/4552))
7ff8adafe9e4atagen2026-10-22 12:30 UTC378
7ff8adafe9e4atagen2026-10-22 12:30 UTC379
- Fix our own explicit read receipt being ignored when loading it from the
7ff8adafe9e4atagen2026-10-22 12:30 UTC380
  state store, which resulted in our own read receipt being wrong sometimes.
7ff8adafe9e4atagen2026-10-22 12:30 UTC381
  ([#4600](https://github.com/matrix-org/matrix-rust-sdk/pull/4600))
7ff8adafe9e4atagen2026-10-22 12:30 UTC382
7ff8adafe9e4atagen2026-10-22 12:30 UTC383
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC384
7ff8adafe9e4atagen2026-10-22 12:30 UTC385
- [**breaking**] `Timeline::send_attachment()` now takes a type that implements
7ff8adafe9e4atagen2026-10-22 12:30 UTC386
  `Into<AttachmentSource>` instead of a type that implements `Into<PathBuf>`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC387
  `AttachmentSource` allows to send an attachment either from a file, or with
7ff8adafe9e4atagen2026-10-22 12:30 UTC388
  the bytes and the filename of the attachment. Note that all types that
7ff8adafe9e4atagen2026-10-22 12:30 UTC389
  implement `Into<PathBuf>` also implement `Into<AttachmentSource>`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC390
  ([#4451](https://github.com/matrix-org/matrix-rust-sdk/pull/4451))
7ff8adafe9e4atagen2026-10-22 12:30 UTC391
7ff8adafe9e4atagen2026-10-22 12:30 UTC392
- [**breaking**] Add an "offline" mode to the `SyncService`. This allows the
7ff8adafe9e4atagen2026-10-22 12:30 UTC393
  `SyncService` to attempt to restart the sync automatically. It can be enabled
7ff8adafe9e4atagen2026-10-22 12:30 UTC394
  with the `SyncServiceBuilder::with_offline_mode` method. Due to this addition,
7ff8adafe9e4atagen2026-10-22 12:30 UTC395
  the `SyncService::stop` method has been made infallible.
7ff8adafe9e4atagen2026-10-22 12:30 UTC396
  ([#4592](https://github.com/matrix-org/matrix-rust-sdk/pull/4592))
7ff8adafe9e4atagen2026-10-22 12:30 UTC397
7ff8adafe9e4atagen2026-10-22 12:30 UTC398
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC399
7ff8adafe9e4atagen2026-10-22 12:30 UTC400
- Drastically improve the performance of the `Timeline` when it receives
7ff8adafe9e4atagen2026-10-22 12:30 UTC401
  hundreds and hundreds of events (approximately 10 times faster).
7ff8adafe9e4atagen2026-10-22 12:30 UTC402
  ([#4601](https://github.com/matrix-org/matrix-rust-sdk/pull/4601),
7ff8adafe9e4atagen2026-10-22 12:30 UTC403
  [#4608](https://github.com/matrix-org/matrix-rust-sdk/pull/4608),
7ff8adafe9e4atagen2026-10-22 12:30 UTC404
  [#4612](https://github.com/matrix-org/matrix-rust-sdk/pull/4612))
7ff8adafe9e4atagen2026-10-22 12:30 UTC405
7ff8adafe9e4atagen2026-10-22 12:30 UTC406
- [**breaking**] `Timeline::paginate_forwards` and
7ff8adafe9e4atagen2026-10-22 12:30 UTC407
  `Timeline::paginate_backwards` are unified to work on a live or focused
7ff8adafe9e4atagen2026-10-22 12:30 UTC408
  timeline. `Timeline::live_paginate_*` and `Timeline::focused_paginate_*` have
7ff8adafe9e4atagen2026-10-22 12:30 UTC409
  been removed
7ff8adafe9e4atagen2026-10-22 12:30 UTC410
  ([#4584](https://github.com/matrix-org/matrix-rust-sdk/pull/4584)).
7ff8adafe9e4atagen2026-10-22 12:30 UTC411
7ff8adafe9e4atagen2026-10-22 12:30 UTC412
- [**breaking**] `Timeline::subscribe_batched` replaces
7ff8adafe9e4atagen2026-10-22 12:30 UTC413
  `Timeline::subscribe`. `subscribe` has been removed in
7ff8adafe9e4atagen2026-10-22 12:30 UTC414
  [#4567](https://github.com/matrix-org/matrix-rust-sdk/pull/4567),
7ff8adafe9e4atagen2026-10-22 12:30 UTC415
  and `subscribe_batched` has been renamed to `subscribe` in
7ff8adafe9e4atagen2026-10-22 12:30 UTC416
  [#4585](https://github.com/matrix-org/matrix-rust-sdk/pull/4585).
7ff8adafe9e4atagen2026-10-22 12:30 UTC417
7ff8adafe9e4atagen2026-10-22 12:30 UTC418
## [0.9.0] - 2024-12-18
7ff8adafe9e4atagen2026-10-22 12:30 UTC419
7ff8adafe9e4atagen2026-10-22 12:30 UTC420
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC421
7ff8adafe9e4atagen2026-10-22 12:30 UTC422
- Add the `m.room.create` and the `m.room.history_visibility` state events to
7ff8adafe9e4atagen2026-10-22 12:30 UTC423
  the required state for the sync. These two state events are required to
7ff8adafe9e4atagen2026-10-22 12:30 UTC424
  properly compute the room preview of a joined room.
7ff8adafe9e4atagen2026-10-22 12:30 UTC425
  ([#4325](https://github.com/matrix-org/matrix-rust-sdk/pull/4325))
7ff8adafe9e4atagen2026-10-22 12:30 UTC426
7ff8adafe9e4atagen2026-10-22 12:30 UTC427
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC428
7ff8adafe9e4atagen2026-10-22 12:30 UTC429
- Introduce a new variant to the `UtdCause` enum tailored for device-historical
7ff8adafe9e4atagen2026-10-22 12:30 UTC430
  messages. These messages cannot be decrypted unless the client regains access
7ff8adafe9e4atagen2026-10-22 12:30 UTC431
  to message history through key storage (e.g., room key backups).
7ff8adafe9e4atagen2026-10-22 12:30 UTC432
  ([#4375](https://github.com/matrix-org/matrix-rust-sdk/pull/4375))
7ff8adafe9e4atagen2026-10-22 12:30 UTC433
7ff8adafe9e4atagen2026-10-22 12:30 UTC434
## [0.8.0] - 2024-11-19
7ff8adafe9e4atagen2026-10-22 12:30 UTC435
7ff8adafe9e4atagen2026-10-22 12:30 UTC436
### Bug fixes
7ff8adafe9e4atagen2026-10-22 12:30 UTC437
7ff8adafe9e4atagen2026-10-22 12:30 UTC438
- Disable `share_pos()` inside `RoomListService`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC439
- `UtdHookManager` no longer re-reports UTD events as late decryptions.
7ff8adafe9e4atagen2026-10-22 12:30 UTC440
  ([#3480](https://github.com/matrix-org/matrix-rust-sdk/pull/3480))
7ff8adafe9e4atagen2026-10-22 12:30 UTC441
7ff8adafe9e4atagen2026-10-22 12:30 UTC442
- Messages that we were unable to decrypt no longer display a red padlock.
7ff8adafe9e4atagen2026-10-22 12:30 UTC443
  ([#3956](https://github.com/matrix-org/matrix-rust-sdk/issues/3956))
7ff8adafe9e4atagen2026-10-22 12:30 UTC444
7ff8adafe9e4atagen2026-10-22 12:30 UTC445
- `UtdHookManager` no longer reports UTD events that were already reported in a
7ff8adafe9e4atagen2026-10-22 12:30 UTC446
  previous session.
7ff8adafe9e4atagen2026-10-22 12:30 UTC447
  ([#3519](https://github.com/matrix-org/matrix-rust-sdk/pull/3519))
7ff8adafe9e4atagen2026-10-22 12:30 UTC448
7ff8adafe9e4atagen2026-10-22 12:30 UTC449
### Features
7ff8adafe9e4atagen2026-10-22 12:30 UTC450
7ff8adafe9e4atagen2026-10-22 12:30 UTC451
- Add `m.room.join_rules` to the required state.
7ff8adafe9e4atagen2026-10-22 12:30 UTC452
- `EncryptionSyncService` and `Notification` are using
7ff8adafe9e4atagen2026-10-22 12:30 UTC453
  `Client::cross_process_store_locks_holder_name`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC454
7ff8adafe9e4atagen2026-10-22 12:30 UTC455
### Refactor
7ff8adafe9e4atagen2026-10-22 12:30 UTC456
7ff8adafe9e4atagen2026-10-22 12:30 UTC457
- [**breaking**] `Timeline::edit` now takes a
7ff8adafe9e4atagen2026-10-22 12:30 UTC458
  `RoomMessageEventContentWithoutRelation`.
7ff8adafe9e4atagen2026-10-22 12:30 UTC459
7ff8adafe9e4atagen2026-10-22 12:30 UTC460
- [**breaking**] `Timeline::send_attachment` now takes an `impl Into<PathBuf>`
7ff8adafe9e4atagen2026-10-22 12:30 UTC461
  for the path of the file to send.
7ff8adafe9e4atagen2026-10-22 12:30 UTC462
7ff8adafe9e4atagen2026-10-22 12:30 UTC463
- [**breaking**] `Timeline::item_by_transaction_id` has been renamed to
7ff8adafe9e4atagen2026-10-22 12:30 UTC464
  `Timeline::local_item_by_transaction_id` (always returns local echoes).
7ff8adafe9e4atagen2026-10-22 12:30 UTC465
7ff8adafe9e4atagen2026-10-22 12:30 UTC466
## 0.7.0
7ff8adafe9e4atagen2026-10-22 12:30 UTC467
7ff8adafe9e4atagen2026-10-22 12:30 UTC468
Initial release