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
{{ message }}
Repository navigation
Per-project setup script auto-run on worktree creation, plus named quick actions #153
T3 Code: project-scoped named shell commands with optional keybindings, configurable to run automatically when a worktree is created (e.g. npm install) (guide). Vibe Kanban automates setup scripts on worktree creation; Emdash has per-project setup commands.
Solenta today
setupWorktree (electron/worktrees.js:501-544) is exactly git worktree add + store update. No hook for npm install, pnpm i, direnv, .env symlinks. Dev servers are limited to detected npm scripts (electron/devservers.js:7,178).
Why it matters
Every fresh worktree needs dependency install before the agent or the user can run anything; agents that cannot run tests because deps were never installed is a daily papercut. Every competitor treats "worktree created -> env ready" as one step.
Scope suggestion
Per-project setup command run (async, logged) on worktree creation, plus named quick actions in the thread header ("run lint", "reset db").
Implementing as two project-scoped fields, not a generic environment contract (#396 stays separate):
setupCommand: one shell string, fired after a new worktree is created (git worktree add already succeeded). Async, logged as [setup] transcript events, never undoes the worktree on failure. Idempotent setupWorktree (already has a path) does not re-run.
quickActions: up to 8 named {id, name, command} rows. Shown as compact buttons in the thread header. Same shell runner as verify (/bin/sh -c, Git Bash on Windows, WSL wrap when needed).
Config lives in Edit project. Re-run setup from the header if the auto-run failed.
Out of scope: honoring devcontainer.json / Copilot setup steps (#396), copying .env (#185), keybindings.
Edit project: Worktree setup field + named quick actions (name + command, up to 8).
New worktree (git worktree add) fires setupCommand in the worktree, async. [setup] events go on the thread. Failure does not remove the worktree. A second setupWorktree on an existing path does not re-run.
Thread header: Setup button (when a setup command is set) plus one button per named action. Same shell runner as verify (/bin/sh -c, Git Bash on Windows). Re-run setup from the header if the auto-run failed.
Not in this change: honoring devcontainer.json (#396), copying .env (#185), keybindings.
Activity
currentbits commentedon Aug 22, 2026
Implementing as two project-scoped fields, not a generic environment contract (#396 stays separate):
setupCommand: one shell string, fired after a new worktree is created (git worktree addalready succeeded). Async, logged as[setup]transcript events, never undoes the worktree on failure. IdempotentsetupWorktree(already has a path) does not re-run.quickActions: up to 8 named{id, name, command}rows. Shown as compact buttons in the thread header. Same shell runner as verify (/bin/sh -c, Git Bash on Windows, WSL wrap when needed).Config lives in Edit project. Re-run setup from the header if the auto-run failed.
Out of scope: honoring
devcontainer.json/ Copilot setup steps (#396), copying.env(#185), keybindings.currentbits commentedon Aug 22, 2026
Implemented on this branch.
git worktree add) firessetupCommandin the worktree, async.[setup]events go on the thread. Failure does not remove the worktree. A second setupWorktree on an existing path does not re-run./bin/sh -c, Git Bash on Windows). Re-run setup from the header if the auto-run failed.Not in this change: honoring
devcontainer.json(#396), copying.env(#185), keybindings.feat(projects): per-project setup command and header quick actions (#153
Copy gitignored config (.env) into new worktrees via .worktreeinclude (…
Copy gitignored config (.env) into new worktrees via .worktreeinclude (…
Copy gitignored config (.env) into new worktrees via .worktreeinclude (…