Skip to content

v2.1.2 — CI and build reliability

Latest

Choose a tag to compare

@Data-Wise Data-Wise released this 17 Aug 06:48
cc6b9a7

Patch release. No runtime behavior changessrc/cli/doctor.ts is a maintainer command; everything else is build tooling, tests, and docs.

Fixed

The test suite ran nested copies of itself (#139)

tests/setup.test.ts spawns the doctor CLI, and doctor --pre-release's "Test suite" check spawned a full vitest run, which re-ran that file, which spawned doctor again — unbounded, with no guard. 40+ orphaned vitest processes per run, outliving the run that started them.

doctor now skips that check when process.env.VITEST is set.

The effect is much larger than a leak fix:

tests wall
local, before 717 397s
local, after 718 24s
CI, before 481–531s
CI, after 53s

The suite was spending roughly 93% of its wall time running copies of itself. It also explains a class of phantom failures: one run reported 2 failures in 771s, both 5-second timeout expirations under CPU starvation, which vanished on the identical commit once the orphans were killed.

The .mcpb build was a race (#121)

mcpb pack ignores the output path it is handed and writes himalaya-mcp-<version>.mcpb — no v prefix — into either the project root or the packed directory. build-mcpb.sh papered over this with a sleep-and-retry rename that globbed only the project root, and that loop raced: it won on the v2.1.0 release and lost on v2.1.1, failing the build and skipping the entire Homebrew formula update. Re-running the identical commit succeeded, which is what proved it nondeterministic rather than broken.

The retry is gone — once pack exits there is nothing to wait for, only a name to reconcile. Both candidate directories are searched, the stale-output cleanup covers both, and the rename refuses any archive whose filename does not carry the current version.

Documentation

A staleness review before this release corrected several things that were quietly wrong:

  • CLAUDE.md and AGENTS.md told agents the full suite is a "~6-minute run". That figure was measuring #139, not the tests. Both now carry the real timings and explain why the old number existed.
  • Eleven surfaces still claimed 717 tests; the #139 regression test made it 718.
  • setup.test.ts was documented as 49 tests; it has 52. That drift predated this release.

Verification

vitest run --maxWorkers=1
  Test Files  41 passed (41)
       Tests  718 passed (718)
    Duration  23.91s        exit 0, 0 orphaned processes

npm audit --audit-level=high   found 0 vulnerabilities
build / build:bundle           clean
build:mcpb                     himalaya-mcp-v2.1.2.mcpb, 253 KB, manifest 2.1.2
mkdocs build --strict          clean
main CI                        green on cc6b9a7
docs site                      verified live at 2.1.2

The .mcpb attached below was built from a tree hash-identical to the v2.1.2 tag.

Install

brew upgrade himalaya-mcp          # Homebrew
claude plugin install himalaya     # Claude Code

For Claude Desktop, download himalaya-mcp-v2.1.2.mcpb below and double-click it.

Full changelog: v2.1.1...v2.1.2