Skip to content

1.4.10

Choose a tag to compare

@github-actions github-actions released this 30 Apr 19:42
· 58 commits to main since this release
release: 1.4.10 — fix worktree_failed retry + double create confirm

User reported: 'j'ai créé une tâche, j'ai eu 2 confirmations,
j'ai cliqué sur Play et j'ai eu une erreur'.

  Lancement ignoré : worktree_failed:Command failed with exit
  code 255: git worktree add -b
  backlog/subtask_008-add-test-30-avril-html-with-hell ...

Investigation: their test-backlog-demo had run_006 (failed) and
run_019 (failed) still occupying their old branches because
nothing cleaned them. New run_021 retried subtask_008 with the
SAME branch name → git refused.

Three structural fixes:

1. Run id in branch name (worktrees.ts)
   buildRunBranchName(taskId, taskTitle, runId?) now returns
   backlog/<task>-<slug>-<runId>. Retries on the same subtask always
   get a fresh branch. Used '-' not '/' as the separator because
   legacy 'backlog/<task>-<slug>' branches still exist in upgraded
   workspaces — and git refuses to create 'foo/bar' when leaf 'foo'
   exists in refs/heads/.

2. Worktree gc on hydrate (orchestrator-loop.ts)
   garbageCollectWorktrees() now runs alongside the 1.4.9 run-archive
   sweep, on every server start. Orphaned worktrees from failed runs
   stop piling up.
   Verified: test-backlog-demo had 3 worktrees (main + run_006 +
   run_019). After hydrate with new code, just main remained.

3. Skip CreateTaskDialog 'applied' phase + reword StartPromptDialog
   The 'applied' phase briefly rendered 'Tâche créée' / '✓ Tâche
   créée' before the parent closed the dialog. Then StartPromptDialog
   opened with body 'Tâche X créée avec N sous-tâches' — visually a
   second 'créée' confirmation. Two changes:
   - CreateTaskDialog no longer sets phase='applied' on success; it
     just calls onCreated() and the parent closes the modal.
   - StartPromptDialog title/body rewritten to action-focused:
     'Lancer cette tâche maintenant ?' / '{taskId} sera exécutée
     par l'agent.' Single confirmation, single ask.