Releases: max-sixty/worktrunk
0.23.1
Release Notes
Improved
-
Interactive picker runs hooks:
wt switchwithout arguments (the interactive picker) now runs post-switch, post-start, and post-create hooks, matching the non-interactive path. (#942) -
Combined hook output during removal: Post-remove and post-switch hooks during worktree removal are now shown on a single output line instead of two separate lines. (#943)
Fixed
-
Shell escape corruption with template filters: Shell escaping was applied before template rendering, so filters like
sanitizeoperated on already-escaped strings, corrupting values with special characters (e.g., apostrophes in branch names). (#944) -
wt switch -history corruption:wt switch foowhile already infoowould incorrectly recordfooas the previous branch, breakingwt switch -ping-pong. (#944) -
--basewithout--createshowed wrong error: Using--basewithout--createcould produce misleading errors (e.g., "No previous branch") instead of the expected warning that--baserequires--create. (#944)
Install worktrunk 0.23.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.23.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.23.1/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.23.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.23.0
Release Notes
Improved
-
Preserve subdirectory position when switching:
wt switchnow lands in the same subdirectory of the target worktree if it exists, falling back to the root if it doesn't. Docs (#939, thanks @frederik-suerig for requesting) -
wt switch --no-cd: Skip the directory change after switching, useful for scripting or running commands in another worktree without leaving your current shell position. Docs (#932, thanks @ArnaudRinquin for requesting) -
Alt-cto create worktree from picker: In the interactive picker, pressAlt-cto create a new worktree using the current query as the branch name. (#933) -
Faster preview tab switching: Preview tabs (HEAD±, log, main…±, remote⇅) are now pre-computed in a background thread, making tab switching near-instant. (#935)
Fixed
-
Pager width detection: Makes preview pane width available to pagers via
$COLUMNS, so tools like delta can use it for correct side-by-side rendering (e.g.,pager = "delta --width=$COLUMNS"). Fixes #924. (thanks @tnlanh for reporting) (#930) -
ANSI style bleeding in preview tabs: Fixed styling artifacts where dividers appeared emphasized and diffstat lines appeared dim. (#931)
-
URL template expansion with
--skip: Skip URL template expansion when--skip url-statusis used, avoiding unnecessary work. (#923) -
Hook error consistency:
wt hook <type>now errors consistently for all hook types when no hooks are configured, instead of silently succeeding for some types. (#916)
Documentation
- Improved install instructions in release notes. (#918)
Internal
- CI: check for existing fix PRs before creating duplicates. (#922)
Install worktrunk 0.23.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.23.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.23.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.23.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.22.0
Release Notes
Improved
-
wt switchintegrates interactive picker:wt switchwithout arguments now opens the interactive picker (previouslywt select). The separatewt selectcommand is deprecated with a warning directing users to usewt switchinstead. Closes #890. (thanks @strangemonad for the suggestion) (#894) -
TOML syntax highlighting: Config output from
wt config showandwt config shell show-themenow renders TOML with syntax highlighting (table headers cyan, string values green, comments dimmed). (#905) -
Bash syntax highlighting improvements: Multi-line bash commands in hook previews now preserve syntax highlighting across newlines. Wrapped continuation lines are indented with 3 extra spaces to distinguish terminal-forced wraps from actual newlines. (#906)
-
Unified background hook output: Contiguous post-switch and post-start hooks are now combined into a single output line instead of two separate lines. (#908)
Documentation
- Removed redundant horizontal rules before H1 headers in documentation pages. (#909)
Internal
- Updated GitHub Actions and Rust nightly versions. (#910)
- Bumped tree-sitter ecosystem to 0.26 for unified multi-line highlighting. (#906)
- Dependency updates: minijinja 2.15.1, clap, indexmap, ignore, thiserror, time, and others. (#912, #913)
Install worktrunk 0.22.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.22.0/worktrunk-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.22.0/worktrunk-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install max-sixty/worktrunk/wtDownload worktrunk 0.22.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 |
0.21.0
Release Notes
Improved
- Absolute paths in
worktree-pathtemplates: New{{ repo_path }}variable enables absolute path configurations like{{ repo_path }}/../{{ repo }}.{{ branch | sanitize }}. Tilde expansion is also supported (~/worktrees/{{ repo }}/{{ branch }}). Fixes #902. (thanks @bingryan for reporting) (#904)
Documentation
- Documented prefix stripping in
worktree-pathtemplates using minijinja's built-inreplacefilter and slicing syntax. Closes #900. (thanks @laurentkempe for requesting) (#903)
Install worktrunk 0.21.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.21.0/worktrunk-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.21.0/worktrunk-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install max-sixty/worktrunk/wtDownload worktrunk 0.21.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 |
0.20.3
Release Notes
Fixed
-
PowerShell auto-configuration on Windows: When running
wt config shell installfrom cmd.exe or PowerShell, both PowerShell profile files are now created automatically (Documents/PowerShell and Documents/WindowsPowerShell). Fixes #885. (thanks @DiTo97 for reporting) (#898) -
-Cflag respected in hook context: The-Cflag now correctly sets the worktree path for hooks, fixingwt -C /path hook ...commands that were using the wrong context. (#899) -
--configpath validation: Now warns when--configpoints to a non-existent file instead of silently using defaults. (#895)
Documentation
-
Fix shell quoting in hook examples — template variables are auto-escaped, so manual quoting caused issues with special characters. (#895)
-
Updated documentation to use tool-agnostic terminology for LLM commit messages. (#891)
Internal
-
Consolidated PR/MR resolution into unified
remote_refmodule. (#893) -
Simplified command structure and removed dead code. (#892)
-
Eliminated Settings types, added accessor methods to Config types. (#896)
Install worktrunk 0.20.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.20.3/worktrunk-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.20.3/worktrunk-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install max-sixty/worktrunk/wtDownload worktrunk 0.20.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 |
0.20.2
Release Notes
Fixed
-
PowerShell shell integration: Fixed shell integration not working on Windows PowerShell. The init script now includes
| Out-Stringto convert array output to a string. Existing configs without this fix are detected as "not installed" sowt config shell installwill update them automatically. Fixes #885. (thanks @DiTo97 for reporting) (#888) -
Branch removal message: "No worktree found for branch X" now shows as info (○) instead of warning (▲) when removing a branch-only, since this is expected behavior. (#887)
Documentation
- Documented main worktree behavior in
wt step relocate --help. (#889)
Install worktrunk 0.20.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.20.2/worktrunk-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.20.2/worktrunk-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install max-sixty/worktrunk/wtDownload worktrunk 0.20.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 |
0.20.1
Release Notes
Improved
-
wt statusline --format=json: Output current worktree as JSON (same structure aswt list --format=json). Also adds--format=claude-codeas canonical syntax (the old--claude-codeflag remains supported). Fixes nested worktree detection that incorrectly identified parent worktrees. (#875) -
wt config showshell status: Each shell integration line now starts with the shell name (e.g., "bash: Already configured...") for easier scanning. (#881) -
wt config showperformance: 8x faster (~1.2s → ~150ms) by using PATH lookup instead of runningclaude --version. (#883)
Fixed
-
Config TOML formatting: Fixed spurious empty
[commit]header appearing when only[commit.generation]is configured. (#879) -
Documentation URLs: Fixed broken worktrunk.dev URLs in fish wrapper and config templates. (#882)
Documentation
-
Fixed
worktree-pathexample on tips page. (#876, thanks @uriahcarpenter) -
Fixed OSC 8 hyperlink sequences leaking through to web docs as garbage text. (#870)
Internal
-
Demo snapshot mode for regression testing of command output. (#871)
-
CI improvements: nextest binary compatibility fix, pinned runner versions, weekly renovation workflow. (#878, #884)
Install worktrunk 0.20.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.20.1/worktrunk-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.20.1/worktrunk-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install max-sixty/worktrunk/wtDownload worktrunk 0.20.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 |
0.20.0
Release Notes
Improved
-
wt step relocatecommand: Move worktrees to their expected paths based on theworktree-pathtemplate. Supports--dry-runpreview, filtering by branch name, and--committo auto-commit dirty worktrees before moving. Handles complex scenarios including worktree swaps (A→B, B→A), chains, and the--clobberflag to back up blocking non-worktree paths. Docs (#790) -
LLM setup prompt: First-time interactive prompt when users attempt
wt merge,wt step commit, orwt step squashwithout LLM configuration. Detects available tools (claude, codex) and offers auto-configuration with?to preview the generated config. Addskip-commit-generation-promptto user config to suppress. (#867) -
Consistent prompt styling: Interactive prompts now use consistent cyan styling via
prompt_message()formatting. (#858)
Fixed
- Path display in error messages: User-facing paths now consistently use
format_path_for_display(), fixing cases where raw.display()output could show inconsistent path formats. (#856)
Documentation
- Added Quick Start section to front page showing the switch → list → merge workflow. (#864)
- Updated template documentation: removed deprecated
template-fileoptions, added{{ git_diff_stat }}variable, clarified squash-only variables. (#854) - Fixed stale documentation for
[commit.generation]config format, statusline context gauge, and CI status for remote-only branches. (#853)
Internal
- Bumped nix crate from 0.30.1 to 0.31.1. (#860)
- Refactored deprecation detection for better modularity. (#852)
Install worktrunk 0.20.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.20.0/worktrunk-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.20.0/worktrunk-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install max-sixty/worktrunk/wtDownload worktrunk 0.20.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 |
0.19.0
Release Notes
Improved
-
LLM commit configuration redesign: The
[commit-generation]section is now[commit.generation], andcommand+argsare unified into a single shell-executedcommandstring. Existing configs continue to work — a deprecation warning shows the new format and creates a.newconfig file you can apply withmv. Claude Code (claude -p) and Codex (codex exec) are documented as first-class options alongsidellm. See the LLM commits guide. (#809, #837) -
Per-project hooks: User config can define hooks per-project that append to global hooks. Execution order: global → per-project → project config. Configure under
[projects."owner/repo".hooks]. (#842) -
Context window gauge for Claude Code: Statusline mode shows a moon phase gauge (🌕🌔🌓🌒🌑) for context window usage. (#840)
-
CI status for remote-only branches:
wt list --remotesshows CI status for branches that only exist on the remote. (#817) -
Hook log file lookup:
wt config state logs get --hook=<spec>returns the path to a specific hook's log file. (#816, thanks @EduardoSimon for requesting) -
Branch/fork info in PR/MR display:
wt switch pr:Nshows the source branch (e.g.,feature-auth) or fork reference (e.g.,contributor:feature) alongside PR details. (#808) -
Claude Code section in
wt config show: Shows Claude CLI installation status, plugin status, and statusline configuration. (#833) -
Deprecation details moved to
wt config show: Other commands show a brief pointer instead of full deprecation details. (#828) -
Config validation suggests correct file: When a config key belongs in user config but appears in project config (or vice versa), the warning suggests the correct location. (#804)
-
Tilde paths in hints: Shell command hints use
~instead of full home directory paths when safe. (#710) -
Improved
--createconflict error:wt switch --create pr:101shows the existing branch name in the error. (#807) -
CI status prioritized in statusline: CI status is retained longer when the statusline truncates. (#845)
Fixed
-
Template expansion bugs: Fixed
worktree_path_of_branchnot respecting shell_escape flag, Windows CI cache rename failures, andWORKTRUNK_MAX_CONCURRENT_COMMANDS=0meaning "no limit". (#847, #849) -
Hook and CI status panics: Fixed panic when serializing mixed named/unnamed hook configs, banned colons in hook names to prevent parsing ambiguity, and fixed GitLab MR detection when multiple MRs exist without project ID. (#846, #848)
-
Pre-commit hooks for clean worktree squash: Pre-commit hooks are collected for approval when squashing on a clean worktree. Previously only collected when dirty. (#695)
-
Hint message formatting: Fixed ANSI escape code interference in dim hint messages. (#836)
-
Spurious [commit] header: Fixed config migration showing
[commit]section header when onlycommit-generationfields needed migration. (#834)
Documentation
- Added at-a-glance examples to config documentation. (#826)
- Clarified user project-specific settings section. (#835)
- Consistent worktree terminology throughout docs. (#813)
- Added tip for monitoring hook logs. (#838)
Internal
- Replaced manual quote escaping with
shell_escapecrate. (#810) - Used
sanitize-filenamecrate for filename sanitization. (#832) - Cached CI tool availability checks. (#831)
- Moved inline imports to module top level. (#818, #819, #820, #822)
Install worktrunk 0.19.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.19.0/worktrunk-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.19.0/worktrunk-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install max-sixty/worktrunk/wtDownload worktrunk 0.19.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 |
0.18.2
Release Notes
Improved
-
PR/MR context display:
wt switch pr:Nandmr:Nnow show PR/MR details (title, author, state, URL) after fetching. (#782) -
Fork PR branch conflicts: When a fork PR's branch name conflicts with an existing local branch (e.g., contributor opens PR from their
main), worktrunk now creates a prefixed branch likecontributor/maininstead of failing. Closes #714. (thanks @vimtor for reporting)
Fixed
-
Help output formatting: Fixed double blank lines appearing after demo comments in help output. (#795)
-
Error handling reliability: Replaced fragile string-based error parsing with structured approaches for git stash, GitHub CLI, and GitLab CLI operations. (#787)
Documentation
-
ci-status help text: Improved clarity of the ci-status configuration documentation. (#794)
-
wt remove help text: Simplified short description and added documentation for
pre-removeandpost-removehooks. (#792) -
Subcommand documentation: Fixed generated website docs for subcommands (like
wt step copy-ignored,wt config state) to include their short descriptions. (#793)
Install worktrunk 0.18.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.18.2/worktrunk-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.18.2/worktrunk-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install max-sixty/worktrunk/wtDownload worktrunk 0.18.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 |