Skip to content

fix(daemon): hide Warp open-in launcher on win32/linux until dir-targeting lands (#4544)#4546

Open
cbeaulieu-gt wants to merge 1 commit into
nexu-io:mainfrom
cbeaulieu-gt:fix-4544-hide-warp-non-darwin
Open

fix(daemon): hide Warp open-in launcher on win32/linux until dir-targeting lands (#4544)#4546
cbeaulieu-gt wants to merge 1 commit into
nexu-io:mainfrom
cbeaulieu-gt:fix-4544-hide-warp-non-darwin

Conversation

@cbeaulieu-gt

@cbeaulieu-gt cbeaulieu-gt commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Fixes #4544

Why

Follow-up to #4539 / #4542, addressing @nettee's review on #4542.

#4542 made the Warp host tool detectable and launchable on Windows, but surfaced a deeper limitation: Warp has no reliable directory-targeted launch on Windows/Linux. Empirically verified on Windows:

  • Cold start (Warp not running): the spawn cwd is ignored — Warp opens at its home directory.
  • Warm (Warp already running): the relaunch honors cwd — the new tab opens at the project directory.

This cold/warm split is invisible to the user and is a bug magnet: a user who keeps Warp closed clicks "Open in Warp", lands at home instead of their project, and reports "Open in Warp ignores my project" with no way to know why. Rather than ship inconsistent behavior, hide the Warp launcher on the platforms where it can't reliably target the directory until upstream support lands (warpdotdev/warp#6357). macOS (open -a Warp <dir>) is unaffected.

What users will see

  • On Windows and Linux: the "Open with editor" menu (project view → top-right launcher) and the od project editors / od project open-in CLI surfaces no longer list Warp. A direct POST /api/projects/:id/open-in with editorId: "warp" now returns 400 on these platforms.
  • On macOS: no change — Warp still appears and launches as before.

This is a default-behavior change for existing Windows/Linux users (Warp was briefly offered via #4542's draft; it is now gated off).

Surface area

  • UI — the Warp item is removed from the "Open with editor" menu on win32/linux
  • Keyboard shortcut
  • CLI / env varod project editors / od project open-in reflect the same gate (both go through /api/editors + applicableForPlatform)
  • API / contract — no /api/* shape change; the HostEditor response is unchanged, the catalogue is just filtered
  • Extension point
  • i18n keys
  • New top-level dependency
  • Default behavior change — existing win32/linux users no longer see Warp in the launcher
  • None

Dual-track note: this is a filtering change, not a capability addition. The gate lives in one place (applicableForPlatform) that both the UI list (GET /api/editors) and the launch path (POST /api/projects/:id/open-in) already consult, so UI and CLI stay in lockstep automatically.

Screenshots

Verified live on Windows (win32) against the branch build. The "Open with editor" menu lists exactly: Cursor, VS Code, Explorer (installed) and Windsurf, Zed, Qoder, Antigravity, WebStorm, IntelliJ IDEA (not installed) — Warp is absent, matching GET /api/editors 1:1. The darwin-only Finder/Terminal entries are correctly absent too.

download

Bug fix verification

Test path: apps/daemon/tests/host-tools-routes.test.ts (new describe block, "platform gate — Warp is darwin-only…").

  • Did the test go red on main and green on this branch? yes — red because CATALOGUE / applicableForPlatform were private (import resolved undefined); green after the entry gains platforms: ['darwin'] and the two symbols are exported.
  • Assertions: applicableForPlatform(warp, 'win32'|'linux') === false, applicableForPlatform(warp, 'darwin') === true, plus a regression guard that cursor stays applicable on all platforms (no over-broad gating).

Validation

  • pnpm --filter @open-design/daemon test -- host-tools-routes8/8 green (the 6 new gate assertions + the 2 pre-existing finder/terminal tests).
  • pnpm --filter @open-design/daemon test (full suite) — no new failures attributable to this change; pre-existing failures are external-dependency/env tests (provider auth keys absent, agent CLIs absent, vela binary unresolved, Langfuse telemetry), none touching host-tools.
  • pnpm typecheckpass (all packages).
  • pnpm --filter @open-design/daemon buildpass.
  • pnpm guard — fails on this branch and main identically (stale design-system token artifacts, unrelated to this diff; confirmed via stash/pop on the same checkout).
  • Live win32 verification: GET /api/editors returns no warp id; rendered "Open with editor" menu shows no Warp (see Screenshots).

🤖 Generated by Claude Code on behalf of @cbeaulieu-gt

Warp cannot reliably target a directory on Windows/Linux: a cold start
(Warp not running) ignores the spawn cwd and opens at home, while a warm
relaunch honors it. This cold/warm split is invisible to the user and
makes "Open in Warp" land at the wrong directory unpredictably.

Gate the Warp catalogue entry to platforms: ['darwin'] (mirroring the
terminal entry) so the existing applicableForPlatform filter hides it on
win32/linux until upstream dir-targeting lands (warpdotdev/warp#6357).
macOS (open -a Warp <dir>) is unaffected.

Promote CATALOGUE, applicableForPlatform, CatalogueEntry, Platform,
RealPlatform to exports so the platform gate is unit-testable without
mocking process.platform.

Follow-up to nexu-io#4539 / nexu-io#4542.
@lefarcen lefarcen added size/S PR changes 20-100 lines risk/high High risk: apps/desktop, daemon, auth, migration, workflows, package deps labels Jun 19, 2026
@lefarcen lefarcen requested a review from nettee June 19, 2026 02:19
@lefarcen lefarcen added the type/bugfix Bug fix label Jun 19, 2026

@nettee nettee left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cbeaulieu-gt I verified the Warp gating change across the daemon’s two relevant paths: GET /api/editors now filters the entry out off-Darwin, and POST /api/projects/:id/open-in rejects unsupported platforms before any launch resolution. The added coverage around the Warp gate and the cross-platform Cursor guard matches the regression boundary this follow-up is trying to protect. Nice cleanup on tightening this behavior before it ships wider.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.

@lefarcen lefarcen added this pull request to the merge queue Jun 19, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk/high High risk: apps/desktop, daemon, auth, migration, workflows, package deps size/S PR changes 20-100 lines type/bugfix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Hide the Warp "Open in…" launcher on Windows/Linux until Warp supports directory-targeted launch

3 participants