Skip to content

matrix-sdk 0.16.0

Latest

Choose a tag to compare

@poljar poljar released this 04 Dec 10:02
· 14 commits to main since this release
matrix-sdk-0.16.0

You may be wondering what happened to the 0.15.0 release, and you’re right to ask. Unfortunately, it had to be yanked after a problematic Git dependency slipped through during publishing.

This created a situation where some SDK crates were successfully released as 0.15.0, while others failed to publish. To avoid confusion and maintain consistency, the entire 0.15.0 release was yanked.

What's Changed

Features

  • Add Client::get_store_sizes() so to query the size of the existing stores, if available. (#5911)
  • Add QRCodeLoginError::NotFound for non-existing / expired rendezvous sessions
    (#5898)
  • Add QRCodeGrantLoginError::NotFound for non-existing / expired rendezvous sessions
    (#5898)
  • Improve logging around key history bundles when joining a room.
    (#5866)
  • Expose the power level required to modify m.space.child on
    room::power_levels::RoomPowerLevelChanges.
    (#5857)
  • Add the Client::server_versions_cached() method.
    (#5853)
  • Extend authentication::oauth::OAuth::grant_login_with_qr_code to support granting
    login by scanning a QR code on the existing device.
    (#5818)
  • Add a new RequestConfig::skip_auth() option. This is useful to ensure that
    certain request won't ever include an authorization header.
    (#5822)
  • Add support for extended profile fields with Account::fetch_profile_field_of(),
    Account::fetch_profile_field_of_static(), Account::set_profile_field() and
    Account::delete_profile_field().
    (#5771)
  • [breaking] Remove the matrix-sdk-crypto re-export.
    (#5769)
  • Allow Client::get_dm_room() to be called without the e2e-encryption crate feature.
    (#5787)
  • [breaking] Add encryption::secret_storage::SecretStorageError::ImportError to indicate
    an error that occurred when importing a secret from secret storage.
    (#5647)
  • [breaking] Add authentication::oauth::qrcode::login::LoginProgress::SyncingSecrets to
    indicate that secrets are being synced between the two devices.
    (#5760)
  • Add authentication::oauth::OAuth::grant_login_with_qr_code to reciprocate a login by
    generating a QR code on the existing device.
    (#5801)
  • [breaking] OAuth::login_with_qr_code now returns a builder that allows performing the flow with either the
    current device scanning or generating the QR code. Additionally, new errors SecureChannelError::CannotReceiveCheckCode
    and QRCodeLoginError::ServerReset were added.
    (#5711)
  • [breaking] ThreadedEventsLoader::new now takes optional tokens parameter to customise where the pagination
    begins (#5678.
  • Make PaginationTokens pub, as well as its previous and next tokens so they can be assigned from other files
    (#5678.
  • Add new API to decline calls (MSC4310): Room::make_decline_call_event and Room::subscribe_to_call_decline_events
    (#5614)

Refactor

  • [breaking]: Client::server_vendor_info() requires to enable the
    federation-api feature.
    (#5912)

  • [breaking]: Client::reset_server_info() has been split into
    reset_supported_versions() and reset_well_known().
    (#5910)

  • [breaking]: Client::send() has extra bounds where
    Request::Authentication: AuthScheme<Input<'a> = SendAccessToken<'a>> and
    Request::PathBuilder: SupportedPathBuilder. This method should still work for any request to the
    Client-Server API. This allows to drop the HttpError::NotClientRequest error in favor of a
    compile-time error.
    (#5781,
    #5789,
    #5815)

  • [breaking]: The waveform field was moved from AttachmentInfo::Voice to BaseAudioInfo,
    allowing to set it for any audio message. Its format also changed, and it is now a list of f32
    between 0 and 1.
    (#5732)

  • [breaking] The caption and formatted_caption fields and methods of AttachmentConfig,
    GalleryConfig and GalleryItemInfo have been merged into a single field that uses
    TextMessageEventContent.
    (#5733)

  • The Matrix SDK crate now uses the 2024 edition of Rust.
    (#5677)

  • [breaking] Make LoginProgress::EstablishingSecureChannel generic in order to reuse it
    for the currently missing QR login flow.
    (#5750)

  • [breaking] The new_virtual_element_call_widget now uses a props and a config parameter instead of only props.
    This splits the configuration of the widget into required properties ("widget_id", "parent_url"...) so the widget can work
    and optional config parameters ("skip_lobby", "header", "...").
    The config option should in most cases only provide the "intent" property.
    All other config options will then be chosen by EC based on platform + intent.

    Before:

    new_virtual_element_call_widget(
      VirtualElementCallWidgetProperties {
        widget_id: "my_widget_id", // required property
        skip_lobby: Some(true), // optional configuration
        preload: Some(true), // optional configuration
        // ...
      }
    )

    Now:

    new_virtual_element_call_widget(
      VirtualElementCallWidgetProperties {
        widget_id: "my_widget_id", // required property
        // ... only required properties
      },
      VirtualElementCallWidgetConfig {
        intend: Intend.StartCallDM, // defines the default values for all other configuration
        skip_lobby: Some(false), // overwrite a specific default value
        ..VirtualElementCallWidgetConfig::default() // set all other config options to `None`. Use defaults from intent.
      }
    )

    (#5560)

Bugfix

  • A new local LatestEventValue was always created as LocalIsSending. It
    must be created as LocalCannotBeSent if a previous local LatestEventValue
    exists and is LocalCannotBeSent.
    (#5908)
  • Switch QR login implementation from std::time::Instant to ruma::time::Instant which
    is compatible with Wasm.
    (#5889)