Skip to content

Releases: max-sixty/worktrunk

0.21.0

30 Jan 02:18

Choose a tag to compare

Release Notes

Improved

  • Absolute paths in worktree-path templates: 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-path templates using minijinja's built-in replace filter 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 | sh

Install 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/wt

Download 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

29 Jan 06:39

Choose a tag to compare

Release Notes

Fixed

  • PowerShell auto-configuration on Windows: When running wt config shell install from cmd.exe or PowerShell, both PowerShell profile files are now created automatically (Documents/PowerShell and Documents/WindowsPowerShell). Fixes #885. (thanks @DiTo97 for reporting) (#898)

  • -C flag respected in hook context: The -C flag now correctly sets the worktree path for hooks, fixing wt -C /path hook ... commands that were using the wrong context. (#899)

  • --config path validation: Now warns when --config points 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_ref module. (#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 | sh

Install 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/wt

Download 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

28 Jan 03:34

Choose a tag to compare

Release Notes

Fixed

  • PowerShell shell integration: Fixed shell integration not working on Windows PowerShell. The init script now includes | Out-String to convert array output to a string. Existing configs without this fix are detected as "not installed" so wt config shell install will 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 | sh

Install 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/wt

Download 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

27 Jan 06:38

Choose a tag to compare

Release Notes

Improved

  • wt statusline --format=json: Output current worktree as JSON (same structure as wt list --format=json). Also adds --format=claude-code as canonical syntax (the old --claude-code flag remains supported). Fixes nested worktree detection that incorrectly identified parent worktrees. (#875)

  • wt config show shell status: Each shell integration line now starts with the shell name (e.g., "bash: Already configured...") for easier scanning. (#881)

  • wt config show performance: 8x faster (~1.2s → ~150ms) by using PATH lookup instead of running claude --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-path example 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 | sh

Install 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/wt

Download 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

26 Jan 19:29

Choose a tag to compare

Release Notes

Improved

  • wt step relocate command: Move worktrees to their expected paths based on the worktree-path template. Supports --dry-run preview, filtering by branch name, and --commit to auto-commit dirty worktrees before moving. Handles complex scenarios including worktree swaps (A→B, B→A), chains, and the --clobber flag to back up blocking non-worktree paths. Docs (#790)

  • LLM setup prompt: First-time interactive prompt when users attempt wt merge, wt step commit, or wt step squash without LLM configuration. Detects available tools (claude, codex) and offers auto-configuration with ? to preview the generated config. Add skip-commit-generation-prompt to 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-file options, 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 | sh

Install 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/wt

Download 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

25 Jan 22:57

Choose a tag to compare

Release Notes

Improved

  • LLM commit configuration redesign: The [commit-generation] section is now [commit.generation], and command + args are unified into a single shell-executed command string. Existing configs continue to work — a deprecation warning shows the new format and creates a .new config file you can apply with mv. Claude Code (claude -p) and Codex (codex exec) are documented as first-class options alongside llm. 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 --remotes shows 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:N shows 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 --create conflict error: wt switch --create pr:101 shows 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_branch not respecting shell_escape flag, Windows CI cache rename failures, and WORKTRUNK_MAX_CONCURRENT_COMMANDS=0 meaning "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 only commit-generation fields 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_escape crate. (#810)
  • Used sanitize-filename crate 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 | sh

Install 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/wt

Download 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

22 Jan 08:35

Choose a tag to compare

Release Notes

Improved

  • PR/MR context display: wt switch pr:N and mr:N now 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 like contributor/main instead 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-remove and post-remove hooks. (#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 | sh

Install 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/wt

Download 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

0.18.1

21 Jan 19:49

Choose a tag to compare

Release Notes

Fixed

  • Submodule worktree paths: Worktrees are now created in the correct location when running inside a git submodule. Previously, worktrees were created relative to the parent repo's .git/modules/ directory instead of the submodule's working directory. (#762, thanks @lajarre; #777, thanks @mhonsel for reporting)
  • Shell integration warnings: Warnings about shell integration now check if the current shell has integration configured, not whether any shell does. This fixes misleading "shell requires restart" messages when e.g. bash had integration but the user was running fish. (#772)
  • "Not found" error messages: Improved error message phrasing — "No branch named X" instead of "Branch X not found", "Branch X has no worktree" instead of "No worktree found for branch X". Context-appropriate hints now appear (e.g., wt remove no longer suggests --create). (#774)

Internal

  • Unified PR/MR reference resolution, reducing code duplication. (#778)

Install worktrunk 0.18.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.18.1/worktrunk-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.18.1/worktrunk-installer.ps1 | iex"

Install prebuilt binaries via Homebrew

brew install max-sixty/worktrunk/wt

Download worktrunk 0.18.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.18.0

21 Jan 00:55

Choose a tag to compare

Release Notes

Improved

  • Post-remove hook: New hook type runs after worktree removal. Template variables ({{ branch }}, {{ worktree_path }}, {{ commit }}) reference the removed worktree, enabling cleanup scripts for containers, servers, or other resources. (#757)
  • Graceful handling of missing worktree directories: wt remove now prunes stale git metadata when the worktree directory was deleted externally (e.g., rm -rf), making the command more idempotent. Fixes #724. (thanks @strangemonad for reporting)
  • Config validation warnings at load time: Unknown fields in config files (typos like [commit-gen] instead of [commit-generation]) now show warnings immediately instead of only in wt config show. (#758)

Fixed

  • Age column shows "future" on NixOS/direnv: wt list no longer uses SOURCE_DATE_EPOCH for time calculations, which NixOS and direnv commonly set to past timestamps for reproducible builds. Fixes #763. (thanks @ngotchac for reporting)
  • CI status with URL-based pushremote: CI detection now works when branch.<name>.pushremote is set to a URL directly (as gh pr checkout does) instead of a remote name. (#769)
  • GitLab nested groups in URL parsing: URLs like gitlab.com/group/subgroup/repo now correctly identify repo as the repository name instead of subgroup. This was a security fix — previously, approval bypass was possible across sibling repos in the same parent group. (#768)
  • GitLab CI status detection: Fixed multiple issues with glab CLI compatibility — MR lookup now uses two-step resolution, "manual" pipelines show as running instead of failed, and rate limit errors are handled properly. Fixes #764. (thanks @ngotchac for reporting)

Internal

  • Refactored accessor functions to use bare nouns per Rust convention. (#765)
  • Clarified target/integration naming across codebase. (#755)

Install worktrunk 0.18.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.18.0/worktrunk-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.18.0/worktrunk-installer.ps1 | iex"

Install prebuilt binaries via Homebrew

brew install max-sixty/worktrunk/wt

Download worktrunk 0.18.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.17.0

20 Jan 06:23

Choose a tag to compare

Release Notes

Improved

  • Per-project config overrides (Experimental): Override settings per-project in user config. Supports worktree-path, commit-generation, list, commit, and merge sections. Config precedence: CLI arg > project config > global config > default. Closes #596. (#749)
  • Search all remotes for branch existence: Branch existence checks and completions now search all remotes instead of just the primary remote, matching git's behavior. When a branch exists on multiple remotes, completions show all of them (e.g., feature ⇣ 2d origin, upstream). (#744)
  • CI detection for fork workflows: CI status detection now searches all remotes and uses gh config get git_protocol / glab config get git_protocol for fork URL protocol preference instead of inferring from existing remotes. (#753)

Fixed

  • Same-repo PR switching with stale refs: wt switch pr:N for same-repo PRs now fetches the branch before validation, fixing "Branch not found" errors when local refs were stale. (#742)
  • Project identifier collision for repos without remotes: Repos without remotes now use their full canonical path as the project identifier instead of just the directory name, preventing approval collisions between unrelated repos (e.g., ~/work/myproject vs ~/personal/myproject). Users with remoteless repos will need to re-approve commands. (#747)

Internal

  • Cross-platform path handling improvements using path-slash crate and Path::file_name(). (#750)
  • Renamed WorktrunkConfig to UserConfig internally. (#746)

Install worktrunk 0.17.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.17.0/worktrunk-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.17.0/worktrunk-installer.ps1 | iex"

Install prebuilt binaries via Homebrew

brew install max-sixty/worktrunk/wt

Download worktrunk 0.17.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