Release Notes
Improved
-
Git-style external subcommands:
wt foonow runswt-foofrom PATH whenfoois not a built-in, mirroringgit foo→git-foo. Third-party tools can be installed and invoked aswt <name>without touching this repo. Unrecognized commands show a git-style error with typo suggestions. Docs (#2054, thanks @pablospe for the suggestion in #2053) -
{{ owner }}template variable: Expands to the GitHub/GitLab repository owner, useful for constructing URLs or paths in hook templates andworktree-path. (#2051, thanks @greggdonovan) -
Typed env-var config overrides:
WORKTRUNK__LIST__TIMEOUT_MS=30and other typed overrides now work correctly. Previously, string-typed env values silently failed deserialization, wiping all user config and falling back to defaults. (#2062) -
Config error attribution: Config load errors now identify the source — file errors show TOML line/column pointers, env-var errors list the offending
WORKTRUNK_*variable. Previously all failures showed a generic message. (#2068) -
Per-symbol atomic status rendering: The Status column in
wt listand thewt switchpicker now renders each symbol independently — unresolved gates show⋯at their position instead of fabricating defaults when the collect deadline expires. (#2067) -
Hook error messages: Malformed hook command config now lists the three accepted forms (string, named table, pipeline list) with a pointer to
wt hook --help, instead of an opaque serde error. (#2042) -
Stale trash cleanup:
wt removenow sweeps orphaned.git/wt/trashentries older than 24 hours after each removal, reclaiming space from interrupted background removals. (#2039)
Changed
-
wt hook <type>exits successfully when no hooks are configured: Previously errored; now prints a warning and exits 0, so scripts and CI can invokewt hookunconditionally. (#2056) -
Hook output log layout: Log files moved from flat
.git/wt/logs/{name}.logto nested{branch}/{source}/{hook-type}/{name}.log. Per-branch listing/clearing is now O(that branch).logs get --format=jsonpaths changed to relative. Legacy flat files are swept automatically. (#2041)
Fixed
-
wt config showfalse "Not configured": When the shell init line lives in a sourced file (common with dotfile managers),config showno longer reports "Not configured" — it checks whether integration is actually active at runtime. Fixes #1306. (#2066, thanks @wouter-intveld for reporting) -
Remove-then-switch hint: The hint for shadowed remote branches now uses
--foregroundso the chainedwt remove && wt switchactually works (background removal left a placeholder directory blocking the switch). (#2040) -
Conflict detection unified: The
wt switchpicker andwt listnow both run both conflict probes (commit-level and working-tree). Previously the picker skipped the cheaper probe, leaving the fallback unreachable for clean worktrees;wt listnon-full skipped the working-tree probe, missing conflicts from interrupted rebases. (#2064)
Documentation
- Surfaced vars & aliases on homepage and tips-patterns, cross-linked state keys to dedicated docs, tightened hook links. (#2035, #2036, #2037, #2038)
Internal
- Subcommand ordering aligned to documented policies (pipeline order for step, CRUD for state actions). (#2043, #2044)
Install worktrunk 0.36.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.36.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.36.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.36.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