You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.mdUnreleased 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.