// changelog

v0.9.0

CLI-as-provider (claude-cli, gemini-cli), `commitbrief diff` subcommand, per-finding suggestions, progress UI.

Released May 24, 2026

⚠️ Breaking

  • Scope flags collapsed into commitbrief diff <args...>. --commit <hash>, --branch <name>, and --pull-request <range> are gone. Replacement table:

    v0.xv0.9
    commitbrief --commit HEAD~1commitbrief diff HEAD~1
    commitbrief --branch maincommitbrief diff main
    commitbrief --pull-request main...xcommitbrief diff main...x

    --staged and --unstaged unchanged. The diff subcommand forwards verbatim to git diff <args>, so any range git understands works.

  • Single-path --file scope flag replaced by the repeatable global --file/--dir filter pair.

  • Provider.ReviewStream removed from the provider interface. Streaming has been dead since ADR-0014 took the review path off it in v0.6.0; the plumbing is now gone. Third-party packages importing Provider need to drop the field.

Added

  • CLI-tool-backed providers — claude-cli, gemini-cli (experimental). Drive the user’s locally-installed Claude Code or Gemini CLI as the review backend via subprocess. No API key when the host CLI is already authenticated. Cost is whatever the user’s CLI subscription bills. Cache key includes the host CLI version so upgrades cleanly invalidate prior entries.

  • Per-finding suggestion field — required actionable remediation. Every finding carries a 2–3 sentence concrete fix recommendation alongside title/description. Rendered in Cards (chevron-prefixed paragraph), OUTPUT.md (→ {{ .Suggestion }} block), JSON ("suggestion", required), and the --copy clipboard payload.

  • commitbrief diff <args...> subcommand — git-diff passthrough for arbitrary historic ranges. Args forwarded verbatim to git diff --no-color --no-ext-diff.

  • Global --file / -f and --dir / -d flags — path filters applied post-parse, repeatable, work on any scope.

  • commitbrief cache prune subcommand. Bounded cleanup with defaults --keep-last 500 --older-than 7d; both windows must be satisfied for an entry to survive. --provider/--model narrow the candidate pool.

  • Multi-line findings via line_end (schema-additive). Finding payloads can carry line_end alongside line to mark spans; renderers show file:start-end instead of file:start. Backward-compatible.

  • --copy flag — pushes a plain-text summary of the findings onto the system clipboard via OSC 52 escape (works over SSH) and native shellout (pbcopy / wl-copy / xclip / xsel / clip.exe).

  • Progress animation during the review pipeline — four-stage tree with breathing-dot animation. Three operating modes: animated (TTY + colors), plain (CI logs), silent (--quiet).

Changed

  • Tightened snippet contract in the system prompt so findings stop showing invented code excerpts — max 6 lines, verbatim from the diff, no hunk headers, omit when not materially clarifying.
  • Severity chip glyphs swapped to emoji for stronger visual cues: 💥 CRITICAL, 🚨 HIGH, ⚡ MEDIUM, 📌 LOW, 💡 INFO.
  • Diff aggregate cachingDiff.AddedLines() / DeletedLines() switched to O(1) memoized reads.