You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(mcp): Windows .dxt sign-in browser now opens reliably (product#3839) (#139)
* fix(mcp): Windows .dxt sign-in browser now opens reliably (product#3839)
On Windows, openInBrowser resolved the moment cmd.exe was CREATED — before
its `start` builtin actually handed the URL to the browser. A silent no-op
(no default-browser association / a locked-down shell / AppLocker) went
undetected: nothing opened yet the flow reported success and told the user
"a browser may have opened."
Windows now waits (bounded) for each launcher's exit code, treats a non-zero
exit as failure, and falls through to shell-free launchers — rundll32
url.dll,FileProtocolHandler (Explorer's ShellExecute path, honest exit code)
then PowerShell Start-Process. When all fail, browserOpenFailedAtBootstrap is
set and the AUTH_REQUIRED envelope honestly says the browser couldn't open,
with the clickable sign-in link. macOS/Linux keep resolve-on-spawn (the #3805
headless-hang fix). The #3801 &-quoting cmd candidate is unchanged, tried
first. Shutdown browser-open wait 1.5s -> 3s for the multi-launcher walk.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(mcp): quote PowerShell fallback URL so `&` isn't parsed as PS source
The PowerShell Start-Process fallback passed the raw URL after `-Command`, which
parses everything as PowerShell SOURCE — so an OAuth authorize URL's `&` (query
separators) would be read as PS's call/separator operator and the URL mangled or
split, breaking the last recovery path on locked-down Windows (both cmd
candidates failed + rundll32 unavailable). Wrap the URL in a single-quoted PS
string literal (verbatim form; escape embedded `'` by doubling). rundll32 keeps
the raw URL (no shell). New test covers the multi-`&` URL and the quote-escape.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: packages/mcp/CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,12 @@
1
1
# Changelog — @leadbay/mcp
2
2
3
+
## 0.23.11 — 2026-07-02
4
+
5
+
Windows `.dxt` sign-in now opens the browser reliably (product#3839).
6
+
7
+
- **`openInBrowser` (Windows)** — the auto-open resolved the moment `cmd.exe` was *created*, before its internal `start` builtin actually handed the URL to the default browser. So a silent no-op (no default-browser protocol association, a locked-down shell / AppLocker, a corrupt `HKCR\http\shell\open`) went undetected: `browserOpenFailedAtBootstrap` stayed false and the user was told "a browser may have opened" when nothing did. On Windows we now wait (bounded — 800ms for `cmd start`, 1200ms otherwise) for the launcher's **exit code**, treat a non-zero exit as failure, and fall through to `rundll32 url.dll,FileProtocolHandler` (no command interpreter — the same ShellExecute path Explorer uses, with an honest exit code) and finally PowerShell `Start-Process`. When every launcher fails, the `AUTH_REQUIRED` envelope honestly says the browser couldn't be opened and shows the clickable sign-in link. The #3801 `&`-quoting `cmd start` candidate is unchanged and still tried first. macOS/Linux keep resolve-on-`spawn` (the #3805 headless-hang fix — those launchers are the hand-off).
8
+
-**`bin.ts` shutdown** — the `browserOpenInFlight` teardown wait rose 1.5s → 3s so the multi-launcher Windows walk can finish dispatching before exit (the sibling bootstrap wait already allows 4s; the surfaced sign-in link is the fallback either way).
9
+
3
10
## 0.23.10 — 2026-07-01
4
11
5
12
A freshly-created lens no longer reads as "empty" (product#3833).
Copy file name to clipboardExpand all lines: packages/mcp/package.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "@leadbay/mcp",
3
-
"version": "0.23.10",
3
+
"version": "0.23.11",
4
4
"mcpName": "io.github.leadbay/leadbay-mcp",
5
5
"description": "Model Context Protocol (MCP) server for Leadbay — AI lead discovery, qualification, and enrichment for Claude Desktop, Cursor, and Claude Code.",
0 commit comments