fix(maestro): default the worktree toggle off when the directory is itself a worktree (#91)
Picking a project row that is itself a linked git worktree used to default 'Create git worktree' on, so spawning asked for a second worktree of an already-checked-out branch and git refused. Both clients now default the toggle off there: the session just runs in that existing worktree with no worktree record (not adoption). Turning it back on by hand still tries, per the issue's non-goal.
This commit is contained in:
+13
-3
@@ -430,9 +430,19 @@ export function createSpawnForm(opts: SpawnFormOptions): SpawnFormHandle {
|
||||
cwdRawWrap.hidden = true;
|
||||
markActiveProject(project.path);
|
||||
// The scan already knows this directory is inside a repo (#61): the
|
||||
// toggle defaults back on and no /api/gitroot round trip is needed.
|
||||
wtEnabled.checked = true;
|
||||
applyProjectRepo(project.base_repo ?? project.path);
|
||||
// toggle defaults back on and no /api/gitroot round trip is needed —
|
||||
// unless the directory *is* a linked worktree itself (#91): spawning
|
||||
// in place is the only thing that works there, so default the toggle
|
||||
// off. Turning it back on by hand still tries (and fails with git's
|
||||
// own message), which is deliberate (#91 non-goal).
|
||||
wtEnabled.checked = !project.is_worktree;
|
||||
if (project.is_worktree) {
|
||||
inferredBaseRepo = null;
|
||||
wtBody.hidden = true;
|
||||
wtHint.hidden = true;
|
||||
} else {
|
||||
applyProjectRepo(project.base_repo ?? project.path);
|
||||
}
|
||||
emit();
|
||||
// Picking a project pre-selects the command it was last used with.
|
||||
const match = presets.find((p) => p.command === project.last_command && p.command !== "");
|
||||
|
||||
Reference in New Issue
Block a user