# CommitBrief v1.6.0

> A new `summary` command explains a set of changes in plain language — a read-only digest grouped by logical area, attributed to commit hashes for a range. Plus `--lang` now drives the AI output language for any recognized language (French, German, …), independent of the CLI's own interface.

Released June 13, 2026

Canonical URL: https://commitbrief.com/changelog/v1.6.0/

---

## Added

- **`summary` command — explain a set of changes in plain language.**
  `commitbrief summary` produces a read-only, human-readable digest of what
  changed (and, when the commit messages make it clear, why), grouped by
  logical area rather than file by file. It reuses the review infrastructure
  (provider selection, pre-send guards, cost preflight, cache) but emits
  prose, not findings. See ADR-0020.
  - Scope mirrors the review surface: no args ⇒ staged (default),
    `--unstaged` for the working tree, or positional `git diff` arguments for
    an arbitrary range exactly like the `diff` scope — `commitbrief summary
    main...develop`, `commitbrief summary HEAD~3 HEAD`.
  - For a range, the matching commit messages are ingested as context and each
    line is attributed to the **short commit hash(es)** responsible; staged /
    unstaged scopes (which have no commits) produce unattributed lines.
  - Output is plain text; `-o`/`--output` writes it to a file. `--lang` is
    honoured, so `--lang tr` yields a Turkish summary. Provider selection
    matches a review (`--provider` / `--model` / `--cli`), and `--with-context`
    works for CLI providers.
  - Emits no findings, so `--json`, `--markdown`, `--suggest-commit`,
    `--fail-on`, and `--min-severity` are rejected with a clear message. The
    command never writes to git.

## Changed

- **`--lang` now sets the AI output language independently of the interface.**
  The output language and the CLI's own interface language are resolved from
  one chain but applied separately (ADR-0021):
  - **Any recognized language works for output.** `--lang fr` (or `de`, `ja`,
    … ~50 languages) now produces a **French review**; previously anything
    outside `en`/`tr` was coerced to English. The CLI's own strings still
    localize only for `en`/`tr`, so `--lang fr` gives a French review with an
    English interface; `--lang tr` gives Turkish for both.
  - **The fallback chain is mistake-tolerant.** Resolution is `--lang` → repo
    `output.lang` → user `output.lang` → English, and an empty or invalid
    value at any level falls through to the next source instead of
    short-circuiting to English. `config set output.lang` validates the value.
  - **Breaking:** the system locale (`LANG` env var) is no longer consulted
    for language. A setup that relied on `LANG=tr_TR` with no config now
    defaults to English — set `output.lang` or pass `--lang` instead.
- **`commit`'s staged-file list reads tighter.** The "Detected N staged files"
  line no longer ends with a dangling colon, the file names below it are no
  longer separated by a blank line in the progress tree, and when more than 20
  files are staged the names are omitted (the count alone is shown) so a large
  stage doesn't flood the screen.