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>
3.8 KiB
3.8 KiB
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 changelogCHANGELOG.md(new) — bootstrapped from all existing tags; maintained by CI going forward.gitea/workflows/auto-tag.yml— newchangelogjob that runs afterautotagdocs/wiki/CICD-Pipeline.md— "Changelog Generation" section added
Acceptance Criteria
cliff.tomlpresent at repo root with working Tera templateCHANGELOG.mdpresent at repo root, bootstrapped from all existing semver tagschangelogjob inauto-tag.ymlruns afterautotag(parallel with build jobs)- Each Gitea release body shows grouped conventional-commit entries instead of
static
"Release vX.Y.Z" CHANGELOG.mdcommitted to master on every release with[skip ci]suffix (no infinite re-trigger loop)CHANGELOG.mduploaded as a downloadable release asset- CI/chore/build/test/style commits excluded from changelog output
docs/wiki/CICD-Pipeline.mddocuments 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 boundariesfilter_unconventional = true— non-conventional commits dropped silentlysort_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.0throughv0.2.49plus[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=2147483647so 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.mdand per-release notes (--latest --strip all) - PATCHes the Gitea release body via API with JSON-safe escaping (
jq -Rs .) - Commits
CHANGELOG.mdto master with[skip ci]to prevent workflow re-trigger - Deletes any existing
CHANGELOG.mdasset 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
changelogCI job succeeds in Gitea Actions - Check Gitea release body for the new version tag — should show grouped commit list
- Verify
CHANGELOG.mdwas committed to master (check git log after CI runs) - Verify
CHANGELOG.mdappears 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 ofauto-tag.yml - Confirm CI/chore commits are absent from the release body