|
1 | 1 |
|
| 2 | +## [0.43.0] - 2026-10-02 |
| 3 | + |
| 4 | + |
| 5 | +### ⚠ Breaking changes |
| 6 | + |
| 7 | +- `RequestError`'s tuple payload is now `Box<dyn std::error::Error + Send + Sync + 'static>` instead of `reqwest::Error`. Construct it with `RequestError::from(reqwest_error)` (or box the error yourself) instead of `RequestError(reqwest_error)`, and recover the concrete error with `.0.downcast_ref::<reqwest::Error>()` instead of using `.0` as a `reqwest::Error` directly. `source()` is unchanged; the `Display` message is now "Request to the auth server failed" (it was "HTTP request failed"). |
| 8 | +- `DeviceClientError::Request` now carries a `RequestError` rather than a `reqwest::Error`; a match on that variant's payload changes type. |
| 9 | +- `From<reqwest::Error> for AuthError` is removed. Every reqwest failure enters the crate through `ReqwestTransport` as a `RequestError`; a caller that lifted a `reqwest::Error` into `AuthError` directly should wrap it in `RequestError` (`AuthError::Request(RequestError(Box::new(e)))`) or, better, send through the transport. |
| 10 | +- Depends on `cts-common` 0.43 (vitaminc 0.5) and `zerokms-protocol` 0.12.31, from crates.io. `Crn` (re-exported here), `Region`, `WorkspaceId` and the `cts-common` errors in this crate's API are `cts-common` 0.43 types, so a caller that passes them in needs `cts-common` 0.43 too. |
| 11 | + |
| 12 | +### CI |
| 13 | + |
| 14 | +- mutation-testing gate for stack-auth and stack-encrypt (cargo-mutants --in-diff) |
| 15 | + |
| 16 | +### Documentation |
| 17 | + |
| 18 | +- correct stale StaticTokenStrategy comments in Cargo manifests |
| 19 | + |
| 20 | +### Features |
| 21 | + |
| 22 | +- build stack-auth, stack-kms and stack-encrypt for WASI without reqwest |
| 23 | +- classify credential rejections where the variants live |
| 24 | +- a workspace CRN is reachable without reaching for cts-common |
| 25 | +- an HTTP transport trait mirroring the guest's host import, reqwest behind `http` |
| 26 | +- add Go credential strategies |
| 27 | + |
| 28 | +### Fixes |
| 29 | + |
| 30 | +- address review findings on the http feature split |
| 31 | +- address Copilot review on error Display strings |
| 32 | +- test modules keep a literal `cfg(test)` so the CRAP gate skips them; add the npm changeset |
| 33 | +- the wire types print nothing secret, wipe their headers, and lend reqwest the body |
| 34 | +- satisfy credential guest CI |
| 35 | +- lock only device refresh |
| 36 | +- never replay a spent refresh token after a failed save |
| 37 | +- identify every auth request with a user-agent |
| 38 | + |
| 39 | +### Miscellaneous |
| 40 | + |
| 41 | +- per-crate rustdoc gates for the stack crates, fanned out by `doc` |
| 42 | +- move to cipherstash/stack with its history: the first release from that repository's `release-plz.yml`, in a version group with stack-profile alone |
| 43 | + |
| 44 | +### Refactoring |
| 45 | + |
| 46 | +- replace crate-wide no-http allow(dead_code) with item-level http gates |
| 47 | + |
| 48 | +### Testing |
| 49 | + |
| 50 | +- pin mutation regression behavior |
| 51 | +- cover remaining mutation paths |
| 52 | +- address PR review findings |
| 53 | +- keep browser launcher mutable |
| 54 | +- address review notes on assertion messages |
| 55 | + |
2 | 56 | ## [0.42.3] - 2026-08-26 |
3 | 57 |
|
4 | 58 |
|
|
0 commit comments