• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umputun / revdiff / 25012247360

27 Apr 2026 06:23PM UTC coverage: 89.602% (+0.05%) from 89.556%
25012247360

push

github

web-flow
feat(annotations): --annotations flag preloads annotations from FormatOutput markdown (#156)

* feat(annotation): parser for FormatOutput markdown round-trip

Add Parse for the markdown shape Store.FormatOutput emits so annotations
can be reconstructed from previously-saved review files. Make
escapeHeaderLines/parser body-line stripping symmetric on
"left-trimmed prefix is '## '", so pre-indented "## " lines round-trip
losslessly at any indent depth.

* feat(annotations): --annotations flag preloads annotations on startup

Add an opt-in --annotations=PATH flag (no-ini, per-invocation only) that
parses a markdown file in the same shape Store.FormatOutput emits and
preloads the annotation store before the TUI starts. Records whose
file/line are not present in the resolved diff are dropped with a
stderr warning. Untracked files surface in the UI via a separate
loadUntracked callback rather than ChangedFiles, so the preload folds
them in via untrackedFn and reads their line set from disk via
diff.ReadFileAsAdded — mirroring Model.resolveEmptyDiff so any file
written by -o (including untracked) round-trips back through
--annotations.

* docs(annotations): document --annotations flag and round-trip workflow

Add a Preloading Annotations section to README, site docs, and the
Claude/codex plugin usage references; note the bidirectional -o ⇄
--annotations workflow in CHANGELOG and the in-session review preload
path in plugin SKILL files.

* chore(plans): archive --annotations implementation plan

* feat(diff): export SanitizeCommitText for external callers

Public wrapper around sanitizeCommitText so callers outside the diff
package (e.g. preloaded annotation comments) can apply the same
ANSI / C1 / control-byte stripping before content reaches a terminal
renderer.

* refactor(annotation): parser type, Store.Load, tolerate unescaped ##

- Move parseHeader onto a parser struct so state (out/current/body/
  seenHeader) lives on the value rather than as closure-c... (continued)

224 of 245 new or added lines in 6 files covered. (91.43%)

8772 of 9790 relevant lines covered (89.6%)

535.32 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.24
/app/annotation/parse.go


Source Not Available

STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc