Skip to content

v2.6.2

Choose a tag to compare

@github-actions github-actions released this 28 Jul 22:37

v2.6.2 — fix npm wrapper optionalDependencies (v2.6.1 patch)

⚠️ Why v2.6.2 exists

v2.6.1's npm wrapper was tagged with a package.json whose
optionalDependencies block still referenced
@opitacode/dark-memory-mcp-{darwin,linux,win32}-{x64,arm64}@2.6.0 (the
previous release). When a user ran
npx -y @opitacode/dark-memory-mcp@2.6.1, npm pulled the v2.6.0
platform packages, so the user effectively got v2.6.0 binaries from
a v2.6.1 install.

Functional impact was limited: the GitHub Release binaries
and MCPB bundles for v2.6.1 were correct (self-bootstrapping,
reproducible builds). Only the npm install path was broken.

v2.6.2 is a patch release that re-bumps the npm wrapper with
correct optionalDependencies for v2.6.2 platform packages.

🎯 For users

Use v2.6.2. The v2.6.1 release notes have been updated with a
warning pointing here.

# upgrade
npm install -g @opitacode/dark-memory-mcp@2.6.2
# or use npx
npx -y @opitacode/dark-memory-mcp@2.6.2

🔧 What's actually new in v2.6.2

  • npm/wrapper/package.json:
    optionalDependencies now references v2.6.2 platform packages
    (matching the wrapper version).
  • All other v2.6.1 → v2.6.2 changes are version bumps only.

🆕 v2.6.1 highlights (carried into v2.6.2)

v2.6.1 was the first follow-up to v2.6.0 (the self-bootstrapping
release) and shipped 3 real changes plus a version-bump. The npm
wrapper bug masked them in v2.6.1; v2.6.2 re-publishes the same
binaries with a correct npm wrapper.

1. migrate.CurrentSchemaVersion() — exported helper

internal/tools/agent_bootstrap.go's
detect_environment tool previously hardcoded SchemaVersion: 20.
Now reads from sqlite.CurrentVersion() which iterates the
compiled-in Migrations slice. Adding a new migration now
automatically updates the tool's reported schema version — no
manual sync needed.

internal/migrate.CurrentSchemaVersion(migs []Migration) int
internal/migrate/sqlite.CurrentVersion() int  # convenience

7 new tests in 2 new test files (5 logic tests + 2 integration
tests).

2. publish-mcp-registry.yml race condition fix

publish-npm.yml and publish-mcp-registry.yml triggered in
parallel on the same tag push. mcp-publisher's publish step
validates against the npm registry, which has a 5-30s CDN
propagation delay. Race window: registry workflow reaches publish
before npm's CDN has indexed the new version, so mcp-publisher
returned a 404. v2.6.0 hit this once (manual recovery).

Fix: wrap ./mcp-publisher publish in a retry loop (up to 3
attempts with 30s sleeps). Common case (npm propagates <30s):
succeeds on first retry. Worst case: ~90s of retries.

MAX_ATTEMPTS=3
RETRY_DELAY=30

Test: tests/distribution/mcpb_v2_6_1_test.go::TestV261_RegistryPublishRetryLoop.

⚠️ Note: v2.6.2's own registry publish ran into a slower npm
CDN propagation than the 90s retry budget. The retry loop
exhausted and required manual workflow_dispatch recovery
(same pattern as v2.6.0). The retry loop is in place for the
common case; for the slow case, manual rerun remains the
fallback. Future enhancement: bump to 5 attempts × 60s.

3. docs/agent-bootstrap.md + README update

New operator-facing doc explains the self-bootstrapping architecture
(5 layers, decision tree, DARK_AGENT_BOOTSTRAP_DIR override).
README updated with the new "🪜 Self-Bootstrapping (AGENT_BOOTSTRAP
— 3 tools, v2.6.0)" section. Tool count: 35 → 38 across 12 namespaces.

📦 Distribution

All channels live for v2.6.2:

  • npm wrapper: 6 platform packages + wrapper (correct
    optionalDependencies this time).
  • Official MCP Registry: published via manual workflow_dispatch
    after retry exhaustion (see note above).
  • GitHub Releases: 9 assets.

🔮 Follow-ups

  • Bump publish-mcp-registry retry budget to 5 × 60s (~5 min
    worst case). Today's 3 × 30s budget (~90s) is sometimes too
    short for slow npm CDN propagation.
  • Move to workflow_run trigger for publish-mcp-registry.yml
    so it waits for publish-npm.yml completion before starting.
    Trade-off: more complex trigger config vs simpler inline retry.
  • Consider --force for npm publish to allow v2.6.1 hotfix
    (today, broken versions can't be re-published — must bump
    to next version, which is what v2.6.2 does).

📝 Commits since v2.6.0

021e04c fix(dist): v2.6.2 - bump wrapper optionalDependencies to 2.6.2
b869923 fix(dist): v2.6.1 - bump wrapper optionalDependencies to 2.6.1
a824984 chore(release): bump versions 2.6.0 -> 2.6.1
d14c16e docs(v2.6.1): agent-bootstrap.md + README Self-Bootstrapping section
49c8126 fix(ci): v2.6.1 publish-mcp-registry npm propagation race (retry loop)
84d92fa feat(migrate): export CurrentSchemaVersion helper
5e410f6 ci: re-trigger CI to verify v2.6.0 drift fix

Full Changelog: v2.6.0...v2.6.2