codec-eval 0.3.0

Image codec comparison and evaluation library
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.3.0] - 2026-02-07

### Added

- **Metrics Prelude** (`metrics::prelude`) - Unified re-exports of all metric types (Dssim, butteraugli, compute_ssimulacra2, ImgRef, ImgVec, RGB8, etc.) for convenient imports
- **Evaluation Helpers** (`eval::helpers`) - Quick quality checks without full EvalSession:
  - `evaluate_single()` - One-shot quality evaluation
  - `assert_quality()` - Threshold assertions for tests
  - `assert_perception_level()` - Semantic quality levels (Imperceptible, Marginal, Subtle, Noticeable, Degraded)
- **Feature Flags**:
  - `chart` - SVG chart generation (optional)
  - `interpolation` - Polynomial quality curve fitting (optional)
- `QualityBelowThreshold` error variant for failed quality assertions

### Changed

- **Dependencies updated**:
  - dssim-core: 3.2 → 3.4
  - butteraugli: 0.3 → 0.4
  - fast-ssim2: 0.6 → 0.6.5
  - codec-corpus: Now uses published crate (1.0) instead of git submodule
- **Consolidated on fast-ssim2** - Removed ssimulacra2 dependency, rewrote `metrics::ssimulacra2` module to use fast-ssim2 (SIMD-accelerated, identical results)
- **Corpus management simplified** - Now uses codec-corpus crate for automatic download and caching. Old sparse checkout methods remain for backward compatibility when feature is disabled.
  - New `Corpus::get_dataset("kodak")` - Simple API for downloading datasets
  - `discover_or_download()` still works but recommends new API
- `DimensionMismatch` error now uses `(usize, usize)` instead of `(u32, u32)` for consistency with imgref
- Made `interpolation` module and `stats::chart` feature-gated to reduce default footprint

### Fixed

- **butteraugli 0.4 compatibility** - Copied XYB color space conversion functions locally after butteraugli made `xyb` module private
- Clippy warnings (`float_cmp`, `deprecated`, `many_single_char_names`)

### Documentation

- Added migration examples for zen* projects (zenjpeg, zenimage, zenwebp)
- Documented zen* project usage patterns and integration opportunities
- Added before/after examples showing ~90% boilerplate reduction

### Performance

- Reduced dependency count: 14 → 13 direct dependencies
- Zero-cost feature flags ensure unused functionality doesn't impact compile times
- SIMD-accelerated SSIMULACRA2 via fast-ssim2 (significantly faster than reference implementation)

### Breaking Changes

None - all new features are additive. Existing callback-based API is unchanged.

## [0.2.0] - Previous Release

Initial public API with EvalSession callback pattern, corpus management, and report generation.