Skip to content

v2.12.0

Choose a tag to compare

@nokhodian nokhodian released this 20 Sep 08:26
· 704 commits to main since this release

Breaking Changes

  • Node.js >=22.12.0 is now required by every published package (monomind, @monoes/monomindcli, @monoes/hooks, @monoes/monograph, @monoes/monobrowse, @monoes/mcp, @monoes/memory, @monoes/routing, @monoes/monodesign, monofence-ai). The declared floor had stopped matching reality — engines.node was >=20.0.0 in some manifests, >=18.0.0 in others, and absent from four published packages entirely, while two optional dependencies already required more. monomind doctor reported "pass" on Node 20 the whole time; it now reports warn/fail below 22.12.0 and names the real floor. Node 20 reached EOL 2026-04-30.

    How this actually behaves differs by installer, measured on a real Node 20.20.2 install rather than assumed: npm install with engine-strict=true hard-fails with EBADENGINE; a default npm install only warns and installs anyway; pnpm install gives no warning or error at all. A runtime floor check in the CLI entrypoint is a candidate follow-up, not part of this change.

Security

  • Org roles no longer inherit ambient ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_BASE_URL when running a non-Anthropic provider or CLI. Every vendor-CLI runner (codex, grok, qwen, opencode, hermes, copilot, kimicode, pi, antigravity, crush) and the version probe used by monomind agent scan built their child environment as { ...process.env, ...args.env } — a spread does not delete, so resolveProviderEnv's deliberate strip of these three keys for subscription mode (the default) was silently undone before the child ever saw it.

    Migration: if your org relied on an exported ANTHROPIC_API_KEY reaching a subscription-provider role (the previous, unintended behaviour), declare it explicitly instead:
    provider: { kind: 'api-key', apiKeyEnv: 'ANTHROPIC_API_KEY' }

Added

  • monomind init upgrade now refreshes the generated CLAUDE.md and .monomind/CAPABILITIES.md alongside the statusline and helpers, so an existing project picks up corrections instead of keeping whatever its first init wrote.

Fixed

  • The generated CLAUDE.md and CAPABILITIES.md told new projects things that were not true. They asserted that Claude Code MUST initialize the monoswarm before complex work — nothing in src/ requires or enforces that — and hard-coded a background-worker count that drifted from the real roster. Both the worker count and the command tables are now derived at doc-generation time from the actual registry, so they cannot silently go stale again.
  • Optional packages resolve via import.meta.resolve instead of require.resolve, which failed for callers whose module graph never referenced the package.

All 8 sibling packages were published ahead of the CLI, so every workspace:* pin resolves.

Full Changelog: v2.11.12...v2.12.0