ci: update git-cliff config, fix release-drafter changelog

This commit is contained in:
Peter Feerick
2026-02-24 02:29:23 +00:00
parent 6beef56416
commit c76d9aa64b
2 changed files with 198 additions and 21 deletions
+8 -6
View File
@@ -86,7 +86,7 @@ jobs:
fi fi
# Generate the changelog using the explicit range # Generate the changelog using the explicit range
git-cliff $RANGE --tag "${{ inputs.tag }}" --strip all --output CHANGELOG.md git-cliff $RANGE --strip all --output CHANGELOG.md
# Get unique contributors from the same commit range # Get unique contributors from the same commit range
CONTRIBUTORS=$(git log --format='%aN' $CONTRIB_RANGE 2>/dev/null | sort -u | sed 's/^/- /' || echo "") CONTRIBUTORS=$(git log --format='%aN' $CONTRIB_RANGE 2>/dev/null | sort -u | sed 's/^/- /' || echo "")
@@ -168,7 +168,7 @@ jobs:
body: | body: |
We are pleased to offer EdgeTX "${{ steps.version.outputs.codename }}" ${{ steps.version.outputs.version }}. We are pleased to offer EdgeTX "${{ steps.version.outputs.codename }}" ${{ steps.version.outputs.version }}.
${{ (contains(needs.check-tag.outputs.tag_name, '-rc') || contains(needs.check-tag.outputs.tag_name, '-beta') || contains(needs.check-tag.outputs.tag_name, '-alpha')) && '> [!WARNING] ${{ (contains(inputs.tag, '-rc') || contains(inputs.tag, '-beta') || contains(inputs.tag, '-alpha')) && '> [!WARNING]
> As this is a pre-release, it is virtually guaranteed there will still be some minor issues that need resolving before final release - some may be documented already under "known issues" section of these release notes or the associated tracking issue. During pre-releases, the matching SD card pack and voice pack versions to use are those marked/tagged ''Latest''. > As this is a pre-release, it is virtually guaranteed there will still be some minor issues that need resolving before final release - some may be documented already under "known issues" section of these release notes or the associated tracking issue. During pre-releases, the matching SD card pack and voice pack versions to use are those marked/tagged ''Latest''.
> >
> We **need** _your_ help in testing this release to ensure there are no major bugs or faults that will cause problems during flight. Please ensure you back up your model and radio settings before updating, fully bench-test your models after updating, and report any issues you encounter. It is only with your feedback and testing by you, our community (and the assistance provided by partner manufacturers) which will allow us to identify and squash both new and old bugs, and progress onto a stable release version!! We simply cannot do this without you! :hugs: :beers:' || '' }} > We **need** _your_ help in testing this release to ensure there are no major bugs or faults that will cause problems during flight. Please ensure you back up your model and radio settings before updating, fully bench-test your models after updating, and report any issues you encounter. It is only with your feedback and testing by you, our community (and the assistance provided by partner manufacturers) which will allow us to identify and squash both new and old bugs, and progress onto a stable release version!! We simply cannot do this without you! :hugs: :beers:' || '' }}
@@ -189,6 +189,10 @@ jobs:
> >
> See the [EdgeTX Manual](https://manual.edgetx.org/installing-and-updating-edgetx) for more information. > See the [EdgeTX Manual](https://manual.edgetx.org/installing-and-updating-edgetx) for more information.
## Changes
${{ steps.changelog.outputs.changelog }}
## Supported radios ## Supported radios
The full list of supported radios and their support status can be viewed [here on the EdgeTX website](https://edgetx.org/supportedradios). The full list of supported radios and their support status can be viewed [here on the EdgeTX website](https://edgetx.org/supportedradios).
@@ -202,11 +206,9 @@ jobs:
[CloudBuild option in EdgeTX Buddy](https://buddy.edgetx.org/) will allow you build your own (supported) language firmware, with just a few clicks. Additionally, EdgeTX Companion also has some support for CloudBuild, and will automatically fetch firmware for a supported language when you use the "Update components" option. But you can also build your own firmware online [following this guide](https://github.com/EdgeTX/edgetx/wiki/Building-radio-firmware-in-a-web-browser-with-GitHub-CodeSpaces), request a specific build at TODO or ask on Discord for someone to build one for you. [CloudBuild option in EdgeTX Buddy](https://buddy.edgetx.org/) will allow you build your own (supported) language firmware, with just a few clicks. Additionally, EdgeTX Companion also has some support for CloudBuild, and will automatically fetch firmware for a supported language when you use the "Update components" option. But you can also build your own firmware online [following this guide](https://github.com/EdgeTX/edgetx/wiki/Building-radio-firmware-in-a-web-browser-with-GitHub-CodeSpaces), request a specific build at TODO or ask on Discord for someone to build one for you.
## Known Limitations and Issues ## Known Limitations and Issues
${{ (contains(inputs.tag, '-rc') || contains(inputs.tag, '-beta') || contains(inputs.tag, '-alpha')) && '> [!WARNING]
- Please check TODO during the release candidate phase for any other release candidate-specific issues and status of fixes.' || '' }}
## UI/UX behavioral changes and/or new capabilities: ## UI/UX behavioral changes and/or new capabilities:
## Changes
${{ steps.build_changelog.outputs.changelog }}
files: release-assets/*.zip files: release-assets/*.zip
fail_on_unmatched_files: true fail_on_unmatched_files: true
+190 -15
View File
@@ -4,11 +4,196 @@
[changelog] [changelog]
header = "" header = ""
body = """ body = """
{% for group, commits in commits | group_by(attribute="group") %} {% for group, commits in commits | group_by(attribute="group") -%}
{% if group == "🚀 Features" -%}
### {{ group }} ### {{ group }}
{% for commit in commits -%} {% set commits_by_scope = commits | group_by(attribute="scope") -%}
{% if commits_by_scope.firmware is defined or commits_by_scope.fw is defined -%}
#### 🎮 Firmware
{% if commits_by_scope.firmware is defined -%}{% for commit in commits_by_scope.firmware -%}
- {{ commit.message | split(pat="\\n") | first | trim }} - {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor %} {% endfor -%}{% endif -%}
{% if commits_by_scope.fw is defined -%}{% for commit in commits_by_scope.fw -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% if commits_by_scope.bw is defined -%}
#### 🖥️ Black & White Radio
{% for commit in commits_by_scope.bw -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}
{% endif -%}
{% if commits_by_scope.color is defined or commits_by_scope.colour is defined -%}
#### 🎨 Color LCD Radio
{% if commits_by_scope.color is defined -%}{% for commit in commits_by_scope.color -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.colour is defined -%}{% for commit in commits_by_scope.colour -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% if commits_by_scope.cpn is defined or commits_by_scope.companion is defined -%}
#### 💻 Companion
{% if commits_by_scope.cpn is defined -%}{% for commit in commits_by_scope.cpn -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.companion is defined -%}{% for commit in commits_by_scope.companion -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% set_global has_other = false -%}
{% for commit in commits -%}{% if commit.scope != "firmware" and commit.scope != "fw" and commit.scope != "bw" and commit.scope != "color" and commit.scope != "colour" and commit.scope != "cpn" and commit.scope != "companion" -%}{% set_global has_other = true -%}{% endif -%}{% endfor -%}
{% if has_other -%}
#### 📦 Other
{% for commit in commits -%}{% if commit.scope != "firmware" and commit.scope != "fw" and commit.scope != "bw" and commit.scope != "color" and commit.scope != "colour" and commit.scope != "cpn" and commit.scope != "companion" -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endif -%}{% endfor -%}
{% endif -%}
{% endif -%}
{% endfor -%}
{% for group, commits in commits | group_by(attribute="group") -%}
{% if group == "🐛 Bug Fixes" -%}
### {{ group }}
{% set commits_by_scope = commits | group_by(attribute="scope") -%}
{% if commits_by_scope.firmware is defined or commits_by_scope.fw is defined -%}
#### 🎮 Firmware
{% if commits_by_scope.firmware is defined -%}{% for commit in commits_by_scope.firmware -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.fw is defined -%}{% for commit in commits_by_scope.fw -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% if commits_by_scope.bw is defined -%}
#### 🖥️ Black & White Radio
{% for commit in commits_by_scope.bw -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}
{% endif -%}
{% if commits_by_scope.color is defined or commits_by_scope.colour is defined -%}
#### 🎨 Color LCD Radio
{% if commits_by_scope.color is defined -%}{% for commit in commits_by_scope.color -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.colour is defined -%}{% for commit in commits_by_scope.colour -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% if commits_by_scope.cpn is defined or commits_by_scope.companion is defined -%}
#### 💻 Companion
{% if commits_by_scope.cpn is defined -%}{% for commit in commits_by_scope.cpn -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.companion is defined -%}{% for commit in commits_by_scope.companion -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% set_global has_other = false -%}
{% for commit in commits -%}{% if commit.scope != "firmware" and commit.scope != "fw" and commit.scope != "bw" and commit.scope != "color" and commit.scope != "colour" and commit.scope != "cpn" and commit.scope != "companion" -%}{% set_global has_other = true -%}{% endif -%}{% endfor -%}
{% if has_other -%}
#### 📦 Other
{% for commit in commits -%}{% if commit.scope != "firmware" and commit.scope != "fw" and commit.scope != "bw" and commit.scope != "color" and commit.scope != "colour" and commit.scope != "cpn" and commit.scope != "companion" -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endif -%}{% endfor -%}
{% endif -%}
{% endif -%}
{% endfor -%}
{% for group, commits in commits | group_by(attribute="group") -%}
{% if group != "🚀 Features" and group != "🐛 Bug Fixes" and group != "📦 Other" -%}
### {{ group }}
{% set commits_by_scope = commits | group_by(attribute="scope") -%}
{% if commits_by_scope.firmware is defined or commits_by_scope.fw is defined -%}
#### 🎮 Firmware
{% if commits_by_scope.firmware is defined -%}{% for commit in commits_by_scope.firmware -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.fw is defined -%}{% for commit in commits_by_scope.fw -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% if commits_by_scope.bw is defined -%}
#### 🖥️ Black & White Radio
{% for commit in commits_by_scope.bw -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}
{% endif -%}
{% if commits_by_scope.color is defined or commits_by_scope.colour is defined -%}
#### 🎨 Color LCD Radio
{% if commits_by_scope.color is defined -%}{% for commit in commits_by_scope.color -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.colour is defined -%}{% for commit in commits_by_scope.colour -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% if commits_by_scope.cpn is defined or commits_by_scope.companion is defined -%}
#### 💻 Companion
{% if commits_by_scope.cpn is defined -%}{% for commit in commits_by_scope.cpn -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.companion is defined -%}{% for commit in commits_by_scope.companion -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% set_global has_other = false -%}
{% for commit in commits -%}{% if commit.scope != "firmware" and commit.scope != "fw" and commit.scope != "bw" and commit.scope != "color" and commit.scope != "colour" and commit.scope != "cpn" and commit.scope != "companion" -%}{% set_global has_other = true -%}{% endif -%}{% endfor -%}
{% if has_other -%}
#### 📦 Other
{% for commit in commits -%}{% if commit.scope != "firmware" and commit.scope != "fw" and commit.scope != "bw" and commit.scope != "color" and commit.scope != "colour" and commit.scope != "cpn" and commit.scope != "companion" -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endif -%}{% endfor -%}
{% endif -%}
{% endif -%}
{% endfor -%}
{% for group, commits in commits | group_by(attribute="group") -%}
{% if group == "📦 Other" -%}
### {{ group }}
{% set commits_by_scope = commits | group_by(attribute="scope") -%}
{% if commits_by_scope.firmware is defined or commits_by_scope.fw is defined -%}
#### 🎮 Firmware
{% if commits_by_scope.firmware is defined -%}{% for commit in commits_by_scope.firmware -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.fw is defined -%}{% for commit in commits_by_scope.fw -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% if commits_by_scope.bw is defined -%}
#### 🖥️ Black & White Radio
{% for commit in commits_by_scope.bw -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}
{% endif -%}
{% if commits_by_scope.color is defined or commits_by_scope.colour is defined -%}
#### 🎨 Color LCD Radio
{% if commits_by_scope.color is defined -%}{% for commit in commits_by_scope.color -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.colour is defined -%}{% for commit in commits_by_scope.colour -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% if commits_by_scope.cpn is defined or commits_by_scope.companion is defined -%}
#### 💻 Companion
{% if commits_by_scope.cpn is defined -%}{% for commit in commits_by_scope.cpn -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% if commits_by_scope.companion is defined -%}{% for commit in commits_by_scope.companion -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endfor -%}{% endif -%}
{% endif -%}
{% set_global has_other = false -%}
{% for commit in commits -%}{% if commit.scope != "firmware" and commit.scope != "fw" and commit.scope != "bw" and commit.scope != "color" and commit.scope != "colour" and commit.scope != "cpn" and commit.scope != "companion" -%}{% set_global has_other = true -%}{% endif -%}{% endfor -%}
{% if has_other -%}
#### 📦 Other
{% for commit in commits -%}{% if commit.scope != "firmware" and commit.scope != "fw" and commit.scope != "bw" and commit.scope != "color" and commit.scope != "colour" and commit.scope != "cpn" and commit.scope != "companion" -%}
- {{ commit.message | split(pat="\\n") | first | trim }}
{% endif -%}{% endfor -%}
{% endif -%}
{% endif -%}
{% endfor -%} {% endfor -%}
""" """
trim = true trim = true
@@ -31,19 +216,9 @@ sort_commits = "oldest"
# Commit parsers - order matters! More specific patterns first # Commit parsers - order matters! More specific patterns first
commit_parsers = [ commit_parsers = [
# Scope-based categorization (highest priority) # Type-based categorization (top-level headings)
{ message = "^feat\\(bw\\)", group = "🖥️ Black & White Radio Changes" },
{ message = "^fix\\(bw\\)", group = "🖥️ Black & White Radio Changes" },
{ message = "^feat\\(color\\)", group = "🎨 Color Radio Changes" },
{ message = "^fix\\(color\\)", group = "🎨 Color Radio Changes" },
{ message = "^feat\\((firmware|fw)\\)", group = "🎮 Firmware (All Radios Generally)" },
{ message = "^fix\\((firmware|fw)\\)", group = "🎮 Firmware (All Radios Generally)" },
{ message = "^feat\\(cpn\\)", group = "💻 Companion Software Changes" },
{ message = "^fix\\(cpn\\)", group = "💻 Companion Software Changes" },
# Type-based categorization (fallback)
{ message = "^feat", group = "🚀 Features" }, { message = "^feat", group = "🚀 Features" },
{ message = "^fix", group = "🐛 Fixes" }, { message = "^fix", group = "🐛 Bug Fixes" },
{ message = "^docs?", group = "📝 Documentation" }, { message = "^docs?", group = "📝 Documentation" },
{ message = "^perf", group = "⚡ Performance" }, { message = "^perf", group = "⚡ Performance" },
{ message = "^refactor", group = "🔨 Refactoring" }, { message = "^refactor", group = "🔨 Refactoring" },