fix(setup): launch the docker app the CLI is actually pointed at - #6253
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
PR SummaryLow Risk Overview Launch logic tries the chosen app first; if the choice was only a guess (not an explicit OrbStack selection), it can retry the other GUI app. Explicit OrbStack targeting does not fall back to Docker Desktop, since Optional Reviewed by Cursor Bugbot for commit a127fe7. Configure here. |
Greptile SummaryThe PR adds macOS Docker-provider detection and provider-specific launch, prompt, timeout, and recovery messages.
Confidence Score: 4/5The PR is not yet safe to merge because stale OrbStack configuration can still block required setup even when Docker Desktop is installed. The reply from "" claims the stale-selection issue was fixed, but current code still marks every OrbStack signal explicit without checking installation and refuses to try Docker Desktop when opening OrbStack fails. Files Needing Attention: scripts/setup/docker.ts
|
| Filename | Overview |
|---|---|
| scripts/setup/docker.ts | Adds provider-aware Docker startup, but an explicit stale OrbStack signal still suppresses fallback to an installed Docker Desktop application. |
Reviews (6): Last reviewed commit: "improvement(setup): don't tell CLI-runti..." | Re-trigger Greptile
|
@cursor review |
|
@cursor review |
…daemon ensureDocker() always ran `open -a Docker` to relaunch a stopped daemon on macOS, which silently no-ops for OrbStack users (no Docker.app bundle exists), leading to a misleading "GUI license acceptance" timeout error. Now it checks the docker CLI's active context first (accurate regardless of install location) and falls back to checking for OrbStack.app, so the wizard launches and messages the app that's actually installed.
…er Desktop context macDockerApp() fell through to the OrbStack.app existence check whenever docker context show returned anything other than "orbstack" — including a known, explicit context like "desktop-linux". With both apps installed but Docker Desktop active and stopped, this launched OrbStack while daemonUp() kept polling Docker Desktop's socket, timing out with OrbStack-flavored guidance for a Docker Desktop problem. The path fallback now only runs when the context command gives no answer at all (null); any resolved context is trusted outright. Flagged identically by Greptile and Cursor Bugbot on PR #6250.
…Stack Context detection only fell back to the app bundle when `docker context show` failed outright, so an OrbStack-only Mac sitting on the `default` context still resolved to Docker Desktop — the same 90s hang this fix exists to remove. Treat an explicit OrbStack selection as the only positive context signal and otherwise pick whichever app is installed. Read `DOCKER_HOST` first: it overrides the active context, so the context name is not authoritative while it is set.
A context or DOCKER_HOST left behind by an OrbStack uninstall selected an app that can never launch, turning a working Docker Desktop start into a guaranteed 90s timeout. Gate the OrbStack signal on the bundle being present and fall through to whichever app is. Look in ~/Applications as well as /Applications while here — Homebrew casks honour --appdir, so a user-local install is not unusual and a hardcoded /Applications check would misread it as "not installed".
…paths A Homebrew `--appdir` can put OrbStack anywhere, so enumerating install directories will always have a tail that reads a present app as missing and sends setup to the wrong one. Fall back to LaunchServices when the well-known directories miss: that is the same lookup `open -a` performs, so availability now agrees with what the launch will actually do.
`path to application` can raise a modal "Where is …?" picker when the name does not resolve, which in a terminal wizard reads as a hang. Drop it: the launch itself already answers the question, since `open` exits non-zero when macOS knows no such app, instantly and without UI. That inverts the design. Rather than predict which app is installed and then launch it, pick a provider, try to start it, and let the exit code correct a guess — so the directory probe no longer has to enumerate every possible install location to be right. An explicit OrbStack selection is now never redirected to Docker Desktop. The CLI is addressing OrbStack's socket, so `docker info` keeps failing no matter how well Docker Desktop starts; the earlier fallback only replaced a 90s timeout with a differently worded one. Say the context is stale and how to fix it instead.
d6dcd4e to
ce25e1d
Compare
|
@cursor review |
db.ts and redis.ts call ensureDocker(false) and branch on the boolean to offer an external Postgres or Redis instead. Throwing past that aborts the whole wizard when a working non-Docker path was on the table, so every post-confirm failure now warns and returns false unless Docker is required. That covers the 90s-timeout throw too, which ignored `required` before this branch existed — leaving it as the one path that still aborts would make the flag mean two different things in one function. Also name DOCKER_CONTEXT in the stale-selection hint. It overrides the config context, so `docker context use` alone leaves the CLI pointed at OrbStack and the next run fails identically.
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit b07b731. Configure here.
…sktop Having the docker CLI but neither GUI app is exactly what a colima or Rancher Desktop user looks like, and the failure told them to install Docker Desktop — advice for a problem they don't have. Name the situation accurately and add starting an existing runtime as an option.
|
@greptile Re the 4/5 on Reaching the guess path at all requires
So in both cases starting Docker Desktop makes The Where I do agree there is residual imprecision: if a user has both apps and prefers OrbStack while sitting on the No code change for this one. Latest commit is |
|
@cursor review |
|
The reasoning holds. The invariant is airtight: reaching the guess path proves the CLI is not addressing OrbStack, so starting Docker Desktop is the right call. The remaining "imprecision" you call out — dual-install user on The No objection to the current state. The 4/5 comment was a false positive. |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit a127fe7. Configure here.
Summary
Carries over #6250 by @BohdanVilischuk (commits cherry-picked, authorship preserved) and adds a follow-up fix. Full credit for finding and fixing this goes to them.
bun run setuponly knew how to relaunch Docker Desktop, so OrbStack users gotopen -a Dockeragainst an app they don't have, a 90s wait, then an error about Docker Desktop's license screen. The wizard now detects which app owns thedockerCLI and launches, prompts, and errors with the right name.docker context showfailed outright. An OrbStack-only Mac sitting on thedefaultcontext (OrbStack symlinks/var/run/docker.sock; also anyone who randocker context use default) still resolved to Docker Desktop — the same hang the fix exists to remove. An explicit OrbStack selection is now the only positive context signal; otherwise we pick whichever app is actually installed, which also covers CLIs too old fordocker context show.DOCKER_HOSTfirst. It overrides the active context, so the context name isn't authoritative while it's set.Docker Desktop stays the tiebreak when both apps are installed and nothing points at OrbStack, matching today's behavior. Non-macOS paths are untouched.
Type of Change
Testing
Verified the resolver against a real Docker Desktop install (context
desktop-linux) plus shimmeddockerbinaries covering every branch:DOCKER_HOST, contextdesktop-linuxDOCKER_HOST=unix://…/.orbstack/run/docker.sockDOCKER_HOST=tcp://…(remote daemon)DOCKER_CONTEXT=orbstackorbstackdefault, Docker.app installeddocker context showexits non-zero (old CLI)Checklist