Skip to content

Releases: max-sixty/worktrunk

0.6.1

24 Dec 19:11

Choose a tag to compare

Release Notes

Improved

  • post-switch hook: New hook that runs in the background after every wt switch operation. Unlike post-start (which only runs on creation), post-switch runs on all switch results. Use cases include renaming terminal tabs, updating tmux window names, and IDE notifications.
  • Signal forwarding for hooks: Hooks now receive SIGINT/SIGTERM when the parent process is interrupted, allowing proper cleanup. Previously, non-interactive shells continued executing after signals.
  • Faster wt list skeleton: Time-to-skeleton reduced by caching default branch lookup, batching timestamp fetching, and deferring non-essential git operations. Skeleton shows · placeholder for gutter symbols until data loads.
  • Clearer --clobber hint: Error message now says "to overwrite (with backup)" instead of "to retry with backup".

Documentation

  • State side-effects: Added section explaining how Worktrunk state operations may trigger git commands.
  • wt merge location: Clarified that wt merge runs from the feature worktree.

Download worktrunk 0.6.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.6.0

21 Dec 09:52

Choose a tag to compare

Release Notes

Improved

  • Single-width Unicode symbols: Replaced emojis (🔄, ✅, ❌) with single-width Unicode symbols (◎, ✓, ✗, ▲, ↳, ○, ❯) for better terminal compatibility and consistent alignment.
  • Output system overhaul: Clean separation of output channels (data→stdout, status→stderr, directives→file) means piping works with shell integration active. wt list --format=json | jq and wt switch feature | tee log.txt both work correctly. Background processes use process_group(0) instead of nohup for more reliable detachment.
  • Trailing arguments for --execute: wt switch --execute now accepts arguments after --, enabling shell aliases like alias wsc='wt switch --create -x claude' then wsc feature -- 'implement login'.
  • hash_port template filter: {{ branch | hash_port }} hashes the branch name to a deterministic port number (10000-19999), useful for running dev servers without port conflicts.
  • sanitize template filter: {{ branch | sanitize }} explicitly replaces / and \ with - for filesystem-safe paths. (Breaking: {{ branch }} now provides raw branch names. Update templates that use {{ branch }} in filesystem paths to use {{ branch | sanitize }} instead)
  • Log directory in state output: wt config state logs and wt config state get now show the log directory path under a LOG FILES heading.
  • Actionable error hints: Error messages now include hints about what command to run next.
  • Unified directory change output: wt remove now shows "Switched to worktree for {branch} @ {path}" matching wt switch format.
  • Consistent "already up to date" formatting: Standardized message wording and styling across commands.

Fixed

  • wt step rebase with merge commits: Fixed incorrect "Already up-to-date" when a branch has merge commits from merging target into itself.

Documentation

  • Local CI workflow: Added "Local CI" section to wt merge --help explaining how pre-merge hooks enable faster iteration.
  • Colored command reference: Web docs now preserve ANSI colors in command reference output.
  • Clarified terminology: Help text uses "default branch" instead of hardcoded "main".

Download worktrunk 0.6.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.5.2

19 Dec 06:11

Choose a tag to compare

Release Notes

Improved

  • --clobber flag for wt switch: When encountering a stale directory or file at the target worktree path, --clobber moves it to a timestamped .bak file instead of failing.
  • Relative paths in wt list: Paths are now shown relative to the main worktree (., ./subdir, ../repo.feature) instead of a computed common prefix that could degenerate to /.
  • Multiline error formatting: Errors with context now show a header describing what worktrunk was trying to do, with the full error chain in a gutter block.
  • Semantic switch messaging: Switching to an existing worktree now shows ⚪ (info) instead of ✅ (success), reflecting that nothing was created.

Fixed

  • Symbol styling in removal messages: Integration symbols (_, ) now render in their canonical dim appearance instead of inheriting the message's cyan color.
  • ConflictingChanges error formatting: Fixed double newlines in the error message output.

Download worktrunk 0.5.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.5.1

17 Dec 22:10

Choose a tag to compare

Release Notes

Improved

  • Integration status in removal messages: Shows integration symbols (_ for same commit, for integrated) when removing worktrees, matching wt list display.
  • Concurrent command limiting: Limits concurrent git processes to 32 (configurable via WORKTRUNK_MAX_CONCURRENT_COMMANDS), preventing resource exhaustion on repos with many branches.
  • Better error display for wt list: Task errors are now collected and displayed as warnings after the table renders, instead of being silently swallowed.
  • Remove continues on partial failures: wt remove continues removing other worktrees when some fail, reporting all errors at the end.
  • Bash syntax highlighting: Shell commands in error gutters now have syntax highlighting.
  • Shell integration is command-aware: Detection and removal works correctly when installed as git-wt or other names.
  • CI fetch error documentation: Yellow warning symbol (⚠) in CI column is now documented in help text.

Fixed

  • CI status with multiple workflows: Fixed incorrect status when multiple workflows exist (e.g., ci and publish-docs). Now uses GitHub's check-runs API to aggregate all workflow statuses.
  • State storage unification: Unified branch-keyed state under worktrunk.state.<branch>.*. Numeric branch names now work. (Existing CI cache and markers regenerate on first access)

Internal

  • Environment variable prefix: Standardized to WORKTRUNK_ prefix (e.g., WORKTRUNK_MAX_CONCURRENT_COMMANDS).
  • Automatic winget package publishing on releases.

Download worktrunk 0.5.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.5.0

16 Dec 06:30

Choose a tag to compare

Release Notes

Improved

  • Path column hidden when redundant: Path column is deprioritized when all paths match the naming template, showing only at wider terminal widths (~125+ columns).
  • Better error formatting: Errors with context now show a header with the root cause in a gutter block, improving readability for git errors.
  • Clearer integration target: Separated default_branch (for stats like ahead/behind) from target (for integration checks), catching branches merged remotely before pulling.

Fixed

  • Untracked files block integration: Untracked files now prevent a worktree from being flagged as integrated, avoiding accidental data loss on removal.
  • Dirty worktree count includes untracked: Summary now correctly counts worktrees with untracked files as dirty.
  • Branch name disambiguation: Fixed refname:short issues when a branch and remote have the same name.
  • JSON output uses kebab-case: Enum values changed from snake_case to kebab-case (e.g., same_commitsame-commit). (Breaking: scripts parsing JSON output may need updates)
  • Legacy marker format removed: Plain-text markers no longer parsed. (Breaking: re-set markers with wt config state marker set)

Internal

  • Unified command execution: All external commands now go through shell_exec::run() for consistent logging and tracing.

Download worktrunk 0.5.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.4.0

15 Dec 05:17

Choose a tag to compare

Release Notes

Added

  • --no-rebase flag for wt merge: Fails early with a clear error if the branch is not already rebased onto target, rather than auto-rebasing. Useful for workflows that handle rebasing separately. (#194)

Changed

  • Branch-first argument resolution: wt switch and wt remove now check if the branch has a worktree anywhere before checking the expected path. If you type wt switch foo, you get branch foo's worktree, not whatever happens to be at the expected path. (#197)

Fixed

  • --no-commit incorrectly skipped rebasing: wt merge --no-commit now correctly rebases before stopping (if needed), rather than skipping the rebase entirely. (#194)
  • Pager for wt config show --full: The pager now works correctly with the --full flag, showing diagnostics properly. (#198)
  • Statusline stdin handling: Fixed flaky behavior on Windows CI by using standard is_terminal() check instead of timeout-based approach. (#210)

Improved

  • Path-occupied error messages: When wt switch can't create a worktree because the path exists, error messages now show which branch occupies the path and provide actionable commands to fix the situation. (#195, #206, #207)
  • Switch mismatch detection: Better error messages when path/branch mismatches occur, with hints showing the expected path. (#195)

Download worktrunk 0.4.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.3.1

14 Dec 22:46

Choose a tag to compare

Release Notes

Fixed

  • Branch names with slashes: Branch names like fix/feature-name no longer break git config markers. Slashes are now escaped for git config compatibility. (#189, thanks @kyleacmooney)
  • stdin inheritance for --execute: Interactive programs (vim, python -i, claude) now work correctly with --execute on non-Unix platforms. (#191)
  • Filenames with spaces/newlines: Git status parsing now handles filenames containing spaces and newlines correctly using NUL-separated output.
  • Concurrent approval race condition: Multiple concurrent approval/revocation operations no longer overwrite each other. Approvals now reload from disk before saving.
  • Dirty worktrees incorrectly marked integrated: Priority 5 integration check now requires clean working tree state, preventing worktrees with uncommitted changes from being flagged as safe to remove.
  • Type changes not detected as staged: Index status check now recognizes file type changes (T status) as staged changes.
  • User hook failure strategy: Hook failure strategy now correctly applies to user hooks instead of always using fail-fast.
  • Branch variable in detached HEAD: {{ branch }} now correctly expands to "HEAD" in detached HEAD worktrees instead of "(detached)".

Improved

  • Self-hosted GitLab support: CI auth checks now detect the GitLab host from the remote URL, supporting self-hosted GitLab instances instead of always checking gitlab.com.
  • Platform-specific CI status: wt list --full and wt config show now show only the relevant CI tool (GitHub Actions or GitLab CI) based on the repository's remote URL.
  • LLM error reproduction: When LLM commands fail, error messages now show the full reproduction command (e.g., wt step commit --show-prompt | llm) for easier debugging.
  • Location format: Messages now use @ instead of at for location phrases (e.g., "Switched to feature @ /path").
  • Switch help text: Clarified that wt switch creates worktrees automatically for existing branches, not just for new branches with --create.

Download worktrunk 0.3.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.3.0

13 Dec 06:13

Choose a tag to compare

Release Notes

Added

  • --show-prompt flag for LLM commands: wt step commit --show-prompt and wt step squash --show-prompt output the rendered LLM prompt without executing the command. Useful for debugging templates or manually piping to LLM tools. (#187)
  • Diff size limits and diffstat for LLM prompts: Large diffs (>400K chars) are progressively filtered—first removing lock files, then truncating to 50 lines/file, max 50 files. New git_diff_stat template variable shows line change statistics. (#186)
  • MainState::Empty status: New _ symbol for clean same-commit branches (safe to delete), distinguished from (en-dash) for same-commit branches with uncommitted changes. Previously, both showed _. Only Empty branches are dimmed and considered "potentially removable". (#185)

Changed

  • State subcommands default to get: Running wt config state default-branch now defaults to get, making the command shorter. Use explicit get subcommand to access options like --refresh or --branch. (#184)
  • Clearer integration reason messages: Updated descriptions to be more precise—"same commit as" instead of "already in" for SameCommit, "ancestor of" for Ancestor, "no added changes" for NoAddedChanges, "tree matches" for TreesMatch.

Download worktrunk 0.3.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.2.1

12 Dec 20:45

Choose a tag to compare

Release Notes

Changed

  • Unified state management: wt config var and wt config cache replaced by wt config state with consistent get/set/clear semantics for all runtime state. New subcommands: default-branch, ci-status, marker, logs, show. (#178)
  • Comprehensive state overview: wt config state show displays all state (default branch, switch history, markers, CI cache, logs) with --format=json support. (#180)

Added

  • git-wt binary for Windows: New git-wt binary avoids conflict with Windows Terminal's wt command. Build with --features git-wt. Shell init/install now accept --cmd to specify which binary name to use. (#177)
  • Diffstat in select preview: The log preview (Tab 2) in wt select now shows line change statistics (+N -M) matching wt list's HEAD± column format. (#179)

Fixed

  • Windows compatibility: Multiple test and runtime fixes for Windows including stdin timeout handling, path canonicalization, and cross-platform test behavior. (#167, #168, #169, #170, #171, #174, #176)

Download worktrunk 0.2.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.1.21

12 Dec 00:20

Choose a tag to compare

Release Notes

Fixed

  • Windows path handling in shell templates: Fixed path quoting in hook templates on Windows by using cygpath to convert native Windows paths to POSIX format for Git Bash compatibility. Template variables like {{ worktree }} and {{ repo_root }} now work correctly. (#161)
  • Hook errors show --no-verify hint: When hooks fail during wt merge, wt commit, or wt squash, the error message now includes a hint about using --no-verify to skip hooks. (4a89748)

Download worktrunk 0.1.21

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