Commit Graph

362 Commits

Author SHA1 Message Date
dependabot[bot] 6ccdae8a53 chore: bump the patch group with 3 updates (#3830)
Bumps the patch group with 3 updates:
[tree-sitter-highlight](https://github.com/tree-sitter/tree-sitter),
[skim](https://github.com/skim-rs/skim) and
[jsonschema](https://github.com/Stranger6667/jsonschema).

Updates `tree-sitter-highlight` from 0.26.11 to 0.26.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tree-sitter/tree-sitter/releases">tree-sitter-highlight's
releases</a>.</em></p>
<blockquote>
<h2>v0.26.12</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(generate): fold case-insensitive patterns ourselves by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5761">tree-sitter/tree-sitter#5761</a></li>
<li>fix(query): keep the trailing anchor when a zero-matched quantifier
is anchored on both sides by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5764">tree-sitter/tree-sitter#5764</a></li>
<li>fix(templates): add C source files to Python sdist by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5765">tree-sitter/tree-sitter#5765</a></li>
<li>fix(init): don't lowercase repository url by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5768">tree-sitter/tree-sitter#5768</a></li>
<li>fix(highlight): use <code>std::sync::OnceCell</code> for various
loader fields by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5785">tree-sitter/tree-sitter#5785</a></li>
<li>fix(parser): restart recovery for invalid tokens in the error state
by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5792">tree-sitter/tree-sitter#5792</a></li>
<li>Fix associativity resolution with mixed shift precedences by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5796">tree-sitter/tree-sitter#5796</a></li>
<li>fix(parser): fix parsing bug repeat operator by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5829">tree-sitter/tree-sitter#5829</a></li>
<li>release v0.26.12 by <a
href="https://github.com/clason"><code>@​clason</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5831">tree-sitter/tree-sitter#5831</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.11...v0.26.12">https://github.com/tree-sitter/tree-sitter/compare/v0.26.11...v0.26.12</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/808e4b1fc06e269a107c4bd8bd936cc6fde18b00"><code>808e4b1</code></a>
release v0.26.12</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/7566ffacb7a11e859cf1800f15209b021f53fb53"><code>7566ffa</code></a>
fix(lib): continue search for later named siblings in</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/4b7e2c956c8653947385394b644771da2ff031b4"><code>4b7e2c9</code></a>
fix(generate): honor right associativity despite a lower-precedence
shift</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/3ee7c639dee4a0fd02cd0fa0a0146d05d29063a6"><code>3ee7c63</code></a>
fix(parser): restart recovery for invalid tokens in the error state</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/fd0ccd65a597ffdaf9cd4c199c47564ef4f5c709"><code>fd0ccd6</code></a>
fix(highlight): use <code>std::sync::OnceCell</code> for various loader
fields</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/8df22e6f0e878d683605eb8200d2c2861920e7d8"><code>8df22e6</code></a>
fix(init): don't lowercase repository url</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/c02f32485a76063b17a95c24b1c3758489d459d3"><code>c02f324</code></a>
fix(cli): <code>init --update</code> should not update
<code>setup.py</code> after replacing it (<a
href="https://redirect.github.com/tree-sitter/tree-sitter/issues/5">#5</a>...</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/f9b9b390756c7ce9013542eb90e727f1785d6962"><code>f9b9b39</code></a>
fix(templates): replace deprecated method in Package.swift</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/09384230b4d0d1deda7edf33d3c7e342cd874b0e"><code>0938423</code></a>
fix(templates): add C source files to Python sdist</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/5ccdbb6b84b689350e47e1c53f5525307f5585d2"><code>5ccdbb6</code></a>
fix(query): transfer a leading boundary anchor across a zero-matched
quantifier</li>
<li>Additional commits viewable in <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.11...v0.26.12">compare
view</a></li>
</ul>
</details>
<br />

Updates `skim` from 5.6.1 to 5.6.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/releases">skim's
releases</a>.</em></p>
<blockquote>
<h2>5.6.4 - 2026-08-10</h2>
<h2>Release Notes</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li><em>(image)</em> Detect picker from tty to support protocol
detection with piped input</li>
<li>Platform-dependant timevals</li>
<li>Different suseconds and time per platform</li>
<li>Avoid truncation by casting up instead of down</li>
</ul>
<h2>Install skim 5.6.4</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-installer.ps1
| iex&quot;
</code></pre>
<h2>Download skim 5.6.4</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Platform</th>
<th>Checksum</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-aarch64-apple-darwin.tar.xz">skim-aarch64-apple-darwin.tar.xz</a></td>
<td>Apple Silicon macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-aarch64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-apple-darwin.tar.xz">skim-x86_64-apple-darwin.tar.xz</a></td>
<td>Intel macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-pc-windows-msvc.zip">skim-x86_64-pc-windows-msvc.zip</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-pc-windows-msvc.msi">skim-x86_64-pc-windows-msvc.msi</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-pc-windows-msvc.msi.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-aarch64-unknown-linux-gnu.tar.xz">skim-aarch64-unknown-linux-gnu.tar.xz</a></td>
<td>ARM64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-aarch64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-unknown-linux-gnu.tar.xz">skim-x86_64-unknown-linux-gnu.tar.xz</a></td>
<td>x64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-aarch64-unknown-linux-musl.tar.xz">skim-aarch64-unknown-linux-musl.tar.xz</a></td>
<td>ARM64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-aarch64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-unknown-linux-musl.tar.xz">skim-x86_64-unknown-linux-musl.tar.xz</a></td>
<td>x64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-x86_64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
</tbody>
</table>
<h2>5.6.3 - 2026-08-07</h2>
<h2>Release Notes</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Advance the input cursor by byte length in insert_str (<a
href="https://redirect.github.com/skim-rs/skim/issues/1151">#1151</a>)</li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/vimsucks"><code>@​vimsucks</code></a>
made their first contribution in <a
href="https://redirect.github.com/skim-rs/skim/pull/1151">#1151</a></li>
</ul>
<h2>Install skim 5.6.3</h2>
<h3>Install prebuilt binaries via shell script</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/blob/master/CHANGELOG.md">skim's
changelog</a>.</em></p>
<blockquote>
<h2>[5.6.4] - 2026-08-10</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li><em>(image)</em> Detect picker from tty to support protocol
detection with piped input</li>
<li>Platform-dependant timevals</li>
<li>Different suseconds and time per platform</li>
<li>Avoid truncation by casting up instead of down</li>
</ul>
<h2>[5.6.3] - 2026-08-07</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Advance the input cursor by byte length in insert_str (<a
href="https://redirect.github.com/skim-rs/skim/issues/1151">#1151</a>)</li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/vimsucks"><code>@​vimsucks</code></a>
made their first contribution in <a
href="https://redirect.github.com/skim-rs/skim/pull/1151">#1151</a></li>
</ul>
<h2>[5.6.2] - 2026-08-07</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Assymetry in char_equal causing panic with some unicode
characters</li>
<li>Reorder batches in <code>--tac</code> mode (<a
href="https://redirect.github.com/skim-rs/skim/issues/1150">#1150</a>)</li>
<li>Match double-width roman characters (closes <a
href="https://redirect.github.com/skim-rs/skim/issues/1149">#1149</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>Preview command runs with sh/cmd, not SHELL</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/skim-rs/skim/commit/01be03f0d5821b48ae0311c41d02e9330a2571d8"><code>01be03f</code></a>
release: v5.6.4 (<a
href="https://redirect.github.com/skim-rs/skim/issues/1153">#1153</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/733aaeb14848969a0f55e06fac11a75d0c41b989"><code>733aaeb</code></a>
fix: avoid truncation by casting up instead of down</li>
<li><a
href="https://github.com/skim-rs/skim/commit/f6a302390c45875a01a7a51ead5286b8b9dafb5c"><code>f6a3023</code></a>
fix: different suseconds and time per platform</li>
<li><a
href="https://github.com/skim-rs/skim/commit/5ff1bda145b63b00509a2f75f9def6cb3982f04e"><code>5ff1bda</code></a>
fix: platform-dependant timevals</li>
<li><a
href="https://github.com/skim-rs/skim/commit/070d0849b253938ac0d7ff9394b2ec21bda9d884"><code>070d084</code></a>
fix(image): detect picker from tty to support protocol detection with
piped i...</li>
<li><a
href="https://github.com/skim-rs/skim/commit/5fc3b0c1a0cb1f42cfe9b9edab13b719d74e1bbd"><code>5fc3b0c</code></a>
release: v5.6.3 (<a
href="https://redirect.github.com/skim-rs/skim/issues/1152">#1152</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/a5bd0fefa6308739f36a635b0854cab22b3dfad7"><code>a5bd0fe</code></a>
fix: advance the input cursor by byte length in insert_str (<a
href="https://redirect.github.com/skim-rs/skim/issues/1151">#1151</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/f3c03000b35e1f7c20334ba92bfe54f2350d76bf"><code>f3c0300</code></a>
release: v5.6.2 (<a
href="https://redirect.github.com/skim-rs/skim/issues/1145">#1145</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/1dead2b3c670e0b8222a3a2ea624cacb6f10cec7"><code>1dead2b</code></a>
fix: match double-width roman characters (closes <a
href="https://redirect.github.com/skim-rs/skim/issues/1149">#1149</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/b17e93890aa0d393236b9158f6c197b0eb5dce11"><code>b17e938</code></a>
fix: reorder batches in <code>--tac</code> mode (<a
href="https://redirect.github.com/skim-rs/skim/issues/1150">#1150</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/skim-rs/skim/compare/v5.6.1...v5.6.4">compare
view</a></li>
</ul>
</details>
<br />

Updates `jsonschema` from 0.49.6 to 0.49.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Stranger6667/jsonschema/releases">jsonschema's
releases</a>.</em></p>
<blockquote>
<h2>[Python] Release 0.49.9</h2>
<h3>Added</h3>
<ul>
<li>Canonicalization of a <code>oneOf</code> whose branches name object
targets a required constant tells apart, which degrades to a union.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>CanonicalSchema.to_json_schema</code> on a definition emits
only the definitions that one names, not the whole document's.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Canonicalization running without end on a conjunction over unions;
past a ceiling on the meets it takes, the document stays unmodeled.</li>
</ul>
<h2>[Ruby] Release 0.49.9</h2>
<h3>Added</h3>
<ul>
<li>Canonicalization of a <code>oneOf</code> whose branches name object
targets a required constant tells apart, which degrades to a union.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>CanonicalSchema#to_json_schema</code> on a definition emits
only the definitions that one names, not the whole document's.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Canonicalization running without end on a conjunction over unions;
past a ceiling on the meets it takes, the document stays unmodeled.</li>
</ul>
<h2>[Rust] Release 0.49.9</h2>
<h3>Added</h3>
<ul>
<li>Canonicalization of a <code>oneOf</code> whose branches name object
targets a required constant tells apart, which degrades to a union.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>CanonicalSchema::to_json_schema</code> on a definition emits
only the definitions that one names, not the whole document's.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Canonicalization running without end on a conjunction over unions;
past a ceiling on the meets it takes, the document stays unmodeled.</li>
</ul>
<h2>[Python] Release 0.49.8</h2>
<h3>Performance</h3>
<ul>
<li>Up to 380x faster canonicalization of a <code>oneOf</code> whose
overlapping branches carry many properties, which no longer removes
shared regions the exactly-one spelling discards.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Draft detection treating the version-less
<code>http://json-schema.org/schema</code> meta-schema URI as a custom
dialect, where it names the current draft.</li>
<li>A <code>patternProperties</code> entry matching every key leaving
<code>additionalProperties: false</code> spelled as a key constraint,
where it forbids nothing.</li>
</ul>
<h2>[Ruby] Release 0.49.8</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Stranger6667/jsonschema/blob/master/CHANGELOG.md">jsonschema's
changelog</a>.</em></p>
<blockquote>
<h2>[0.49.9] - 2026-08-09</h2>
<h3>Added</h3>
<ul>
<li>Canonicalization of a <code>oneOf</code> whose branches name object
targets a required constant tells apart, which degrades to a union.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>CanonicalSchema::to_json_schema</code> on a definition emits
only the definitions that one names, not the whole document's.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Canonicalization running without end on a conjunction over unions;
past a ceiling on the meets it takes, the document stays unmodeled.</li>
</ul>
<h2>[0.49.8] - 2026-08-08</h2>
<h3>Performance</h3>
<ul>
<li>Up to 380x faster canonicalization of a <code>oneOf</code> whose
overlapping branches carry many properties, which no longer removes
shared regions the exactly-one spelling discards.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Draft detection treating the version-less
<code>http://json-schema.org/schema</code> meta-schema URI as a custom
dialect, where it names the current draft.</li>
<li>A <code>patternProperties</code> entry matching every key leaving
<code>additionalProperties: false</code> spelled as a key constraint,
where it forbids nothing.</li>
<li><code>unevaluatedProperties</code>/<code>unevaluatedItems</code> set
to <code>true</code> forcing the whole document to stay unmodeled beside
an unresolved applicator, where the keyword rejects nothing regardless
of the evaluated set.</li>
<li><code>unevaluatedProperties</code>/<code>unevaluatedItems</code>
beside a <code>$ref</code> forcing the whole document to stay unmodeled,
where the reference's own evaluated properties or items are known once
it is resolved.</li>
</ul>
<h2>[0.49.7] - 2026-08-07</h2>
<h3>Added</h3>
<ul>
<li><code>CanonicalizeOptions::with_retriever</code> to fetch external
resources absent from the registry.</li>
<li><code>CanonicalizeOptions::with_base_uri</code> to resolve relative
references in the root schema.</li>
<li>Canonicalization of a <code>oneOf</code> whose branches name
disjoint targets, which degrades to a union.</li>
<li>Canonicalization of a vacuous <code>patternProperties</code> entry
beside schema-valued <code>additionalProperties</code>, where matching
keys escape its value constraint.</li>
<li>Canonicalization of a Draft 4 closed pattern map with a reference
nested under a property.</li>
<li>Canonicalization of Draft 4 closed pattern maps that meet through an
applicator.</li>
<li>The complement of a reference back to a target already being
negated, which stays symbolic instead of declining.</li>
<li><code>CanonicalSchema::definition</code> resolving <code>#</code> to
the document the handle was read against.</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Up to 150x faster canonicalization of <code>not</code> over a union
of many branches.</li>
<li>2% faster emission of canonical schemas, which no longer formats
copied string values.</li>
<li>5% faster emission of canonical schemas, which no longer formats
object keys while copying them.</li>
<li>Up to 12% faster canonicalization of schemas that repeatedly
intersect the same branches.</li>
<li>13% faster canonicalization of a non-dynamic OpenAPI document, which
no longer scans every schema object for dynamic references.</li>
<li>Faster canonicalization of schemas with local <code>$defs</code>
references, which avoid decoding unescaped definition names.</li>
<li>23% faster canonicalization of an object whose keys a finite
property-name set spells.</li>
<li>3% faster intersection of schemas where one side constrains
nothing.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/07484f9164fa555be12fe5f7d3a41c7e0c0ce754"><code>07484f9</code></a>
chore(ruby): Release 0.49.9</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/4aba49fb8b5115eca2b7a7b59e179cf7c743e6d6"><code>4aba49f</code></a>
chore(python): Release 0.49.9</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/4ad172231ae487511bfc4cf3199d7edab328923b"><code>4ad1722</code></a>
chore(rust): Release 0.49.9</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/0f114eed7329bbb19b4985a4cf4b450039872d60"><code>0f114ee</code></a>
fix: Canonicalization running without end on a conjunction over unions;
past ...</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/8d4d60caa027a346e1759bbd90c656ebded8db95"><code>8d4d60c</code></a>
chore: <code>CanonicalSchema::to_json_schema</code> on a definition
emits only the defin...</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/bed45535e954d60dbed2fd3628604eacc07ab2bf"><code>bed4553</code></a>
feat: Canonicalization of a <code>oneOf</code> whose branches name
object targets a requ...</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/0c310f43d71e1ebf6b698e641cf572ad3047cd8b"><code>0c310f4</code></a>
chore(ruby): Release 0.49.8</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/bd6836d60e96d6265288f5d067d2e16a0262fd41"><code>bd6836d</code></a>
chore(python): Release 0.49.8</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/71de15619cdaa1bee84b58ce89f2e29ebe0707a5"><code>71de156</code></a>
chore(rust): Release 0.49.8</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/a90819b37e4371ecf0b422e22318964a7454107d"><code>a90819b</code></a>
feat: Extend support for <code>unevaluated*</code> keywords in
canonicalization</li>
<li>Additional commits viewable in <a
href="https://github.com/Stranger6667/jsonschema/compare/ruby-v0.49.6...ruby-v0.49.9">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-08-17 02:12:44 -07:00
dependabot[bot] 93624131e3 chore: bump petname-macros from 3.1.0 to 3.2.0 (#3832)
Bumps [petname-macros](https://github.com/allenap/rust-petname) from
3.1.0 to 3.2.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/allenap/rust-petname/commit/a80733a5b317dcb0b929a7009490927a0fb190eb"><code>a80733a</code></a>
Remove the VS Code settings</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/8cafcdbabfb0e8c014bd0dbf53272f709c2f4fc9"><code>8cafcdb</code></a>
Anchor the exclude patterns to the crate root</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/eacea6de5794fdbc059838dd3b3734a1e49e600c"><code>eacea6d</code></a>
Bump version to 3.2.0</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/fb7268407f4757580739daa88ae45fb277cb4dc0"><code>fb72684</code></a>
Trim the published crate, and check that it is complete</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/1eaf3ab966d480932862e2627af330f46fe67861"><code>1eaf3ab</code></a>
Drop the upgrade notes for additive releases</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/36c1fdb1c0850b40f5f1334b67699a914b63e70e"><code>36c1fdb</code></a>
Flag the Luxembourgish word lists as awaiting review</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/6a21770d3df6c67cbcfc4e66abf1cfa16d02da6c"><code>6a21770</code></a>
Merge pull request <a
href="https://redirect.github.com/allenap/rust-petname/issues/139">#139</a>
from allenap/maintenance</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/e8456aab57971a31de80656b8e073fcc1e60477e"><code>e8456aa</code></a>
Upgrade syn to 3</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/40f166eeca33bfa3247443c688cb4537b6712ec2"><code>40f166e</code></a>
Record the commit message wrapping convention</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/eae215bced99a41e90b05719b2cda108ed04d05d"><code>eae215b</code></a>
Merge pull request <a
href="https://redirect.github.com/allenap/rust-petname/issues/138">#138</a>
from allenap/maintenance</li>
<li>Additional commits viewable in <a
href="https://github.com/allenap/rust-petname/compare/v3.1.0...v3.2.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=petname-macros&package-manager=cargo&previous-version=3.1.0&new-version=3.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 01:48:36 -07:00
dependabot[bot] 4011ee4e9c chore: bump minijinja from 2.23.0 to 2.24.0 (#3831)
Bumps [minijinja](https://github.com/mitsuhiko/minijinja) from 2.23.0 to
2.24.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mitsuhiko/minijinja/blob/main/CHANGELOG.md">minijinja's
changelog</a>.</em></p>
<blockquote>
<h2>2.24.0</h2>
<ul>
<li>Added the <code>wordwrap</code> filter to the Python bindings. <a
href="https://redirect.github.com/mitsuhiko/minijinja/issues/885">#885</a></li>
<li>Fixed conditional expressions in keyword argument values for Jinja2
compatibility in Rust and Go. <a
href="https://redirect.github.com/mitsuhiko/minijinja/issues/921">#921</a></li>
<li>Fixed <code>context!</code> sorting keys when the
<code>preserve_order</code> feature is enabled. <a
href="https://redirect.github.com/mitsuhiko/minijinja/issues/920">#920</a></li>
<li>Limited string repetition to 100 MB in Rust and Go to prevent
excessive memory allocations.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/0ca749f7ba507514fa6b052c74130ae6ae472e03"><code>0ca749f</code></a>
chore(release): 2.24.0</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/0f2989add87d1903247c3977a72ff1f00cf21e07"><code>0f2989a</code></a>
feat(python): expose wordwrap filter</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/3eac8fabe29fc2432622dd6e8b43c1e7adb0f44c"><code>3eac8fa</code></a>
docs(changelog): document context key ordering fix</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/c867352c5b370f6218e7b273c1f17479a6d5d670"><code>c867352</code></a>
fix(macros): preserve context key order</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/a9e1813d3c6489a63532a340b4bb3afdea0bf755"><code>a9e1813</code></a>
fix(parser): allow conditionals in keyword arguments</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/c6fa683e99e2f190b60a38060607f7b9900e9012"><code>c6fa683</code></a>
fix(value): limit repeated strings to 100 MB</li>
<li>See full diff in <a
href="https://github.com/mitsuhiko/minijinja/compare/minijinja-go/v2.23.0...minijinja-go/v2.24.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=minijinja&package-manager=cargo&previous-version=2.23.0&new-version=2.24.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 01:48:33 -07:00
Maximilian Roos 1e0ca1ce66 Release v0.74.0 (#3820)
Cuts 0.74.0. Minor bump: `cargo semver-checks` reports two breaking
library changes from #3808 (`GitError::WorktreePathNotOurs` gained a
field, `WorkingTree::ensure_belongs_to_repo` was renamed), and patch is
disallowed pre-1.0 with semver breakage.

Alongside the release, one fix the release's data-loss review turned up.

## The fix

`wt step promote` stages a worktree's gitignored files through
`<git-common-dir>/wt/staging/promote` and moves them back after the
branch exchange. When a worktree and the git dir sit on different
filesystems, `fs::rename` fails with EXDEV and `copy_and_remove` copies
then unconditionally deletes the source.

#3744 made the copy tolerate a source that vanishes mid-walk — correct
for `wt step copy-ignored`, which never deletes a source, and wrong
here: an incomplete copy reported `Ok` immediately before the delete, so
a gitignored file a concurrent build removed and rewrote was destroyed
rather than moved. Before #3744 the copy errored and the source
survived, so this was a regression introduced in this release window and
caught before it shipped.

`copy_dir_recursive` now returns how many of the entries the walk
collected to copy were not copied. `copy_and_remove` refuses on a
non-zero count and leaves the source in place; `copy-ignored` names the
count and drops it, with `#[must_use]` so a future third caller decides
rather than inheriting the old bug.

A non-regular file is dropped at classification rather than counted, per
@worktrunk-bot's review: a socket carries no content the destination can
be short of, and refusing over one lands worst where it is least
recoverable — `distribute_staged` runs *after* `exchange_branches`, so a
socket that reached staging by same-filesystem rename would kill the
promote with the branches already swapped and the staged files behind a
`check_leftover_staging` refusal whose remedy deletes them. Both
directions are pinned by tests.

## Release gates

- Local `wt hook pre-merge --yes`: 4649 tests, lints, doctests, rustdoc
under `-Dwarnings`.
- `nightly.yaml` green twice on this branch (full 3-OS matrix,
feature-powerset, release-target, nix-flake, minimal-versions), and
green on the cut-from tip 92dfb686b.
- Data-loss surface review over `v0.73.0..HEAD` with four independent
finders (behavioral, blast-radius, shipped-automation, keyword).
Thirteen candidates: one real, fixed here; twelve adjudicated acceptable
and signed off.
- Every changelog entry verified against its diff, with attributions and
links checked.

## Known-red check

`codecov/patch` fails on the three `skipped += 1;` counters in
`src/copy.rs`. Each sits inside a pre-existing `ErrorKind::NotFound` arm
that was already uncovered at the base commit — the concurrent-rewrite
races (`read_dir` vanished, `entry.file_type()` vanished,
`set_permissions` vanished), none with a deterministic trigger.
`codecov/project` passes. Merging over it is approved.

> _This was written by Claude Code on behalf of max-sixty_

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 09:44:27 -07:00
dependabot[bot] 3ecb5d9852 chore: bump minijinja from 2.21.0 to 2.23.0 (#3795)
Bumps [minijinja](https://github.com/mitsuhiko/minijinja) from 2.21.0 to
2.23.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mitsuhiko/minijinja/blob/main/CHANGELOG.md">minijinja's
changelog</a>.</em></p>
<blockquote>
<h2>2.23.0</h2>
<ul>
<li>Fixed Unicode identifiers in templates rendered through the Python
bindings.</li>
</ul>
<h2>2.22.0</h2>
<ul>
<li>Changed rendering of none and boolean values to <code>None</code>,
<code>True</code>, and <code>False</code> for Jinja2 compatibility in
Rust and Go. <a
href="https://redirect.github.com/mitsuhiko/minijinja/issues/913">#913</a></li>
<li>Added <code>StringInput</code> for custom Rust filters and functions
that transform strings while preserving safety provenance.</li>
<li>Fixed safety handling in string-transforming and composing filters
to preserve safe strings and escape unsafe fragments in Rust and
Go.</li>
<li>Fixed the <code>split</code> filter to return a sequence, enabling
negative indexing and slicing in Rust and Go. <a
href="https://redirect.github.com/mitsuhiko/minijinja/issues/909">#909</a></li>
<li>Fixed Python-compatible dict methods being shadowed by same-named
map keys. <a
href="https://redirect.github.com/mitsuhiko/minijinja/issues/903">#903</a></li>
<li>Fixed loop-local assignments leaking into subsequent iterations in
Rust and Go. <a
href="https://redirect.github.com/mitsuhiko/minijinja/issues/912">#912</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/19af7d4afbd7ea529c4251c29483dce2179f3130"><code>19af7d4</code></a>
chore(release): 2.23.0</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/7f63616efcc76e326d07a7f923a5314b948010a4"><code>7f63616</code></a>
docs(changelog): document Python Unicode identifiers</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/179652f1393cd1b4c46e10e55896a5713cf15eb6"><code>179652f</code></a>
ref: Remove CLAUDE.md</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/52b1cc66b290cef1fb58b00e2fa277973bfc5f82"><code>52b1cc6</code></a>
ref: Move claude stuff</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/0d4c6f49a589e35da50f50dd024d316d21c35427"><code>0d4c6f4</code></a>
ref: Remove broken symlinks</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/be3c6f58af1c8b18b52513fc866afe823073883b"><code>be3c6f5</code></a>
fix(python): enable Unicode identifiers</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/d5bf25e588f219272c84ea1825181e402696134f"><code>d5bf25e</code></a>
chore(release): 2.22.0</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/cdbd4a98c485ad81a92c666efe7ef3327de61cb6"><code>cdbd4a9</code></a>
docs(changelog): document unreleased filter fixes</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/d715d56328169e41bed04025830ddcb1e4c82e84"><code>d715d56</code></a>
fix: doc link</li>
<li><a
href="https://github.com/mitsuhiko/minijinja/commit/cd62d8c1fe7a15eac2e910a87a7b0b1e3d45f8cd"><code>cd62d8c</code></a>
fix(filters): preserve safety in string transformations</li>
<li>Additional commits viewable in <a
href="https://github.com/mitsuhiko/minijinja/compare/minijinja-go/v2.21.0...minijinja-go/v2.23.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=minijinja&package-manager=cargo&previous-version=2.21.0&new-version=2.23.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: worktrunk-bot <254187624+worktrunk-bot@users.noreply.github.com>
2026-08-13 13:20:53 -07:00
Maximilian Roos 7a2a3e003e Release v0.73.0 (#3804)
Version bump, Cargo.lock, and the 0.73.0 changelog section.
2026-08-12 11:07:17 -07:00
dependabot[bot] 6466b91673 chore: bump the patch group with 6 updates (#3794)
Bumps the patch group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [clap_complete](https://github.com/clap-rs/clap) | `4.6.8` | `4.6.9` |
| [ignore](https://github.com/BurntSushi/ripgrep) | `0.4.31` | `0.4.33`
|
| [open](https://github.com/Byron/open-rs) | `5.4.0` | `5.4.1` |
| [similar](https://github.com/mitsuhiko/similar) | `3.1.1` | `3.1.2` |
| [jsonschema](https://github.com/Stranger6667/jsonschema) | `0.49.5` |
`0.49.6` |
| [vergen-gitcl](https://github.com/rustyhorde/vergen) | `10.0.1` |
`10.0.2` |

Updates `clap_complete` from 4.6.8 to 4.6.9
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/clap-rs/clap/commit/715b812f3b72ebca1d5ce257e0495e1e76aea56f"><code>715b812</code></a>
chore: Release</li>
<li><a
href="https://github.com/clap-rs/clap/commit/89e6e9b59c6209c5d9817c7d113ad7ad7f6d6907"><code>89e6e9b</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/clap-rs/clap/commit/3918cb4db643ffdfb3c8206d241d70acf6d5c5de"><code>3918cb4</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6468">#6468</a>
from sjh9714/fix-bash-posix-fn-name</li>
<li><a
href="https://github.com/clap-rs/clap/commit/526c81906357cae595259d46cea2fd4675489331"><code>526c819</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6469">#6469</a>
from latent-9/docs/fix-derive-reference-link</li>
<li><a
href="https://github.com/clap-rs/clap/commit/b2bd685a8e809df2049f5cf6777641d8f86aeef6"><code>b2bd685</code></a>
docs(clap_derive): Fix derive reference link</li>
<li><a
href="https://github.com/clap-rs/clap/commit/ecee8a4f862b1b97ce2c7db5bf806cfe394a55f6"><code>ecee8a4</code></a>
fix(complete): Name the function after fn_name</li>
<li><a
href="https://github.com/clap-rs/clap/commit/6dd2e5a0802d84226afd63c427fc09940fa837d4"><code>6dd2e5a</code></a>
test(complete): Show POSIX bash will not source</li>
<li><a
href="https://github.com/clap-rs/clap/commit/4684d7abc545cef1d78708864cfe8c7668ed49c1"><code>4684d7a</code></a>
chore: Release</li>
<li><a
href="https://github.com/clap-rs/clap/commit/51d50ad3ae341f987f26115d6a6719cf76cc78f4"><code>51d50ad</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/clap-rs/clap/commit/3bc36222053a49936ea67e8616d1584a75c811b0"><code>3bc3622</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6457">#6457</a>
from bl4ck4t/master</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.6.8...clap_complete-v4.6.9">compare
view</a></li>
</ul>
</details>
<br />

Updates `ignore` from 0.4.31 to 0.4.33
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/3fce3b5bb0236da2df6d99672afb8a719642eca7"><code>3fce3b5</code></a>
ignore-0.4.33</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/5055264ae021b5d0e01e55f723622d638ea877f0"><code>5055264</code></a>
globset-0.4.20</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/020687a77d13146923333f0beb274eeabd54a270"><code>020687a</code></a>
ignore,globset: increase pool capacity</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/5ed408e17eccfc59bcec48f584feece902873e54"><code>5ed408e</code></a>
ignore-0.4.32</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/435f59fc4b43af3ab32f34d53fa34978f393fe52"><code>435f59f</code></a>
ignore: skip loading unreachable ignore files</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/f9c05a949d1a0dc8e16dee28ca9605d38611faeb"><code>f9c05a9</code></a>
index: remove incorrect README</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/8372866810a1f2a647d11d7780984d4402a5c1e9"><code>8372866</code></a>
index: add some initial indexing scaffolding</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/d99ac34406f82c03c3938c222f1786495c845034"><code>d99ac34</code></a>
core: add <code>index</code> module</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/2ed0c006fee4c441add774a711d9122a88477619"><code>2ed0c00</code></a>
flags: disable many flags when indexing is enabled</li>
<li>See full diff in <a
href="https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.31...ignore-0.4.33">compare
view</a></li>
</ul>
</details>
<br />

Updates `open` from 5.4.0 to 5.4.1
<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.1</h2>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>Forward WSL targets to PowerShell to make <code>open</code> actually
work there</p>
<!-- raw HTML omitted -->
<p>Opening a URL from WSL failed because the Windows process did not
receive
OPEN_RS_TARGET, even though it was present in the Linux command
environment.
The failure reproduces with cargo run -- <a
href="https://google.com">https://google.com</a> on Ubuntu under
WSL, where Start-Process receives a null FilePath and exits
unsuccessfully.</p>
<p>Add OPEN_RS_TARGET to WSLENV so WSL interop forwards the target into
the
PowerShell environment. Preserve existing WSLENV entries and their
flags,
while keeping the PowerShell command fixed so targets remain data rather
than
shell code.</p>
<p>Validated with focused WSL tests, the all-features test suite,
rustfmt,
Clippy with warnings denied, and an end-to-end cargo run from WSL.</p>
</li>
</ul>
<h3>Commit Statistics</h3>
<ul>
<li>1 commit contributed to the release.</li>
<li>24 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/128">#128</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/128">#128</a></strong>
<ul>
<li>Forward WSL targets to PowerShell to make <code>open</code> actually
work there (96fa673)</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
</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.1 (2026-08-05)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>
<p><!-- raw HTML omitted --> Forward WSL targets to PowerShell to make
<code>open</code> actually work there</p>
<!-- raw HTML omitted -->
<p>Opening a URL from WSL failed because the Windows process did not
receive
OPEN_RS_TARGET, even though it was present in the Linux command
environment.
The failure reproduces with cargo run -- <a
href="https://google.com">https://google.com</a> on Ubuntu under
WSL, where Start-Process receives a null FilePath and exits
unsuccessfully.</p>
<p>Add OPEN_RS_TARGET to WSLENV so WSL interop forwards the target into
the
PowerShell environment. Preserve existing WSLENV entries and their
flags,
while keeping the PowerShell command fixed so targets remain data rather
than
shell code.</p>
<p>Validated with focused WSL tests, the all-features test suite,
rustfmt,
Clippy with warnings denied, and an end-to-end cargo run from WSL.</p>
</li>
</ul>
<h3>Commit Statistics</h3>
<!-- raw HTML omitted -->
<ul>
<li>1 commit contributed to the release.</li>
<li>24 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/128">#128</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/128">#128</a></strong>
<ul>
<li>Forward WSL targets to PowerShell to make <code>open</code> actually
work there (<a
href="https://github.com/Byron/open-rs/commit/96fa673a6a152d193c210ff77766270192b42d16"><code>96fa673</code></a>)</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Byron/open-rs/commit/e548a4e9180ef8ca7e6b605f3f248fee534a03d1"><code>e548a4e</code></a>
Release open v5.4.1</li>
<li><a
href="https://github.com/Byron/open-rs/commit/96fa673a6a152d193c210ff77766270192b42d16"><code>96fa673</code></a>
fix: Forward WSL targets to PowerShell to make <code>open</code>
actually work there (<a
href="https://redirect.github.com/Byron/open-rs/issues/128">#128</a>)</li>
<li>See full diff in <a
href="https://github.com/Byron/open-rs/compare/v5.4.0...v5.4.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `similar` from 3.1.1 to 3.1.2
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mitsuhiko/similar/blob/main/CHANGELOG.md">similar's
changelog</a>.</em></p>
<blockquote>
<h2>3.1.2</h2>
<ul>
<li>Fixed <code>Algorithm::Lcs</code> deadline fallback emitting edits
twice, which produced
out-of-bounds <code>DiffOp</code> ranges and panics when consuming
timed-out diffs. <a
href="https://redirect.github.com/mitsuhiko/similar/issues/97">#97</a></li>
<li>Fixed <code>Algorithm::Lcs</code> reporting identical subranges with
zero-based indices
instead of preserving the supplied range offsets. <a
href="https://redirect.github.com/mitsuhiko/similar/issues/98">#98</a></li>
<li>Fixed <code>Algorithm::Lcs</code> and <code>Algorithm::Hunt</code>
emitting zero-length delete
operations when both inputs are empty. <a
href="https://redirect.github.com/mitsuhiko/similar/issues/99">#99</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mitsuhiko/similar/commit/71f0a30e449f857aec934b839cc4c9ca5b21eb26"><code>71f0a30</code></a>
chore(release): prepare 3.1.2</li>
<li><a
href="https://github.com/mitsuhiko/similar/commit/a0aa51e37a31a15898371430a6c03386b111303d"><code>a0aa51e</code></a>
docs(changelog): document recent fixes</li>
<li><a
href="https://github.com/mitsuhiko/similar/commit/51195348b1c7f0bf46d79970294ee84a802e1500"><code>5119534</code></a>
fix(algorithms): omit operations for empty inputs</li>
<li><a
href="https://github.com/mitsuhiko/similar/commit/043c9071ecdd328c9a6e8717f8765dda0c3982eb"><code>043c907</code></a>
fix(lcs): preserve indices for equal subranges</li>
<li><a
href="https://github.com/mitsuhiko/similar/commit/cfad604ea2f213c6816095edb94e49c81768a1d8"><code>cfad604</code></a>
fix(lcs): avoid duplicate deadline fallback edits</li>
<li>See full diff in <a
href="https://github.com/mitsuhiko/similar/compare/3.1.1...3.1.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `jsonschema` from 0.49.5 to 0.49.6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Stranger6667/jsonschema/releases">jsonschema's
releases</a>.</em></p>
<blockquote>
<h2>[Python] Release 0.49.6</h2>
<h3>Added</h3>
<ul>
<li>Canonicalization of a negated <code>uniqueItems</code>, where the
complement demands a repeated element under the length floor two
elements imply.</li>
<li>Canonicalization of a negated array tuple, where each position's
complement stands under the length that reaches it.</li>
<li>Canonicalization of <code>contains</code> demands sharing no value,
where their counts add up into a length floor.</li>
<li><code>CanonicalSchema.negate</code> through references, where the
complement of the resolved target takes the reference's place.</li>
<li>Canonicalization of negated <code>propertyNames</code> and
<code>additionalProperties</code>, where the complement spells the
violating-key demand instead of a <code>not</code> residual.</li>
<li>Canonicalization of negated <code>additionalProperties</code> under
Draft 4, where the violating-key demand spells the closed property
map.</li>
<li>Canonicalization of <code>not</code> a reference, where the
complement of the resolved target takes the pointer's place.</li>
<li>Canonicalization of a negated <code>oneOf</code>, where the
complement spells the values no branch admits beside the values two
branches share.</li>
<li>Canonicalization of negated <code>items</code> under Draft 4, where
the violating-element demand spells the barred element schema.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>ArrayView</code> reports distinctness in three states, so an
array demanding a repeated element reads apart from one demanding
distinct elements.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>CanonicalSchema.negate</code> keeping a root self-reference in
the complement, where it points at the complement instead of the
source.</li>
<li>An <code>additionalItems</code> that tails no tuple keeping the
whole document unmodeled under Draft 2020-12.</li>
</ul>
<h2>[Ruby] Release 0.49.6</h2>
<h3>Added</h3>
<ul>
<li>Canonicalization of a negated <code>uniqueItems</code>, where the
complement demands a repeated element under the length floor two
elements imply.</li>
<li>Canonicalization of a negated array tuple, where each position's
complement stands under the length that reaches it.</li>
<li>Canonicalization of <code>contains</code> demands sharing no value,
where their counts add up into a length floor.</li>
<li><code>CanonicalSchema#negate</code> through references, where the
complement of the resolved target takes the reference's place.</li>
<li>Canonicalization of negated <code>propertyNames</code> and
<code>additionalProperties</code>, where the complement spells the
violating-key demand instead of a <code>not</code> residual.</li>
<li>Canonicalization of negated <code>additionalProperties</code> under
Draft 4, where the violating-key demand spells the closed property
map.</li>
<li>Canonicalization of <code>not</code> a reference, where the
complement of the resolved target takes the pointer's place.</li>
<li>Canonicalization of a negated <code>oneOf</code>, where the
complement spells the values no branch admits beside the values two
branches share.</li>
<li>Canonicalization of negated <code>items</code> under Draft 4, where
the violating-element demand spells the barred element schema.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>ArrayView</code> reports distinctness in three states, so an
array demanding a repeated element reads apart from one demanding
distinct elements.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>CanonicalSchema#negate</code> keeping a root self-reference in
the complement, where it points at the complement instead of the
source.</li>
<li>An <code>additionalItems</code> that tails no tuple keeping the
whole document unmodeled under Draft 2020-12.</li>
</ul>
<h2>[Rust] Release 0.49.6</h2>
<h3>Added</h3>
<ul>
<li>Canonicalization of a negated <code>uniqueItems</code>, where the
complement demands a repeated element under the length floor two
elements imply.</li>
<li>Canonicalization of a negated array tuple, where each position's
complement stands under the length that reaches it.</li>
<li>Canonicalization of <code>contains</code> demands sharing no value,
where their counts add up into a length floor.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Stranger6667/jsonschema/blob/master/CHANGELOG.md">jsonschema's
changelog</a>.</em></p>
<blockquote>
<h2>[0.49.6] - 2026-08-06</h2>
<h3>Added</h3>
<ul>
<li>Canonicalization of a negated <code>uniqueItems</code>, where the
complement demands a repeated element under the length floor two
elements imply.</li>
<li>Canonicalization of a negated array tuple, where each position's
complement stands under the length that reaches it.</li>
<li>Canonicalization of <code>contains</code> demands sharing no value,
where their counts add up into a length floor.</li>
<li><code>CanonicalSchema::negate</code> through references, where the
complement of the resolved target takes the reference's place.</li>
<li>Canonicalization of negated <code>propertyNames</code> and
<code>additionalProperties</code>, where the complement spells the
violating-key demand instead of a <code>not</code> residual.</li>
<li>Canonicalization of negated <code>additionalProperties</code> under
Draft 4, where the violating-key demand spells the closed property
map.</li>
<li>Canonicalization of <code>not</code> a reference, where the
complement of the resolved target takes the pointer's place.</li>
<li>Canonicalization of a negated <code>oneOf</code>, where the
complement spells the values no branch admits beside the values two
branches share.</li>
<li>Canonicalization of negated <code>items</code> under Draft 4, where
the violating-element demand spells the barred element schema.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>ArrayView</code> reports distinctness in three states, so an
array demanding a repeated element reads apart from one demanding
distinct elements.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>CanonicalSchema::negate</code> keeping a root self-reference
in the complement, where it points at the complement instead of the
source.</li>
<li>An <code>additionalItems</code> that tails no tuple keeping the
whole document unmodeled under Draft 2020-12.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/7888cb4bdc40fa07dd908a06802323d0f4ad134f"><code>7888cb4</code></a>
chore(ruby): Release 0.49.6</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/d57a7e0b176923ebc9e6b05f39b5a6ca66709420"><code>d57a7e0</code></a>
chore(python): Release 0.49.6</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/eaeb5b3ece16ec7cabca85bdf98c97601bcc1983"><code>eaeb5b3</code></a>
chore(rust): Release 0.49.6</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/d87ab9b5f95d1bd73f9147a339b0f856c12150bc"><code>d87ab9b</code></a>
fix: An <code>additionalItems</code> that tails no tuple keeping the
whole document unmo...</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/b31c40474d01f83881479f20806b8254b4250311"><code>b31c404</code></a>
feat: Canonicalization of a negated <code>uniqueItems</code>, where the
complement deman...</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/cbcf7553ded29cc7e1e47acd4637a8b7069c5318"><code>cbcf755</code></a>
build(deps): bump crates/jsonschema/tests/suite</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/d89a297b61a70cf040ac81febab580bffa8caea1"><code>d89a297</code></a>
build(deps): bump crate-ci/typos from 1.48.0 to 1.49.0</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/8285c9619cc2294f2cea3473bb93fc014a20d563"><code>8285c96</code></a>
feat: Canonicalization of a negated array tuple, where each position's
comple...</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/05d579c9ec40f1e2e5c2c84a29d484a48a40a567"><code>05d579c</code></a>
feat: Canonicalization of negated <code>items</code> under Draft 4,
where the violating-...</li>
<li><a
href="https://github.com/Stranger6667/jsonschema/commit/8c53ddb0f4adab9db1ca6a49b7de61546b29989a"><code>8c53ddb</code></a>
feat: Canonicalization of a negated <code>oneOf</code>, where the
complement spells the ...</li>
<li>Additional commits viewable in <a
href="https://github.com/Stranger6667/jsonschema/compare/ruby-v0.49.5...ruby-v0.49.6">compare
view</a></li>
</ul>
</details>
<br />

Updates `vergen-gitcl` from 10.0.1 to 10.0.2
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rustyhorde/vergen/commit/8355721c8288a4853cb2f2d029ff8f217905c469"><code>8355721</code></a>
chore(deps): dependency updates and Windows lcov fix (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/520">#520</a>)</li>
<li><a
href="https://github.com/rustyhorde/vergen/commit/ff70eebb23a0be1e15a23d07b5f91dc31572200c"><code>ff70eeb</code></a>
chore(msrv): bump MSRV to 1.96.0 (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/519">#519</a>)</li>
<li><a
href="https://github.com/rustyhorde/vergen/commit/13e7cb6ae74143aa130f1dd12e89deb0d31dc353"><code>13e7cb6</code></a>
chore(rake): Rakefile.toml build pipeline and lint updates (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/518">#518</a>)</li>
<li><a
href="https://github.com/rustyhorde/vergen/commit/a39ba617e1232a4da7381575558446dec8de5c69"><code>a39ba61</code></a>
chore: replace deprecated provenance lints with
implicit_provenance_casts (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/517">#517</a>)</li>
<li><a
href="https://github.com/rustyhorde/vergen/commit/8d9813a74034ca9382371e98ed3b0cd5125ac14b"><code>8d9813a</code></a>
chore(rake): tweak macos daily (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/516">#516</a>)</li>
<li><a
href="https://github.com/rustyhorde/vergen/commit/cd4af2aaecb5d76c42e79f2b793f9a319169ec50"><code>cd4af2a</code></a>
chore: add Rakefile.toml build pipeline and fix doc references (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/515">#515</a>)</li>
<li>See full diff in <a
href="https://github.com/rustyhorde/vergen/compare/10.0.1...v10.0.2">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-08-11 15:52:51 -07:00
Maximilian Roos f57fac365b Release v0.72.0 (#3759)
Release v0.72.0 — 55 commits since v0.71.0.

Minor bump: `cargo semver-checks` reports 5 breaking library changes, so
patch is disallowed pre-1.0.

## Headline changes

- **`wt merge` / `wt step push` no longer autostash the target
worktree** (#3703). Both strategies now advance the target through one
`advance_target` — a compare-and-swap `update-ref`, then `read-tree -m
-u` in the target worktree — so `refs/stash` is never entered and staged
changes stay staged.
- **Forge classification returns to brand-in-hostname** (#3673),
reverting the exact-DNS-label rule 0.71.0 shipped.
`github-enterprise.acme.com` and friends resolve again with no config.
- **`[projects."…"]` keys match by `*` pattern and carry forge
settings** (#3701), so one user-config entry covers every repository on
a self-hosted host.
- **A published JSON Schema for `wt list --format=json` schema 2**
(#3747), plus machine-readable approval state and `branch_outcome`
(#3710).

Full detail in `CHANGELOG.md`.

## One fix made during the release cut

The release audit surfaced a gap this release's own `advance_target`
rewrite introduced, fixed here rather than deferred:

**`wt merge` / `wt step push` now refuse a target worktree parked
mid-operation.** The target sync is a two-tree merge, which refuses an
unmerged index but *not* a stopped cherry-pick or rebase whose conflict
has already been staged. A target paused between steps could therefore
have the push range written into it, and the user's `--continue` would
commit the synced tree as the step's result. The old fast-forward path
got this check for free from `receive.denyCurrentBranch=updateInstead`,
which refused any unclean target outright; both strategies now ask
directly, and the refusal names the worktree holding the operation.

`test_push_refuses_target_mid_operation` covers it in both shapes a
stopped operation can take, and both are mutation-verified. With the
gate disabled, the push succeeds and writes `feature.txt` into the
mid-cherry-pick worktree.

The rebase case was added in response to review feedback on this PR, and
pins a second dependency. A rebase detaches HEAD, so `git worktree list
--porcelain` reports the target with no branch and `worktree_for_branch`
finds it only because `finalize_worktree` backfills from
`rebase-merge/head-name`. That makes the rebase arm the one place this
guarantee rests on a helper of ours rather than on git — the
fast-forward path it replaced got the refusal from `find_shared_symref`.
With the backfill disabled, `wt step push` succeeds against a worktree
parked mid-rebase while the cherry-pick case still passes, so the gap
was real.

## Validation

- Local gate green: `cargo run -- hook pre-merge --yes` — 4570 tests,
clippy, fmt, doc sync.
- Cross-platform nightly green on the cut-from tip `3817df079` (run
31133551751): full nextest matrix on linux/macOS/Windows,
feature-powerset, all three release triples, nix-flake,
minimal-versions, unused-deps, crate-build, link-check.
- Changelog verified entry-by-entry against the diffs by an independent
pass; every one of the 55 commits either maps to an entry or is a
documented skip.
- `main` advanced during the CI wait. #3762 ships in this release and
now has a changelog entry; the other two commits that landed (#3758,
#3749) touch only `.github/`.
- Data-loss surface reviewed by four independent finders over the
cumulative diff. One further finding — a pre-0.72 `approvals.toml` key
containing `*` being reinterpreted as a wildcard on upgrade — was
reviewed and accepted as out of scope for this release.

> _This was written by Claude Code on behalf of max-sixty_

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 02:22:28 -07:00
Maximilian Roos 7f8ac8e5d7 feat(list): publish a JSON Schema for the schema-2 envelope (#3747)
`wt list --format=json` schema 2 now has a published, machine-readable
contract at
[worktrunk.dev/schema/list-v2.json](https://worktrunk.dev/schema/list-v2.json).

The schema was already derived — `test_schema_generates` built one,
asserted it compiled, and threw it away, with a comment saying "until
the schema export ships." This ships it: `wt list --print-schema` prints
the document (a developer entry point alongside `--help-page`,
intercepted before clap), and a new step in `test_docs_are_in_sync`
commits it to `docs/static/schema/list-v2.json`, the same
generate-and-commit pattern as `llms.txt`. It shells out rather than
calling `schema_for!` because `JsonEnvelope` lives in the bin-only
`crate::commands` tree.

Two things had to be fixed for the document to be usable.

**The contract.** `schema_for!` generates under schemars' *deserialize*
contract, which marks a `skip_serializing_if` field required — nothing
supplies it on the way in. The first document I generated therefore
required `default_branch`, `upstream`, `pr`, `checks`, `summary` and
`vars` on every item, all of which the absence rule routinely omits, so
it rejected the output it documents. Generating under `for_serialize()`
fixes it.

**The vocabularies.** Four fields — `checks.status`, `display.state`,
`default_branch.integration.reason` and `worktree.operation` — were
`&'static str`, so the schema described them as bare strings. They are
now `JsonCheckStatus`, `JsonMainState`, `JsonIntegrationReason` and
`JsonOperation`, each converted from its domain enum by an exhaustive
match, so a new `CiStatus`, `MainState`, `IntegrationReason` or
`InProgressOperation` variant is a compile error rather than a value
silently missing from the published vocabulary. **The emitted JSON is
unchanged**; the existing envelope snapshot passes untouched.

<details>
<summary>Before and after, for one item</summary>

```json
// before — rejects its own output, and loses the vocabulary
"required": ["default_branch", "upstream", "pr", "checks", "summary", "vars", "display"],
"status": { "type": "string" }

// after
"required": ["branch", "head", "display"],
"status": { "enum": ["passed", "running", "failed"] }
```

</details>

## Testing

`test_schema_accepts_envelopes` validates a battery — every `CiStatus`
over both sources, every `MainState`, a populated worktree row, an
integrated row with an upstream and a dev server, plus the absent and
null arms of the absence rule — against the same document
`--print-schema` emits.

Validating proves nothing about a type the battery never instantiates,
so the test also pins every non-`Nullable_` type in the document to a
path that must carry a non-null value. A new `Json*` type fails until
the battery reaches it, and a row that stops populating one fails too —
the check reports the type names rather than leaving the gap to a
reader. This needed a `jsonschema` dev-dependency: schemars only
generates, and derives the document from the types without ever seeing
an envelope, so nothing otherwise tied the two together.

The test was confirmed to fail on the bug it exists for. Reverting to
`for_deserialize()` makes it report `pr`, `checks`, `summary`, `vars`
and `display.columns` as wrongly required.

The dependency is dev-only: `reqwest`, `rustls` and `async-trait` stay
unselected so no HTTP stack comes along, and `cargo tree --package
worktrunk --edges normal -i jsonschema` finds no path to it.

One direction it deliberately does not cover: a *loosening*. If a field
reverted to `&'static str` the schema would say `type: string` and
anything would validate. That direction is held by the compiler instead,
via the exhaustive matches.

## Notes for review

- `schema_document()` lives in `json_v2.rs` beside the types, not in
`help.rs`, so `--print-schema` and the test compile the same document
rather than two constructions that could drift on the contract setting.
- The lychee exclusion for `worktrunk.dev/schema/` follows the entry
directly above it: a generated link that 404s until the site deploys.

> _This was written by Claude Code on behalf of max-sixty_
2026-08-05 22:33:23 -07:00
Maximilian Roos 970976bd32 Consolidate benchmark recipes and cases (#3721)
Benchmark fixtures had accumulated around individual call sites, leaving
the same repository shapes and command modes expressed several ways.
This change makes repository state the organizing concept: benchmark
groups select semantic `FixtureRecipe`s, share table-driven cases, and
retain separate fixtures only when a controlled contrast, destructive
precondition, or disproportionate setup cost requires one.

The real-repository list benchmarks now share one pinned
`rust-lang/rust` fixture with eight worktrees and fifty branches spread
across history. The list matrix keeps default, branch, warm, and cold
coverage without maintaining several “real” repository handles. Remove
and prune cases share the same case machinery, while the destructive
large-repository prune state remains separate.

The scheduled workflow now converts Criterion estimates directly with
`jq`, removing the one-off Python converter and its tests. The benchmark
guide records the canonical-fixture principle and the remaining
recipe-to-group mapping.

Tests: `cargo run -- hook pre-merge --yes` (4,551 tests); `cargo bench
--bench list large_repository -- --test`; `cargo test -p wt-perf`;
benchmark check, clippy, formatting, and diff checks.

> _This was written by Codex on behalf of max-sixty_.
2026-08-05 10:30:34 -07:00
dependabot[bot] 286004f1eb chore: bump skim from 5.5.0 to 5.6.1 (#3718)
Bumps [skim](https://github.com/skim-rs/skim) from 5.5.0 to 5.6.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/releases">skim's
releases</a>.</em></p>
<blockquote>
<h2>5.6.1 - 2026-07-27</h2>
<h2>Release Notes</h2>
<h3>🤖 CI</h3>
<ul>
<li>Do not fail release on public API breakage</li>
</ul>
<h2>Install skim 5.6.1</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-installer.ps1
| iex&quot;
</code></pre>
<h2>Download skim 5.6.1</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Platform</th>
<th>Checksum</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-aarch64-apple-darwin.tar.xz">skim-aarch64-apple-darwin.tar.xz</a></td>
<td>Apple Silicon macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-aarch64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-apple-darwin.tar.xz">skim-x86_64-apple-darwin.tar.xz</a></td>
<td>Intel macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-pc-windows-msvc.zip">skim-x86_64-pc-windows-msvc.zip</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-pc-windows-msvc.msi">skim-x86_64-pc-windows-msvc.msi</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-pc-windows-msvc.msi.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-aarch64-unknown-linux-gnu.tar.xz">skim-aarch64-unknown-linux-gnu.tar.xz</a></td>
<td>ARM64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-aarch64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-unknown-linux-gnu.tar.xz">skim-x86_64-unknown-linux-gnu.tar.xz</a></td>
<td>x64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-aarch64-unknown-linux-musl.tar.xz">skim-aarch64-unknown-linux-musl.tar.xz</a></td>
<td>ARM64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-aarch64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-unknown-linux-musl.tar.xz">skim-x86_64-unknown-linux-musl.tar.xz</a></td>
<td>x64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.6.1/skim-x86_64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/blob/master/CHANGELOG.md">skim's
changelog</a>.</em></p>
<blockquote>
<h2>[5.6.1] - 2026-07-27</h2>
<h3>🤖 CI</h3>
<ul>
<li>Do not fail release on public API breakage</li>
</ul>
<h2>[5.6.0] - 2026-07-26</h2>
<h3>🚀 Features</h3>
<ul>
<li>Add the <code>set-cmd</code> action to change interactive mode
command from bindings (<a
href="https://redirect.github.com/skim-rs/skim/issues/1142">#1142</a>)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li><em>(examples)</em> Gate malloc_trim to gcc in the multiple_runs
example</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>Readd default keybindings to the manpage as an auto-generated
separate subsection</li>
</ul>
<h3>🧪 Testing</h3>
<ul>
<li>Replace tmux e2e harness with cross-platform Zellij harness (<a
href="https://redirect.github.com/skim-rs/skim/issues/1139">#1139</a>)</li>
</ul>
<h3>🤖 CI</h3>
<ul>
<li>Make coverage non-blocking to avoid issues with nightly rust</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/skim-rs/skim/commit/c398374a85967c83cad0646807d99cac62de5d6c"><code>c398374</code></a>
release: v5.6.1 (<a
href="https://redirect.github.com/skim-rs/skim/issues/1143">#1143</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/2303a15b0c5dc3863398636205cbf6c38c1f6c67"><code>2303a15</code></a>
ci: do not fail release on public API breakage</li>
<li><a
href="https://github.com/skim-rs/skim/commit/794ddddb71c56b5a2feca5cb48df08b9758d2021"><code>794dddd</code></a>
release: v5.6.0 (<a
href="https://redirect.github.com/skim-rs/skim/issues/1140">#1140</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/47456133420131a4a58f4085321305ea9e2f8341"><code>4745613</code></a>
ci: make coverage non-blocking to avoid issues with nightly rust</li>
<li><a
href="https://github.com/skim-rs/skim/commit/29370cc0041baf14f5dddd88b290002205538863"><code>29370cc</code></a>
docs: readd default keybindings to the manpage as an auto-generated
separate ...</li>
<li><a
href="https://github.com/skim-rs/skim/commit/cbfb7fac0f95a84ebdf5376115645fafe0084a40"><code>cbfb7fa</code></a>
feat: add the <code>set-cmd</code> action to change interactive mode
command from bindin...</li>
<li><a
href="https://github.com/skim-rs/skim/commit/e929c512e307bcac3a53f3c67677b1cd8a746837"><code>e929c51</code></a>
fix(examples): gate malloc_trim to gcc in the multiple_runs example</li>
<li><a
href="https://github.com/skim-rs/skim/commit/88ce5b97ac455c4d1e341fcc105c5ce46bf99fae"><code>88ce5b9</code></a>
test: replace tmux e2e harness with cross-platform Zellij harness (<a
href="https://redirect.github.com/skim-rs/skim/issues/1139">#1139</a>)</li>
<li>See full diff in <a
href="https://github.com/skim-rs/skim/compare/v5.5.0...v5.6.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=skim&package-manager=cargo&previous-version=5.5.0&new-version=5.6.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 13:36:15 -07:00
dependabot[bot] a75328214c chore: bump the patch group with 2 updates (#3717)
Bumps the patch group with 2 updates:
[clap_complete](https://github.com/clap-rs/clap) and
[schemars](https://github.com/GREsau/schemars).

Updates `clap_complete` from 4.6.7 to 4.6.8
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/clap-rs/clap/commit/d93a00d64e3c697cef06cb7ff875d1a98d73d2f6"><code>d93a00d</code></a>
chore: Release</li>
<li><a
href="https://github.com/clap-rs/clap/commit/4709d1a391292ef383b8c900c36a6e7312d3945b"><code>4709d1a</code></a>
docs(complete): Update changelog</li>
<li><a
href="https://github.com/clap-rs/clap/commit/2246e8b0c7c8b5ccb2d24a461862b43150d08e0d"><code>2246e8b</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6455">#6455</a>
from epage/possible</li>
<li><a
href="https://github.com/clap-rs/clap/commit/2550f328b0c4d23c38cdb553c39042f544c07c47"><code>2550f32</code></a>
feat(complete): Expose possible value completers</li>
<li><a
href="https://github.com/clap-rs/clap/commit/9048857bc4b46ce588e9a238f6a548c93104392b"><code>9048857</code></a>
refactor(complete): Pull out possible values candidate conversion</li>
<li><a
href="https://github.com/clap-rs/clap/commit/0607d6600133d505c10c7197956217bc54eb1558"><code>0607d66</code></a>
refactor(complete): Remove unused allocation</li>
<li><a
href="https://github.com/clap-rs/clap/commit/943de7350014a880ca787ddca5675ec4fed3dde1"><code>943de73</code></a>
refactor(complete): Move related functions next to each other</li>
<li><a
href="https://github.com/clap-rs/clap/commit/81b86a9fc3d3e2773873e4175ac26c8611fd29b5"><code>81b86a9</code></a>
refactor(complete): Generalize value candidate handling</li>
<li><a
href="https://github.com/clap-rs/clap/commit/ae09202eebb45d2ddca9b280dd91d50d810afc79"><code>ae09202</code></a>
refactor(complete): Remove extra allocation</li>
<li><a
href="https://github.com/clap-rs/clap/commit/466b2be56c5811d1af62c407f5a00456350ece62"><code>466b2be</code></a>
chore: Release</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.6.7...clap_complete-v4.6.8">compare
view</a></li>
</ul>
</details>
<br />

Updates `schemars` from 1.2.1 to 1.2.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/GREsau/schemars/releases">schemars's
releases</a>.</em></p>
<blockquote>
<h2>v1.2.2</h2>
<ul>
<li>Update to syn 3 in schemars_derive</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/GREsau/schemars/blob/master/CHANGELOG.md">schemars's
changelog</a>.</em></p>
<blockquote>
<h2>[1.2.2] - 2026-07-27</h2>
<ul>
<li>Update to syn 3 in schemars_derive</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/GREsau/schemars/commit/ed6186319d5ebf1959a03f558df375d2bb5c44a6"><code>ed61863</code></a>
v1.2.2</li>
<li><a
href="https://github.com/GREsau/schemars/commit/ae618c3a8e1ca0da5026df5a417be2c5259ab5f9"><code>ae618c3</code></a>
Update <code>syn</code> to v3 (<a
href="https://redirect.github.com/GREsau/schemars/issues/528">#528</a>)</li>
<li><a
href="https://github.com/GREsau/schemars/commit/c072ea038c3db93d27c881ede41689ce0777d554"><code>c072ea0</code></a>
docs: add missing attributes to table of contents (<a
href="https://redirect.github.com/GREsau/schemars/issues/517">#517</a>)</li>
<li><a
href="https://github.com/GREsau/schemars/commit/015272f20570535a49db0403924c13fc4c51317e"><code>015272f</code></a>
Clippy fix (<a
href="https://redirect.github.com/GREsau/schemars/issues/512">#512</a>)</li>
<li><a
href="https://github.com/GREsau/schemars/commit/944f72728f9744992e045e132aab56c5d557c0ad"><code>944f727</code></a>
Bump bytes from 1.10.1 to 1.11.1 (<a
href="https://redirect.github.com/GREsau/schemars/issues/507">#507</a>)</li>
<li>See full diff in <a
href="https://github.com/GREsau/schemars/compare/v1.2.1...v1.2.2">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-08-03 13:36:12 -07:00
Maximilian Roos dd453304ed test: fold the mock stub into the wt binary (#3712)
`cargo test --test integration` neither built nor rebuilt `mock-stub`: a
target filter deselects the dummy test that pulled it in, so a fresh
tree panicked ("mock-stub binary not found") and a warm one could run a
stale stub. The chain that compensated — the separate helper package,
its dummy `builds.rs`, the `default-members` entry, nextest's
experimental `build-bins` setup script, `workspace_bin()` — existed only
because cargo-dist ships every `[[bin]]`, and carried a TODO to collapse
once that changed. dist 0.30.2 does support per-binary exclusion now
(`[dist.binaries]`, since 0.29.0; verified with `dist plan`), but the
TODO's plan has a hole it predates: `cargo install worktrunk` installs
every feature-satisfied `[[bin]]`, and dist config doesn't govern
crates.io installs.

So the mock commands are now the `wt` binary itself. `mock_commands`
links `wt` under the mock's name (`gh`, `glab`, …), and `main()`
dispatches to the ported playback (`testing::mock_stub`) when
`WORKTRUNK_TEST_MOCK_CONFIG_DIR` is set, argv[0] is a foreign name, and
the config dir holds `<argv0>.json` for it. The existence check keeps wt
under a foreign argv[0] *without* a config being wt — the
argv0-validation security test symlinks it as `wt;touch` and must reach
wt's own rejection. The shipped binary already compiles the whole
`testing` module unconditionally, so this adds no new category of test
code to it. Windows links `wt.exe` with `hard_link` (copy fallback for
cross-drive dirs); the debug binary is ~67 MB, so per-mock copies stay
the fallback.

Every runner is now safe by construction — cargo rebuilds a package's
own binaries whenever its integration tests build, so there is no
separate artifact to go missing or stale. Deleted: the helper package,
the setup script plus `experimental = ["setup-scripts"]`, the
`default-members` trick, `workspace_bin()`, and `wt_bin()`'s dead
compile-time branch (unit-test targets get neither the runtime variable
nor the `option_env!` value, so the runtime resolution is the one
mechanism).

Validated locally: the pre-merge gate's full suite passes (4542/4542;
its doc step also caught unescaped `argv[0]` intra-doc links in the new
comments, fixed and `cargo doc -Dwarnings` re-verified). With all stub
artifacts purged from `target/`, plain `cargo test --test integration`
on mock-dependent tests builds them and passes — the command that used
to hit the trap. Two integration tests pin the dispatch's argv[0] edges
(an empty argv[0], and a non-UTF8 one), alongside the existing
`wt;touch` carve-out test.

The first commit is the investigation that preceded the fix: it verified
the `wt` binary itself was never subject to the staleness the mock-stub
was, and documented that in `tests/CLAUDE.md`; the fix then narrows that
paragraph further, since the gap it scoped no longer exists.

A two-reviewer subagent round (one prosecuting the diff against the
failure modes documented in the repo's own mock history — the #401/#407
Windows era, #547, #654, #127, #2544, #2730, #2744 — the other
adversarial) then hardened the dispatch. The reserved-name guard is
case-insensitive, matching the config probe, which goes through a
filesystem that equates `WT.json` with `wt.json` on macOS and Windows;
`command_name()` reads `args_os` — `env::args()` panics on a non-Unicode
argument, and this runs inside `main()` on every invocation (caught by
the tend review) — and returns `None` for a degenerate argv[0] instead
of panicking; the `.exe` suffix is stripped explicitly rather than via
`file_stem`, so a dotted mock name (`python3.11`) resolves identically
on every platform; and `copy_mock_binary` is now private —
`MockConfig::write` writes `<name>.json` before linking and is the only
way to create a mock, so a link cannot exist without its config, and the
dispatch's missing-config fall-through can only mean "wt under a foreign
name" (the argv0-validation tests' `wt;touch`), never a half-configured
mock that silently runs real wt with the mocked tool's arguments. The
`Option<&str>` mock helpers whose `None` arm produced exactly such
configless links lost the arm (every caller passed `Some`), and 25
redundant standalone link calls went with it.

The review also surfaced the one remaining spawn-a-stale-binary path
outside the suite: `wt-perf timeline` resolved a sibling `wt` by path,
checked only existence, and told the user to build it manually — so
`cargo run -p wt-perf -- timeline` after a `src/` edit silently measured
stale code. It now builds `wt` first and takes the artifact path from
cargo's `--message-format=json` report rather than deriving a sibling
location, so target-dir and profile overrides can't divert the build
away from where it's resolved; a release wt-perf builds and measures a
release wt. The build runs before the timeline's wall-clock measurement
starts, cargo's progress streams on stderr, and stdout keeps the
`--chrome` JSON contract.

> _This was written by Claude Code on behalf of max-sixty_

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 22:12:21 -07:00
Maximilian Roos aac20eeab6 Release v0.71.0 (#3670)
Release 0.71.0. Minor bump, forced by ten breaking library-API changes
from the forge, shell, and removal consolidation — patch is disallowed
pre-1.0 with semver breakage.

## Gates

- `cargo run -- hook pre-merge --yes` — 4,491 tests, 1 skipped, all
lints
- `nightly.yaml` on the cut-from tip (`aba7bad08`) — `full-tests` green
on all three platforms; `gate`, `crate-build`, `minimal-versions`,
`check-unused-dependencies`, `link-check`, `nix-flake`, and the musl
release targets green
- `cargo semver-checks check-release -p worktrunk` — 10 major, 0 minor

## Two entries users need to read

**Forge hosts are now classified by exact DNS label.** A host that
carries the forge name only as part of a label stops being detected:
`gitlab-internal.company.com`, `github-mirror.example.com`, and
`mygithub.com` join the lookalikes the change targets. That costs CI
status in `wt list --full`, `wt switch --prs`, and `repo.provider` in
JSON output. `forge.platform` in `.config/wt.toml` restores it. Only the
single-label SSH alias form (`github-personal`) announces itself; a
self-hosted instance at a hyphenated hostname goes quiet without a
message.

**The retired single-file shell directive is gone.** Wrappers written
before 0.37 stop changing directory *and* stop running `--execute` until
`wt config shell install` and a shell restart. Nushell needs the
reinstall because its wrapper is a static file.

## Data-loss surface review

Five independent finders over the cumulative diff — behavioral,
blast-radius, automation-diff, and keyword, plus a dedicated pass on the
consolidation commit.

The removal chain saw heavy churn and moved consistently in the safe
direction: the repo-wide `git worktree prune` that could unregister an
innocent bystander is gone, the lock guard now precedes the
missing-directory fallback, planning is a pure read, and a fresh
topology read guards the compare-and-swap branch delete. No new
unbounded deletion path.

Residual items, adjudicated as acceptable:

1. A worktree directory that *reappears* between plan and execution is
deleted rather than trashed. `prune_worktree_entry` runs `git worktree
remove`, which deletes a clean worktree's ignored files at exit 0 with
no `--force` (verified in a scratch repo). The normal path renames into
`.git/wt/trash/` first, so git finds nothing there; only the
missing-directory fallback and `step prune`'s stale-detached arm are
exposed. Requires a remount inside the window, and #3658 documents the
tradeoff.
2. The picker's `BranchOnly` arm destructures with `..` and discards
`prune_entry`, so `alt-x` on a gone-directory row leaves a stale
registration behind. A regression from #3658, but it leaves *more*
state, not less.
3. `wt config shell install` derives its preview and its deletion from
two separate scans, and `wt switch`'s first-run install offer still
removes legacy files unpreviewed. Both pre-existing; #3648 tightened
`shell install` and did not reach that path.
4. `enable_hermetic_test_env()` is a `pub` process-global in library
code that blinds every git child to user config. No production caller,
carries its own TODO.
5. Two directive-injection regression tests were deleted in the same
release as the directive-protocol rework.

## Follow-up worth filing

Widen the forge diagnostic to any host that would have matched under the
old substring rule but no longer does — today only the single-label SSH
alias form gets a message, so a self-hosted instance at a hyphenated
hostname loses CI status silently. Additive; needs no further breaking
change.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-07-30 13:29:03 -07:00
Maximilian Roos 1eded27943 Simplify forge, shell integration, and removal internals (#3662)
This consolidates cross-cutting models that had accumulated parallel
representations, while preserving the CLI and config interfaces.

## What changed

- Forge identity now flows through one `ForgeKind`, with boundary-safe
network-host classification shared by CI, remote references, and
structured repository metadata. Branded SSH aliases such as
`github-personal` remain outside provider dispatch and receive an
actionable `forge.platform` diagnostic when forge data is requested.
- Worktree removal now uses one owned target type and rechecks uncached
worktree topology immediately before compare-and-swap branch deletion,
retaining branches that gained a live or locked checkout.
- Shell integration no longer implements the retired single-file
directive writer. Stale wrappers receive repair guidance, execution
fails closed, and child processes cannot inherit the retired
sourceable-file capability.
- Zsh and Git-version probes are shared, while dead mocks, redundant
dependency edges, serializer detours, pass-through types, and duplicate
tests are removed.

The removal guard deliberately distinguishes live, stale-prunable, and
locked registrations. The detached cleanup path performs the same
record-aware check before deleting a branch ref.

## Testing

`cargo run -- hook pre-merge --yes` passed after merging current
`origin/main`: 4,489 tests, Clippy, formatting, lockfile checks, docs,
doctests, and snapshot review.

> _This was written by Claude Code on behalf of max_.
2026-07-30 02:10:07 -07:00
dependabot[bot] 5e85e8af71 chore: bump the patch group with 4 updates (#3625)
Bumps the patch group with 4 updates:
[clap](https://github.com/clap-rs/clap),
[serde_json](https://github.com/serde-rs/json),
[ignore](https://github.com/BurntSushi/ripgrep) and
[tokio](https://github.com/tokio-rs/tokio).

Updates `clap` from 4.6.2 to 4.6.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.6.3</h2>
<h2>[4.6.3] - 2026-07-20</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow <code>&quot;literal&quot;.function()</code>
as attribute values</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.6.3] - 2026-07-20</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow <code>&quot;literal&quot;.function()</code>
as attribute values</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/clap-rs/clap/commit/7e0bccab8cf7be047fc84d804d19c7b30715d3fb"><code>7e0bcca</code></a>
chore: Release</li>
<li><a
href="https://github.com/clap-rs/clap/commit/0f09905658535c4b3a92afc037e8970959f55559"><code>0f09905</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/clap-rs/clap/commit/970695102173e40bddb0c95b0a3f6fb216f2eb19"><code>9706951</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6353">#6353</a>
from truffle-dev/feat-completer-arg-index</li>
<li><a
href="https://github.com/clap-rs/clap/commit/ac0d148f7e21068fd1f544230456f30c95311f78"><code>ac0d148</code></a>
feat(complete): Index-aware ValueCompleter</li>
<li><a
href="https://github.com/clap-rs/clap/commit/1565a3cbb411dedc410154fca0de7ec445fcdb08"><code>1565a3c</code></a>
test(complete): Cover indexed multi-value case</li>
<li><a
href="https://github.com/clap-rs/clap/commit/48fc10ae88e4d723fd581745cbbff40eea9ebc88"><code>48fc10a</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6350">#6350</a>
from stefankreutz/missing_docs</li>
<li><a
href="https://github.com/clap-rs/clap/commit/7d4c353d5b843ac3b45473172ebdf9c80e89b697"><code>7d4c353</code></a>
docs: Hint at clippy's missing docs lint</li>
<li><a
href="https://github.com/clap-rs/clap/commit/f6a6701e60f372c2104c6aca413c86b996e3e026"><code>f6a6701</code></a>
chore(deps): Update Rust Stable to v1.95 (<a
href="https://redirect.github.com/clap-rs/clap/issues/6347">#6347</a>)</li>
<li><a
href="https://github.com/clap-rs/clap/commit/ac5fda6a799e4c640d671edd1111d4a5e723dc1a"><code>ac5fda6</code></a>
chore: Release</li>
<li><a
href="https://github.com/clap-rs/clap/commit/b73c627638fb8d03497079408f5d684f281d132d"><code>b73c627</code></a>
docs: Update changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.6.2...clap_complete-v4.6.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `serde_json` from 1.0.150 to 1.0.151
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.151</h2>
<ul>
<li>Add RawValue::from_string_unchecked (<a
href="https://redirect.github.com/serde-rs/json/issues/1331">#1331</a>,
thanks <a
href="https://github.com/WonderLawrence"><code>@​WonderLawrence</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/serde-rs/json/commit/de8500740cdcabffb9734f503e4889def823cf10"><code>de85007</code></a>
Release 1.0.151</li>
<li><a
href="https://github.com/serde-rs/json/commit/3b2b3c5f28c20ed988bd081a4147c535e7e65c74"><code>3b2b3c5</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1331">#1331</a>
from WonderLawrence/rawvalue-from-string-unchecked</li>
<li><a
href="https://github.com/serde-rs/json/commit/0406d96860e9d8b9252e2002fa3e626ae48ca1b0"><code>0406d96</code></a>
Debug-assert well-formedness and no-whitespace in
from_string_unchecked</li>
<li><a
href="https://github.com/serde-rs/json/commit/cf16f75d81e28c723323bfc60a68fc02d2994fff"><code>cf16f75</code></a>
Add RawValue::from_string_unchecked</li>
<li><a
href="https://github.com/serde-rs/json/commit/827a315bf2198558f0325b07bcc1e2cd973aba2f"><code>827a315</code></a>
Update actions/upload-artifact@v6 -&gt; v7</li>
<li><a
href="https://github.com/serde-rs/json/commit/cea36a5c017ebffdeb95d0cd0f1aad473bfab758"><code>cea36a5</code></a>
Update actions/checkout@v6 -&gt; v7</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.150...v1.0.151">compare
view</a></li>
</ul>
</details>
<br />

Updates `ignore` from 0.4.30 to 0.4.31
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/59e318f5ace48db54f37bb67c152535bc17fa153"><code>59e318f</code></a>
ignore-0.4.31</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/a9dc2228fbddd1d25146f38d0926830812c97419"><code>a9dc222</code></a>
cargo: set <code>rust-version</code> on all crates</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/be739c7910288905d966f87607b28435d1576295"><code>be739c7</code></a>
index: add grep-index crate</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/d958105d412b6a1ad014cb0e5832a9b029fa4977"><code>d958105</code></a>
cargo: add new build-time <code>unstable-index</code> feature</li>
<li>See full diff in <a
href="https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.30...ignore-0.4.31">compare
view</a></li>
</ul>
</details>
<br />

Updates `tokio` from 1.53.0 to 1.53.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.53.1</h2>
<h1>1.53.1 (July 20th, 2026)</h1>
<h3>Fixed</h3>
<ul>
<li>signal: restore MSRV by removing <code>OnceLock::wait</code> from
the Windows handler (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8300">#8300</a>)</li>
</ul>
<h3>Fixed (unstable)</h3>
<ul>
<li>time: fix alt timer cancellation and insertion race (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8252">#8252</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>runtime: remove dead link definition in Runtime::block_on (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8301">#8301</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tokio/issues/8252">#8252</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/8252">tokio-rs/tokio#8252</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8300">#8300</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/8300">tokio-rs/tokio#8300</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8301">#8301</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/8301">tokio-rs/tokio#8301</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tokio-rs/tokio/commit/75fef53d0a8590c2d1dbb63672aa7b7d1ef51155"><code>75fef53</code></a>
chore: prepare Tokio v1.53.1 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8303">#8303</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/ae9d01121377cdbef32b9d5e8559843cce9f927e"><code>ae9d011</code></a>
signal: restore MSRV by removing OnceLock::wait from the Windows handler
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8300">#8300</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/eb4988dc2ecb85d2617971fbbabc84938c141bfd"><code>eb4988d</code></a>
time: fix the loom test of the race between cancellation/insertion (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8302">#8302</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/91d3b4c0bccf2234fc3ed19e605e2cd402f19437"><code>91d3b4c</code></a>
time: fix alt timer cancellation and insertion race (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8252">#8252</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/a46338401b9e0ffc9bd68c31100ee99cee717481"><code>a463384</code></a>
runtime: remove dead link definition in <code>Runtime::block_on</code>
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8301">#8301</a>)</li>
<li>See full diff in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.53.0...tokio-1.53.1">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-07-28 20:12:37 -07:00
Maximilian Roos 946e360447 Release v0.70.0 (#3640)
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:

- **#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; #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_
2026-07-28 18:48:00 -07:00
dependabot[bot] 21ea6d6f1a chore: bump skim from 5.1.0 to 5.5.0 (#3626) 2026-07-27 22:33:38 -07:00
Maximilian Roos 6b29c2802b Release v0.69.2 (#3590)
Cuts v0.69.2, and fixes the Windows code-signing path it depends on.

## The signing fix

v0.69.1 shipped an unsigned `wt.exe` under a green run and a
**Completed** SignPath signing request. `archive: false` (#3566) had
already made the GitHub artifact name
`worktrunk-x86_64-pc-windows-msvc.zip`, and SignPath names its download
after the artifact — so with `output-artifact-directory: target/distrib`
the signed zip landed at `worktrunk-x86_64-pc-windows-msvc.zip.zip`,
beside the untouched unsigned build. The checksum step and the release
upload both kept reading the original. Confirmed by parsing the
published asset's PE certificate table: `size=0`.

The download now goes to a scratch directory and whatever single file
lands there replaces the built zip, so SignPath's naming isn't
load-bearing.

## Verification, because this failure is invisible

Signing is `continue-on-error` by design (self-signed test certificate
pending SignPath's OSS review), so nothing in the logs distinguishes
"signed" from "silently unsigned" — which is how it slipped through
twice, two different ways. `.github/verify-windows-signature.py` reads
the zip's PE certificate tables directly, and runs at two points with
distinct jobs:

- **before the overwrite** — an unsigned release is tolerable while the
certificate is a test one; a corrupt one never is, so the replacement
has to verify before it can clobber a good build.
- **after** — reports what the release actually ships, which is the
question the logs never answered.

## Rehearsed before landing

The signing path only runs on a tag, so each question about it used to
cost a release. This chain was instead run on a Windows runner against
the already-published v0.69.1 zip (identical bytes, no build):

```
saved to …\target\signpath\worktrunk-x86_64-pc-windows-msvc.zip.zip
git-wt.exe: certificate table 8480 bytes
wt.exe:     certificate table 8472 bytes
→ mv → target/distrib/worktrunk-x86_64-pc-windows-msvc.zip
target/distrib/worktrunk-x86_64-pc-windows-msvc.zip: all 2 executables signed
worktrunk-x86_64-pc-windows-msvc.zip: OK   (checksum matches)
```

That also settled the open question behind #3556: SignPath returns the
signed zip itself, not a wrapper, so `skip-decompress: true` is correct
— the extract mode does explode it into loose files.

## Release contents

`wt remove`'s fsmonitor sweep (#3581), the troubleshooting doc trim, and
this fix. The two refactors in range (#3582, #3584) are
behavior-preserving and omitted per convention.

Local gate green (4547 passed). Changelog entries verified against the
diffs by subagent; two claims corrected (the doc entry's rationale, and
an overclaim attributing v0.69.0's unsigned binary to this bug rather
than the separate upload failure #3566 fixed). Data-loss surface
reviewed across the cumulative diff.

> _This was written by Claude Code on behalf of max_
2026-07-24 20:02:13 -07:00
Maximilian Roos bd3ebaffde Release v0.69.1 (#3577)
Release v0.69.1.

A patch release: the Windows code-signing upload fix (`archive: false`,
so SignPath receives the real zip rather than a zip-of-a-zip), crates.io
publishing via trusted publishing (OIDC), a `wt switch` picker
correctness fix after a deleted-CWD recovery, and a statusline
dev-server URL dim. See CHANGELOG.md for the full list.

> _This was written by Claude Code on behalf of max_
2026-07-24 17:15:12 -07:00
Maximilian Roos 7b2e0705a1 Release v0.69.0 (#3559)
Highlights: clickable CI and dev-server-URL statusline segments in Claude Code (#3550), `wt merge --no-rebase` accepting merge-shaped fast-forward histories (#3509), a faster and lower-CPU `wt switch` picker (#3544, #3534), and SignPath code signing for the Windows release binary (#3553). Full details in CHANGELOG.md.

> _This was written by Claude Code on behalf of max_
2026-07-23 18:08:29 -07:00
Maximilian Roos a7c4a7a120 refactor(wt-perf): place fixtures under target/wt-perf, not the cache dir (#3547)
## What

Move every `wt-perf` on-disk fixture out of the per-user cache dir and
under the cargo target dir at `<target>/wt-perf/`, resolved by a renamed
`wt_perf_fixture_dir()`:

- `setup <config>` fixtures → `<target>/wt-perf/<config>` (was
`~/.cache/wt-perf/<config>`).
- The rust-lang/rust clone and `prune-real` fixtures →
`<target>/wt-perf/bench-repos/` (was `~/.cache/wt-perf/bench-repos/`).
- `wt_perf_cache_dir()` → `wt_perf_fixture_dir()`. The target dir is
derived from the **running executable's own path** (it lives inside
whichever dir cargo built into — `<target>/debug/wt-perf`,
`<target>/release/deps/<bench>`), so it honors `CARGO_TARGET_DIR`, a
config-file `build.target-dir`, and cargo-llvm-cov's
`target/llvm-cov-target/` — none of which a bare `CARGO_TARGET_DIR` env
read covers. Falls back to `<workspace>/target` if the binary isn't
under a recognizable profile dir. The `etcetera` dependency is dropped.
- The `WT_PERF_CACHE_DIR` env override (and the empty-value guard it
required) is removed; the benchmarks workflow now caches the
deterministic `target/wt-perf/bench-repos` path directly.
- In-process throwaway fixtures (`create_repo`) are unchanged — they
keep using `tempfile::TempDir`.

This reverses the location decision from #3542, which had moved these
into `~/.cache/wt-perf`.

## Why

`target/` is the conventional home for build/test-generated artifacts —
gitignored, reaped by `cargo clean`, and already where criterion writes
(`target/criterion`). Keeping every wt-perf fixture there gives one
predictable location under the repo that `cargo clean` fully resets.
Deriving the target dir from the running binary (rather than assuming
`<workspace>/target`) keeps that property intact even when the target
dir is relocated.

## Tradeoff (accepted)

`target/` is **not** shared across git worktrees (worktrees don't share
it) and is wiped by `cargo clean`. So the ~15 GiB `prune-real` rust
clone re-clones per worktree and after every `cargo clean` — the cost
#3542 avoided by using the cache dir. This is deliberate and documented
on `wt_perf_fixture_dir`; it's cheap for the synthetic `setup` fixtures,
which rebuild in seconds.

## Testing

- `cargo build -p wt-perf --all-targets`, `cargo test -p wt-perf` —
clean.
- New unit test `target_dir_from_exe_finds_cargo_target` covers the
resolution logic (relocated `CARGO_TARGET_DIR`, bench binary under
`release/deps/`, cargo-llvm-cov's nested target, closest-profile-wins,
and the outside-any-target fallback).
- `pre-commit run --all-files` (fmt, clippy, yaml, typos, cargo-lock,
custom hooks) — clean.
- Smoke-tested end-to-end: `setup branches-2` lands at
`<worktree>/target/wt-perf/branches-2` and writes nothing to
`~/.cache/`; a copy of the binary run from a fake `<dir>/debug/wt-perf`
correctly resolves fixtures to `<dir>/wt-perf/`, proving a relocated
target dir is honored.

> _This was written by Claude Code on behalf of Maximilian_

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 13:44:50 -07:00
Maximilian Roos 4121dc979c refactor(wt-perf): cache fixtures in the platform cache dir, not /tmp or target/ (#3542)
## What

Move `wt-perf`'s benchmark/debug fixture repos out of
`std::env::temp_dir()` and `target/bench-repos/` into the per-user cache
dir, resolved by a new `wt_perf_cache_dir()`:

- `$WT_PERF_CACHE_DIR` if set, else `<cache>/wt-perf` via
`etcetera::choose_base_strategy().cache_dir()` — `~/.cache/wt-perf` (or
`$XDG_CACHE_HOME/wt-perf`) on Linux **and** macOS. This matches
worktrunk's own base-dir convention (`src/config/user/path.rs` resolves
user config through the same XDG-on-macOS strategy).
- `setup <config>` fixtures → `<cache>/<config>` (was
`temp_dir()/wt-perf-<config>`). `--path` still overrides.
- Real cloned fixtures (`prune-real`, the rust-lang/rust clone) →
`<cache>/bench-repos/` (was `target/bench-repos/`).
- In-process throwaway fixtures (`create_repo`) are unchanged — they
keep using `tempfile::TempDir`.

## Why

Both old homes were wrong for a *reused* fixture (these are given stable
names, persist between runs, and are referenced from docs and `-C
<path>` — that's a cache, not a temp file):

- **A fixed name in a shared `/tmp` (Linux)** collides across users:
`/tmp` is sticky (`1777`), so a second user's `setup` hits
`remove_dir_all().unwrap()` on a dir they don't own → `EPERM` → panic.
It's also a predictable-path/TOCTOU hazard, and `systemd-tmpfiles` reaps
`/tmp` per-file at 10 days by `max(atime,mtime,ctime)` — on a `noatime`
mount an actively-*read* fixture still loses cold
`.git/objects/pack/*.pack` mid-use → silent git corruption.
- **On macOS**, `temp_dir()` is already `/var/folders/.../T` (per-user,
`0700`), so the docs' `/tmp/wt-perf-*` paths were simply wrong there.
- **`target/`** is per-worktree (git worktrees don't share it) and wiped
by `cargo clean`, so the ~15 GiB rust clone was re-cloned per worktree —
worst for the most expensive fixture, in a worktree-heavy workflow.

The cache dir is per-user (no collision, no TOCTOU), stable and
discoverable (docs/`-C` references still work), shared across worktrees
(clone once per machine), and survives `cargo clean` — matching sccache,
cargo, rustup, Go, Bazel, and Hugging Face, which all place large
reusable caches there rather than in `/tmp`.

## Migration notes

- First bench/setup run after this rebuilds the cache under the new
location (the old `target/bench-repos/` is no longer read). Existing
fixtures can be dropped with `rm -rf target/bench-repos`.
- `.github/workflows/benchmarks.yaml` sets `WT_PERF_CACHE_DIR` and
caches `$WT_PERF_CACHE_DIR/bench-repos`, so the cached path and the path
wt-perf writes stay pinned together (no drift if a runner sets
`$XDG_CACHE_HOME`); key unchanged.
- Docs (`benches/CLAUDE.md`, `src/commands/CLAUDE.md`) updated to the
new paths, noting that `wt-perf setup` prints the exact path.

## Testing

- `cargo build --workspace --all-targets`, `cargo clippy --workspace
--all-targets --features shell-integration-tests -- -D warnings` —
clean.
- `cargo test -p wt-perf` — passes.
- Smoke-tested default resolution (`~/.cache/wt-perf/…` on macOS),
`$WT_PERF_CACHE_DIR` override, and the `prune-real --path` rejection
(now names the resolved cache path).

> _This was written by Claude Code on behalf of Maximilian_

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 03:05:10 -07:00
Maximilian Roos bf9e603ccd build(deps): hold skim at 5.1.0 — 5.3.1 breaks the picker on legacy Windows (#3538)
## Problem

skim 5.3.1 breaks the picker on the legacy Windows console. Every picker
PTY test on `test (windows)` fails with:

```
✗ interactive picker failed: Keyboard progressive enhancement not implemented for the legacy Windows API.
```

That is a crossterm keyboard-enhancement error: the picker (via skim
5.3.1) drives keyboard-enhancement handling that the legacy Windows
console API doesn't support, crashing the picker at runtime. ~40
`switch_picker` tests fail as a result.

## Evidence it's skim 5.3.1

- **#3526 (bump skim 5.1.0 → 5.3.1) merged with its own `full-tests
(windows)` already red** — the regression landed on main unnoticed.
- **main at skim 5.1.0 (`0958a365b`) was green on `test (windows)` the
same day.** The only relevant change between that green run and the
failures is the skim bump.
- The failure is a picker runtime crash, unrelated to any picker source
change — no `switch_picker` code moved.

Since it's on main, it reddens Windows CI for every open PR (e.g.
#3346), not just one branch.

## Fix

Pin `skim = "=5.1.0"` in `Cargo.toml` — the last Windows-green release —
with a comment naming the regression.

`Cargo.toml` specified `skim = "5.0"` (a caret range that `5.3.1`
satisfies), so #3526 changed **only** the lockfile. A lock-only revert
would silently drift back to 5.3.1 on the next `cargo update`, so the
hold has to live in the manifest. The lockfile downgrade (skim 5.3.1 →
5.1.0, frizbee 0.11.0 → 0.10.0 and the deps that pulls) follows from the
pin.

Unpin once skim's keyboard-enhancement path is guarded for the legacy
Windows console (upstream fix, or a worktrunk-side guard before enabling
enhancement).

## Testing

- `cargo run -- hook pre-merge --yes` — full suite green locally (4475
passed, 1 skipped), including the `switch_picker` tests that fail on
Windows at 5.3.1.
- CI will confirm `test (windows)` returns to green.

> _This was written by Claude Code on behalf of Maximilian Roos_

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 01:46:12 -07:00
dependabot[bot] 87715c305b chore: bump skim from 5.1.0 to 5.3.1 (#3526)
Bumps [skim](https://github.com/skim-rs/skim) from 5.1.0 to 5.3.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/releases">skim's
releases</a>.</em></p>
<blockquote>
<h2>5.3.1 - 2026-07-19</h2>
<h2>Release Notes</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Ignore KeyEventState (<a
href="https://redirect.github.com/skim-rs/skim/issues/1127">#1127</a>)</li>
</ul>
<h2>Install skim 5.3.1</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-installer.ps1
| iex&quot;
</code></pre>
<h2>Download skim 5.3.1</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Platform</th>
<th>Checksum</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-aarch64-apple-darwin.tar.xz">skim-aarch64-apple-darwin.tar.xz</a></td>
<td>Apple Silicon macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-aarch64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-apple-darwin.tar.xz">skim-x86_64-apple-darwin.tar.xz</a></td>
<td>Intel macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-pc-windows-msvc.zip">skim-x86_64-pc-windows-msvc.zip</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-pc-windows-msvc.msi">skim-x86_64-pc-windows-msvc.msi</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-pc-windows-msvc.msi.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-aarch64-unknown-linux-gnu.tar.xz">skim-aarch64-unknown-linux-gnu.tar.xz</a></td>
<td>ARM64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-aarch64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-unknown-linux-gnu.tar.xz">skim-x86_64-unknown-linux-gnu.tar.xz</a></td>
<td>x64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-aarch64-unknown-linux-musl.tar.xz">skim-aarch64-unknown-linux-musl.tar.xz</a></td>
<td>ARM64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-aarch64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-unknown-linux-musl.tar.xz">skim-x86_64-unknown-linux-musl.tar.xz</a></td>
<td>x64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.3.1/skim-x86_64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
</tbody>
</table>
<h2>5.3.0 - 2026-07-19</h2>
<h2>Release Notes</h2>
<h3>🚀 Features</h3>
<ul>
<li>Add 'left' and <code>right</code> info display modes (<a
href="https://redirect.github.com/skim-rs/skim/issues/1120">#1120</a>)</li>
<li>Add <code>--hide-nth</code> to hide fields from display but keep
them searchable (<a
href="https://redirect.github.com/skim-rs/skim/issues/1122">#1122</a>)</li>
<li>Add bind and unbind actions (<a
href="https://redirect.github.com/skim-rs/skim/issues/1121">#1121</a>)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Kitty keyboard protocol</li>
</ul>
<h3>🤖 CI</h3>
<ul>
<li>Add public-api check (<a
href="https://redirect.github.com/skim-rs/skim/issues/1124">#1124</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/blob/master/CHANGELOG.md">skim's
changelog</a>.</em></p>
<blockquote>
<h2>[5.3.1] - 2026-07-19</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Ignore KeyEventState (<a
href="https://redirect.github.com/skim-rs/skim/issues/1127">#1127</a>)</li>
</ul>
<h2>[5.3.0] - 2026-07-19</h2>
<h3>🚀 Features</h3>
<ul>
<li>Add 'left' and <code>right</code> info display modes (<a
href="https://redirect.github.com/skim-rs/skim/issues/1120">#1120</a>)</li>
<li>Add <code>--hide-nth</code> to hide fields from display but keep
them searchable (<a
href="https://redirect.github.com/skim-rs/skim/issues/1122">#1122</a>)</li>
<li>Add bind and unbind actions (<a
href="https://redirect.github.com/skim-rs/skim/issues/1121">#1121</a>)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Kitty keyboard protocol</li>
</ul>
<h3>🤖 CI</h3>
<ul>
<li>Add public-api check (<a
href="https://redirect.github.com/skim-rs/skim/issues/1124">#1124</a>)</li>
</ul>
<h2>[5.2.0] - 2026-07-17</h2>
<h3>🚀 Features</h3>
<ul>
<li>Collapsed borders by default and <code>--border-no-collapse</code>
flag (<a
href="https://redirect.github.com/skim-rs/skim/issues/1117">#1117</a>)</li>
<li>Reduce binary size by removing uncommon image formats and color_eyre
(<a
href="https://redirect.github.com/skim-rs/skim/issues/1118">#1118</a>)</li>
</ul>
<h2>[5.1.4] - 2026-07-17</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Preserve input order with --no-sort (<a
href="https://redirect.github.com/skim-rs/skim/issues/1115">#1115</a>)</li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/juneboku"><code>@​juneboku</code></a>
made their first contribution in <a
href="https://redirect.github.com/skim-rs/skim/pull/1115">#1115</a></li>
</ul>
<h2>[5.1.3] - 2026-07-16</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Manually resize the Tui when not in fullscreen mode</li>
</ul>
<h3>🤖 CI</h3>
<ul>
<li>Fix fixed viewport resize test in non-interactive env (<a
href="https://redirect.github.com/skim-rs/skim/issues/1114">#1114</a>)</li>
</ul>
<h3>⚙️ Miscellaneous Tasks</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/skim-rs/skim/commit/6dbe37a7fa43f69d906f42b647a5b0221f721bd8"><code>6dbe37a</code></a>
release: v5.3.1 (<a
href="https://redirect.github.com/skim-rs/skim/issues/1128">#1128</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/6f94d80973063e3464ef169afbf27034642cde35"><code>6f94d80</code></a>
fix: ignore KeyEventState (<a
href="https://redirect.github.com/skim-rs/skim/issues/1127">#1127</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/4d093a42e1ebf94c64d7950e2d4817b30089ae05"><code>4d093a4</code></a>
release: v5.3.0 (<a
href="https://redirect.github.com/skim-rs/skim/issues/1123">#1123</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/3c3f26ebc923491031f2728928fd3c18efe46163"><code>3c3f26e</code></a>
fix: kitty keyboard protocol</li>
<li><a
href="https://github.com/skim-rs/skim/commit/ad97bfa7deeee352d743f41ec7cb8bd4b26b4bf6"><code>ad97bfa</code></a>
feat: add bind and unbind actions (<a
href="https://redirect.github.com/skim-rs/skim/issues/1121">#1121</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/ff98133bbd4502633a5b01fcadcadccccef437e0"><code>ff98133</code></a>
ci: add public-api check (<a
href="https://redirect.github.com/skim-rs/skim/issues/1124">#1124</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/dce26d622a7caec4649b2d379c029a64e4fad66e"><code>dce26d6</code></a>
feat: add <code>--hide-nth</code> to hide fields from display but keep
them searchable (...</li>
<li><a
href="https://github.com/skim-rs/skim/commit/55aa7dacd573ccea22f1c3fb655e0a4f91f297a7"><code>55aa7da</code></a>
feat: add 'left' and <code>right</code> info display modes (<a
href="https://redirect.github.com/skim-rs/skim/issues/1120">#1120</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/57a7487323b7f63f28a0e142ba38136b79dca11b"><code>57a7487</code></a>
release: v5.2.0 (<a
href="https://redirect.github.com/skim-rs/skim/issues/1119">#1119</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/bb6c03f3771766a1830e7c48c3abc26af02de97f"><code>bb6c03f</code></a>
feat: reduce binary size by removing uncommon image formats and
color_eyre (#...</li>
<li>Additional commits viewable in <a
href="https://github.com/skim-rs/skim/compare/v5.1.0...v5.3.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=skim&package-manager=cargo&previous-version=5.1.0&new-version=5.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 18:46:06 -07:00
dependabot[bot] 076e09a2e4 chore: bump tokio from 1.52.3 to 1.53.0 (#3525)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.52.3 to 1.53.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.53.0</h2>
<h1>1.53.0 (July 17th, 2026)</h1>
<h3>Added</h3>
<ul>
<li>fs: implement <code>From&lt;OwnedFd&gt;</code> and
<code>From&lt;OwnedHandle&gt;</code> for <code>File</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8266">#8266</a>)</li>
<li>metrics: add task schedule latency metric (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7986">#7986</a>)</li>
<li>net: add <code>SocketAddr</code> methods to Unix sockets (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8144">#8144</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>io: add <code>#[inline]</code> to IO trait impls for in-memory types
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8242">#8242</a>)</li>
<li>net: implement UCred::pid on FreeBSD (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8086">#8086</a>)</li>
<li>net: support Nuttx target os (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8259">#8259</a>)</li>
<li>signal: refactor global variables on Windows (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8231">#8231</a>)</li>
<li>sync: <code>mpsc::{Receiver,UnboundedReceiver}</code> now drops
waker on drop, even if there are still senders (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8095">#8095</a>)</li>
<li>taskdump: support taskdumps on s390x (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8192">#8192</a>)</li>
<li>time: add <code>#[track_caller]</code> to <code>timeout_at()</code>
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8077">#8077</a>)</li>
<li>time: consolidate mutex locks on spurious poll (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8124">#8124</a>)</li>
<li>time: defer waker clone on spurious poll (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8107">#8107</a>)</li>
<li>time: move lazy-registration state into <code>Sleep</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8132">#8132</a>)</li>
<li>tracing: remove unnecessary span clone (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8126">#8126</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>io: do not treat zero-length reads as EOF in <code>Chain</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8251">#8251</a>)</li>
<li>net: use getpeereid for QNX peer credentials (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8270">#8270</a>)</li>
<li>runtime: avoid illegal state in <code>FastRand</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8078">#8078</a>)</li>
<li>sync: wake mpsc receiver when a queued <code>reserve[_many]</code>
returns permits (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8260">#8260</a>)</li>
<li>taskdump: skip double wake on
<code>Trace::capture</code>/<code>Trace::trace_with</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8043">#8043</a>)</li>
<li>time: avoid stack overflow in runtime constructor (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8093">#8093</a>)</li>
<li>time (alt timer): ensure timers stay in the same runtime after
<code>.reset()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8169">#8169</a>)</li>
</ul>
<h3>IO uring (unstable)</h3>
<ul>
<li>fs: use io-uring for <code>fs::try_exists</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8080">#8080</a>)</li>
<li>fs: use io-uring for renaming files (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7800">#7800</a>)</li>
<li>rt: flush io-uring CQE in case of CQE overflow (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8277">#8277</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>docs: clarify cancel safety wording (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8181">#8181</a>)</li>
<li>fs: clarify <code>create_dir_all</code> succeeds if path exists (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8149">#8149</a>)</li>
<li>io: add warning about stdout reordering with multiple handles (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8276">#8276</a>)</li>
<li>net: document pipe <code>try_read*</code>/<code>try_write*</code>
readiness behavior (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8032">#8032</a>)</li>
<li>runtime: document interaction with fork() (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8202">#8202</a>)</li>
<li>sync: clarify broadcast lagging semantics (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8239">#8239</a>)</li>
<li>sync: document memory ordering guarantees for Semaphore (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8119">#8119</a>)</li>
<li>task: explain why <code>yield_now</code> defers its waker (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8254">#8254</a>)</li>
<li>time: add panic docs to <code>timeout_at()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8077">#8077</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tokio-rs/tokio/commit/be689a35f5ade5a39e507f79d3ec85cdab27806f"><code>be689a3</code></a>
chore: prepare Tokio v1.53.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8294">#8294</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/50f76c71ec7203013f7f0cda59deaa9016e93939"><code>50f76c7</code></a>
chore: prepare tokio-macros v2.7.1 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8295">#8295</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/f61fccad3cd598cce743fc511a983364b77af92a"><code>f61fcca</code></a>
Merge 'tokio-1.52.4' into 'master' (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8290">#8290</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/efdba5fcf02c4b93d379114df136b994c3b21445"><code>efdba5f</code></a>
chore: prepare Tokio v1.52.4 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8289">#8289</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/b0ba02e75507518baed6718b0c37105e430f3a93"><code>b0ba02e</code></a>
Merge 'tokio-1.51.4' into 'tokio-1.52.x' (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8288">#8288</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/7bcd2d343d997a658be5bc165520070c997fefbc"><code>7bcd2d3</code></a>
taskdump: remove crate disambiguators from output (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8288">#8288</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/f84b209126a9b0f66dae1025e30e44d217205513"><code>f84b209</code></a>
chore: prepare Tokio v1.51.4 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8286">#8286</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/eacb98e18901fcbe011bfceddbc31853f1bf0c27"><code>eacb98e</code></a>
runtime: don't skip the driver when <code>before_park</code> schedules
work (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8222">#8222</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/5e16ee00faae5b81a58f70b734577b800e0b203b"><code>5e16ee0</code></a>
task: avoid replacing the JoinQueue waker in <code>try_join_next</code>
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8279">#8279</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/88212ab64afd2b2f87deeb073f9eef6aaaad3701"><code>88212ab</code></a>
sync: document memory ordering guarantees for Semaphore (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8119">#8119</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.52.3...tokio-1.53.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio&package-manager=cargo&previous-version=1.52.3&new-version=1.53.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 18:46:04 -07:00
dependabot[bot] 0958a365bb chore: bump the patch group with 6 updates (#3524)
Bumps the patch group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.103` | `1.0.104` |
| [clap](https://github.com/clap-rs/clap) | `4.6.1` | `4.6.2` |
| [serde](https://github.com/serde-rs/serde) | `1.0.228` | `1.0.229` |
| [which](https://github.com/harryfei/which-rs) | `8.0.4` | `8.0.5` |
| [regex](https://github.com/rust-lang/regex) | `1.13.0` | `1.13.1` |
| [ignore](https://github.com/BurntSushi/ripgrep) | `0.4.28` | `0.4.30`
|

Updates `anyhow` from 1.0.103 to 1.0.104
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/anyhow/releases">anyhow's
releases</a>.</em></p>
<blockquote>
<h2>1.0.104</h2>
<ul>
<li>Update <code>syn</code> dev-dependency to version 3</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dtolnay/anyhow/commit/1dbe1862aae650423e3361fbd20b7d17c5109cc3"><code>1dbe186</code></a>
Release 1.0.104</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/f6479f8e5e10761d7fecde0970cff363dc644d92"><code>f6479f8</code></a>
Update to syn 3</li>
<li>See full diff in <a
href="https://github.com/dtolnay/anyhow/compare/1.0.103...1.0.104">compare
view</a></li>
</ul>
</details>
<br />

Updates `clap` from 4.6.1 to 4.6.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.6.2</h2>
<h2>[4.6.2] - 2026-07-15</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Say <code>alias</code> when there is only one</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.6.2] - 2026-07-15</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Say <code>alias</code> when there is only one</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/clap-rs/clap/commit/0fe0be302726f4253b9bee27eed48438c92917aa"><code>0fe0be3</code></a>
chore: Release</li>
<li><a
href="https://github.com/clap-rs/clap/commit/480af9d045453f4ab96d9bdd4d4b9f5aab3c272f"><code>480af9d</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/clap-rs/clap/commit/2b3ddd0294a147d1eda917cb303243bcde0c12ee"><code>2b3ddd0</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6340">#6340</a>
from liskin/fix-completion-escape</li>
<li><a
href="https://github.com/clap-rs/clap/commit/7ffe7399ff032cc247eb0449cf8fcdfbfe55a4ec"><code>7ffe739</code></a>
fix(complete): Do not suggest options after &quot;--&quot;</li>
<li><a
href="https://github.com/clap-rs/clap/commit/d47fc4f8a5e9fcc16d0cae15b51e6eb1a8ed5832"><code>d47fc4f</code></a>
test(complete): Options suggested after escape (<code>--</code>)</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.6.1...clap_complete-v4.6.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `serde` from 1.0.228 to 1.0.229
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.229</h2>
<ul>
<li>Update to syn 3</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/serde-rs/serde/commit/7fc3b4c30c94f73a96ebd1553f2b090d928fc3a8"><code>7fc3b4c</code></a>
Release 1.0.229</li>
<li><a
href="https://github.com/serde-rs/serde/commit/6d6e9a11101354ce769a3438a088b6b9305c1863"><code>6d6e9a1</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/3085">#3085</a>
from dtolnay/syn3</li>
<li><a
href="https://github.com/serde-rs/serde/commit/6dec3b751126c8338cac0fe8085612d695e4ecf3"><code>6dec3b7</code></a>
Update to syn 3</li>
<li><a
href="https://github.com/serde-rs/serde/commit/cfe669241065984177ff63af8b45058e6e9b499d"><code>cfe6692</code></a>
Resolve mut_mut pedantic clippy lint</li>
<li><a
href="https://github.com/serde-rs/serde/commit/1023d077510b4aef36a41ef56fdb7798568a2654"><code>1023d07</code></a>
Update actions/upload-artifact@v6 -&gt; v7</li>
<li><a
href="https://github.com/serde-rs/serde/commit/dd682c2c86aa7629e77c1ccd93212d3729f4c66d"><code>dd682c2</code></a>
Update actions/checkout@v6 -&gt; v7</li>
<li><a
href="https://github.com/serde-rs/serde/commit/5f0f18b9211732f2d82f73b5a43e4f5ff3701251"><code>5f0f18b</code></a>
Update ui test suite to nightly-2026-06-01</li>
<li><a
href="https://github.com/serde-rs/serde/commit/63a1498f0e7be991ffac5939bdd202ca16e9a23f"><code>63a1498</code></a>
Regenerate stderr with trybuild normalization fixes</li>
<li><a
href="https://github.com/serde-rs/serde/commit/fa7da4a93567ed347ad0735c28e439fca688ef26"><code>fa7da4a</code></a>
Fix unused_features warning</li>
<li><a
href="https://github.com/serde-rs/serde/commit/6b1a17851ea3d86a56aa116ca1cbf428f8d5f22d"><code>6b1a178</code></a>
Unpin CI miri toolchain</li>
<li>Additional commits viewable in <a
href="https://github.com/serde-rs/serde/compare/v1.0.228...v1.0.229">compare
view</a></li>
</ul>
</details>
<br />

Updates `which` from 8.0.4 to 8.0.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/harryfei/which-rs/releases">which's
releases</a>.</em></p>
<blockquote>
<h2>8.0.5</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix absolute path lookup when cwd is disabled by <a
href="https://github.com/weifanglab"><code>@​weifanglab</code></a> in <a
href="https://redirect.github.com/harryfei/which-rs/pull/126">harryfei/which-rs#126</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/weifanglab"><code>@​weifanglab</code></a> made
their first contribution in <a
href="https://redirect.github.com/harryfei/which-rs/pull/126">harryfei/which-rs#126</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/harryfei/which-rs/compare/8.0.4...8.0.5">https://github.com/harryfei/which-rs/compare/8.0.4...8.0.5</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/harryfei/which-rs/blob/master/CHANGELOG.md">which's
changelog</a>.</em></p>
<blockquote>
<h2>8.0.5</h2>
<ul>
<li>Bug fix: <a
href="https://redirect.github.com/harryfei/which-rs/pull/126">#126</a>
Do not use current directory for search when provided path is absolute.
Thanks <a
href="https://github.com/weifanglab"><code>@​weifanglab</code></a> for
your contribution to which!</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/harryfei/which-rs/commit/7fba0e04d0674bbe8ccf5bfb4f09b1d00925806f"><code>7fba0e0</code></a>
bump version number, update CHANGELOG.md</li>
<li><a
href="https://github.com/harryfei/which-rs/commit/e28a3bf34e41bcc009b990e6c05b4a6e6b01635f"><code>e28a3bf</code></a>
Fix absolute path lookup when cwd is disabled (<a
href="https://redirect.github.com/harryfei/which-rs/issues/126">#126</a>)</li>
<li>See full diff in <a
href="https://github.com/harryfei/which-rs/compare/8.0.4...8.0.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `regex` from 1.13.0 to 1.13.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/regex/blob/master/CHANGELOG.md">regex's
changelog</a>.</em></p>
<blockquote>
<h1>1.13.1 (2026-07-15)</h1>
<p>This is a release that fixes a bug where incorrect regex match
offsets could be
reported. Note that this doesn't impact whether a match occurs or not,
just
where it occurs. The match offsets are still valid for slicing, they
just may
not refer to the correct leftmost-first match. See
<a
href="https://redirect.github.com/rust-lang/regex/pull/1364">#1364</a>
for (many) more details.</p>
<p>Bug fixes:</p>
<ul>
<li><a
href="https://redirect.github.com/rust-lang/regex/issues/1354">#1354</a>:
Fixes previously unsound reverse suffix and inner optimizations.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rust-lang/regex/commit/2b527599eb9eea0dcc288c704584f242f26a5c61"><code>2b52759</code></a>
1.13.1, redux</li>
<li><a
href="https://github.com/rust-lang/regex/commit/40e98238fff903f3e1ec95bbdb487185dd60504a"><code>40e9823</code></a>
1.13.1</li>
<li><a
href="https://github.com/rust-lang/regex/commit/75fcb962d6ea1c456f6f023c9537a66389413a85"><code>75fcb96</code></a>
changelog: 1.13.1</li>
<li><a
href="https://github.com/rust-lang/regex/commit/64ad0b618e043b791ed5385dd5504a436da1ddae"><code>64ad0b6</code></a>
automata: fix bug in reverse suffix/inner optimization</li>
<li><a
href="https://github.com/rust-lang/regex/commit/fa91c31a4291c9dda6afe19829e6fe2e3bbc2da5"><code>fa91c31</code></a>
automata: fix a bug caught by Codex review</li>
<li><a
href="https://github.com/rust-lang/regex/commit/30390ec3e8889aad830337cdf3a7a01ae195ae73"><code>30390ec</code></a>
automata: formatting tweaks</li>
<li><a
href="https://github.com/rust-lang/regex/commit/821a8eb1ad7860ddc788fe36f495036df63cfc35"><code>821a8eb</code></a>
automata: refactor reverse suffix/inner search slightly</li>
<li><a
href="https://github.com/rust-lang/regex/commit/10afd704d88d00ddfcd10218883a81b3ae5e4831"><code>10afd70</code></a>
automata: expose the extracted literals for inner literal
extraction</li>
<li><a
href="https://github.com/rust-lang/regex/commit/8c34f41d3c5a0e16ce17dfb964587cb48625a8d5"><code>8c34f41</code></a>
automata: avoid reverse suffix optimization for non-leftmost-first</li>
<li><a
href="https://github.com/rust-lang/regex/commit/5524f02430d2d118d5c34fde54136d08376de711"><code>5524f02</code></a>
test: add regression tests for failed reverse suffix/inner
optimizations</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/regex/compare/1.13.0...1.13.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `ignore` from 0.4.28 to 0.4.30
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/227381db0ee83dfa4341f1e27ff9617c0f5ad992"><code>227381d</code></a>
ignore-0.4.30</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/b621e65b4fc8a50b55576b07526f21c5d051ad71"><code>b621e65</code></a>
ignore: add incremental checking</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/c55818fd32d68cf742aea67bce86529f198bc985"><code>c55818f</code></a>
ignore: more pathutil clean-up</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/6e527e9202f85a39ab2c4698636710204eb096e0"><code>6e527e9</code></a>
ignore: add routine for checking if a path is hidden or not</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/626b8951acbced7ff710f4e01624a05f219eec38"><code>626b895</code></a>
ignore: refactor <code>is_hidden</code></li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/0d7054d8e466d6aa0a6bb6cf121e87225d26df44"><code>0d7054d</code></a>
ignore: fix deadlock when visitor panics</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/576005b322c41174bb21d76122b1411e5d983402"><code>576005b</code></a>
grep-searcher-0.1.17</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/432976d69cdff36d5a0d6845b093cf3f67262b43"><code>432976d</code></a>
grep-pcre2-0.1.10</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/41e0ae702bcbd47b093a33ee73f1497aa4ed20d6"><code>41e0ae7</code></a>
grep-matcher-0.1.9</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/40ffc6e0bd990ba6e56702ed1ec519b7ad96a1e7"><code>40ffc6e</code></a>
ignore-0.4.29</li>
<li>Additional commits viewable in <a
href="https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.28...ignore-0.4.30">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-07-21 18:46:01 -07:00
Maximilian Roos fd97aa8bc3 Release v0.68.0 (#3484)
Release v0.68.0. Highlights: on-demand picker preview tabs (#3439),
bare-repo project config read from the object store when the default
branch is checked out nowhere (#3462), shell detection via the process
tree (#3455), and `wt config state` flagging a stale default-branch
cache (#3478). Full details in CHANGELOG.md.

> _This was written by Claude Code on behalf of max_
2026-07-15 16:18:23 -07:00
dependabot[bot] 6895ce23e1 chore: bump the patch group with 4 updates (#3445)
Bumps the patch group with 4 updates:
[crossbeam-channel](https://github.com/crossbeam-rs/crossbeam),
[tree-sitter](https://github.com/tree-sitter/tree-sitter),
[tree-sitter-highlight](https://github.com/tree-sitter/tree-sitter) and
[ignore](https://github.com/BurntSushi/ripgrep).

Updates `crossbeam-channel` from 0.5.15 to 0.5.16
<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.16</h2>
<ul>
<li>Improve support for rust-analyzer auto-completion of code inside
<code>select!</code>/<code>select_biased!</code> macro. (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1240">#1240</a>)</li>
<li>Make <code>never</code> const. (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1250">#1250</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/9b56303b8aa9ff8ec5bbebb9d2da05e034977889"><code>9b56303</code></a>
Prepare for the next release</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/a078b17b7319ab49e53720ebeed8fa8a539a8e18"><code>a078b17</code></a>
ci: Sync config with main</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/508c29d3c27d7e27791244644dae2169a2f1678a"><code>508c29d</code></a>
Remove crossbeam-skiplist which is not published from this branch from
worksp...</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/6a20e57c492da6ba327b587bc5f38c7a4a3067ef"><code>6a20e57</code></a>
tests: Fix mismatched_lifetime_syntaxes</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/c2d674f88af9501a0a939d8d4b0d52bdbc453ef9"><code>c2d674f</code></a>
epoch: Fix rustdoc::invalid_rust_codeblocks</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/bd6563e2118a5f2e9eec0f9e16006d428b82ffb0"><code>bd6563e</code></a>
Update no_atomic.rs</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/d3e1e364093763a40affe7ea3ff8368c7dc25ee9"><code>d3e1e36</code></a>
Make CachePadded&lt;T&gt; have C repr to allow casting to and from T (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1270">#1270</a>)</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/c0c466e5c3b5f177884e1df5f8f2c8c939c31aab"><code>c0c466e</code></a>
channel: Use non-poison Mutex</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/8b3940f1063f2e0795e44d3f5dde973f08e2a50b"><code>8b3940f</code></a>
Add missing word to docs (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1208">#1208</a>)</li>
<li><a
href="https://github.com/crossbeam-rs/crossbeam/commit/df6eec0610f91de504a5834c9faa0de40e3aec83"><code>df6eec0</code></a>
docs: Link <code>select_biased!</code> from <code>select!</code> macro
(<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1202">#1202</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-channel-0.5.15...crossbeam-channel-0.5.16">compare
view</a></li>
</ul>
</details>
<br />

Updates `tree-sitter` from 0.26.10 to 0.26.11
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tree-sitter/tree-sitter/releases">tree-sitter's
releases</a>.</em></p>
<blockquote>
<h2>v0.26.11</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(deps): zig manifest for wasmtime is missing windows hashes by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5720">tree-sitter/tree-sitter#5720</a></li>
<li>fix(xtask): eliminate silent errors in zig fetch by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5724">tree-sitter/tree-sitter#5724</a></li>
<li>fix(query): short-circuit longest-match dedup for disjoint states by
<a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5726">tree-sitter/tree-sitter#5726</a></li>
<li>fix(query): various anchor fixes by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5727">tree-sitter/tree-sitter#5727</a></li>
<li>Fix C++ compilation errors in array macros. by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5735">tree-sitter/tree-sitter#5735</a></li>
<li>fix(rust): address new clippy lints by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5743">tree-sitter/tree-sitter#5743</a></li>
<li>fix(generate): strip non-ASCII case folds by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5744">tree-sitter/tree-sitter#5744</a></li>
<li>fix(ci): re-set executable permission on release artifacts before
zipping by <a href="https://github.com/clason"><code>@​clason</code></a>
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5746">tree-sitter/tree-sitter#5746</a></li>
<li>release v0.26.11 by <a
href="https://github.com/clason"><code>@​clason</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5748">tree-sitter/tree-sitter#5748</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.10...v0.26.11">https://github.com/tree-sitter/tree-sitter/compare/v0.26.10...v0.26.11</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/64402de2857cc197ecc4ca3bc144ea91fda7e72e"><code>64402de</code></a>
release v0.26.11</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/2194ac1a9c9fb8960b8471daade1da07aaeb2b0b"><code>2194ac1</code></a>
fix(ci): re-set executable permission on release artifacts before
zipping</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/a2b8369c4a18373c08a8b7e742fac8b14674eefc"><code>a2b8369</code></a>
fix(generate): strip non-ASCII case folds</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/1ae3cc575388c8429a8991b8c9580946243598a7"><code>1ae3cc5</code></a>
fix(rust): address new clippy lints</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/90dd1a0cfbf6262483a9e5953a35659585129120"><code>90dd1a0</code></a>
fix(templates): generated array macros do not compile with C++</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/fa6222a0d37ecf2bfb4fccd31e857133f3e81930"><code>fa6222a</code></a>
docs(queries): clarify behavior of first child anchor example</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/77b741bb8309d6755797f942bf0ff1a9a74475a4"><code>77b741b</code></a>
docs(queries): specify anchor behavior with quantifiers and groups</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/1c21ff33d688c328a687e37a7f4215136b6e6dc6"><code>1c21ff3</code></a>
fix(query): apply a trailing anchor when its optional node is
skipped</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/5756ced350638708becc00d7ccb2e8d171b4feae"><code>5756ced</code></a>
fix(query): make an anchor after a zero-matched quantifier vacuous</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/eca86a7a6c77c0a7124a59be712661256e361cbd"><code>eca86a7</code></a>
fix(query): forbid an anchor at the end of a group</li>
<li>Additional commits viewable in <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.10...v0.26.11">compare
view</a></li>
</ul>
</details>
<br />

Updates `tree-sitter-highlight` from 0.26.10 to 0.26.11
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tree-sitter/tree-sitter/releases">tree-sitter-highlight's
releases</a>.</em></p>
<blockquote>
<h2>v0.26.11</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(deps): zig manifest for wasmtime is missing windows hashes by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5720">tree-sitter/tree-sitter#5720</a></li>
<li>fix(xtask): eliminate silent errors in zig fetch by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5724">tree-sitter/tree-sitter#5724</a></li>
<li>fix(query): short-circuit longest-match dedup for disjoint states by
<a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5726">tree-sitter/tree-sitter#5726</a></li>
<li>fix(query): various anchor fixes by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5727">tree-sitter/tree-sitter#5727</a></li>
<li>Fix C++ compilation errors in array macros. by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5735">tree-sitter/tree-sitter#5735</a></li>
<li>fix(rust): address new clippy lints by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5743">tree-sitter/tree-sitter#5743</a></li>
<li>fix(generate): strip non-ASCII case folds by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5744">tree-sitter/tree-sitter#5744</a></li>
<li>fix(ci): re-set executable permission on release artifacts before
zipping by <a href="https://github.com/clason"><code>@​clason</code></a>
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5746">tree-sitter/tree-sitter#5746</a></li>
<li>release v0.26.11 by <a
href="https://github.com/clason"><code>@​clason</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5748">tree-sitter/tree-sitter#5748</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.10...v0.26.11">https://github.com/tree-sitter/tree-sitter/compare/v0.26.10...v0.26.11</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/64402de2857cc197ecc4ca3bc144ea91fda7e72e"><code>64402de</code></a>
release v0.26.11</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/2194ac1a9c9fb8960b8471daade1da07aaeb2b0b"><code>2194ac1</code></a>
fix(ci): re-set executable permission on release artifacts before
zipping</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/a2b8369c4a18373c08a8b7e742fac8b14674eefc"><code>a2b8369</code></a>
fix(generate): strip non-ASCII case folds</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/1ae3cc575388c8429a8991b8c9580946243598a7"><code>1ae3cc5</code></a>
fix(rust): address new clippy lints</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/90dd1a0cfbf6262483a9e5953a35659585129120"><code>90dd1a0</code></a>
fix(templates): generated array macros do not compile with C++</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/fa6222a0d37ecf2bfb4fccd31e857133f3e81930"><code>fa6222a</code></a>
docs(queries): clarify behavior of first child anchor example</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/77b741bb8309d6755797f942bf0ff1a9a74475a4"><code>77b741b</code></a>
docs(queries): specify anchor behavior with quantifiers and groups</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/1c21ff33d688c328a687e37a7f4215136b6e6dc6"><code>1c21ff3</code></a>
fix(query): apply a trailing anchor when its optional node is
skipped</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/5756ced350638708becc00d7ccb2e8d171b4feae"><code>5756ced</code></a>
fix(query): make an anchor after a zero-matched quantifier vacuous</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/eca86a7a6c77c0a7124a59be712661256e361cbd"><code>eca86a7</code></a>
fix(query): forbid an anchor at the end of a group</li>
<li>Additional commits viewable in <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.10...v0.26.11">compare
view</a></li>
</ul>
</details>
<br />

Updates `ignore` from 0.4.27 to 0.4.28
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/324f7efe5ce92da0c938291fb69a8027cc2b12a8"><code>324f7ef</code></a>
ignore-0.4.28</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/241b87b3377136659ef0f57948b8e0739e9a691b"><code>241b87b</code></a>
ignore: support <code>GIT_CONFIG_GLOBAL</code> and
<code>GIT_CONFIG_SYSTEM</code> for `core.exclude...</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/b6849daee84a67b42b0844b2f6a91e47c24705b1"><code>b6849da</code></a>
ignore/walk: add <code>WalkBuilder::empty</code> and
<code>WalkBuilder::from_iter</code></li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/8bca2ebfed844bcbbb649a836783c08da110f2e9"><code>8bca2eb</code></a>
doc: fix typo in man page</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/61a9fd82294c155ca00febc948d8d23c9b678367"><code>61a9fd8</code></a>
doc: fix typo</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/e7b0f89e81811b295446404f02ca133fe8434054"><code>e7b0f89</code></a>
lint: use <code>cloned()</code> or <code>copied()</code> when we
can</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/767086db4ccb6abc3e4ce5125da614ea62f7346b"><code>767086d</code></a>
searcher: hint at sequential memory map reading</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/9548e86b14f1aa853911239f439e27a20c10fb69"><code>9548e86</code></a>
ignore/types: add PKGBUILD type</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/bc3ad92b345eeddc48afff3194a5e2385e3d6a3b"><code>bc3ad92</code></a>
ignore/types: add Rocq <code>.v</code> files</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/93acfe2d47d46bc2f92a78f1e64098ad0a7b34b5"><code>93acfe2</code></a>
ignore/types: add <code>proto</code> for filtering to protobuf
files</li>
<li>Additional commits viewable in <a
href="https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.27...ignore-0.4.28">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-07-13 16:01:47 -07:00
dependabot[bot] 70c9b40b1f chore: bump skim from 5.0.0 to 5.1.0 (#3446)
Bumps [skim](https://github.com/skim-rs/skim) from 5.0.0 to 5.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/releases">skim's
releases</a>.</em></p>
<blockquote>
<h2>5.1.0 - 2026-07-09</h2>
<h2>Release Notes</h2>
<h3>🚀 Features</h3>
<ul>
<li>Bump frizbee to 0.10.0, thread local matcher (<a
href="https://redirect.github.com/skim-rs/skim/issues/1105">#1105</a>)</li>
<li>Add cargo-fuzz targets for hand-rolled text parsers (<a
href="https://redirect.github.com/skim-rs/skim/issues/1106">#1106</a>)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Less restrictive max pattern in ari matcher</li>
<li>Unknown border values fallback to plain (closes <a
href="https://redirect.github.com/skim-rs/skim/issues/1107">#1107</a>)</li>
</ul>
<h3>🧪 Testing</h3>
<ul>
<li>Fix arinae max pat len test after constant update</li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/saghen"><code>@​saghen</code></a> made
their first contribution in <a
href="https://redirect.github.com/skim-rs/skim/pull/1105">#1105</a></li>
</ul>
<h2>Install skim 5.1.0</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-installer.ps1
| iex&quot;
</code></pre>
<h2>Download skim 5.1.0</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Platform</th>
<th>Checksum</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-aarch64-apple-darwin.tar.xz">skim-aarch64-apple-darwin.tar.xz</a></td>
<td>Apple Silicon macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-aarch64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-apple-darwin.tar.xz">skim-x86_64-apple-darwin.tar.xz</a></td>
<td>Intel macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-pc-windows-msvc.zip">skim-x86_64-pc-windows-msvc.zip</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-pc-windows-msvc.msi">skim-x86_64-pc-windows-msvc.msi</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-pc-windows-msvc.msi.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-aarch64-unknown-linux-gnu.tar.xz">skim-aarch64-unknown-linux-gnu.tar.xz</a></td>
<td>ARM64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-aarch64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-unknown-linux-gnu.tar.xz">skim-x86_64-unknown-linux-gnu.tar.xz</a></td>
<td>x64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-aarch64-unknown-linux-musl.tar.xz">skim-aarch64-unknown-linux-musl.tar.xz</a></td>
<td>ARM64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-aarch64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-unknown-linux-musl.tar.xz">skim-x86_64-unknown-linux-musl.tar.xz</a></td>
<td>x64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v5.1.0/skim-x86_64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/blob/master/CHANGELOG.md">skim's
changelog</a>.</em></p>
<blockquote>
<h2>[5.1.0] - 2026-07-09</h2>
<h3>🚀 Features</h3>
<ul>
<li>Bump frizbee to 0.10.0, thread local matcher (<a
href="https://redirect.github.com/skim-rs/skim/issues/1105">#1105</a>)</li>
<li>Add cargo-fuzz targets for hand-rolled text parsers (<a
href="https://redirect.github.com/skim-rs/skim/issues/1106">#1106</a>)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Less restrictive max pattern in ari matcher</li>
<li>Unknown border values fallback to plain (closes <a
href="https://redirect.github.com/skim-rs/skim/issues/1107">#1107</a>)</li>
</ul>
<h3>🧪 Testing</h3>
<ul>
<li>Fix arinae max pat len test after constant update</li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/saghen"><code>@​saghen</code></a> made
their first contribution in <a
href="https://redirect.github.com/skim-rs/skim/pull/1105">#1105</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/skim-rs/skim/commit/c4bc5e1be48367a7fec8a90b0e2550635eed7f3d"><code>c4bc5e1</code></a>
release: v5.1.0</li>
<li><a
href="https://github.com/skim-rs/skim/commit/ef593397276298af6ad95bdbf2fa9d4a220d991f"><code>ef59339</code></a>
fix: unknown border values fallback to plain (closes <a
href="https://redirect.github.com/skim-rs/skim/issues/1107">#1107</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/1effd9a69d30b1aa5e55dc3aaf8c43ac1101010e"><code>1effd9a</code></a>
test: fix arinae max pat len test after constant update</li>
<li><a
href="https://github.com/skim-rs/skim/commit/0a4d4b2ea040c4435ac206bd15461ad49a8c98af"><code>0a4d4b2</code></a>
fix: less restrictive max pattern in ari matcher</li>
<li><a
href="https://github.com/skim-rs/skim/commit/026a622a9d12c23379442857bf8e98c85c6e4926"><code>026a622</code></a>
feat: add cargo-fuzz targets for hand-rolled text parsers (<a
href="https://redirect.github.com/skim-rs/skim/issues/1106">#1106</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/8a1f2783a864e1e993ec3a59149f1b3f2ee6bd5b"><code>8a1f278</code></a>
feat: bump frizbee to 0.10.0, thread local matcher (<a
href="https://redirect.github.com/skim-rs/skim/issues/1105">#1105</a>)</li>
<li>See full diff in <a
href="https://github.com/skim-rs/skim/compare/v5.0.0...v5.1.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=skim&package-manager=cargo&previous-version=5.0.0&new-version=5.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 16:01:43 -07:00
dependabot[bot] f679b6511f chore: bump open from 5.3.6 to 5.4.0 (#3447)
Bumps [open](https://github.com/Byron/open-rs) from 5.3.6 to 5.4.0.
<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.0</h2>
<h3>New Features</h3>
<ul>
<li><code>cargo run</code> now shows the exact commands that were tried
when opening.
This is useful for debugging, mainly.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>Align WSL PowerShell invocation with Windows
Pass the WSL open target to PowerShell through the OPEN_RS_TARGET
environment variable instead of embedding it in the command string and
escaping it as a single-quoted PowerShell value.</p>
<p>This matches the safer invocation already used by the native Windows
backend. Keeping the PowerShell program fixed ensures that paths and
URLs
are treated purely as data, even when they contain quotes, semicolons,
or
other PowerShell metacharacters. It also removes the need for custom
PowerShell quoting and avoids converting the target through
to_string_lossy() during command construction.</p>
<p>Add -NonInteractive for consistency with the Windows launcher and
update
the WSL tests to verify both the fixed command and the unchanged
environment-variable value.</p>
</li>
<li>
<p>prevent launcher option and shell injection
Opening an attacker-controlled dash-leading path could be interpreted as
launcher options. On Windows, cmd /c start also parsed embedded quotes
and
metacharacters as command language, while the legacy gnome-open fallback
could load a module even after a double-dash separator.</p>
<p>Add command-construction regressions for malicious option-shaped
paths and
Windows shell metacharacters. Use supported separators on macOS and KDE,
and
rewrite dash-leading relative paths for launchers without separator
support.
Keep Windows values out of shell syntax by passing the default target
through
the environment and invoking custom applications directly, with
explorer.exe
as a PowerShell-free fallback.</p>
<p>Exclude cmd-based opening by default, while providing an
explicit insecure Cargo feature for users who need compatibility it
and accept their unsafe handling of untrusted input.</p>
<p>Validated with default and all-feature cargo tests, clippy, and
cross-target
cargo check --tests for aarch64 Linux and Windows.</p>
</li>
</ul>
<h3>Commit Statistics</h3>
<ul>
<li>5 commits contributed to the release.</li>
<li>3 commits were 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/124">#124</a></li>
</ul>
<h3>Commit Details</h3>
<!-- 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.0 (2026-07-12)</h2>
<h3>New Features</h3>
<ul>
<li><!-- raw HTML omitted --> <code>cargo run</code> now shows the exact
commands that were tried when opening.
This is useful for debugging, mainly.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p><!-- raw HTML omitted --> Align WSL PowerShell invocation with
Windows
Pass the WSL open target to PowerShell through the OPEN_RS_TARGET
environment variable instead of embedding it in the command string and
escaping it as a single-quoted PowerShell value.</p>
<p>This matches the safer invocation already used by the native Windows
backend. Keeping the PowerShell program fixed ensures that paths and
URLs
are treated purely as data, even when they contain quotes, semicolons,
or
other PowerShell metacharacters. It also removes the need for custom
PowerShell quoting and avoids converting the target through
to_string_lossy() during command construction.</p>
<p>Add -NonInteractive for consistency with the Windows launcher and
update
the WSL tests to verify both the fixed command and the unchanged
environment-variable value.</p>
</li>
<li>
<p><!-- raw HTML omitted --> prevent launcher option and shell injection
Opening an attacker-controlled dash-leading path could be interpreted as
launcher options. On Windows, cmd /c start also parsed embedded quotes
and
metacharacters as command language, while the legacy gnome-open fallback
could load a module even after a double-dash separator.</p>
<p>Add command-construction regressions for malicious option-shaped
paths and
Windows shell metacharacters. Use supported separators on macOS and KDE,
and
rewrite dash-leading relative paths for launchers without separator
support.
Keep Windows values out of shell syntax by passing the default target
through
the environment and invoking custom applications directly, with
explorer.exe
as a PowerShell-free fallback.</p>
<p>Exclude cmd-based opening by default, while providing an
explicit insecure Cargo feature for users who need compatibility it
and accept their unsafe handling of untrusted input.</p>
<p>Validated with default and all-feature cargo tests, clippy, and
cross-target
cargo check --tests for aarch64 Linux and Windows.</p>
</li>
</ul>
<h3>Commit Statistics</h3>
<!-- raw HTML omitted -->
<ul>
<li>5 commits contributed to the release.</li>
<li>3 commits were understood as <a
href="https://www.conventionalcommits.org">conventional</a>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Byron/open-rs/commit/b5c12bd9207a02272570252071d601a5dc44a3c6"><code>b5c12bd</code></a>
Release open v5.4.0</li>
<li><a
href="https://github.com/Byron/open-rs/commit/bdc33978cdbfa1defef31e23659af4ba4a8913b0"><code>bdc3397</code></a>
Merge pull request <a
href="https://redirect.github.com/Byron/open-rs/issues/126">#126</a>
from Byron/fix-wsl</li>
<li><a
href="https://github.com/Byron/open-rs/commit/7265cae8c19180c1022d8b1a7fbec815d0264909"><code>7265cae</code></a>
fix: Align WSL PowerShell invocation with Windows</li>
<li><a
href="https://github.com/Byron/open-rs/commit/407b05879efb2b33c4e51fa15d77b49fa748a241"><code>407b058</code></a>
Merge pull request <a
href="https://redirect.github.com/Byron/open-rs/issues/125">#125</a>
from Byron/open-with-dash-dash</li>
<li><a
href="https://github.com/Byron/open-rs/commit/fd29861355bfb981aecdb94d0915f4e41c2686ee"><code>fd29861</code></a>
fix: prevent launcher option and shell injection (<a
href="https://redirect.github.com/Byron/open-rs/issues/124">#124</a>)</li>
<li><a
href="https://github.com/Byron/open-rs/commit/7c19c0a1a810326b9a9e7542a0992d80adf0a365"><code>7c19c0a</code></a>
feat: <code>cargo run</code> now shows the exact commands that were
tried when opening.</li>
<li>See full diff in <a
href="https://github.com/Byron/open-rs/compare/v5.3.6...v5.4.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=open&package-manager=cargo&previous-version=5.3.6&new-version=5.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 16:01:41 -07:00
dependabot[bot] 1ff647bdd6 chore: bump regex from 1.12.4 to 1.13.0 (#3448)
Bumps [regex](https://github.com/rust-lang/regex) from 1.12.4 to 1.13.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/regex/blob/master/CHANGELOG.md">regex's
changelog</a>.</em></p>
<blockquote>
<h1>1.13.0 (2026-07-09)</h1>
<p>This release includes a new API, a <code>regex!</code> macro, for
lazy compilation of
a regex from a string literal. If you use regexes a lot, it's likely
you've
already written one exactly like it. The new macro can be used like
this:</p>
<pre lang="rust"><code>use regex::regex;
<p>fn is_match(line: &amp;str) -&gt; bool {<br />
// The regex will be compiled approximately once and reused
automatically.<br />
// This avoids the footgun of using <code>Regex::new</code> here, which
would<br />
// guarantee that it would be compiled every time this routine is
called.<br />
// This would likely make this routine much slower than it needs to
be.<br />
regex!(r&quot;bar|baz&quot;).is_match(line)<br />
}</p>
<p>let hay = &quot;<br />
path/to/foo:54:Blue Harvest<br />
path/to/bar:90:Something, Something, Something, Dark Side<br />
path/to/baz:3:It's a Trap!<br />
&quot;;</p>
<p>let matches = hay.lines().filter(|line| is_match(line)).count();<br
/>
assert_eq!(matches, 2);<br />
</code></pre></p>
<p>Improvements:</p>
<ul>
<li><a
href="https://redirect.github.com/rust-lang/regex/issues/709">#709</a>:
Add a new <code>regex!</code> macro for efficient and automatic reuse of
a compiled regex.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rust-lang/regex/commit/926af2e68eca3ce089815790541cf50759ba2c59"><code>926af2e</code></a>
1.13.0</li>
<li><a
href="https://github.com/rust-lang/regex/commit/7d941a93561430cd259bb9ceb84cc66f33ae7be8"><code>7d941a9</code></a>
regex-automata-0.4.15</li>
<li><a
href="https://github.com/rust-lang/regex/commit/e358341229ebd5feb9a78d8cc85b459c3c7b6600"><code>e358341</code></a>
api: add <code>regex!</code> macro for lazy compilation</li>
<li><a
href="https://github.com/rust-lang/regex/commit/c42033379c8760105ef90287f319de73d1572242"><code>c420333</code></a>
automata: disable miri on a couple doc tests</li>
<li><a
href="https://github.com/rust-lang/regex/commit/b9d2cf724f89754ea879b6c223d2292c4d3e2dd3"><code>b9d2cf7</code></a>
github: add FUNDING link</li>
<li><a
href="https://github.com/rust-lang/regex/commit/0858006b1460ba781deda54b8d2b01b3f9f949f7"><code>0858006</code></a>
docs: add AI policy for contributors</li>
<li><a
href="https://github.com/rust-lang/regex/commit/468fc64ecd6493caaca40dbe8319c31c5c08a83d"><code>468fc64</code></a>
automata: reject dense DFA start states that are match states</li>
<li>See full diff in <a
href="https://github.com/rust-lang/regex/compare/1.12.4...1.13.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=regex&package-manager=cargo&previous-version=1.12.4&new-version=1.13.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-13 16:01:38 -07:00
Worktrunk Bot c3c07a4e5b chore(deps): bump termimad to 0.35.1, drop ragged-table panic workaround (#3422)
Follow-up to #3408, as promised in that thread: [@Canop published
termimad
0.35.1](https://github.com/max-sixty/worktrunk/pull/3408#issuecomment-4945043938)
with the fix for the ragged-table panic
([Canop/termimad#77](https://github.com/Canop/termimad/issues/77)). This
bumps to it and drops the `catch_unwind` workaround.

## What changed

- **`termimad` 0.34.1 → 0.35.1** (pulls transitive `minimad` 0.14 →
0.16).
- **Removed the `catch_unwind` guard** in `render_table_with_termimad` —
the only panic reachable through this path was the `Table::fix_columns`
out-of-bounds on a ragged narrow table, now fixed upstream. (The
broken-pipe panics termimad has had historically live in `print_text`,
an I/O path we don't use — we call `MadSkin::text`, which returns a
`String`.)
- **Regression test kept**, repurposed:
`test_render_table_ragged_narrow_does_not_panic` now guards against
reintroducing the panic via a downgrade rather than asserting the
plain-text fallback.

## Verification

Ran the original reproducer against a clean `termimad = "=0.35.1"`
scratch crate across the full width band — all render, none panic
(16/20/24 previously panicked):

```
width   8: ok    width  20: ok    width  60: ok
width  12: ok    width  24: ok    width 200: ok
width  16: ok    width  30: ok
width  40: ok
```

`md_help` suite (26), picker unit tests (226), and the integration
`test_help` / `test_docs_are_in_sync` snapshots (48) all pass. `cargo
clippy` clean.

## One rendering note

`minimad` 0.16 no longer treats a **single-dash** delimiter row (`| - |
- |`) as a table separator — it renders as cell content. Worktrunk only
ever emits **multi-dash** (`---`) separators (`render_data_table` builds
`| --- | ... |`, and every hand-authored help table uses `-----`), so
real help/list output is byte-for-byte unchanged — the help/docs
snapshot tests didn't move. The one test that used a single-dash input
was artificial; I switched it to the canonical `---` form.

<details><summary>Defense-in-depth tradeoff — your call</summary>

Dropping `catch_unwind` removes a general safety net around rendering
untrusted PR-comment markdown on a rayon worker (where an escaped panic
aborts the whole process). I removed it because (a) the only reachable
panic class here is fixed, and (b) keeping it would leave the fallback
branch untestable and uncovered — no input triggers it anymore, which
trips the coverage gate. If you'd rather retain the guard as
belt-and-suspenders against a future termimad regression, say the word
and I'll restore it with a `#[cfg]`-gated or otherwise coverage-exempt
shape.

</details>

---------

Co-authored-by: worktrunk-bot <254187624+worktrunk-bot@users.noreply.github.com>
2026-07-11 19:56:32 -07:00
Maximilian Roos abf9155546 Release v0.67.0 (#3416)
Release v0.67.0: version bump and changelog.

Highlights since v0.66.0: experimental `wt remove --reap` (#3396), `wt
switch -x` opening the picker (#3394), the termimad panic containment in
the picker's PR-comments preview (#3408), the `wt config show` SIGTTOU
fix (#3327), the `GIT_*` discovery-var scrub for `wt step for-each` and
the `--execute` fallback (#3400), and the `wt list` prompt-reserve fix
(#3409).

Seven commits landed on `main` after the initial cut; `origin/main` is
merged back in and the two user-facing ones (#3394, #3411) plus the BY
CONTEXT profile table (#3403) are folded into the changelog.

Pre-release validation: local pre-merge gate green on the merged tree
(4389 tests); nightly cross-platform suite green on the initial cut
([run
29086956095](https://github.com/max-sixty/worktrunk/actions/runs/29086956095)),
with the seven post-cut commits each validated by their own PR CI;
`cargo semver-checks` reports no breaking changes; data-loss surface
review of the cumulative diff (including the drift commits) found one
new destructive capability (`--reap`, explicit opt-in, adjudicated
acceptable).

> _This was written by Claude Code on behalf of max_
2026-07-10 06:10:26 -07:00
Maximilian Roos 18d2bef84b refactor(perf): canonicalize the benchmark / wt-perf system (#3403)
Implements the design proposal from this branch's first commit
(b22aced85, `design/simplify-bench-perf.md` — reviewable there; dropped
from the merge candidate per the `design/` convention). The perf
tooling's emission side was already canonical; this consolidates the
consumption side around one split: capture/harness work in `wt-perf`,
analysis in `worktrunk::trace` with `wt config state logs profile` as
its one CLI surface.

The seven design items:

1. **`wt-perf cache-check` deleted** — its output was the `cache` field
of `logs profile --format=json`. The tend statusline recipe now uses
`logs profile` (its old pipe also fed human-format stderr into a JSON
parser, so it's now correct as well as canonical).
2. **Timeline renderer moved into `worktrunk::trace`**
(`src/trace/timeline.rs`), sharing
`command_label`/`render_table`/`fmt_dur` with the profile so the two
views can't drift (they already had); drops wt-perf's `tabwriter` and
`insta` deps. Durations now render in the profile's fixed-point format.
3. **`Profile.by_context`** (BY CONTEXT table + JSON array):
per-worktree subprocess totals, the one analysis that previously
required trace_processor SQL. The SQL sections in `benches/CLAUDE.md`
and the `trace` module docs are replaced by a `logs profile` pointer;
Perfetto stays for visual critical-path work.
4. **One warm/cold bench runner** (`wt_perf::bench_wt`) owns the
`BatchSize::PerIteration` rationale once, replacing five inline copies.
All runs now assert child exit status (`benches/list.rs` previously
ignored it).
5. **Bench matrix pruned**: `real_repo` keeps only the 8-worktree
variants (scaling shape stays on synthetic `worktree_scaling`),
`cow_copy` deleted (benchmarked a hand-written serial copy against
production rayon — a settled choice), `remove_e2e/first_output` deleted
(duplicate of `first_output/remove`). Ends three gist series with this
PR as the single discontinuity point; saves roughly 15–20 min of the
~80-min daily bench run.
6. **wt-perf CLI tests moved in-package** (native
`CARGO_BIN_EXE_wt-perf`): the dummy `builds.rs` is gone and the nextest
setup script builds only `mock-stub`. Note `cargo test --test
integration` no longer runs these four tests; full-workspace runs still
do.
7. **`parse_config` returns a `SetupConfig` enum** covering `mixed-W-B`;
the two fixture builders share `init_bench_repo`.

**Merge with main (#3401):** the new prune benches and fixtures landed
mid-flight in exactly these files; the resolution routes them through
the consolidated API — `prune-M-U` is a `SetupConfig::Prune` variant,
the pair parsing is one shared `parse_pair`, and `prune-real` keeps its
own cache-managed path (no `--path`, self-repairing). `benches/prune.rs`
keeps its custom `iter_batched` arms deliberately: every variant asserts
the candidate count from stdout, which `bench_wt`'s shape doesn't
express — the exact carve-out the cache-handling docs describe.

Two review passes (correctness + subtraction) then folded in:
`CacheReport` trimmed to its same-context fields (the dropped six
duplicated `Profile` fields or counted cross-context noise the text
report never showed), `render_table` pads by display width (replacing an
ASCII-only invariant the new BY CONTEXT table violated), the timeline's
instant-event row gained test coverage, and Chrome args dropped the
redundant `duration_ms`.

**Decisions surfaced, not taken** (from the review passes): (a) `wt-perf
setup` could become `--persist`-only, dropping the interactive
Enter-to-cleanup path — a UX preference; (b) whether the daily benchmark
cron's gist time series justifies its remaining ~60 min/day is a
cost/value call. Also deferred: measuring whether `skeleton/cold` adds
signal over `skeleton/warm` before cutting it.

Gate green throughout (4374 tests); `clippy --features
shell-integration-tests` clean; `setup`/`timeline` (warm, cold,
chrome)/`logs profile` (text + JSON)/`trace` all driven end-to-end on a
scratch `mixed-4-8` repo.

> _This was written by Claude Code on behalf of max_

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 03:44:18 -07:00
dependabot[bot] 9f552bbae7 chore: bump skim from 4.10.0 to 5.0.0 (#3378) 2026-07-08 02:16:44 -07:00
Maximilian Roos 696fdc3bc7 Release v0.66.0 (#3385)
Release v0.66.0 — minor bump (semver-checks: `ListConfig` gained a pub
field, so patch is disallowed pre-1.0).

## Changes since v0.65.0

### Improved
- **Opt-in JSON schema 2 for `wt list`** behind the `[list] json-schema`
config key ([#3357](https://github.com/max-sixty/worktrunk/pull/3357))
- **`wt config approvals list` and `clear --stale`**
([#3380](https://github.com/max-sixty/worktrunk/pull/3380))

### Fixed
- **User hooks no longer inherit `wt`'s `GIT_*` discovery vars**
([#3374](https://github.com/max-sixty/worktrunk/pull/3374), thanks
@silvanshade for reporting) — this entry also moves from the 0.65.0
CHANGELOG section (where #3374 misfiled it post-release) into 0.66.0,
which ships it.

### Documentation
- **`/wt-switch-create` always creates a worktree**
([#3356](https://github.com/max-sixty/worktrunk/pull/3356))

## Release validation
- Local pre-merge gate: 4,357 tests green
- Nightly cross-platform run on the cut-from tip (9edf0aa6b): all 12
jobs green
([run](https://github.com/max-sixty/worktrunk/actions/runs/28842962865))
- Data-loss surface review: four independent finders, three candidates
adjudicated acceptable, signed off
- Changelog entries verified against the actual diffs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

> _This was written by Claude Code on behalf of Maximilian Roos_
2026-07-07 20:38:18 -07:00
dependabot[bot] d90d148e73 chore: bump humantime from 2.3.0 to 2.4.0 (#3377)
Bumps [humantime](https://github.com/chronotope/humantime) from 2.3.0 to
2.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/chronotope/humantime/releases">humantime's
releases</a>.</em></p>
<blockquote>
<h2>2.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: allow creating Duration in const context by <a
href="https://github.com/ctron"><code>@​ctron</code></a> in <a
href="https://redirect.github.com/chronotope/humantime/pull/70">chronotope/humantime#70</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chronotope/humantime/commit/fc092817fa8689298eaac28ff49bd8bede4ff605"><code>fc09281</code></a>
chore: prepare release 2.4.0</li>
<li><a
href="https://github.com/chronotope/humantime/commit/8a022cce55a07da2be81721e7deaa5bd071add72"><code>8a022cc</code></a>
feat: allow creating Duration in const context</li>
<li><a
href="https://github.com/chronotope/humantime/commit/27a4f77519a436f4137d1c50ff2f3eb559292cfd"><code>27a4f77</code></a>
Explicitly set rust-version to 1.60</li>
<li><a
href="https://github.com/chronotope/humantime/commit/acc3c19658ecae06cf35467dfe03392a67dbf2b1"><code>acc3c19</code></a>
ci: upgrade to actions/checkout v7</li>
<li><a
href="https://github.com/chronotope/humantime/commit/3acf96bb886ebd16f9e2e8a37d7229e4bd30dd17"><code>3acf96b</code></a>
ci: fix workflow formatting</li>
<li>See full diff in <a
href="https://github.com/chronotope/humantime/compare/v2.3.0...v2.4.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=humantime&package-manager=cargo&previous-version=2.3.0&new-version=2.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-06 19:41:46 -07:00
dependabot[bot] 828aebdee7 chore: bump the patch group with 2 updates (#3376)
Bumps the patch group with 2 updates:
[clap_complete](https://github.com/clap-rs/clap) and
[ignore](https://github.com/BurntSushi/ripgrep).

Updates `clap_complete` from 4.6.5 to 4.6.7
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/clap-rs/clap/commit/d3e59a9ab214910b9dad02921b7ef42c6400de9b"><code>d3e59a9</code></a>
chore: Release</li>
<li><a
href="https://github.com/clap-rs/clap/commit/d997f878c484e02b2935d32a7b67afe990e91227"><code>d997f87</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/clap-rs/clap/commit/fb6058cc38cf6f4b07b8db89c850fc80e059e222"><code>fb6058c</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6409">#6409</a>
from heaths/pwsh-support</li>
<li><a
href="https://github.com/clap-rs/clap/commit/2310870f7a9fe4c39f5bb5620261a06ac9aaa0b1"><code>2310870</code></a>
test(complete): Add tests for completer_for_path</li>
<li><a
href="https://github.com/clap-rs/clap/commit/5967c17393a09f90112cdc5b2c20a1383f0bd8e4"><code>5967c17</code></a>
refactor(complete): Move shell detection to Shells</li>
<li><a
href="https://github.com/clap-rs/clap/commit/594602bb29f374e49da5029df63e5c740c723ad0"><code>594602b</code></a>
fix(complete): Detect pwsh for PowerShell</li>
<li><a
href="https://github.com/clap-rs/clap/commit/3a4f2d031b5110aaaac40f1cb1d6c0b8ff619df8"><code>3a4f2d0</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6427">#6427</a>
from clap-rs/renovate/shlex-2.x</li>
<li><a
href="https://github.com/clap-rs/clap/commit/67ebaed4ac95a83d5d7cc22d64ee0fc162ae1db3"><code>67ebaed</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6426">#6426</a>
from clap-rs/renovate/actions-checkout-7.x</li>
<li><a
href="https://github.com/clap-rs/clap/commit/c968b136d0e6f560c08b06a844a20f2798a00096"><code>c968b13</code></a>
chore(deps): Update Rust crate shlex to v2</li>
<li><a
href="https://github.com/clap-rs/clap/commit/8f247cbf58c582a755ee4dbe62a2390d93b9f8eb"><code>8f247cb</code></a>
chore(deps): Update actions/checkout action to v7</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.6.5...clap_complete-v4.6.7">compare
view</a></li>
</ul>
</details>
<br />

Updates `ignore` from 0.4.26 to 0.4.27
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/48b0c795f4feb37343b2832d991c5c6a3900c08a"><code>48b0c79</code></a>
ignore-0.4.27</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/c10f151e4436da7c37d34359cdfe10d6f5aa0bb4"><code>c10f151</code></a>
ignore: always include depth in errors</li>
<li><a
href="https://github.com/BurntSushi/ripgrep/commit/dfe4a81d2591daca76d25ae4e052c34b26578155"><code>dfe4a81</code></a>
ignore/types: add Hurl</li>
<li>See full diff in <a
href="https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.26...ignore-0.4.27">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-07-06 19:41:44 -07:00
Maximilian Roos 5175153b39 Release v0.65.0 (#3351)
Release v0.65.0. Version bump plus the 0.65.0 changelog section.

**User-facing changes in this release:**

- **Picker `alt-x` flashes why a worktree wasn't removed** (#3336,
#3350) — the keep/failure reason now appears in the picker header
instead of only draining to stderr on exit.
- **`-vv` diagnostics consolidate on `diagnostic.md`, led by the
performance profile** (#3329). This entry's bullet was previously
misfiled under the already-released `0.63.0` section (the PR merged
after `0.64.0` was tagged); this release moves it into `0.65.0`, where
the change actually ships, and drops a misleading "removed
`profile.txt`" clause for a file that never existed.
- **`wt remove` preserves your subdirectory position** (#3344, closes
#3343, thanks @caillou for reporting).

**Also included:** a fix to the release skill's reporter-finding grep —
`sort -un` on `#`-prefixed lines collapsed the whole issue-reference
list to a single entry (every line sorts as numeric 0), which nearly
dropped @caillou's credit. Now sorts on the numeric field after `#`.

The nightly cross-platform suite (full-tests linux/macos/windows,
feature-powerset, release-target, nix-flake, minimal-versions) passed
green on the cut-from tip before this PR was opened.

> _This was written by Claude Code on behalf of max_

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 22:00:39 -07:00
Maximilian Roos 7f4c9c323a Release v0.64.0 (#3338)
Release v0.64.0. Folds the version bump (`Cargo.toml`, `Cargo.lock`) and
the `CHANGELOG.md` section into one commit.

A small release on top of v0.63.0: a new per-branch git-config template
namespace for `wt list` custom columns, a warm-cache `wt list` speedup,
and a few correctness/safety fixes.

**Improved**: a `{{ git.branch.* }}` template namespace lets custom
columns read a branch's own git config (`branch.<name>.jira`, the
git-native `description`) without re-storing via `wt config state vars
set` (thanks @cazador481 for the request); warm-cache `wt list` re-runs
are ~36% faster after removing redundant per-row git forks (commit→tree
priming, a persistent merge-base cache, and seeded worktree paths).

**Fixed**: refs that look like flags can no longer inject git options
(`--end-of-options` / `--` fencing across diff previews, diffstats, and
branch removal); `wt list statusline` renders untruncated when
`COLUMNS=0` instead of collapsing to an empty line; the watchdog "still
waiting" line uses the hint symbol (`↳`).

The release-process data-loss surface review (four independent finders
over the full `v0.63.0..HEAD` diff) found no data-loss risk introduced.
The one candidate — a new persistent merge-base cache that feeds the
branch-deletion safety verdict — was adjudicated acceptable: the
verdict's direct input (`has-added-changes`) was already a
content-addressed, SHA-keyed persistent cache before this release, so
the merge-base cache extends an accepted pattern rather than introducing
a new risk class.

> _This was written by Claude Code on behalf of max_

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-06-29 23:35:43 -07:00
dependabot[bot] cb8e8beb6d chore: bump open from 5.3.5 to 5.3.6 in the patch group (#3325)
Bumps the patch group with 1 update:
[open](https://github.com/Byron/open-rs).

Updates `open` from 5.3.5 to 5.3.6
<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.3.6</h2>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>use PowerShell instead of wslview on WSL
WSL users reported that wslu's wslview is discontinued and unavailable
in
some package managers. The regression tests cover the WSL command
builder and
initially failed because the first generated command was still
<code>wslview</code>.</p>
<p>Build the WSL opener as a PowerShell <code>Start-Process
-FilePath</code> script argument
with the target quoted as data, then retain the xdg-open, gio,
gnome-open, and
kde-open fallbacks. Update the user-facing docs and keep the WSL command
builder
testable from host builds without adding dev-dependencies.</p>
</li>
</ul>
<h3>Commit Statistics</h3>
<ul>
<li>2 commits contributed to the release.</li>
<li>48 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/122">#122</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/122">#122</a></strong>
<ul>
<li>Use PowerShell instead of wslview on WSL (44d1d41)</li>
</ul>
</li>
<li><strong>Uncategorized</strong>
<ul>
<li>Merge pull request <a
href="https://redirect.github.com/Byron/open-rs/issues/123">#123</a>
from Byron/avoid-wslview (41c4cf0)</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
</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.3.6 (2026-06-29)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>
<p><!-- raw HTML omitted --> use PowerShell instead of wslview on WSL
WSL users reported that wslu's wslview is discontinued and unavailable
in
some package managers. The regression tests cover the WSL command
builder and
initially failed because the first generated command was still
<code>wslview</code>.</p>
<p>Build the WSL opener as a PowerShell <code>Start-Process
-FilePath</code> script argument
with the target quoted as data, then retain the xdg-open, gio,
gnome-open, and
kde-open fallbacks. Update the user-facing docs and keep the WSL command
builder
testable from host builds without adding dev-dependencies.</p>
</li>
</ul>
<h3>Commit Statistics</h3>
<!-- raw HTML omitted -->
<ul>
<li>2 commits contributed to the release.</li>
<li>48 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/122">#122</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/122">#122</a></strong>
<ul>
<li>Use PowerShell instead of wslview on WSL (<a
href="https://github.com/Byron/open-rs/commit/44d1d41349fdfd23e5e74e3c0ac4c9aca2ed7282"><code>44d1d41</code></a>)</li>
</ul>
</li>
<li><strong>Uncategorized</strong>
<ul>
<li>Merge pull request <a
href="https://redirect.github.com/Byron/open-rs/issues/123">#123</a>
from Byron/avoid-wslview (<a
href="https://github.com/Byron/open-rs/commit/41c4cf09cab155460c29ac6a8b36ad6ec70b3d81"><code>41c4cf0</code></a>)</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Byron/open-rs/commit/cfb39d8c323bc147096ae00b1360cb6633ce4c35"><code>cfb39d8</code></a>
Release open v5.3.6</li>
<li><a
href="https://github.com/Byron/open-rs/commit/41c4cf09cab155460c29ac6a8b36ad6ec70b3d81"><code>41c4cf0</code></a>
Merge pull request <a
href="https://redirect.github.com/Byron/open-rs/issues/123">#123</a>
from Byron/avoid-wslview</li>
<li><a
href="https://github.com/Byron/open-rs/commit/44d1d41349fdfd23e5e74e3c0ac4c9aca2ed7282"><code>44d1d41</code></a>
fix: use PowerShell instead of wslview on WSL (<a
href="https://redirect.github.com/Byron/open-rs/issues/122">#122</a>)</li>
<li>See full diff in <a
href="https://github.com/Byron/open-rs/compare/v5.3.5...v5.3.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=open&package-manager=cargo&previous-version=5.3.5&new-version=5.3.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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-06-29 13:10:07 -07:00
dependabot[bot] 0258993ad8 chore: bump petname from 3.0.1 to 3.1.0 (#3326)
Bumps [petname](https://github.com/allenap/rust-petname) from 3.0.1 to
3.1.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/allenap/rust-petname/commit/051547f28093e70cf7b86e1f77259b5178651267"><code>051547f</code></a>
Bump version to 3.1.0</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/69d5c31e84d3602e2159aafbe8e725374b8103b3"><code>69d5c31</code></a>
Merge pull request <a
href="https://redirect.github.com/allenap/rust-petname/issues/131">#131</a>
from allenap/completions</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/9c9a846ede025b5311ba26045106abb744f893d7"><code>9c9a846</code></a>
Add command-line completion support via a <code>completions</code>
subcommand</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/ce6f2ba938175c8308615b2cfed7ef6c898cb40b"><code>ce6f2ba</code></a>
Build binary releases with <code>--all-features</code></li>
<li><a
href="https://github.com/allenap/rust-petname/commit/2cb888d1feaa0bf90d1889d49ee503af0211b907"><code>2cb888d</code></a>
Upgrade notes from 3.0.0 to 3.0.1</li>
<li>See full diff in <a
href="https://github.com/allenap/rust-petname/compare/v3.0.1...v3.1.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=petname&package-manager=cargo&previous-version=3.0.1&new-version=3.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 13:10:04 -07:00
dependabot[bot] 753431d6f8 chore: bump petname-macros from 3.0.1 to 3.1.0 (#3316)
Bumps [petname-macros](https://github.com/allenap/rust-petname) from
3.0.1 to 3.1.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/allenap/rust-petname/commit/051547f28093e70cf7b86e1f77259b5178651267"><code>051547f</code></a>
Bump version to 3.1.0</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/69d5c31e84d3602e2159aafbe8e725374b8103b3"><code>69d5c31</code></a>
Merge pull request <a
href="https://redirect.github.com/allenap/rust-petname/issues/131">#131</a>
from allenap/completions</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/9c9a846ede025b5311ba26045106abb744f893d7"><code>9c9a846</code></a>
Add command-line completion support via a <code>completions</code>
subcommand</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/ce6f2ba938175c8308615b2cfed7ef6c898cb40b"><code>ce6f2ba</code></a>
Build binary releases with <code>--all-features</code></li>
<li><a
href="https://github.com/allenap/rust-petname/commit/2cb888d1feaa0bf90d1889d49ee503af0211b907"><code>2cb888d</code></a>
Upgrade notes from 3.0.0 to 3.0.1</li>
<li>See full diff in <a
href="https://github.com/allenap/rust-petname/compare/v3.0.1...v3.1.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 11:19:24 -07:00
dependabot[bot] dacf02fa15 chore: bump skim from 4.8.0 to 4.10.0 (#3315)
Bumps [skim](https://github.com/skim-rs/skim) from 4.8.0 to 4.10.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/releases">skim's
releases</a>.</em></p>
<blockquote>
<h2>4.10.0 - 2026-06-28</h2>
<h2>Release Notes</h2>
<h3>🚀 Features</h3>
<ul>
<li><em>(theme)</em> Add a themeable scrollbar color for the item list
(<a
href="https://redirect.github.com/skim-rs/skim/issues/1101">#1101</a>)</li>
</ul>
<h3>🧪 Testing</h3>
<ul>
<li>Improve coverage on matchers &amp; algos (<a
href="https://redirect.github.com/skim-rs/skim/issues/1100">#1100</a>)</li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/max-sixty"><code>@​max-sixty</code></a>
made their first contribution in <a
href="https://redirect.github.com/skim-rs/skim/pull/1101">#1101</a></li>
</ul>
<h2>Install skim 4.10.0</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-installer.ps1
| iex&quot;
</code></pre>
<h2>Download skim 4.10.0</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Platform</th>
<th>Checksum</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-aarch64-apple-darwin.tar.xz">skim-aarch64-apple-darwin.tar.xz</a></td>
<td>Apple Silicon macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-aarch64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-apple-darwin.tar.xz">skim-x86_64-apple-darwin.tar.xz</a></td>
<td>Intel macOS</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-apple-darwin.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-pc-windows-msvc.zip">skim-x86_64-pc-windows-msvc.zip</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-pc-windows-msvc.msi">skim-x86_64-pc-windows-msvc.msi</a></td>
<td>x64 Windows</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-pc-windows-msvc.msi.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-aarch64-unknown-linux-gnu.tar.xz">skim-aarch64-unknown-linux-gnu.tar.xz</a></td>
<td>ARM64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-aarch64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-unknown-linux-gnu.tar.xz">skim-x86_64-unknown-linux-gnu.tar.xz</a></td>
<td>x64 Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-aarch64-unknown-linux-musl.tar.xz">skim-aarch64-unknown-linux-musl.tar.xz</a></td>
<td>ARM64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-aarch64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
<tr>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-unknown-linux-musl.tar.xz">skim-x86_64-unknown-linux-musl.tar.xz</a></td>
<td>x64 MUSL Linux</td>
<td><a
href="https://github.com/skim-rs/skim/releases/download/v4.10.0/skim-x86_64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
</tr>
</tbody>
</table>
<h2>4.9.0 - 2026-06-25</h2>
<h2>Release Notes</h2>
<h3>🚀 Features</h3>
<ul>
<li><em>(ci)</em> Upload coverage report to pages for easier browsing
(<a
href="https://redirect.github.com/skim-rs/skim/issues/1096">#1096</a>)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/skim-rs/skim/blob/master/CHANGELOG.md">skim's
changelog</a>.</em></p>
<blockquote>
<h2>[4.10.0] - 2026-06-28</h2>
<h3>🚀 Features</h3>
<ul>
<li><em>(theme)</em> Add a themeable scrollbar color for the item list
(<a
href="https://redirect.github.com/skim-rs/skim/issues/1101">#1101</a>)</li>
</ul>
<h3>🧪 Testing</h3>
<ul>
<li>Improve coverage on matchers &amp; algos (<a
href="https://redirect.github.com/skim-rs/skim/issues/1100">#1100</a>)</li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/max-sixty"><code>@​max-sixty</code></a>
made their first contribution in <a
href="https://redirect.github.com/skim-rs/skim/pull/1101">#1101</a></li>
</ul>
<h2>[4.9.0] - 2026-06-25</h2>
<h3>🚀 Features</h3>
<ul>
<li><em>(ci)</em> Upload coverage report to pages for easier browsing
(<a
href="https://redirect.github.com/skim-rs/skim/issues/1096">#1096</a>)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Refresh preview after mouse selection (<a
href="https://redirect.github.com/skim-rs/skim/issues/1095">#1095</a>)</li>
</ul>
<h3>🧪 Testing</h3>
<ul>
<li>Add unit tests for the shell &amp; manpage generators (<a
href="https://redirect.github.com/skim-rs/skim/issues/1098">#1098</a>)</li>
<li>Improve coverage to 90% (<a
href="https://redirect.github.com/skim-rs/skim/issues/1099">#1099</a>)</li>
</ul>
<h3>⚙️ Miscellaneous Tasks</h3>
<ul>
<li><em>(ci)</em> Use github's coverage (<a
href="https://redirect.github.com/skim-rs/skim/issues/1094">#1094</a>)</li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a
href="https://github.com/wang-borong"><code>@​wang-borong</code></a>
made their first contribution in <a
href="https://redirect.github.com/skim-rs/skim/pull/1095">#1095</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/skim-rs/skim/commit/aeba919fab2e33822596394a0df7e1461b4ba6da"><code>aeba919</code></a>
release: v4.10.0</li>
<li><a
href="https://github.com/skim-rs/skim/commit/bfec6e198da776a3a28f4f3c4bb16278a56339b4"><code>bfec6e1</code></a>
feat(theme): add a themeable scrollbar color for the item list (<a
href="https://redirect.github.com/skim-rs/skim/issues/1101">#1101</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/5f4798325ac5d78456f9b87976acc132f1b2da74"><code>5f47983</code></a>
tests: improve coverage on matchers &amp; algos (<a
href="https://redirect.github.com/skim-rs/skim/issues/1100">#1100</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/d14407196b3887096b7daa66fe31d0a3f2704b8c"><code>d144071</code></a>
release: v4.9.0</li>
<li><a
href="https://github.com/skim-rs/skim/commit/7d4502201f89a09fc5750881049167e13d8715a2"><code>7d45022</code></a>
fix: refresh preview after mouse selection (<a
href="https://redirect.github.com/skim-rs/skim/issues/1095">#1095</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/7e2cdf3c8e5812baa100e5aa3f85f1bec2b7b39e"><code>7e2cdf3</code></a>
tests: improve coverage to 90% (<a
href="https://redirect.github.com/skim-rs/skim/issues/1099">#1099</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/8187a121969f12f9f76f0274f223ed09eb5d8368"><code>8187a12</code></a>
test: add unit tests for the shell &amp; manpage generators (<a
href="https://redirect.github.com/skim-rs/skim/issues/1098">#1098</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/b56eed4125efa5c81528442afbdd270e9b841aaf"><code>b56eed4</code></a>
feat(ci): upload coverage report to pages for easier browsing (<a
href="https://redirect.github.com/skim-rs/skim/issues/1096">#1096</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/e85cf6b708131f177fb1304eb2c270bc9a97f7d2"><code>e85cf6b</code></a>
chore(ci): use github's coverage (<a
href="https://redirect.github.com/skim-rs/skim/issues/1094">#1094</a>)</li>
<li><a
href="https://github.com/skim-rs/skim/commit/7994e4441279ce35fe2aaf582ccbb337c24320b9"><code>7994e44</code></a>
chore(deps): bump the cargo-prod group with 4 updates (<a
href="https://redirect.github.com/skim-rs/skim/issues/1093">#1093</a>)</li>
<li>See full diff in <a
href="https://github.com/skim-rs/skim/compare/v4.8.0...v4.10.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=skim&package-manager=cargo&previous-version=4.8.0&new-version=4.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 01:19:00 -07:00
dependabot[bot] 748f82efa3 chore: bump petname from 3.0.0 to 3.0.1 (#3314)
Bumps [petname](https://github.com/allenap/rust-petname) from 3.0.0 to
3.0.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/allenap/rust-petname/commit/4a28e9da951537e1b5a8bb953390e4b54dcaa441"><code>4a28e9d</code></a>
Bump version to 3.0.1</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/6641b4fdd151879551b7238cf8d759cec0b880db"><code>6641b4f</code></a>
Capture <code>-h</code> output with <code>--all-features</code></li>
<li><a
href="https://github.com/allenap/rust-petname/commit/47cb39b33bedbe830c36b2df8d47cd8902ffba4c"><code>47cb39b</code></a>
Merge pull request <a
href="https://redirect.github.com/allenap/rust-petname/issues/129">#129</a>
from allenap/dependabot/github_actions/actions/checko...</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/3aff4246f32d19191afd6830c85836c97f371831"><code>3aff424</code></a>
Merge pull request <a
href="https://redirect.github.com/allenap/rust-petname/issues/130">#130</a>
from allenap/install-homebrew-tap</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/65523cd4078c9beba56d6dae77c39c8ef2619764"><code>65523cd</code></a>
Instructions for installing from the <code>allenap/utils</code> Homebrew
tap</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/0474cf2ea400a6861d46aefa58c830ff508391ac"><code>0474cf2</code></a>
Bump actions/checkout from 6 to 7</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/ee3b522af706af405408e9aa04e11184e5082ffa"><code>ee3b522</code></a>
Merge pull request <a
href="https://redirect.github.com/allenap/rust-petname/issues/128">#128</a>
from allenap/lang-turkish</li>
<li><a
href="https://github.com/allenap/rust-petname/commit/2ae3dcba8f5288c5860abc47c108f515a586aa1f"><code>2ae3dcb</code></a>
Update <code>README.md</code></li>
<li><a
href="https://github.com/allenap/rust-petname/commit/7d1fe87a0db8b68cc4179786cbe8481e99bded8f"><code>7d1fe87</code></a>
Add <code>--lang</code> as an alias of <code>--language</code></li>
<li><a
href="https://github.com/allenap/rust-petname/commit/b9021dd2909d7087157c981e010db63d3af08209"><code>b9021dd</code></a>
Check SemVer compatibility</li>
<li>Additional commits viewable in <a
href="https://github.com/allenap/rust-petname/compare/v3.0.0...v3.0.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=petname&package-manager=cargo&previous-version=3.0.0&new-version=3.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: worktrunk-bot <254187624+worktrunk-bot@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-06-29 01:18:57 -07:00
dependabot[bot] 6032ee9d89 chore: bump the patch group with 4 updates (#3313)
Bumps the patch group with 4 updates:
[anyhow](https://github.com/dtolnay/anyhow),
[tree-sitter](https://github.com/tree-sitter/tree-sitter),
[tree-sitter-highlight](https://github.com/tree-sitter/tree-sitter) and
[vergen-gitcl](https://github.com/rustyhorde/vergen).

Updates `anyhow` from 1.0.102 to 1.0.103
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/anyhow/releases">anyhow's
releases</a>.</em></p>
<blockquote>
<h2>1.0.103</h2>
<ul>
<li>Fix Stacked Borrows violation (UB) in
<code>Error::downcast_mut</code> (<a
href="https://redirect.github.com/dtolnay/anyhow/issues/451">#451</a>,
<a
href="https://redirect.github.com/dtolnay/anyhow/issues/452">#452</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dtolnay/anyhow/commit/5bdb0e24db3994be119d42f18fe2d655e1f68f4a"><code>5bdb0e2</code></a>
Release 1.0.103</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/e621bd35ddddcd8b2f39d80b9f5938583571a87d"><code>e621bd3</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/anyhow/issues/452">#452</a>
from dtolnay/downcast</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/6e8c000690151cba99305092024535905b2be162"><code>6e8c000</code></a>
Eliminate pointer-&gt;reference-&gt;pointer during downcast</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/67c4abd7718b6191768193993270abe8dcdd66bb"><code>67c4abd</code></a>
Add regression test for issue 451</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/917a16932009c1957f53c2ea325663948add2153"><code>917a169</code></a>
Update actions/upload-artifact@v6 -&gt; v7</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/d9dc3faf78b8647fdb5b8c5b53abb85e05e13d42"><code>d9dc3fa</code></a>
Update actions/checkout@v6 -&gt; v7</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/841522b2aa09732fecee40804440d2c35c68c480"><code>841522b</code></a>
Raise minimum tested compiler to rust 1.85</li>
<li>See full diff in <a
href="https://github.com/dtolnay/anyhow/compare/1.0.102...1.0.103">compare
view</a></li>
</ul>
</details>
<br />

Updates `tree-sitter` from 0.26.9 to 0.26.10
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tree-sitter/tree-sitter/releases">tree-sitter's
releases</a>.</em></p>
<blockquote>
<h2>v0.26.10</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(lib): update doc comment for <code>ts_parser_parse</code> by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5642">tree-sitter/tree-sitter#5642</a></li>
<li>fix(lib): use correct TREE_SITTER_HIDE_SYMBOLS macro name in alloc.h
by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5643">tree-sitter/tree-sitter#5643</a></li>
<li>fix(cli): improve soundness of cst range calculation by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5650">tree-sitter/tree-sitter#5650</a></li>
<li>fix(lib): Consider subtree lookahead bytes when determining whether
the parser can reuse a node. by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5656">tree-sitter/tree-sitter#5656</a></li>
<li>fix(cli): display warning to user if parser test corpus dir isn't
found by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5669">tree-sitter/tree-sitter#5669</a></li>
<li>fix: add DESCRIPTION to grammar Makefile template by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5672">tree-sitter/tree-sitter#5672</a></li>
<li>fix(cli): infinite loop in highlight test by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5674">tree-sitter/tree-sitter#5674</a></li>
<li>fix(lib): address strict aliasing violations in
<code>TreeCursor</code> type by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5693">tree-sitter/tree-sitter#5693</a></li>
<li>build(deps): bump wasmtime-c-api to v36.0.12 by <a
href="https://github.com/clason"><code>@​clason</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5709">tree-sitter/tree-sitter#5709</a></li>
<li>fix(dsl): forbid invalid field names by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5710">tree-sitter/tree-sitter#5710</a></li>
<li>Fix issues with queries matching a parent node with anchored
children (siblings) by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5712">tree-sitter/tree-sitter#5712</a></li>
<li>test(query): regression test for anchored siblings inside a parent
by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5716">tree-sitter/tree-sitter#5716</a></li>
<li>release v0.26.10 by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5717">tree-sitter/tree-sitter#5717</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.9...v0.26.10">https://github.com/tree-sitter/tree-sitter/compare/v0.26.9...v0.26.10</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/3fc4cd21bca378f8acf8c823809de4706b1808f6"><code>3fc4cd2</code></a>
release v0.26.10</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/568aee0b7e2e93b6eb7c132c9fafc185203b0661"><code>568aee0</code></a>
test(query): regression test for anchored siblings inside a parent</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/2efce10fe988408a1b02de4527b3f6128bb68d0e"><code>2efce10</code></a>
fix(query): skip passthrough steps when checking for fallible step
splitting</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/e8b96392919aeae84c52678be1489b9d507c568a"><code>e8b9639</code></a>
fix(query): avoid overriding states not seeking immediate match with
states s...</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/576564d25a6944859d70925b6cb693843cafc2c7"><code>576564d</code></a>
fix(query): take anchors between siblings into account for fallible step
spli...</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/fbf3049dc085b01c124308c0d61dba06cdc92a16"><code>fbf3049</code></a>
fix(dsl): forbid invalid field names</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/99bc36b857eccb3cb70d8734aaf7e2a83d672d60"><code>99bc36b</code></a>
build(deps): bump wasmtime-c-api to v36.0.12</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/1ef1048d0567cacc0b74ad1a911b95f3de2b8c47"><code>1ef1048</code></a>
fix(build): use <code>std</code> helper rather than passing
<code>-std=c11</code> flag</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/a61be4ac277bc8cb4ffa8419759faec0562c46f3"><code>a61be4a</code></a>
fix(lib): address strict aliasing violations in <code>TreeCursor</code>
type</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/be8f380ad47333e0df5a7b4f447485a6cd7f0fa7"><code>be8f380</code></a>
fix(cli): highlight test did not properly check for spans on later
rows</li>
<li>Additional commits viewable in <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.9...v0.26.10">compare
view</a></li>
</ul>
</details>
<br />

Updates `tree-sitter-highlight` from 0.26.9 to 0.26.10
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tree-sitter/tree-sitter/releases">tree-sitter-highlight's
releases</a>.</em></p>
<blockquote>
<h2>v0.26.10</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(lib): update doc comment for <code>ts_parser_parse</code> by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5642">tree-sitter/tree-sitter#5642</a></li>
<li>fix(lib): use correct TREE_SITTER_HIDE_SYMBOLS macro name in alloc.h
by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5643">tree-sitter/tree-sitter#5643</a></li>
<li>fix(cli): improve soundness of cst range calculation by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5650">tree-sitter/tree-sitter#5650</a></li>
<li>fix(lib): Consider subtree lookahead bytes when determining whether
the parser can reuse a node. by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5656">tree-sitter/tree-sitter#5656</a></li>
<li>fix(cli): display warning to user if parser test corpus dir isn't
found by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5669">tree-sitter/tree-sitter#5669</a></li>
<li>fix: add DESCRIPTION to grammar Makefile template by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5672">tree-sitter/tree-sitter#5672</a></li>
<li>fix(cli): infinite loop in highlight test by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5674">tree-sitter/tree-sitter#5674</a></li>
<li>fix(lib): address strict aliasing violations in
<code>TreeCursor</code> type by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5693">tree-sitter/tree-sitter#5693</a></li>
<li>build(deps): bump wasmtime-c-api to v36.0.12 by <a
href="https://github.com/clason"><code>@​clason</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5709">tree-sitter/tree-sitter#5709</a></li>
<li>fix(dsl): forbid invalid field names by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5710">tree-sitter/tree-sitter#5710</a></li>
<li>Fix issues with queries matching a parent node with anchored
children (siblings) by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5712">tree-sitter/tree-sitter#5712</a></li>
<li>test(query): regression test for anchored siblings inside a parent
by <a
href="https://github.com/tree-sitter-ci-bot"><code>@​tree-sitter-ci-bot</code></a>[bot]
in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5716">tree-sitter/tree-sitter#5716</a></li>
<li>release v0.26.10 by <a
href="https://github.com/WillLillis"><code>@​WillLillis</code></a> in <a
href="https://redirect.github.com/tree-sitter/tree-sitter/pull/5717">tree-sitter/tree-sitter#5717</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.9...v0.26.10">https://github.com/tree-sitter/tree-sitter/compare/v0.26.9...v0.26.10</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/3fc4cd21bca378f8acf8c823809de4706b1808f6"><code>3fc4cd2</code></a>
release v0.26.10</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/568aee0b7e2e93b6eb7c132c9fafc185203b0661"><code>568aee0</code></a>
test(query): regression test for anchored siblings inside a parent</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/2efce10fe988408a1b02de4527b3f6128bb68d0e"><code>2efce10</code></a>
fix(query): skip passthrough steps when checking for fallible step
splitting</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/e8b96392919aeae84c52678be1489b9d507c568a"><code>e8b9639</code></a>
fix(query): avoid overriding states not seeking immediate match with
states s...</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/576564d25a6944859d70925b6cb693843cafc2c7"><code>576564d</code></a>
fix(query): take anchors between siblings into account for fallible step
spli...</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/fbf3049dc085b01c124308c0d61dba06cdc92a16"><code>fbf3049</code></a>
fix(dsl): forbid invalid field names</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/99bc36b857eccb3cb70d8734aaf7e2a83d672d60"><code>99bc36b</code></a>
build(deps): bump wasmtime-c-api to v36.0.12</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/1ef1048d0567cacc0b74ad1a911b95f3de2b8c47"><code>1ef1048</code></a>
fix(build): use <code>std</code> helper rather than passing
<code>-std=c11</code> flag</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/a61be4ac277bc8cb4ffa8419759faec0562c46f3"><code>a61be4a</code></a>
fix(lib): address strict aliasing violations in <code>TreeCursor</code>
type</li>
<li><a
href="https://github.com/tree-sitter/tree-sitter/commit/be8f380ad47333e0df5a7b4f447485a6cd7f0fa7"><code>be8f380</code></a>
fix(cli): highlight test did not properly check for spans on later
rows</li>
<li>Additional commits viewable in <a
href="https://github.com/tree-sitter/tree-sitter/compare/v0.26.9...v0.26.10">compare
view</a></li>
</ul>
</details>
<br />

Updates `vergen-gitcl` from 10.0.0 to 10.0.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rustyhorde/vergen/releases">vergen-gitcl's
releases</a>.</em></p>
<blockquote>
<h2>vergen 10.0.1</h2>
<p>Patch release adding a new error-fallback knob, a builder-access API
addition, dependency updates, and a security-audit refresh.</p>
<h3>New features</h3>
<ul>
<li><strong><code>VERGEN_DEFAULT_ON_ERROR</code> fallback</strong> (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/509">#509</a>)
— When building outside a git worktree (or any time an instruction
cannot be generated), the new <code>VERGEN_DEFAULT_ON_ERROR</code> env
var and <code>Emitter::default_on_error()</code> builder method populate
missing instructions with the idempotent default
(<code>VERGEN_IDEMPOTENT_OUTPUT</code>) so
<code>env!(&quot;VERGEN_GIT_SHA&quot;)</code> keeps compiling — while
builds <em>inside</em> a real worktree still emit real values.</li>
<li><strong><code>all()</code> builder accessor</strong> (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/513">#513</a>)
— Exposes <code>Build::all()</code>, <code>Cargo::all()</code>,
<code>Rustc::all()</code>, and <code>Sysinfo::all()</code> as public
methods that return the builder with all instructions enabled, enabling
subtractive modification (turn all on, then selectively disable).</li>
</ul>
<h3>Dependency updates</h3>
<ul>
<li><code>bon</code> 3.9.1 → 3.9.3</li>
<li><code>gix</code> 0.84.0 → 0.85.0</li>
<li><code>regex</code> 1.12.3 → 1.12.4</li>
<li><code>time</code> 0.3.47 → 0.3.51</li>
<li><code>sysinfo</code> 0.39.3 → 0.39.5</li>
<li><code>memmap2</code> 0.9.10 → 0.9.11 (resolves
<strong>RUSTSEC-2026-0186</strong>)</li>
</ul>
<h3>Security audit refresh</h3>
<ul>
<li>Added <code>RUSTSEC-2026-0173</code> ignore
(<code>proc-macro-error2</code> unmaintained, informational only)</li>
<li>Removed <code>RUSTSEC-2025-0055</code> ignore
(<code>tracing-subscriber</code> now resolved to ≥ 0.3.20)</li>
<li>Removed <code>RUSTSEC-2025-0141</code> ignore (<code>bincode</code>
no longer in the dependency tree)</li>
<li><code>cargo audit</code> passes clean</li>
</ul>
<h3>Other</h3>
<ul>
<li>Fixed inaccurate <code>fail_on_error</code> and
<code>idempotent</code> docs (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/509">#509</a>)</li>
<li>Added <code>cargo:rerun-if-changed=VERGEN_DEFAULT_ON_ERROR</code>
rerun directive</li>
<li>Bumped <code>cargo-binstall</code> in CI (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/503">#503</a>)</li>
<li>Parse deprecation fixes (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/505">#505</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rustyhorde/vergen/compare/v10.0.0...10.0.1">https://github.com/rustyhorde/vergen/compare/v10.0.0...10.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rustyhorde/vergen/commit/23a615917d339062777d013afd4204e40309fe61"><code>23a6159</code></a>
feat(api): expose all that returns builder for subtractive modification.
(<a
href="https://redirect.github.com/rustyhorde/vergen/issues/513">#513</a>)</li>
<li><a
href="https://github.com/rustyhorde/vergen/commit/b1ee36128a5b1b903722bc7bc6f35b2c9e1cbe7a"><code>b1ee361</code></a>
v10.0.1 enhancements: VERGEN_DEFAULT_ON_ERROR fallback, dependency
updates, a...</li>
<li><a
href="https://github.com/rustyhorde/vergen/commit/a3ffa569e9d0ea5a151813128acb992c09eddffe"><code>a3ffa56</code></a>
Fix parse deprecation issues (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/505">#505</a>)</li>
<li><a
href="https://github.com/rustyhorde/vergen/commit/2bab576a171eb950e67baef81bbae4989535a29b"><code>2bab576</code></a>
chore: version bump for next release (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/504">#504</a>)</li>
<li><a
href="https://github.com/rustyhorde/vergen/commit/ee3edb23bcea7b42373dcd068529c74a2c88a813"><code>ee3edb2</code></a>
Bump cargo-bins/cargo-binstall from 1.19.1 to 1.20.0 (<a
href="https://redirect.github.com/rustyhorde/vergen/issues/503">#503</a>)</li>
<li>See full diff in <a
href="https://github.com/rustyhorde/vergen/compare/v10.0.0...10.0.1">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-06-29 01:18:54 -07:00
Maximilian Roos 50553be344 Release v0.63.0 (#3300)
Release v0.63.0. Folds the version bump (`Cargo.toml`, `Cargo.lock`) and
the `CHANGELOG.md` section into one commit.

This release is mostly polish and fixes on top of the v0.62.0 picker +
`wt list` overhaul, plus list correctness/perf and safer branch
deletion.

**Improved**: `[list] columns` can force a column on past `--full`;
`Alt-r` refreshes the picker preview panes; a narrowed `wt list` is now
actually faster (thanks @jtaby for reporting); fewer duplicate git calls
in `wt list --full`; picker `comments` tab caches across runs.

**Fixed**: fork diff/ahead-behind columns use the upstream default tip;
integrated branches stop flashing `✗`; atomic CAS branch deletion (a
safety improvement — fails closed when a ref races); Age/Message columns
paint sooner; `Alt-x` cursor flash + `--prs` row preservation; removable
rows stay gray when selected; preview scroll preserved on CI fetch;
summary tab dims when empty; first-run hints show the resolved config
path.

**Internal**: `-vv` trace/profiler accuracy.

The release-process data-loss surface review (four independent finders
over the full `v0.62.0..HEAD` diff) found no data-loss risk introduced;
the CAS branch-deletion change is a net safety improvement.

> _This was written by Claude Code on behalf of max_
2026-06-28 16:45:39 -07:00
Worktrunk Bot 5b83c0f1d8 fix(deps): pin petname-macros to =3.0.0 to fix nightly minimal-versions (#3283) 2026-06-28 08:46:16 -07:00
Maximilian Roos 51f7fe8abb Release v0.62.0 (#3263)
Release v0.62.0 — minor bump (`cargo semver-checks` reports a breaking
library-API change — `ListConfig.columns` added a public field, which
requires at least a minor pre-1.0 — plus many new features).

### Highlights

- **`wt switch --prs`** — browse open PRs/MRs in the interactive picker,
with a live CI/review column and `pr` / `comments` / `log` preview tabs
([#3128](https://github.com/max-sixty/worktrunk/pull/3128)).
[Docs](https://worktrunk.dev/switch/)
- **Interactive picker now runs on Windows**
([#3217](https://github.com/max-sixty/worktrunk/pull/3217)).
- **`main…±` diff column shows by default** in `wt list`; `--full` now
adds only the off-machine columns (CI status, LLM summaries)
([#3236](https://github.com/max-sixty/worktrunk/pull/3236)).
- **`[list] columns`** selects and orders the columns `wt list` renders
([#3141](https://github.com/max-sixty/worktrunk/pull/3141)).
- **`wt config state logs profile`** performance profiler
([#3184](https://github.com/max-sixty/worktrunk/pull/3184)).
- Picker keyboard shortcuts (copy / open / refresh) and the `Alt-x`
removal rework, fish completion-recursion fixes, `CLAUDE_CONFIG_DIR`
support, and more.

**Breaking:** in the picker, remove moved from `Alt-r` to `Alt-x`
(`Alt-r` now refreshes).

Two "Still waiting" entries
([#3178](https://github.com/max-sixty/worktrunk/pull/3178),
[#3183](https://github.com/max-sixty/worktrunk/pull/3183)) were moved
here from 0.61.0 — they landed after the v0.61.0 tag, so they ship in
0.62.0.

The changelog also documents the `Alt-x` removal rework
([#3262](https://github.com/max-sixty/worktrunk/pull/3262)); the tag
will be placed on the `main` tip that includes both this release commit
and #3262.

Full notes in the `CHANGELOG.md` diff. Data-loss surface review of the
cumulative diff in progress; the keyword pass came back clean (the new
`Alt-x` removal uses safe variants — `SafeDelete`, no force,
approval-gated).

> _This was written by Claude Code on behalf of max_
2026-06-26 22:52:51 -07:00