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
LESS flag concatenation with long options: Fixed "invalid option" error when users have long options in LESS (e.g., LESS=--mouse). The pager auto-quit feature from v0.13.1 now correctly separates flags. Fixes #594. (thanks @tnlanh for reporting)
Internal
Homebrew formula generation: Release workflow now uses cargo-dist for Homebrew formula generation, simplifying the release process.
Install worktrunk 0.13.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.13.4/worktrunk-installer.sh | sh
Validate before approval prompts: wt switch and wt remove now validate operations before prompting for hook approval, so users don't approve hooks for operations that will fail.
Fixed
Homebrew formula SHA256 hashes: Fixed release workflow that was setting incorrect checksums for Intel and Linux binaries, causing brew install to fail. Fixes #589. (thanks @kobrigo for reporting)
Install worktrunk 0.13.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.13.2/worktrunk-installer.sh | sh
Pager auto-quit: Help text now auto-quits when it fits on screen, even when LESS is set without the F flag (common with oh-my-zsh's LESS=-R default). Fixes #583. (thanks @razor-x for reporting)
--create hint for remote branch shadowing: Improved recovery hint when --create shadows a remote branch — now shows the full recovery command.
Install worktrunk 0.13.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.13.1/worktrunk-installer.sh | sh
wt list parallelization improvements: Better parallelization of worktree operations reduce latency in some conditions. Respects RAYON_NUM_THREADS environment variable for controlling parallelism.
Template variables in --execute: Hook template variables ({{ branch }}, {{ worktree_path }}, etc.) are now expanded in --execute commands and trailing args. With --create, {{ base }} and {{ base_worktree_path }} are also available.
Fish shell Homebrew compatibility: Fish shell integration now installs to ~/.config/fish/functions/wt.fish instead of conf.d/, ensuring PATH is fully configured before the wt function loads. wt config show detects legacy installations and wt config shell install handles migration automatically. (#586 — thanks @ekans & @itzlambda)
Chrome Trace Format export: Performance traces can be exported for analysis with Chrome's trace viewer or Perfetto.
--dry-run flag for shell commands: wt config shell install and wt config shell uninstall now support --dry-run to preview changes without prompting.
Nested subcommand suggestions: When typing wt squash instead of wt step squash, the error now suggests the correct command path.
Orphan branch indicator: wt list shows ∅ (empty set) for orphan branches with no common ancestor to the default branch.
Improved -vv diagnostic workflow: Bug reporting hint now uses a gist workflow to avoid URL length limits.
Fixed
wt switch --create --base error message: Now correctly identifies the invalid base branch instead of the target branch. Fixes #562. (thanks @fablefactor)
AheadBehind column loading indicator: Shows ⋯ when not yet loaded instead of appearing empty, distinguishing loading state from "in sync".
wt select --branches and --remotes flags: Control which items appear in the selection UI. Shares the [list] config section with wt list for consistent defaults.
Graceful degradation when default branch unavailable: When the default branch cannot be determined (e.g., misconfigured), wt list shows warnings and empty cells rather than failing. wt switch --create without --base gives a clear error message.
Remove --refresh flag from state commands: wt config state default-branch get and wt config state ci-status get now purely read cached state. To force re-detection, use the explicit workflow: clear then get. (Breaking: --refresh flag removed)
Windows: Require Git for Windows: Removed PowerShell fallback. Worktrunk now requires Git for Windows (Git Bash) and shows a clear error message pointing to the download page if not found. (Breaking: PowerShell no longer supported)
Fixed
Flag styling in messages: Flags like --clobber and --no-verify in parentheses now inherit message color instead of using bright-black styling.
Nix flake for packaging: New flake.nix for Nix users with crane for efficient Rust builds. (#502, thanks @marktoda; thanks @Kabilan108 for requesting)
sanitize_db template filter: New filter that transforms strings into database-safe identifiers with a 3-character hash suffix for collision/keyword safety. (#498, thanks @hugobarauna for requesting)
wt select performance: 500ms timeout for git commands improves TUI responsiveness on large repos with many branches. (thanks @KidkArolis for reporting #461)
wt select stale branch handling: Branches 50+ commits behind the default branch now skip expensive operations, showing ... in the diff column. Improves performance on repos with many stale branches.
Global merge-base cache: Cached merge-base results improve wt list performance by avoiding redundant git calls.
wt config show git version: Now displays the git version alongside the worktrunk version.
wt step copy-ignored default: Now copies all gitignored files by default. Use .worktreeinclude to limit what gets copied (previously required .worktreeinclude to specify what to copy).
Trace log analysis: New analyze-trace binary for analyzing [wt-trace] performance logs.
Fixed
Statusline truncation: No longer truncates when terminal width is unknown, fixing Claude Code statusline display.
Shell completions: Deprecated args like --no-background no longer appear in tab completions.
wt remove progress ordering: Progress message now appears after pre-remove hooks, not before.
wt list index lock: Uses --no-optional-locks for git status to avoid lock contention with parallel tasks.
Install worktrunk 0.11.0
Install prebuilt binaries via shell script
curl --proto =https --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.11.0/worktrunk-installer.sh | sh
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