matrix-sdk 0.14.0
What's Changed
Features
-
Client::fetch_thread_subscriptions
implements support for the companion endpoint of the experimental MSC4308, allowing to fetch thread subscriptions for a given range, as specified by the MSC.
(#5590) -
Add a
Client::joined_space_rooms
method that allows retrieving the list of joined spaces. -
Room::enable_encryption
andRoom::enable_encryption_with_state_event_encryption
will poll the encryption state for up to 3 seconds, rather than checking once after a single sync has completed.
(#5559) -
Add
Room::enable_encryption_with_state
to enable E2E encryption with encrypted state event support, gated behind theexperimental-encrypted-state-events
feature.
(#5557) -
Add
ignore_timeout_on_first_sync
to theSyncSettings
, which should allow to have a quicker first response when using one of thesync
,sync_with_callback
,sync_with_result_callback
orsync_stream
methods onClient
, if the response is empty.
(#5481) -
The methods to use the
/v3/sync
endpoint set theuse_state_after
field, which means that, if the server supports it, the response will contain the state changes between the last sync and the end of the timeline.
(#5488) -
Add experimental support for MSC4306, with the
Room::fetch_thread_subscription()
,Room::subscribe_thread()
andRoom::unsubscribe_thread()
methods.
(#5439) -
[breaking]
RoomMemberRole
has a newCreator
variant, that differentiates room creators with infinite power levels, as introduced in room version 12.
(#5436) -
Add
Account::fetch_account_data_static
to fetch account data from the server with a statically-known type, with a signature similar toAccount::account_data
.
(#5424) -
Add support to accept historic room key bundles that arrive out of order, i.e. the bundle arrives after the invite has already been accepted.
(#5322) -
[breaking]
OAuth::login
now allows requesting additional scopes for the authorization code grant.
(#5395)
Refactor
- [breaking] Upgrade ruma to 0.13.0
(#5623) - [breaking]
SyncSettings
token is nowSyncToken
enum type which has default behaviour ofSyncToken::ReusePrevious
token. This breaksClient::sync_once
. For old behaviour, set the token toSyncToken::NoToken
with the usualSyncSettings::token
setter. - [breaking] Change the upload_encrypted_file and make it clone the client instead of owning it. The lifetime of the
UploadEncryptedFile
request returned byClient::upload_encrypted_file()
only depends on the request lifetime now. - [breaking] Add an
IsPrefix = False
bound to theaccount_data()
andfetch_account_data_static()
methods ofAccount
. These methods only worked for events where the full event type is statically-known, and this is now enforced at compile-time.account_data_raw()
andfetch_account_data()
respectively can be used instead for event types with a variable suffix.
(#5444) - [breaking]
RoomMemberRole::suggested_role_for_power_level()
andRoomMemberRole::suggested_power_level()
now useUserPowerLevel
to represent power levels instead ofi64
to differentiate the infinite power level of creators, as introduced in room version 12.
(#5436) - [breaking] The
reason
argument ofRoom::report_room()
is now required, due to a clarification in the spec.
(#5337) - [breaking] The
join_rule
field ofRoomPreview
is now aJoinRuleSummary
. It has the same variants asSpaceRoomJoinRule
but contains as summary of the allow rules for the restricted variants.
(#5337) - [breaking] The MSRV has been bumped to Rust 1.88.
(#5431) - [breaking]
Room::send_call_notification
andRoom::send_call_notification_if_needed
have been removed, since the event type they send is outdated, andClient
is not actually supposed to be able to join MatrixRTC sessions (yet). In practice, users of these methods probably already rely on another MatrixRTC implementation to participate in sessions, and such an implementation should be capable of sending notifications itself.
Bugfix
- The event handlers APIs now properly support events whose type is not fully statically-known. Before, those events would never trigger an event handler.
(#5444) - All HTTP requests now have a default
read_timeout
of 60s, which means they'll disconnect if the connection stalls.
RequestConfig::timeout
is now optional and can be disabled on a per-request basis. This will be done for the requests used to download media, so they don't get cancelled after the default 30s timeout for no good reason.
(#5437)