You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
wt step copy-ignored: Copy gitignored files listed in .worktreeinclude between worktrees. Useful for syncing .env files, IDE settings, and build caches to new worktrees via post-create hooks. Uses COW (reflink) copying for efficient handling of large directories. Matches Claude Code Desktop's worktree file syncing behavior.
--foreground flag: Debug background hooks by running them in the foreground. Available on wt hook post-start, wt hook post-switch, and wt remove. Replaces the deprecated --no-background flag.
--var flag for hooks: Override template variables when running hooks manually, e.g., wt hook post-create --var target=main.
[ci] platform config: Explicitly set CI platform (github or gitlab) for GitHub Enterprise or self-hosted GitLab where URL-based detection fails.
Upstream diff in wt select: Tab 4 shows ahead/behind diff vs upstream tracking branch (remote⇅), matching the column in wt list.
{{ base }} and {{ base_worktree_path }} variables: New template variables for creation hooks (post-create, post-start, post-switch) to access the base branch name and worktree path.
-vv diagnostic reports: Double-verbose flag writes a diagnostic report to .git/wt-logs/diagnostic.md with environment info, configs, and logs for easy bug reporting.
Fixed
Warning ordering: Warnings about state discovered during evaluation now appear before the action message, making them feel like considered observations rather than afterthoughts.
Config validation in wt config show: Now validates TOML syntax and schema, displaying parse errors with details.
Documentation
Undocumented features: Added documentation for --show-prompt and --stage flags on wt step commit/squash, skip-shell-integration-prompt config, and [select] pager config.
Install worktrunk 0.10.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.10.0/worktrunk-installer.sh | sh
Pager config for wt select: New [select] pager config option to customize the diff pager in wt select previews. Auto-detects delta/bat when not configured.
Infinity symbol for extreme diffs: wt list shows ∞ instead of 9K for diffs >= 10,000 commits, avoiding misleading values.
Fixed
Windows shell integration message: Warning now shows just the command name instead of the full absolute path, and gives targeted advice when only the .exe suffix differs.
URL column width: Column width in wt list now accounts for hyperlink display showing just :PORT instead of full URLs.
Internal
Deprecated template-file and squash-template-file: Legacy LLM template config options now show deprecation warnings.
Path handling improvements: Replaced string manipulation with proper Path/PathBuf stdlib methods throughout the codebase.
Install worktrunk 0.9.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.9.5/worktrunk-installer.sh | sh
Diagnostic report generation: wt list --verbose generates diagnostic reports (.git/wt-logs/diagnostic.md) when warnings or errors occur, with a gh issue create command hint when GitHub CLI is available.
Alias bypass detection: wt config show detects shell aliases that point to binary paths (e.g., alias gwt="/usr/bin/wt") and warns that they bypass shell integration with suggested fixes.
Switch message clarity: Messages now explicitly state what was created — "Created branch X and worktree" vs "Created worktree for X" vs "Switched to worktree for X".
Worktree-path hint: One-time hint after first wt switch --create suggesting wt config create to customize worktree locations.
Path mismatch warnings: wt remove and wt merge show warnings when worktree paths don't match the config template.
CLI command ordering: Commands reordered by usage frequency in --help (switch, list, remove, merge...).
Fixed
Progress counter overflow: Fixed wt list progressive rendering when URL sends caused completed count to exceed expected count.
Windows shell integration: Shell function now correctly strips .exe suffix, relying on MSYS2/Git Bash automatic resolution (fixes #348).
Prunable worktrees: Gracefully handle worktrees where the directory was deleted but git still tracks metadata.
Help text tables: Disabled clap text wrapping to preserve markdown tables in --help output.
Documentation
FAQ entries: Added entries for "What files does Worktrunk create?" and "What can Worktrunk delete?".
Internal
Hint state management: New wt config state hints subcommand for viewing and clearing shown hints.
Deprecated config deduplication: Migration files (.new) only written once per repo, tracked via git config hints.
Install worktrunk 0.9.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.9.4/worktrunk-installer.sh | sh
Terminal hyperlinks for URLs: The URL column in wt list now shows clickable links (OSC 8) in supported terminals, displaying a compact :port that links to the full URL.
Statusline truncation: Statusline output now intelligently truncates by dropping low-priority segments (URL, CI) before high-priority ones (branch, model) when exceeding terminal width.
Statusline URL: When a project has a [list] url template configured, the URL now appears in statusline output for shell prompts.
Bare repo default branch detection: Uses symbolic-ref HEAD as a heuristic for detecting the default branch in bare repos and empty repos before the first commit.
Terminology: Renamed "path mismatch" to "branch-worktree mismatch" for clarity. In JSON output (wt list --format=json), the field path_mismatch is now branch_worktree_mismatch.
Fixed
Empty bare repo bootstrap: wt switch --create main now works in empty bare repos by handling unborn branches correctly.
Documentation
CLI help text: Improved descriptions across multiple commands including wt, wt list, wt select, wt step, wt merge, wt remove, and wt hook.
Web docs copy button: Fixed copy button position so it stays at top-right when scrolling horizontally through code blocks.
Internal
Claude Code plugin detection: wt config show now displays whether the worktrunk Claude Code plugin is installed, with install hints if needed.
Hyperlink diagnostics: wt config show shows hyperlink support status (active/inactive).
Install worktrunk 0.9.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.9.3/worktrunk-installer.sh | sh
Locked worktree detection: wt remove now detects locked worktrees upfront and shows a clear error with unlock instructions, instead of reporting success but silently failing. (#408, #412)
Windows Git Bash shell integration: Shell detection now handles Windows-style paths in $SHELL (e.g., C:\Program Files\Git\usr\bin\bash.exe). Fixes #348. (#398)
Documentation
CLI help text clarity: Improved descriptions for wt, wt list, wt step push, wt step squash, wt remove, and wt config state. (#410)
Installation commands: Removed $ prefixes from install commands for easier copy-paste. (#405, thanks @muzzlol)
Internal
Home worktree lookup: Centralized with find_home() and home_path() methods for more consistent behavior with bare repos.
Windows CI: Added cross-platform mock infrastructure for testing Windows-specific behavior.
Install worktrunk 0.9.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.9.2/worktrunk-installer.sh | sh
Shell integration debug info: wt config show now displays invocation details (path, git subcommand mode, explicit path usage) to help diagnose shell integration issues. "Shell integration not active" is now a warning instead of a hint.
Install worktrunk 0.9.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.9.1/worktrunk-installer.sh | sh
Shell integration prompt: When shell integration isn't active after wt switch, an interactive prompt offers to install it. The prompt remembers your choice and falls back to a hint for non-TTY environments.
Template variable names: Renamed for clarity: repo_root → repo_path, worktree → worktree_path, main_worktree → repo. Added main_worktree_path for accessing the main worktree's absolute path. Deprecated names work with migration warnings and auto-generated .new config files.
Shell integration warnings: Specific diagnostic messages when shell cd won't work: "shell integration not installed", "shell requires restart", "ran ./wt; shell integration wraps wt", or "ran git wt; running through git prevents cd".
RUNTIME section in wt config show: Displays binary name, version, and shell integration status to help debug invocation issues.
Clickable CI indicator: The CI status indicator (●) in wt list output is now a clickable link to the PR in terminals that support OSC 8 hyperlinks.
wt switch help text: Clarifies the difference from git switch and documents common failure conditions.
Fixed
Hook path display: Hook announcements show the execution path when shell integration isn't active.
Approval matching with deprecated vars: Approvals now match regardless of whether they were saved with deprecated or current variable names.
Documentation filter syntax: Fixed incorrect Jinja filter examples that showed ~ concatenation with | filter without parentheses. (#373, thanks @coriocactus)
Documentation
Pre-remove hook example: Added pattern for cleaning up background processes (e.g., killing dev servers) when worktrees are removed.
Install worktrunk 0.9.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.9.0/worktrunk-installer.sh | sh
Windows git-wt command: Winget now ships with git-wt as a workaround to the Windows Terminal wt naming conflict. We're still considering better options — see #133.
Install worktrunk 0.8.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.8.5/worktrunk-installer.sh | sh
Shell integration detection: More robust detection of git wt (space) vs git-wt patterns. wt config show now displays line numbers for detected shell integration.
Windows wt select error: Shows a helpful error message with alternatives instead of "unrecognized subcommand".
Fixed
Markdown table rendering: Escaped pipe characters (\|) in help output now render correctly.
Dim styling on wrapped lines: Dim text attribute now preserved on continuation lines when text wraps.
Path occupied hint: Fixed tilde expansion issue where ~/... paths didn't work in shell commands.
Documentation
Hook design guide: Added comprehensive guide for designing hooks.
Command docs: Added wt config show to command documentation.
Windows paths: Documented MSYS2 auto path conversion for Windows shell integration.
Hook execution path: Shows the execution path when post-merge hooks run in a different directory than where the user invoked the command (e.g., with --no-remove).
TTY check for wt select: Now fails gracefully when run in a non-interactive terminal instead of hanging.
Background hooks: post-start and post-switch hooks spawn in background via stdin piping, matching their normal behavior during wt switch.
Occupied path error message: When a worktree path is occupied by a different branch, the error now explains the situation clearly and suggests git switch.
Shell integration hint: Shows a hint to restart the shell when shell integration is configured but not active.
Message style: Removed 2nd person pronouns ("you/your") from user-facing messages following CLI guidelines.
Fixed
wt hook post-start blocking: Fixed bug where wt hook post-start ran in foreground blocking the command, instead of spawning in background like during normal wt switch --create.
Approval bypass with project: prefix: Fixed security issue where using project: filter prefix (e.g., wt hook pre-merge project:) bypassed the approval check, allowing unapproved project commands to run.
Documentation
License file: Added combined MIT and Apache-2.0 license file.
Demo GIFs: Added demo GIFs to command pages on the documentation site.
Install instructions: Simplified to single-line commands.
Internal
Pre-commit hooks: Updated to immutable tags.
Lychee exclusions: Cleaned up link checker configuration.
Install worktrunk 0.8.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.8.3/worktrunk-installer.sh | sh