Skip to content

Update dependency max-sixty/worktrunk to v0.70.0 - #103

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/max-sixty-worktrunk-0.x
Open

Update dependency max-sixty/worktrunk to v0.70.0#103
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/max-sixty-worktrunk-0.x

Conversation

@renovate

@renovate renovate Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Update Change Pending
max-sixty/worktrunk minor 0.68.00.70.0 v0.71.0

Release Notes

max-sixty/worktrunk (max-sixty/worktrunk)

v0.70.0: 0.70.0

Compare Source

Release Notes

Improved
  • wt step prune removes worktrees far faster: Each removal ran a serial chain of ~17 git subprocesses under the scan write lock, re-preparing a plan the scan had already computed and re-stating the worktree right after the fsmonitor daemon stop. The chain is now one check per guarantee, reusing the scan-time plan, and removals run concurrently on the scan lock's read side — the write side is kept for the candidates that need it (hook-bearing, --foreground, metadata-pruning, and the current worktree). The documented rust-scale live prune of 24 candidates goes from ~12 s to ~0.6 s wall, and the prune_e2e/live benchmark from ~620 ms to ~400 ms. (#​3617, #​3631)

  • wt step prune --format=json is ordered, and a failed removal aborts the rest: Live JSON output is now sorted by scan index, matching --dry-run, with the current worktree last. The first failing removal drains the remaining queue unexecuted, matching the serial loop it replaced; in-flight removals complete. (#​3631)

  • A worktree can be named by its path wherever a branch is accepted: Every argument that takes a branch now also accepts the worktree's own path, resolved after the branch so a directory never shadows a branch sharing its name. A path names what a branch cannot — a detached worktree, or one of two checkouts of the same branch. Relative paths resolve against -C and a leading ~ against the home directory, so a path worktrunk printed can be pasted back. Docs (#​3607)

  • wt list flags a branch checked out in more than one worktree: Such a branch resolves to whichever worktree git lists first, so every worktree on it now carries worktree.state "duplicate_branch" in schema 1, a worktree.duplicate_branch boolean in schema 2. The flag makes the ambiguity visible in the listing; resolving such a branch from any command warns separately and names a duplicate to drop. (#​3480, #​3606)

  • wt switch --execute computes only the template variables its command names: The switch path built every variable the template context could hold before rendering; it now resolves just the ones the command references. On a clone with no origin/HEAD and no cached default branch, that removes a git ls-remote the command never asked for — 13 subprocesses and one remote query down to 8 and none. (#​3628)

Fixed
  • A branch checked out in a second worktree is retained on removal, -D included: wt remove and wt step prune now act on the worktree named rather than the branch's first checkout, and all three of wt remove, wt step prune, and wt merge keep the branch while another worktree still has it out — deleting the ref would leave that worktree unable to resolve HEAD, which is why git branch -d refuses the same delete. The retention is reported and names the surviving checkout rather than passing silently. (#​3533)

  • Removal reports what it took, not what it selected: A removal's summary and JSON described the plan, so a worktree candidate whose branch was retained still counted as ✓ Pruned 1 branch, and wt remove --format=json reported "branch_deleted": true beside a stderr line saying the branch was kept. Execution now returns the branch's fate; wt step prune counts executed outcomes (--dry-run included), both JSON payloads gained branch_deleted, and a declined orphan deletion drops out of the removed list rather than being reported as removed. (#​3633, #​3637)

  • Hook previews expand every variable except vars.*: One vars. token disabled expansion for the whole command, so wt hook show --expanded and wt hook <type> --dry-run printed {{ branch }} and {{ repo }} raw in a listing whose job is to show the expansion. A preview now substitutes a stand-in that renders each vars.* reference back as itself, nested access included, while every other variable expands — and no longer spawns the git read that resolving vars required. The listing is also derived from the execution path itself, so a context key added there reaches the preview with no second edit. wt config alias dry-run shares the renderer, so its help text — which still described the all-or-nothing behavior — was corrected to match. (#​3635, #​3638, #​3639)

  • wt hook show no longer prints a bare heading for an empty command list: A hook type declared as post-switch = [] has a config entry but no commands, and the section decided it had printed something from the entry rather than from the rows — so it emitted its heading and stopped, and the (none configured) line never appeared. Both the user and project sections carried the bug, since the loop and the fallback were duplicated; they now share one renderer that reports whether it wrote any rows. The execution path was already correct: an empty list announces nothing and is omitted from JSON. (#​3641)

  • wt config shell install reclaims its own legacy wrapper paths: Fish sources conf.d at startup, so a stale conf.d/{cmd}.fish was already loaded by the time fish would autoload the functions/{cmd}.fish the install had just written — the old definition won and the new wrapper never loaded. Install decided ownership by reading the file, and left anything unrecognized in place. Ownership now comes from the path: conf.d/{cmd}.fish and the stranded nushell {cmd}.nu candidates are paths worktrunk computes for the command being installed, so it takes them back whole, unread. Only that exact filename is touched — a neighbour under another name is not worktrunk's — and each removal is reported. wt config shell uninstall still reads the header, because it takes no --cmd and so cannot know the name; it prompts and previews every file first. (Breaking: install now removes a file at those exact paths regardless of its contents.) (#​3602)

  • Command timeouts actually bound wall-clock, and a default branch guessed while the remote was unreachable isn't cached: A timeout killed only the direct child, so a surviving grandchild held the output pipe open and the call ran on regardless — a 3 s bound measured at 120 s. A timed command now runs in its own process group and the whole tree is torn down on expiry, which fixes every existing bound including the fsmonitor and reap probes. On top of that, nothing in git bounds git ls-remote (an unreachable host costs ~127 s per address on Linux), so default-branch detection abandons the query after 10 s and falls back to local inference — without caching the result, so an outage can't make an inferred default branch permanent. (Breaking: because a timed command gets its own process group, Ctrl-C no longer reaches it; the command waits out the remaining bound.) (#​3603)

  • wt step relocate no longer strands a worktree in its staging directory: When worktree A's target was held by worktree B, and B was itself blocked by a non-worktree path without --clobber, the dependency loop read the stall as a cycle, temp-moved A into .git/wt/staging/relocate/, then failed moving it into the still-occupied target — leaving A at neither its original nor its expected path. A worktree blocked by an immovable occupant is now skipped. (#​3530)

  • Forge CLI failures are classified by response shape, not by the tool's prose: tea api copies the response body to stdout and exits 0, so an HTTP error never tripped the exit-code gate — a Gitea APIError body deserialized into {state: "", total_count: 0}, indistinguishable from a commit with no CI statuses, while the PR-list path blamed an API change for what was an API error. Failures from gh, glab, and tea are now keyed on the response envelope, and a non-zero exit keeps meaning the tool itself failed; the CLI's own error text is forwarded rather than reworded, so a bad token surfaces as gh: Bad credentials (HTTP 401) instead of a suggestion to re-authenticate. wt config show --full reports the Azure DevOps CLI extension alongside the other forge tools. (#​3595, #​3597, #​3605)

  • wt config plugins claude install-statusline no longer mistakes another tool's statusline for its own: The check for an existing worktrunk statusline matched the bare substring wt , which an unrelated command like newt status satisfies — so wt config show reported a foreign statusline as worktrunk's, and the installer early-returned "already configured" and refused to install. It now matches the adjacent list statusline token pair, so it works whether the binary is wt, git-wt, or an absolute path. (#​3595)

  • [list] task-timeout-ms is removed: The per-command bound is gone; [list] timeout-ms bounds the whole collect phase. A config that still sets it warns, and wt config update strips the key — in the top-level, project-scoped, and inline-table forms. (Breaking: the setting no longer has any effect. It was also, until this release, ignored for a command that carried its own bound.) (#​3613, #​3615)

Documentation
  • wt remove documents what retention protects: The branch-cleanup section's six conditions all ask whether deleting loses work; a branch checked out in a second worktree fails a different test, and the page now says so, alongside a new "Naming a worktree" section on wt switch. The FAQ's advice to git worktree lock a worktree holding precious ignored data now says what the lock actually buys — it blocks removal, and nothing else; wt merge and wt step push will still overwrite an ignored file the incoming commits track. (#​3533, #​3601, #​3607)

  • Default-branch detection documents the remote-query bound: The detection ladder records that the git ls-remote step is abandoned after 10 s, that local inference covers the abandoned case, and that this is the one result not cached. (#​3603)

  • wt step push records that destination-worktree safety matches git: Pushing overwrites an ignored file in the destination whose path the incoming commits track, exactly as a git merge run there would; the spec now says the match is deliberate. (#​3614)

Internal
  • skim is back on a current release: The picker was held at skim 5.1.0 because 5.3.1 regressed the legacy Windows console — every picker PTY test failed on the keyboard progressive-enhancement path. 5.5.0 guards it, so the pin moves forward. (#​3626)

  • Coverage uploads on every main commit: The coverage job shared one concurrency group with a sampled job that held it for ~2 h, so a queued coverage run was usually cancelled by the next merge — 29 of the last 40 main commits uploaded no report, which left later PRs comparing codecov/patch against a stale base. CI is now split by cadence into three workflows (ci every commit, coverage every commit keyed per-sha, affected sampled), so a merge train can't cancel a queued upload. (#​3608)

  • /wt-switch-create creates the worktree by name and cleans up an untouched one: The shipped Claude skill now creates through EnterWorktree({name}) for the common case, falling back to a path, which avoids a confirmation prompt on recent Claude Code versions. A worktree created that way and never touched — no changed files, no commits — is removed when the session ends, branch included; anything written into it keeps it, and a worktree entered by path always stays. (#​3636)

Install worktrunk 0.70.0

Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.70.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.70.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.70.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

v0.69.2: 0.69.2

Compare Source

Release Notes

Improved
  • wt remove resolves every fsmonitor daemon in one lsof call: The end-of-command sweep forked one lsof per git fsmonitor--daemon on the machine — with core.fsmonitor enabled globally that is one daemon per repo ever touched, routinely over a hundred — and the spawn cost compounds under load rather than staying fixed per call. All daemons now resolve in a single call: 108 spawns to 1 on a live machine. (#​3581)
Fixed
  • Shell integration no longer deletes user data that merely quotes the init command: Three places decided whether text was worktrunk's by testing a blob for substrings, and two of them deleted on a wrong guess. wt config shell uninstall removed an rc line like alias setup='echo "run: wt config shell init fish | source"'; wt config shell install's legacy cleanup deleted a user's own ~/.config/fish/conf.d/wt.fish outright when the file happened to mention the init command. Both now require the command name in command position, not merely somewhere in the text. (#​3589)

  • Forge detection matches host labels, not substrings: wt switch pr:<n> and friends picked their provider with host.contains("github") / contains("dev.azure.com"), so a host that only spells the name inside a longer one — github-mirror.example, dev.azure.com.attacker.example — resolved as that provider. Matching is now label-wise, accepting the domain and its subdomains only; a self-hosted deployment this misses can still name its provider explicitly. (#​3589)

  • A crash mid-write no longer empties the file being written: wt config shell uninstall ended its rc rewrite by truncating in place, so a crash, a full disk, or a lost power cable between the truncate and the write left ~/.bashrc, ~/.zshrc, or a PowerShell profile empty or half-written, taking every line the user had ever added. Every user-file write now goes through one writer that writes a temp file beside the target and renames it into place. (#​3585, #​3591)

  • wt step push refuses to run out of a half-finished operation: Mid-rebase the detached HEAD looks like a linear extension of the target, so wt step push main reported ✓ Pushed to main (1 commit) while moving the target branch onto a half-replayed history and leaving the rebase open; it now runs the same operation gate as wt step rebase and wt merge. The same change fixes an annotated-tag target always reporting as needing a rebase — the tag object's SHA was compared against a merge-base that peels it — and makes both push paths refuse a target worktree whose directory is gone, rather than --no-ff moving the ref over the stale registration. (#​3578)

  • Conflict markers can't reach a commit, and the refusal names the command you ran: wt step relocate --commit staged with git add -A and committed straight through an unresolved merge, reaching neither gate added for the other staging commands; every staging path is now gated on an unmerged index. wt merge already refused, but in a sub-step's name. (#​3588, #​3587)

  • OpenCode activity markers land in the worktree they belong to: The plugin issued its marker commands through the process-global Bun shell without scoping them, so each ran in whatever the process-wide cwd happened to be — under concurrent parallel-agent sessions, a marker write could land in another session's worktree. (#​3554, thanks @​4i3n6)

Documentation
  • wt step rebase and wt step push render on the docs site: the only two of twelve step operations whose help was terminal-only. Both bodies are rewritten, correcting (among others) the claim that conflicts abort immediately — nothing aborts; the worktree is left mid-rebase with git's markers — and a wt step squash note promising a backup ref unconditionally, when a clean-tree squash writes none. (#​3578)

  • Troubleshooting no longer suggests disabling core.fsmonitor globally: the guidance for a wedged daemon keeps to the targeted fixes — kill the daemon serving that worktree, or let the next wt list respawn the live ones. (#​3581)

Internal
  • The Windows zip ships the signed binary: SignPath names its download after the GitHub artifact, so the signed zip landed beside the unsigned build as worktrunk-x86_64-pc-windows-msvc.zip.zip while the checksum step and the release upload both kept reading the original — so v0.69.1 shipped an unsigned binary under a green run and a completed signing request. (v0.69.0's unsigned binary was the separate upload bug fixed in #​3566, where the request failed outright.) The signed file now replaces the built one only after it verifies, and a final step reads the shipped zip and reports any executable without a certificate. Signing remains non-blocking on a self-signed test certificate pending SignPath's OSS review, so Windows will not show a trusted publisher yet. (#​3590)

Install worktrunk 0.69.2

Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.69.2/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.69.2/worktrunk-installer.ps1 | iex"; git-wt config shell install
Install prebuilt binaries via Homebrew
brew install worktrunk && wt config shell install

Download worktrunk 0.69.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
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

v0.69.1: 0.69.1

Compare Source

Release Notes

Improved
  • wt switch statusline dims the dev-server URL until its port answers: The Claude Code statusline's dev-server URL now dims until something answers on its port, matching the wt list cell it already copied in every other respect. (#​3561)
Fixed
  • wt step rebase and wt merge refuse to run mid-operation: With a git operation already in progress (a conflicted rebase stop, or a killed git), wt step rebase <target> reported Already up to date and exited 0 over a conflicted, mid-replay tree — it asked "already rebased?" before consulting the worktree's operation state — and wt merge failed with a detached-HEAD error whose suggested git switch would have discarded the in-progress rebase. Both commit-replaying commands now detect an open operation up front and refuse with a clear message. (#​3558)

  • Shell-integration install/uninstall correctness: wt config shell now validates the integration command name and rejects malformed values (empty, leading -, or shell-unsafe characters) with a clear error rather than writing a broken rc line; recognizes manually-added or older-form integration lines on install, reporting already-configured instead of appending a duplicate; and, on uninstall, scans for worktrunk-managed wrapper files and rc lines by content marker, so integration installed under an alternate binary name (git-wt, …) is cleaned up regardless of the name it was installed under — while a user's own file that merely mentions wt config shell init is left untouched. (#​2864)

  • wt switch picker reflects a mid-session removal after a deleted-CWD recovery: When the picker recovered from a deleted working directory, accepting a row reused the startup-time repository snapshot — so an in-picker alt-x removal of a worktree or branch during that recovered session wasn't observed on accept. The accept path now rebuilds the repository. (#​3557)

Internal
  • Windows code-signing upload no longer double-zips: The unsigned Windows artifact was uploaded wrapped in an artifact-storage zip around the already-zipped binary, so SignPath couldn't locate wt.exe inside it and the (non-blocking) signing request failed. The upload now sets archive: false, submitting the real zip to SignPath. (#​3566)

  • crates.io publishing via trusted publishing (OIDC): The release workflow mints a short-lived crates.io credential per run via rust-lang/crates-io-auth-action instead of a stored CARGO_REGISTRY_TOKEN. (#​3564)

Install worktrunk 0.69.1

Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.69.1/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.69.1/worktrunk-installer.ps1 | iex"; git-wt config shell install
Install prebuilt binaries via Homebrew
brew install worktrunk && wt config shell install

Download worktrunk 0.69.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
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

v0.69.0: 0.69.0

Compare Source

Release Notes

Improved
  • wt switch statusline links in Claude Code: The Claude Code statusline suppressed OSC 8 hyperlinks, so its CI segment printed colored but inert and its dev-server URL printed in full. Claude Code renders OSC 8, so both segments now link, matching wt list. (#​3550)

  • wt merge --no-rebase accepts merge-shaped histories: --no-rebase previously required a strictly linear rebased history and rejected a branch carrying a merge commit, even when the target could already fast-forward to its tip. It now accepts any history the target can fast-forward to, so wt merge --no-commit --no-rebase preserves an exact commit graph — merge commits and all. (#​3509, thanks @​reneleonhardt)

  • -v variable blocks name their template and render consistently: The four -v template-variable listings (foreground/background hooks, aliases, wt step eval) now label each block with the template it belongs to, and eval renders through the shared formatter — curated help-table order rather than its own alphabetical layout. (#​3495, #​3536)

Fixed
  • wt merge measures the squash/rebase span against the target's upstream: When the primary checkout's local default branch was behind its upstream (e.g. local main behind origin/main) and the branch descended from the newer upstream tip (created with --base origin/main), wt merge — and wt step squash / wt step rebase — measured the commit span against the stale local ref and swept in commits already upstream, folding them into the squash and corrupting the local default branch (duplicating upstream content under new SHAs if later pushed). The span is now measured against the target's upstream (a local-only check, no fetch), and a target that has genuinely diverged from its upstream is refused up front. Fixes #​3519. (#​3549, thanks @​starlightromero for reporting)

  • Ctrl-C during a rebase surfaces as an interrupt, not a conflict: A git rebase killed by a signal (SIGINT/SIGTERM) mid-operation left the worktree in REBASING state, which wt classified as a merge conflict — printing conflict-resolution guidance and the wrong exit code. A signal-killed rebase now exits cleanly with the signal's conventional code (130 for SIGINT, 143 for SIGTERM). (#​3539)

  • wt switch picker responsiveness: Accepting a row could stall for ~10s on a large repo (indefinitely under sustained background traffic) while the switch queued behind per-row preview diffs; the foreground thread now bypasses the command-concurrency semaphore. Separately, an idle picker with pending background work — a slow CI fetch, or an LLM branch summary ([list] summary = true) — spun 100% of a CPU core; the reader now exits once the last row batch lands. (#​3544, #​3534)

  • Clear error when a new branch name collides with an existing branch namespace: Creating feat while feat/x exists (or the reverse) failed with git's raw ref-lock error; wt switch --create now explains the namespace conflict. (#​3528)

  • wt switch picker no longer shows another row's branch name in an empty diff preview: The branch-diff and upstream-diff caches are keyed by SHA, so branches parked at the same commit (common after merged branches reset to the default branch's tip) shared one entry — and the cached pane had the first row's branch name baked into its "no file changes" headline. The cached value is now branch-agnostic and the headline renders per row. (#​3481)

  • WorktreeRemove plugin hook no longer strands a completed session: Claude Code fires the hook on session teardown for the recorded worktree path, which may already be gone (removed by wt merge or wt remove). In that case the hook exited non-zero, which Claude Code read as a failed removal, leaving the completed session row undeletable; it now exits 0 when the worktree is already gone (#​3493, closes #​3488). Separately, the hook now anchors at the project directory rather than inheriting the session's working directory (#​3489). Thanks @​judewang for reporting #​3488 and for #​3489.

  • WorktreeCreate plugin hook surfaces wt failures: The hook piped wt switch --create … --format=json into jq without set -o pipefail, so a failed wt (e.g. a branch collision after a partial creation) took jq's exit status — 0 on empty input — and Claude Code saw a successful hook that returned no path. The hook now sets pipefail. (#​3546, closes #​3545, thanks @​avdi for reporting)

  • Picker no longer crashes on the legacy Windows console: skim 5.3.1 drives keyboard-enhancement handling the legacy Windows console API doesn't support, crashing the picker at startup; skim is held at 5.1.0 until the upstream regression is resolved. (#​3538)

  • Non-ASCII and non-UTF-8 content handled throughout: Diagnostics no longer panic slicing a config or log at a non-UTF-8 byte boundary, the shell-integration config scan no longer truncates at a non-UTF-8 line, and wt step copy-ignored handles non-ASCII filenames (git's quotePath escaping). (#​3514, #​3499, #​3487)

  • -vv output cleanup: The end-of-run block names only diagnostic.md, dropping the redundant trace.jsonl/subprocess.log gutter lines the report body already links; and the startup pointer uses @ before the log directory, matching the rest of wt's path output. (#​3521, #​3543)

Internal
  • Windows release binaries are submitted to SignPath for code signing: Signed with a test certificate for now, while the project's OSS-program application is under review, and non-blocking so a signing failure can't hold up publishing to crates.io, Homebrew, winget, or AUR. (#​3553, #​3556)

  • wt list runs its merge analysis in a read-only object database: When the git object store is read-only, wt list and wt list statusline redirect their object-writing merge/conflict probes into a temporary object database layered over the real one, so the full analysis still runs. Mutating commands keep the persistent store and fail loudly on a read-only one. (#​3535)

  • wt step relocate preserves your subdirectory position: Routed through the shared subdir-resolution helper, so relocate follows the cwd into the moved worktree like switch, remove, and merge already do. (#​3346)

Install worktrunk 0.69.0

Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.69.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.69.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.69.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

Configuration

📅 Schedule: (in timezone America/Chicago)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot requested a review from gtbuchanan as a code owner July 30, 2026 08:42
@renovate
renovate Bot force-pushed the renovate/max-sixty-worktrunk-0.x branch from 96f87c6 to 12d6a30 Compare August 1, 2026 04:12
@renovate renovate Bot changed the title Update dependency max-sixty/worktrunk to v0.69.2 Update dependency max-sixty/worktrunk to v0.70.0 Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants