Skip to content

Releases: matrix-org/matrix-rust-sdk

matrix-sdk 0.8.0

19 Nov 15:46
matrix-sdk-0.8.0
0b16d48
Compare
Choose a tag to compare

What's Changed

Bug Fixes

  • Add more invalid characters for room aliases.

  • Match the right status code in Client::is_room_alias_available.

  • Fix a bug where room keys were considered to be downloaded before backups were
    enabled. This bug only affects the
    BackupDownloadStrategy::AfterDecryptionFailure, where no attempt would be
    made to download a room key, if a decryption failure with a given room key
    would have been encountered before the backups were enabled.

Documentation

  • Improve documentation of Client::observe_events.

Features

  • Add create_room_alias function.

  • Client::cross_process_store_locks_holder_name is used everywhere:

  • StoreConfig::new() now takes a
    cross_process_store_locks_holder_name argument.

  • StoreConfig no longer implements Default.

  • BaseClient::new() has been removed.

  • BaseClient::clone_with_in_memory_state_store() now takes a
    cross_process_store_locks_holder_name argument.

  • BaseClient no longer implements Default.

  • EventCacheStoreLock::new() no longer takes a key argument.

  • BuilderStoreConfig no longer has
    cross_process_store_locks_holder_name field for Sqlite and
    IndexedDb.

  • EncryptionSyncService and Notification are using Client::cross_process_store_locks_holder_name.

  • Allow passing a custom RequestConfig to an upload request.

  • Retry uploads if they've failed with transient errors.

  • Implement EventHandlerContext for tuples.

  • Introduce a mechanism similar to Client::add_event_handler and
    Client::add_room_event_handler but with a reactive programming pattern. Add
    Client::observe_events and Client::observe_room_events.

// Get an observer.
let observer =
    client.observe_events::<SyncRoomMessageEvent, (Room, Vec<Action>)>();

// Subscribe to the observer.
let mut subscriber = observer.subscribe();

// Use the subscriber as a `Stream`.
let (message_event, (room, push_actions)) = subscriber.next().await.unwrap();

When calling observe_events, one has to specify the type of event (in the
example, SyncRoomMessageEvent) and a context (in the example, (Room, Vec<Action>), respectively for the room and the push actions).

  • Implement unwedging for media uploads.

  • Send state from state sync and not from timeline to widget (#4254)

  • Allow aborting media uploads.

  • Add RoomPreviewInfo::num_active_members.

  • Use room directory search as another data source.

  • Check if the user is allowed to do a room mention before trying to send a call
    notify event.
    (#4271)

  • Add Client::cross_process_store_locks_holder_name().

  • Add a PreviouslyVerified variant to VerificationLevel indicating that the
    identity is unverified and previously it was verified.

  • New UserIdentity::pin method.

  • New ClientBuilder::with_decryption_trust_requirement method.

  • New ClientBuilder::with_room_key_recipient_strategy method

  • New Room.set_account_data and Room.set_account_data_raw RoomAccountData
    setters, analogous to the GlobalAccountData

  • New RequestConfig.max_concurrent_requests which allows to limit the maximum
    number of concurrent requests the internal HTTP client issues (all others have
    to wait until the number drops below that threshold again)

  • Implement proper redact handling in the widget driver. This allows the Rust
    SDK widget driver to support widgets that rely on redacting.

Refactor

  • [breaking] Rename DisplayName to RoomDisplayName.

  • Improve is_room_alias_format_valid so it's more strict.

  • Remove duplicated fields in media event contents.

  • Use SendHandle for media uploads too.

  • Move event_cache_store/ to event_cache/store/ in matrix-sdk-base.

  • Move linked_chunk from matrix-sdk to matrix-sdk-common.

  • Move Event and Gap into matrix_sdk_base::event_cache.

  • Move formatted_caption_from to the SDK, rename it.

  • Tidy up and start commenting the widget code.

  • Get rid of ProcessingContext and inline it in its callers.

  • Get rid of unused limits parameter when constructing a WidgetMachine.

  • Use a specialized mutex for locking access to the state store and
    being_sent.

  • Renamed VerificationLevel::PreviouslyVerified to
    VerificationLevel::VerificationViolation.

  • [breaking] Replace the Notification type from Ruma in SyncResponse and
    Client::register_notification_handler by a custom one.

  • [breaking] The ambiguity maps in SyncResponse are moved to JoinedRoom
    and LeftRoom.

  • [breaking] Room::can_user_redact and Member::can_redact are split
    between *_redact_own and *_redact_other.

  • [breaking] AmbiguityCache contains the room member's user ID.

  • [breaking] Replace impl MediaEventContent with &impl MediaEventContent in
    Media::get_file/Media::remove_file/Media::get_thumbnail/Media::remove_thumbnail

  • [breaking] A custom sliding sync proxy set with
    ClientBuilder::sliding_sync_proxy now takes precedence over a discovered
    proxy.

  • [breaking] Client::get_profile was moved to Account and renamed to
    Account::fetch_user_profile_of. Account::get_profile was renamed to
    Account::fetch_user_profile.

  • [breaking] The HttpError::UnableToCloneRequest error variant has been
    removed because it was never used or generated by the SDK.

  • [breaking] The Error::InconsistentState error variant has been removed
    because it was never used or generated by the SDK.

  • [breaking] The widget capabilities in the FFI now need two additional
    flags: update_delayed_event, send_delayed_event.

  • [breaking] Room::event now takes an optional RequestConfig to allow
    for tweaking the network behavior.

  • [breaking] The instant module was removed, use the ruma::time module
    instead.

  • [breaking] Add ClientBuilder::sqlite_store_with_cache_path to build a
    client that stores caches in a different directory to state/crypto.

  • [breaking] The body parameter in get_media_file has been replaced with
    a filename parameter now that Ruma has a filename() method.

matrix-sdk-crypto-ffi-0.4.3

12 Sep 12:58
Compare
Choose a tag to compare

Production-ready version of iOS Crypto SDK, containing precompiled matrix-sdk-crypto-ffi Apple framework.

  • Exposed PKEncryption APIs directly from vodozemac

matrix-sdk-crypto 0.7.2

18 Jul 15:15
0.7.2-crypto
Compare
Choose a tag to compare

What's Changed

Security Fixes

matrix-sdk-crypto-ffi-0.4.2

28 May 14:12
eddaf96
Compare
Choose a tag to compare

Production-ready version of iOS Crypto SDK, containing precompiled matrix-sdk-crypto-ffi Apple framework.

Changes:

FFI Bindings: Expose CryptoStore clear caches

matrix-sdk-crypto-ffi-0.4.1

22 May 15:00
fa55445
Compare
Choose a tag to compare

Production-ready version of iOS Crypto SDK, containing precompiled matrix-sdk-crypto-ffi Apple framework.

Contains some breaking changes

matrix-sdk-crypto-ffi-0.3.13

02 Oct 10:13
2f97301
Compare
Choose a tag to compare

matrix-sdk-crypto-ffi-0.3.12

11 Aug 10:12
364a4ae
Compare
Choose a tag to compare

matrix-sdk-crypto-ffi-0.3.11

19 Jul 14:57
24e3ccf
Compare
Choose a tag to compare

matrix-sdk-crypto-js-0.1.4

13 Jul 15:50
Compare
Choose a tag to compare
  • Add method OlmMachine.queryKeysForUsers to build an out-of-band key request.

matrix-sdk-crypto-js-0.1.3

13 Jul 15:50
Compare
Choose a tag to compare

Changes in the Javascript bindings

  • Fix bug introduced in v0.1.2 which caused an undocumented change to the results of OlmMachine.receiveSyncChanges.

Changes in the underlying Rust crate

  • Fix a bug which could cause generated one-time-keys not to be persisted.