All notable changes to this project will be documented in this file.
- [breaking] The
MediaRetentionPolicy
can now trigger regular cleanups with its newcleanup_frequency
setting. (#4603)Clone
is a supertrait ofEventCacheStoreMedia
.EventCacheStoreMedia
has a new methodlast_media_cleanup_time_inner
- There are new
'static
bounds inMediaService
for the media cache stores
event_cache::store::MemoryStore
implementsClone
.BaseClient
now has ahandle_verification_events
field which istrue
by default and can be negated so theNotificationClient
won't handle received verification events too, causing errors in theVerificationMachine
.- [breaking]
Room::is_encryption_state_synced
has been removed (#4777) - [breaking]
Room::is_encrypted
is replaced byRoom::encryption_state
which returns a value of the newEncryptionState
enum (#4777)
- [breaking]
EventCacheStore
allows to control which media content is allowed in the media cache, and how long it should be kept, with aMediaRetentionPolicy
:EventCacheStore::add_media_content()
has an extra argument,ignore_policy
, which decides whether a media content should ignore theMediaRetentionPolicy
. It should be stored alongside the media content.EventCacheStore
has four new methods:media_retention_policy()
,set_media_retention_policy()
,set_ignore_media_retention_policy()
andclean_up_media_cache()
.EventCacheStore
implementations should delegate media cache methods to the methods of the same name ofMediaService
to use theMediaRetentionPolicy
. They need to implement theEventCacheStoreMedia
trait that can be tested with theevent_cache_store_media_integration_tests!
macro. (#4571)
- [breaking] Replaced
Room::compute_display_name
with the reintroducedRoom::display_name()
. The new method computes a display name, or return a cached value from the previous successful computation. If you need a sync variant, consider usingRoom::cached_display_name()
. (#4470) - [breaking]: The reexported types
SyncTimelineEvent
andTimelineEvent
have been fused into a single typeTimelineEvent
, and its fieldpush_actions
has been madeOption
al (it is set toNone
when we couldn't compute the push actions, because we lacked some information). (#4568)
- Introduced support for MSC4171, enabling the designation of certain users as service members. These flagged users are excluded from the room display name calculation. (#4335)
- Fix an off-by-one error in the
ObservableMap
when theremove()
method is called. Previously, items following the removed item were not shifted left by one position, leaving them at incorrect indices. (#4346)
-
Add more invalid characters for room aliases.
-
Use the
DisplayName
struct to protect against homoglyph attacks.
-
Add
BaseClient::room_key_recipient_strategy
field -
AmbiguityCache
contains the room member's user ID. -
[breaking]
Media::get_thumbnail
andMediaFormat::Thumbnail
allow to request an animated thumbnail They both take aMediaThumbnailSettings
instead ofMediaThumbnailSize
. -
Consider knocked members to be part of the room for display name disambiguation.
-
Client::cross_process_store_locks_holder_name
is used everywhere: -
StoreConfig::new()
now takes across_process_store_locks_holder_name
argument. -
StoreConfig
no longer implementsDefault
. -
BaseClient::new()
has been removed. -
BaseClient::clone_with_in_memory_state_store()
now takes across_process_store_locks_holder_name
argument. -
BaseClient
no longer implementsDefault
. -
EventCacheStoreLock::new()
no longer takes akey
argument. -
BuilderStoreConfig
no longer hascross_process_store_locks_holder_name
field forSqlite
andIndexedDb
. -
Make
ObservableMap::stream
works onwasm32-unknown-unknown
. -
Allow aborting media uploads.
-
Replace the
Notification
type from Ruma inSyncResponse
andStateChanges
by a custom one. -
Introduce a
DisplayName
struct which normalizes and sanitizes display names.
-
[breaking] Rename
DisplayName
toRoomDisplayName
. -
Rename
AmbiguityMap
toDisplayNameUsers
. -
Move
event_cache_store/
toevent_cache/store/
inmatrix-sdk-base
. -
Move
linked_chunk
frommatrix-sdk
tomatrix-sdk-common
. -
Move
Event
andGap
intomatrix_sdk_base::event_cache
. -
The ambiguity maps in
SyncResponse
are moved toJoinedRoom
andLeftRoom
. -
Store::get_rooms
andStore::get_rooms_filtered
are way faster because they don't acquire the lock for every room they read. -
Store::get_rooms
,Store::get_rooms_filtered
andStore::get_room
are renamedStore::rooms
,Store::rooms_filtered
andStore::room
. -
[breaking]
Client::get_rooms
andClient::get_rooms_filtered
are renamedClient::rooms
andClient::rooms_filtered
. -
[breaking]
Client::get_stripped_rooms
has finally been removed. -
[breaking] The
StateStore
methods to access data in the media cache where moved to a separateEventCacheStore
trait. -
[breaking] The
instant
module was removed, use theruma::time
module instead.
- Rename
RoomType
toRoomState
- Add
RoomInfo::state
accessor - Remove
members
andstripped_members
fields inStateChanges
. Room member events are now with other state events instate
andstripped_state
. StateStore::get_user_ids
takes aRoomMemberships
to be able to filter the results by any membership state.StateStore::get_joined_user_ids
andStateStore::get_invited_user_ids
are deprecated.
Room::members
takes aRoomMemberships
to be able to filter the results by any membership state.Room::active_members
andRoom::joined_members
are deprecated.
RoomMember
has new methods:can_ban
can_invite
can_kick
can_redact
can_send_message
can_send_state
can_trigger_room_notification
- Move
StateStore::get_member_event
toStateStoreExt
StateStore::get_stripped_room_infos
is deprecated. All room infos should now be returned byget_room_infos
.BaseClient::get_stripped_rooms
is deprecated. Useget_rooms_filtered
withRoomStateFilter::INVITED
instead.- Add methods to
StateStore
to be able to retrieve data in batchget_state_events_for_keys
get_profiles
get_presence_events
get_users_with_display_names
- Move
Session
,SessionTokens
and associated methods to thematrix-sdk
crate. - Add
Room::subscribe_info
- #664: Fix regression with push rules being applied to the own user_id only instead of all but the own user_id