Release Notes
Improved
-
wt step tether: New[experimental]operation that runs a command in its own process group and kills the whole group when the command exits or its worktree is removed (a 250ms portable poll —killpgon Unix,taskkill /T /Fon Windows). A singlepost-starthook (wt step tether -- npm run dev) replaces the usualpost-start-to-launch /pre-remove-to-stop pair, and unlikepre-removeit also cleans up after agit worktree remove, anrm -rf, or a crashed hook — the leak path that eventually saturates macOSfseventsd. Arguments after--run directly with no shell, matchingwt step for-each. (#2785) -
Gemini CLI extension: Worktrunk now ships a Gemini CLI extension for
wt listactivity tracking, installable withgemini extensions install max-sixty/worktrunk. The extension's manifest, hooks, and skills resolve at the repo root, so the GitHub-name install path works without a local clone. (#2803, #2807, thanks @rafavital for the request in #2763)
Fixed
-
Project hooks are frozen at the approval gate: A project-defined
pre-*/post-*hook command was selected from.config/wt.tomltwice — once to build the approval prompt, once at execution — and the operation itself mutates state between the two reads (a merge moves the target ref, an auto-rebase rewrites the feature config, a removal scrubs the worktree,git worktree addmaterializes a--createworktree). The second read could select a command the user never approved; on a freshly cloned repo that is unapproved code execution. The gate now freezes the command set into an immutable plan that the executor consumes verbatim, so post-operation hooks can never run an unapproved command. Behavior is otherwise unchanged, andwt merge --no-hooks(or a declined/empty plan) now returns before loading approvals, so a malformedapprovals.tomlno longer aborts a command that had nothing to authorize. (#2806) -
Declining the
wt mergecommit-append no longer skips hooks: When a project'spre-merge/post-mergehooks were already approved,wt mergebundled the commit-message append into the same prompt; declining the lone append prompt skipped every hook for that run even though the user only meant to skip the append. The append is now gated on its own path (the same onewt step commit/wt step squashuse), so declining it drops only the append. On a fresh repo where both the hooks and the append are unapproved this is now two prompts instead of one bundled prompt. Decline messages are also canonicalized acrossmerge,remove,prune, andswitch(Commands declined, … without hooks). (#2802) -
Windows
wt step prune.git/configrace:wt step prunecould intermittently fail on Windows withunable to access '.git/config': Permission denied— its parallel branch-integration checks read.git/configwhile an inlinegit branch -Drewrote it via git's lockfile rename, which on Windows briefly blocks concurrent readers. Branch-integration reads are now excluded from overlapping thegit branch -Dthat rewrites config. (#2808)
Install worktrunk 0.52.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.52.0/worktrunk-installer.sh | sh && wt config shell installInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.52.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.52.0
| File | Platform | Checksum |
|---|---|---|
| worktrunk-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| worktrunk-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| worktrunk-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| worktrunk-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| worktrunk-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
Install via Cargo
cargo install worktrunk && wt config shell installInstall via Winget (Windows)
winget install max-sixty.worktrunk && git-wt config shell installInstall via AUR (Arch Linux)
paru worktrunk-bin && wt config shell install