Releases: matrix-org/matrix-rust-sdk
matrix-sdk 0.9.0
What's Changed
Bug Fixes
-
Use the inviter's server name and the server name from the room alias as
fallback values for the via parameter when requesting the room summary from
the homeserver. This ensures requests succeed even when the room being
previewed is hosted on a federated server.
(#4357) -
Do not use the encrypted original file's content type as the encrypted
thumbnail's content type.
(#ecf4434)
Features
-
Enable persistent storage for the
EventCache
. This allows events received
through the/sync
endpoint or backpagination to be stored persistently,
enabling client applications to restore a room's view, including events,
without requiring server communication.
(#4347) -
[BREAKING] Make all fields of Thumbnail required
(#4324) -
Backups::exists_on_server
, which always fetches up-to-date information from the
server about whether a key storage backup exists, was renamed to
fetch_exists_on_the_server
, and a new implementation ofexists_on_server
which caches the most recent answer is now provided.
matrix-sdk 0.8.0
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 implementsDefault
. -
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 implementsDefault
. -
EventCacheStoreLock::new()
no longer takes akey
argument. -
BuilderStoreConfig
no longer has
cross_process_store_locks_holder_name
field forSqlite
and
IndexedDb
. -
EncryptionSyncService
andNotification
are usingClient::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
andClient::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 toVerificationLevel
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
andRoom.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
toRoomDisplayName
. -
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/
toevent_cache/store/
inmatrix-sdk-base
. -
Move
linked_chunk
frommatrix-sdk
tomatrix-sdk-common
. -
Move
Event
andGap
intomatrix_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 aWidgetMachine
. -
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 inSyncResponse
and
Client::register_notification_handler
by a custom one. -
[breaking] The ambiguity maps in
SyncResponse
are moved toJoinedRoom
andLeftRoom
. -
[breaking]
Room::can_user_redact
andMember::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 toAccount
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 optionalRequestConfig
to allow
for tweaking the network behavior. -
[breaking] The
instant
module was removed, use theruma::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 inget_media_file
has been replaced with
afilename
parameter now that Ruma has afilename()
method.
matrix-sdk-crypto-ffi-0.4.3
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
What's Changed
Security Fixes
- Fix
UserIdentity::is_verified
to take into account our own identity #d8d9dae (Moderate, GHSA-4qg4-cvh2-crgg).
matrix-sdk-crypto-ffi-0.4.2
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
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
matrix-sdk-crypto-ffi-0.3.12
matrix-sdk-crypto-ffi-0.3.11
matrix-sdk-crypto-js-0.1.4
- Add method
OlmMachine.queryKeysForUsers
to build an out-of-band key request.