feat: launch a project (with or without an agent) from the Terminal tab - #274
Open
NovakPAai wants to merge 1 commit into
Open
feat: launch a project (with or without an agent) from the Terminal tab#274NovakPAai wants to merge 1 commit into
NovakPAai wants to merge 1 commit into
Conversation
Add a "+ Project" launcher popover to the Workspace/Terminal toolbar that mirrors the Projects-tab launch model but opens in-app terminals: - Terminal — open a plain terminal in the project folder (no agent) - Run <agent> — open a terminal and auto-run the preferred/last-used agent - Agent menu — pick a specific installed agent to launch in the folder Reuses openInWorkspace(), which auto-runs the agent only when the folder actually opens, so a missing folder never misfiles agent history into ~. Agent commands mirror the server's buildLaunchCommand (terminals.js); pi resolves per-machine (pi vs omp) via getPiCommand(). Missing folders shown disabled; includes filter, empty-state, Escape/outside-click close, popover teardown on view-detach, height clamp, and theme-aware styling. Pure frontend (workspace.js + styles.css) — covers the npm CLI and the desktop app from one codebase. No backend changes.
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.
@vakovalskii — review please 🙏
What this is
A new "+ Project" control in the Terminal (Workspace) toolbar: a popover listing your registered projects (like the Projects tab), but it opens in-app terminals. Each existing project offers three actions:
"Just launch an agent without a project" is still available via the per-pane
Launch ▾(unchanged).Why
~, and the per-paneLaunch ▾ran the agent in the home dir (agents key their history bycwd, so the conversation "gets lost"). Now you can pick a project from the Terminal tab and start the agent directly in its folder.openInWorkspace(), which auto-runs the agent only when the folder actually opens (a missing folder falls back to~WITHOUT running the agent, so history is never misfiled).buildLaunchCommand(src/terminals.js): Copilot →gh copilot suggest, Cursor →cursor-agent,piresolves per-machine (pi/omp) viagetPiCommand().Deployment coverage
Pure frontend (
workspace.js+styles.css), no backend changes → works identically in the npm CLI (web UI) and the desktop app from one codebase.UI states
Missing folders shown disabled with a "missing" note (degrades gracefully when the backend has no
existsfield yet); filter; empty-state linking to the Projects tab; close on Escape / outside-click / toggle; popover teardown on view-detach; height clamp; light+dark theming; keyboard support.Review (pre-PR)
Ran code-reviewer + security-reviewer and fixed all severities:
--danger→--accent-red,role="dialog"→role="group", deadgeminientry, comment accuracy, vertical height clamp,__proto__key guard forlastUsedByPath).Artifacts
docs/design/terminal-project-launcher.mdspecs/terminal-project-launcher.featureTest plan
<script>name is escaped, 0 injected tags), filter/empty-state, Escape/outside-click/toggle/inner-scroll, teardown, 0 console errors, renders in dark+light.@lydell/node-ptyis not installed in my checkout, so the pty terminal itself wasn't brought up live — a full click-through in the mounted toolbar should be run where node-pty is present.