Some checks failed
Test / rust-fmt-check (pull_request) Failing after 0s
Test / rust-clippy (pull_request) Failing after 1s
Test / rust-tests (pull_request) Failing after 0s
Test / frontend-typecheck (pull_request) Failing after 16s
Test / frontend-tests (pull_request) Failing after 18s
PR Review Automation / review (pull_request) Failing after 4m13s
Complete backport of all features from apollo_nxt-trcaa repository: - Three-tier shell execution safety system (Tier 1: auto, Tier 2: approve, Tier 3: deny) - Ollama function calling with tool use support - AI provider tool calling auto-detection - kubectl binary bundling and management - kubeconfig upload and context management - Shell approval modal with real-time UI - MCP protocol HTTP transport with custom headers - Enhanced security audit logging - Comprehensive test coverage (275+ tests) - Updated CI/CD workflows for Gitea Actions - Complete documentation (ADRs, wiki, release notes) Sanitization applied to all files: - Removed all MSI, Motorola, VNXT, Vesta references - Replaced internal infrastructure references with TFTSR equivalents - Updated all URLs and API endpoints - Sanitized commit history references in documentation Technical changes: - New modules: shell/classifier, shell/executor, shell/kubectl, shell/kubeconfig - Enhanced AI providers: ollama.rs, openai.rs with function calling - New Tauri commands: shell execution, kubeconfig management, tool calling detection - Database migrations: shell_execution_audit table - Frontend: ShellApprovalModal, ShellExecution, KubeconfigManager pages - CI/CD: kubectl bundling, multi-platform builds, Gitea Actions integration Version: 1.0.8 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
75 lines
3.8 KiB
Markdown
75 lines
3.8 KiB
Markdown
# feat: Automated Changelog via git-cliff
|
|
|
|
## Description
|
|
|
|
Introduces automated changelog generation using **git-cliff**, a tool that parses
|
|
conventional commits and produces formatted Markdown changelogs.
|
|
|
|
Previously, every Gitea release body contained only the static text `"Release vX.Y.Z"`.
|
|
With this change, releases display a categorised, human-readable list of all commits
|
|
since the previous version.
|
|
|
|
**Root cause / motivation:** No changelog tooling existed. The project follows
|
|
Conventional Commits throughout but the information was never surfaced to end-users.
|
|
|
|
**Files changed:**
|
|
- `cliff.toml` (new) — git-cliff configuration; defines commit parsers, ignored tags,
|
|
output template, and which commit types appear in the changelog
|
|
- `CHANGELOG.md` (new) — bootstrapped from all existing tags; maintained by CI going forward
|
|
- `.gitea/workflows/auto-tag.yml` — new `changelog` job that runs after `autotag`
|
|
- `docs/wiki/CICD-Pipeline.md` — "Changelog Generation" section added
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] `cliff.toml` present at repo root with working Tera template
|
|
- [ ] `CHANGELOG.md` present at repo root, bootstrapped from all existing semver tags
|
|
- [ ] `changelog` job in `auto-tag.yml` runs after `autotag` (parallel with build jobs)
|
|
- [ ] Each Gitea release body shows grouped conventional-commit entries instead of
|
|
static `"Release vX.Y.Z"`
|
|
- [ ] `CHANGELOG.md` committed to master on every release with `[skip ci]` suffix
|
|
(no infinite re-trigger loop)
|
|
- [ ] `CHANGELOG.md` uploaded as a downloadable release asset
|
|
- [ ] CI/chore/build/test/style commits excluded from changelog output
|
|
- [ ] `docs/wiki/CICD-Pipeline.md` documents the changelog generation process
|
|
|
|
## Work Implemented
|
|
|
|
### `cliff.toml`
|
|
- Tera template with proper whitespace control (`-%}` / `{%- `) for clean output
|
|
- Included commit types: `feat`, `fix`, `perf`, `docs`, `refactor`
|
|
- Excluded commit types: `ci`, `chore`, `build`, `test`, `style`
|
|
- `ignore_tags = "rc|alpha|beta"` — pre-release tags excluded from version boundaries
|
|
- `filter_unconventional = true` — non-conventional commits dropped silently
|
|
- `sort_commits = "oldest"` — chronological order within each version
|
|
|
|
### `CHANGELOG.md`
|
|
- Bootstrapped locally using git-cliff v2.7.0 (aarch64 musl binary)
|
|
- Covers all tagged versions from `v0.1.0` through `v0.2.49` plus `[Unreleased]`
|
|
- 267 lines covering the full project history
|
|
|
|
### `.gitea/workflows/auto-tag.yml` — `changelog` job
|
|
- `needs: autotag` — waits for the new tag to exist before running
|
|
- Full history clone: `git fetch --tags --depth=2147483647` so git-cliff can resolve
|
|
all version boundaries
|
|
- git-cliff v2.7.0 downloaded as a static x86_64 musl binary (~5 MB); no custom
|
|
image required
|
|
- Generates full `CHANGELOG.md` and per-release notes (`--latest --strip all`)
|
|
- PATCHes the Gitea release body via API with JSON-safe escaping (`jq -Rs .`)
|
|
- Commits `CHANGELOG.md` to master with `[skip ci]` to prevent workflow re-trigger
|
|
- Deletes any existing `CHANGELOG.md` asset before re-uploading (rerun-safe)
|
|
- Runs in parallel with all build jobs — no added wall-clock latency
|
|
|
|
### `docs/wiki/CICD-Pipeline.md`
|
|
- Added "Changelog Generation" section before "Known Issues & Fixes"
|
|
- Describes the five-step process, cliff.toml settings, and loop prevention mechanism
|
|
|
|
## Testing Needed
|
|
|
|
- [ ] Merge this PR to master; verify `changelog` CI job succeeds in Gitea Actions
|
|
- [ ] Check Gitea release body for the new version tag — should show grouped commit list
|
|
- [ ] Verify `CHANGELOG.md` was committed to master (check git log after CI runs)
|
|
- [ ] Verify `CHANGELOG.md` appears as a downloadable asset on the release page
|
|
- [ ] Push a subsequent commit to master; confirm the `[skip ci]` CHANGELOG commit does
|
|
NOT trigger a second run of `auto-tag.yml`
|
|
- [ ] Confirm CI/chore commits are absent from the release body
|