Skip to content

Commit 78de4d3

Browse files
committed
chore: update changelogs for v0.8.0 release
1 parent 526dd70 commit 78de4d3

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,32 @@
11
# Changelog
22

3+
## [0.8.0] - 2025-11-08
4+
5+
### Breaking Changes
6+
- **Matrix Norm APIs**: Replaced the single `Matrix.norm(kind)` entry point with explicit helpers (`frobenius_norm`, `l1_norm`, `max_norm`, `element_norm`, `schatten_norm`, `induced_norm`, `nuclear_norm`, `spectral_norm`) across the Zig core and Python bindings. Update callers to the specific method that matches the desired metric.
7+
- **Mean Pixel Error Scaling**: `Image.meanPixelError` (and the Python `Image.mean_pixel_error`) now returns a normalized value in `[0, 1]` instead of a percentage. Multiply by 100 if you still need percent output.
8+
9+
### Features
10+
- **Geometry Rectangles**: Added center/corner accessors, translation & clipping helpers, and coverage utilities to `Rectangle`, with parity in the Python bindings. Overlaps now treat threshold checks as inclusive so `1.0` truly means “fully covered”.
11+
- **Matrix Norm Suite**: Introduced element-wise, Schatten, induced, nuclear, and spectral norm implementations backed by the improved SVD helpers, plus error reporting when invalid exponents are supplied.
12+
- **Image Loading**: `Image.loadFromBytes` (and Python’s `load_from_bytes`) can decode PNG/JPEG images directly from any byte buffer or buffer-protocol object without hitting the filesystem, sharing the same validation as file-based loads.
13+
- **Color & Canvas Enhancements**: All color structs gain a generic `invert()` method (exposed to Python) and the canvas line renderer now applies fractional endpoint fading for smoother anti-aliased strokes.
14+
- **Image Metrics**: Added `meanPixelError` for structural comparisons alongside PSNR/SSIM, updated examples that visualize the metric suite, and exposed the API to Python.
15+
- **Examples**: New “Contrast Enhancement” WASM demo showcases autocontrast and histogram equalization controls with cleaner web UI wiring.
16+
17+
### Performance
18+
- **Planar Integral Images**: Box-blur and summed-area table routines now use a unified planar integral representation, reusing the optimized kernels per channel to speed up large RGB/RGBA blurs while simplifying the API surface.
19+
20+
### Fixes
21+
- **Matrix Ops**: Binary operations (`add`, `sub`, `times`, `gemm`) now short-circuit when the second operand already carries an error, preventing misleading results.
22+
- **Transforms**: Similarity, affine, and projective fits explicitly return `error.NotConverged`/`error.RankDeficient` when SVD solvers fail, with Python raising `ValueError` for degenerate point sets instead of silently emitting bad matrices.
23+
- **ORB & Feature Matching**: Brute-force matchers only free successfully allocated slices and ORB scale handling no longer panics on `scale_factor <= 1.0`.
24+
- **Canvas**: Thick transparent lines switch to per-pixel blending so alpha is preserved, and docs clarify how `drawLine` blends colors.
25+
- **Fonts**: PCF format flags use the correct masks and bounds checks, while the BDF parser now handles glyph rows wider than 32 bits by decoding hex data byte-by-byte.
26+
27+
### Tooling & Docs
28+
- Updated Python README structure/quickstart, added a download badge, and refreshed example instructions to reflect the new metrics/contrast demos.
29+
330
## [0.7.1] - 2025-10-24
431

532
### Performance

bindings/python/CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
# Python Bindings Changelog
22

3+
## [0.8.0] - 2025-11-08
4+
5+
### Added
6+
- **Rectangle Conveniences**: New `center`, `top_left`, `bottom_right`, `translate`, `clip`, `diagonal`, and `covers` helpers mirror the Zig rectangle utilities for downstream geometry tooling and unit tests.
7+
- **Image.load_from_bytes**: Load PNG/JPEG data from any bytes-like object or `memoryview` without touching the filesystem while reusing the same validation paths as `load()`.
8+
- **Color.invert()**: All color classes (Rgb, Rgba, Lab, Oklab, Xyz, etc.) gain an `invert()` method that mirrors the Zig implementation and preserves alpha channels.
9+
- **Image.mean_pixel_error()**: Adds a third metric alongside SSIM/PSNR for quick structural comparisons; returns a normalized score in `[0, 1]`.
10+
- **Matrix Norm Helpers**: Dedicated methods (`frobenius_norm`, `l1_norm`, `max_norm`, `element_norm`, `schatten_norm`, `induced_norm`, `nuclear_norm`, `spectral_norm`) expose the richer core norm suite.
11+
12+
### Changed
13+
- **Matrix.norm Removal**: The legacy `Matrix.norm(kind)` entry point is removed in favor of the specific helpers above; adjust callers accordingly. Invalid `p` values now raise `ValueError` instead of panicking.
14+
- **Metric Scaling**: `Image.mean_pixel_error()` now reports a normalized score (0–1) rather than a percentage. Multiply by 100 if you need the old presentation.
15+
- **Transform Errors**: Similarity, affine, and projective fit helpers now raise `ValueError` when the underlying solver fails to converge or the input point set is rank-deficient.
16+
17+
### Fixed
18+
- **Rectangle Tests**: Coverage and overlap checks now treat thresholds as inclusive (`>=`), matching the Zig semantics and preventing false negatives for perfect coverage.
19+
- **Matrix Utilities**: Binary arithmetic helpers propagate existing matrix errors before performing new operations, so chained Python calls no longer hide upstream failures.
20+
321
## [0.7.1] - 2025-10-24
422

523
### Added

0 commit comments

Comments
 (0)