From 7957492024d0488a44285c9e3c91f075978816a5 Mon Sep 17 00:00:00 2001 From: Horde Date: Mon, 31 Aug 2026 15:00:13 +0000 Subject: [PATCH 1/2] Prepare 2.6.3 release: set version to 2.6.3 Drop the .dev4 suffix from the package version in pyproject.toml so that pushing the 2.6.3 tag publishes a final release to PyPI. The latest feature PRs (libigl bump + new bindings) will be merged into main and incorporated here before tagging. Co-Authored-By: Claude Opus 4.8 (1M context) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 146efdba..b0cc59c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ build-backend = "scikit_build_core.build" [project] name = "libigl" -version = "2.6.3.dev5" +version = "2.6.3" description = "libigl: A simple C++ geometry processing library" readme = "README.md" requires-python = ">=3.8" From 70df1803aa95c9ae64f308b8a99c75d450495961 Mon Sep 17 00:00:00 2001 From: Horde Date: Mon, 31 Aug 2026 17:13:55 +0000 Subject: [PATCH 2/2] Add CHANGELOG and auto-generate GitHub release notes Introduce CHANGELOG.md documenting the 2.6.3 release (folding in the tag-less interim 2.6.2 changes, i.e. everything since the last tagged release 2.6.1) and recording the new release process. This addresses the long-standing request for a changelog (#235). Also set generateReleaseNotes: true on the release-action step so each GitHub Release body is auto-populated with the merged PRs since the previous tag, instead of being empty. The curated highlights live in CHANGELOG.md. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/wheels.yml | 3 ++ CHANGELOG.md | 70 ++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 CHANGELOG.md diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 26d87710..200fb9d3 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -171,6 +171,9 @@ jobs: name: ${{ needs.check_version.outputs.version }} prerelease: ${{ needs.check_version.outputs.prerelease }} allowUpdates: true + # Auto-populate the release body with the merged PRs since the + # previous tag (curated highlights live in CHANGELOG.md). + generateReleaseNotes: true artifacts: "./artifacts/**/*" token: ${{ secrets.GITHUB_TOKEN }} - name: Publish to PyPI diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..0fe4e836 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,70 @@ +# Changelog + +All notable, user-facing changes to the `libigl` Python bindings are recorded +here. The project loosely follows [Semantic Versioning](https://semver.org) and +version numbers match the [PyPI releases](https://pypi.org/project/libigl/#history). + +> Historical note: releases up to and including 2.6.2 were published to PyPI +> without matching git tags or GitHub releases (see #235). Starting with 2.6.3, +> pushing a version bump to `main` automatically creates the git tag, the GitHub +> release, and the PyPI upload together (#313). The 2.6.3 section below therefore +> folds in changes first shipped in the tag-less interim 2.6.2 release, i.e. it +> covers everything since the last tagged release, 2.6.1. + +## 2.6.3 — 2026-08-31 + +### Added + +New function bindings: + +- **Distances & closest points:** `simplex_simplex_squared_distance`, + `point_simplex_squared_distance`, `offset_surface`. +- **Rotations / ARAP:** `polar_svd3x3`, `fit_rotations`. +- **Quad meshes:** `quad_planarity`, `planarize_quad_mesh`, `quad_edges`. +- **Curves & mesh topology:** `ramer_douglas_peucker`, `path_to_edges`, + `connect_boundary_to_infinity`, `smooth_corner_adjacency`, + `per_face_normals_stable`, `resolve_duplicated_faces`, `vertex_components`, + `is_vertex_manifold`, `is_intrinsic_delaunay`. +- **Remeshing:** `triangle.remesh_at_points`. +- **Winding numbers & distance fields:** `swept_volume`, + `swept_volume_bounding_box`, `swept_volume_signed_distance`, + point-cloud and pre-built-tree support for `fast_winding_number`, + `lipschitz_octree`, `unique_sparse_voxel_corners`, and an edge→vertex (`E2V`) + output for sparse `marching_cubes`. +- **Ambient occlusion:** core `ambient_occlusion` binding. +- **Solvers & energies:** `active_set`, `boundary_conditions`, + `harmonic_integrated_from_laplacian_and_mass`, Hessian and Hessian-energy + operators, and cross-field bindings. +- **Bounding boxes:** oriented-bounding-box functions, `bounding_box_diagonal`. +- **Curves & predicates:** cubic Bézier evaluation and roots, additional + `igl::predicates` bindings, `igl::spectra` bindings, and + `lexicographic_triangulation`. +- **Misc:** `centroid`, a `face_areas` overload taking intrinsic edge lengths, + and an optional `seed` parameter for `random_points_on_mesh`. + +### Changed + +- Bumped the bundled libigl to + [`f68f01c2`](https://github.com/libigl/libigl/commit/f68f01c23ac82351e2543ce8c529b6d4c89fdf16). +- `cycodebase` distance queries can now reuse a prebuilt AABB tree / precomputed + bases for fast repeated queries. +- Releases are now cut by pushing a version bump to `main`, which tags the + commit and creates the GitHub release and PyPI upload in one step (#313). + +### Packaging / CI + +- Added CPython 3.13 wheels. +- Switched the Linux CI builds to Clang to fix a 2.6.1 performance regression. +- Bumped `pypa/gh-action-pypi-publish` to 1.13.0. + +## 2.6.2 — PyPI only + +Interim release published to PyPI on 2025 without a git tag or GitHub release. +Its changes are folded into the 2.6.3 entry above. + +## 2.6.1 — 2025-05-15 + +Last release before this changelog was introduced. See the +[git history](https://github.com/libigl/libigl-python-bindings/commits/2.6.1) +and the [PyPI release history](https://pypi.org/project/libigl/#history) for +earlier changes.