@henryqw/pi-herdr-done
Close and remove the current Herdr-managed linked worktree safely.
Why
- Created for: Clean up finished worktree tasks without manually removing checkouts, closing tabs, and pulling parents.
- Advantage:
/doneremoves the checkout, closes workspace tabs, fast-forwards the parent with--ff-only, and refuses unsafe cases unless forced.
Install
pi install npm:@henryqw/pi-herdr-done
Requires a Pi session running inside Herdr.
Use
| Surface | Type | Purpose |
|---|---|---|
/done |
command | Remove the current worktree checkout, close its Herdr workspace’s tabs, and fast-forward the parent workspace. |
/done --force |
command | Same, even when the worktree is dirty or used by tabs in another workspace. |
Idle and confirmation
- Both forms wait for Pi to become idle.
/doneasks for confirmation first./done --forceskips confirmation because the flag already states intent.
Normal removal runs:
git worktree remove .
herdr tab close <other-tabs-in-$HERDR_WORKSPACE_ID>
git -C <parent> pull --ff-only
herdr tab close "$HERDR_TAB_ID"
Parent pull and tabs
- The parent pull runs only when this session ran in a linked worktree with a non-bare primary.
- It fails safely when the parent has diverged.
- Parent tabs do not block worktree removal or the parent pull.
- Once removal succeeds, every tab in the current Herdr workspace closes, even when the parent pull fails.
- Concurrent completions serialize on a lock around the parent checkout.
Herdr requirements and force
- Tabs in the current Herdr workspace close automatically.
- If a tab from another workspace still uses the current checkout,
/donerefuses and lists it by name. Use/done --forceto remove the checkout regardless. - The command requires Pi inside Herdr with
HERDR_ENV=1,HERDR_WORKSPACE_ID, andHERDR_TAB_IDset. - Dirty worktrees make
/donefail. Commit or discard changes, or use/done --forceto explicitly delete them.