Releases: max-sixty/worktrunk
0.29.4
Release Notes
Improved
-
Destination branch in pre-switch hooks:
{{ branch }}in pre-switch hooks now expands to the destination branch (as typed by the user) instead of the source worktree's branch. Previously, pre-switch hooks could only see where you were, not where you were going. Docs (#1497, thanks @mayureshwaykole for the discussion in #1494) -
LLM tool commands in example config:
wt config createnow includes double-commented entries for Claude, Codex, opencode, llm, and aichat commands, making them discoverable without reading the docs. Docs (#1531, #1533)
Fixed
- Extra blank line in
config createoutput: The success path printed a blank line between the success message and hint lines, inconsistent with the "already exists" path. (#1525)
Documentation
-
Switch docs: Trimmed upstream tracking paragraph, added missing
pre-switch/post-switchhooks to creation lifecycle, combined GitHub/GitLab sections. (#1521) -
List docs: Restored
--fullprerequisite note for LLM summaries. (#1517) -
Experimental badges in headings: Moved experimental badges from description paragraphs to headings in web docs for cleaner TOC entries. (#1523)
Internal
-
CI improvements: Prevented duplicate inline review comments across cycles, banned blocking
gh pr checks --watch, fixed verify step for concurrency-cancelled runs, stopped hourly audit from flagging CI polling, added rolling file survey to nightly cleaner. (#1514, #1498, #1519, #1520, #1522) -
Simplified review-pr skill: Cut metacognitive coaching and collapsed confidence tiers; 504 → 369 lines (−27%). (#1530)
Install worktrunk 0.29.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.29.4/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.29.4/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.29.4
| 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 install0.29.3
Release Notes
Improved
-
Unified timeout model for list and picker: Consolidated the picker's per-command timeout and list's experimental
timeout-msinto a shared config with[list] task-timeout-ms(per-task, shared by both) and per-context wall-clock budgets ([list] timeout-ms,[switch.picker] timeout-ms). Picker default budget raised from 200ms per-command to 500ms wall-clock. (#1515, #1487) -
Pre-flight template validation for
wt switch: Switch templates (--executeand hook commands) are now validated before worktree creation, preventing orphan worktrees from syntax errors like{{ unclosed. (#1500)
Fixed
-
wt removeallowed removing default branch worktree: The default branch worktree (e.g., main) could be removed because it was trivially "integrated" into itself. Now blocked unless-Dis used. (#1460, thanks @cperalt for reporting #1448) -
Symlinks copied as regular files in
copy-ignored: Top-level gitignored symlinks were copied as regular files instead of preserved as symlinks, breaking setups like Yarn monorepos. (#1489, thanks @karmeleon for reporting #1488) -
Missing placeholders in WorkingDiff and Upstream columns: These columns showed blank instead of
⋯/·placeholders when data wasn't loaded, breaking the visual loading signal. (#1503)
Documentation
-
Step command docs: Added promote subdoc, improved swap description, linked Operations index to subcommand sections, moved aliases section after subcommands, fixed cross-filesystem fallback description. (#1505, #1495, #1502, #1513)
-
List docs: Documented placeholder symbols (
⋯,·) in help text, rewrote LLM summaries section. (#1496, #1506) -
Homepage: Added headline features (CI status, PR checkout, hash_port) and tips link. (#1501)
-
Experimental badge pills: Styled
[experimental]markers as pill badges in web docs. (#1499)
Internal
-
Deduplicated hook config resolution: Extracted shared hook-type list and made
lookup_hook_configspub(crate). (#1512) -
Agent Skills metadata: Added
metadata.internal: trueto repo-scoped skills sonpx skills addonly offers user-facing ones. (#1491)
Install worktrunk 0.29.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.29.3/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.29.3/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.29.3
| 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 install0.29.2
Release Notes
Improved
[switch] no-cdconfig option: Disable directory change by default withno-cd = truein the[switch]section. Use--cdflag to override when needed. Useful for tmux workflows where sessions handle navigation. Docs (#1401, thanks @jradtilbrook)
Fixed
-
GPG signature output breaks
wt list: Whenlog.showSignatureis set in git config, GPG verification lines contaminated stdout ingit logcalls, causing parse failures. All git log invocations now pass--no-show-signature. (#1465, thanks @apre) -
Tab completions ignore shell substring matching: The binary was prefix-filtering branch candidates before returning them to the shell, preventing fish substring matching (
auth<TAB>→feature/user-auth) and zsh fuzzy matching. Completions now return all candidates and let the shell apply its own matching. (#1471, thanks @benjaminbauer for reporting #1468) -
Tab completions unusable in large repos: Repos with many remote branches triggered the "do you wish to see all N possibilities?" prompt. Remote-only branches are now excluded when the total exceeds 100. (#1442, thanks @cperalt for reporting #1415)
-
Nushell shell integration broken in Home Manager module: The Nix Home Manager module used
useinstead ofsourcefor the nushell init script, and template definitions were not exported, preventing thewtwrapper function from loading. (#1476, thanks @mystilleef for reporting #1475)
Documentation
- Manual commit message recipes: Added recipes to Tips & Patterns for using
commit.generation.commandconfig to write commit messages by hand with$EDITORinstead of an LLM. (#1469, thanks @viicslen for the feature request in #1467)
Internal
- Skill/CI guidance: Improved Claude bot skills for triage, code review, and CI monitoring. (#1485, #1477, #1474, #1472, #1470, #1458, #1447)
Install worktrunk 0.29.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.29.2/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.29.2/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.29.2
| 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 install0.29.1
Release Notes
Improved
-
GitHub Enterprise support for
wt switch:wt switch pr:<number>now works with GitHub Enterprise instances by extracting the hostname from the remote URL and passing--hostnametogh. (#1408, thanks @TomRomeo) -
wt switch --no-cdprint mode: Whenwt switch --no-cdopens the interactive picker (no branch argument), selecting a branch prints its name to stdout and exits — useful for scripting. (#1445, thanks @ruudk for the feature request in #1404) -
Shadow warning for step aliases:
wt stepnow warns when a user-defined alias has the same name as a built-in step command (e.g.,commit,rebase), since clap intercepts the built-in before the alias runs. (#1389)
Fixed
-
Post-switch hooks on
wt remove: When removing the current worktree, post-switch hooks now fire correctly as the user is implicitly switched to the primary worktree. Previously, project hooks were silently skipped because config lookup failed from the removed CWD. (#1452, thanks @mjakl for reporting #1450) -
LLM commit session isolation: The recommended Claude command for commit generation now includes
--no-session-persistence, preventing commit conversations from pollutingclaude --continue. (#1454) -
Color formatting in error messages:
DetachedHeadandNotInWorktreeerror messages now support color-print styling, matching other error variants. (#1387) -
Windows error handling: Replaced
std::process::exit()with proper error returns in Windows-specific code paths, so destructors and cleanup run correctly. (#1456)
Documentation
-
Hook JSON context section: Fixed documentation that incorrectly described
hook_typeandhook_nameas extras; added the TOML hook definition showing how JSON stdin is wired. (#1360) -
wt removehelp text: Updated example heading to clarify thatwt removeworks on both worktrees and branches. (#1449) -
Xcode DerivedData cleanup recipe: Added recipe for cleaning Xcode build artifacts across worktrees. (#1423, thanks @RickeyBoy)
Internal
-
Refactoring: Extracted handler functions from
main()dispatch, replaced negated boolean variables with positive-polarity names (no_verify→verify,no_delete_branch→keep_branch). (#1394, #1388, #1393) -
Test reliability: Resolved flaky PTY/timing issues in integration tests, consolidated trivial tests into inline snapshots. (#1459, #1392, #1382, #1390)
-
CI: Added Zola docs validation to PR checks, catching broken internal anchor links before merge. (#1396)
Install worktrunk 0.29.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.29.1/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.29.1/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.29.1
| 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 install0.29.0
Release Notes
Improved
-
wt step <alias>command: User-defined command templates with template variables ({{ branch }},{{ worktree }}, custom--var KEY=VALUE). Project-config aliases require approval; user-config aliases are trusted. Docs (#1348, thanks @cavanaug for the feature request in #1214) -
Remove worktrees from switch picker:
alt-rinwt switchinteractive picker removes the highlighted worktree directly (no force flags — matches safety defaults). (#1253, thanks @alfredomtx for the feature request in #1251) -
wt hook <type> --dry-run: Preview hook expansion with template variables resolved, without executing. (#1361) -
Hook template variables:
{{ hook_type }}and{{ hook_name }}are now available in hook command templates. (#1364) -
Typo suggestions for step commands: Unknown step commands and aliases now suggest the closest match. (#1363)
-
Syntax-highlighted
--help: Code blocks in--helpoutput now render with language-aware syntax highlighting (TOML, bash) instead of plain dimmed text. Help options are grouped under navigational headings (Picker Options, Automation). (#1365, #1355, #1359) -
Nix Home Manager module: Install worktrunk via Nix Home Manager. (#1287, thanks @DuskyElf; thanks @meicale for reporting #1257)
-
Output styling: Bold names replace quoted names in error messages, underlined references replace bright-black in hints,
@ pathconvention unified in section headings, and branch-worktree mismatch warnings now show both actual and expected paths. (#1375, #1380, #1285, #1376, #1377, thanks @jhigh2000 for reporting #1184)
Fixed
-
--no-cdwith interactive picker: The--no-cdflag is now passed through when usingwt switchwith the interactive picker. (#1331, thanks @cperalt for reporting #1330) -
Remote branches with
/in picker:wt switch --remotesnow correctly handles remote branches with/in the name (e.g.,origin/user/feature). (#1266, thanks @curtbushko for reporting #1260) -
Nushell config path on Windows:
wt config shell installnow uses the platform-appropriate config directory for nushell on Windows. (#1294, thanks @deltoss for reporting #1293) -
Git for Windows per-user install: Detect per-user Git for Windows installations and show a clean error message instead of panicking when Git Bash is not found. (#1261, #1262, thanks @JefMasereel for reporting #1259)
-
JSON output
summaryfield:wt list --format=jsonnow includes thesummaryfield. (#1339) -
Squash merge message: Uses source branch name instead of target branch in the merge commit message. (#1319, thanks @ricafeal)
-
Alias approval errors: Propagate the real error (e.g., "no remote URL found") instead of a vague "Cannot determine project identifier". (#1374)
-
wt step pruneoutput: Summary uses cleaner paired format ("Pruned 1 worktree & branch") and fixes post-remove hook display path for non-current worktrees. (#1344) -
VCS metadata in
copy-ignored: Exclude.git,.hg,.svn,_darcsdirectories fromwt step copy-ignored. (#1250) -
Nix evaluation warning: Use
stdenv.hostPlatform.systeminstead of deprecatedsystem. (#1336, thanks @onelocked)
Documentation
-
Home page SEO: Canonical URL deduplication and consistent tagline. (#1357)
-
LLM commit tools: Add opencode and consolidate other LLM commit tool references. (#1295)
Internal
-
Git plumbing: Replace porcelain commands with plumbing alternatives (
rev-parse --symbolic-full-name,log --no-walk,for-each-ref) for more robust output parsing. Cache deprecated-variable regexes and fix silent wrong results insame_commit()/trees_match(). (#1345, #1338, #1358) -
Error propagation:
repo_path()andShellConfig::get()now returnResultinstead of silently falling back. (#1280, #1262) -
CI improvements: Consolidated setup into composite action, replaced
gh run watchwith poll loops, added conflict resolution for bot PRs in nightly cleaner. (#1273, #1329, #1307)
Install worktrunk 0.29.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.29.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.29.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.29.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 install0.28.2
Release Notes
Improved
wt step pruneoutput: Dirty or locked worktrees are silently skipped instead of printing warnings, and "No worktree found for branch" info messages are suppressed — prune output now shows only what was actually removed. (#1236)
Fixed
-
CWD removal hint: After a worktree is removed while a shell is in that directory, the hint now checks whether
wt switch ^would actually work before suggesting it — falls back to suggestingwt listwhen the default branch worktree doesn't exist (e.g., bare repos). (#1238, thanks @davidbeesley for reporting #1168) -
Submodule detection in worktree removal: Submodule detection now uses
git submodule statusoutput instead of parsing error messages, avoiding locale-dependent and version-dependent string matching. (#1247)
Internal
-
Hook dispatch: Introduced
HookCommandSpecstruct and extracted helper functions to deduplicate hook dispatch code (~50 lines net reduction). (#1248) -
CI skills: Fixed jq escaping in ad-hoc CI polling queries and improved Step 5 dismissal ordering in pr-review skill. (#1241, #1246)
Install worktrunk 0.28.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.28.2/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.28.2/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.28.2
| 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 install0.28.1
Release Notes
Improved
-
Nushell tab completions:
wt switch <TAB>and subcommand completions now work in nushell. (#1220, thanks @omerxx for reporting #1215) -
wt step prunereliability: Candidates are now removed inline as they're discovered instead of scan-then-remove, with per-candidate error handling (dirty worktrees are warned and skipped). Dry-run and execution summaries now distinguish worktrees, branches, and detached worktrees. Command marked[experimental]. (#1234, #1232, #1223) -
wt step diffperformance: Copies the real git index instead of creating an empty one, preserving git's stat cache so unchanged tracked files are skipped. (#1230)
Fixed
-
Branch delete race on fast-path remove:
wt removenow deletes merged branches synchronously on the fast path instead of deferring to the background process, fixing a race wherewt switch --create <branch>fails with "branch already exists". (#1216) -
Panic in
is_bare()on unusual repositories:is_bare()now propagates errors instead of panicking. (#1221, @bendrucker) -
Help text table coloring: Status symbols and backtick-enclosed text in
--helptables now render with proper ANSI colors. (#1231)
Internal
- CI workflow: Added concurrency group to claude-mention workflow, fixed external contributor PR review permissions. (#1233, #1226)
Install worktrunk 0.28.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.28.1/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.28.1/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.28.1
| 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 install0.28.0
Release Notes
Improved
-
wt step prunecommand: Remove worktrees whose branches are already merged into the default branch. Skips unmerged and recently created worktrees, with--min-ageto control the staleness threshold. Docs (#1191) -
Color palette in
wt config shell show-theme: Shows each color and style rendered in itself — base colors, modifiers, bold+color and dim+color variants — for diagnosing legibility issues on different terminal themes. (#1185, thanks @jhigh2000 for reporting #1184) -
Smarter column layout in
wt list: The Message column is hidden when the terminal is too narrow for Summary to reach 40 characters, preventing both columns from being truncated to unreadable widths. (#1166)
Fixed
-
Submodules in worktree removal:
wt removenow handles worktrees containing initialized git submodules, which previously failed with "working trees containing submodules cannot be moved or removed". (#1196, thanks @dlecan for reporting #1194) -
CWD recovery validation: Recovery from a deleted worktree directory now validates that candidate repositories actually contain the deleted path as a worktree, preventing false matches when multiple repos share a parent directory. (#1193)
-
Shell-escape paths in
-Cflag hints: Paths containing spaces or special characters in-Chints are now properly shell-escaped. (#1173) -
ANSI handling in CWD recovery: Recovery messages now use
anstreamfor proper ANSI handling on terminals that don't support color. (#1183) -
Worktree path in detached HEAD removal messages: Removal output for detached HEAD worktrees now includes the worktree path for clarity. (#1210)
-
Pruned worktree output: Worktree and branch deletion for pruned worktrees are combined into a single output line instead of two separate messages. (#1211)
Documentation
- Page metadata and SEO: All doc pages now have
<meta name="description">, canonical URLs, and structured data (JSON-LD) for better search engine visibility. (#1167)
Internal
- CI bot improvements: Inline suggestions, confidence-based review scrutiny, consolidated review+CI analysis, self-poll prevention, verified-facts guideline for triage, and explicit issue-closing in nightly cleaner. (#1172, #1181, #1199, #1204, #1212, #1198, #1209)
Install worktrunk 0.28.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.28.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.28.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.28.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 install0.27.0
Release Notes
Improved
-
wt step promotecommand (experimental): Exchange branches between the main worktree and any linked worktree, including swapping gitignored files (build artifacts,.env,node_modules/). Shows mismatch state inwt listwith ⚑ indicator; restore with no arguments from main worktree. Docs (#789, thanks @zpeleg for the feature request in #738) -
Instant worktree removal:
wt removenow renames the worktree to a staging path before spawning the background cleanup, making the path unavailable immediately instead of after a 1-second sleep. Falls back to legacy removal if rename fails (cross-filesystem, permissions). (#773) -
Graceful recovery from deleted worktree directory: When a worktree is removed while a shell is still in that directory,
wt switchandwt listnow recover automatically — find the parent repository from$PWDand proceed without pre-switch hooks. (#1146, thanks @davidbeesley for reporting #1109) -
PR/MR support promoted out of experimental: GitHub PR (
pr:<number>) and GitLab MR (mr:<number>) targets inwt switchare now considered stable — 11 minor releases with no interface changes since v0.15.0. (#1114)
Fixed
-
SSH URLs with ports: Remote matching now handles
ssh://git@host:2222/owner/repo.git— ports are stripped during URL parsing instead of rejecting the URL. (#1151) -
Config path resolution:
wt config createnow resolves the same path as config loading, fixing a mismatch when using XDG directories. (#1135, thanks @christopher-buss for reporting #1134) -
PTY prompt echo interleaving: Approval prompts no longer intermix with echoed input on slower systems. Uses quiescence detection instead of a fixed sleep. (#1133)
-
Better diagnostics when foreground removal fails: When
wt remove --foregroundfails with "Directory not empty", now shows the remaining top-level entries (capped at 10) and suggests trying background removal. (#1150) -
Output formatting consistency: Hints use canonical "To X, run Y" phrasing, config update hints render in gutter blocks with correct
-Cflag for linked worktrees, and ANSI color nesting fixed in hint messages. (#1138, #1137) -
Panic-safe error propagation: Replaced
.unwrap()and.expect()calls in functions returningResultwith proper?andbail!error propagation. (#1127)
Documentation
-
Bot trigger renamed: CI bot responds to
@worktrunk-botinstead of@claude, matching the actual GitHub username. (#1149) -
wt step promotedocumented in worktree model: The branch-exchange operation is noted as the sole exception to the "never retarget a worktree" rule. (#1154)
Internal
-
CI security model: Rulesets, token consolidation, and environment protection hardened for GitHub Actions workflows. (#1118)
-
Nightly CI workflows: Automated review of Claude CI session logs and 24-hour code quality sweep for bugs, missing tests, and stale docs. (#1111)
-
CI reviewer and bot improvements: Better failure tracing, Dependabot PR reviews, thread resolution ordering, LGTM dedup, actionable feedback, automatic response to bot PR comments, and graceful handling of mentions on merged/closed PRs. (#1117, #1128, #1129, #1131, #1141, #1142, #1145, #1147, #1153, #1158, #1164)
Install worktrunk 0.27.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.27.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.27.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.27.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 install0.26.1
Release Notes
Fixed
- Statusline panic without LLM config:
wt list statuslinepanicked when no LLM command was configured. Now skips summary generation gracefully. (#1107)
Internal
- Demo GIFs now show the Summary column in
wt list --fulloutput. (#1104, #1106) - CI session log uploads fixed to use correct path. (#1103)
Install worktrunk 0.26.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.26.1/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.26.1/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.26.1
| 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