Release v0.70.0 - #3640
Conversation
worktrunk-bot
left a comment
There was a problem hiding this comment.
Release looks good — Cargo.toml and Cargo.lock are both at 0.70.0 with no stale 0.69.2 references, the README month matches the current date, and the changelog covers the substantive PRs merged since v0.69.2.
One optional note on completeness: #3639 corrected the user-facing wt config alias dry-run --help/docstring text to match the new vars.* preview behavior, and it shipped in this release but isn't cited. It's the alias-dry-run counterpart of the already-listed #3638, so it would fit naturally appended to the "Hook previews expand every variable except vars.*" bullet (or under Documentation). Not a blocker — the behavior it documents is already covered. (For contrast, #3627 touches only .config/wt.toml dev tooling, so it's correctly left out.)
Two commits landed on `main` while #3640's CI ran, so they ship in 0.70.0 but weren't in its changelog. The release's drift check caught them before the tag. - **#3641** — a user-facing fix: `wt hook show` printed a section heading and nothing else for a hook type declared with an empty command list. Added as its own Fixed entry. - **#3639** — help-text only, no behavior change, correcting `wt config alias dry-run`'s description of the `vars.*` preview. Folded into the existing hook-previews bullet, since it's the same feature's documentation catching up rather than a separate change. No version change; `v0.70.0` is tagged after this lands so the tag covers both. > _This was written by Claude Code on behalf of Maximilian_
Cuts 0.70.0 — version bump plus the changelog for the 45 commits since v0.69.2.
Minor bump, not patch.
cargo semver-checksreports 6 breaking library changes (set_command_timeoutandListConfig::task_timeout_msremoved,WorkingTree::stagearity changed, three enum variants added to exhaustive enums). Worktrunk ships breaking library changes freely, but semver still puts a break at minor while pre-1.0.Release validation
nightlydispatched on the cut-from tip (a27cbd42) for the full cross-platform suite —full-testsgreen on linux, macOS, and Windows, plus minimal-versions, nix-flake, crate-build, and the release targets.Data-loss surface review
The cumulative diff was audited against the deletion surface. One deliberate widening, signed off for this release with follow-ups to file:
wt config shell install's legacy cleanup, soconf.d/{cmd}.fishand the stranded nushell{cmd}.nuare now deleted by path, unread. Only that exact filename is touched and each removal is reported, but the deletion is absent from both--dry-runand the confirmation prompt, and the already-configured path skips the prompt entirely.Also noted, none blocking:
!path.exists()check precedes the lock guard on thePath/Currentremoval arm, so a locked worktree whose directory is absent loses its branch. This already governed the branch-targeted route in v0.69.2; fix(remove, prune, merge): target the named worktree, retain shared branches #3533 unified the other arms onto it. The FAQ's "Neithergit worktree removenorwt remove(even with--force) will delete them" is absolute where the behavior isn't.ensure_cleanandstop_fsmonitor_daemonswapped order, so the safety gate is now answered by the live fsmonitor daemon rather than a full re-stat. Bounded by trash staging with 24-hour retention, and the foreground and picker paths were already daemon-served.Net improvements to the same surface: shared-branch retention across remove/prune/merge (#3533), outcome-accurate removal reporting (#3633, #3637), and the removal of the thread-local command timeout that could kill in-flight git commands on worker threads (#3615).
Changelog accuracy
Entries were verified against the actual diffs rather than commit messages, which corrected several drafts: the prune figures were one PR stale (~2.9 s → the real ~0.6 s),
wt mergetakes no worktree argument so it only gained the retention half of #3533, the Azure DevOps report is behind--full, #3608 never touchednightly.yaml, and #3601 inverted what the FAQ change actually said. Two omissions were added — theinstall-statuslineforeign-statusline fix (#3595) and the shipped/wt-switch-createskill change (#3636).