Skip to content

worktrunk 0.76.0 - #301851

Merged
BrewTestBot merged 2 commits into
mainfrom
bump-worktrunk-0.76.0
Sep 2, 2026
Merged

worktrunk 0.76.0#301851
BrewTestBot merged 2 commits into
mainfrom
bump-worktrunk-0.76.0

Conversation

@BrewTestBot

Copy link
Copy Markdown
Contributor

Created by brew bump


Created with brew bump-formula-pr.

Details

release notes
## Release Notes

Improved

  • wt switch --execute takes a program, not a shell string: -x names one program, with everything after -- passed as literal argv. Worktrunk spawns it as a child rather than running it in your interactive shell, so shell functions and its cd no longer reach you. -x sh -- -c '…' recovers shell syntax, not functions. (Breaking: existing -x strings, plus WORKTRUNK_DIRECTIVE_EXEC_FILE and WORKTRUNK_SHELL.) (#3977, closes #2860, fixes #3944, thanks @omgreenfield for testing the migration path)

  • Worktrunk decides tracking for the branches it creates: a new branch gets an upstream only when its name matches the remote branch it starts from, whatever branch.autoSetupMerge says: --create release --base origin/release tracks, --create feature --base origin/release does not. Under autoSetupMerge = false this previously exited 128 after creating the worktree. (#3913, #3950, fixes #3937, thanks @mjakl for reporting and diagnosing)

  • Retired config keys are no longer read: commit.generation.template-file and squash-template-file are gone — put the file's contents in template or squash-template. There is no migration: the key stays, warns as unknown on every load, and the prompt reverts to the built-in default. Setting both template and template-file used to fail the load; it now loads template. switch.picker.timeout-ms likewise warns rather than being stripped. (Breaking.) (#3949)

  • Project aliases and hooks can use wt switch --execute: their bodies previously refused it. Worktrunk now starts the program itself instead of handing shell text to your shell, and the command-approval gate remains the control on project-defined commands. (#3977)

  • Established automation and LLM customization interfaces are now stable: wt step eval, wt step for-each, wt step prune, LLM branch summaries, wt config state vars, and commit.generation.template-append are no longer marked experimental. (#3949)

  • wt step prune stages removals concurrently again: only the git worktree remove teardowns serialize, so dirty checks, fsmonitor shutdown, and the trash rename overlap. The prune_e2e/live benchmark median went from 377 ms to 222 ms. (#3954)

  • wt config approvals add reads as a review rather than a warning: it opens with a cyan Review 1 command for repo: instead of a yellow ▲ … needs approval to execute. The execution-time gate is unchanged. (#3953)

Fixed

  • The wt switch picker survives a preview longer than 65,535 lines: skim keeps the pane's line count in a u16, so a larger diff aborted wt with exit 101 seconds after it painted — on screen the picker looked like it closed by itself. Panes now cap at 60,000 lines and say so. (#3959, fixes #3958, thanks @sandertammesoo for reporting and diagnosing)

  • The nushell wrapper propagates exit codes without a POSIX shell: it reported a failing wt by spawning sh, so on Windows every failing command printed a Command `sh` not found trace and exit 1 whatever the real code was. Nushell's wrapper is a static file, so rerun wt config shell install to pick this up. (#3945)

  • The picker no longer shows one detached worktree's diff for another: previews were keyed by branch name, so every detached row shared the key (detached). Rows now key by canonical identity, which also lets wt remove feature ~/repo.feature plan that worktree once instead of failing on the second. (#3926)

  • wt switch pr:<n> gives pre-switch hooks the real branch: branch and target held the literal pr:3933, and target_worktree_path was unset even when that branch had a worktree. pr_number and pr_url are now set for same-repo PRs, not only forks. (#3941, fixes #3934, thanks @robsonpeixoto for reporting)

  • wt config shell install no longer replaces an rc file created while it was checking: the missing-file path refuses to clobber and fails with a rerun hint. A dangling rc symlink is preserved and rejected rather than overwritten. (#3929)

  • wt switch --create X --base pr:<n> works when the PR branch has no local branch: the fetch writes only the remote-tracking ref, and git won't expand a bare name to one, so the command failed with No branch, tag, or commit named …. The base is now named under its remote. (#3951)

  • wt switch --create streams git worktree add instead of stalling: where a sandbox denied the timed wait's pipe or sigaction, the command waited out git's entire run and then reported Failed to wait for command for work that had already succeeded. (#3881)

  • Claude Code activity markers stay on the session's launch worktree: the plugin's marker hooks pass -C "$CLAUDE_PROJECT_DIR", so a cd mid-session no longer marks another repository. A session launched outside a repository gets no marker. (#3956)

Documentation

  • --execute documents how to get a variable into a shell body: each position is substituted verbatim, so a variable spliced into sh -c text is re-parsed by that shell and splits on spaces. The help now shows passing it as a separate argument and referencing it positionally. (#3977)

  • The clone-local default-branch override is documented: wt config state default-branch set writes worktrunk.default-branch to the clone's local git config — machine-local, never committed, and shared by every linked worktree. set warns when the branch isn't checked out locally, and wt list skips its comparisons until it is. (#3947, #3948, fixes #3946, thanks @danielo515 for the request)

  • The docs site renders code with the CLI's own colors: terminal examples reproduce each snapshot's exact ANSI roles, while command references and the homepage command comparison get clap and shell syntax color from paired light/dark themes. File excerpts gain a path tab, and code wraps instead of scrolling on mobile. (#3936, #3938, #3939, #3942)

  • The pre-start upstream example uses --base: it showed wt switch --create feature origin/feature, which wt switch rejects. (#3955)

Internal

  • Library API rework (Breaking library API): cargo-semver-checks fails ten lints — RemoteRefProvider and its provider structs give way to ForgeKind dispatch, the --execute rework retires the fish and PowerShell ShellEscapeMode escapes and WORKTRUNK_SHELL_ENV_VAR, BranchRef swaps full_ref/worktree_path for id, and accessors including Branch::unset_upstream and ProjectConfig::ci_platform are gone. (#3913, #3926, #3949, #3963, #3977)

  • Hook pipelines and wt list collection lost two indirection layers: the background pipeline carries PreparedStep directly, and 15 marker task types collapse into one exhaustive dispatch. The synthesized---force submodule path keeps its dirty re-check and destructive command under one lock, so prune's narrower locking doesn't widen that window. (#3964, #3954)

Install worktrunk 0.76.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.76.0/worktrunk-installer.sh | sh && wt config shell install

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.76.0/worktrunk-installer.ps1 | iex"; git-wt config shell install

Install prebuilt binaries via Homebrew

brew install worktrunk && wt config shell install

Download worktrunk 0.76.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 install

Install via Winget (Windows)

winget install max-sixty.worktrunk && git-wt config shell install

Install via AUR (Arch Linux)

paru worktrunk-bin && wt config shell install

View the full release notes at https://github.com/max-sixty/worktrunk/releases/tag/v0.76.0.


@github-actions github-actions Bot added rust Rust use is a significant feature of the PR or issue bump-formula-pr PR was created using `brew bump-formula-pr` labels Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

🤖 An automated task has requested bottles to be published to this PR.

Caution

Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch.

@github-actions github-actions Bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Sep 2, 2026
@BrewTestBot
BrewTestBot added this pull request to the merge queue Sep 2, 2026
Merged via the queue into main with commit 5ece842 Sep 2, 2026
22 checks passed
@BrewTestBot
BrewTestBot deleted the bump-worktrunk-0.76.0 branch September 2, 2026 02:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump-formula-pr PR was created using `brew bump-formula-pr` CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. rust Rust use is a significant feature of the PR or issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants