Skip to content

1.3.2

Choose a tag to compare

@smixs smixs released this 27 Sep 10:45
· 2 commits to main since this release

Touched-test acceptance now finds every test that can break: check --tests and mutant follow the project's imports to the end, resolve modules the way the project does, and keep the coverage that tests write from child processes.

What's new in 1.3.2

  • Every test that reaches the change. check --tests and mutant select the whole chain of importers (imports, re-exports, dynamic imports, require, and path strings in tests), not two steps. On a real bun monorepo a change to a shared utility now selects 109 of the 109 tests that depend on it (1.3.1: 23). pre-push is unchanged.
  • Modules resolve like the project resolves them. The nearest tsconfig.json paths (through extends, TypeScript key precedence), package.json#imports (#lib/*), and workspace packages by name (exports, including the string form, module, main).
  • Coverage from child processes counts. The built-in node, bun, vitest and pytest commands write their report under $QG_DIR and append it to $QG_LCOV instead of replacing the file; the exit code stays the tests'.
  • Broken lcov is refused everywhere. The full gate, a plain check and --skip-tests check the lcov structure before any CRAP number; an orphan or repeated end_of_record is invalid coverage.
  • mutant_timeout_s defaults to 900 s, as touched_timeout_s: a mutant on a shared module now runs every dependent test.

Verified: 404 tests; live runs on two real consumer repositories (a TypeScript agent and a bun monorepo), including a shared module with 576 dependent test files (check --tests GATE PASS, mutant KILLED).

Upgrade: claude plugin update code-quality@code-quality, or your agent's plugin update. No config change is needed.