rayfish 0.1.4

P2P mesh VPN powered by iroh — connect peers by cryptographic identity, not IP address
# git-cliff configuration — generates grouped release notes from the
# conventional commit messages (feat/fix/docs/style/ci/…). Used by
# .github/workflows/release.yml (changelog for the tagged release) and
# nightly.yml (commits since the last stable tag). See https://git-cliff.org.

[changelog]
# No header — the workflow feeds the rendered body straight into the GitHub
# release body, which already carries the version as its title.
header = ""
# One release section: grouped commit list, then a compare link to the prior tag.
body = """
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | striptags | trim | upper_first }}
{% for commit in commits %}
- {% if commit.scope %}**{{ commit.scope }}**: {% endif %}{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}
{% if version and previous and previous.version %}
**Full Changelog**: https://github.com/rayfish/rayfish/compare/{{ previous.version }}...{{ version }}
{% endif %}
"""
trim = true
footer = ""

[git]
conventional_commits = true
# Keep non-conventional commits too, grouped under "Other", so nothing is lost.
filter_unconventional = false
filter_commits = false
protect_breaking_commits = true
# Only `vX.Y.Z` tags are release boundaries — the rolling `nightly` tag and
# unrelated tags like `ray-proto-vX.Y.Z` are ignored, so `--unreleased` means
# "commits since the last stable". Anchored at `^` so a tag merely *containing*
# `vX.Y.Z` (e.g. `ray-proto-v0.1.1`) is not mistaken for a release boundary.
tag_pattern = "^v[0-9].*"
topo_order = false
sort_commits = "newest"
# The numeric HTML-comment prefix orders groups; the template strips it.
commit_parsers = [
  { message = "^feat", group = "<!-- 0 -->Features" },
  { message = "^fix", group = "<!-- 1 -->Bug Fixes" },
  { message = "^perf", group = "<!-- 2 -->Performance" },
  { message = "^refactor", group = "<!-- 3 -->Refactor" },
  { message = "^doc", group = "<!-- 4 -->Documentation" },
  { message = "^style", group = "<!-- 5 -->Styling" },
  { message = "^test", group = "<!-- 6 -->Testing" },
  { message = "^ci", group = "<!-- 7 -->CI" },
  { message = "^build", group = "<!-- 8 -->Build" },
  { message = "^chore\\(release\\)", skip = true },
  { message = "^chore\\(deps\\)", skip = true },
  { message = "^chore", group = "<!-- 9 -->Miscellaneous" },
  { message = ".*", group = "<!-- 99 -->Other" },
]