Fix: /handoff regression - use respawn-pane with direct claude command

Three related fixes:

1. lifecycle.go: Use gt mail delete instead of gt mail read to prevent
   lifecycle requests from accumulating.

2. handoff.go: Return exec claude command for respawn-pane instead of
   gt crew at which tries to attach to existing session.

3. handoff.md skill: Work without --cycle and -m flags, send mail separately.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Steve Yegge
2025-12-23 00:23:18 -08:00
parent 441bafe7a8
commit a5a37f5d63
3 changed files with 26 additions and 17 deletions

View File

@@ -300,10 +300,12 @@ func (d *Daemon) syncWorkspace(workDir string) {
}
}
// closeMessage marks a mail message as read by closing the beads issue.
// closeMessage removes a lifecycle mail message after processing.
// We use delete instead of read because gt mail read intentionally
// doesn't mark messages as read (to preserve handoff messages).
func (d *Daemon) closeMessage(id string) error {
// Use gt mail commands for town-level beads
cmd := exec.Command("gt", "mail", "read", id)
// Use gt mail delete to actually remove the message
cmd := exec.Command("gt", "mail", "delete", id)
cmd.Dir = d.config.TownRoot
return cmd.Run()
}