Repository navigation
v1.9.0 — Gamut volume accuracy + degenerate warning
Profile Statistics: more accurate gamut volume, reliability warning, and a leaner Analysis tab
Gamut volume — accuracy rework
- The device-cube boundary is now sampled over all facets, so CMYK and higher-ink (N≥4) gamuts are no longer under-captured (the old 2-skeleton missed the interior of the 3-D faces).
- Dilation and erosion are now a matched morphological closing (cube dilate + 26-neighbour erode), removing the previous ~9% convex-corner over-estimate.
Note — reported gamut volumes change. Because the corner over-count is gone, volumes drop at the default resolution — e.g. sRGB (A2B1, voxelSize 2.0) goes 805,728 → ~735,816 ΔE*ab³. This is the accuracy fix, not a regression; the numbers are now dilate-stable and converge as resolution increases.
New: degenerate-gamut warning
When a gamut boundary collapses or comes back mostly undefined, the Analysis panel now shows a ⚠ warning and flags that intent's volume as unreliable instead of printing a misleading tiny number.
Removed: L* tone-reversal analysis
The L* tone-reversal chart has been retired from the Analysis tab.
Under the hood
- Untrusted-input hardening of the gamut-volume and B2A round-trip paths (bounded allocations/loops, overflow-safe indexing).
- Neutral-axis inking reuses IccProfLib's CIELAB↔XYZ conversion.
- All WASM modules rebuilt against clean iccDEV master.