@@ -7,6 +7,39 @@ aims to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77
88## [ Unreleased]
99
10+ ### Removed (breaking)
11+
12+ - ** ` --tool both ` ** removed. The CLI now exits 1 with the three-line error
13+ shape (` error: ... / next: use --tool opencode,openclaude / see: Upgrading ` ).
14+ Deprecated in v0.6.0. See [ Upgrading] ( docs/docs/wiki/Upgrading.md ) .
15+ - ** ` _normalize_persisted_intake ` back-fill helper** removed. A ` project.json `
16+ written by 0.5.x that was never updated through 0.6.x now silently ignores
17+ its legacy ` tool ` / ` agent ` keys and falls back to ` DEFAULT_TOOLS `
18+ (` opencode ` ). Re-run ` coding-scaffold setup run ` to regenerate.
19+ - ** ` IntakeAnswers.agent ` property** removed. Use ` IntakeAnswers.tools[0] ` .
20+ - ** Stale ` "both" ` -handling branches** in ` installers.py:build_install_plans `
21+ and ` cli.py:_maybe_setup_knowledge ` cleaned up — dead code post-removal.
22+
23+ ### Changed
24+
25+ - ** ` probe_hardware() ` is now cached** at
26+ ` $XDG_CACHE_HOME/coding-scaffold/hardware.json ` (default ` ~/.cache/... ` )
27+ with a 1-hour TTL keyed on OS / arch / Python version. Warm-call
28+ performance: ` doctor ` 243ms → 78ms median (** 3.1×** ); ` pilot ` 235ms →
29+ 79ms (** 3.0×** ). New ` --no-probe-cache ` flag on ` doctor ` / ` pilot ` /
30+ ` probe ` forces a fresh probe (use after installing a new local runtime
31+ like ` ollama ` ).
32+ - ** ` CODING_TOOLS ` / ` VALID_TOOLS ` consolidated.** ` intake.py ` holds the
33+ canonical tuple; ` cli.py ` re-exports it as a list for argparse and
34+ derives ` INSTALLABLE_TOOLS ` . ` VALID_TOOLS = frozenset(CODING_TOOLS) ` .
35+ The drift-detection test that policed the previous duplication is
36+ replaced with a one-line derivation invariant.
37+
38+ ### Tests
39+
40+ - ** pytest-xdist enabled** (` addopts = "-n auto" ` ). Test suite ~ 22s → ** ~ 3s**
41+ with parallel workers; 637 tests pass.
42+
1043## [ 0.6.0] — 2026-05-27
1144
1245### Added
0 commit comments