936 lines
42 KiB
Markdown
936 lines
42 KiB
Markdown
# Changelog
|
|
|
|
## Unreleased
|
|
|
|
Improvements:
|
|
|
|
- The `IdDst` macro generates `Borrow<str>` implementations for the borrowed and
|
|
owned identifier structs.
|
|
|
|
## 0.18.0
|
|
|
|
Breaking changes:
|
|
|
|
- The variants of `CanonicalJsonError` variants changed.
|
|
- `to_canonical_value()` has stricter rules, it now returns errors for the
|
|
following cases which were never documented to work in the first place:
|
|
- Serializing bytes.
|
|
- Serializing booleans and integers as keys for an object.
|
|
- Serializing the same key twice in an object.
|
|
- The `canonical-json` feature was removed. The `canonical_json` module is no
|
|
longer gated behind a cargo feature.
|
|
- The `IdDst` macro doesn't generate methods and trait implementations anymore
|
|
for `Box{id}`, `Arc<id>` and `Rc<{id}>`. Using `Owned{id}` should be
|
|
preferred.
|
|
- `EventId::new()` was renamed to `EventId::new_v1()`, since it works only for
|
|
the first format of event IDs.
|
|
- The `NoAuthentication` authentication scheme doesn't take a `SendAccessToken`
|
|
as input anymore, because it doesn't make sense to be able to send access
|
|
tokens for APIs that don't use them as a form of authentication. The new
|
|
`NoAccessToken` authentication scheme should be used instead for APIs that
|
|
rely on access tokens as a form of authentication.
|
|
- It is no longer possible to construct custom `Action` types directly through
|
|
the hidden `_Custom` variant. They should be constructed with `Action::new()`
|
|
and their data should be accessed with `Action::data()`.
|
|
- The `Tweak` type uses stronger enum types for its variants, and the `Custom`
|
|
variant is now hidden and cannot be constructed directly. It should be
|
|
constructed with `Tweak::new()` and its data should be accessed with
|
|
`Tweak::set_tweak()` and `Tweak::value()`.
|
|
- The struct variants of `PushCondition` are now tuple variants containing a
|
|
non-exhaustive struct.
|
|
- `JsonType` was renamed to `CanonicalJsonType` to reflect that it only
|
|
represents the possible types of a `CanonicalJsonValue`. It can also be
|
|
accessed with `CanonicalJsonValue::json_type()`.
|
|
- Refactor and improve the variants of `RedactionError`:
|
|
- `NotOfType` was renamed to `InvalidType` and provides more details about the
|
|
invalid field.
|
|
- `JsonFieldMissingFromObject` was renamed to `MissingField` an provides the
|
|
full path of the missing field.
|
|
- `redact_content_in_place()` is now infallible.
|
|
- `MatrixError` and `MatrixErrorBody` were renamed to `Error` and `ErrorBody`
|
|
respectively. The `Matrix` prefix is redundant in a crate about the Matrix
|
|
protocol.
|
|
- The `error` module from `ruma-client-api` was merged into the `api::error`
|
|
module. `Error` is now non-exhaustive and `ErrorBody` has a new `Standard`
|
|
variant.
|
|
|
|
Improvements:
|
|
|
|
- Add `canonical_json::Serializer`, which allows to serialize a type directly to
|
|
a `CanonicalJsonValue`, with stricter rules than
|
|
`serde_json::value::Serializer`. This serializer is also used in
|
|
`to_canonical_value()`.
|
|
- Add the `assert_to_canonical_json_eq!` macro that can be used in tests to
|
|
check the canonical JSON serialization of a type against its expected value.
|
|
- Add crate-internal `into_raw()` / `from_raw()` helpers for `IdDst` owned IDs
|
|
and use them in `OwnedRoomId` / `OwnedRoomAliasId` <-> `OwnedRoomOrAliasId`
|
|
conversions.
|
|
- Use raw ownership transfer for conversions from `OwnedDeviceId` and
|
|
`OwnedBase64PublicKey` to `OwnedBase64PublicKeyOrDeviceId`.
|
|
- Identifier types implement `(Try)From<Box<str>>`, `(Try)From<Cow<'a, str>>`
|
|
and `PartialEq<Cow<'a, str>>` and conversions between owned types try not to
|
|
reallocate when possible.
|
|
- Add `EventId::new_v2_or_v3()` to construct event IDs formats which are based
|
|
on the event reference hash.
|
|
- Add `RoomType::Call` & `RoomTypeFilter::Call` to support MSC3417 behind
|
|
`unstable-msc3417`
|
|
- It is now possible to use `Base64::parse` when the inner `B` "bytes" type is
|
|
an array, and the inner bytes can be accessed without consuming the wrapper
|
|
type with `Base64::as_inner()`.
|
|
- Add `MatrixVersion::V1_18`.
|
|
- `CanonicalJsonValue::json_type()` allows to get the `JsonType` of a value.
|
|
- Add `FeatureFlag::Msc4323`, the unstable feature flag for the user suspension
|
|
and locking endpoints, according to MSC4323.
|
|
- Add unstable support for MSC4406.
|
|
- Add `rule_type()` and `data()` methods to `AllowRule`.
|
|
- Implement `PartialEq` and `Eq` on `CrossSigningKey` and `Signatures`.
|
|
- Add `Error::is_endpoint_not_implemented()` helper method to check if it
|
|
matches the expected format for endpoints that are not implemented by the
|
|
homeserver.
|
|
|
|
## 0.17.1
|
|
|
|
Bug fixes:
|
|
|
|
- Fix the `Clone` implementation of the `Owned*` types generated with the
|
|
`IdDst` macro. It used to always create a new instance from the borrowed type
|
|
instead of using the `Clone` implementation of the internal type.
|
|
|
|
Improvements:
|
|
|
|
- Add `AppserviceUserIdentity::maybe_add_to_uri()` to add an identity
|
|
assertion to an `http::Uri`. This allows to reimplement the behavior of
|
|
`OutgoingRequestAppserviceExt::try_into_http_request_with_identity()` outside
|
|
of Ruma, if using this trait is inconvenient.
|
|
- Add `MatrixVersion::V1_17`.
|
|
- `JoinRule` holds arbitrary data in its fallback variant, with can be accessed
|
|
with `JoinRule::data()`. It also means that this type won't fail to serialize
|
|
for undocumented variants anymore.
|
|
|
|
## 0.17.0
|
|
|
|
Breaking changes:
|
|
|
|
- Merge the `PartialOrdAsRefStr` derive macro into `OrdAsRefStr`, so both traits
|
|
are always implemented using the same logic.
|
|
- Rename the `PartialEqAsRefStr` derive macro to `EqAsRefStr` and make it
|
|
implement both `PartialEq` and `Eq`.
|
|
- The `StringEnum` derive macro also implements `Ord`, `PartialOrd`, `Eq` and
|
|
`PartialEq` using the `AsRef<str>` implementation of the enum.
|
|
- The predefined push rules for legacy mentions
|
|
`PatternedPushRule::contains_user_name()`,
|
|
`ConditionalPushRule::contains_display_name()` and
|
|
`ConditionalPushRule::roomnotif()` were removed, according to MSC4210.
|
|
Their rule IDs are still available in `PredefinedContentRuleId` and
|
|
`PredefinedOverrideRuleId`, and they are still supported in
|
|
`PatternedPushRule::applies_to()` and `ConditionalPushRule::applies()`, for
|
|
backwards-compatibility for clients.
|
|
- Macros no longer support importing the `ruma` and `ruma-events` crate from the
|
|
`matrix-sdk-appservice` crate. This crate was dropped 2 years ago.
|
|
- `Metadata` was changed from a `struct` to a `trait`. It is a supertrait of
|
|
`OutgoingRequest` and `IncomingRequest`, and its fields are now associated
|
|
types or constants.
|
|
- The `authentication` field of the `Metadata` struct is now an associated
|
|
type named `Authentication`. The `AuthScheme` enum was changed from an
|
|
`enum` to a `trait`. Its variants are now structs implementing the
|
|
`AuthScheme` trait. The `None` variant was renamed to `NoAuthentication` and
|
|
the `ServerSignatures` variant was moved to ruma-federation-api.
|
|
The `access_token` argument of `OutgoingRequest::try_into_http_request()` is
|
|
renamed to `authentication_input` and is generic over the `Input` associated
|
|
type of the `AuthScheme` trait.
|
|
- The `history` field of the `Metadata` struct is now an associated constant
|
|
named `PATH_BUILDER`. The type of this constant is defined by the
|
|
`PathBuilder` associated type, which must implement the `PathBuilder` trait.
|
|
The `considering` argument of `OutgoingRequest::try_into_http_request()` is
|
|
renamed to `path_builder_input` and is generic over the `Input` associated
|
|
type of the `PathBuilder` trait. The `Input` of `VersionHistory` was changed
|
|
from `&'_ SupportedVersions` to `Cow<'_, SupportedVersions>`.
|
|
- The other fields of the `Metadata` struct are now associated constants with
|
|
the same name converted to uppercase.
|
|
- The `metadata!` macro generates the `Metadata` trait implementation for a
|
|
type named `Request` by default. This type can be changed with an `@for`
|
|
setting.
|
|
- The `http_headers` module is now behind the `api` cargo feature.
|
|
- `OutgoingRequestAppserviceExt::try_into_http_request_with_user_id()` is
|
|
renamed to `try_into_http_request_with_identity()` and takes an
|
|
`AppserviceUserIdentity` instead of a `UserId`. This allows to specify a
|
|
device ID, according to MSC4326.
|
|
- `IntoHttpError::NeedsAuthentication` is a newtype variant renamed to
|
|
`Authentication` that accepts any error type.
|
|
- Remove support for the following rules for the `StringEnum`, `AsRefStr` and
|
|
`FromString` derive macros' `rename_all` attribute, because they either can be
|
|
replaced by the `(prefix = "prefix", rule = "rule")` syntax or are unused as
|
|
far as we know:
|
|
- `"PascalCase"`
|
|
- `"SCREAMING-KEBAB-CASE"`
|
|
- `"m.dotted.case"`
|
|
- `"M_MATRIX_ERROR_CASE"`
|
|
- `"m.lowercase"`
|
|
- `"m.snake_case"`
|
|
- `".m.rule.snake_case"`
|
|
- `"m.role.snake_case"`
|
|
|
|
Bug fixes:
|
|
|
|
- With the `request` and `response` attribute macros, the `Content-Type` header
|
|
defaults to `application/octet-stream` instead of `application/json` if the
|
|
`raw_body` attribute is set on a field.
|
|
- Fix the check to make sure that all paths used to build `VersionHistory`
|
|
contain the same number of variables. It was broken since the syntax was
|
|
changed from `:variable` to `{variable}`.
|
|
|
|
Improvements:
|
|
|
|
- Add `org.matrix.msc4380` unstable feature support to `/versions`.
|
|
- Add `MatrixVersion::V1_16`
|
|
- Remove support for the `org.matrix.hydra.11` room version and the
|
|
corresponding `unstable-hydra` cargo feature. It should only have been used
|
|
for development, and room version 12 should be used instead.
|
|
- `Metadata::make_endpoint_url()` is also available as `VersionHistory::make_endpoint_url()`.
|
|
- `PushCondition::ContainsDisplayName` is deprecated, according to MSC4210.
|
|
- Add `SinglePath` as a `PathBuilder`. It should be used for APIs that don't
|
|
have a `/versions` endpoint and for endpoints that can't be versioned.
|
|
- `AuthScheme` data can be extracted from incoming HTTP requests with
|
|
`AuthScheme::extract_authentication()`.
|
|
- The `StringEnum`, `AsRefStr` and `FromString` derive macros allow to set a
|
|
custom prefix alongside the rule to rename all the variants, like this:
|
|
`#[ruma_enum(rename_all(prefix = "m.", rule = "snake_case"))]`. The previous
|
|
syntax using `#[ruma_enum(rename_all = "snake_case")]` still works and assumes
|
|
that the prefix is empty.
|
|
|
|
## 0.16.0
|
|
|
|
Breaking changes:
|
|
|
|
- `PushCondition::applies`, `ConditionalPushRule::applies`, `AnyPushRuleRef::applies`,
|
|
`AnyPushRule::applies`, `Ruleset::applies`, `Ruleset::get_actions`, `Ruleset::get_match` all
|
|
became async, to allow for lazy evaluation of push rules.
|
|
- `UserId` parsing and deserialization are now compatible with all non-compliant
|
|
user IDs in the wild by default, due to a clarification in the spec.
|
|
- The `compat-user-id` cargo feature was removed.
|
|
- `UserId::validate_historical()` and `UserId::validate_strict()` allow to
|
|
check for spec compliance.
|
|
- The `(owned_)user_id!` macros always validate against the strict grammar in
|
|
the spec, regardless of the compat features that are enabled.
|
|
- `(owned_)room_id!` macros disallow the `NUL` byte, due to a clarification in
|
|
the spec.
|
|
- `(owned_)room_alias_id!` macros disallow the `NUL` byte for the localpart, due
|
|
to a clarification in the spec.
|
|
- `MatrixVersion` does not implement `Display` anymore as it is not correct to
|
|
convert `V1_0` to a string. Instead `MatrixVersion::as_str()` can be used that
|
|
only returns `None` for that same variant.
|
|
- `MatrixVersion::(into/from)_parts` are no longer exposed as public methods.
|
|
They were usually used to sort `MatrixVersion`s, now the `PartialOrd` and
|
|
`Ord` implementations can be used instead.
|
|
- `Protocol` and `ProtocolInit` are generic on the protocol instance type.
|
|
- Add support for endpoints that only allow appservices to call them, renaming
|
|
`AppserviceToken` to `AppserviceTokenOptional`, with the new variant taking
|
|
`AppserviceToken`'s place.
|
|
- The `redact*` functions in `canonical_json` take `RedactionRules` instead of
|
|
`RoomVersionId`. This avoids undefined behavior for unknown room versions.
|
|
- `OutgoingRequest::try_into_http_request()`,
|
|
`OutgoingRequestAppserviceExt::try_into_http_request_with_user_id()` and
|
|
`Metadata::make_endpoint_url()` take a `SupportedVersions` instead of a
|
|
`&[MatrixVersion]`.
|
|
- The `metadata` macro allows to specify stable and unstable feature flags for
|
|
the paths in `history`.
|
|
- `VersionHistory::new()` takes a
|
|
`&'static [(Option<&'static str>, &'static str)]` for the unstable paths and
|
|
a `&'static [(StablePathSelector, &'static str)]` for the stable paths.
|
|
- `VersionHistory::unstable_paths()` returns an
|
|
`impl Iterator<Item = (Option<&'static str>, &'static str)>`.
|
|
- `VersionHistory::stable_paths()` returns an
|
|
`impl Iterator<Item = (StablePathSelector, &'static str)>`.
|
|
- `VersionHistory::stable_endpoint_for()` was renamed to `version_path()`.
|
|
- `VersioningDecision`'s `Stable` variant was renamed to `Version` and
|
|
`Unstable` was renamed to `Feature`.
|
|
- The syntax of variables in endpoint paths segments in the `metadata` macro has
|
|
changed: the variable must now be surrounded by `{}` instead of being preceded
|
|
by `:`. For example `/_matrix/client/foo/{bar}`. This matches the OpenAPI
|
|
syntax and the new syntax supported by axum 0.8.
|
|
- `JoinRule` and its associated types where imported from `ruma-events` into the
|
|
`room` module.
|
|
- `space::SpaceRoomJoinRule` was removed and replaced by `room::JoinRuleSummary`.
|
|
- `directory::PublicRoomJoinRule` was moved and renamed to `room::JoinRuleKind`.
|
|
- It can be constructed with `JoinRule::kind()` and `JoinRuleSummary::kind()`.
|
|
- Make `PushConditionRoomCtx` and `PushConditionPowerLevelsCtx` non-exhaustive.
|
|
- The `versions` field of `SupportedVersions` is now a `BTreeSet<MatrixVersion>`,
|
|
to make sure that the versions are always deduplicated and sorted.
|
|
- `NotificationPowerLevels` now takes a `NotificationPowerLevelsKey` for the
|
|
`key`, an enum that accepts any string.
|
|
- The `key` field of `PushCondition::SenderNotificationPermission` uses the
|
|
same type.
|
|
- `RoomId::new()` was renamed to `RoomId::new_v1()`, as several formats are now
|
|
supported for this type.
|
|
- `StateResolutionVersion::V2` now takes `StateResolutionV2Rules` as a unit field, to specify
|
|
tweaks to be used when resolving state with version 2 of the state resolution algorithm.
|
|
- This field can be accessed with `StateResolutionVersion::v2_rules`, returning `None` if
|
|
`state_res` is not `StateResolutionVersion::V2`.
|
|
- `StateResolutionV2Rules` has the following fields:
|
|
- `begin_iterative_auth_checks_with_empty_state_map`, to determine whether to begin the first
|
|
phase of iterative auth checks with an empty state map.
|
|
- `consider_conflicted_state_subgraph`, to determine whether to include the conflicted state
|
|
subgraph in the full conflicted state.
|
|
|
|
Bug fix:
|
|
|
|
- Set the `disposition` of `RoomVersionRules::MSC2870` as unstable.
|
|
|
|
Improvements:
|
|
|
|
- Implement the `Zeroize` trait for the `Base64` type.
|
|
- `ProtocolInstance` has an `instance_id` field, due to a clarification in the
|
|
spec.
|
|
- The `unstable-unspecified` cargo feature was removed.
|
|
- Add `AnyKeyName` as a helper type to use `KeyId` APIs without validating the
|
|
key name.
|
|
- Add `IdentityServerBase64PublicKey` as a helper type to decode identity server
|
|
public keys encoded using standard or URL-safe base64.
|
|
- `RoomVersion` was imported from ruma-state-res and renamed to
|
|
`RoomVersionRules`, along with the following changes:
|
|
- `RoomVersionRules::new()` was removed and replaced by
|
|
`RoomVersionId::rules()`.
|
|
- The `RoomDisposition` enum was renamed to `RoomVersionDisposition`.
|
|
- The `event_format` field was renamed to `event_id_format` and the
|
|
`EventFormat` enum was renamed to `EventIdFormat`.
|
|
- The tweaks in the authorization rules were extracted into the
|
|
`AuthorizationRules` struct, which is available in the `authorization` field
|
|
of `RoomVersionRules`.
|
|
- The `special_case_aliases_auth` field was renamed to
|
|
`special_case_room_aliases`.
|
|
- The `strict_canonicaljson` field was renamed to `strict_canonical_json`.
|
|
- The `extra_redaction_checks` field was renamed to
|
|
`special_case_room_redaction`.
|
|
- The `allow_knocking` field was renamed to `knocking`.
|
|
- The `restricted_join_rules` field was renamed to `restricted_join_rule`.
|
|
- `RedactionRules` was added under the `redaction` field.
|
|
- `SignaturesRules` was added under the `signatures` field.
|
|
- `RoomVersionId` has an `MSC2870` variant for the `org.matrix.msc2870` room
|
|
version defined in MSC2870.
|
|
- Add `OutgoingRequest::is_supported()` and `VersionHistory::is_supported()` to
|
|
be able to know if a server advertises support for an endpoint.
|
|
- Re-export `ID_MAX_BYTES` from `ruma-identifiers-validation`.
|
|
- Implement `From<PublicRoomsChunk>` for `RoomSummary`.
|
|
- Add `content_field_redacts` field to `RedactionRules`, which is used to determine whether the
|
|
`content` or top-level `redacts` field should be used to determine what event an
|
|
`m.room.redaction` event redacts.
|
|
- Add `SpaceChildOrder` which allows to validate the `order` of an
|
|
`m.space.child` event.
|
|
- Add support for room version 12 and its unstable version `org.matrix.hydra.11`.
|
|
- Add `explicitly_privilege_room_creators` and `additional_room_creators` to `AuthorizationRules`
|
|
to indicate whether room creators are considered to have "infinite" power level and whether
|
|
additional room creators can be specified with the `content.additional_creators` field of an
|
|
`m.room.create` event respectively.
|
|
- Add `RoomPowerLevelsRules`, to provide tweaks to how the power level of a user is determined,
|
|
and add it to `PushConditionPowerLevelsCtx` via the `rules` field.
|
|
- Add `room_id_format` to `RoomVersionRules`, to identify the format to use for room IDs depending
|
|
on the room version.
|
|
- Add `RoomId::new_v2()` for the new format of room IDs. `RoomId::strip_sigil()` allows to access
|
|
the reference hash used in that format.
|
|
- Add unstable support for in-app-only notifications as per MSC3768 under a new `unstable-msc3768`
|
|
feature.
|
|
- Add `room_create_event_id_as_room_id` to `AuthorizationRules` to indicate whether the reference
|
|
hash of the `m.room.create` event is used to construct the room ID. It has other implications,
|
|
like the `m.room.create` event not having a room ID, and the `m.room.create` event not listed in
|
|
the `auth_events` of a PDU.
|
|
- Add `require_room_create_room_id` and `allow_room_create_in_auth_events` to `EventFormatRules` to
|
|
indicate whether the room ID is required for `m.room.create` events and whether the
|
|
event ID of the `m.room.create` is allowed in the `auth_events`, respectively.
|
|
|
|
## 0.15.4
|
|
|
|
Bug fix:
|
|
|
|
- Fix `serde::default_on_error` deserialization helper. It was working with
|
|
`serde_json::from_value` but not other functions like
|
|
`serde_json::from_(str/slice)`. It now works with all 3 methods but is limited
|
|
to deserializing JSON.
|
|
|
|
## 0.15.3
|
|
|
|
Improvements:
|
|
|
|
- Add `RoomSummary` that represents the summary of a room's state.
|
|
- Implement `From<RoomSummary>` for `PublicRoomsChunk`
|
|
- Add `MatrixVersion::V1_15`.
|
|
- `PublicRoomJoinRule` now includes all possible join rule kinds, due to a
|
|
clarification in Matrix 1.15.
|
|
- Add `serde::default_on_error()` as a helper to ignore errors during
|
|
deserialization.
|
|
- Implement conversions between `PublicRoomJoinRule` and `SpaceRoomJoinRule`.
|
|
- Add `FeatureFlag` as an enum whose variants are the flags of features supported by Ruma.
|
|
- Add `SupportedVersions`, a type to parse `/versions` responses to get lists
|
|
of supported versions and features.
|
|
|
|
## 0.15.2
|
|
|
|
Bug fixes:
|
|
|
|
- `MatrixVersion::V1_0` now also matches Identity Service API versions r0.2.0 to
|
|
r0.3.0.
|
|
- Allow configure exhaustive types via `RUMA_UNSTABLE_EXHAUSTIVE_TYPES` environment variable
|
|
|
|
Improvements:
|
|
|
|
- `MatrixVersion` implements `PartialOrd` and `Ord`. The variants are ordered by
|
|
release date, with a newer version being greater than an older version.
|
|
- `Signatures` implements `IntoIterator`
|
|
- Implement `PartialEqAsRefStr`, `Eq`, `PartialOrdAsRefStr`, `OrdAsRefStr` for
|
|
`ruma_common::media::Method`.
|
|
- `DeviceId::new()` generates a string with 10 chars instead of 8.
|
|
- Add `ignore_invalid_vec_items`, to assist deserialization of `Vec`s, where
|
|
invalid items should be ignored.
|
|
- Add `MatrixVersion::V1_14`.
|
|
|
|
## 0.15.1
|
|
|
|
Improvements:
|
|
|
|
- Add `MatrixVersion::V1_13`.
|
|
|
|
## 0.15.0
|
|
|
|
Breaking changes:
|
|
|
|
- `#[serde(flatten)]` on the only body field of a `#[request]` or `#[response]`
|
|
struct is disallowed. `#[ruma_api(body)]` must be used instead.
|
|
|
|
Improvements:
|
|
|
|
- The `ruma_identifiers_storage` compile-time `cfg` setting can also be
|
|
configured by setting the `RUMA_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.
|
|
- The `unstable-exhaustive-types` cargo feature was replaced by the
|
|
`ruma_unstable_exhaustive_types` compile-time `cfg` setting. Like all `cfg`
|
|
settings, it can be enabled at compile-time with the `RUSTFLAGS` environment
|
|
variable, or inside `.cargo/config.toml`. It can also be enabled by setting
|
|
the `RUMA_UNSTABLE_EXHAUSTIVE_TYPES` environment variable.
|
|
- `HttpPusherData` allows to set custom data for the pusher in the `data` field,
|
|
due to a clarification in the spec.
|
|
- The `default_payload` field that was behind the `unstable-unspecified`
|
|
cargo feature was removed. It can be added manually to the custom data.
|
|
|
|
## 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 from `ProtocolInstanceInit` and is now an
|
|
`Option<String>` for `ProtocolInstance`. It made the `unstable-unspecified`
|
|
feature non-additive.
|
|
|
|
Breaking changes:
|
|
|
|
- Rename the `query_map` attribute of the `request` macro to `query_all`, and
|
|
remove the required bound to implement `IntoIterator<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
|
|
with `serde_html_form`.
|
|
- The `header` attribute for the `request` and `response` macros accepts any
|
|
type that implements `ToString` and `FromStr`.
|
|
- The `compat-key-id` cargo feature was renamed to
|
|
`compat-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 the `compat-server-signing-key-version` cargo feature is enabled.
|
|
- The bounds on `KeyId` changed. The algorithm part must implement
|
|
`KeyAlgorithm` and the key name part must implement `KeyName`.
|
|
- The `(owned_)server_signing_key_id` macros were removed. For compile-time
|
|
validated construction, use `ServerSigningKeyId::from_parts` with a
|
|
`SigningKeyAlgorithm` and the `server_signing_key_version` macro.
|
|
- Rename `Signatures::insert` to `Signatures::insert_signature`.
|
|
`Signatures::insert` is now dereferenced to `BTreeMap::insert`.
|
|
- Move the `DeviceKeyAlgorithm::SignedCurve25519` into the new
|
|
`OneTimeKeyAlgorithm` type.
|
|
- Add `(Owned)CrossSigningKeyId` and use it instead of `OwnedDeviceKeyId` to
|
|
identify `CrossSigningKey`'s `keys`.
|
|
- Add `(Owned)CrossSigningOrDeviceSigningKeyId` and use it instead of
|
|
`OwnedDeviceKeyId` to identify signing keys in `DeviceKeys`'s and
|
|
`CrossSigningKey`'s `signatures`.
|
|
- Use `OwnedDeviceSigningKeyId` instead of `OwnedDeviceKeyId` to identify
|
|
signing keys in `SignedKey`'s `signatures`.
|
|
- `(Owned)DeviceKeyId` is now a type alias of `(Owned)KeyId`.
|
|
- Remove the `(owned_)device_key_id` macro, instead use
|
|
`DeviceKeyId::from_parts`.
|
|
- Use `CrossSigningOrDeviceSignatures` for the `signatures` of `DeviceKeys`.
|
|
- Remove `SignedKeySignatures` and replace it with `DeviceSignatures`.
|
|
- Remove `CrossSigningKeySignatures` and replace it with
|
|
`CrossSigningOrDeviceSignatures`.
|
|
|
|
Improvements:
|
|
|
|
- Add the `InvalidHeaderValue` variant to the `DeserializationError` struct, for
|
|
cases where we receive a HTTP header with an unexpected value.
|
|
- Implement `Eq`/`Hash`/`PartialEq` for `ThirdPartyIdentifier`, to check whether
|
|
a `ThirdPartyIdentifier` has already been added by another user.
|
|
- Add `MatrixVersion::V1_11` and `MatrixVersion::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` and `PartialEq` for `Metadata`
|
|
- Allow constructing `api::error::MatrixErrorBody::NotJson` outside of this
|
|
crate.
|
|
- Improve the API of `Signatures`, by implementing `Deref` and `DerefMut`, as
|
|
well as `From`, `Extend` and `FromIterator` 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`.
|
|
|
|
## 0.13.0
|
|
|
|
Bug fixes:
|
|
|
|
- Allow to deserialize `Ruleset` with missing fields.
|
|
|
|
Breaking changes:
|
|
|
|
- The power levels fields in `PushConditionRoomCtx` are grouped in an optional `power_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 the `invite_state` doesn't include
|
|
`m.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 to
|
|
`deserialize_as_number_or_string` to reflect that.
|
|
- The http crate had a major version bump to version 1.1
|
|
- `IntoHttpError::Header` now contains a `HeaderSerializationError`
|
|
|
|
Improvements:
|
|
|
|
- Use the [web-time](https://github.com/daxpedda/web-time) crate to return a
|
|
`SystemTime` that works under WASM in the
|
|
`MilliSecondsSinceUnixEpoch::to_system_time()` method.
|
|
- Stabilize support for `.m.rule.suppress_edits` push rule (MSC3958 / Matrix 1.9)
|
|
- Add `MatrixVersion::V1_9` and `V1_10`
|
|
- Point links to the Matrix 1.10 specification
|
|
- Implement `as_str()` and `AsRef<str>` for `push::PredefinedRuleId`
|
|
- Implement `kind()` for `push::Predefined{*}RuleId`
|
|
- Implement `Clone` for `MatrixToUri` and `MatrixUri`
|
|
|
|
## 0.12.1
|
|
|
|
Bug fixes:
|
|
|
|
- Allow to deserialize `(New)ConditionalPushRule` with a missing `conditions` 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 a `FlattenedJsonValue` instead of a string
|
|
- Remove the `DontNotify` and `Coalesce` variants of `push::Action` according to MSC3987
|
|
- Old push rules will still deserialize successfully but the `Coalesce` variant will not return
|
|
`true` for `Action::should_notify()` anymore
|
|
- Removed the `events` module, it is once again its own crate (`ruma-events`)
|
|
- Removed `From` and `TryFrom` implementations for `RedactedBecause` in favor of named constructors
|
|
(`from_json` and `from_raw_event`)
|
|
- Updated room IDs to not require a servername
|
|
- Removed `localpart` method from `RoomId` and `RoomOrAliasId`
|
|
- Changed `server_name` method on `RoomId` and `RoomOrAliasId` to return `Option<&str>`
|
|
|
|
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` and `FlattenedJson` 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` and `MatrixVersion::V1_8`
|
|
- Add support for room version 11 according to MSC3820 / Matrix 1.8
|
|
- Adapt the redaction algorithm in `canonical_json`
|
|
- 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`
|
|
|
|
## 0.11.2
|
|
|
|
Bug fixes:
|
|
|
|
- Don't accept colons in the localpart given to `UserId::parse_with_servername`
|
|
even with `feature = "compat"`
|
|
|
|
Improvements:
|
|
|
|
- Derive `Hash` for `ReceiptType` and `ReceiptThread`
|
|
- 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 deriving `EventContent` on a non-`pub` type)
|
|
|
|
## 0.11.1
|
|
|
|
Improvements:
|
|
|
|
- Make alternate Debug representation of `MilliSecondsSinceUnixEpoch` and
|
|
`SecondsSinceUnixEpoch` 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 the `events::key`
|
|
and `events::secret` modules
|
|
- Fix deserialization of `RoomMessageEventContent` and `RoomEncryptedEventContent` when there
|
|
is no relation
|
|
- Fix deserialization of `StateUnsigned` when the `prev_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 the `ruma_api` macro now accepts an arbitrary
|
|
`http::header::HeaderName`
|
|
- To continue using constants from `http::header`, they must be imported in
|
|
the module calling the macro.
|
|
- Make `name` optional on `SecretStorageKeyEventContent`. Default constructor has been
|
|
adjusted as well to not require this field.
|
|
- Rename `push::PusherData` to `HttpPusherData` and make the `url` field required
|
|
- Remove `Ruleset::add` and the implementation of `Extend<AnyPushRule>` for `Ruleset`
|
|
- Make `EndpointError` construction infallible
|
|
- `EndpointError::try_from_http_request` has been replaced by `EndpointError::from_http_request`
|
|
- `FromHttpResponseError<E>::Server` now contains `E` instead of `ServerError<E>`
|
|
- `ServerError<E>` has been removed
|
|
- `MatrixError` is now an enum with the `Json` variant containing the previous fields
|
|
- Change the `ignored_users` field of `IgnoredUserListEventContent` 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 the `rule_id`
|
|
- Deduplicate and group relation structs in `events::relation`:
|
|
- Move relation structs under `events::room::message` to `events::relation`
|
|
- Move common relation structs under `events::room::encrypted` to `events::relation` and remove
|
|
duplicate types
|
|
- Remove `events::reaction::Relation` and use `events::relation::Annotation` instead
|
|
- Remove `events::key::verification::Relation` and use `events::relation::Reference` instead
|
|
- Rename `events::relation::Relations` to `BundledRelations`
|
|
- Make the `redacted_because` field in `UnsignedRedacted` non-optional and replace parameterless
|
|
`new` constructor by one that takes a redaction event (like `new_because` previously, which is
|
|
now removed)
|
|
- Move the `Unsigned` associated type from `StateEventContent` to `OriginalStateEventContent`
|
|
- `Redacted*EventContent`s don't have an `unsigned` type anymore
|
|
- Remove the `serde::urlencoded` module
|
|
- Query string (de)serialization is now done by the `serde_html_form` crate
|
|
- Rename `RoomEventType` to `TimelineEventType`
|
|
- Remove `SecretStorageKeyEventContent`'s implementation of `Deserialize`
|
|
- Use `EventContentFromType::from_parts` instead
|
|
- Remove `StateUnsignedFromParts`
|
|
- Replace it with a bound on `DeserializeOwned`
|
|
- Remove `Raw::deserialize_content`
|
|
- Instead, use `.deserialize_as::<T>()` or `.cast_ref::<T>().deserialize_with_type()`
|
|
- Remove `EventContent::from_parts`
|
|
- Replace it with `EventContentFromType::from_parts`
|
|
- The `serde::StringEnum` derive now also generates a `Debug` implementation
|
|
|
|
Improvements:
|
|
|
|
- Add `MatrixVersion::V1_4` and `MatrixVersion::V1_5`
|
|
- Stabilize default room server ACL push rule
|
|
- Stabilize `room_types` in `directory::Filter` and `room_type` in `directory::PublicRoomsChunk`
|
|
- Stabilize support for private read receipts
|
|
- Add stable support for threads
|
|
- Move `Relation::Thread` and associated types and methods out of `unstable-msc3440`
|
|
- Add parameter to `RoomMessageEventContent::make_reply_to` to be thread-aware
|
|
- Add `RoomMessageEventContent::make_for_reply`
|
|
- 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 rule
|
|
- `Ruleset::insert` to add or update user push rules
|
|
- `Ruleset::set_enabled` to change the enabled state of push rules
|
|
- `Ruleset::set_actions` to change the actions of push rules
|
|
- Add support for bundled reference relations (MSC3267 / Matrix 1.5)
|
|
- Add the `formatted` field on `KeyVerificationRequestEventContent` (Matrix 1.5)
|
|
- Add `content` accessors for `Any*StateEvent` enums
|
|
- Add the `DebugAsRefStr` derive macro to `ruma_common::serde`
|
|
|
|
## 0.10.5
|
|
|
|
Improvements:
|
|
|
|
- Add support for `#[incoming_derive(!Debug)]` to the `Incoming` 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` and
|
|
`unstable-msc2677` active, and `unstable-msc2676` inactive
|
|
|
|
## 0.10.2
|
|
|
|
Improvements:
|
|
|
|
- Add `relations` accessors to event enum types:
|
|
- `AnyMessageLikeEvent` and `AnySyncMessageLikeEvent`
|
|
- `AnyStateEvent` and `AnySyncStateEvent`
|
|
- `AnyTimelineEvent` and `AnySyncTimelineEvent`
|
|
|
|
## 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` and `MxcUriError` 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 to `PushConditionRoomCtx`
|
|
- Remove `PartialEq` implementation on `NotificationPowerLevels`
|
|
- Remove `PartialEq` implementation for `events::call::SessionDescription`
|
|
- Use new `events::call::AnswerSessionDescription` for `CallAnswerEventContent`
|
|
and `OfferSessionDescription` for `CallInviteEventContent`
|
|
- Use new `VoipVersionId` and `VoipId` types for `events::call` events
|
|
- Remove `RoomName` / `OwnedRoomName` and replace usages with `str` / `String`
|
|
- Room name size limits were never enforced by servers
|
|
([Spec change removing the size limit][spec])
|
|
- Remove `RoomMessageFeedbackEvent` and associated types and variants according to MSC3582
|
|
- Move `CanonicalJson`, `CanonicalJsonObject` and `CanonicalJsonError` out of
|
|
the `serde` module and behind the cargo feature flag `canonical-json`
|
|
- Make identifiers matrix URI constructors generic over owned parameters
|
|
- Split `RoomId` matrix URI constructors between methods with and without routing
|
|
- Allow to add routing servers to `RoomId::matrix_to_event_uri()`
|
|
- Move `receipt::ReceiptType` to `events::receipt`
|
|
- Make `Clone` as supertrait of `api::OutgoingRequest`
|
|
- Rename `Any[Sync]RoomEvent` to `Any[Sync]TimelineEvent`
|
|
- `RoomMemberEvent` and related types now have a custom unsigned type including the
|
|
`invite_room_state` field, instead of the `StateUnsigned` type used by other state
|
|
events
|
|
|
|
[spec]: https://github.com/matrix-org/matrix-spec-proposals/pull/3669
|
|
|
|
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`
|
|
- 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` and `device_id` fields for encrypted events (MSC3700)
|
|
- Move the `relations` field of `events::unsigned` types out of `unstable-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>` for `identifiers::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
|
|
|
|
## 0.9.0
|
|
|
|
Bug fixes:
|
|
|
|
- Change default `invite` power level to `0`
|
|
- 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 into `api`, behind a feature flag
|
|
- `ruma-events` has moved into `events`, behind a feature flag
|
|
- `ruma-identifiers` types are available at the root of the crate
|
|
- `ruma-serde` has moved into `serde`
|
|
- 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 use `Duration` where applicable
|
|
- Move `prev_content` into `unsigned`
|
|
- Rename `identifiers::Error` to `IdParseError`
|
|
- Fix the `RoomMessageEventContent::*_reply_plain` methods that now return a
|
|
message with a `formatted_body`, according to the spec. Therefore, they only
|
|
accept `OriginalRoomMessageEvent`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
|
|
that `m.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` to `RoomPowerLevelsEventContent`
|
|
|
|
## 0.8.0
|
|
|
|
Breaking changes:
|
|
|
|
- Update `ruma-identifiers` dependency
|
|
|
|
## 0.7.0
|
|
|
|
Breaking changes:
|
|
|
|
- Update `ruma-identifiers` dependency
|
|
- Use new `Base64` type for `key` field of `SignedKey`
|
|
|
|
## 0.6.0
|
|
|
|
Breaking changes:
|
|
|
|
- Make a few enums non-exhaustive
|
|
- Upgrade dependencies
|
|
|
|
## 0.5.4
|
|
|
|
Improvements:
|
|
|
|
- Add `to_device` module containing `DeviceIdOrAllDevices`
|
|
|
|
## 0.5.3
|
|
|
|
Improvements:
|
|
|
|
- Add `instance_id` field to `ProtocolInstance[Init]` under the
|
|
`unstable-pre-spec` feature
|
|
|
|
## 0.5.2
|
|
|
|
Improvements:
|
|
|
|
- Add `thirdparty::ThirdPartyIdentifier`
|
|
|
|
## 0.5.1
|
|
|
|
Improvements:
|
|
|
|
- Add `receipt::ReceiptType`
|
|
- Add `MilliSecondsSinceUnixEpoch` and `SecondsSinceUnixEpoch` types
|
|
- Bump dependency versions
|
|
|
|
## 0.5.0
|
|
|
|
Breaking changes:
|
|
|
|
- Rename `push::RulesetIter` to `push::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` and `AnyPushRuleRef`
|
|
(`AnyPushRule::as_ref` and `AnyPushRuleRef::to_owned`)
|
|
- Add `push::Ruleset::get_match()` for finding the first matching push rule for
|
|
an event. This is pretty much the same thing as `get_actions()` but returns
|
|
the entire push rule, not just its actions.
|
|
|
|
## 0.4.0
|
|
|
|
Breaking changes:
|
|
|
|
- Use `ruma_identifiers::MxcUri` instead of `String` for `avatar_url` field in
|
|
`directory::PublicRoomsChunk`
|
|
- Use `ruma_identifiers::RoomId` instead of `String` for `room_id` field in
|
|
`push::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` by `IndexSet` in `push::Ruleset`
|
|
- Replace `push::AnyPushRule` with an enum (the original struct still exists as
|
|
just `PushRule` in `ruma-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 from
|
|
`ruma_client_api::r0::directory`)
|
|
- Add `push::{PusherData, PushFormat}` (moved from `ruma_client_api::r0::push`)
|
|
- Add `authentication::TokenType` (moved from
|
|
`ruma_client_api::r0::account:request_openid_token`)
|
|
- Add an `IntoIterator` implementation for `Ruleset`
|
|
- Add `push::Ruleset::get_actions`
|
|
- Add `push::PushCondition::applies`
|
|
- Add `push::{FlattenedJson, PushConditionRoomCtx}`
|
|
|
|
## 0.2.0
|
|
|
|
Breaking changes:
|
|
|
|
- Make most types defined by the crate `#[non_exhaustive]`
|