Release Notes
Improved
-
wt step diff --branch:wt step diffgained a-b/--branchflag, mirroringwt step commit, so the diff can target another worktree's branch without leaving the current one. The branch must have a checked-out worktree. (#2995) -
Squash templates can use commit bodies: The squash commit-message template gains an experimental
{{ commit_details }}variable — a list of{ subject, body }objects for the commits being squashed — alongside the existing{{ commits }}(now documented as the commit subjects). Templates can incorporate full commit bodies, not just subject lines. (#2983, thanks @florianilch) -
Recommended Claude Code commit command drops the
CLAUDECODE=prefix: Claude Code removed the nested-session check that rejectedclaude -plaunched from inside another session, so the workaround is gone. The recommended[commit.generation]command shown bywt config createno longer carries a leadingCLAUDECODE=, andwtno longer stripsCLAUDECODEfrom the environment before running commit-generation commands. (#2979)
Fixed
-
Nushell wrapper installs where Nushell actually autoloads it:
wt config shell install nuwrotewt.nuto$nu.default-config-dir/vendor/autoload, which Nushell never autoloads — on Linux the wrapper was written but silently never loaded, sowtwas never wrapped (it happened to work on macOS/Windows by coincidence of path layout). It now installs to$nu.vendor-autoload-dirs | last, and install/uninstall clean up any worktrunk wrapper stranded at the old location. (#2992, thanks @nnutter for reporting) -
Claude Code hooks work for Fish shell users: The plugin's hook commands used
${CLAUDE_PLUGIN_ROOT}brace syntax, which Fish doesn't expand; they now use$CLAUDE_PLUGIN_ROOT, so the activity and worktree-lifecycle hooks fire correctly under Fish. (#2962, thanks @amw) -
Pager no longer wedges the terminal on Ctrl-C (Windows): Interrupting the
--helppager (less) with Ctrl-C on Windows could leave the terminal in a broken state;lessnow quits cleanly on interrupt. (#2969, thanks @ofek for reporting) -
Clearer error when the default branch has no commits: In a freshly initialized repo whose default branch is unborn,
merge/rebase/squash/push(and the diff report) failed withDefault branch main does not exist locallyplus a misleading hint to reset the cached value. They now report that the branch has no commits yet, without the wrong cache-reset suggestion. (#2990) -
diagnostic.mduploads as a gist again: The-vvdiagnostic report inlined raw NUL bytes from NUL-separated git output, sogh gist createrejected it as a binary file. Control bytes in the subprocess preview are now escaped. (#2991) -
wt listtolerates a missing index file: A repo with no<gitdir>/index(nothing ever staged) made the temp-index probe fail; a missing index is now treated as an empty one, matching git's own behavior. (#2884) -
Inline code renders in
--helpsection headings: Terminal--helpshowed literal backticks in headings authored with inline code (e.g. thewt config state logsheadingCommand log (commands.jsonl)). Headings now reduce inline code to plain text under the heading's uniform style. The--stage/--dry-runsubsection headings inwt step commit/squashwere also renamed to sentence case ("Staging", "Dry run"). (#3003)
Documentation
-
wt switchdocs give forge PR/MR URLs equal billing withpr:/mr:: The switch docs now present the full forge-URL form alongside thepr:Nshortcut. (#2970) -
New FAQ entry on moving uncommitted changes to a new worktree. (#3002)
Internal
- Bare-repo prompt opt-out stored as a hint:
worktrunk.skip-bare-repo-promptmoved under theworktrunk.hints.namespace, so it now lists underwt config state hintsand clears withwt config state clear(previously a top-level key that escaped both). Clean cutover: users who already opted out are re-prompted once on their nextwt switch --createin a dotted-name bare repo. (#3001)
Install worktrunk 0.57.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.57.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.57.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.57.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