Skip to content

Releases: Iron-Ham/swift-commit-gen

v0.7.0

08 Jan 01:43
38df68e

Choose a tag to compare

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 scg

From 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)

16 Dec 17:52

Choose a tag to compare

What's Changed

Full Changelog: 0.5.0...0.6.0

feat: better commit generation

11 Dec 15:45

Choose a tag to compare

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

03 Dec 16:39
b83e897

Choose a tag to compare

What's Changed

  • Revert "Support for local LLM using ollama on macOS15 (ollama branch)" by @Iron-Ham in #7

New Contributors

Full Changelog: 0.4.0...0.4.1

feat: ollama and macOS 15 support

03 Dec 16:04
efb92b2

Choose a tag to compare

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

Full Changelog: 0.3.0...0.4.0

feat: Rename to `scg`, single-file mode

19 Oct 15:10

Choose a tag to compare

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 swiftcommitgen to scg; 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 old swiftcommitgen directory.

What's New

  • Added a per-file generation mode. Invoke it ad-hoc with scg generate --single-file or persist it via scg config --mode per-file.
  • Expanded scg config with 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.sh or Homebrew formula to receive the renamed binary.
  • If you maintained a previous configuration file, manually migrate it to the new scg directory before running scg config.

feat: User configuration (0.2.0)

18 Oct 13:35

Choose a tag to compare

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-quiet on config to 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-quiet to 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.PromptStyle enum to a single .detailed case 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.
  • LanguageModelSession context overflow handling retries are still in progress; expect improvements in upcoming releases.

Upgrade Notes

  • Users previously relying on --style should note that commit drafts now adhere to the detailed style guidance by default.
  • Re-run swiftcommitgen config --show to review updated defaults and leverage the new interactive editor.

Full Changelog: 0.1.1...0.2.0

feat: Volume Control (0.1.1)

18 Oct 02:08

Choose a tag to compare

What's New

CLI & Logging

  • Added a --quiet flag 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 notice level 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)

17 Oct 19:39

Choose a tag to compare

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 swiftcommitgen

Or install directly without tapping:

brew install Iron-Ham/swift-commit-gen/swiftcommitgen

From Source

  1. Clone the repository:
    git clone https://github.com/Iron-Ham/swift-commit-gen.git
    cd swift-commit-gen
  2. Use the bundled install script (defaults to ~/.local/bin):
    Scripts/install.sh
    Provide an alternate destination as the first argument if necessary, for example Scripts/install.sh /usr/local/bin.
  3. Prefer manual installation instead? Build and copy the release binary yourself:
    swift build -c release
    install -d "$HOME/.local/bin"
    install .build/release/swiftcommitgen "$HOME/.local/bin/"
    Add 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:

swiftcommitgen

As the author, I'll say I've personally aliased it to cg.

Helpful options:

  • --staged limits analysis to staged files only.
  • --format json returns the draft message in a JSON format, along with diagnostics.
  • --help lists every available flag.
  • --style (summary, conventional, detailed) allows you to change the style that a commit is generated in. Defaults to summary.

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.