# Changelog
`moonlight-triangulation` follows the
[Haskell Package Versioning Policy](https://pvp.haskell.org).
The serialization format carries its own version tag, independent of the package
version; any change to it is recorded here explicitly.
## 1.2.0.0
* Add exact rational planar regions and labelled common refinement with one
provenance-bearing overlay carrier, closed 0-/1-/2-cell Boolean selection,
and grouped polygon publication through the existing DCEL boundary owner.
* Add exact Euler characteristic and rational area plus symbolic radical length
expressions with certified outward-rounded binary64 bounds.
* Add linear convex-polygon Minkowski convolution, general polygonal addition,
and regularized polygonal erosion, opening, closing, offset, and inset through
the existing CDT and overlay owners.
* Curate the exact region algebra through the main Haskell facade. The C ABI and
language bindings remain intentionally unchanged.
* Change the binary wire format to version 6 so round trips preserve the vertex
payload plane's optional fill, including the allocation-free unit payload
used by geometry-only bulk construction. Version 5 is intentionally
unsupported rather than decoded into a different resident representation.
* Map the dense-storage circle-sweep obstruction exhaustively at the C boundary
as obstruction code 55.
## 1.1.0.0
* Add labelled bounded-face components and authoritative component boundaries
with counter-clockwise outer loops, clockwise holes, exact collinear-vertex
simplification, and typed pinch obstructions.
* Add exact Delaunay 2-simplex alpha filtration through
`alphaShapeContainsFace` and the shared admitted `RadiusSquared` type.
* Replace `joinSeparatedConstrainedWith` with
`joinSeparatedConstrained`; strict separation cannot combine coincident
annotations, so the dead combiner and old name are gone.
* Change the binary wire format to version 5. Structural section counts now
occupy one prefix and `decodeTriangulation` requires an explicit
`DecodingBudget` plus `TrustedPayloadDecoders`, validating counts,
relationships, packed-index bounds, a fixed-body lower bound, and total
section elements before allocation while making external decoder trust
explicit. Version 4 is intentionally unsupported.
## 1.0.1.0
* Add the geometry-only `delaunayGeometry` entrance and re-export
`delaunayFromCoordinates` with its duplicate-payload policy from the main
facade.
* Add one versioned C ABI over immutable geometry meshes, with typed
obstruction witnesses and thin Python, TypeScript, and Rust bindings.
## 1.0.0.0
* Specialize the public geometry surface to binary64 and remove the ornamental
scalar parameter from points, queries, triangulations, sessions, hierarchy
hints, interpolation workspaces, and result types.
* Add dense coordinate and inner-face vertex projections to the existing DCEL
surface.
* Add exact support relations and finite-set operations over triangulations,
with local publication for sparse differences, intersections, and symmetric
differences.
* Schedule singleton insertion and constrained extension between dense and
locality-preserving transactions from measured workload evidence.
* Resolve dense coordinate-removal batches through one mutable identity index,
retaining geometric descent for sparse removals.
* Strengthen constrained extension, refinement, serialization, algebra, and
hostile-boundary validation.
## 0.1.0.0
* Initial release.