Repository navigation
Conversation
Attach a positional path to a live T3 backend (desktop or CLI), launching the installed desktop app when needed, instead of always starting a new server. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Effect service conventions review of the changed TypeScript. One finding: the new desktopLaunch.ts resolves the host platform from the Effect environment but reads the host environment from the process global.
Posted via Macroscope — Effect Service Conventions
Return false after a desktop launch timeout so t3 <path> still starts the CLI server, and wait for Windows spawn success before treating launch as ok. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressed both Macroscope notes:
|
ApprovabilityVerdict: Needs human review This PR introduces a new feature that changes CLI behavior: You can customize Macroscope's approvability policy. Learn more. |
A transient miss before desktop launch must not delete server-runtime.json, or later poll/attach cannot find a still-running backend. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Also fixed the remaining Bugbot note: the first |
There was a problem hiding this comment.
One finding in apps/server/src/cli/desktopLaunch.ts: the desktop launch effect acquires its process/filesystem capabilities from Node globals rather than the Effect environment. (The previously reported process.env.LOCALAPPDATA / NodeOS.homedir() default on line 17 is still present and is part of the same issue.)
Posted via Macroscope — Effect Service Conventions
Walk worktree/home and userdata+dev runtime dirs so `t3 .` attaches to a running `vp run dev` instead of treating the server as absent. Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
One new finding in apps/server/src/cli/project.ts. The two previously reported issues in apps/server/src/cli/desktopLaunch.ts (runtime-backed spawnSync/spawn/existsSync and process.env.LOCALAPPDATA not acquired from the Effect environment alongside HostProcessPlatform) are unchanged at this head; see the existing inline comments rather than new duplicates.
Posted via Macroscope — Effect Service Conventions
Only snapshot/auth reachability stays soft so desktop polling can continue; workspace validation and project.create errors propagate instead of launching another backend. Also drop the unused clearOnFailure option on project-command live resolution. Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit e9a31ce. Configure here.
Retry attach/poll on live-server transport failures after a snapshot, while keeping path validation as a hard stop. Drive desktop launch through ChildProcessSpawner, FileSystem, and HostProcessEnvironment instead of Node globals. Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
One convention finding on the new live-open path in apps/server/src/cli/project.ts: statically known tagged failures are classified with Schema.is predicates instead of Effect.catchTags. Everything else in the diff (environment-acquired ChildProcessSpawner / HostProcessEnvironment / FileSystem in desktopLaunch.ts, namespace subpath imports, no service-instance injection or hidden runtimes) matches the conventions.
Posted via Macroscope — Effect Service Conventions
Scan FreeDesktop application dirs so AppImage-minted gtk-launch ids work, and classify transient live-open errors with Effect.catchTags. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Note 🤖 GPT-5.6 Sol responding on behalf of Theo We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together. This adds a new CLI-to-desktop or server routing workflow for If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. |

Summary
t3 ./t3 <path>now opens that directory as a project instead of always starting a new server.Why
Users expect
cursor ./code .ergonomics: from a repo, open it in the app. Baret3still starts a server; only a positional path triggers open.Out of scope
Test plan
t3 /path/to/repoadds/reuses the project in~/.t3and shows it in the sidebarnpx t3/vp run devserver up: path attaches to that server’s homet3 .launches desktop and opens the foldert3 .starts the CLI server (previous behavior)vp test run apps/server/src/bin.test.ts apps/server/src/cli/desktopLaunch.test.tsMade with Cursor
Note
Open a folder in desktop app or running server via
t3 .t3CLI, it first tries to attach to an already-running server viaopenLiveProjectIfPresent, then falls back to launching the desktop app (polling for readiness), and only starts a new CLI server if both fail.tryLaunchDesktopAppin desktopLaunch.ts with cross-platform support:open -aon macOS, spawning executables underLocalAppDataon Windows, andgtk-launchwith.desktopfile discovery on Linux.findAliveServerRuntimeCandidatesin pair.ts to enumerate live server processes acrossuserdataanddevstate variants before HTTP probing.t3 .no longer always starts a server; it may return early after opening the project in an existing process.Macroscope summarized a6ee964.