Release Notes
Improved
-
Hook execution pipelines: Post-* hooks support TOML array syntax for serial dependencies — steps execute in order, with maps within steps running concurrently.
post-start = [{ install = "npm install" }, { build = "npm run build", lint = "npm run lint" }]runs install first, then build and lint in parallel. Docs (#1713) -
Copy-ignored exclude patterns:
wt step copy-ignorednow skips built-in VCS metadata and tool-state directories (.bzr/,.conductor/,.entire/,.hg/,.jj/,.pi/,.pijul/,.sl/,.svn/,.worktrees/) by default. Additional excludes are configurable via[step.copy-ignored] exclude = [...]in user or project config. (#1667, thanks @shunkakinoki for #1653) -
Copy-ignored parallelized:
wt step copy-ignoreddirectory walks run in parallel with a dedicated 4-thread pool, improving performance on multi-core systems. (#1721) -
Alias append semantics: Aliases now use append semantics across all config layers, matching hook merge behavior. Within user config, per-project aliases append to global aliases on collision (global first). Across configs, project-config aliases also run alongside user aliases (user first, then project with approval) — previously the user version silently suppressed the project version. (#1724, #1727)
-
Agent skill discovery: The website now serves
.well-known/agent-skills/for web-based skill discovery by AI agents. (#1751)
Fixed
-
Picker alt-r skipped remove hooks: Removing a worktree via
alt-rin the picker bypassed pre-remove and post-remove hooks. Pre-remove hooks now run synchronously (non-zero exit aborts removal), and post-remove hooks spawn in the background. (#1710) -
False positive shell integration warning:
wt config showreported "Found wt in ... but not detected as integration" for Nushell and Fish wrapper files that ARE the integration. Fixes #1735. (#1736, thanks @saschabratton) -
Bare repo config path ignored:
wt hook approvals addand other config commands failed to find.config/wt.tomlin bare repositories because they looked relative to the current worktree instead of the primary worktree. Fixes #1744. (#1745, thanks @jrdncstr)
Documentation
-
Help text for
wt stepsubcommands cleaned up — redundant openers removed. (#1737) -
Experimental badge placement fixed in generated documentation. (#1742, #1729, #1734, #1746)
Internal
-
Copy-ignored built-in exclude constants consolidated. (#1738)
-
Cmd::env()acceptsAsRef<OsStr>for direct path compatibility. (#1723) -
Picker width survey snapshots for layout testing at various terminal sizes. (#1613)
Install worktrunk 0.33.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.33.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.33.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.33.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