Releases: Iron-Ham/swift-commit-gen
v0.7.0
What's New
New Features
- Noora Integration: Added Noora for enhanced terminal UI styling and progress indicators (#23)
Bug Fixes
- Git Client Improvements: Added 60-second timeout to git operations and fixed potential file descriptor leaks (#21)
- LLM Timeout Enforcement: Fixed timeout configuration that was previously not being applied (#20)
Installation
Homebrew (Recommended)
brew tap Iron-Ham/swift-commit-gen
brew install scgFrom Source
git clone https://github.com/Iron-Ham/swift-commit-gen.git
cd swift-commit-gen
swift build -c release
cp .build/release/scg /usr/local/bin/Requirements
- macOS Tahoe (26.0+)
- Apple Silicon Mac with Apple Intelligence enabled
feat: Even better commit gen (v0.6.0)
feat: better commit generation
What's Changed
- Update swift package testing CI to select xcode 26.1, only build by @Iron-Ham in #8
- Improve Commit Generation by @Iron-Ham in #12
Full Changelog: 0.4.1...0.5.0
Commit generation should be significantly improved. There are still ways to improve it further, so stay tuned!
rollback: ollama support introduced compilation error
feat: ollama and macOS 15 support
What's Changed
- Correct macOS version in prerequisites section by @kenmorse in #5
- Support for local LLM using ollama on macOS15 (ollama branch) by @manelix2000 in #6
New Contributors
- @kenmorse made their first contribution in #5
- @manelix2000 made their first contribution in #6
Full Changelog: 0.3.0...0.4.0
feat: Rename to `scg`, single-file mode
Note
This is a breaking change from previous versions, primarily because the utility has been renamed toscg. User feedback was that the naming was both verbose (swiftcommitgen is a lot to type) and that the naming emphasis on 'swift' implied that it wouldn't work for diffs of other languages (and not just that the tool is written in swift).
Breaking Changes
- Renamed the executable from
swiftcommitgentoscg; update any scripts, aliases, or CI workflows accordingly. - Moved the persisted configuration to
~/Library/Application Support/scg/config.json(or the equivalent XDG path). Copy existing settings to the new location if you relied on the oldswiftcommitgendirectory.
What's New
- Added a per-file generation mode. Invoke it ad-hoc with
scg generate --single-fileor persist it viascg config --mode per-file. - Expanded
scg configwith interactive and flag-driven controls for the default generation mode alongside existing auto-stage and verbosity settings (i.e., configure to use single file by default if you'd like). - Surfaced detailed batch diagnostics when verbose logging is enabled to make prompt budgeting easier to understand.
Upgrade Tips
- Reinstall via the updated
Scripts/install.shor Homebrew formula to receive the renamed binary. - If you maintained a previous configuration file, manually migrate it to the new
scgdirectory before runningscg config.
feat: User configuration (0.2.0)
Note
This is a breaking change from the previous version. Some flags have been removed.
What's New
CLI & Configuration
- Added
swiftcommitgen config, which launches an interactive editor when run without options, highlighting recommended defaults and current selections. - Introduced
--auto-stage-if-clean,--clear-auto-stage,--verbose,--clear-verbose,--quiet, and--clear-quietonconfigto script configuration changes. - Removed style selection flags; the CLI now generates detailed commit messages by default, eliminating redundant configuration.
- Extended generate command flags with
--no-stage,--no-verbose, and--no-quietto override stored defaults explicitly. - Improved terminal output with ANSI styling for configuration summaries and interactive prompts.
Prompting & Generation
- Standardized system prompts to respect the detailed style guidance during both primary generation and batch combination phases.
- Added batch combination prompt tests ensuring style guidance propagates correctly.
- Enhanced prompt diagnostics with clearer reporting of token estimates, file counts, and generated file handling.
Internal Improvements
- Simplified
CommitGenOptions.PromptStyleenum to a single.detailedcase for clearer defaults. - Refined dependency injection for config commands using task-local overrides, improving test stability.
- Added color-aware console theming utilities to make interactive prompts easier to scan.
- Expanded test coverage for config command scenarios, including dependency overrides and validation of verbose/quiet conflicts.
Known Issues
- Large repositories may still require manual trimming if prompt budgets exceed on-device limits; further heuristics are under evaluation.
LanguageModelSessioncontext overflow handling retries are still in progress; expect improvements in upcoming releases.
Upgrade Notes
- Users previously relying on
--styleshould note that commit drafts now adhere to the detailed style guidance by default. - Re-run
swiftcommitgen config --showto review updated defaults and leverage the new interactive editor.
Full Changelog: 0.1.1...0.2.0
feat: Volume Control (0.1.1)
What's New
CLI & Logging
- Added a
--quietflag and refined verbosity handling so routine info logs can be suppressed without hiding critical notices or warnings (Sources/SwiftCommitGen/GenerateCommand.swift,Sources/SwiftCommitGen/Core/Logger.swift). - Promoted key workflow updates to the
noticelevel and tightened prompt-diagnostics logging so verbose mode now controls all high-volume output (Sources/SwiftCommitGen/CommitGenTool.swift). - Streamlined logger styling to ensure labels only appear in verbose mode while preserving color theming and quiet-mode expectations.
Installation
- Documented Homebrew tap usage and other installation paths directly in the project documentation (
README.md).
Docs
- Expanded the README with end-to-end usage guidance, option descriptions, and verbosity examples (
README.md).
Licensing & Governance
- Adopted the MIT License for the project (
LICENSE).
Quality & Test Coverage
- Added focused unit tests covering verbose and quiet logger behavior to prevent regressions (
Tests/SwiftCommitGenTests/LoggerTests.swift,Tests/SwiftCommitGenTests/QuietLoggerTests.swift).
Compare: 0.1.0...0.1.1
First Commit: Welcome to swift-commit-gen (v0.1.0)
SwiftCommitGen reaches its first tagged release. Version 0.1.0 delivers an end-to-end workflow for generating high quality commit messages with Apple's on-device intelligence stack while keeping source code local.
Highlights
- Inspects staged and unstaged changes to build a concise diff summary.
- Drafts commit messages through Apple's on-device generative APIs, keeping data private.
- Guides you through an interactive review so you can accept, edit, or discard the proposed message.
- Offers optional staging and committing helpers to streamline the entire flow.
Installation
Homebrew (Recommended)
brew tap Iron-Ham/swift-commit-gen
brew install swiftcommitgenOr install directly without tapping:
brew install Iron-Ham/swift-commit-gen/swiftcommitgenFrom Source
- Clone the repository:
git clone https://github.com/Iron-Ham/swift-commit-gen.git cd swift-commit-gen - Use the bundled install script (defaults to
~/.local/bin):Provide an alternate destination as the first argument if necessary, for exampleScripts/install.sh
Scripts/install.sh /usr/local/bin. - Prefer manual installation instead? Build and copy the release binary yourself:
Add
swift build -c release install -d "$HOME/.local/bin" install .build/release/swiftcommitgen "$HOME/.local/bin/"
export PATH="$HOME/.local/bin:$PATH"to your shell profile if the binary directory is not already on the path.
Usage
Execute the generator from any Git repository with pending work:
swiftcommitgenAs the author, I'll say I've personally aliased it to cg.
Helpful options:
--stagedlimits analysis to staged files only.--format jsonreturns the draft message in a JSON format, along with diagnostics.--helplists every available flag.--style (summary, conventional, detailed)allows you to change the style that a commit is generated in. Defaults tosummary.
Requirements
- macOS 26 (Sequoia) or later with Apple Intelligence enabled.
- Xcode 26 toolchain with command line tools registered.
- Swift 6 compiler
- Git 2.40 or newer on the shell
PATH. - Terminal (or preferred shell) granted Full Disk Access so the FoundationModels framework can initialize.
Known Limitations
- Configuration files for tailoring prompt behavior are still on the roadmap.
- Extremely large diffs are split with token-aware batching, but exceptionally large histories can still exceed the combined context window and may require manual trimming.
- Apple Intelligence must be available on the host system; no fallback to cloud models exists.
Looking Ahead
Future updates will focus on richer prompting controls, improved diff batching, user-configuration, and custom styling instructions. Feedback, issues, and pull requests are welcome as the project evolves.