Skip to content

Commit 81fcdf7

Browse files
authored
Merge pull request #130 from RAprogramm/new_verison
New verison
2 parents 11ca31b + 46e3a0e commit 81fcdf7

40 files changed

+2360
-726
lines changed

.github/workflows/reusable-ci.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ jobs:
1212
runs-on: ubuntu-latest
1313
env:
1414
CARGO_LOCKED: "true"
15-
CARGO_TERM_COLOR: always
1615

1716
steps:
1817
- uses: actions/checkout@v4

CHANGELOG.md

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)