# Changelog
All notable changes to this project are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.3.0] - 2026-07-24
### Fixed
- `assert_str_trim_all_eq!` / `assert_str_trim_all_ne!` behaved differently
depending on which arm matched: the 2-argument and trailing-comma arms used
`trim_eq` semantics, and the trailing-comma arms delegated to the wrong macro
entirely. All arms now share one consistent definition.
- Corrected the `assert_str_trim_ne!` documentation, which described equality
instead of inequality, and fixed a `Responces` → `Responses` typo across the
doc examples.
### Changed
- **Behaviour change:** `trim_all` now removes **all** whitespace anywhere in
the string (including *inside* a line), matching its documented contract.
Previously intra-line whitespace was preserved. Use `assert_str_trim_eq!` if
intra-line whitespace should remain significant.
- Internals refactored: the six macros are now thin shims over a shared,
`#[track_caller]` implementation, removing ~220 lines of duplicated macro
bodies while preserving behaviour and the panic-message format.
### Added
- Public `normalize(&str, Mode) -> String` function and `Mode` enum
(`Lines`, `Trim`, `TrimAll`), exposing the macros' normalization for reuse
outside of assertions (snapshot pre-processing, hash/sort keys, custom
comparisons). `Mode` is `#[non_exhaustive]`.
- `#![forbid(unsafe_code)]` — the crate contains no `unsafe` code.
- An explicit `rust-version` (MSRV 1.85, required by edition 2024).
## [0.2.0]
- Previous release.
[0.3.0]: https://github.com/AnderEnder/assert-str/compare/0.2.0...0.3.0
[0.2.0]: https://github.com/AnderEnder/assert-str/releases/tag/0.2.0