--- since: 1.1.1 --- ## Release Title **gitaiflow v1.1.0 — Versioned installs, mandatory AI config, and automated release tagging** ## 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.env` with four required keys: `AI_PROVIDER`, `AI_API_KEY`, `AI_BASE_URL`, and `AI_MODEL`. You must populate these before gitaiflow can call any AI service. - **The `--print-commit` flag 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. The `diff/` directory remains day-level for same-day reuse. The `--last-summary` flag 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)**: ```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.0 ``` **Windows (PowerShell as Administrator)**: ```powershell # latest irm https://install.djangoplay.org/gitaiflow.ps1 | iex # specific version $env:GITAIFLOW_VERSION = "v1.1.0"; irm https://install.djangoplay.org/gitaiflow.ps1 | iex ``` Direct binary downloads for macOS (Apple Silicon), Linux (x86_64/arm64), and Windows are attached to this release. #### Full Changelog See [CHANGELOG.md](../changelog/CHANGELOG.md) for the complete list of additions, fixes, and test coverage.