Release Notes
Improved
-
Opt-in JSON schema 2 for
wt list:wt list --format=jsonandwt list statusline --format=jsoncan now emit a v2 schema, selected via the[list] json-schemaconfig key. Schema 2 wraps the rows in an envelope (schema,repo.default_branch,repo.forge,collected) and separates "nothing to report" (field absent) from "requested but undetermined" (fieldnull— a probe still pending, timed out, or failed). Schema 1 — the existing bare array — remains the default, byte-for-byte; with the key unset, a once-per-process stderr hint shows both values (= 1to pin,= 2to opt in; suppressed on the statusline surface). Docs (#3357) -
wt config approvals listandclear --stale:listshows every command the project config declares — hooks in lifecycle order, aliases, commit-message guidance — grouped into approved and unapproved, with approvals recorded for commands no longer in the config flagged as stale.clear --staleremoves only those left-behind approvals, echoing each one; valid approvals survive, and a full wipe remains plainclear. Docs (#3380) -
Codex sessions show activity markers: The Codex plugin now ships Codex-native activity hooks, so
wt listshows 🤖 (working) / 💬 (waiting) for Codex sessions as it does for Claude Code, OpenCode, and Gemini — and Claude-branded events no longer surface inside Codex sessions. Codex has no session-exit event, so the marker rests at 💬 after a session ends until the next session orwt config state marker clear. (#3364, closes #3362, thanks @ofek for reporting)
Fixed
-
User hooks no longer inherit
wt'sGIT_*discovery vars: A user hook that shells out togitnow discovers its repository from the worktreewtsets as its cwd, rather than an inheritedGIT_DIR/GIT_WORK_TREE(e.g. fromwtrun as a!wtgit alias, or nested under another tool's git hook).wtnow scrubs theGIT_*discovery vars at every hook spawn site — foreground, background, and concurrent. Previously the inherited context leaked into hooks: with bothGIT_DIRandGIT_WORK_TREEpresent, a hook that rangit initwould writecore.worktreeinto the inherited repo's config, silently redirecting later plain git commands there.wt's own internal git plumbing keeps the inherited context (the absolutize-and-forward behavior from #1914); aliases keep it too, since a top-levelwt <alias>is the user's own command. (#3374, closes #3373, thanks @silvanshade for reporting) -
SCP-style SSH remotes with custom usernames: Remote URLs like
org-12345678@github.com:owner/repo.git(GitHub account/org aliases) now parse canonically, sowt switch pr:<n>matches the local remote instead of failing withNo remote found. Malformed and local-path forms that merely resemble SCP syntax are still rejected. (#3371, thanks @fcoury-oai)
Documentation
-
Windows app-alias guidance matches current Settings: The instructions for disabling Windows Terminal's
wtapp-execution alias now point at the current Settings path (Apps → Advanced app settings → App execution aliases). (#3372, thanks @ofek) -
/wt-switch-createalways creates a worktree: The plugin skill's wording let a session judge that a research or read-only task didn't need isolation and skip the worktree; invoking the command now counts as the explicit request, so the worktree is created unconditionally. (#3356)
Install worktrunk 0.66.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.66.0/worktrunk-installer.sh | sh && wt config shell installInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.66.0/worktrunk-installer.ps1 | iex"; git-wt config shell installInstall prebuilt binaries via Homebrew
brew install worktrunk && wt config shell installDownload worktrunk 0.66.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 installInstall via Winget (Windows)
winget install max-sixty.worktrunk && git-wt config shell installInstall via AUR (Arch Linux)
paru worktrunk-bin && wt config shell install