Repository navigation
worktrunk 0.79.0 - #312514
Merged
Merged
worktrunk 0.79.0#312514
Conversation
chenrui333
approved these changes
Sep 21, 2026
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Created by
brew bumpCreated with
brew bump-formula-pr.Details
release notes
wt switch --no-cd -x <program>runs the program in the worktree: it started in the invoking directory, so a program meant for the new worktree had to be handed{{ worktree_path }}.--no-cdnow governs only your shell —wt switch feature --no-cd -x code -- .opens the worktree in an editor and leaves your terminal put. (Breaking: a program that wanted the invoking directory needs an explicitcd.) Fixes #4042. (#4179, thanks @yajo for reporting)The picker's preview tabs show which have content: a tab's label is dim when that tab is empty for the selected row, and underlined when it's the active tab. Availability sat on the tab's number alone, so every inactive label read dim whatever the row held. (#4174)
Messages name the destination, and end with the command to run: without shell integration,
wt mergeandwt removeprintedCannot change directory — shell integration not installedand no path; the warning now names the worktree, aswt switchalready did. "Cannot determine default branch" had three wordings, and three recovery hints put their command first rather than last. (#4163, #4155, thanks @blrain3 for reporting)/wt-switch-createno longer stalls at Claude Code's path-entry dialog: Claude Code confirms every entry outside.claude/worktrees/, which is every Worktrunk worktree, so a background session waited for someone to attach. The plugin now approves entry into a worktree at itsworktree-pathlocation, and reads a bare name as the repo or the branch. (#4158, #4159)wt config update --outputaccepts the config being migrated: it refused that path when the migration droppedapproved-commands. Those approvals now move to approvals.toml first, exactly as the in-place update moves them. (#4204)Fixed
wt mergeon a dirty worktree describes what it commits: the generated message covered the branch's earlier commits and said nothing about the work the merge had just staged into the same commit.wt step squash --dry-runnow previews what the run would commit, aswt step commit --dry-rundoes. (#4178)A config save no longer rewrites the rest of your config: declining a prompt, or setting the commit-generation command, rewrote the whole file, dropping values written at their default and re-spelling hook pipelines and dropping their comments. It also reloaded that file over the in-memory config, so
wt step commit --config-set 'commit.stage="none"'staged everything once it had asked about commit generation. (#4160, #4156, #4151)Diff display config no longer reaches Worktrunk's prompts or its integration check:
color.ui = alwaysanddiff.externalreached the commit, squash, and summary prompts. Two corner cases also madewt removeandwt step prunedelete an unmerged branch:diff.relativeset and a Worktrunk command run from a subdirectory the branch's changes sat entirely outside, orsubmodule.<name>.ignore = all(git config or.gitmodules) and a submodule bump as its only change. (#4146, #4147)Auto-staging names a wholly untracked directory once: since 0.78.0 the warning expanded each one into its files, so
wt step commit,wt step squash, andwt mergelisted 300 paths for a directory of 300 new files. The listing also stops at ten rows, with a hint counting the rest. (#4152, thanks @Duang777)Valid empty per-project sections stop warning:
[projects."host/org/repo".list]is accepted on load, yet every command reportedunknown field projects.host/org/repo.listfor it — as did the other six per-project sections. Fixes #4115. (#4123, thanks @zach-hammad-vs for reporting)An unstaged rename counts as a change: after
git add -N, git reports the rename in the worktree column (R), which Worktrunk read only in the index column. A worktree whose only change was such a rename showed clean inwt list, andwt merge's overlap check on the destination misparsed the old path. (#4190, #4191, thanks @Duang777)wt merge --no-ffandwt step push --no-ffsign their merge commit undercommit.gpgSign: they built it withcommit-tree, which ignores that setting.wt step rebaseandwt mergealso pass--no-update-refs, so a rebase rewrites only its own worktree's branch. (Breaking:rebase.updateRefsno longer moves other local branches stacked in the rebased range.) (#4146)wt step prune --min-ageguards branches with no reflog: they got no age guard at all, so in a bare repository — wherecore.logAllRefUpdatesdefaults off — a branch that had just arrived at an integrated commit was pruned on the next run. Age now comes from the mtime of the file holding the ref. (#4154)The picker preview renders the whole pane: a fenced code block with no closing fence dropped everything from the fence to the end of a PR description or comment, and the pane rendered one column wider than skim paints, so a wrapped line flush against the right edge lost its last character. (#4178, #4183)
wt config plugins pi installexpands~in$PI_CODING_AGENT_DIR: Pi expands it, soPI_CODING_AGENT_DIR="~/x"means a directory under home, where Worktrunk created a literal~directory under the current directory. (#4151)wt config createno longer replaces a dangling symlink at the config path: it wrote a regular file over the link, detaching whatever owns it. It now fails and names the link. (#4204)Documentation
The picker demo shows the CI and summary columns filling in:
alt-pwidens the rows, the cells land behind them, then it pages a diff, a PR's comment thread, and the PR itself. The homepage omnibus demo opens on the picker. Docs (#4178)The docs got a sweep: help text drops internals, deprecated behavior, and edge cases the command reports itself when they happen —
wt step diff's "How it works", thewt hook --varparagraph, and thewt config state ci-statuspage among them. Config samples now name the file they belong in as the block's tab. (#4157, #4153, #4173, #4177)Internal
Library API rework (Breaking library API):
cargo-semver-checksfails five lints —BranchDiffSpecswapsrevs/working_basefordiff_base,UserConfig::save_togives way to theConfigEditmutations,config::UnknownAnalysisis gone,Repository::prepare_difftakesfrom/toin place of a revision list, and four diff helpers onPreparedDiffandWorkingTreego with it. (#4146, #4147, #4160, #4156)The Nix flake's test sandbox gains
openssh, which the merge-signing test needs. (#4168)Install worktrunk 0.79.0
Install prebuilt binaries via shell script
Install prebuilt binaries via powershell script
Install prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.79.0
Install via Cargo
cargo install worktrunk && wt config shell installInstall via Winget (Windows)
winget install max-sixty.worktrunk && git-wt config shell installInstall via AUR (Arch Linux)
paru worktrunk-bin && wt config shell installView the full release notes at https://github.com/max-sixty/worktrunk/releases/tag/v0.79.0.