@@ -10,16 +10,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010### Added
1111- ` thinktank run ` command — spawn N parallel Claude Code agents in isolated worktrees
1212- ` thinktank apply ` command — apply recommended or selected agent's changes
13+ - ` thinktank apply --preview ` — review diff with syntax highlighting before applying
14+ - ` thinktank compare <A> <B> ` — compare two agents' diffs side by side
1315- ` thinktank list ` command — view last run's results
1416- Convergence analysis with diff-content comparison (Jaccard similarity + union-find clustering)
1517- Unified diff parser for structured change extraction
16- - Recommendation scoring: test results > convergence > diff size
17- - Test runner with command parsing, error detection (ENOENT, timeout), and pre-flight checks
18+ - Recommendation scoring: test results (100pts) > convergence (50pts) > diff size (10pts)
19+ - Test runner with command parsing, shell injection prevention, and ENOENT detection
20+ - CLI input validation: attempts (1-20), timeout (10-600s), model warnings
21+ - Architecture documentation (` docs/architecture.md ` )
1822- CI pipeline with GitHub Actions (Node 22/24, build, lint, typecheck, test)
23+ - CI hardening: npm audit, build output verification
1924- CodeQL security scanning
25+ - npm publish workflow with provenance on version tags
2026- Biome for TypeScript linting and formatting
21- - 31 unit tests across convergence, diff parsing, test runner, and apply command
27+ - Cross-platform color support via picocolors (NO_COLOR, Windows cmd.exe)
28+ - 56 unit tests across convergence, diff parsing, test runner, apply, git utils, display
2229- YAML-based issue templates (bug report, feature request)
2330- PR template, CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md
2431- CLAUDE.md with project architecture and conventions
2532- VS Code configuration with Biome formatter
33+
34+ ### Security
35+ - Test command validation rejects shell operators (` ;|&\ ` ><`) to prevent injection
36+ - Result files written with mode 0o600 and agent stdout/stderr redacted
37+ - Branch names use crypto.randomUUID() to prevent collision
38+ - Diff parser handles quoted paths (filenames with spaces)
39+
40+ ### Removed
41+ - Unused ` getCurrentBranch() ` and ` applyDiff() ` exports
0 commit comments