github max-sixty/worktrunk v0.32.0
0.32.0

7 hours ago

Release Notes

Improved

  • Hooks rationalized: Every lifecycle event now has a symmetric pre- (blocking) / post- (background) pair. This required one rename: post-createpre-start, reflecting that it runs before post-start as a blocking dependency step. A new post-commit hook fires in the background after commits (including squash commits during merge). post-merge is now background instead of blocking, consistent with all other post-* hooks. Configs using post-create get a deprecation warning on any wt command; run wt config update to rename automatically. The old name continues to work during the deprecation period. Docs (#1679, closes #1670, thanks @ortonomy for reporting #1571)

  • Detached worktree support: Detached HEAD worktrees can now be removed via wt remove /path/to/worktree and switched to via wt switch /path/to/worktree. The interactive picker also handles detached worktrees for both operations. (#1665, #1680, thanks @mjakl for reporting #1661)

  • In-place worktree removal in picker: Press alt-r in the wt switch picker to remove the selected worktree without leaving the picker. Currently hidden from picker legend and help text pending a cursor-reset issue (#1695). (#1677, #1696)

  • Smarter column dropping in wt list: Low-priority columns (Message, Time, Commit) are now dropped when Summary needs more space, using graduated thresholds based on priority distance. Extends the no-data column dropping from v0.31.0. (#1678)

Fixed

  • Bare repo project config ignored: .config/wt.toml placed in the primary worktree of a bare repository was not found when running commands from the bare repo root directory. Config is now loaded from the primary worktree as fallback, and accidental config in the bare repo root itself is skipped. Fixes #1691. (#1692, #1697, thanks @seakayone)

  • pre-start hook failure was non-blocking: pre-start was the only pre-* hook that warned on failure instead of aborting. All pre-* hooks now consistently use FailFast. (Breaking: pre-start hook failures that previously only warned now abort the operation.) (#1708)

  • Spurious mismatch warning for detached worktree switches: Switching to a detached worktree by path produced a "Branch-worktree mismatch" warning because the directory name was treated as a branch name. (#1686)

  • Detached worktree switch output showed redundant path: Output now shows "detached worktree" instead of repeating the directory name (which duplicated the path after @). (#1685)

  • Picker alt-r removal fixes: Picker removals now validate the worktree synchronously before removing it from the list, perform the actual git removal on a background thread to prevent UI freezing, and correctly handle detached worktrees. (#1699, #1702, #1717)

Documentation

  • Changelog and migration guide for hook rationalization. (#1693)

Internal

  • All test git commands now go through Cmd for consistent debug logging and timing traces. (#1714, #1716, #1718)

  • Worktree removal logic extracted into shared helpers. (#1683, #1700, #1701)

Don't miss a new worktrunk release

NewReleases is sending notifications on new releases.