12 KiB
12 KiB
0.22.0 (unreleased)
Breaking changes:
- Change the structure of
StartEventContentso that we can access transaction ids without the need to understand the concrete method. - Change
get_message_eventslimit field type fromOption<UInt>toUInt - Add
alt_aliasestoCanonicalAliasEventContent - Replace
formatandformatted_bodyfields inTextMessagEventContent,NoticeMessageEventContentandEmoteMessageEventContentwithformatted: FormattedBody - Rename
override_rulesinpush_rules::Rulesettooverride_ - Change
push_rules::PushConditionvariants from newtype variants with separate inner types to struct variants- This change removes the types
EventMatchCondition,RoomMemberCountConditionandSenderNotificationPermissionCondition
- This change removes the types
- Add PDU types:
pdu::{Pdu, PduStub} presence::PresenceStatehas been moved. Import it fromrumaorruma-common.EventJsonhas been moved and renamed. Import it fromrumaorruma-common.- The
in_reply_tofield ofroom::message::RelatesTois now optional - Use
ruma_identifiers::{ServerName, ServerKeyId}insignaturesfields ofpdu::RoomV1Pdu, RoomV1PduStub, RoomV3Pdu, RoomV3PduStub}androom::member::SignedContent. - Remove the
EventType::Customvariant. You can still check for custom event types by going through.as_str(). This ensures that new event types doesn't break existing code. - Remove the implementations of
From<EventType>andFrom<key::verification::cancel::CancelCode>forString. Use theDisplayorToStringimplementations for those types instead. - Remove
PduStub,RoomV1PduStubandRoomV3PduStubtypes
Improvements:
- Add
room::MessageFormatandroom::FormattedBody - Skip serialization of optional values on
room::encryption::EncryptionEventContent - Rename
TextMessageEventContent::new_plaintoplain(the old name is still available, but deprecated) - Add more constructors for types in
room::message:TextMessageEventContent::htmlNoticeMessageEventContent::plainNoticeMessageEventContent::htmlMessageEventContent::text_plainMessageEventContent::text_htmlMessageEventContent::notice_plainMessageEventContent::notice_html
- Add policy rule entities:
policy::rule::roompolicy::rule::serverpolicy::rule::user
- Add policy rule recommendation:
Recommendation::Ban
0.21.3
Bug fixes:
- Fix
m.room.messageevent serialization
Improvements:
- Skip serialization of
federatefield inroom::create::CreateEventContentif it istrue(the default value) room::power_levels::PowerLevelsEventContentnow implementsDefault
0.21.2
Improvements:
- Update dependencies
0.21.1
Improvements:
- Add
EventJson::into_json
0.21.0
Breaking changes:
- Replace
EventResultwith a new construct,EventJson- Instead of only capturing the json value if deserialization failed, we now
now always capture it. To improve deserialization performance at the same
time, we no longer use
serde_json::Valueinternally and instead deserialize events asBox<serde_json::value::RawValue>.EventJsonis simply a wrapper around that owned value type that additionally holds a generic argument: the type as which clients will usually want to deserialize the raw value.
- Instead of only capturing the json value if deserialization failed, we now
now always capture it. To improve deserialization performance at the same
time, we no longer use
- Add
struct UnsignedDataand update allunsignedfields types fromBTreeMap<String, Value>to this new type.- To access any additional fields of the
unsignedproperty of an event, deserialize theEventJsonto another type that captures the field(s) you are interested in.
- To access any additional fields of the
- Add fields
formatandformatted_bodytoroom::message::NoticeMessageEventContent - Remove
room::message::MessageType - Remove useless
algorithmfields from encrypted event content structs - Remove
PartialEqimplementations for most types- Since we're now using
serde_json::value::RawValue, deriving no longer works
- Since we're now using
- Update the representation of
push_rules::Tweak - Raise minimum supported Rust version to 1.40.0
0.20.0
Improvements:
- Update ruma-identifiers to 0.16.0
0.19.0
Breaking changes:
- Update ruma-identifiers to 0.15.1
- Change timestamps, including
origin_server_rsfromUInttoSystemTime - Change all usages of
HashMaptoBTreeMap- To support this,
EventTypenow implementsPartialOrdandOrd
- To support this,
0.18.0
Breaking changes:
- Update unsigned field's type from
Option<Value>toMap<String, Value>
Improvements:
- Add a convenience constructor to create a plain-text
TextMessageEventContent - Add
m.dummyevents to the to-device event collection
0.17.0
Breaking changes:
collections::onlyno longer exports arawsubmodule. It was never meant ot be exported in the first place.- Renamed
stripped::{StrippedState => AnyStrippedStateEvent, StrippedStateContent => StrippedStateEvent}
Improvements:
- Added
to_devicemodule with to-device variants of events (as found in theto_devicesection of a sync response) - Added a helper method for computing the membership change from a
MemberEvent
Bug fixes:
- Fixed missing
m.inm.relates_tofield of room messages - Fixed (de)serialization of encrypted events using
m.olm.v1.curve25519-aes-sha2
0.16.0
Breaking changes:
TryFromRaw::try_from_raw's signature has been simplified. The previous signature was a relict that was no longer sensible.- All remaining non-optional
room_idevent fields (not event content fields) have been made optional
Improvements:
NameEvents are now validated properly and will be rejected if thenamefield is longer than 255 bytes.
0.15.1
Bug fixes:
- Deserialization of custom events as part of the types from
ruma_events::collections::{all, only}was implemented (this was missing after the big fallible deserializion rewrite in 0.15.0)
0.15.0
Improvements:
ruma-eventsnow exports a new type,EventResult- For any event or event content type
Tinside a larger type that should support deserialization you can useEventResult<T>instead - Conceptually, it is the same as
Result<T, InvalidEvent> InvalidEventcan represent either a deserialization error (the event's structure did not match) or a validation error (some additional constraints defined in the matrix spec were violated)- It also contains the original value that was attempted to be deserialized into
Tinserde_json::Valueform
- It also contains the original value that was attempted to be deserialized into
- For any event or event content type
Breaking changes:
- The
FromStrimplementations for event types were removed (they were the previous implementation of fallible deserialization, but were never integrated in ruma-client-api because they didn't interoperate well with serde derives)
0.14.0
Breaking changes:
- Updated to ruma-identifiers 0.14.0.
Improvements:
- ruma-events is now checked against the RustSec advisory database.
0.13.0
Breaking changes:
- Events and their content types no longer implement
Deserializeand instead implementFromStrandTryFrom<&str>, which take a&strof JSON data and return a newInvalidEventtype on error. - Integers are now represented using the
IntandUInttypes from thejs_intcrate to ensure they are within the JavaScript-interoperable range mandated by the Matrix specification. - Some event types have new fields or new default values for previous fields to bring them up to date with version r0.5.0 of the client-server specification.
- Some event types no longer have public fields and instead use a constructor function to perform validations not represented by the type system.
- All enums now include a "nonexhaustive" variant to prevent exhaustive pattern matching. This will change to use the
#[nonexhaustive]attribute when it is stabilized. ParseErrorhas been renamedFromStrError.
New features:
- This release brings ruma-events completely up to date with version r0.5.0 of the client-server specification. All previously supported events have been updated as necessary and the following events have newly added support:
- m.dummy
- m.forwarded_room_key
- m.fully_read
- m.ignored_user_list
- m.key.verification.accept
- m.key.verification.cancel
- m.key.verification.key
- m.key.verification.mac
- m.key.verification.request
- m.key.verification.start
- m.push_rules
- m.key.encrypted
- m.key.encryption
- m.key.server_acl
- m.key.tombstone
- m.room_key
- m.room_key_request
- m.sticker
Improvements:
- Improved documentation for the crate and for many types.
- Added many new tests.
- rustfmt and clippy are now used to ensure consistent formatting and improved code quality.
0.12.0
Improvements:
- ruma-events now runs on stable Rust, requiring version 1.34 or higher.
Bug fixes:
CanonicalAliasEventandNameEventnow allow content being absent, null, or empty, as per the spec.
0.11.1
Breaking changes:
RoomIdis now optional in certain places where it may be absent, notably the responses of the/syncAPI endpoint.- A
senderfield has been added to theStrippedStateContenttype.
Improvements:
- Depend on serde's derive feature rather than serde_derive directly for simplified imports.
- Update to Rust 2018 idioms.
0.11.0
Breaking changes:
- The presence event has been modified to match the latest version of the spec. The spec was corrected to match the behavior of the Synapse homeserver.
Improvements:
- Dependencies have been updated to the latest versions.
0.10.0
Breaking changes:
- The
EventType, and collections enums have new variants to support new events. - The
extra_contentmethod has been removed from the Event trait. - The
user_idmethod from theRoomEventtrait has been renamedsenderto match the specification. - The
origin_server_tsvalue is now required for room events and is supported via a neworigin_server_tsmethod on theRoomEventtrait. MemberEventContenthas a newis_directfield.FileMessageEventContenthas a newfilenamefield.- File and thumbnail info have been moved from several message types to dedicated
FileInfo,ImageInfo, andThumbnailInfotypes. LocationMessageEventContenthas a new info field.PresenceEventContent'scurrently_activefield has changed frombooltoOption.TypingEventContentcontains a vector ofUserIds instead ofEventIds.- Height and width fields named
handwin the spec now use the full namesheightandwidthfor their struct field names, but continue to serialize to the single-letter names.
New features:
- ruma-events now supports all events according to r0.3.0 of the Matrix client-server specification.
- Added new event:
m.room.pinned_events. - Added new event:
m.direct.
Bug fixes:
- Several places where struct fields used the wrong key when serialized to JSON have been corrected.
- Fixed grammar issues in documentation.
0.9.0
Improvements:
- Added default values for various power level attributes.
- Removed Serde trait bounds on
StrippedStateContent's generic parameter. - Updated to version 0.4 of ruma-signatures.
0.8.0
Breaking changes
- Updated serde to the 1.0 series.
0.7.0
Bug fixes:
- Make the
federatefield optional when creating a room.
0.6.0
Breaking changes:
- Updated ruma-identifiers to the 0.9 series.
0.5.0
Breaking changes:
- Updated ruma-identifiers to the 0.8 series.
0.4.1
Improvements:
- Relaxed version constraints on dependent crates to allow updating to new patch level versions.
0.4.0
Breaking changes:
- Updated serde to the 0.9 series.
The public API remains the same.
0.3.0
Improvements:
ruma_events::presence::PresenceStatenow implementsDisplayandFromStr.
0.2.0
Improvements:
- Added missing "stripped" versions of some state events.
- All "stripped" versions of state events are now serializable.
0.1.0
Initial release.