1# Version 0.15
2
3## Version 0.15.1 (Jul 14, 2021)
4
5### Changes and Fixes
6
7  * A panic that could result from non-char boundary indexing was fixed.
8  * Stale doc references to version `0.14` were updated.
9
10## Version 0.15.0 (Feb 25, 2021)
11
12### Breaking Changes
13
14  * `Cookie::force_remove()` takes `&Cookie` instead of `Cookie`.
15  * Child jar methods split into immutable and mutable versions
16    (`Cookie::{private{_mut}, signed{_mut}}`).
17  * `Cookie::encoded()` returns a new `Display` struct.
18  * Dates with year `<= 99` are handled like Chrome: range `0..=68` maps to
19    `2000..=2068`, `69..=99` to `1969..=1999`.
20  * `Cookie::{set_}expires()` operates on a new `Expiration` enum.
21
22### New Features
23
24  * Added `Cookie::make_removal()` to manually create expired cookies.
25  * Added `Cookie::stripped()` display variant to print only the `name` and
26    `value` of a cookie.
27  * `Key` implements a constant-time `PartialEq`.
28  * Added `Key::master()` to retrieve the full 512-bit master key.
29  * Added `PrivateJar::decrypt()` to manually decrypt an encrypted `Cookie`.
30  * Added `SignedJar::verify()` to manually verify a signed `Cookie`.
31  * `Cookie::expires()` returns an `Option<Expiration>` to allow distinguishing
32    between unset and `None` expirations.
33  * Added `Cookie::expires_datetime()` to retrieve the expiration as an
34    `OffsetDateTime`.
35  * Added `Cookie::unset_expires()` to unset expirations.
36
37### General Changes and Fixes
38
39  * MSRV is 1.41.
40
41# Version 0.14
42
43## Version 0.14.3 (Nov 5, 2020)
44
45### Changes and Fixes
46
47  * `rust-crypto` dependencies were updated to their latest versions.
48
49## Version 0.14.2 (Jul 22, 2020)
50
51### Changes and Fixes
52
53  * Documentation now builds on the stable channel.
54  * `rust-crypto` dependencies were updated to their latest versions.
55  * Fixed 'interator' -> 'iterator' documentation typo.
56
57## Version 0.14.1 (Jun 5, 2020)
58
59### Changes and Fixes
60
61  * Updated `base64` dependency to 0.12.
62  * Updated minimum `time` dependency to correct version: 0.2.11.
63  * Added `readme` key to `Cargo.toml`, updated `license` field.
64
65## Version 0.14.0 (May 29, 2020)
66
67### Breaking Changes
68
69  * The `Key::from_master()` method was deprecated in favor of the more aptly
70    named `Key::derive_from()`.
71  * The deprecated `CookieJar::clear()` method was removed.
72
73### New Features
74
75  * Added `Key::from()` to create a `Key` structure from a full-length key.
76  * Signed and private cookie jars can be individually enabled via the new
77    `signed` and `private` features, respectively.
78  * Key derivation via key expansion can be individually enabled via the new
79    `key-expansion` feature.
80
81### General Changes and Fixes
82
83  * `ring` is no longer a dependency: `RustCrypto`-based cryptography is used in
84    lieu of `ring`. Prior to their inclusion here, the `hmac` and `hkdf` crates
85    were audited.
86  * Quotes, if present, are stripped from cookie values when parsing.
87
88# Version 0.13
89
90## Version 0.13.3 (Feb 3, 2020)
91
92### Changes
93
94  * The `time` dependency was unpinned from `0.2.4`, allowing any `0.2.x`
95    version of `time` where `x >= 6`.
96
97## Version 0.13.2 (Jan 28, 2020)
98
99### Changes
100
101  * The `time` dependency was pinned to `0.2.4` due to upstream breaking changes
102    in `0.2.5`.
103
104## Version 0.13.1 (Jan 23, 2020)
105
106### New Features
107
108  * Added the `CookieJar::reset_delta()` method, which reverts all _delta_
109    changes to a `CookieJar`.
110
111## Version 0.13.0 (Jan 21, 2020)
112
113### Breaking Changes
114
115  * `time` was updated from 0.1 to 0.2.
116  * `ring` was updated from 0.14 to 0.16.
117  * `SameSite::None` now writes `SameSite=None` to correspond with updated
118    `SameSite` draft. `SameSite` can be unset by passing `None` to
119    `Cookie::set_same_site()`.
120  * `CookieBuilder` gained a lifetime: `CookieBuilder<'c>`.
121
122### General Changes and Fixes
123
124  * Added a CHANGELOG.
125  * `expires`, `max_age`, `path`, and `domain` can be unset by passing `None` to
126    the respective `Cookie::set_{field}()` method.
127  * The "Expires" field is limited to a date-time of Dec 31, 9999, 23:59:59.
128  * The `%` character is now properly encoded and decoded.
129  * Constructor methods on `CookieBuilder` allow non-static lifetimes.
130