v1.4.0
A "Trust & quality" release — `--show-prompt` to see exactly what leaves your machine, an opt-in `guard.token_preflight`, a live elapsed-time counter on the progress spinner, the first published measured-quality benchmarks, and a fix for the spinner flooding the screen on some terminals.
Added
-
--show-prompt— see exactly what gets sent. Assembles the full system + user prompt that would be sent to the model, prints it, and exits — no provider call, no cache lookup, no cost. It reflects every prompt-shaping flag (the scope,--with-context,--cli/--provider,--lang), so it’s the full-text companion todry-run(which reports only metadata). Honours--outputto write the prompt to a file. Use it to audit data egress or debug a customCOMMITBRIEF.md. -
guard.token_preflightconfig (opt-in, default off). When enabled, a review whose estimated prompt exceeds the active model’s context window prompts for confirmation (on a TTY) or aborts (non-interactively) before the paid call — a friendly catch instead of a raw provider400 context length exceeded. Off by default because the estimate is achars / 4heuristic and a false positive shouldn’t block an unguarded review. Turn it on withcommitbrief config set guard.token_preflight true. -
Live elapsed-time counter on the progress spinner. Once a stage has run for more than a second, the animated tree shows a muted timer beside it (e.g.
Thinking… 0:42), so a slow--with-contextagent call reads as working rather than frozen. -
Published measured-review-quality benchmarks. CommitBrief now ships an eval harness that scores real review output against a 23-fixture known-answer corpus (23 planted defects + 3 clean controls). The first scorecard across five models is on the Benchmarks section of the site: every Claude model recalls essentially all planted defects with zero false positives on the clean controls.
Fixed
- Progress spinner flooding the screen on some terminals. The animated
renderer redraws in place by moving the cursor up; a stage line longer
than the terminal width wrapped to multiple rows, so the cursor-up
under-counted and a line (often
Searching for changes…) repeated every frame — it looked like an infinite loop. Rendered lines are now clipped to the terminal width so they never wrap, andTERM=dumbterminals fall back to plain one-line-per-stage output. Workaround on older builds:--color neverorNO_COLOR=1.