21 KiB
21 KiB
[unreleased]
Improvements:
- The
ruma_identifiers_storagecompile-timecfgsetting can also be configured by setting theRUMA_IDENTIFIERS_STORAGEenvironment variable at compile time. It has the benefit of not requiring to re-compile all the crates of the dependency chain when the value is changed.
0.14.1
Bug fixes:
- The
KeyId::key_namemethod now returns the key name. In 0.14.0,key_namemistakenly returned the algorithm.
0.14.0
Bug fixes:
- The
instance_idfield was removed fromProtocolInstanceInitand is now anOption<String>forProtocolInstance. It made theunstable-unspecifiedfeature non-additive.
Breaking changes:
- Rename the
query_mapattribute of therequestmacro toquery_all, and remove the required bound to implementIntoIterator<Item = (String, String)>. This allows to use a struct or enum as well as a map to represent the list of query parameters. Note that the (de)serialization of the type used must work withserde_html_form. - The
headerattribute for therequestandresponsemacros accepts any type that implementsToStringandFromStr. - The
compat-key-idcargo feature was renamed tocompat-server-signing-key-version. (Owned)KeyNamewas renamed to(Owned)ServerSigningKeyVersionand is now validated according to the set of allowed characters defined in the docs, unless thecompat-server-signing-key-versioncargo feature is enabled.- The bounds on
KeyIdchanged. The algorithm part must implementKeyAlgorithmand the key name part must implementKeyName. - The
(owned_)server_signing_key_idmacros were removed. For compile-time validated construction, useServerSigningKeyId::from_partswith aSigningKeyAlgorithmand theserver_signing_key_versionmacro. - Rename
Signatures::inserttoSignatures::insert_signature.Signatures::insertis now dereferenced toBTreeMap::insert. - Move the
DeviceKeyAlgorithm::SignedCurve25519into the newOneTimeKeyAlgorithmtype. - Add
(Owned)CrossSigningKeyIdand use it instead ofOwnedDeviceKeyIdto identifyCrossSigningKey'skeys. - Add
(Owned)CrossSigningOrDeviceSigningKeyIdand use it instead ofOwnedDeviceKeyIdto identify signing keys inDeviceKeys's andCrossSigningKey'ssignatures. - Use
OwnedDeviceSigningKeyIdinstead ofOwnedDeviceKeyIdto identify signing keys inSignedKey'ssignatures. (Owned)DeviceKeyIdis now a type alias of(Owned)KeyId.- Remove the
(owned_)device_key_idmacro, instead useDeviceKeyId::from_parts.
- Remove the
- Use
CrossSigningOrDeviceSignaturesfor thesignaturesofDeviceKeys. - Remove
SignedKeySignaturesand replace it withDeviceSignatures. - Remove
CrossSigningKeySignaturesand replace it withCrossSigningOrDeviceSignatures.
Improvements:
- Add the
InvalidHeaderValuevariant to theDeserializationErrorstruct, for cases where we receive a HTTP header with an unexpected value. - Implement
Eq/Hash/PartialEqforThirdPartyIdentifier, to check whether aThirdPartyIdentifierhas already been added by another user. - Add
MatrixVersion::V1_11andMatrixVersion::V1_12. - Clarify in the docs of
AuthSchemethat sending an access token via a query parameter is deprecated, according to MSC4126 / Matrix 1.11. - Constructing a Matrix URI for an event with a room alias is deprecated, according to MSC4132 / Matrix 1.11
- Implement
EqandPartialEqforMetadata - Allow constructing
api::error::MatrixErrorBody::NotJsonoutside of this crate. - Improve the API of
Signatures, by implementingDerefandDerefMut, as well asFrom,ExtendandFromIteratorfrom a list of(entity, key_identifier, value)tuples. - Add
(Owned)OneTimeKeyIdand(Owned)OneTimeKeyNameto identify one-time and fallback keys instead of using(Owned)DeviceKeyId. - Add
(Owned)Base64PublicKeyand(Owned)Base64PublicKeyOrDeviceIdto identify cross-signing keys.- Add
(owned_)base_64_public_keyto construct a compile-time validated(Owned)Base64PublicKey.
- Add
0.13.0
Bug fixes:
- Allow to deserialize
Rulesetwith missing fields.
Breaking changes:
- The power levels fields in
PushConditionRoomCtxare grouped in an optionalpower_levelsfield. If the field is missing, push rules that depend on it will never match. However, this allows to match the.m.rule.invite_for_mepush rule because usually theinvite_statedoesn't includem.room.power_levels. - Add support for endpoints that take an optional authentication
- Add support for endpoints that require authentication for appservices
deserialize_as_f64_or_stringhas been extended to also support parsing integers, and renamed todeserialize_as_number_or_stringto reflect that.- The http crate had a major version bump to version 1.1
IntoHttpError::Headernow contains aHeaderSerializationError
Improvements:
- Use the web-time crate to return a
SystemTimethat works under WASM in theMilliSecondsSinceUnixEpoch::to_system_time()method. - Stabilize support for
.m.rule.suppress_editspush rule (MSC3958 / Matrix 1.9) - Add
MatrixVersion::V1_9andV1_10 - Point links to the Matrix 1.10 specification
- Implement
as_str()andAsRef<str>forpush::PredefinedRuleId - Implement
kind()forpush::Predefined{*}RuleId - Implement
CloneforMatrixToUriandMatrixUri
0.12.1
Bug fixes:
- Allow to deserialize
(New)ConditionalPushRulewith a missingconditionsfield.
0.12.0
Bug fixes:
- Set the predefined server-default
.m.rule.tombstonepush rule as enabled by default, as defined in the spec.
Breaking changes:
FlattenedJson::getreturns aFlattenedJsonValueinstead of a string- Remove the
DontNotifyandCoalescevariants ofpush::Actionaccording to MSC3987- Old push rules will still deserialize successfully but the
Coalescevariant will not returntrueforAction::should_notify()anymore
- Old push rules will still deserialize successfully but the
- Removed the
eventsmodule, it is once again its own crate (ruma-events) - Removed
FromandTryFromimplementations forRedactedBecausein favor of named constructors (from_jsonandfrom_raw_event) - Updated room IDs to not require a servername
- Removed
localpartmethod fromRoomIdandRoomOrAliasId - Changed
server_namemethod onRoomIdandRoomOrAliasIdto returnOption<&str>
- Removed
Improvements:
- Allow padding when decoding the
Base64type from a string - Add convenience methods for
push::Ruleset:- To update the server-default push rules
- To remove a user-defined push rule
- Add
AsRef<[u8]>implementations for identifier types PushCondition::EventMatchandFlattenedJsonnow use escaped dotted paths (MSC3873 / Matrix 1.7)- Add support for
event_property_ispush condition (MSC3758 / Matrix 1.7) - Add support for
event_property_containspush condition (MSC3966 / Matrix 1.7) - Add
MatrixVersion::V1_7andMatrixVersion::V1_8 - Add support for room version 11 according to MSC3820 / Matrix 1.8
- Adapt the redaction algorithm in
canonical_json
- Adapt the redaction algorithm in
- Add unstable support for suppress edits push rule (MSC3958)
0.11.3
Bug fixes:
- Move
.m.rule.roomnotifpush rule before.m.rule.tombstonein the server default push rules, according to a spec clarification in Matrix 1.6
Improvements:
- Add
MatrixVersion::V1_6 - Stabilize support for fixed base64 for SAS verification (MSC3783 / Matrix 1.6)
- Deprecate
MessageAuthenticationCode::HkdfHmacSha256
- Deprecate
0.11.2
Bug fixes:
- Don't accept colons in the localpart given to
UserId::parse_with_servernameeven withfeature = "compat"
Improvements:
- Derive
HashforReceiptTypeandReceiptThread - Update
EventContentderive macro to emit new type definitions and type aliases under the same visibility as the input type (this fixes a future- compatibility warning when derivingEventContenton a non-pubtype)
0.11.1
Improvements:
- Make alternate Debug representation of
MilliSecondsSinceUnixEpochandSecondsSinceUnixEpochmore compact (remove newlines)
0.11.0
Bug fixes:
- HTML-relevant characters (
<,>, etc) in plaintext replies are now escaped during creation of the rich reply - Don't include sensitive information in
Debug-format of types from theevents::keyandevents::secretmodules - Fix deserialization of
RoomMessageEventContentandRoomEncryptedEventContentwhen there is no relation - Fix deserialization of
StateUnsignedwhen theprev_contentis redacted - Allow to deserialize
PushConditionwith unknown kind - Allow to deserialize
push::Actionwith unknown value - Only percent-encode reserved characters in endpoint URL path
Breaking changes:
- Remove deprecated
EventTypeenum - Remove deprecated constructors for
RoomMessageEventContent - Remove
serde::vec_as_map_of_emptyfrom the public API - Remove the
api::AuthScheme::QueryOnlyAccessTokenvariant, which is no longer used - The
#[ruma_api(header)]attribute of theruma_apimacro now accepts an arbitraryhttp::header::HeaderName- To continue using constants from
http::header, they must be imported in the module calling the macro.
- To continue using constants from
- Make
nameoptional onSecretStorageKeyEventContent. Default constructor has been adjusted as well to not require this field. - Rename
push::PusherDatatoHttpPusherDataand make theurlfield required - Remove
Ruleset::addand the implementation ofExtend<AnyPushRule>forRuleset - Make
EndpointErrorconstruction infallibleEndpointError::try_from_http_requesthas been replaced byEndpointError::from_http_requestFromHttpResponseError<E>::Servernow containsEinstead ofServerError<E>ServerError<E>has been removedMatrixErroris now an enum with theJsonvariant containing the previous fields
- Change the
ignored_usersfield ofIgnoredUserListEventContentto a map of empty structs, to allow eventual fields to be added, as intended by the spec - Make
SimplePushRuleand associated types generic over the expected type of therule_id - Deduplicate and group relation structs in
events::relation:- Move relation structs under
events::room::messagetoevents::relation - Move common relation structs under
events::room::encryptedtoevents::relationand remove duplicate types - Remove
events::reaction::Relationand useevents::relation::Annotationinstead - Remove
events::key::verification::Relationand useevents::relation::Referenceinstead
- Move relation structs under
- Rename
events::relation::RelationstoBundledRelations - Make the
redacted_becausefield inUnsignedRedactednon-optional and replace parameterlessnewconstructor by one that takes a redaction event (likenew_becausepreviously, which is now removed) - Move the
Unsignedassociated type fromStateEventContenttoOriginalStateEventContentRedacted*EventContents don't have anunsignedtype anymore
- Remove the
serde::urlencodedmodule- Query string (de)serialization is now done by the
serde_html_formcrate
- Query string (de)serialization is now done by the
- Rename
RoomEventTypetoTimelineEventType - Remove
SecretStorageKeyEventContent's implementation ofDeserialize- Use
EventContentFromType::from_partsinstead
- Use
- Remove
StateUnsignedFromParts- Replace it with a bound on
DeserializeOwned
- Replace it with a bound on
- Remove
Raw::deserialize_content- Instead, use
.deserialize_as::<T>()or.cast_ref::<T>().deserialize_with_type()
- Instead, use
- Remove
EventContent::from_parts- Replace it with
EventContentFromType::from_parts
- Replace it with
- The
serde::StringEnumderive now also generates aDebugimplementation
Improvements:
- Add
MatrixVersion::V1_4andMatrixVersion::V1_5 - Stabilize default room server ACL push rule
- Stabilize
room_typesindirectory::Filterandroom_typeindirectory::PublicRoomsChunk - Stabilize support for private read receipts
- Add stable support for threads
- Move
Relation::Threadand associated types and methods out ofunstable-msc3440 - Add parameter to
RoomMessageEventContent::make_reply_toto be thread-aware - Add
RoomMessageEventContent::make_for_reply
- Move
- Stabilize support for event replacements (edits)
- Add support for read receipts for threads (MSC3771 / Matrix 1.4)
- Add
push::PredefinedRuleIdand associated types as a list of predefined push rule IDs - Add convenience methods to
RulesetRuleset::getto access a push ruleRuleset::insertto add or update user push rulesRuleset::set_enabledto change the enabled state of push rulesRuleset::set_actionsto change the actions of push rules
- Add support for bundled reference relations (MSC3267 / Matrix 1.5)
- Add the
formattedfield onKeyVerificationRequestEventContent(Matrix 1.5) - Add
contentaccessors forAny*StateEventenums - Add the
DebugAsRefStrderive macro toruma_common::serde
0.10.5
Improvements:
- Add support for
#[incoming_derive(!Debug)]to theIncomingderive macro
0.10.4
Bug fixes:
- Fix
MatrixToUriparsing for non-url-encoded room aliases
0.10.3
Bug fixes:
- Fix ruma-common not compiling with the Cargo features
eventsandunstable-msc2677active, andunstable-msc2676inactive
0.10.2
Improvements:
- Add
relationsaccessors to event enum types:AnyMessageLikeEventandAnySyncMessageLikeEventAnyStateEventandAnySyncStateEventAnyTimelineEventandAnySyncTimelineEvent
0.10.1
Improvements:
- Add
RoomMessageEventContent::make_reply_to- Deprecate reply constructors in favor of the new method
0.10.0
Bug fixes:
- Expose
MatrixIdError,MatrixToError,MatrixUriErrorandMxcUriErrorat the crate root - Fix matching of
event_matchcondition- The spec clarified its behavior: https://github.com/matrix-org/matrix-spec-proposals/pull/3690
Breaking changes:
- Add
user_idfield toPushConditionRoomCtx - Remove
PartialEqimplementation onNotificationPowerLevels - Remove
PartialEqimplementation forevents::call::SessionDescription - Use new
events::call::AnswerSessionDescriptionforCallAnswerEventContentandOfferSessionDescriptionforCallInviteEventContent - Use new
VoipVersionIdandVoipIdtypes forevents::callevents - Remove
RoomName/OwnedRoomNameand replace usages withstr/String- Room name size limits were never enforced by servers (Spec change removing the size limit)
- Remove
RoomMessageFeedbackEventand associated types and variants according to MSC3582 - Move
CanonicalJson,CanonicalJsonObjectandCanonicalJsonErrorout of theserdemodule and behind the cargo feature flagcanonical-json - Make identifiers matrix URI constructors generic over owned parameters
- Split
RoomIdmatrix URI constructors between methods with and without routing
- Split
- Allow to add routing servers to
RoomId::matrix_to_event_uri() - Move
receipt::ReceiptTypetoevents::receipt - Make
Cloneas supertrait ofapi::OutgoingRequest - Rename
Any[Sync]RoomEventtoAny[Sync]TimelineEvent RoomMemberEventand related types now have a custom unsigned type including theinvite_room_statefield, instead of theStateUnsignedtype used by other state events
Improvements:
- All push rules are now considered to not apply to events sent by the user themselves
- Change
events::relation::BundledAnnotationto a struct instead of an enum- Remove
BundledReaction
- Remove
- Add unstable support for polls (MSC3381)
- Add unstable support for Improved Signalling for 1:1 VoIP (MSC2746)
- Add support for knocking in
events::room::member::MembershipChange - Add
MatrixVersion::V1_3 - Deprecate the
sender_keyanddevice_idfields for encrypted events (MSC3700) - Move the
relationsfield ofevents::unsignedtypes out ofunstable-msc2675 - Deserialize stringified integers for power levels without the
compatfeature - Add
JoinRule::KnockRestricted(MSC3787) - Add
MatrixVersionId::V10(MSC3604) - Add methods to sanitize messages according to the spec behind the
htmlfeature- Can also remove rich reply fallbacks
- Implement
From<Owned*Id>foridentifiers::matrix_uri::MatrixId - Add unstable default push rule to ignore room server ACLs events (MSC3786)
- Add unstable support for private read receipts (MSC2285)
- Add unstable support for filtering public rooms by room type (MSC3827)
0.9.2
Bug fixes:
- Fix serialization and deserialization of events with a dynamic
event_type
0.9.1
Improvements:
- Add
StrippedPowerLevelsEvent::power_levels - Add (
Sync)RoomMemberEvent::membership - Export
events::room::member::Change- Prior to this, you couldn't actually do anything with the
membership_changefunctions on various member event types
- Prior to this, you couldn't actually do anything with the
0.9.0
Bug fixes:
- Change default
invitepower level to0- The spec was determined to be wrong about the default: https://github.com/matrix-org/matrix-spec/pull/1021
Breaking changes:
- Several ruma crates have been merged into
ruma-commonruma-apihas moved intoapi, behind a feature flagruma-eventshas moved intoevents, behind a feature flagruma-identifierstypes are available at the root of the crateruma-serdehas moved intoserde
- The
events::*MessageEventtypes have been renamed to*MessageLikeEvent - Change
events::roommedia types to accept either a plain file or an encrypted file, not both simultaneously - Change
events::roommedia types to useDurationwhere applicable - Move
prev_contentintounsigned - Rename
identifiers::ErrortoIdParseError - Fix the
RoomMessageEventContent::*_reply_plainmethods that now return a message with aformatted_body, according to the spec. Therefore, they only acceptOriginalRoomMessageEvents like their HTML counterparts. - Update the
state_keyfield of state events to be of a different type depending on the content type. You now no longer need to validate manually thatm.room.memberevents have a user ID as their state key!
Improvements:
- Add unstable support for extensible events (MSCs 1767, 3551, 3552, 3553, 3246, 3488)
- Add unstable support for translatable text content (MSC3554)
- Add unstable support for voice messages (MSC3245)
- Add unstable support for threads (MSC3440)
- Add
ReceiptEventContent::user_receipt - Make
Restricted::allowpublic - Conversion from
RoomPowerLevelstoRoomPowerLevelsEventContent
0.8.0
Breaking changes:
- Update
ruma-identifiersdependency
0.7.0
Breaking changes:
- Update
ruma-identifiersdependency - Use new
Base64type forkeyfield ofSignedKey
0.6.0
Breaking changes:
- Make a few enums non-exhaustive
- Upgrade dependencies
0.5.4
Improvements:
- Add
to_devicemodule containingDeviceIdOrAllDevices
0.5.3
Improvements:
- Add
instance_idfield toProtocolInstance[Init]under theunstable-pre-specfeature
0.5.2
Improvements:
- Add
thirdparty::ThirdPartyIdentifier
0.5.1
Improvements:
- Add
receipt::ReceiptType - Add
MilliSecondsSinceUnixEpochandSecondsSinceUnixEpochtypes - Bump dependency versions
0.5.0
Breaking changes:
- Rename
push::RulesetItertopush::RulesetIntoIter - Change the return type of
push::Ruleset::get_actionsfrom an iterator to a slice
Improvements:
- Add
push::Ruleset::iter()for borrowing iteration of rulesets - Add conversions between
AnyPushRuleandAnyPushRuleRef(AnyPushRule::as_refandAnyPushRuleRef::to_owned) - Add
push::Ruleset::get_match()for finding the first matching push rule for an event. This is pretty much the same thing asget_actions()but returns the entire push rule, not just its actions.
0.4.0
Breaking changes:
- Use
ruma_identifiers::MxcUriinstead ofStringforavatar_urlfield indirectory::PublicRoomsChunk - Use
ruma_identifiers::RoomIdinstead ofStringforroom_idfield inpush::PushConditionRoomCtx - Upgrade ruma-identifiers dependency to 0.19.0
0.3.1
Bug fixes:
- Fix
push::PushCondition::appliesfor empty value and pattern
0.3.0
Breaking changes:
- Update set of conversion trait implementations for enums
- Replace
VecbyIndexSetinpush::Ruleset - Replace
push::AnyPushRulewith an enum (the original struct still exists as justPushRuleinruma-client-api) - … (there's a lot more, but this changelog was not kept up to date; PRs to improve it are welcome)
Improvements:
- Add the
thirdpartymodule - Add
directory::{Filter, PublicRoomsChunk, RoomNetwork}(moved fromruma_client_api::r0::directory) - Add
push::{PusherData, PushFormat}(moved fromruma_client_api::r0::push) - Add
authentication::TokenType(moved fromruma_client_api::r0::account:request_openid_token) - Add an
IntoIteratorimplementation forRuleset - Add
push::Ruleset::get_actions- Add
push::PushCondition::applies - Add
push::{FlattenedJson, PushConditionRoomCtx}
- Add
0.2.0
Breaking changes:
- Make most types defined by the crate
#[non_exhaustive]