v3.6.2 - Parked, and an undo for groups
v3.6.2 - Parked, and an undo for groups
A ticket had work in it, but nobody was on it. It was not To Do, because a worktree and a Claude session existed. It was not In Progress, because the agent was idle and you had moved on. So it sat in In Progress and cluttered the board. A group had a similar problem. Once you started a group, you could not take it apart. A wrong grouping had no path back and no way to recover a mistake. This release adds a Parked column for the first case and a reversible Unwind for the second.
See it
Higher-quality video: dispatch-v3.6.2-parked-unwind.mp4
A column for work you set aside
Parked sits between In Review and Done. You move a ticket there by hand, with a drag or the Move to picker. Nothing automatic moves a ticket into Parked. A Parked ticket keeps its worktree and its Claude session. The terminal stays live, and the card keeps its PR badge. When the agent finishes while the ticket is Parked, the ticket stays Parked. Dispatch records the status marker and does not move the card. When you send the ticket a prompt, it moves back to In Progress on its own. Dispatch keeps the recorded marker, so the text that is still on the pane cannot bounce the card straight back to Agent Done. If the session dies while the ticket is Parked, the card offers Resume as before, and the ticket stays in Parked.
Unwind a group, and undo it
A group card and each of its members now show an Unwind button in the detail panel. Click it and pick To Do or Inbox. Dispatch kills the group's terminal and tmux session, moves the group card into an Archive, removes the group link from each member, and sends the members to the column you picked. Nothing on disk changes. The worktrees, the branches and the workspace folder stay where they are. A toast appears with an Undo button. Undo puts the group back in one step: the same card, the same column, the same session record, and the members re-linked. The restored session shows Resume, and one click brings Claude back with no re-setup. Undo refuses when a member moved on, for example when you dragged it to another column, grouped it again or started it. The toast then shows which member blocks the restore, and the archive row stays.
The Archive in Settings
Settings, Cleanup gains an Archived groups section. Each row shows the group, its members, and where the members went. Restore does the same thing as Undo, at any time. Delete removes the worktrees and the workspace folder. It never deletes a branch. Delete refuses when a worktree has uncommitted changes, or when Dispatch cannot check a worktree. The row then shows the reason and a Delete anyway button. A retention setting on the same page deletes archived groups on its own after a number of days. The default is 30. Zero means never. The automatic delete never forces, so uncommitted work stays until you delete it by hand.
What changed underneath
The board database gains an archive table. An unwind writes the whole group card into it, with every session marked lost, before the card set persists without the group. A crash between the two leaves a restorable row, not a vanished group. A restore re-inserts the snapshot as a whole object, so the session projection keeps its single writer. The cleanup saga's kill, preflight and removal steps moved into named helpers. The Done cleanup and the archive delete now run the same code in the same order.
Unwind holds the card-scoped cleanup guard while it kills processes, so a resume, a cleanup or a second unwind cannot interleave with it. Delete reads the live card map before any destructive step. A delete that lands while a restore persists refuses instead of removing a live group's worktrees. The retention sweep skips a row whose group is live again. The Undo toast ignores a slow restore result that belongs to an earlier group, so it cannot dismiss or mislabel a newer toast.
Known limits
Unwind works on groups only. A single started ticket keeps its identifier as its workspace path, branch and tmux name, so a restart after an unwind would adopt the old worktree in place. The pane-scan status channel does not move a Parked card back to In Progress. Only the hooks channel does, the same rule that already applies to Agent Done and In Review. There are no keyboard shortcuts for Park or Unwind yet.
Upgrade notes
There is no configuration step. The archive table is created on the first boot. archiveRetentionDays is optional in config.json and defaults to 30. Restart the running Dispatch after you upgrade.
Full changelog: v3.6.1...v3.6.2
Requires Node ≥ 22.22, tmux, ttyd, git, and the Claude Code CLI. Setup is in the README.
