matrix-sdk 0.14.0
What's Changed
Features
- 
Client::fetch_thread_subscriptionsimplements 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_roomsmethod that allows retrieving the list of joined spaces. - 
Room::enable_encryptionandRoom::enable_encryption_with_state_event_encryptionwill 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_stateto enable E2E encryption with encrypted state event support, gated behind theexperimental-encrypted-state-eventsfeature.
(#5557) - 
Add
ignore_timeout_on_first_syncto theSyncSettings, which should allow to have a quicker first response when using one of thesync,sync_with_callback,sync_with_result_callbackorsync_streammethods onClient, if the response is empty.
(#5481) - 
The methods to use the
/v3/syncendpoint set theuse_state_afterfield, 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]
RoomMemberRolehas a newCreatorvariant, that differentiates room creators with infinite power levels, as introduced in room version 12.
(#5436) - 
Add
Account::fetch_account_data_staticto 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::loginnow allows requesting additional scopes for the authorization code grant.
(#5395) 
Refactor
- [breaking] Upgrade ruma to 0.13.0
(#5623) - [breaking] 
SyncSettingstoken is nowSyncTokenenum type which has default behaviour ofSyncToken::ReusePrevioustoken. This breaksClient::sync_once. For old behaviour, set the token toSyncToken::NoTokenwith the usualSyncSettings::tokensetter. - [breaking] Change the upload_encrypted_file and make it clone the client instead of owning it. The lifetime of the 
UploadEncryptedFilerequest returned byClient::upload_encrypted_file()only depends on the request lifetime now. - [breaking] Add an 
IsPrefix = Falsebound 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 useUserPowerLevelto represent power levels instead ofi64to differentiate the infinite power level of creators, as introduced in room version 12.
(#5436) - [breaking] The 
reasonargument ofRoom::report_room()is now required, due to a clarification in the spec.
(#5337) - [breaking] The 
join_rulefield ofRoomPreviewis now aJoinRuleSummary. It has the same variants asSpaceRoomJoinRulebut 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_notificationandRoom::send_call_notification_if_neededhave been removed, since the event type they send is outdated, andClientis 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_timeoutof 60s, which means they'll disconnect if the connection stalls.
RequestConfig::timeoutis 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)