Release Notes
Improved
-
Concurrent execution in
pre-*pipeline hooks: Pipeline blocks ([[pre-start]],[[pre-merge]], etc.) now run their concurrent commands in parallel for foreground hooks, matching the existing behavior in post-* hooks and aliases. The deprecated single-table form ([pre-start]) remains serial. (#2249) -
clifeature unbundles CLI-only deps for library consumers: Theworktrunkcrate is also consumed as a library (e.g. byworktrunk-sync). Everything reachable fromsrc/lib.rspreviously pulled inclap,clap_complete,skim,crossterm,termimad,env_logger, andhumantimetransitively. A newclifeature (on by default) gates these; library consumers withdefault-features = falsedrop from 195 to 126 transitive crates. (#2238) -
Faster
wt listandwt switchon warm caches:-
In-memory caches for remote URLs, commit details, and diff stats in
RepoCacheeliminate ~11 duplicate git subprocesses perwt switch. (#2252) -
list_local_branches()primes ref/SHA caches fromfor-each-refdata already collected;Branch::upstream()uses a single batchfor-each-refcall instead of N per-branchrev-parsecommands. Reducesrev-parsecalls from 53 to 27 on a typical-8 benchmark. (#2255) -
Share
git status --porcelainoutput betweenWorkingTreeDiffTaskandWorkingTreeConflictsTask, halving duplicate subprocesses. (#2259)
-
-
Faster
wt statusline:terminal_width()no longer walks parent processes to find a TTY — the fallback is now behind a dedicated helper used only bywt statuslineunder Claude Code. Picker,wt list, and help callers skip the walker entirely. (#2260) -
switch.picker.timeout-msdeprecated: After progressive rendering landed in 0.37.1, this config field was parsed but silently ignored. It's now flagged as deprecated with migration viawt config update. (Breaking for library consumers:SwitchPickerConfig::timeout_msfield andtimeout()accessor removed.) (#2236)
Fixed
-
Picker panic on terminal resize:
Term::on_resizepanicked withattempt to subtract with overflowwhen the terminal was smaller than the picker's preferred height (reachable underscript(1)with stdin closed, or in small tmux panes). Vendored skim-tuikit now usessaturating_sub. (#2233) -
Picker previews no longer show stale "no commits ahead" text: BranchDiff/UpstreamDiff tabs read async fields that sometimes hadn't landed at skeleton-time precompute, caching wrong "has no commits ahead" / "has no upstream tracking branch" text. Previews now derive only from skeleton-time fields plus direct git queries. (#2245)
-
Picker preview height with
--branches/--remotes: The Down-layout item count estimate only counted worktrees, so with--branchesor--remotesthe estimate underflowed and the preview claimed space the list needed. (#2247) -
GitLab CI status in
wt list:glab ci listnow runs with the correct working directory. (#2244) -
Picker Summary tab empty state: aligns with the other preview tabs (bullet + branch header) instead of a dimmed sentence. (#2246)
Documentation
-
Use concurrent form in multi-key hook examples, now that pre-* concurrent is supported. (#2248)
-
Catalog skim 4.x upgrade impact and stability assessment. (#2239)
-
Picker and collect module docstrings gain phase timing tables and trace instrumentation at key picker phases. (#2250)
Internal
- Simplified
wt-perfoutput;cache-checkJSON adds wasted-time fields, sorts duplicates by wasted time, and renamestotal_extra_callstoextra_calls. (#2253, #2254)
Install worktrunk 0.38.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.38.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.38.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.38.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