// changelog

v0.6.0

Structured findings JSON. OUTPUT.md becomes a Go template — breaking change.

Released May 20, 2026

⚠️ Breaking — OUTPUT.md semantics (ADR-0014)

  • COMMITBRIEF.md users are unaffected. Project review rules remain the user-editable system prompt.
  • OUTPUT.md is now a Go text/template consumed locally, not a format instruction embedded in the LLM prompt. The model produces structured findings JSON under a fixed schema; the renderer applies your OUTPUT.md to those findings for --markdown and --output <file>.md. Pre-0.6.0 OUTPUT.md files written as natural-language instructions fail the pre-send validation guard.
  • Migration: run commitbrief init --yes to overwrite OUTPUT.md with the new embedded default, or rewrite it in text/template syntax.
  • Severity vocabulary expanded to five levels (was three): critical, high, medium, low, info.
  • Old local cache entries auto-invalidated because the system prompt SHA is part of the cache key.

Added

  • Structured findings JSON contract between LLM and renderer. Every provider uses its native structured-output mechanism: Anthropic tools, OpenAI strict response_format, Gemini ResponseSchema, Ollama format: "json".
  • Retry-once + graceful degrade. Unparseable LLM output triggers one retry; second failure degrades to plain-text with a stderr warning. Cache entries record the fallback mode.
  • Per-finding Cards layout (Stage B). Each finding renders as a lipgloss-bordered panel coloured by severity. Empty case shows a single green-checkmark “No findings. Looks good.” panel.
  • render.ValidateOutputTemplate pre-send guard — malformed templates fail with a clear error pointing at the file.