Skip to content

matrix-sdk 0.14.0

Compare
Choose a tag to compare
@poljar poljar released this 04 Sep 15:03
· 387 commits to main since this release
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 and Room::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 the experimental-encrypted-state-events feature.
    (#5557)

  • Add ignore_timeout_on_first_sync to the SyncSettings, which should allow to have a quicker first response when using one of the sync, sync_with_callback, sync_with_result_callback or sync_stream methods on Client, if the response is empty.
    (#5481)

  • The methods to use the /v3/sync endpoint set the use_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() and Room::unsubscribe_thread() methods.
    (#5439)

  • [breaking] RoomMemberRole has a new Creator 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 to Account::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 now SyncToken enum type which has default behaviour of SyncToken::ReusePrevious token. This breaks Client::sync_once. For old behaviour, set the token to SyncToken::NoToken with the usual SyncSettings::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 by Client::upload_encrypted_file() only depends on the request lifetime now.
  • [breaking] Add an IsPrefix = False bound to the account_data() and fetch_account_data_static() methods of Account. 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() and fetch_account_data() respectively can be used instead for event types with a variable suffix.
    (#5444)
  • [breaking] RoomMemberRole::suggested_role_for_power_level() and RoomMemberRole::suggested_power_level() now use UserPowerLevel to represent power levels instead of i64 to differentiate the infinite power level of creators, as introduced in room version 12.
    (#5436)
  • [breaking] The reason argument of Room::report_room() is now required, due to a clarification in the spec.
    (#5337)
  • [breaking] The join_rule field of RoomPreview is now a JoinRuleSummary. It has the same variants as SpaceRoomJoinRule 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 and Room::send_call_notification_if_needed have been removed, since the event type they send is outdated, and Client 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)