dependabot[bot] 705c7c6643 chore: bump the patch group with 5 updates (#4095)
Bumps the patch group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [askama](https://github.com/askama-rs/askama) | `0.16.0` | `0.16.1` |
| [crossbeam-channel](https://github.com/crossbeam-rs/crossbeam) |
`0.5.16` | `0.5.17` |
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.14.1` |
`2.14.2` |
| [termimad](https://github.com/Canop/termimad) | `0.35.3` | `0.35.4` |
| [open](https://github.com/Byron/open-rs) | `5.4.3` | `5.4.4` |

Updates `askama` from 0.16.0 to 0.16.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/askama-rs/askama/releases">askama's
releases</a>.</em></p>
<blockquote>
<h2>v0.16.1</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: explain how to install by enabling feature specific for each
framework by <a
href="https://github.com/pinage404"><code>@​pinage404</code></a> in <a
href="https://redirect.github.com/askama-rs/askama/pull/742">askama-rs/askama#742</a></li>
<li>Fix new clippy lint by <a
href="https://github.com/GuillaumeGomez"><code>@​GuillaumeGomez</code></a>
in <a
href="https://redirect.github.com/askama-rs/askama/pull/743">askama-rs/askama#743</a></li>
<li>Fix CI by <a
href="https://github.com/GuillaumeGomez"><code>@​GuillaumeGomez</code></a>
in <a
href="https://redirect.github.com/askama-rs/askama/pull/747">askama-rs/askama#747</a></li>
<li>Upgrade to syn 3 by <a
href="https://github.com/paolobarbolini"><code>@​paolobarbolini</code></a>
in <a
href="https://redirect.github.com/askama-rs/askama/pull/745">askama-rs/askama#745</a></li>
<li>book: fix link by <a
href="https://github.com/antonmosich"><code>@​antonmosich</code></a> in
<a
href="https://redirect.github.com/askama-rs/askama/pull/754">askama-rs/askama#754</a></li>
<li>Fix new clippy lint by <a
href="https://github.com/GuillaumeGomez"><code>@​GuillaumeGomez</code></a>
in <a
href="https://redirect.github.com/askama-rs/askama/pull/755">askama-rs/askama#755</a></li>
<li>Add missing compount assignment in the book syntax overview by <a
href="https://github.com/GuillaumeGomez"><code>@​GuillaumeGomez</code></a>
in <a
href="https://redirect.github.com/askama-rs/askama/pull/757">askama-rs/askama#757</a></li>
<li>Fix wrong &quot;custom escaper example&quot; link in the book by <a
href="https://github.com/GuillaumeGomez"><code>@​GuillaumeGomez</code></a>
in <a
href="https://redirect.github.com/askama-rs/askama/pull/759">askama-rs/askama#759</a></li>
<li>Add possibility to specify <code>let</code>/<code>set</code> block
type by <a
href="https://github.com/GuillaumeGomez"><code>@​GuillaumeGomez</code></a>
in <a
href="https://redirect.github.com/askama-rs/askama/pull/760">askama-rs/askama#760</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/pinage404"><code>@​pinage404</code></a>
made their first contribution in <a
href="https://redirect.github.com/askama-rs/askama/pull/742">askama-rs/askama#742</a></li>
<li><a
href="https://github.com/antonmosich"><code>@​antonmosich</code></a>
made their first contribution in <a
href="https://redirect.github.com/askama-rs/askama/pull/754">askama-rs/askama#754</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/askama-rs/askama/compare/v0.16.0...v0.16.1">https://github.com/askama-rs/askama/compare/v0.16.0...v0.16.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/askama-rs/askama/commit/9ae4d5bdf4352b35e34106e38944c90d7a7ede3e"><code>9ae4d5b</code></a>
Merge pull request <a
href="https://redirect.github.com/askama-rs/askama/issues/761">#761</a>
from GuillaumeGomez/update</li>
<li><a
href="https://github.com/askama-rs/askama/commit/c788325d46efab3b59b7c3ba081b6a83f589afef"><code>c788325</code></a>
Update crates version to <code>0.16.1</code></li>
<li><a
href="https://github.com/askama-rs/askama/commit/aab8bc42436e9008cbf0cf10799177252f5503b8"><code>aab8bc4</code></a>
Merge pull request <a
href="https://redirect.github.com/askama-rs/askama/issues/760">#760</a>
from GuillaumeGomez/let-ty</li>
<li><a
href="https://github.com/askama-rs/askama/commit/1043eaef5d6be53be59d2e7d7028a050ad8e4a3d"><code>1043eae</code></a>
Update book to mention that we can specify the type of the variable</li>
<li><a
href="https://github.com/askama-rs/askama/commit/a2e3b49824c970404776f1d7403bea65019073e2"><code>a2e3b49</code></a>
Add possibility to specify <code>let</code>/<code>set</code> block
type</li>
<li><a
href="https://github.com/askama-rs/askama/commit/0c9c2ee617b05667eef4569c268df9efbd1f9139"><code>0c9c2ee</code></a>
Merge pull request <a
href="https://redirect.github.com/askama-rs/askama/issues/759">#759</a>
from askama-rs/GuillaumeGomez-patch-1</li>
<li><a
href="https://github.com/askama-rs/askama/commit/cc3bde8b86857350fb3c08e23dd41cc886014d08"><code>cc3bde8</code></a>
Fix wrong &quot;custom escaper example&quot; link in the book</li>
<li><a
href="https://github.com/askama-rs/askama/commit/e47575b12798f77638932fe7626285a1582f4a67"><code>e47575b</code></a>
Merge pull request <a
href="https://redirect.github.com/askama-rs/askama/issues/757">#757</a>
from GuillaumeGomez/book-compound</li>
<li><a
href="https://github.com/askama-rs/askama/commit/0bf45f2e71734bd9d57c4aaf39314faad6a5f8a5"><code>0bf45f2</code></a>
Add missing compount assignment in the book syntax overview</li>
<li><a
href="https://github.com/askama-rs/askama/commit/f98f8c5c1779c315977cac652cbcc12d6e1a147b"><code>f98f8c5</code></a>
Merge pull request <a
href="https://redirect.github.com/askama-rs/askama/issues/755">#755</a>
from GuillaumeGomez/fix-clippy</li>
<li>Additional commits viewable in <a
href="https://github.com/askama-rs/askama/compare/v0.16.0...v0.16.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `crossbeam-channel` from 0.5.16 to 0.5.17
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crossbeam-rs/crossbeam/releases">crossbeam-channel's
releases</a>.</em></p>
<blockquote>
<h2>crossbeam-channel 0.5.17</h2>
<ul>
<li>Fix UB in bounded channel when <code>SelectedOperation</code> is
leaked. (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1295">#1295</a>)</li>
<li>Fix behavior inconsistency on already received case in
<code>at()</code>. (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1296">#1296</a>)</li>
<li>Handle overflow in bounded channel initialization. (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1301">#1301</a>)</li>
<li>Use 64-bit index on 32-bit platforms if 64-bit atomic is available.
(<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1321">#1321</a>)</li>
<li>Update MSRV policy to support 1 year instead of 6 months to meet
rayon's MSRV policy. (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1284">#1284</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/2920c984290229ab4e0ca0452ef09e48a82063f3"><code>2920c98</code></a>
Prepare for the next release</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/808b75a4cbbb59eab83a92cf867a3c771795f959"><code>808b75a</code></a>
ci: Update codegen job</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/46774e09313d4601c23f77da0b078c914194c152"><code>46774e0</code></a>
channel: Document that send_timeout sends an available message even if
the ti...</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/89a3fe4025857397a1adfc954957687d4dce9c93"><code>89a3fe4</code></a>
epoch: Make Shared::null const</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/383d74adcda222f99d54b4e80b55cce6bf30f142"><code>383d74a</code></a>
Use *::MAX associated constants</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/a30b825e6de35ecc4762a55656f63b4dbf4ccb8a"><code>a30b825</code></a>
channel,deque,queue: Use AtomicU64/u64 in head/tail index if
available</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/a0e4d2929e4bf670bf05aad548880656e187a51e"><code>a0e4d29</code></a>
Replace iterative capacity growth with <code>next_power_of_two</code>
(<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1216">#1216</a>)</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/94f74d26240f5d49e61d56ac10111e6527dbcfe6"><code>94f74d2</code></a>
Recognize x86_64-unknown-linux-gnutsan in build script</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/30e5963e4c0a9fc6626bd6417528c4f621e3838e"><code>30e5963</code></a>
epoch: Add missing fence emulation for tsan</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/708a6bd582d1ee482183e186e98527b41bffe565"><code>708a6bd</code></a>
Handle overflow in bounded channel/queue initialization (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1301">#1301</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-channel-0.5.16...crossbeam-channel-0.5.17">compare
view</a></li>
</ul>
</details>
<br />

Updates `indexmap` from 2.14.1 to 2.14.2
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md">indexmap's
changelog</a>.</em></p>
<blockquote>
<h2>2.14.2 (2026-09-04)</h2>
<ul>
<li>Fix item hygiene in map and set macros. Previously, an internal
<code>const CAP</code>
could shadow the same name in the caller's namespace.</li>
<li>Allow <code>const</code> initialization of empty
<code>indexmap_with_default!</code> and
<code>indexset_with_default!</code>. The hasher may also be omitted if
it's inferrable.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/41a870887c4c77adf665886e63df08f406bfe37a"><code>41a8708</code></a>
Merge pull request <a
href="https://redirect.github.com/indexmap-rs/indexmap/issues/450">#450</a>
from cuviper/macros</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/0fb7b5c813c94dcb16f220d249e42a7b9e4ea44d"><code>0fb7b5c</code></a>
Release 2.14.2</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/55e6b28278f242b4d4190a14b6e86c09580dd75a"><code>55e6b28</code></a>
Improve the empty macro cases</li>
<li><a
href="https://github.com/indexmap-rs/indexmap/commit/c067355e1ca5ec39348f42dcee582d4f222c3295"><code>c067355</code></a>
Fix item hygiene in user macros</li>
<li>See full diff in <a
href="https://github.com/indexmap-rs/indexmap/compare/2.14.1...2.14.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `termimad` from 0.35.3 to 0.35.4
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Canop/termimad/blob/main/CHANGELOG.md">termimad's
changelog</a>.</em></p>
<blockquote>
<h3>v0.35.4 - 2026-09-05</h3>
<ul>
<li>fix <code>parse_color</code> returning the light variant for
<code>darkblue</code>, <code>darkcyan</code> and
<code>darkyellow</code>, and accepting strings merely containing a color
name</li>
</ul>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/Canop/termimad/commits">compare view</a></li>
</ul>
</details>
<br />

Updates `open` from 5.4.3 to 5.4.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Byron/open-rs/releases">open's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.4</h2>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>open Windows paths without wildcard expansion</p>
<!-- raw HTML omitted -->
<p>Opening a child of a bracket-named directory fails because
Start-Process
resolves parent directories as PowerShell wildcard patterns. The
isolated
Windows regression test reproduced WildcardPatternException for a copied
executable under &quot;【Tiny Asa】 [77P7V-712MB]\child&quot; before this
change.</p>
<p>Use Test-Path and Invoke-Item with LiteralPath for existing items,
retaining
Start-Process for URLs and application names. These cmdlets also work
under
PowerShell Constrained Language Mode. Share the embedded script between
Windows and WSL, keep targets in environment data, and stop on launch
errors
to report a nonzero exit status. Preserve the security boundary
established
in fd29861: cmd /c start remains opt-in through the insecure feature. No
previously removed launcher options are restored.</p>
<p>The integration test launches only a copy of its own test binary,
which
records its executable path and exits. It checks absolute and relative
paths
with invalid and valid bracket patterns, Unicode, backticks, quotes,
shell
metacharacters, and leading dashes in normal and constrained PowerShell
sessions, plus failure for a missing executable. It requires neither
Explorer
nor registered document or URL handlers. Adjust the existing fallback
assertion to also allow the opt-in cmd launcher after Explorer with all
features enabled.</p>
<p>Validated locally on Windows with PowerShell 5.1.26100.33438 and
rustc 1.97.1:
cargo test and cargo test --all-features each passed all 19 tests,
including
the behavioral regression. git diff --check passed, and cargo
package --list includes the embedded script. Test-Path returned false
without
errors for representative https, mailto, and file URLs. Actual GUI
folder,
document, URL handling and WSL interop were not exercised locally.</p>
</li>
</ul>
<h3>Commit Statistics</h3>
<ul>
<li>2 commits contributed to the release.</li>
<li>8 days passed between releases.</li>
<li>1 commit was understood as <a
href="https://www.conventionalcommits.org">conventional</a>.</li>
<li>1 unique issue was worked on: <a
href="https://redirect.github.com/Byron/open-rs/issues/132">#132</a></li>
</ul>
<h3>Commit Details</h3>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<ul>
<li><strong><a
href="https://redirect.github.com/Byron/open-rs/issues/132">#132</a></strong>
<ul>
<li>Open Windows paths without wildcard expansion (ad95c40)</li>
</ul>
</li>
<li><strong>Uncategorized</strong></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Byron/open-rs/blob/main/changelog.md">open's
changelog</a>.</em></p>
<blockquote>
<h2>5.4.4 (2026-09-10)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>
<p><!-- raw HTML omitted --> open Windows paths without wildcard
expansion</p>
<!-- raw HTML omitted -->
<p>Opening a child of a bracket-named directory fails because
Start-Process
resolves parent directories as PowerShell wildcard patterns. The
isolated
Windows regression test reproduced WildcardPatternException for a copied
executable under &quot;【Tiny Asa】 [77P7V-712MB]\child&quot; before this
change.</p>
<p>Use Test-Path and Invoke-Item with LiteralPath for existing items,
retaining
Start-Process for URLs and application names. These cmdlets also work
under
PowerShell Constrained Language Mode. Share the embedded script between
Windows and WSL, keep targets in environment data, and stop on launch
errors
to report a nonzero exit status. Preserve the security boundary
established
in fd29861: cmd /c start remains opt-in through the insecure feature. No
previously removed launcher options are restored.</p>
<p>The integration test launches only a copy of its own test binary,
which
records its executable path and exits. It checks absolute and relative
paths
with invalid and valid bracket patterns, Unicode, backticks, quotes,
shell
metacharacters, and leading dashes in normal and constrained PowerShell
sessions, plus failure for a missing executable. It requires neither
Explorer
nor registered document or URL handlers. Adjust the existing fallback
assertion to also allow the opt-in cmd launcher after Explorer with all
features enabled.</p>
<p>Validated locally on Windows with PowerShell 5.1.26100.33438 and
rustc 1.97.1:
cargo test and cargo test --all-features each passed all 19 tests,
including
the behavioral regression. git diff --check passed, and cargo
package --list includes the embedded script. Test-Path returned false
without
errors for representative https, mailto, and file URLs. Actual GUI
folder,
document, URL handling and WSL interop were not exercised locally.</p>
</li>
</ul>
<h3>Commit Statistics</h3>
<!-- raw HTML omitted -->
<ul>
<li>2 commits contributed to the release.</li>
<li>8 days passed between releases.</li>
<li>1 commit was understood as <a
href="https://www.conventionalcommits.org">conventional</a>.</li>
<li>1 unique issue was worked on: <a
href="https://redirect.github.com/Byron/open-rs/issues/132">#132</a></li>
</ul>
<h3>Commit Details</h3>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Byron/open-rs/commit/ba35e001028f03290eaae2cc1cad8411322507b2"><code>ba35e00</code></a>
Release open v5.4.4</li>
<li><a
href="https://github.com/Byron/open-rs/commit/45317f8a4fdc43218dcc3418156e677e35662dff"><code>45317f8</code></a>
Merge pull request <a
href="https://redirect.github.com/Byron/open-rs/issues/133">#133</a>
from Byron/fix-open-on-windows</li>
<li><a
href="https://github.com/Byron/open-rs/commit/ad95c40f98144b368ec759492edecd0b8b20b672"><code>ad95c40</code></a>
fix: open Windows paths without wildcard expansion (<a
href="https://redirect.github.com/Byron/open-rs/issues/132">#132</a>)</li>
<li>See full diff in <a
href="https://github.com/Byron/open-rs/compare/v5.4.3...v5.4.4">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-13 22:29:03 -07:00

Worktrunk logo  Worktrunk

Docs License: MIT OR Apache-2.0 CI Codecov Stars maintained with tend

September 2026: Worktrunk was released at the start of the year, and has quickly become the most popular git worktree manager. It's built with love (there's no slop!). Please let me know any frictions at all; I'm intensely focused on continuing to make Worktrunk excellent, and the biggest help is folks posting problems they perceive.

Worktrunk is a CLI for git worktree management, designed for running AI agents in parallel.

Worktrunk's three core commands make worktrees as easy as branches. Plus, Worktrunk has a bunch of quality-of-life features to simplify working with many parallel changes, including hooks to automate local workflows.

A quick demo:

Worktrunk Demo

📚 Full documentation at worktrunk.dev 📚

Context: git worktrees

AI agents like Claude Code and Codex can handle longer tasks without supervision, such that it's possible to manage 5-10+ in parallel. Git's native worktree feature gives each agent its own working directory, so they don't step on each other's changes.

But the git worktree UX is clunky. Even a task as small as starting a new worktree requires typing the branch name three times: git worktree add -b feat ../repo.feat, then cd ../repo.feat.

Worktrunk makes git worktrees as easy as branches

Worktrees are addressed by branch name; paths are computed from a configurable template. Commands that take a branch also accept the path of the worktree it is checked out in.

Start with the core commands

Core commands:

Task Worktrunk Plain git
Switch worktrees wt switch feat cd ../repo.feat
Create + start Claude wt switch -c -x claude feat
git worktree add -b feat ../repo.feat && \
cd ../repo.feat && \
claude
Clean up wt remove
cd ../repo && \
git worktree remove ../repo.feat && \
git branch -d feat
List with status wt list git worktree list (paths only)

Expand into the more advanced commands as needed

Workflow automation:

Multiple parallel agents, same simple commands:

Worktrunk omnibus demo: multiple Claude agents in Zellij tabs with hooks, LLM commits, and merge workflow

Install

Homebrew (macOS & Linux):

brew install worktrunk && wt config shell install

Shell integration allows commands to change directories.

Cargo:

cargo install worktrunk && wt config shell install
Windows & other

Windows. wt defaults to Windows Terminal's command, so Winget additionally installs Worktrunk as git-wt to avoid the conflict:

winget install max-sixty.worktrunk
git-wt config shell install

Alternatively, disable Windows Terminal's alias (Settings → Apps → Advanced app settings → App execution aliases → "Terminal"/"Terminal Preview") to use wt directly.

Free code signing provided by SignPath.io, certificate by SignPath Foundationpolicy.

Arch Linux:

sudo pacman -S worktrunk && wt config shell install

Conda / Pixi (community-maintained feedstock):

conda install -c conda-forge worktrunk && wt config shell install

Or with Pixi: pixi global install worktrunk && wt config shell install.

Quick start

Create a worktree for a new feature:

$ wt switch --create feature-auth
✓ Created branch feature-auth from main and worktree @ ~/repo.feature-auth

This creates a new branch and worktree, then switches to it. Do your work, then check all worktrees with wt list:

$ wt list
  Branch        Status      HEAD±     main↕    main…±    Remote⇅  Commit    Age  Message
@ feature-auth  +   ↑      +27   -8   ↑1       +31                4bc72dc    2h  Add authenticati…
^ main              ^⇡                                    ⇡1      0e631ad    1d  Initial commit

○ Showing 2 worktrees, 1 with changes, 1 ahead, hidden: Path

The @ marks the current worktree. + means staged changes, ↑1 means 1 commit ahead of main, means unpushed commits.

When done, either:

PR workflow — commit, push, open a PR, merge via GitHub/GitLab, then clean up:

wt step commit                    # commit staged changes
gh pr create                      # or glab mr create
wt remove                         # after PR is merged

Local merge — squash, rebase onto main, fast-forward merge, clean up:

$ wt merge main
◎ Generating commit message and committing changes... (2 files, +53, no squashing needed)
  Add authentication module
✓ Committed changes @ a1b2c3d
◎ Merging 1 commit to main @ a1b2c3d (no rebase needed)
  * a1b2c3d Add authentication module
   auth.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
   lib.rs  |  2 ++
   2 files changed, 53 insertions(+)
✓ Merged to main (1 commit, 2 files, +53)
◎ Removing feature-auth worktree & branch in background (same commit as main, _)
○ Switched to worktree for main @ ~/repo

For parallel agents, create multiple worktrees and launch an agent in each:

wt switch -x claude -c feature-a -- 'Add user authentication'
wt switch -x claude -c feature-b -- 'Fix the pagination bug'
wt switch -x claude -c feature-c -- 'Write tests for the API'

The -x flag runs a command after switching; arguments after -- are passed to it. Configure post-start hooks to automate setup (install deps, start dev servers).

Next steps

Further reading

Contributing

Running the tests

cargo test

The shell integration tests need bash, zsh, fish, nushell, and pwsh, plus jq:

cargo test --test integration --features shell-integration-tests

📚 Full documentation at worktrunk.dev 📚

Star history

Star History Chart
S
Description
Guidance for Worktrunk (the wt CLI) — git worktree management, hooks, and config. Load when working out which worktree a wt command will act on, or…
Readme MIT 78 MiB
Languages
Rust 99.5%
Shell 0.2%
Nix 0.1%