v4.7.0
What's Changed
- Fix: migrate refuses to run on an unparseable config instead of silently losing it (Critical) by @0xLeif in #299
- Fix: hooks uninstall no longer destroys user content after the managed block (Critical) by @0xLeif in #300
- Fix: check no longer bypasses coverage/enforcement gates on warm cache or no specs (Critical + High) by @0xLeif in #301
- Fix: lifecycle enforce honors the documented camelCase config keys (Critical) by @0xLeif in #302
- Fix: score honors the --require-coverage/--enforcement/--strict gates (High) by @0xLeif in #303
- Fix: deps --strict gates on undeclared-import warnings (High) by @0xLeif in #304
- Fix: parse multi-line TOML arrays instead of corrupting the config (data loss) by @0xLeif in #305
- Fix: hooks install --claude-code-hook deep-merges, preserving user hooks (High) by @0xLeif in #306
- Fix: coverage & score no longer bypass enforcement gates on no-spec projects (M1) by @0xLeif in #308
- Fix: migrate no longer silently drops config data (customRules/modules/parseMode, track_history) by @0xLeif in #309
- Fix: strip inline comments on scalar TOML values, not just arrays (High #6) by @0xLeif in #310
- Fix: export-parser language-idiom gaps (Swift final, Go grouped, Kotlin const) + Rust comment tokenization by @0xLeif in #311
- Add living atlas spec-coverage badge by @0xLeif in #312
- Fix: strip a leading UTF-8 BOM before parsing spec frontmatter (High #3) by @0xLeif in #313
- Fix: strip a leading UTF-8 BOM when reading config files by @0xLeif in #314
- Fix:
difffails loud on a bad base ref instead of reporting "no changes" by @0xLeif in #315 - Fix: reject path-traversal module names in
add-spec/scaffoldby @0xLeif in #316 - Fix:
**/**exclude pattern panics the coverage glob matcher by @0xLeif in #317 - Fix:
--require-coveragefails loud on zero source files (no vacuous pass) by @0xLeif in #318 - Fix:
is_test_filemisclassifies sources under a test-named ancestor by @0xLeif in #319 - chore: release v4.7.0 by @0xLeif in #320
Full Changelog: v4.6.1...v4.7.0