45 KiB
Changelog
Unreleased
Improvements:
- Unify
RtcFocusInfoandRtcTransport, and align the field, method and variant names with the "transport" terminology of MSC4195. The LiveKit tag changes fromlivekit_multi_sfutolivekiton/rtc/transports. - Add unstable support for MSC4466 "Altering profile change propagation".
0.23.1
Bug fixes:
- Fix the deserialization of
RtcFocusInfowhen used with#[serde(flatten)].
0.23.0
Breaking changes:
- The
power_level_content_overridefield ofcreate_room::v3::Requestuse a newRoomPowerLevelsContentOverridetype. It has the same fields asRoomPowerLevelsEventContentexcept allIntfields areOption<Int>, which allows uploading explicit values no matter what the default ones are. - The
servermodule was renamed toadmin, to make it easier to find since it contains all the administration endpoints, and it matches the namespace in the spec. BackupAlgorithm::MegolmBackupV1Curve25519AesSha2is now a tuple variant containing a non-exhaustive struct.- The
groupsfield ofResultRoomEventsis now aResultGroupMapsByGroupingKey. This is a wrapper around a map that ensure that eachResultGroupMapuses the appropriate key type for theirGroupingKey. As a result, theOwnedRoomIdOrUserIdenum was removed. InvitationRecipient::UserIdis now a tuple variant containing a non-exhaustive struct, and thereasonfield ofinvite_user::v3::Requestwas moved toInviteUserId, because it is not available for third-party IDs.StateEventFormatcan represent any custom string value now, but it doesn't implementCopyanymore.- Remove support for the OAuth 2.0
WWW-AUTHENTICATEheader data inErrorKind::Forbidden, because it was dropped from MSC2967 and it is not part of any new MSC.ErrorKind::Forbiddenis now a unit variant, and theErrorKind::forbidden()method to construct it was removed.AuthenticateErrorwas removed. - The following
ErrorKindstruct variants are now tuple structs containing a non-exhaustive struct:BadStatus, and its serialization was fixed.IncompatibleRoomVersionLimitExceededResourceLimitExceededUnknownTokenWrongRoomKeysVersion, and itscurrent_versionfield is now required and its serialization was fixed.
- Remove the
scorefield fromreport_content::v3::Requestaccording to MSC4277 / Matrix 1.18.report_content::v3::Request::new()now only takes a room ID and an event ID. Typing::Yesnow holds a non-exhaustive struct rather than aDuration, to potentially allow to add more fields in the future without it being a breaking change.- The endpoints that were using the
NoAuthenticationauthentication scheme now useNoAccessToken. UserIdentifiercan now represent an identifier with a custom type, and its variants were changed to tuple variants containing a non-exhaustive struct.UserIdentifier::UserIdOrLocalpartwas renamed toUserIdentifier::Matrix.
- The
ProfileFieldNameandProfileFieldValueenums were moved toruma_common::profile. - The
http_headersmodule was merged into thehttp_headersmodule ofruma-common. - The
errormodule was merged into theapi::errormodule ofruma-common, with theErrorandErrorBodytypes merged in the corresponding types ofruma-common.
Bug fixes:
- In the
search::search_events::v3module, fix the deserialization of:Criteriawhen thefilterfield is omitted.SearchResultwhen thecontextfield is omitted.
- Add a
new()method toaccount::delete_3pid::v3::Response, allowing it to be constructed.
Improvements:
- Add the
M_TOKEN_INCORRECTerror code according to MSC4183 / Matrix 1.18. - Add the
m.forget_forced_upon_leavecapability, according to MSC4267 / Matrix 1.18. - Stabilize support for the OAuth 2.0 account management URL, according to
MSC4191 / Matrix 1.18. The
AccountManagementActionvariants that were replaced when the MSC was stabilized now have anUnstableprefix.AuthorizationServerMetadatahas helper methods to work with both stable and unstable account management actions:is_account_management_action_supported()allows to check whether either of the stable or unstable version of an action is advertised by the server, andaccount_management_url_with_actionallows to build an account management URL including the proper version of the action, depending on what the server advertises.
- Add support for updated rendezvous session from MSC4388 behind
unstable-msc4388. - Stabilize support for the
M_INVITE_BLOCKEDerror code, according to MSC4380 / Matrix 1.18. - Stabilize support for OAuth 2.0 aware clients, according to MSC3824 / Matrix 1.18. Unstable support was dropped entirely.
BackupAlgorithmcan be deserialized from unsupported algorithms. The name and data of the algorithm can be accessed via thealgorithm()andauth_data()methods respectively.RegistrationKindandLoginTypecan now represent custom values.- Stabilize support for the OAuth 2.0 Device Authorization Grant, according to MSC4341 / Matrix 1.18.
- Add support for the Policy Server public key information endpoint, according to MSC4284 / Matrix 1.18.
- Add
M_USER_LIMIT_EXCEEDEDerror code according to MSC4335 / Matrix 1.18. - Add support for the user suspension and locking endpoints, according to MSC4323 / Matrix 1.18.
- Add support for reading PGP keys from
.well-known/matrix/support, according to MSC4439. - Add support for MSC4293
redact_eventsfield toban_user::v3::Requestandkick_user::v3::Request, gated behindunstable-msc4293.
0.22.1
Improvements:
- Add
uiaa::LoginTermsParams, that allows to construct or extract the parameters of them.login.termsauthentication type. - Add
UiaaInfo::params()as a helper to extract UIAA authentication type parameters. - Add support for the
m.oauthUIAA authentication type according to MSC4312 / Matrix 1.17. - Add unstable support for RTC transports discovery endpoint from MSC4143, with support for the LiveKit transport from MSC4195.
- Add
Error(Code/Kind)::AppserviceLoginUnsupportedaccording to MSC4910 / Matrix 1.17.
0.22.0
Breaking changes:
- Upgrade
js_optionto v0.2.0 - The following endpoints use a
SinglePathrather than aVersionHistoryasMetadata::PathBuilder. Making a request doesn't require to provide a dummySupportedVersionsanymore.discover_homeserverdiscover_supportget_supported_versionslogin_fallback
- Make the
ErrorBody::Standardvariant a newtype aroundStandardErrorBody. StandardErrorBodyis non-exhaustive. Allowing to add fields in the future without it being a breaking change.- The
room_idfield oflisten_to_new_events::v3::Requestis required due to a clarification in the specification. The struct doesn't implementDefaultanymore.
Fixes:
- Set the
Authorizationheader with the provided access token inset_profile_field::v3::Request::try_into_http_request().
Improvements:
- Add
M_INVITE_BLOCKEDcandidate error code proposed by MSC4380 sharing an unstable prefix with the preceding MSC4155. - Stabilize support for the
use_state_afterquery parameter andState::Afterresponse property tosync_events::v3, according to Matrix 1.16. - Stabilize support for extended profiles according to Matrix 1.16.
SetDisplayNameCapabilityandSetAvatarCapabilityare deprecated in favour ofProfileFieldsCapability.- The
get_display_nameandget_avatar_urlendpoints are deprecated in favour ofget_profile_field. - The
set_display_nameandset_avatar_urlendpoints are deprecated in favour ofset_profile_field.
- Add supports for the
m.tzprofile field according to Matrix 1.16.
0.21.0
Breaking changes:
- Use
AuthTypefor theauth_typeofget_uiaa_fallback_page's Request. - Only allow appservices to call
appservice::request_ping::v1andappservice::set_room_visibility::v1 - The
paramsfield ofUiaaInfois now optional. It was never required in the specification. Servers are encouraged to keep sending it for compatibility with clients that required it. - The
reasonfield ofreport_room::v3::Requestis now required, due to a clarification in the spec. - Remove
Capabilities::iter()and the associated types. The code is completely custom and hasn't been kept up-to-date, and as far as we know it is not used by anyone, so we prefer to remove it to avoid an unnecessary maintenance burden and potential issues in the future. - Move
Capabilitiesand associated types into thediscovery::get_capabilities::v3module, for consistency with other endpoints. get_supported_versions::Response::known_versions()was removed.as_supported_versions()should be used instead.- Update the endpoint metadata definitions to use the new syntax for variables.
SpaceHierarchyRoomsChunkis now built aroundRoomSummary, andSpaceHierarchyRoomsChunkInitwas removed.- Add
JsonCastablebound toRaw::{cast, cast_ref, deserialize_as}. When a typeUimplementsJsonCastable<T>it means that it is safe to cast fromUtoTbecauseTcan be deserialized from the same JSON asU. It is still possible to bypass that bound by using the corresponding methods ofRawwith an_uncheckedsuffix. - Rename
state::get_state_events_for_keytostate::get_state_event_for_key. - Allow specifying the event format for
state::get_state_event_for_key, meaning the response may either beRaw<AnyStateEvent>orRaw<AnyStateEventContent>, depending on the format specified in the request. sync_events::v3::Stateis now an enum, to prepare for the stabilization of MSC4222. The state before the timeline, corresponding to thestatefield in the Matrix specification, is available in theBeforevariant, and the struct representing its content was renamed toStateEvents.get_profile::v3::Responsehas no public fields anymore but stores custom fields. The fields can be accessed with.get(),.iter()or.into_iter().Response::new()takes no arguments and creates an empty response. Fields can be added using.set(), or theFromIteratorandExtendimplementations.- Replace
MembershipEventFilterwithMembershipStateinget_member_events, since both enums should always be identical. - Add
set_presencefield tosync_events::v5::Requestas per MSC4186; specified identically to the field appearing in prior sync versions.
Improvements:
- Added support for the sliding sync extension for thread subscriptions, as well as the accompanying endpoint, both from experimental MSC4308.
- Added support for the experiment MSC4306 thread subscription endpoints.
- For the
membership::join_room_by_id_or_aliasandknock::knock_roomendpoints, theserver_namequery parameter is only serialized if the server doesn't advertise at least one version that supports theviaquery parameter. The former was removed in Matrix 1.14. - Add
additional_creatorsfield toCreationContentofcreate_roomandRequestofupgrade_room, allowing clients to specify which other users (if any) should be considered additional creators from room version 12 onwards. - Add unstable support for the
use_state_afterquery parameter insync_events::v3::Request, and the correspondingState::Aftervariant in the response (state_afterin the spec), according to MSC4222. - Add unstable support for extended profiles, as per MSC4133.
0.20.4
Improvements:
- All the types used in
discover_homeserver::Responsenow implement PartialEq and Eq. - Use
ruma_common::RoomSummaryfor theroom::get_summaryendpoint. - Add the
encryption,room_versionandallowed_room_idsfields toSpaceHierarchyRoomsChunk, according to MSC3266 / Matrix 1.15. - Stabilize the support for the room summary endpoint, according to Matrix 1.15.
- Stabilize support for the OAuth 2.0 authorization server metadata endpoint,
according to Matrix 1.15.
- The
discovery::get_authentication_issuerendpoint was removed. - Some fields of
AuthorizationServerMetadataare now behind theunstable-msc4108orunstable-msc4191cargo features.
- The
- Add
get_supported_versions::Response::as_supported_versions().
0.20.3
Bug fixes:
- Fix
Capabilities::get()andCapabilities::set(). They were not up-to-date to handle them.get_login_tokencapability.
Improvements:
- Remove the unstable support for MSC3575 as it was closed. MSC4186 should be used instead.
- The
authenticationfield ofdiscovery::discover_homeserver::Responsehas been removed in favour ofdiscovery::get_authorization_server_metadata. - The
discovery::discover_homeserver::Responsewell-known now includes thertc_focias defined in MSC4143. - Use specialized room ID type (
ExtensionRoomConfig) for all MSC4186 extension requests, not just the Receipts extension.
0.20.2
Improvements:
- Add support for the authorization server metadata endpoint, according to the latest draft of MSC2965.
- Add the
guest_access_tokenfield toaccount::register::v3::Requestto allow a guest user to upgrade to a regular account. - Add the endpoints for peeking:
get_current_stateandlisten_to_new_events. - Add the
reporting::report_userendpoint to report users, according to Matrix 1.14.
0.20.1
Bug fixes:
unstable-msc4186withoutunstable-msc3575no longer create a compilation failure.
Improvements:
- Add support for new dehydration format, according to the latest draft of MSC3814.
- Add unstable support for OIDC-aware compatibility, according to MSC3824.
- Stabilize support for reporting rooms, according to Matrix 1.13.
- Removes the
unstable-msc4151cargo feature.
- Removes the
0.20.0
Breaking changes:
ErrorKinddoes not implementAsRef<str>andDisplayanymore. To get the same result, useErrorKind::errcode(). TheErrorCodethat is returned implements those traits.
Bug fixes:
knock_stateinKnockedRoomandeventsinKnockStateare no longer required during deserialization and are no longer serialized if they are empty. This was a deviation from the spec, those fields were never required.
Improvements:
- Add unstable support for reporting rooms, according to MSC4151.
- The
unstable-exhaustive-typescargo feature was replaced by theruma_unstable_exhaustive_typescompile-timecfgsetting. Like allcfgsettings, it can be enabled at compile-time with theRUSTFLAGSenvironment variable, or inside.cargo/config.toml. It can also be enabled by setting theRUMA_UNSTABLE_EXHAUSTIVE_TYPESenvironment variable. - Add
ErrorKind::ThreepidMediumNotSupported, according to MSC4178. - Add
ErrorKind::UserSuspended, according to MSC3823. EmailPusherDataallows to set custom data for the pusher in thedatafield, due to a clarification in the spec.
0.19.0
Breaking changes:
RoomSummary::heroesnow properly contains onlyUserIdinstead ofStringas before.- Change type of
client_secretfield inThirdpartyIdCredentialsfromBox<ClientSecret>toOwnedClientSecret - Make
id_serverandid_access_tokeninThirdpartyIdCredentialsoptional - The
content_dispositionfields ofmedia::get_content::v3::Responseandmedia::get_content_as_filename::v3::Responseuse now the strongly typedContentDispositioninstead of strings. - Replace
server_nameonknock::knock_room::v3::Requestandmembership::join_room_by_id_or_alias::v3::Requestwithviaas per MSC4156 / Matrix 1.12. - Remove
RuleScope, due to a clarification in the Matrix 1.12 where theglobalscope is now hardcoded.- The
pushendpoints don't take a scope anymore.
- The
- Make
Content-TypeandContent-Dispositionmandatory when creating media responses, according to MSC2701 / MSC2702 / Matrix 1.12. - Use
OwnedOneTimeKeyIdandOneTimeKeyAlgorithminstead ofOwnedDeviceKeyIdandDeviceKeyAlgorithmrespectively to identify one-time and fallback keys and their algorithm. - Use
OwnedCrossSigningOrDeviceSigningKeyIdinstead ofOwnedDeviceKeyIdto identify signing keys inBackupAlgorithm::MegolmBackupV1Curve25519AesSha2'ssignatures. - Use
CrossSigningOrDeviceSignaturesfor thesignaturesofBackupAlgorithm. - Use
ServerSignaturesfor thesignaturesofThirdPartySigned.
Improvements:
- Add support for MSC4186, aka simplified sliding sync, behind
unstable-msc4186. - Add support for MSC4108 OIDC sign in and E2EE set up via QR code
- Heroes in
sync::sync_events::v4:SyncRequestListandRoomSubscriptionboth have a newinclude_heroesfield.SlidingSyncRoomhas a newheroesfield, with a new typeSlidingSyncRoomHero. - Add support for authenticated media endpoints, according to MSC3916 / Matrix
1.11.
- They replace the newly deprecated
media::get_*endpoints.
- They replace the newly deprecated
- Stabilize support for animated thumbnails, according to Matrix 1.11
- Add support for terms of service at registration, according to MSC1692 / Matrix 1.11
- Add unstable support for MSC4140
to send
Futureevents and updateFutureevents withfuture_tokens. (Futureevents are scheduled messages that can be controlled withfuture_tokensto send on demand or restart the timeout) - Change types of
SyncRequestListFilters::{room_types,not_room_types}toVec<RoomTypeFilter>instead of a vector of strings- This is a breaking change, but only for users of
unstable-msc3575
- This is a breaking change, but only for users of
- Add the
get_login_tokenfield toCapabilities, according to a clarification in Matrix 1.12. - Add support for account locking, according to MSC3939 / Matrix 1.12.
- Allow constructing
error::ErrorBody::NotJsonoutside of this crate. - Add function for checking if a
Content-Typeis considered "safe" forinlinerendering, according to MSC2702 / Matrix 1.12.
Bug fixes:
- Rename
avatartoavatar_urlwhen (De)serializingSlidingSyncRoomHero user_idofSlidingSyncRoomHerois now mandatory- Make authentication with access token optional for the
change_passwordanddeactivateendpoints, due to a clarification in Matrix 1.11. - Do not send a request body for the
logoutandlogout_allendpoints, due to a clarification in Matrix 1.11.
0.18.0
Bug fixes:
- Don't require the
failuresfield in theruma_client_api::keys::upload_signatures::Responsetype. sync::sync_events::v3::Timeline::is_emptynow returnsfalsewhen thelimitedorprev_batchfields are set.login_fallback::Responsenow returns the proper content typesso_login[_with_provider]responses now use the proper HTTP status code.
Breaking changes:
- The conversion from
PushRuletoConditionalPushRuleis infallible since theconditionsfield is optional.MissingConditionsErrorwas removed.
- The
tsfield inRequestforget_media_previewis nowOption. - The query parameter of
check_registration_token_validityendpoint has been renamed fromregistration_tokentotoken Erroris now non-exhaustive.ErrorKind::Forbiddenis now a non-exhaustive struct variant that can be constructed withErrorKind::forbidden().- The
retry_after_msfield ofErrorKind::LimitExceededwas renamed toretry_afterand is now anOption<RetryAfter>, to add support for the Retry-After header, according to MSC4041 / Matrix 1.10 - Make
get_uiaa_fallback::v3::Responsean enum for a redirect or an HTML page. It will now return the proper status code and headers depending on the variant used. - The http crate had a major version bump to version 1.1
Improvements:
- Point links to the Matrix 1.10 specification
- Add the
get_authentication_issuerendpoint from MSC2965 behind theunstable-msc2965feature. - Add
error_kindaccessor method toruma_client_api::Error - Add
FromHttpResponseErrorExttrait that adds anerror_kindaccessor toFromHttpResponseError<ruma_client_api::Error> - Add deprecated
userfields form.login.passwordandm.login.appservicelogin types. - Add deprecated
addressandmedium3PID fields form.login.passwordlogin type. - Add optional cookie field to
session::sso_login*::v3responses. - Add support for local user erasure to
account::deactivate::v3::Request, according to MSC4025 / Matrix 1.10. - Allow
discovery::get_supported_versions::v1to optionally accept authentication, according to MSC4026 / Matrix 1.10. - Allow
account::register::v3andaccount::login::v3to accept authentication for appservices. - Add support for recursion on the
get_relating_eventsendpoints, according to MSC3981 / Matrix 1.10 - Add server support discovery endpoint, according to MSC1929 / Matrix 1.10
- Add
dirRequestfield on theget_relating_events_with_rel_typesandget_relating_events_with_rel_type_and_event_typeendpoints - Add unstable support for moderator server support discovery, according to MSC4121
- Add unstable support for the room summary endpoint from MSC3266 behind the
unstable-msc3266feature. - Add unstable support for animated thumbnails, according to MSC2705
0.17.4
Improvements:
- Change the
avatarfield ofSlidingSyncRoomfromOptiontoJsOption- This is a breaking change, but only for users enabling the
unstable-msc3575feature
- This is a breaking change, but only for users enabling the
0.17.3
Bug fixes:
- Fix deserialization of
claim_keysresponses without afailuresfield
0.17.2
Improvements:
- Add unstable support for MSC3983
0.17.1
Improvements:
- Add a ErrorKind variant for the "M_WRONG_ROOM_KEYS_VERSION" Matrix error.
0.17.0
Breaking changes:
- Define
rankas anOption<f64>instead of anOption<UInt>insearch::search_events::v3::SearchResult - Remove the
tokenfield fromkeys::get_keys::Request, according to a spec clarification. SpaceRoomJoinRulehas been moved to thespacemodule of the ruma-common cratebackup::SessionData(Init)were renamed toEncryptedSessionData(Init)
Improvements:
- Add convenience constructors for enabling lazy-loading in filters
- Add support for using an existing session to log in another (MSC3882 / Matrix 1.7)
- Add support for media download redirects (MSC3860 / Matrix 1.7)
- Stabilize support for asynchronous media uploads (MSC2246 / Matrix 1.7)
- Add support for the appservice ping mechanism (MSC 2659 / Matrix 1.7)
0.16.2
Bug fixes:
- Don't serialize
Noneasnullinreport_content::v3::Request
0.16.1
Improvements:
- Stabilize support for getting an event by timestamp (MSC3030 / Matrix 1.6)
0.16.0
Breaking changes:
- Remove
sync::sync_events::v3::DeviceListsre-export- Use
sync::sync_events::DeviceListsinstead
- Use
fully_readfield inread_marker::set_read_markeris no longer required- Remove the
fully_readargument fromread_marker::set_read_marker::Request::new
- Remove the
- Move
message::get_message_events::v3::Directiontoruma-common::api - Make
push::set_pusher::v3::Requestuse an enum to differentiate when deleting a pusher- Move
push::get_pushers::v3::Pushertopushand make it use the newPusherIdstype - Remove
push::set_pusher::v3::Pusherand use the common type instead
- Move
- Make
push::PusherKindcontain the pusher'sdata - Use an enum for the
scopeof thepushendpoints - Use
NewPushRuleto construct apush::set_pushrule::v3::Request Erroris now an enum because endpoint error construction is infallible (see changelog forruma-common); the previous fields are in theStandardvariant- Use
GlobalAccountDataEventTypeforevent_typeinconfig::get_global_account_data - Use
RoomAccountDataEventTypeforevent_typeinconfig::get_room_account_data - Use
ToDeviceEventTypeforevent_typeinto_device::send_event_to_device
Improvements:
- Add
M_BAD_ALIAStoerror::ErrorKind - Remove the
unstable-msc3440feature- The fields added to
RoomEventFilterwere removed by MSC3856
- The fields added to
- Add support for the threads list API (MSC3856 / Matrix 1.4)
- Stabilize support for private read receipts
- Add support for the pagination direction parameter to
/relations(MSC3715 / Matrix 1.4) - Add support for notifications for threads (MSC3773 / Matrix 1.4)
- Send CORP headers by default for media responses (MSC3828 / Matrix 1.4)
- Add support for read receipts for threads (MSC3771 / Matrix 1.4)
- Add unstable support to get an event by timestamp (MSC3030)
- Add unstable support for discovering a sliding sync proxy (MSC3575)
0.15.3
Bug fixes:
- Don't include sensitive information in
Debug-format of types from theloginmodule
0.15.2
Yanked since it the minimum version for the ruma-common dependency was wrong.
0.15.1
Improvements:
DeviceListshas moved fromsync::sync_events::v3tosync::sync_events- It is still available under the old location for backwards compatibility
0.15.0
Breaking changes:
- Export nothing from the crate if neither the
clientnor theserverfeature is active- This may partially be reverted in subsequent releases
UnreadNotificationsCounthas moved fromsync::sync_events::v3tosync::sync_events- Remove
PartialEqimplementations for a number of types- If the lack of such an
implcauses problems, please open a GitHub issue
- If the lack of such an
- Split
uiaa::UserIdentifier::ThirdPartyinto two separate variants - Remove the
fromparameter frommessage::get_message_events::v3::Request's constructors- This affects
new,backwardandforward - Since
backwardandforwardare equivalent tofrom_endandfrom_start, those are removed - A new method
.from()was added to easily set this field after initial construction
- This affects
receipt::create_receiptuses its ownReceiptType- Reorder parameters in
{set_global_account_data, set_room_account_data}::Request::{new, new_raw}
Improvements:
- Add support for refresh tokens (MSC2918)
- Add
ErrorKind::{UnableToAuthorizeJoin, UnableToGrantJoin}encountered for restricted rooms - Add support for timestamp massaging (MSC3316)
- Add support for querying relating events (MSC2675)
- Move
filter::RelationTypetoruma_events::relations - Add unstable support for discovering an OpenID Connect server (MSC2965)
- Add
SpaceRoomJoinRule::KnockRestricted(MSC3787) - Add unstable support for private read receipts (MSC2285)
- Add unstable support for API scope restriction (MSC2967)
0.14.1
Improvements:
- Add
From<&UserId>andFrom<&OwnedUserId>implementations forUserIdentifier - Add
UserIdentifier::emailconstructor
0.14.0
Bug fixes:
- Fix HTTP method of
backup::update_backup - Make score and reason optional in room::report_content::Request
- Fix
uiaa::*::thirdparty_id_credsaccording to a clarification in the spec
Breaking changes:
- Use
Rawforconfig::set_*_account_data::Request::data. - Rename the endpoints in
backup:add_backup_key_session=>add_backup_keys_for_sessionadd_backup_key_sessions=>add_backup_keys_for_roomcreate_backup=>create_backup_versiondelete_backup=>delete_backup_versiondelete_backup_key_session=>delete_backup_keys_for_sessiondelete_backup_key_sessions=>delete_backup_keys_for_roomget_backup=>get_backup_infoget_backup_key_session=>get_backup_keys_for_sessionget_backup_key_sessions=>get_backup_keys_for_roomget_latest_backup=>get_latest_backup_infoupdate_backup=>update_backup_version
- Rename
discovertodiscovery - Move
capabilities::get_capabilitiesintodiscovery - Make
fromoptional inmessage::get_message_eventsaccording to a clarification in the spec
Improvements:
- Add support for the space summary API in
space::get_hierarchyaccording to MSC2946. - Add
device_idtoaccount::whoami::Responseaccording to MSC2033 - Add
is_guesttoaccount::whoami::Responseaccording to MSC3069 - Add
session::login::LoginInfo::ApplicationServiceaccording to MSC2778 - Add new fields in
discovery::get_capabilities::Capabilitiesaccording to MSC3283 - Implement Space Summary API according to MSC2946
- Add unstable support for threads in
filter::RoomEventFilteraccording to MSC3440
0.13.0
Bug fixes:
- Fix deserialization of
r0::session::get_login_types::CustomLoginType. - Make fields of
r0::session::get_login_types::IdentityProviderpublic.
Breaking changes:
- Use an enum for user-interactive auth stage type (used to be
&str/String) - Make
r0::uiaa::ThirdpartyIdCredentialsan owned type and remove itsIncomingequivalent- Previously, we had two fields of type
&'a [ThirdpartyIdCredentials<'a>]and this kind of nested borrowing can be very annoying
- Previously, we had two fields of type
LoginInfono longer implementsPartialEqandEqdue to the custom variant that was added.LoginInfoconverted to newtype variants.- Use
Rawforcreate_room::Request::creation_content - Delete
r0::contactmodulerequest_contact_verification_tokenwas an out-of-date duplicate ofr0::account::request_3pid_management_token_via_emailget_contactshas been can now be found atr0::account::get_3pids
- Move
r0::uiaa::authorize_fallbacktor0::uiaa::get_uiaa_fallback_page - Change type of field
startofr0::message::get_message_events::ResponsetoStringin accordance with the updated specification. - Rename
uiaa::UserIdentifier::MatrixIdvariant touiaa::UserIdentifier::UserIdOrLocalpart
Improvements:
-
Add support for reasons in the membership endpoints:
r0::membership::{ join_room_by_id, join_room_by_id_or_alias, invite_user, unban_user } -
Add a
.data()accessor method tor0::uiaa::{AuthData, IncomingAuthData} -
Allow to construct the custom
AuthDatavariant withIncomingAuthData::newand then callIncomingAuthData::to_outgoingon it. -
Add custom variant to
LoginInfowhich can be constructed withIncomingLoginInfo::newand then callIncomingLoginInfo::to_outgoingon it. -
Move MSC2858 - Multiple SSO Identity Providers out of the
unstable-pre-specfeature flag, this includes:- The
r0::session::get_login_types::{IdentityProvider, IdentityProviderBrand}types - The
session::sso_login_with_provider::v3endpoint
- The
-
Move reason support for leaving room out of
unstable-pre-spec -
Move room type support out of
unstable-pre-spec -
Move knocking support out of
unstable-pre-spec -
Move blurhash support to
unstable-msc2448
0.12.3
- Add a
feature = "compat"workaround for Element failing onGET /_matrix/client/r0/account/3pidresponse if the optionalthreepidsfield is missing
0.12.2
Improvements
- Add
auth_typeandsessionaccessors touiaa::IncomingAuthData
0.12.1
Improvements:
- Add
auth_typeandsessionaccessors touiaa::AuthData
0.12.0
Breaking changes:
- Change inconsistent types in
roomsandnot_roomsfields inRoomEventFilterstructure: both types now useRoomId - Move
r0::{session::login::UserIdentifier => uiaa::UserIdentifier} - Add
stagesparameter tor0::uiaa::AuthFlow::new - Upgrade dependencies
Improvements:
-
Add more endpoints:
r0::knock::knock_room -
Add unstable support for room knocking
-
Add unstable support for reasons for leaving rooms
0.11.2
Yanked since it depended on a version of ruma-api that had to be yanked too.
0.11.1
Yanked, wrong dependency version.
0.11.0
Breaking changes:
-
Use
Raw<AnyInitialStateEvent>over justAnyInitialStateEventin theinitial_statefield ofr0::room::create_room::Request -
Remove
r0::keys::{ CrossSigningKey, CrossSigningKeySignatures, KeyUsage, OneTimeKey, SignedKey, SignedKeySignatures, }These are now found in
ruma_common::encryption(orruma::encryption). -
Remove
r0::to_device::DeviceIdOrAllDevices, now found inruma_common::to_device(orruma::to_device) -
Remove
r0::contact::get_contacts::{ThirdPartyIdentifier, ThirdPartyIdentifierInit}, now found inruma_common::thirdparty(orruma::thirdparty)
0.10.2
Bug fixes:
- Remove authentication for get alias endpoint
0.10.1
Improvements:
- Add unstable support for room types
0.10.0
Bug fixes:
- Fix deserialization of
r0::room::get_room_event::Response - More missing fields in
r0::sync::sync_events::Responsecan be deserialized - Fix
get_tags::Responseserialization - Fix unsetting avatar URL when
compatfeature is enabled
Breaking changes:
-
Update
contains_url: Option<bool>inr0::filter::RoomEventFiltertourl_filter: Option<UrlFilter>. -
Borrow strings in outgoing requests and responses.
- Explicit types may have to be updated from
endpoint::Requesttoendpoint::Request<'_>on clients andendpoint::IncomingRequeston servers, the other way around for responses. - When sending a request or response, you shouldn't have to clone things as much as before. Tip:
Use clippy to detect now-unnecessary
.into()conversions.
- Explicit types may have to be updated from
-
Make most types non-exhaustive
- This means you no longer can construct many of them using struct literals.
- Instead, constructors are provided.
- Tip: To set optional fields that aren't set in the constructor, you may find the
assigncrate useful.
-
Make
avatar_urlinr0::profile::set_avatar_url::RequestanOption -
Update type of
canonical_aliasinr0::directory::PublicRoomsChunkfromOption<String>toOption<RoomAliasId> -
Update
r0::room::create_room::CreationContent- Change
federateds type fromOption<bool>tobool - Add
predecessorfield
- Change
-
Update
r0::push::get_pushrules_allandr0::push::get_pushrules_global_scopeto use theRulesettype fromruma_common::push(also available asruma::push) -
Fix event types in
r0::context::get_context -
Fix event types in
r0::sync::sync_events -
Update type of
user_idinr0::account::whoamifromStringtoruma_identifiers::UserId -
Update type of
limitedinr0::sync::sync_events::TimelinefromOption<bool>tobool -
Use
DeviceIdfordevice_idfield ofr0::session::login::Response -
Use
ruma_identifiers::ServerNameinstead ofStringforserver_namefields in the following endpoints:r0::{ account::request_openid_token, media::{get_content, get_content_as_filename, get_content_thumbnail}, membership::join_room_by_id_or_alias, session::login, } -
Rename
r0::search::search_events::{RoomEventJsons => ResultRoomEvents}. The previous name was an error introduced in a mass search and replace -
r0::sync::sync_events::SetPresencehas been moved and renamed. Usepresence::PresenceStatefromrumaorruma-common. -
r0::push::Actionhas been moved. Import it fromrumaorruma-common. -
Update type of
limitinr0::user_directory::search_usersfromOption<UInt>toUInt -
Rename
r0::message::{create_message_event => send_message_event} -
Rename
r0::state::{create_state_event_* => send_state_event_*} -
Replace
r0::keys::{AlgorithmAndDeviceId, KeyAlgorithm}withruma_identifiers::{DeviceKeyId, DeviceKeyAlgorithm}, respectively -
Use
ruma_identifiers::{ServerName, ServerKeyId}insignaturesfields ofr0::room::membership::ThirdPartySigned. -
Move
r0::directory::{Filter, PublicRoomsChunk, RoomNetwork}to theruma-commoncrate -
Replace
r0::room::create_room::InitialStateEventwithruma_events::InitialStateEvent -
error::ErrorKindno longer implementsCopy,FromStr -
Switch from
AnyEventtoAnyRoomEventinr0::search::search_events -
Move
r0::account::request_openid_token::TokenTypetoruma-commoncrate -
Move
user: UserInfoinr0::session::login::Requesttoidentifier: UserIdentifierinr0::session::login::LoginInfo::Passwordr0::session::login::Request::newtakes onlylogin_info: LoginInfoas a param
-
Change
ruma_events::AnyEventtoruma_events::AnySyncRoomEventinpush::get_notifications::Notification -
Use
ruma_identifiers::MxcUriinstead ofStringforavatar_urlfields in the following endpoints:r0::{ directory, media::create_content, membership::joined_members, profile::{get_avatar_url, get_profile, set_avatar_url}, search::{search_events, search_users} } -
Change
r0::session::get_login_types::LoginTypeto a non-exhaustive enum of structs. -
Move
r0::receipt::ReceiptTypeto theruma-commoncrate
Improvements:
-
Add method
into_event_contentforr0::room::create_room::CreationContent -
Add room visibility endpoints:
r0::directory::{get_room_visibility, set_room_visibility}. -
Add is_empty helpers for structs in
r0::sync::sync_events -
Add a constructor for request structs of the following endpoints
r0::room::create_roomr0::message::get_message_events
-
Add
logout_devicesfield tor0::account::change_password -
Add
r0::room::aliases(introduced in r0.6.1) -
Add constructors that use
ruma_identifiers::MxcUriforRequestin the following endpoints:r0::media::{ get_content, get_content_as_filename, get_content_thumbnail } -
Implement MSC2858 - Multiple SSO Identity Providers under the
unstable-pre-specfeature flag:- Add the
r0::session::get_login_types::{IdentityProvider, IdentityProviderBrand}types - Add the
r0::session::sso_login_with_providerendpoint
- Add the
0.9.0
Bug fixes:
- Fix (de)serialization for
r0::media::get_content_thumbnail::Response - Make
r0::device::get_devices::Response::devicespublic
Breaking changes:
- The
event_idin the response for the message and state sending endpoints is now required- r0.6.0 doesn't say they are required, but this has been fixed for the next version of the spec
- Updated the type of
r0::sync::sync_events::DeviceListsfields - Change
r0::device::Devicefields according to the spec
Improvements:
r0::keys::AlgorithmAndDeviceIdnow implementsDisplay
0.8.0
Breaking changes:
- Update all endpoints to r0.6.0
- Some of the changes from that might not be listed below, but it should be easy to figure out what changed from the documentation and compiler errors if you are using any of the affected endpoints.
- Add
server_nameparameter tor0::join::join_room_by_id_or_alias - Modify
r0::account::AuthenticationData:- Rename to
AuthData - Change to an enum to facilitate fallback auth acknowledgements
- Add
auth_parametersfield - Move to
r0::uiaamodule
- Rename to
- Add
room_networkparameter tor0::directory::get_public_rooms_filteredto representinclude_all_networksandthird_party_instance_idMatrix fields - Update
r0::account::registerendpoint:- Remove
bind_emailrequest field (removed in r0.6.0) - Remove
inhibit_loginrequest field, makeaccess_tokenanddevice_idresponse fields optional (added in r0.4.0) - Remove deprecated
home_serverresponse field (removed in r0.4.0)
- Remove
- Update
r0::contact::get_contactsendpoint to r0.6.0 - Change
UInttimestamps toSystemTimein:media::get_media_preview::Requestpush::get_notifications::Notificationserver::get_user_info::ConnectionInfodevice::Device
- Change all usages of
HashMaptoBTreeMap - Change the messages type that gets sent out using the
r0::client_exchange::send_event_to_devicerequest. - Add
M_USER_DEACTIVATEDtoerror::ErrorKind - Make
display_namefield ofr0::membership::joined_events::RoomMemberoptional - Update
r0::search::search_eventsto r0.6.0 - Add
account_datafield tor0::sync::sync_events - Rename
r0::client_exchangetor0::to_device
Improvements:
- Add types for User-Interactive Authentication API:
r0::uiaa::{AuthFlow, UiaaInfo, UiaaResponse} - Add missing serde attributes to
get_content_thumbnailquery parameters - Add missing
stateresponse field tor0::message::get_message_events - Normalize
serde_jsonimports - Remove dependency on the
urlcrate
0.7.2
Bug fixes:
- Fix
create_roomrequests without aninitial_statefield failing deserialization - Fix
sync_eventsresponses without adevice_one_time_keys_countfield failing deserialization
0.7.1
Bug fixes:
- Fix deserialization of
sync_events::Request - Fix (de)serialization of
sync_events::RoomSummary
0.7.0
Breaking changes:
-
Update ruma-api to 0.15.0
-
Update ruma-events to 0.18.0
-
Fix
r0::session::get_login_types -
Add
allow_remoteparameter tor0::media::get_content -
Add missing parameters for
r0::room::create_room -
Moved
r0::room::create_room::Invite3pidtor0::membership::Invite3pid -
Replaced
user_idparameter ofr0::membership::invite_userwithrecipientto allow invitation of users by either Matrix or third party identifiers. -
Remove deprecated endpoint
r0::contact::create_contact(deprecated in r0.6.0) -
Add lazy-loading options to
r0::filter::RoomEventFilter(introduced in r0.5.0) -
Change type for
limitrequest parameter ofr0::context::get_contextfromu8toOption<js_int::UInt> -
Use
std::time::Durationfor appropriate fields on several endpoints:r0::{ account::request_openid_token, keys::{claim_keys, get_keys}, presence::get_presence, sync::sync_events, typing::create_typing_event, voip::get_turn_server_info }
Improvements:
- Add an
Errortype that represents the well-known errors in the client-server API- the response deserialization code will try to create an instance of this type from http responses that indicate an error
- Add OpenID token request endpoint.
- Add
r0::client_exchange::send_event_to_device(introduced in r0.3.0) - Add endpoints to retrieve account_data (introduced in r0.5.0)
- Add media endpoints:
r0::media::{get_media_config, get_media_preview, get_content_as_filename} - Add
unstable_featurestounversioned::get_supported_versions(introduced in r0.5.0) - Add request and response parameters for
r0::account::deactivate - Add
r0::session::sso_login(introduced in r0.5.0) - Add
filtertype forr0::context::get_context
0.6.0
Breaking changes:
- Update ruma-api to 0.13.0
- Our Minimum Supported Rust Version is now 1.40.0
- Remove presence list endpoints
r0::presence::{get_subscribed_presences, update_presence_subscriptions}(removed in r0.5.0) - Refactor
r0::sendendpoints and remove module:- Move
r0::send::send_message_eventtor0::message::create_message_event - Move
r0::send::send_state_event_for_empty_keytor0::state:create_state_event_for_empty_key - Move
r0::send::send_state_event_for_keytor0::state:create_state_event_for_key
- Move
- Refactor
r0::syncendpoints:- Move
r0::sync::get_member_eventstor0::membership::get_member_events - Move
r0::sync::get_message_eventstor0::message::get_message_events - Move
r0::sync::get_state_eventstor0::state::get_state_events - Move
r0::sync::get_state_events_for_empty_keytor0::state::get_state_events_for_empty_key - Move
r0::sync::get_state_events_for_keytor0::state::get_state_events_for_key
- Move
- Update endpoints for requesting account management tokens via email:
- Move
r0::account::request_password_change_tokentor0::account::request_password_change_token_via_email - Move
r0::account::request_register_tokentor0::account::request_registration_token_via_email - Modify
r0::account::request_registration_token_via_emailnot to be rate-limited and require authentication
- Move
- Merge duplicate enums
r0::contact::get_contact::Mediumandr0::session::login::Mediumand move them tor0::thirdparty
Improvements:
- Add
r0::deviceendpoints - Add
r0::room::get_room_event(introduced in r0.4.0) - Add
r0::read_marker::set_read_marker(introduced in r0.4.0) - Add
r0::capabilities::get_capabilities(introduced in r0.5.0) - Add
r0::keysendpoints (introduced in r0.3.0) - Add
r0::session::get_login_types(introduced in r0.4.0) - Add
r0::account::get_username_availability(introduced in r0.4.0) - Add endpoints to request management tokens (introduced upstream in r0.4.0):
r0::account::request_3pid_management_token_via_msisdnr0::account::request_password_change_token_via_msisdnr0::account::request_registration_token_via_msisdnr0::account::request_3pid_management_token_via_email
- Update
r0::presence_get_presencefrom r0.4.0 to r0.6.0 - Add
r0::account::bind_3pid - Add
r0::account::delete_3pid - Add
r0::account::unbind_3pid - Add
r0::pushendpoints - Add
r0::room::upgrade_room(introduced upstream in r0.5.0)
0.5.0
Breaking changes:
- Our Minimum Supported Rust Version is now 1.39.0
- Update ruma-api from 0.11.0 to 0.12.0
- Move
r0::directory::get_public_rooms::PublicRoomsChunktor0::directory::PublicRoomsChunk - Move
r0::room::create_room::Visibilitytor0::room::Visibility - Move
r0::account::register::AuthenticationDatator0::account::AuthenticationData
Improvements:
- Update
r0::directory::get_public_roomsfrom r0.3.0 to r0.6.0 - Add
r0::directory::get_public_rooms_filtered(introduced upstream in r0.3.0) - Add
filteroptional parameter tor0::sync::get_message_events(introduced upstream in r0.3.0) - Add
r0::appservice::set_room_visibility(part of application service extensions for the client-server API) - Add
contains_urltor0::filter::RoomEventFilter(introduced upstream in r0.3.0) - Update
r0::account::change_passwordfrom r0.3.0 to r0.6.0- Add optional
authfield
- Add optional