# release-plz is configured in a safe PR-only mode for now.
#
# The workflow runs manually and calls only `release-pr`, never `release`.
# Publishing, tag creation, and GitHub Releases are disabled here as an extra
# guardrail while we evaluate the workflow.
[workspace]
allow_dirty = false
changelog_update = true
dependencies_update = false
git_release_enable = false
git_tag_enable = false
publish = false
release_always = false
# The first commit domain drives release notes. Keep this broad enough for
# module/public-type domains (`index3d:`, `views:`, `hilbert:`), while skipped
# release housekeeping domains stay out of this regex.
release_commits = "^(api|builder|builder2d|builder3d|index|index2d|index3d|2d|3d|box|boxes|box2d|box3d|bounds|bounds2d|bounds3d|point|points|point2d|point3d|geometry|config|default|defaults|error|errors|safety|unsafe|lint|lints|simd|simd2d|simd3d|simd-view|simd-views|soa|index2d_soa|index3d_soa|avx|avx2|avx512|avx-512|sse|persistence|persist|serialize|serialization|deserialize|load|loader|view|views|view2d|view3d|format|file-format|magic|bytes|buffer|zerocopy|zero-copy|knn|neighbor|neighbors|nearest|search|visitor|visit|traversal|workspace|perf|performance|parallel|radix|node|nodes|node-size|node_size|nodesize|prefetch|sort|sort2d|sort3d|sortkey|hilbert|hilbert2d|morton|encoder|encoders|encoding|bench|benches|benchmark|benchmarks|flatgeobuf|static-aabb|static_aabb|compare|comparison|test|tests|correctness|fuzz|fuzzing|refactor|layout|tree|internal|module|modules|docs|doc|readme|rustdoc|example|examples|build|ci|deps|dependency|dependencies|edition|meta|package|packaging|workflow|github|publish|tag|trusted-publishing|release-plz|msrv|rust-version|license|badges)(,|:)"
pr_branch_prefix = "release-plz-"
pr_draft = true
pr_labels = ["release"]
pr_name = "release: prepare packed_spatial_index v{{ version }}"
repo_url = "https://github.com/Filyus/packed_spatial_index"
semver_check = true
[changelog]
header = """
# Changelog
All notable changes to this crate are documented here.
## [Unreleased]
"""
body = """
## [{{ version }}]{%- if release_link -%}({{ release_link }}){% endif %} - {{ timestamp | date(format="%Y-%m-%d") }}
{%- for group, commits in commits | group_by(attribute="group") %}
### {{ group | striptags | trim }}
{%- for commit in commits %}
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}{%- if commit.links %} ({% for link in commit.links %}[{{ link.text }}]({{ link.href }}) {% endfor -%}){% endif %}
{%- endfor %}
{%- endfor %}
"""
trim = false
tag_pattern = "v[0-9].*"
sort_commits = "oldest"
protect_breaking_commits = true
commit_preprocessors = [
# Keep our `domain1, domain2: description` commit style readable in release
# notes by letting git-cliff parse it as `domain1: description`.
{ pattern = "^([A-Za-z0-9_-]+)(?:, [A-Za-z0-9_-]+)+: (.*)", replace = "${1}: ${2}" },
]
# Changelog groups use hidden HTML prefixes to keep release notes ordered by
# user impact. The template strips them before rendering.
# `build:` is reserved for Cargo/build-system work. Use `builder:` for
# Index2DBuilder/Index3DBuilder API changes.
commit_parsers = [
{ message = "^release(?:,|:)", skip = true },
{ message = "^repo(?:,|:)", skip = true },
{ message = "^changelog(?:,|:)", skip = true },
{ message = "^(api|builder|config|defaults?|errors?)(?:,|:)", group = "<!-- 00 --> API" },
{ message = "^(safety|unsafe)(?:,|:)", group = "<!-- 01 --> Safety" },
{ message = "^(2d|index2d|builder2d|sort2d|hilbert2d|box2d|bounds2d|point2d)(?:,|:)", group = "<!-- 02 --> 2D" },
{ message = "^(3d|index3d|builder3d|sort3d|box3d|bounds3d|point3d)(?:,|:)", group = "<!-- 03 --> 3D" },
{ message = "^(geometry|boxes?|bounds|points?)(?:,|:)", group = "<!-- 04 --> Geometry" },
{ message = "^(index)(?:,|:)", group = "<!-- 05 --> Indexes" },
{ message = "^(search|visitor|visit|traversal|workspace)(?:,|:)", group = "<!-- 06 --> Search" },
{ message = "^(knn|neighbors?|nearest)(?:,|:)", group = "<!-- 07 --> Nearest Neighbors" },
{ message = "^(persistence|persist|serialize|serialization|deserialize|load|loader|views?|view2d|view3d|format|file-format|magic|bytes|buffer|zerocopy|zero-copy)(?:,|:)", group = "<!-- 08 --> Persistence" },
{ message = "^(simd|simd2d|simd3d|simd-views?|soa|index2d_soa|index3d_soa|avx|avx2|avx512|avx-512|sse)(?:,|:)", group = "<!-- 09 --> SIMD" },
{ message = "^(perf|performance|parallel|radix|nodes?|node-size|node_size|nodesize|prefetch)(?:,|:)", group = "<!-- 10 --> Performance" },
{ message = "^(sort|sortkey|hilbert|morton|encoders?|encoding)(?:,|:)", group = "<!-- 11 --> Sorting and Encoding" },
{ message = "^(bench|benches|benchmarks?|flatgeobuf|static-aabb|static_aabb|compare|comparison)(?:,|:)", group = "<!-- 20 --> Benchmarks" },
{ message = "^(docs?|readme|rustdoc|examples?)(?:,|:)", group = "<!-- 90 --> Documentation" },
{ message = "^(test|tests|correctness|fuzz|fuzzing)(?:,|:)", group = "<!-- 91 --> Tests" },
{ message = "^(refactor|layout|tree|internal|modules?)(?:,|:)", group = "<!-- 92 --> Refactoring" },
{ message = "^(lint|lints)(?:,|:)", group = "<!-- 93 --> Lint" },
{ message = "^(build|ci|deps|dependencies?|edition|meta|package|packaging|workflow|github|publish|tag|trusted-publishing|release-plz|msrv|rust-version|license|badges)(?:,|:)", group = "<!-- 99 --> Build, CI, and Packaging" },
]
link_parsers = [
{ pattern = "#(\\d+)", href = "https://github.com/Filyus/packed_spatial_index/issues/$1" },
]