Release Title
gitaiflow v1.1.0 — Versioned installs, mandatory AI config, and automated release tagging
On this page ▾
Release Title
Release Details
This release restructures how gitaiflow is installed, configured, and released. Installers now fetch versioned artifacts from R2, create a mandatory global config file with your AI credentials on first run, and the release pipeline produces signed binaries, GitLab/GitHub releases, and AI-generated release notes from a single version tag.
Breaking Changes
- AI configuration is now mandatory and has no built-in defaults. The installer (or first run) creates
~/.gitaiflow/config.envwith four required keys:AI_PROVIDER,AI_API_KEY,AI_BASE_URL, andAI_MODEL. You must populate these before gitaiflow can call any AI service. - The
--print-commitflag is renamed to--change-summary. Update scripts and aliases accordingly. - Artifact storage layout has changed. Summaries and markdown outputs are now written under per-run subdirectories (
YYYY/MM/DD/HHMMSS+random/) instead of flat day-level folders. Thediff/directory remains day-level for same-day reuse. The--last-summaryflag reads the most recent run from this new layout.
Highlights
Versioned, reproducible installs
Installers (install.sh, install.ps1) accept an explicit version or GITAIFLOW_VERSION env var, resolve the latest version from R2/latest.txt, and download binaries from versioned paths (installers/vX.Y.Z/). They also create the mandatory config.env and handle sudo home directories correctly on Linux/macOS.
Automated release tagging and publishing
A new tag_release.sh script creates and pushes annotated git tags to GitLab and GitHub, then builds releases from RELEASE_NOTES.md (using ## Release Title and ## Release Draft sections) and links binaries from the GitLab package registry. The pipeline can skip tagging, release creation, or individual platforms via SKIP_TAG, SKIP_RELEASE, SKIP_GITLAB, SKIP_GITHUB.
AI-generated release notes
Run gitaiflow --release-notes to read CHANGELOG.md, call your configured AI, and emit a structured RELEASE_NOTES.md ready for the release pipeline. Set SKIP_RELEASE_NOTES=1 to bypass this step.
Per-run artifact isolation
Each invocation now writes its JSON and markdown artifacts into a unique timestamped subfolder, preventing runs from overwriting each other. --last-summary prints the latest change-summary from disk without invoking AI, and find_last_summary_run returns all groups from the most recent run only.
Comprehensive test matrix
New smoke tests exercise built installer binaries on macOS (ARM64), Linux (AMD64/ARM64), and Windows (via Wine), including quarantine and ad-hoc signing handling. The CLI test suite covers 40+ flag combinations through generate_summary.main() with mocked services, and artifact manager tests validate the new per-run partitioning and legacy fallback behavior.
Installation
macOS & Linux (bash):
# latest
curl -fsSL https://install.djangoplay.org/gitaiflow | bash
# specific version — note the -s -- before args when piping into bash
curl -fsSL https://install.djangoplay.org/gitaiflow | bash -s -- v1.1.0Windows (PowerShell as Administrator):
# latest
irm https://install.djangoplay.org/gitaiflow.ps1 | iex
# specific version
$env:GITAIFLOW_VERSION = "v1.1.0"; irm https://install.djangoplay.org/gitaiflow.ps1 | iexDirect binary downloads for macOS (Apple Silicon), Linux (x86_64/arm64), and Windows are attached to this release.
Full Changelog
See CHANGELOG.md for the complete list of additions, fixes, and test coverage.