fix(mcp,core,dxt): #3504 DXT install warning, 401 message, .dxt bundle (0.2.4)#18
Merged
fix(mcp,core,dxt): #3504 DXT install warning, 401 message, .dxt bundle (0.2.4)#18
Conversation
…e (0.2.4) Follow-up to Ludo's 2026-04-22 handoff session on @leadbay/mcp@0.2.2. This release addresses three client-side items from product#3504 and reships the already-merged refine_prompt fix (product#3508) that didn't make it to npm. - `install` now detects Claude Desktop 2026 DXT (via Claude Extensions/, extensions-installations.json, or dxt:* keys in config.json) and default-skips the legacy claude_desktop_config.json write — the app overwrites that file on every prefs save, so our previous "registered" message was misleading. Pass --force-legacy to override. The warning points at the .dxt bundle. - New @leadbay/dxt workspace builds a DXT 0.2 bundle (manifest + bundled server + icon) and CI uploads it to each GitHub Release. Users can drag-drop into Claude Desktop → Settings → Extensions; dialog asks for token + region + write-toggle (no terminal). - `login` 401 errors no longer end with a dangling colon on empty-body responses. New shared helper formatLoginError in @leadbay/core adds status-appropriate hints (wrong email or password? / rate-limited / server error). - README note on `npm install -g` EACCES (sudo / npx / nvm workarounds). - Also shipping: refine_prompt / set_user_prompt wire-key fix from 307d97a (product#3508) that was merged to main but hasn't been published yet. Tests: +8 login-error units, +9 dxt-detection units, +5 dxt-package smoke. All 144 existing tests still green. Out of scope: the adjust_audience 500 from Ludo's session is a backend taxonomy-resolution bug; tracked separately. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to @LudoGranger's 2026-04-22 handoff on
@leadbay/mcp@0.2.2. Addresses three client-side items from product#3504 and reships the already-mergedrefine_promptfix (product#3508) that never made it to npm.install— Claude Desktop 2026 moved to the DXT extension system; the legacyclaude_desktop_config.jsonis UI-prefs-only there and gets rewritten on every prefs save.installnow detects DXT (viaClaude Extensions/,extensions-installations.json, ordxt:*keys inconfig.json), prints a warning, and default-skips the legacy write. Pass--force-legacyto override..dxtbundle —packages/dxt/is a private workspace that esbuild-bundlesbin.ts+ a DXT 0.2 manifest (user_configwith sensitiveleadbay_token,us|frregion enum, write-toggle) and zips it. CI uploads it to each GitHub Release so users can drag-drop into Claude Desktop → Settings → Extensions.formatLoginErrorhelper in@leadbay/coreadds status-appropriate hints; empty-body 401s no longer end with a dangling colon. Shared with@leadbay/mcpso CLI + ClawHub surfaces stay consistent.npm install -gEACCES (sudo / npx / nvm workarounds) and pointer to the.dxtinstall for Claude Desktop 2026.refine_prompt/set_user_promptnow send{ user_prompt }instead of{ prompt }toPOST /user_prompt(product#3508).Version bumps:
@leadbay/mcp0.2.3 → 0.2.4,@leadbay/leadclaw0.2.3 → 0.2.4. On merge,auto-tag.ymlpushes both release tags;release.ymlpublishes to npm and uploads the.dxtto the GH Release.Out of scope: Bug A from Ludo's session (
leadbay_adjust_audience500:Cannot read properties of undefined (reading 'toLowerCase')) is a server-side taxonomy-resolution bug — tracked separately in the backend repo.Test plan
Automated (green locally):
formatLoginError(401/429/5xx + empty-body behavior).detectClaudeDesktopMode(legacy / DXT / both / malformed)..dxtarchive (manifest shape, entry point presence,sensitive: trueon token, region enum).pnpm -r test).pnpm -r build+pnpm -r typecheckboth green.Manual on this Mac (Claude Desktop 2026 DXT):
node dist/bin.js --version→0.2.4.LEADBAY_PASSWORD=<bad> leadbay-mcp install --email milstan@leadbay.ai --region fr --target claude-desktopprints DXT warning with detected markers AND the new(wrong email or password?)401 message, with no dangling colon..dxtbundle produced (1.4 MB), containsmanifest.json,server/index.js,icon.png,README.md.user_promptwire key (product#3508 fix baked in).Post-publish verification (after merge):
npx -y @leadbay/mcp@0.2.4 install --email <you> --region <us|fr>flows end-to-end.leadbay-0.2.4.dxtinto Claude Desktop 2026; user_config dialog asks for token + region + write-toggle; tools load.refine_promptcall via any MCP client succeeds (no JSON deserialization error).🤖 Generated with Claude Code