Skip to content

Releases: max-sixty/worktrunk

0.29.4

15 Mar 02:02

Choose a tag to compare

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 create now 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 create output: 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-switch hooks to creation lifecycle, combined GitHub/GitLab sections. (#1521)

  • List docs: Restored --full prerequisite 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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

0.29.3

14 Mar 09:18

Choose a tag to compare

Release Notes

Improved

  • Unified timeout model for list and picker: Consolidated the picker's per-command timeout and list's experimental timeout-ms into 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 (--execute and hook commands) are now validated before worktree creation, preventing orphan worktrees from syntax errors like {{ unclosed. (#1500)

Fixed

  • wt remove allowed removing default branch worktree: The default branch worktree (e.g., main) could be removed because it was trivially "integrated" into itself. Now blocked unless -D is 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_configs pub(crate). (#1512)

  • Agent Skills metadata: Added metadata.internal: true to repo-scoped skills so npx skills add only 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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

0.29.2

13 Mar 17:48

Choose a tag to compare

Release Notes

Improved

  • [switch] no-cd config option: Disable directory change by default with no-cd = true in the [switch] section. Use --cd flag to override when needed. Useful for tmux workflows where sessions handle navigation. Docs (#1401, thanks @jradtilbrook)

Fixed

  • GPG signature output breaks wt list: When log.showSignature is set in git config, GPG verification lines contaminated stdout in git log calls, 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 use instead of source for the nushell init script, and template definitions were not exported, preventing the wt wrapper function from loading. (#1476, thanks @mystilleef for reporting #1475)

Documentation

  • Manual commit message recipes: Added recipes to Tips & Patterns for using commit.generation.command config to write commit messages by hand with $EDITOR instead of an LLM. (#1469, thanks @viicslen for the feature request in #1467)

Internal

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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

0.29.1

12 Mar 09:07

Choose a tag to compare

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 --hostname to gh. (#1408, thanks @TomRomeo)

  • wt switch --no-cd print mode: When wt switch --no-cd opens 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 step now 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 polluting claude --continue. (#1454)

  • Color formatting in error messages: DetachedHead and NotInWorktree error 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_type and hook_name as extras; added the TOML hook definition showing how JSON stdin is wired. (#1360)

  • wt remove help text: Updated example heading to clarify that wt remove works 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_verifyverify, no_delete_branchkeep_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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

0.29.0

09 Mar 00:50

Choose a tag to compare

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-r in wt switch interactive 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 --help output 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, @ path convention 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-cd with interactive picker: The --no-cd flag is now passed through when using wt switch with the interactive picker. (#1331, thanks @cperalt for reporting #1330)

  • Remote branches with / in picker: wt switch --remotes now 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 install now 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 summary field: wt list --format=json now includes the summary field. (#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 prune output: 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, _darcs directories from wt step copy-ignored. (#1250)

  • Nix evaluation warning: Use stdenv.hostPlatform.system instead of deprecated system. (#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 in same_commit()/trees_match(). (#1345, #1338, #1358)

  • Error propagation: repo_path() and ShellConfig::get() now return Result instead of silently falling back. (#1280, #1262)

  • CI improvements: Consolidated setup into composite action, replaced gh run watch with 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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

0.28.2

03 Mar 05:32

Choose a tag to compare

Release Notes

Improved

  • wt step prune output: 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 suggesting wt list when 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 status output instead of parsing error messages, avoiding locale-dependent and version-dependent string matching. (#1247)

Internal

  • Hook dispatch: Introduced HookCommandSpec struct 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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

0.28.1

28 Feb 09:28

Choose a tag to compare

Release Notes

Improved

  • Nushell tab completions: wt switch <TAB> and subcommand completions now work in nushell. (#1220, thanks @omerxx for reporting #1215)

  • wt step prune reliability: 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 diff performance: 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 remove now deletes merged branches synchronously on the fast path instead of deferring to the background process, fixing a race where wt 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 --help tables 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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

0.28.0

26 Feb 18:50

Choose a tag to compare

Release Notes

Improved

  • wt step prune command: Remove worktrees whose branches are already merged into the default branch. Skips unmerged and recently created worktrees, with --min-age to 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 remove now 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 -C flag hints: Paths containing spaces or special characters in -C hints are now properly shell-escaped. (#1173)

  • ANSI handling in CWD recovery: Recovery messages now use anstream for 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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

0.27.0

22 Feb 21:17

Choose a tag to compare

Release Notes

Improved

  • wt step promote command (experimental): Exchange branches between the main worktree and any linked worktree, including swapping gitignored files (build artifacts, .env, node_modules/). Shows mismatch state in wt list with ⚑ indicator; restore with no arguments from main worktree. Docs (#789, thanks @zpeleg for the feature request in #738)

  • Instant worktree removal: wt remove now 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 switch and wt list now recover automatically — find the parent repository from $PWD and 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 in wt switch are 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 create now 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 --foreground fails 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 -C flag for linked worktrees, and ANSI color nesting fixed in hint messages. (#1138, #1137)

  • Panic-safe error propagation: Replaced .unwrap() and .expect() calls in functions returning Result with proper ? and bail! error propagation. (#1127)

Documentation

  • Bot trigger renamed: CI bot responds to @worktrunk-bot instead of @claude, matching the actual GitHub username. (#1149)

  • wt step promote documented 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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

0.26.1

19 Feb 04:46

Choose a tag to compare

Release Notes

Fixed

  • Statusline panic without LLM config: wt list statusline panicked when no LLM command was configured. Now skips summary generation gracefully. (#1107)

Internal

  • Demo GIFs now show the Summary column in wt list --full output. (#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 install

Install 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 install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download 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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install