21 KiB
21 KiB
[unreleased]
Improvements:
- The
ruma_identifiers_storage
compile-timecfg
setting can also be configured by setting theRUMA_IDENTIFIERS_STORAGE
environment 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_name
method now returns the key name. In 0.14.0,key_name
mistakenly returned the algorithm.
0.14.0
Bug fixes:
- The
instance_id
field was removed fromProtocolInstanceInit
and is now anOption<String>
forProtocolInstance
. It made theunstable-unspecified
feature non-additive.
Breaking changes:
- Rename the
query_map
attribute of therequest
macro 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
header
attribute for therequest
andresponse
macros accepts any type that implementsToString
andFromStr
. - The
compat-key-id
cargo feature was renamed tocompat-server-signing-key-version
. (Owned)KeyName
was renamed to(Owned)ServerSigningKeyVersion
and is now validated according to the set of allowed characters defined in the docs, unless thecompat-server-signing-key-version
cargo feature is enabled.- The bounds on
KeyId
changed. The algorithm part must implementKeyAlgorithm
and the key name part must implementKeyName
. - The
(owned_)server_signing_key_id
macros were removed. For compile-time validated construction, useServerSigningKeyId::from_parts
with aSigningKeyAlgorithm
and theserver_signing_key_version
macro. - Rename
Signatures::insert
toSignatures::insert_signature
.Signatures::insert
is now dereferenced toBTreeMap::insert
. - Move the
DeviceKeyAlgorithm::SignedCurve25519
into the newOneTimeKeyAlgorithm
type. - Add
(Owned)CrossSigningKeyId
and use it instead ofOwnedDeviceKeyId
to identifyCrossSigningKey
'skeys
. - Add
(Owned)CrossSigningOrDeviceSigningKeyId
and use it instead ofOwnedDeviceKeyId
to identify signing keys inDeviceKeys
's andCrossSigningKey
'ssignatures
. - Use
OwnedDeviceSigningKeyId
instead ofOwnedDeviceKeyId
to identify signing keys inSignedKey
'ssignatures
. (Owned)DeviceKeyId
is now a type alias of(Owned)KeyId
.- Remove the
(owned_)device_key_id
macro, instead useDeviceKeyId::from_parts
.
- Remove the
- Use
CrossSigningOrDeviceSignatures
for thesignatures
ofDeviceKeys
. - Remove
SignedKeySignatures
and replace it withDeviceSignatures
. - Remove
CrossSigningKeySignatures
and replace it withCrossSigningOrDeviceSignatures
.
Improvements:
- Add the
InvalidHeaderValue
variant to theDeserializationError
struct, for cases where we receive a HTTP header with an unexpected value. - Implement
Eq
/Hash
/PartialEq
forThirdPartyIdentifier
, to check whether aThirdPartyIdentifier
has already been added by another user. - Add
MatrixVersion::V1_11
andMatrixVersion::V1_12
. - Clarify in the docs of
AuthScheme
that 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
Eq
andPartialEq
forMetadata
- Allow constructing
api::error::MatrixErrorBody::NotJson
outside of this crate. - Improve the API of
Signatures
, by implementingDeref
andDerefMut
, as well asFrom
,Extend
andFromIterator
from a list of(entity, key_identifier, value)
tuples. - Add
(Owned)OneTimeKeyId
and(Owned)OneTimeKeyName
to identify one-time and fallback keys instead of using(Owned)DeviceKeyId
. - Add
(Owned)Base64PublicKey
and(Owned)Base64PublicKeyOrDeviceId
to identify cross-signing keys.- Add
(owned_)base_64_public_key
to construct a compile-time validated(Owned)Base64PublicKey
.
- Add
0.13.0
Bug fixes:
- Allow to deserialize
Ruleset
with missing fields.
Breaking changes:
- The power levels fields in
PushConditionRoomCtx
are grouped in an optionalpower_levels
field. If the field is missing, push rules that depend on it will never match. However, this allows to match the.m.rule.invite_for_me
push rule because usually theinvite_state
doesn'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_string
has been extended to also support parsing integers, and renamed todeserialize_as_number_or_string
to reflect that.- The http crate had a major version bump to version 1.1
IntoHttpError::Header
now contains aHeaderSerializationError
Improvements:
- Use the web-time crate to return a
SystemTime
that works under WASM in theMilliSecondsSinceUnixEpoch::to_system_time()
method. - Stabilize support for
.m.rule.suppress_edits
push rule (MSC3958 / Matrix 1.9) - Add
MatrixVersion::V1_9
andV1_10
- Point links to the Matrix 1.10 specification
- Implement
as_str()
andAsRef<str>
forpush::PredefinedRuleId
- Implement
kind()
forpush::Predefined{*}RuleId
- Implement
Clone
forMatrixToUri
andMatrixUri
0.12.1
Bug fixes:
- Allow to deserialize
(New)ConditionalPushRule
with a missingconditions
field.
0.12.0
Bug fixes:
- Set the predefined server-default
.m.rule.tombstone
push rule as enabled by default, as defined in the spec.
Breaking changes:
FlattenedJson::get
returns aFlattenedJsonValue
instead of a string- Remove the
DontNotify
andCoalesce
variants ofpush::Action
according to MSC3987- Old push rules will still deserialize successfully but the
Coalesce
variant will not returntrue
forAction::should_notify()
anymore
- Old push rules will still deserialize successfully but the
- Removed the
events
module, it is once again its own crate (ruma-events
) - Removed
From
andTryFrom
implementations forRedactedBecause
in favor of named constructors (from_json
andfrom_raw_event
) - Updated room IDs to not require a servername
- Removed
localpart
method fromRoomId
andRoomOrAliasId
- Changed
server_name
method onRoomId
andRoomOrAliasId
to returnOption<&str>
- Removed
Improvements:
- Allow padding when decoding the
Base64
type 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::EventMatch
andFlattenedJson
now use escaped dotted paths (MSC3873 / Matrix 1.7)- Add support for
event_property_is
push condition (MSC3758 / Matrix 1.7) - Add support for
event_property_contains
push condition (MSC3966 / Matrix 1.7) - Add
MatrixVersion::V1_7
andMatrixVersion::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.roomnotif
push rule before.m.rule.tombstone
in 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_servername
even withfeature = "compat"
Improvements:
- Derive
Hash
forReceiptType
andReceiptThread
- Update
EventContent
derive macro to emit new type definitions and type aliases under the same visibility as the input type (this fixes a future- compatibility warning when derivingEventContent
on a non-pub
type)
0.11.1
Improvements:
- Make alternate Debug representation of
MilliSecondsSinceUnixEpoch
andSecondsSinceUnixEpoch
more 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::key
andevents::secret
modules - Fix deserialization of
RoomMessageEventContent
andRoomEncryptedEventContent
when there is no relation - Fix deserialization of
StateUnsigned
when theprev_content
is redacted - Allow to deserialize
PushCondition
with unknown kind - Allow to deserialize
push::Action
with unknown value - Only percent-encode reserved characters in endpoint URL path
Breaking changes:
- Remove deprecated
EventType
enum - Remove deprecated constructors for
RoomMessageEventContent
- Remove
serde::vec_as_map_of_empty
from the public API - Remove the
api::AuthScheme::QueryOnlyAccessToken
variant, which is no longer used - The
#[ruma_api(header)]
attribute of theruma_api
macro 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
name
optional onSecretStorageKeyEventContent
. Default constructor has been adjusted as well to not require this field. - Rename
push::PusherData
toHttpPusherData
and make theurl
field required - Remove
Ruleset::add
and the implementation ofExtend<AnyPushRule>
forRuleset
- Make
EndpointError
construction infallibleEndpointError::try_from_http_request
has been replaced byEndpointError::from_http_request
FromHttpResponseError<E>::Server
now containsE
instead ofServerError<E>
ServerError<E>
has been removedMatrixError
is now an enum with theJson
variant containing the previous fields
- Change the
ignored_users
field ofIgnoredUserListEventContent
to a map of empty structs, to allow eventual fields to be added, as intended by the spec - Make
SimplePushRule
and associated types generic over the expected type of therule_id
- Deduplicate and group relation structs in
events::relation
:- Move relation structs under
events::room::message
toevents::relation
- Move common relation structs under
events::room::encrypted
toevents::relation
and remove duplicate types - Remove
events::reaction::Relation
and useevents::relation::Annotation
instead - Remove
events::key::verification::Relation
and useevents::relation::Reference
instead
- Move relation structs under
- Rename
events::relation::Relations
toBundledRelations
- Make the
redacted_because
field inUnsignedRedacted
non-optional and replace parameterlessnew
constructor by one that takes a redaction event (likenew_because
previously, which is now removed) - Move the
Unsigned
associated type fromStateEventContent
toOriginalStateEventContent
Redacted*EventContent
s don't have anunsigned
type anymore
- Remove the
serde::urlencoded
module- Query string (de)serialization is now done by the
serde_html_form
crate
- Query string (de)serialization is now done by the
- Rename
RoomEventType
toTimelineEventType
- Remove
SecretStorageKeyEventContent
's implementation ofDeserialize
- Use
EventContentFromType::from_parts
instead
- 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::StringEnum
derive now also generates aDebug
implementation
Improvements:
- Add
MatrixVersion::V1_4
andMatrixVersion::V1_5
- Stabilize default room server ACL push rule
- Stabilize
room_types
indirectory::Filter
androom_type
indirectory::PublicRoomsChunk
- Stabilize support for private read receipts
- Add stable support for threads
- Move
Relation::Thread
and associated types and methods out ofunstable-msc3440
- Add parameter to
RoomMessageEventContent::make_reply_to
to 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::PredefinedRuleId
and associated types as a list of predefined push rule IDs - Add convenience methods to
Ruleset
Ruleset::get
to access a push ruleRuleset::insert
to add or update user push rulesRuleset::set_enabled
to change the enabled state of push rulesRuleset::set_actions
to change the actions of push rules
- Add support for bundled reference relations (MSC3267 / Matrix 1.5)
- Add the
formatted
field onKeyVerificationRequestEventContent
(Matrix 1.5) - Add
content
accessors forAny*StateEvent
enums - Add the
DebugAsRefStr
derive macro toruma_common::serde
0.10.5
Improvements:
- Add support for
#[incoming_derive(!Debug)]
to theIncoming
derive macro
0.10.4
Bug fixes:
- Fix
MatrixToUri
parsing for non-url-encoded room aliases
0.10.3
Bug fixes:
- Fix ruma-common not compiling with the Cargo features
events
andunstable-msc2677
active, andunstable-msc2676
inactive
0.10.2
Improvements:
- Add
relations
accessors to event enum types:AnyMessageLikeEvent
andAnySyncMessageLikeEvent
AnyStateEvent
andAnySyncStateEvent
AnyTimelineEvent
andAnySyncTimelineEvent
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
,MatrixUriError
andMxcUriError
at the crate root - Fix matching of
event_match
condition- The spec clarified its behavior: https://github.com/matrix-org/matrix-spec-proposals/pull/3690
Breaking changes:
- Add
user_id
field toPushConditionRoomCtx
- Remove
PartialEq
implementation onNotificationPowerLevels
- Remove
PartialEq
implementation forevents::call::SessionDescription
- Use new
events::call::AnswerSessionDescription
forCallAnswerEventContent
andOfferSessionDescription
forCallInviteEventContent
- Use new
VoipVersionId
andVoipId
types forevents::call
events - Remove
RoomName
/OwnedRoomName
and replace usages withstr
/String
- Room name size limits were never enforced by servers (Spec change removing the size limit)
- Remove
RoomMessageFeedbackEvent
and associated types and variants according to MSC3582 - Move
CanonicalJson
,CanonicalJsonObject
andCanonicalJsonError
out of theserde
module and behind the cargo feature flagcanonical-json
- Make identifiers matrix URI constructors generic over owned parameters
- Split
RoomId
matrix URI constructors between methods with and without routing
- Split
- Allow to add routing servers to
RoomId::matrix_to_event_uri()
- Move
receipt::ReceiptType
toevents::receipt
- Make
Clone
as supertrait ofapi::OutgoingRequest
- Rename
Any[Sync]RoomEvent
toAny[Sync]TimelineEvent
RoomMemberEvent
and related types now have a custom unsigned type including theinvite_room_state
field, instead of theStateUnsigned
type 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::BundledAnnotation
to 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_key
anddevice_id
fields for encrypted events (MSC3700) - Move the
relations
field ofevents::unsigned
types out ofunstable-msc2675
- Deserialize stringified integers for power levels without the
compat
feature - Add
JoinRule::KnockRestricted
(MSC3787) - Add
MatrixVersionId::V10
(MSC3604) - Add methods to sanitize messages according to the spec behind the
html
feature- 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_change
functions on various member event types
- Prior to this, you couldn't actually do anything with the
0.9.0
Bug fixes:
- Change default
invite
power 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-common
ruma-api
has moved intoapi
, behind a feature flagruma-events
has moved intoevents
, behind a feature flagruma-identifiers
types are available at the root of the crateruma-serde
has moved intoserde
- The
events::*MessageEvent
types have been renamed to*MessageLikeEvent
- Change
events::room
media types to accept either a plain file or an encrypted file, not both simultaneously - Change
events::room
media types to useDuration
where applicable - Move
prev_content
intounsigned
- Rename
identifiers::Error
toIdParseError
- Fix the
RoomMessageEventContent::*_reply_plain
methods that now return a message with aformatted_body
, according to the spec. Therefore, they only acceptOriginalRoomMessageEvent
s like their HTML counterparts. - Update the
state_key
field of state events to be of a different type depending on the content type. You now no longer need to validate manually thatm.room.member
events 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::allow
public - Conversion from
RoomPowerLevels
toRoomPowerLevelsEventContent
0.8.0
Breaking changes:
- Update
ruma-identifiers
dependency
0.7.0
Breaking changes:
- Update
ruma-identifiers
dependency - Use new
Base64
type forkey
field ofSignedKey
0.6.0
Breaking changes:
- Make a few enums non-exhaustive
- Upgrade dependencies
0.5.4
Improvements:
- Add
to_device
module containingDeviceIdOrAllDevices
0.5.3
Improvements:
- Add
instance_id
field toProtocolInstance[Init]
under theunstable-pre-spec
feature
0.5.2
Improvements:
- Add
thirdparty::ThirdPartyIdentifier
0.5.1
Improvements:
- Add
receipt::ReceiptType
- Add
MilliSecondsSinceUnixEpoch
andSecondsSinceUnixEpoch
types - Bump dependency versions
0.5.0
Breaking changes:
- Rename
push::RulesetIter
topush::RulesetIntoIter
- Change the return type of
push::Ruleset::get_actions
from an iterator to a slice
Improvements:
- Add
push::Ruleset::iter()
for borrowing iteration of rulesets - Add conversions between
AnyPushRule
andAnyPushRuleRef
(AnyPushRule::as_ref
andAnyPushRuleRef::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::MxcUri
instead ofString
foravatar_url
field indirectory::PublicRoomsChunk
- Use
ruma_identifiers::RoomId
instead ofString
forroom_id
field inpush::PushConditionRoomCtx
- Upgrade ruma-identifiers dependency to 0.19.0
0.3.1
Bug fixes:
- Fix
push::PushCondition::applies
for empty value and pattern
0.3.0
Breaking changes:
- Update set of conversion trait implementations for enums
- Replace
Vec
byIndexSet
inpush::Ruleset
- Replace
push::AnyPushRule
with an enum (the original struct still exists as justPushRule
inruma-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
thirdparty
module - 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
IntoIterator
implementation 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]