1
0
Fork 0
ruma/crates/ruma-identifiers-validation/CHANGELOG.md
2026-04-26 14:23:40 +02:00

4.5 KiB

Changelog

Unreleased

0.12.1

Bug fixes:

  • Reject server names with an empty host and only a port in server_name::validate() (e.g. :8448).

0.12.0

  • Bump MSRV to 1.88

0.11.0

Breaking changes:

  • user_id::validate is 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.
    • user_id::localpart_is_backwards_compatible can be used to validate the localpart of user IDs received over federation.
    • user_id::localpart_is_fully_conforming always strictly validates against the strict and historical grammars, regardless of the compat features that are enabled.
    • user_id::validate_strict allows to validate strictly a user ID against the strict grammar, regardless of the compat features that are enabled.

Bug fixes:

  • Don't allow alphanumeric characters outside of the ASCII range in room_version_id::validate(). It used to allow any Unicode alphanumeric character.

Improvements:

  • The maximum allowed length of Matrix identifiers is exposed as ID_MAX_BYTES.
  • room_id::validate disallows the NUL byte, due to a clarification in the spec.
  • room_alias_id::validate disallows the NUL byte for the localpart, due to a clarification in the spec.
  • Add space_child_order::validate.

0.10.1

Improvements:

  • Upgrade thiserror to 2.0.0.

0.10.0

Breaking changes:

  • key_id::validate takes a generic parameter that implements the new KeyName trait to validate the key name part. This allows to validate key names that are not only server signing key versions.
  • The compat-key-id cargo feature was renamed to compat-server-signing-key-version.
  • Remove the device_key_id module. DeviceKeyId is now validated with key_id::validate.

Improvements:

  • Add server_signing_key_version::validate.
  • Add base64_public_key::validate.

0.9.5

Bug fixes:

  • Allow underscores (_) when validating MXC URIs.
    • They have always been allowed in the spec in order to support URL-safe base64-encoded media IDs.

Improvements:

  • Point links to the Matrix 1.10 specification

0.9.4

Yanked because it was created from the wrong branch

0.9.3

Improvements:

  • Don't require room IDs to contain a server name
    • Room IDs being splittable into localpart and servername does not have much inherent value and there are proposals like MSC4051 that propose changing the format. Relaxing the rules makes Ruma forwards-compatible with those proposals. The server_name accessor is kept because it is used by at least one downstream, but is updated to return an Option.

0.9.2

Bug fixes:

  • Don't consider empty localpart of a user ID as valid
    • It is accepted under the compat-user-id feature, but not considered fully-conforming

Improvements:

  • Allow + in the localpart of user IDs according to MSC4009 / Matrix 1.8
  • Add compat-arbitrary-length-ids Cargo feature for opting out of 255-byte length check for all ID types

0.9.1

Improvements:

  • Update links to the latest version of the Matrix spec

0.9.0

Breaking changes:

0.8.1

Improvements:

  • Remove unused dependency on url

0.8.0

Breaking changes:

  • Rework the Error type (merge / rename variants)

0.7.0

Improvements:

  • Add more Error variants

0.6.0

Breaking changes:

  • Most validation functions no longer return the colon position on success

Improvements:

  • Add mxc_uri validation

0.5.0

Breaking changes:

  • Make Error type non-exhaustive

0.4.0

Breaking changes:

  • Fix a typo in a public function name: user_id::localpart_is_fully_conforming

0.3.0

Breaking changes:

  • Remove the serde feature

0.2.4

Improvements:

  • Restore the serde feature which was accidentally removed in a patch release

0.2.3

Improvements:

  • Add a compat feature
    • Under this feature, more user IDs are accepted that exist in the while but are not spec-compliant

0.2.2

Improvements:

  • Add verification of mxc:// URIs

0.2.1

Improvements:

  • Drop unused dependencies

0.2.0

Breaking changes:

  • Remove key_algorithms module (moved to ruma-identifiers as crypto_algorithms)