v1.4.2
Cross-language doctor/init correctness. Three honest defects in
v1.4.0 surfaced by continuing Python-repo dogfood. All three were
"the system works, but it lies about its state" — exactly the kind of
small inaccuracy that erodes trust. v1.4.2 closes them. Reliability
fix only — no MCP contract changes, no schema changes, no new tools,
no new behaviour at runtime.
Fixed
-
Bug A:
kairo initreported the chosen form even when it skipped.
When.mcp.jsonalready declaredkairo, init saidmcp form: global (kairo-mcp on PATH)while the file on disk still had the
stalenode ./node_modules/...local form. The kv row now reads
the actual on-disk form viaclassifyInstalledSpec, matching
whatkairo doctorreports. -
Bug B:
kairo doctorinsisted onpackage.jsonat the project
root. Python / Rust / Go / Java / Ruby repos legitimately don't
have one. Doctor now accepts any of these markers:
package.json,.git,pyproject.toml,requirements.txt,
setup.py,go.mod,Cargo.toml,pom.xml,build.gradle,
build.gradle.kts. The detail line names which marker matched so
the user knows what was found. Truly empty directories still fail
with an honest error listing what was expected. -
Bug C:
kairo doctorran the version-match check against
node_modules/kairo-mcp/package.jsoneven when no local install
existed. Global and npx installs don't have a local
package.jsonto compare to — and the absence of one was being
reported as a failure (kairo-mcp not installed in this project)
despite thekairo-mcp installedcheck having just confirmed the
global PATH install was fine. Doctor now routes per install form:local: comparesnode_modules/kairo-mcp/package.json↔
SERVER_VERSION(unchanged from v1.4.0).global: reports OK + a hint to upgrade vianpm install -g kairo-mcp@latest(the user's package manager owns the version,
not doctor).npx: reports OK + a hint that the version is resolved at
launch by npx (not a local concern).- Inside the kairo-mcp dev repo: compares
dist/index.js↔ the
repo's ownpackage.json(unchanged).
Added
- 8 new regression tests in
tests/doctorNonNode.test.ts
(213/213 total, up from 205):- 5 project-marker tests: Python
pyproject.toml, Python
requirements.txt, RustCargo.toml, Gogo.mod, .git-only
git checkout. All recognised as valid project roots. - 1 negative test: truly empty directory fails project root with
an honest error. - 1 version-match test: Python project with no node_modules does
NOT fail version match. - 1 init-stale-mcp.json regression: Python repo with the v1.0.x-
era broken local-form .mcp.json, afterkairo init --force,
must contain one of the v1.4.0 valid forms (never the broken
node ./node_modules/...).
- 5 project-marker tests: Python
Notes
- 213/213 tests pass.
- Caught and fixed in real-time by a Python repo dogfood
(ImageCompareSoftware) — the same project that found Bug A in
v1.4.0. v1.4.2 ships the whole truthful version of what v1.4.0
intended to be. - The user-visible improvement is that running
kairo initthen
kairo doctorin a Python / Rust / Go repo now reports
all checks passedinstead of3 check(s) need attentionwhen
everything is in fact fine.