@@ -3,6 +3,151 @@ All notable changes to this project will be documented in this file.
33
44## [ Unreleased]
55
6+ ## [ 0.24.9] - 2025-10-25
7+
8+ ### Fixed
9+ - Treat compile-time and runtime custom ` AppCode ` values as equal by comparing
10+ their canonical string representation, restoring successful JSON roundtrips
11+ for ` AppCode::new("…") ` literals.
12+
13+ ### Changed
14+ - Equality for ` AppCode ` is now string-based; prefer ` == ` checks instead of
15+ pattern matching on ` AppCode::Variant ` constants.
16+
17+ ## [ 0.24.8] - 2025-10-24
18+
19+ ### Changed
20+ - Raised the documented and enforced MSRV to Rust 1.90 across the workspace to
21+ satisfy dependencies that no longer compile on Rust 1.89.
22+
23+ ## [ 0.24.7] - 2025-10-23
24+
25+ ### Fixed
26+ - Restored the documented MSRV of Rust 1.89 across the workspace so crates
27+ compile on stable 1.89 again, updating metadata, READMEs and regression tests
28+ to match.
29+
30+ ## [ 0.24.6] - 2025-10-22
31+
32+ ### Fixed
33+ - Restored ` no_std ` builds by importing ` alloc::String ` for response helpers and
34+ the legacy constructor, keeping textual detail setters available without the
35+ ` std ` feature.
36+ - Ensured ` AppCode::from_str ` remains available in ` no_std ` mode by explicitly
37+ bringing ` ToOwned ` into scope and gated the ` std::io::Error ` conversion example
38+ so doctests compile without the standard library.
39+
40+ ## [ 0.24.5] - 2025-10-21
41+
42+ ### Fixed
43+ - Replaced deprecated ` criterion::black_box ` usage in the error path benchmarks
44+ with ` std::hint::black_box ` so benches compile cleanly under ` -D warnings ` .
45+
46+ ## [ 0.24.4] - 2025-10-20
47+
48+ ### Fixed
49+ - Implemented a manual OpenAPI schema for ` AppCode ` , restoring ` utoipa `
50+ compatibility and documenting the SCREAMING_SNAKE_CASE contract in generated
51+ specs.
52+ - Emitted owned label values when incrementing ` error_total ` telemetry metrics
53+ so the updated ` metrics ` crate no longer requires ` 'static ` lifetimes.
54+ - Relaxed gRPC metadata serialization to avoid ` 'static ` lifetime requirements
55+ introduced by recent compiler changes, preserving zero-copy formatting where
56+ possible.
57+
58+ ## [ 0.24.3] - 2025-10-19
59+
60+ ### Fixed
61+ - Reused stack-allocated format buffers when emitting gRPC metadata for HTTP
62+ status codes and retry hints, and added regression coverage to ensure metadata
63+ strings remain ASCII encoded.
64+
65+ ## [ 0.24.2] - 2025-10-18
66+
67+ ### Added
68+ - Introduced a Criterion benchmark (` benches/error_paths.rs ` ) covering
69+ ` Context::into_error ` redaction scenarios and ` ProblemJson::from_app_error `
70+ conversions to track serialization hot paths.
71+ - Documented the benchmarking workflow in the README and exposed the suite via
72+ ` cargo bench --bench error_paths ` with the default harness disabled.
73+
74+ ## [ 0.24.1] - 2025-10-17
75+
76+ ### Fixed
77+ - Updated ` Context::into_error ` to move dynamic ` AppCode ` values into the
78+ resulting ` AppError ` , reworking field redaction plumbing to avoid clones and
79+ preserve custom code ownership. Added a regression test covering pointer
80+ identity for context-promoted errors.
81+
82+ ## [ 0.24.0] - 2025-10-16
83+
84+ ### Added
85+ - Introduced ` AppCode::new ` and ` AppCode::try_new ` constructors with strict
86+ SCREAMING_SNAKE_CASE validation, plus regression tests covering custom codes
87+ flowing through ` AppError ` and ` ErrorResponse ` JSON serialization.
88+ - Documented runtime-defined codes across the wiki pages to highlight
89+ ` AppCode::try_new ` usage.
90+
91+ ### Changed
92+ - Replaced the closed ` AppCode ` enum with a string-backed newtype supporting
93+ caller-defined codes while preserving built-in constants.
94+ - Updated mapping helpers and generated tables to work with the new representation
95+ by returning references instead of copying codes.
96+ - Adjusted serde parsing to validate custom codes and report
97+ ` ParseAppCodeError ` on invalid payloads.
98+
99+ ## [ 0.23.3] - 2025-10-15
100+
101+ ### Changed
102+ - Replaced temporary ` String ` allocations in RFC7807 metadata hashing and masking
103+ with stack buffers to keep the textual representations and digests stable
104+ while avoiding heap usage.
105+
106+ ### Added
107+ - Regression tests covering hashed and last-four redaction paths for numeric,
108+ UUID, and IP metadata to guarantee the legacy formatting remains unchanged.
109+
110+ ## [ 0.23.2] - 2025-10-14
111+
112+ ### Fixed
113+ - Removed an unused ` String ` import from the response details module to keep
114+ builds warning-free under ` -D warnings ` .
115+
116+ ## [ 0.23.1] - 2025-10-13
117+
118+ ### Fixed
119+ - Restored the ` AppError::with_context ` helper as an alias for ` with_source ` ,
120+ preserving the ` Arc ` fast-path, updating documentation and README templates,
121+ and adding regression tests for plain and ` anyhow::Error ` diagnostics.
122+
123+ ## [ 0.23.0] - 2025-10-12
124+
125+ ### Added
126+ - Added feature-gated detail payload storage to ` AppError ` with new
127+ ` with_details ` , ` with_details_json ` , and ` with_details_text ` helpers plus unit
128+ tests covering both serde-json configurations.
129+ - Exposed the stored details through ` ProblemJson ` and legacy ` ErrorResponse `
130+ conversions so RFC7807 and historical payloads emit the supplied data.
131+
132+ ### Changed
133+ - Updated the documentation set to highlight the new helpers and clarify
134+ feature requirements for attaching structured details.
135+
136+ ## [ 0.22.0] - 2025-10-11
137+
138+ ### Added
139+ - Introduced an explicit ` std ` feature (enabled by default) and made the core
140+ crate compile in ` no_std + alloc ` environments, including metadata builders
141+ and error helpers.
142+
143+ ### Changed
144+ - Reworked ` AppError ` internals to rely on ` core ` /` alloc ` primitives and
145+ ` core::error::Error ` , providing ` std::error::Error ` only when the ` std `
146+ feature is active.
147+ - Replaced ` thiserror ` derives on ` AppErrorKind ` with manual ` Display ` /error
148+ implementations so the taxonomy remains available without the standard
149+ library.
150+
6151## [ 0.21.2] - 2025-10-10
7152
8153### Added
0 commit comments