Use new trait bounds for KeyId to only allow specific types. Change the KeyId validation to be generic over the key name type. Remove the KeyName type and replace it with the more specific ServerSigningKeyVersion.
19 KiB
19 KiB
[unreleased]
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.
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.
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]