Skip to content

v1.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 28 Jul 04:47

Features

  • Diff-grounded release notes. gitgist now reads the range's actual code diff and treats it as the authority for what changed, so a feature buried under chore: tidy up still gets described and claims the code doesn't support get dropped. On by default; --no-diff returns to commit-messages-only summarizing.
  • New antigravity provider (agy -p) — a no-API-key Google backend that supersedes the Gemini CLI, which stopped serving individual tiers on 2026-06-18. It precedes gemini in auto-selection; gemini stays for Code Assist Standard/Enterprise licensees.
  • New openai-api provider — the OpenAI chat-completions API over OPENAI_API_KEY / OPENAI_BASE_URL, with no new runtime dependency.
  • --link-commits makes every bullet cite the commit it came from, linking to the commit page. The URL is derived from the git remote automatically (GitHub, GitLab, Bitbucket, and ssh/scp/https remote forms), or set explicitly with --commit-url '<url>/{hash}'.
  • Project config file. gitgist.config.json (or a gitgist key in package.json) pins exclude, provider, model, maxDiffChars, linkCommits, commitUrl, endpoint, and the fallback settings per repository; explicitly passed flags still win. --no-config skips it.
  • Configurable diff exclusions. --exclude <pathspec> (repeatable) adds to the built-in noise list — lockfiles, build output, vendored deps, generated assets — and --no-default-excludes replaces it entirely. Excluded files still appear in the changed-file list and stat, so nothing changed is invisible to the model.
  • Per-commit attribution. The model now receives each commit's short hash and touched files, so it can group related changes, order them correctly, and attribute work. --no-attribution turns it off.
  • Per-provider diff budgets. Each backend advertises how much diff it can absorb — ~200k chars for the hosted APIs, ~120k for the agent CLIs, 4k for Apple's on-device model — instead of one fixed cap. --max-diff-chars still overrides.

Bug Fixes

  • --model is now honoured by every provider. claude-cli was silently discarding it and running the CLI's default model; local now puts the requested model ahead of its config and environment defaults.
  • CLI-backed providers spawn in the repository --cwd names rather than gitgist's own working directory, so gitgist --cwd <repo> --provider codex works from outside a repo.
  • The gemini provider passes --skip-trust, so headless runs no longer fail with exit 55 in untrusted workspaces.
  • Failures against OpenAI-compatible endpoints report the real cause — a timeout now says it timed out instead of claiming the server was unreachable — and local models get a much longer generation budget.
  • Hash citations are now stripped from output structurally rather than only being discouraged in the prompt, so weaker backends can no longer append a hash to every bullet unless --link-commits asked for it.
  • The model no longer emits "carried over / dedupe against the draft above" meta sections when a CHANGELOG.md Unreleased entry is part of the input.
  • The diff budget is allocated fairly across changed files instead of first-come in path order, so alphabetically-late source files are no longer starved by scaffolding at the top of the tree.
  • The working-tree path (--staged / --working) now uses the same configurable budget and noise filtering as the commit-range path, instead of a separate hardcoded 8000-char cap with no filtering.

API

  • The public API surface grew considerably: parseArgs / USAGE / CliArgs, the config loaders (loadConfig, parseConfig, applyConfig), the new git helpers (readRangeDiff, readCommitFiles, detectCommitUrl, commitUrlFromRemote, DEFAULT_EXCLUDES, buildExcludePathspecs), prompt pieces (rangeDiffToMaterial, stripUnrequestedHashes, ATTRIBUTION_RULES, buildCommitLinkRules, the shared rule blocks), and the new provider exports are all importable.
  • PROVIDER_NAMES is exported as a runtime array alongside the ProviderName type.
  • describeFetchFailure, isAbort, and defaultFetch are no longer exported — they were never usable from outside their module.