Add src/diff.ts: a reusable unified-diff engine that parses diffs into
per-file +/− stats and filters noise (lockfiles, minified/generated
assets, source maps, snapshots, build output, node_modules/vendor,
binary/media) so review prompts feed only clean, review-relevant changes.
Exports DiffSummary/FileDiff shapes, EXCLUDED_PATTERNS, isExcluded,
parseDiff, plus filterNoise and configurable extra-pattern/ignore-path
overrides. Malformed diff chunks are skipped without crashing, and
excluded files are never double-counted into totals.
Add tests/diff.test.ts covering the included/excluded split, per-file
+/− counts, totals excluding noise, malformed-chunk guard, and the
noise-filter override rules.
The resume prompt counted total/completed from progress.tasks, which only
records TOUCHED tasks (started/completed/failed) — never-started tasks were
silently missing, and file-checkbox completions weren't counted unless
markCompleted had run. With e.g. 10 tasks where 3 completed and 5 untouched,
it showed 3/5 done instead of 3/10 done.
- add countPRDResumeStats (src/utils.ts): total from parseTaskFile of the
PRD source; completed = progress completions ∪ PRD checkbox completions,
deduped by task id; failed from progress. Falls back to touched-task
counts when the source file is missing/unparseable.
- selectPRDToResume (index.ts) uses the helper instead of Object.keys().
- tests/resume-stats.test.ts: 4 regression tests.
Includes pre-existing uncommitted changes: index.ts tab-reformat (matches
src/ style) and package.json version bump 0.4.2 -> 0.4.3.