v0.46.1

max-sixty/worktrunkv0.46.1Apr 30, 2026by github-actions[bot]

Upgrading?

Release notes summary

This is a hotfix release that corrects a duplicate message issue in hook skipping logic and consolidates CI workflows.

Key Highlights

  • Fixed duplicate 'Skipping pre-commit hooks' message when declining an approval prompt.
  • Consolidated CI workflows onto a shared composite action.
  • Standardized hook dispatch entry points.

New Features

  • Fixed duplicate hook skip message output.
  • Consolidated CI infrastructure.
  • Unified hook announcer entry points.

Full Release Notes

## Release Notes

### Fixed

- **No spurious `Skipping pre-commit hooks (--no-hooks)` line after declined approval**: `wt step commit`, `wt step squash`, and `wt merge` collapsed two distinct hook-skip reasons — the user passing `--no-hooks` and the user declining an interactive approval prompt — into a single `verify: bool`. With hooks configured, declining produced both `○ Commands declined, committing without hooks` and `○ Skipping pre-commit hooks (--no-hooks)` back-to-back; the second line was wrong because the user never passed `--no-hooks`. The call chain now carries a `HookGate` (`Run` / `NoHooksFlag` / `Silent`), so declined-approval paths skip hooks silently while the explicit `--no-hooks` flag still prints its message exactly once. ([#2485](https://github.com/max-sixty/worktrunk/pull/2485))

### Internal

- **`HookAnnouncer` is the single entry point for hook dispatch**: `post-commit` and `post-switch` now route through the same announcer used by other phases, and remaining call sites adopt `TemplateVars` for variable assembly. ([#2481](https://github.com/max-sixty/worktrunk/pull/2481), [#2482](https://github.com/max-sixty/worktrunk/pull/2482), [#2484](https://github.com/max-sixty/worktrunk/pull/2484))

- **Merge cleanup extracted**: The post-merge finish sequence moves into `worktree::finish_after_merge`, and `wt list` threads the placeholder explicitly instead of reaching through `Cell`. ([#2491](https://github.com/max-sixty/worktrunk/pull/2491), [#2492](https://github.com/max-sixty/worktrunk/pull/2492))

- **CI consolidated onto a shared composite action**: New advisory `cargo-affected` jobs land, and the test matrix and affected-jobs setup now share one composite action. ([#2475](https://github.com/max-sixty/worktrunk/pull/2475), [#2483](https://github.com/max-sixty/worktrunk/pull/2483), [#2486](https://github.com/max-sixty/worktrunk/pull/2486))

## Install worktrunk 0.46.1

### Install prebuilt binaries via shell script

```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-installer.sh | sh && wt config shell install
```

### Install prebuilt binaries via powershell script

```sh
powershell -ExecutionPolicy Bypass -c "irm https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-installer.ps1 | iex"; git-wt config shell install
```

### Install prebuilt binaries via Homebrew

```sh
brew install worktrunk && wt config shell install
```

## Download worktrunk 0.46.1

|  File  | Platform | Checksum |
|--------|----------|----------|
| [worktrunk-aarch64-apple-darwin.tar.xz](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-aarch64-apple-darwin.tar.xz) | Apple Silicon macOS | [checksum](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-aarch64-apple-darwin.tar.xz.sha256) |
| [worktrunk-x86_64-apple-darwin.tar.xz](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-x86_64-apple-darwin.tar.xz) | Intel macOS | [checksum](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-x86_64-apple-darwin.tar.xz.sha256) |
| [worktrunk-x86_64-pc-windows-msvc.zip](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-x86_64-pc-windows-msvc.zip.sha256) |
| [worktrunk-aarch64-unknown-linux-musl.tar.xz](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-aarch64-unknown-linux-musl.tar.xz) | ARM64 MUSL Linux | [checksum](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-aarch64-unknown-linux-musl.tar.xz.sha256) |
| [worktrunk-x86_64-unknown-linux-musl.tar.xz](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-x86_64-unknown-linux-musl.tar.xz) | x64 MUSL Linux | [checksum](https://github.com/max-sixty/worktrunk/releases/download/v0.46.1/worktrunk-x86_64-unknown-linux-musl.tar.xz.sha256) |



### Install via Cargo

```sh
cargo install worktrunk && wt config shell install
```

### Install via Winget (Windows)

```sh
winget install max-sixty.worktrunk && git-wt config shell install
```

### Install via AUR (Arch Linux)

```sh
paru worktrunk-bin && wt config shell install
```

Related Repositories