Skip to content

Release v0.70.0 - #3640

Merged
max-sixty merged 1 commit into
mainfrom
release-prep
Jul 29, 2026
Merged

Release v0.70.0#3640
max-sixty merged 1 commit into
mainfrom
release-prep

Conversation

@max-sixty

Copy link
Copy Markdown
Owner

Cuts 0.70.0 — version bump plus the changelog for the 45 commits since v0.69.2.

Minor bump, not patch. cargo semver-checks reports 6 breaking library changes (set_command_timeout and ListConfig::task_timeout_ms removed, WorkingTree::stage arity 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

  • Local gate green on the release commit: 4631 tests, lints, doctests.
  • nightly dispatched on the cut-from tip (a27cbd42) for the full cross-platform suite — full-tests green 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:

  • fix(shell): reclaim the legacy wrapper paths instead of inspecting them #3602 removes the content check from wt config shell install's legacy cleanup, so conf.d/{cmd}.fish and the stranded nushell {cmd}.nu are now deleted by path, unread. Only that exact filename is touched and each removal is reported, but the deletion is absent from both --dry-run and the confirmation prompt, and the already-configured path skips the prompt entirely.

Also noted, none blocking:

  • The !path.exists() check precedes the lock guard on the Path/Current removal 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 "Neither git worktree remove nor wt remove (even with --force) will delete them" is absolute where the behavior isn't.
  • On the default background removal path, ensure_clean and stop_fsmonitor_daemon swapped 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 merge takes no worktree argument so it only gained the retention half of #3533, the Azure DevOps report is behind --full, #3608 never touched nightly.yaml, and #3601 inverted what the FAQ change actually said. Two omissions were added — the install-statusline foreign-statusline fix (#3595) and the shipped /wt-switch-create skill change (#3636).

This was written by Claude Code on behalf of Maximilian

@worktrunk-bot worktrunk-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.)

@max-sixty
max-sixty merged commit 946e360 into main Jul 29, 2026
43 checks passed
@max-sixty
max-sixty deleted the release-prep branch July 29, 2026 01:48
max-sixty added a commit that referenced this pull request Jul 29, 2026
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_
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants