1Version NEXT:
2XXXX-YY-ZZ RELEASER <admin@example.com>
3 * Breaking
4 - The type of jingle_rtp::Description::ssrc has been changed from
5 Option<String> to Option<u32>, in accordance with XEP-0167 version
6 1.2.3 and RFC 3550. (!602)
7 - The ibr::Query struct has been split into FieldsQuery, RemoveQuery,
8 LegacyQuery and FormsQuery, to make it reflect more how it gets
9 used in XMPP.
10 * Improvements:
11 - Make Priority’s inner i8 pub, which had been broken since the
12 conversion to xso. (!632)
13
14Version 0.22.0:
152025-10-28 pep <pep@bouah.net>
16 * Breaking
17 - MIX (XEP-0369) has been removed, it has failed to gain any traction in
18 the XMPP ecosystem and is actively being replaced with better
19 alternatives based on MUC.
20 - The `alternate_address` field of
21 `xmpp_parsers::stanza_error::StanzaError` has been moved into the
22 corresponding enum variants of the
23 `xmpp_parsers::stanza_error::DefinedCondition` where it may occur.
24 - The `xmpp_parsers::mix::Participant::jid` and `..::Mix::jid` fields
25 are now of type `BareJid` (instead of `String`), as they should always
26 have been. This influences various other places, such as these
27 struct's constructors.
28 - The rtt module has been changed to make use of xso on enums. This
29 allows us to simplify the `Action` type to include all three possible
30 variants directly in the enum, rather than as separate types which are
31 then included in `Action`. Also `Action::Erase::num` is now a wrapper
32 type around u32, which lets us implement a custom Default on it.
33 (!416)
34 - The cert_management module is now using `Option` instead of `bool` to
35 check whether a child element is present or not, as this is currently
36 implemented in xso. We might revert that change if we implement flag
37 metas in xso before the next release.
38 - The forwarding module now hardcodes that its child is a message in the
39 jabber:client namespace. It previously half-followed the schema, but
40 nothing so far uses it for anything but this message. We can always
41 change it again once any other specification allows e.g. presences or
42 iqs.
43 - Module `jingle_thumnails` has been renamed to `jingle_thumbnails`. It
44 now respect the latest version of the XEP, with the width and height
45 being limited to 0..65535 and the media-type being optional (!475).
46 - The bookmarks2 Conference `extensions` child is now an
47 `Option<Extensions>` instead of a `Vec<Element>`, to distinguish
48 between it being absent or empty (!472).
49 - Replace all boolean attributes with the `bool` type, so that we can
50 use them just like normal booleans. The following structs are removed:
51 `pubsub::pubsub::Notify`, `bookmarks2::Autojoin`, `extdisco::Restricted`,
52 `fast::Tls0Rtt`, `legacy_omemo::IsPreKey`, `mam::Complete`,
53 `sm::ResumeAttr` (!476)
54 - `cert_management::Append::no_cert_management`,
55 `cert_management::Item::no_cert_management`,
56 `ssm::StreamManagement::optional` and `starttls::StartTls::required` are
57 now proper bools, instead of `Option<ZeroSizedType>` (!518)
58 - `bookmarks::Conference` and `bookmarks2::Conference` use ResourcePart to store
59 the optional nickname instead of a String (!485)
60 - pubsub Item and pubsub#event Item are now distinct structs (!503)
61 - `message::Message` id field is now `Option<message::Id>` instead of
62 `Option<String>` (!504)
63 - `message_correction::Replace` id field is now Id instead of String (!504)
64 - `Caps::hash` has been split into `Caps::hash` (the algo) and
65 `Caps::ver` (the actual hash), to reflect the attributes (!517)
66 - `muc::MucUser` now has an `invite` field
67 - vCard-temp queries have been split into vcard::VCardQuery (!522)
68 - http_upload’s Header type has been split into HeaderName, an enum
69 containing only the name of the header, and the Header struct with
70 both a name and a value (!530)
71 - `pubsub::Event` is now the wrapper for the `pubsub::event::Payload` enum,
72 and the PublishedItems and RetractedItems have been merged into the
73 Items sub-struct. These replace the previous PubSubEvent enum (!531)
74 - `Handshake::from_password_and_stream_id()` became
75 `Handshake::from_stream_id_and_password()`, with the two parameters
76 having been exchanged, and the stream_id is now a String instead of
77 &str.
78 - `pubsub::Owner` is now a wrapper for the `pubsub::owner::Paylolad` enum,
79 and all its direct children have been merged into this enum (!532)
80 - `time::TimeResult` has been ported to use xso. Use From/Into to convert
81 it to/from `chrono::DateTime` values. The numbered member `0` does not
82 exist anymore (!551).
83 - `stanza_error::StanzaError` has been ported to use xso (!552).
84 - data_forms has been ported to use xso. This introduces a couple subtle
85 breaking changes for `data_forms::DataForm`, in particular:
86
87 - the `from_type` member was replaced by a pair of functions.
88 - if the form contains a FORM_TYPE field, it will be part of the
89 `fields` member (unlike before, where that field was removed).
90 - `message::Message` has been ported to use xso (!560). This causes several
91 breaking changes:
92
93 1. the `message::Body` and `message::Subject` newtypes have been removed
94 and replaced by bare Strings
95 2. a `message::Lang` newtype has been introduced for the language of
96 message parts.
97 3. the `message::Thread` type was converted from a single-element
98 tuple-like struct to a struct with named fields to support the
99 optional `parent` attribute.
100 - `presence::Presence` has been ported to use xso (!477). It also uses the
101 `message::Lang` newtype since !561.
102 - `iq::Iq` has been ported to use xso (!572). That entails a couple
103 breaking changes:
104
105 - The IqType type has been removed and loosely replaced by the
106 IqPayload type.
107 - The Iq type is now an enum. Access to `from`, `to` and `id` needs
108 to happen via the provided accessor functions, by `match`-ing the
109 enum variant or by splitting the Iq into its IqHeader and IqPayload
110 using the `split()` method.
111 - The inverse is possible through the `assemble()` methods on
112 IqPayload, IqHeader and Iq, whichever is more convenient.
113 * New parsers/serialisers:
114 - Stream Features (RFC 6120) (!400)
115 - Spam Reporting (XEP-0377) (!506)
116 - Extensible SASL Profile (XEP-0388)
117 - SASL Channel-Binding Type Capability (XEP-0440)
118 - Stream Limits Advertisement (XEP-0478)
119 - Message Displayed Synchronization (XEP-0490)
120 - RFC 6120 stream errors and starttls nonzas
121 - XEP-0045 mediated invites
122 - Push Notifications (XEP-0357) (!543)
123 - JSON Containers (XEP-0335) (!546)
124 - Verifying HTTP Requests via XMPP (XEP-0070)
125 * Improvements:
126 - Add support for undocumented `<optional/> in XEP-0198 feature
127 advertisement, for compatibility with servers in the wild.
128 - Add support application-specific error conditions in XEP-0198
129 - Keep unsupported vCard elements as `minidom::Element`, so that they
130 get serialized back instead of being dropped. We now also test for
131 the size of these elements (!472).
132 - Add `Message::extract_valid_payload` method to warn in case of failure
133 and return simply `Option<T>` instead of `Result<Option<T>>` (!497)
134 - Add `Message::get_best_body_cloned` and `Message::get_best_subject_cloned`
135 to clone automatically when performance is not an issue (!497)
136 - Fix compatibility to uuid 1.12
137 - Implement Default for Tune
138 - Re-export `xso::error::FromElementError`.
139 - Fix a few tests behind 'component' feature
140 - Fix some Clippy warnings
141
142Version 0.21.0:
1432024-07-25 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
144 * New parsers/serialisers:
145 - Private XML Storage (XEP-0049), only enough for bookmarks.
146 - vcard-temp (XEP-0054), only enough for the PHOTO element.
147 - Out of Band Data (XEP-0066), only the annotation part used for file
148 sharing in Conversations.
149 - Data Forms Validation (XEP-0122).
150 - vCard-Based Avatars (XEP-0153).
151 - Jingle Content Thumbnails (XEP-264).
152 - Bind 2 (XEP-0386).
153 - Fast Authentication Streamlining Tokens (XEP-0484).
154 * Improvements:
155 - Replace many usages of our custom macros with the new xso crate,
156 which will ultimately allow streaming directly from the rxml XML
157 parser (in a SAX way) into our parsed structs, without going through
158 minidom in the middle.
159 - Re-export the jid and minidom modules, not their inner symbols.
160 - Use edition 2021, no more use TryFrom/TryInto! \o/
161 - Add serde feature, passed to jid crate
162 - Update XEP-0084 avatars to 1.1.4, which allows for avatars bigger
163 than 64 KiB.
164 - Make it easy to convert from bookmarks1 to bookmarks2.
165 - Ignore the 'code' attribute on errors, deprecated with XEP-0086 in
166 2007 but still sent by some legacy clients or servers it seems.
167 - Implement flip-page and metadata for XEP-0313 (Message Archive
168 Management).
169 - Add support for XEP-0059 (Result Set Management) for XEP-0030
170 disco#items.
171 - When disable-validation is enable, stop validating XEP-0030 rules.
172 - Make TryFrom<Element> chainable.
173 - Add a Message::extract_payload() function.
174 - Add a PubSubEvent::node_name() function, to simplify matching on the
175 node name from any of the enum variants.
176 - PubSub elements can now be compared for equality.
177 - Ignore incorrect FORM_TYPE fields as per XEP-0068.
178 - Allow fixed fields and desc in XEP-0004 (Data Forms).
179 - Add constructors for DataForm and Field, to simplify their creation.
180 - Make it possible to specify an alternate JID on <gone/> and
181 <redirect/> stanza errors.
182 * Bugfixes:
183 - Fix XEP-0257 serialisation
184 - Fix stanza error parsing of multiple languages.
185 - Fix all typos in the codebase found by codespell.
186
187Version 0.20.0:
1882023-08-17 Maxime “pep” Buquet <pep@bouah.net>, Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
189 * New parsers/serialisers:
190 - Message Reactions (XEP-0444)
191 * Improvements:
192 - Update dependencies
193 - muc::user::Item: Added with_ helpers
194 - Correct cargo doc warnings
195 - Presence now has constructors for each variant so you don't have to
196 import presence::Type, where Presence::available represents type None (#79)
197 - Presence::with_payload builds a payload into the presence (#79)
198 - Message now has constructors for each type ; Message::new still builds a Chat type (#78)
199 - Message::with_body builder method appends a body in a given language to the message (#78)
200 - Derive PartialEq on Iq
201 - impl MessagePayload for MucUser
202 - Add MucUser::with_statuses and ::with_items
203 * Breaking changes:
204 - Removed the 'serde' feature. Add it directly by using 'jid'.
205 `jid = { version = "*", features = ["serde"] }`.
206
207Version 0.19.2:
2082022-12-17 Maxime “pep” Buquet <pep@bouah.net>
209 * Improvements:
210 - Derive PartialEq on Presence
211 - impl PresencePayload for muc::user::MucUser.
212 - New muc::user::Status::ServiceErrorKick variant for the 333 status
213 code.
214 - Update deprecated chrono code (FixedOffset::{east,west} to
215 {east,west}_opt).
216
217Version 0.19.1:
2182022-07-13 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
219 * New parsers/serialisers:
220 - Add In-Band Real Time Text support
221 - Add OMEMO support
222 * Improvements:
223 - bookmarks 2: uncomment test
224
225Version 0.19.0:
2262022-03-07 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
227 * New parsers/serialisers:
228 - External Service Discovery (XEP-0215).
229 - HTTP File Upload (XEP-0363).
230 - Message Archive Management Preferences (XEP-0441), actually spun off
231 from XEP-0313.
232 * Improvements:
233 - Add constructor helpers for more structs.
234 - Impl Eq and Hash on disco::Feature (thanks Paul!).
235 - Impl MessagePayload for PubSubEvent (thanks Paul!).
236 - Bump minidom to 0.14.
237 - Bump the hash crates to their latest version.
238 - Run clippy.
239 - Rename the directory to parsers, to avoid colliding prefix with
240 xmpp-rs.
241 * Breaking changes:
242 - Bump bookmarks 2 to version 1.1.3.
243 - Use proper types in Jingle specs (XEP-0294 and XEP-0339).
244 - Move preferences from MAM to MAM prefs, following the spec split.
245
246Version 0.18.1:
2472021-01-13 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
248 * Bugfixes:
249 - Bump minidom to 0.13, as 0.12.1 got yanked.
250
251Version 0.18.0:
2522021-01-13 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
253 * New parsers/serialisers:
254 - Jingle Raw UDP Transport Method (XEP-0177).
255 - Jingle RTP Header Extensions Negotiation (XEP-0294).
256 - Jingle Grouping Framework (XEP-0338).
257 - Mediated Information eXchange (MIX) (XEP-0369).
258 * Improvements:
259 - Everything is now PartialEq!
260 - Add "serde" feature to enable "jid/serde".
261 - Implement more of XEP-0060.
262 - Bump XEP-0167 to version 1.2.0, adding rtcp-mux.
263 - Bump XEP-0176 to version 1.1, fixing interoperability with other
264 clients.
265 - Bump XEP-0402 to version 1.1.1, bumping its namespace and adding
266 support for extension data.
267 - Bump all dependencies to their latest version.
268 - Some more helper constructors.
269 - Make public some stuff that should have been public from the very
270 beginning.
271 * Bugfixes:
272 - Jingle::set_reason() does what it says now (copy/paste error).
273 - Bookmarks’ names are now optional like they should.
274
275Version 0.17.0:
2762020-02-15 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>, Maxime “pep” Buquet <pep@bouah.net>, Paul Fariello <paul@fariello.eu>
277 * Improvements:
278 - Add serialization tests where possible
279 - Use minidom's NSChoice API for Jingle parser
280 - Remove NamespaceAwareCompare. Move to minidom
281 * Breaking changes:
282 - Prevent generate_serializer macro from adding another layer of Node.
283 Fixes some serializers.
284 - ecaps2: Use the Error type instead of ()
285
286Version 0.16.0:
2872019-10-15 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
288 * New parsers/serialisers:
289 - Client Certificate Management for SASL EXTERNAL (XEP-0257)
290 - JID Prep (XEP-0328)
291 - Client State Indication (XEP-0352)
292 - OpenPGP for XMPP (XEP-0373)
293 - Bookmarks 2 (This Time it's Serious) (XEP-0402)
294 - Anonymous unique occupant identifiers for MUCs (XEP-0421)
295 - Source-Specific Media Attributes in Jingle (XEP-0339)
296 - Jingle RTP Feedback Negotiation (XEP-0293)
297 * Breaking changes:
298 - Presence constructors now take Into<Jid> and assume Some.
299 * Improvements:
300 - CI: refactor, add caching
301 - Update jid-rs to 0.8
302
303Version 0.15.0:
3042019-09-06 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
305 * New parsers/serialisers:
306 - XHTML-IM (XEP-0071)
307 - User Tune (XEP-0118)
308 - Bits of Binary (XEP-0231)
309 - Message Carbons (XEP-0280)
310 * Breaking changes:
311 - Stop reexporting TryFrom and TryInto, they are available in
312 std::convert nowadays.
313 - Bind has been split into BindQuery and BindResponse.
314 * Improvements:
315 - New DOAP file for a machine-readable description of the features.
316 - Add various parser and formatter helpers on Hash.
317
318Version 0.14.0:
3192019-07-13 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>, Maxime “pep” Buquet <pep@bouah.net>
320 * New parsers/serialisers:
321 - Entity Time (XEP-0202).
322 * Improvements:
323 - Microblog NS (XEP-0227).
324 - Update jid-rs dependency with jid split change (Jid, FullJid,
325 BareJid) and reexport them.
326 - Fix rustdoc options in Cargo.toml for docs.rs
327 * Breaking changes:
328 - Presence's show attribute is now Option<Show> and Show::None is no
329 more.
330
331Version 0.13.1:
3322019-04-12 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
333 * Bugfixes:
334 - Fix invalid serialisation of priority in presence.
335 - Bump image size to u16 from u8, as per XEP-0084 version 1.1.2.
336 * Improvements:
337 - Drop try_from dependency, as std::convert::TryFrom got
338 stabilised.
339
340Version 0.13.0:
3412019-03-20 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
342 * New parsers/serialisers:
343 - User Avatar (XEP-0084).
344 - Contact Addresses for XMPP Services (XEP-0157).
345 - Jingle RTP Sessions (XEP-0167).
346 - Jingle ICE-UDP Transport Method (XEP-0176).
347 - Use of DTLS-SRTP in Jingle Sessions (XEP-0320).
348 * Breaking changes:
349 - Make 'id' required on iq, as per RFC6120 §8.1.3.
350 - Refactor PubSub to have more type-safety.
351 - Treat FORM_TYPE as a special case in data forms, to avoid
352 duplicating it into a field.
353 - Add forgotten i18n to Jingle text element.
354 * Improvements:
355 - Add various helpers for hash representations.
356 - Add helpers constructors for multiple extensions (disco, caps,
357 pubsub, stanza_error).
358 - Use Into<String> in more constructors.
359 - Internal change on attribute declaration in macros.
360 - Reexport missing try_from::TryInto.
361
362Version 0.12.2:
3632019-01-16 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
364 * Improvements:
365 - Reexport missing util::error::Error and try_from::TryFrom.
366
367Version 0.12.1:
3682019-01-16 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
369 * Improvements:
370 - Reexport missing JidParseError from the jid crate.
371
372Version 0.12.0:
3732019-01-16 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
374 * Breaking changes:
375 - Update dependencies.
376 - Switch to git, upstream is now available at
377 https://gitlab.com/xmpp-rs/xmpp-parsers
378 - Switch to Edition 2018, this removes support for rustc
379 versions older than 1.31.
380 - Implement support for XEP-0030 2.5rc3, relaxing the ordering
381 of children in disco#info.
382 * Improvements:
383 - Test for struct size, to keep them known and avoid bloat.
384 - Add various constructors to make the API easier to use.
385 - Reexport Jid from the jid crate, to avoid any weird issue on
386 using different incompatible versions of the same crate.
387 - Add forgotten 'ask' attribute on roster item (thanks O01eg!).
388 - Use cargo-fmt on the codebase, to lower the barrier of entry.
389 - Add a disable-validation feature, disabling many checks
390 xmpp-parsers is doing. This should be used for software
391 which want to let invalid XMPP pass through instead of being
392 rejected as invalid (thanks Astro-!).
393
394Version 0.11.1:
3952018-09-20 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
396 * Improvements:
397 - Document all of the modules.
398
399Version 0.11.0:
4002018-08-03 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
401 * Breaking changes:
402 - Split Software Version (XEP-0092) into a query and response
403 elements.
404 - Split RSM (XEP-0059) into a query and response elements.
405 - Fix type safety and spec issues in RSM and MAM (XEP-0313).
406 - Remove item@node and EmptyItems from PubSub events
407 (XEP-0060).
408 * Improvements:
409 - Document many additional modules.
410 - Add the <failure/> SASL nonza, as well as the SCRAM-SHA-256
411 and the two -PLUS mechanisms.
412
413Version 0.10.0:
4142018-07-31 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
415 * New parsers/serialisers:
416 - Added <stream:stream>, SASL and bind (RFC6120) parsers.
417 - Added a WebSocket <open/> (RFC7395) implementation.
418 - Added a Jabber Component <handshake/> (XEP-0114).
419 - Added support for User Nickname (XEP-0172).
420 - Added support for Stream Management (XEP-0198).
421 - Added support for Bookmarks (XEP-0048).
422 - Publish-Subscribe (XEP-0060) now supports requests in
423 addition to events.
424 * Breaking changes:
425 - Switch from std::error to failure to report better errors.
426 - Bump to minidom 0.9.1, and reexport minidom::Element.
427 * Improvements:
428 - Add getters for the best body and subject in message, to make
429 it easier to determine which one the user wants based on
430 their language preferences.
431 - Add constructors and setters for most Jingle elements, to
432 ease their creation.
433 - Add constructors for hash, MUC item, iq and more.
434 - Use more macros to simplify and factorise the code.
435 - Use traits to define iq payloads.
436 - Document more modules.
437
438Version 0.9.0:
4392017-10-31 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
440 * New parsers/serialisers:
441 - Blocking Command (XEP-0191) has been added.
442 - Date and Time Profiles (XEP-0082) has been added, replacing
443 ad-hoc use of chrono in various places.
444 - User Mood (XEP-0107) has been added.
445 * Breaking changes:
446 - Fix subscription="none" not being the default.
447 - Add more type safety to pubsub#event.
448 - Reuse Jingle’s ContentId type in JingleFT.
449 - Import the disposition attribute values in Jingle.
450 * Improvements:
451 - Refactor a good part of the code using macros.
452 - Simplify the parsing code wherever it makes sense.
453 - Check for children ordering in disco#info result.
454 - Finish implementation of <received/>, <checksum/> and
455 <range/> in JingleFT.
456 - Correctly serialise <ping/>, and test it.
457
458Version 0.8.0:
4592017-08-27 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
460 * New parsers/serialisers:
461 - iq:version (XEP-0092) has been added.
462 - Finally implement extension serialisation in disco.
463 * Breaking changes:
464 - Wrap even more elements into their own type, in jingle,
465 jingle_ft, roster, message.
466 - Split loose enums into multiple structs where it makes sense,
467 such as for IBB, StanzaId, Receipts.
468 - Split disco query and answer elements into their own struct,
469 to enforce more guarantees on both.
470 * Improvements:
471 - Use Vec::into_iter() more to avoid references and clones.
472 - Make data_forms propagate a media_element error.
473 - Document more of disco, roster, chatstates.
474 - Use the minidom feature of jid, for IntoAttributeValue.
475 - Add a component feature, changing the default namespace to
476 jabber:component:accept.
477 - Add support for indicating ranged transfers in jingle_ft.
478
479Version 0.7.1:
4802017-07-24 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
481 * Hotfixes:
482 - Stub out blake2 support, since the blake2 crate broke its API
483 between their 0.6.0 and 0.6.1 releases…
484
485Version 0.7.0:
4862017-07-23 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
487 * New parsers/serialisers:
488 - Jingle Message Initialisation (XEP-0353) was added.
489 - The disco#items query (XEP-0030) is now supported, in
490 addition to the existing disco#info one.
491 * Breaking changes:
492 - Replaced many type aliases with proper wrapping structs.
493 - Split Disco into a query and a result part, since they have
494 very different constraints.
495 - Split IqPayload in three to avoid parsing queries as results
496 for example.
497 * Improvements:
498 - Use TryFrom from the try_from crate, thus removing the
499 dependency on nightly!
500 - Always implement From instead of Into, the latter is
501 generated anyway.
502 - Add helpers to construct your Presence stanza.
503
504Version 0.6.0:
5052017-06-27 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
506 * New parsers/serialisers:
507 - In-Band Registration (XEP-0077) was added.
508 - Multi-User Chat (XEP-0045) got expanded a lot, thanks pep.!
509 * Breaking changes:
510 - Added wrappers for Strings used as identifiers, to add type
511 safety.
512 - Use chrono’s DateTime for JingleFT’s date element.
513 - Use Jid for JingleS5B’s jid attribute.
514 * Improvements:
515 - Use more macros for common tasks.
516 - Add a constructor for Message and Presence.
517 - Implement std::fmt::Display and std::error::Error on our
518 error type.
519 - Fix DataForms serialisation.
520 - Fix roster group serialisation.
521 - Update libraries, notably chrono whose version 0.3.1 got
522 yanked.
523
524Version 0.5.0:
5252017-06-11 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
526 * New parsers/serialisers:
527 - Implementation of the roster management protocol defined in
528 RFC 6121 §2.
529 - Implementation of PubSub events (except collections).
530 - Early implementation of MUC.
531 * Breaking changes:
532 - Rename presence enums to make them easier to use.
533 * Improvements:
534 - Make hashes comparable and hashable.
535 - Make data forms embeddable easily into minidom
536 Element::builder.
537
538Version 0.4.0:
5392017-05-28 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
540 * Incompatible changes:
541 - Receipts now make the id optional, as per the specification.
542 - Hashes now expose their raw binary value, instead of staying
543 base64-encoded.
544 - Parse dates (XEP-0082) in delayed delivery (XEP-0203) and
545 last user interaction (XEP-0319), using the chrono crate.
546 * Improvements:
547 - Removal of most of the remaining clones, the only ones left
548 are due to minidom not exposing a draining iterator over the
549 children.
550 - Finish to parse all of the attributes using get_attr!().
551 - More attribute checks.
552 - Split more parsers into one parser per element.
553 - Rely on minidom 0.4.3 to serialise more standard types
554 automatically.
555 - Implement forgotten serialisation for data forms (XEP-0004).
556 - Implement legacy capabilities (XEP-0115) for compatibility
557 with older software.
558
559Version 0.3.0:
5602017-05-23 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
561 * Big changes:
562 - All parsers and serialisers now consume their argument, this
563 makes the API way more efficient, but you will have to clone
564 before passing your structs in it if you want to keep them.
565 - Payloads of stanzas are not parsed automatically anymore, to
566 let applications which want to forward them as-is do so more
567 easily. Parsing now always succeeds on unknown payloads, it
568 just puts them into an Unknown value containing the existing
569 minidom Element.
570 * New parsers/serialisers:
571 - Last User Interaction in Presence, XEP-0319.
572 * Improved parsers/serialisers:
573 - Message now supports subject, bodies and threads as per
574 RFC 6121 §5.2.
575 - Replace most attribute reads with a nice macro.
576 - Use enums for more enum-like things, for example Algo in
577 Hash, or FieldType in DataForm.
578 - Wire up stanza-id and origin-id to MessagePayload.
579 - Wire up MAM elements to message and iq payloads.
580 - Changes in the RSM API.
581 - Add support for more data forms elements, but still not the
582 complete set.
583 - Thanks to minidom 0.3.1, check for explicitly disallowed
584 extra attributes in some elements.
585 * Crate updates:
586 - minidom 0.4.1
587
588Version 0.2.0:
5892017-05-06 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
590 * New parsers/serialisers:
591 - Stanza error, as per RFC 6120 §8.3.
592 - Jingle SOCKS5 Transport, XEP-0260.
593 * Incompatible changes:
594 - Parsers and serialisers now all implement TryFrom<Element>
595 and Into<Element>, instead of the old parse_* and serialise_*
596 functions.
597 - Presence has got an overhaul, it now hosts show, statuses and
598 priority in its struct. The status module has also been
599 dropped.
600 - Message now supports multiple bodies, each in a different
601 language. The body module has also been dropped.
602 - Iq now gets a proper StanzaError when the type is error.
603 - Fix bogus Jingle payload, which was requiring both
604 description and transport.
605 * Crate updates:
606 - minidom 0.3.0
607
608Version 0.1.0:
6092017-04-29 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
610 * Implement many extensions.