mirror of
https://github.com/max-sixty/worktrunk.git
synced 2026-09-14 20:00:38 +08:00
6ccdae8a53
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 "irm https://github.com/skim-rs/skim/releases/download/v5.6.4/skim-installer.ps1 | iex" </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>
364 lines
16 KiB
TOML
364 lines
16 KiB
TOML
[workspace]
|
|
members = ["tests/helpers/wt-perf"]
|
|
# Include the helper package so a workspace `cargo test` runs its in-package
|
|
# CLI tests (which build its binary).
|
|
default-members = [".", "tests/helpers/wt-perf"]
|
|
|
|
# cargo-affected input→test rules. cargo-affected selects tests by Rust-line
|
|
# coverage overlap, so a file a test reads at *runtime* (never recorded in
|
|
# coverage) maps to no test and would slip through `cargo affected run`. Each
|
|
# rule force-selects the owning tests when a matching path changes. `[*.metadata]`
|
|
# is excluded from cargo-affected's fingerprint, so editing a rule is
|
|
# cache-neutral. See https://github.com/max-sixty/cargo-affected#input-rules.
|
|
|
|
# insta `.snap` snapshots are read at test time and never appear in coverage, so
|
|
# a snapshot edit maps to no test. Route each snapshot to the binary that owns
|
|
# it — the finest granularity available without a snapshot→test map. Integration
|
|
# snapshots live under tests/; unit-test snapshots under src/, split across the
|
|
# lib (`worktrunk`) and the `wt` binary (`worktrunk::bin/wt`).
|
|
[[workspace.metadata.affected.rule]]
|
|
globs = ["tests/**/*.snap"]
|
|
filterset = "binary_id(=worktrunk::integration)"
|
|
|
|
[[workspace.metadata.affected.rule]]
|
|
globs = ["src/**/*.snap"]
|
|
filterset = "binary_id(=worktrunk) | binary_id(=worktrunk::bin/wt)"
|
|
|
|
# tests/integration_tests/readme_sync.rs reads each of these at runtime (via
|
|
# fs::read_to_string) and asserts the committed copies stay in sync — both the
|
|
# sources (README.md, docs/content markdown, docs/config.toml's site title and
|
|
# description, src/cli/mod.rs, src/llm.rs, the skill references, Taskfile.yaml)
|
|
# and the generated artifacts it regenerates and compares against (the
|
|
# dev/*.example.toml files, docs/static/llms.txt, the agent-skills index.json).
|
|
# Editing any of them flips the test, but coverage can't link a runtime-read
|
|
# file to it.
|
|
[[workspace.metadata.affected.rule]]
|
|
globs = [
|
|
"README.md",
|
|
"docs/**/*.md",
|
|
"docs/config.toml",
|
|
"docs/static/llms.txt",
|
|
"docs/static/.well-known/agent-skills/index.json",
|
|
"dev/*.toml",
|
|
"src/cli/mod.rs",
|
|
"src/llm.rs",
|
|
"Taskfile.yaml",
|
|
"skills/**/*.md",
|
|
]
|
|
filterset = "test(/readme_sync/)"
|
|
|
|
[package]
|
|
name = "worktrunk"
|
|
version = "0.74.0"
|
|
edition = "2024"
|
|
rust-version = "1.96"
|
|
build = "build.rs"
|
|
repository = "https://github.com/max-sixty/worktrunk"
|
|
homepage = "https://worktrunk.dev"
|
|
description = "A CLI for Git worktree management, designed for parallel AI agent workflows"
|
|
license = "MIT OR Apache-2.0"
|
|
default-run = "wt"
|
|
|
|
[package.metadata.release]
|
|
# Allow releases from any branch (GitHub Actions uses detached HEAD)
|
|
allow-branch = ["*"]
|
|
consolidate-commits = true
|
|
|
|
[package.metadata.cargo-udeps.ignore]
|
|
# `which` is used only on Windows (#[cfg(windows)] in src/shell_exec.rs).
|
|
# `petname-macros` is not referenced in code — its exact pin keeps the proc
|
|
# macro version aligned with `petname` (see the dependency comment below).
|
|
normal = ["which", "petname-macros"]
|
|
|
|
[features]
|
|
# Disabled: Enable testing for shells that require extra installation steps (nushell, powershell, elvish, xonsh, oil)
|
|
# tier-2-integration-tests = []
|
|
# Enable syntax highlighting for bash commands in output (requires tree-sitter)
|
|
# This is optional to avoid C compilation issues on some platforms
|
|
default = ["cli", "syntax-highlighting"]
|
|
# Enables the `wt` binary and everything specific to the CLI: argument parsing,
|
|
# interactive picker, rich terminal rendering, and the markdown help pager.
|
|
# Library consumers (e.g. `worktrunk-sync`) should depend on worktrunk with
|
|
# `default-features = false` to avoid pulling these in.
|
|
cli = [
|
|
"dep:clap",
|
|
"dep:clap_complete",
|
|
"dep:crossterm",
|
|
"dep:humantime",
|
|
"dep:skim",
|
|
"dep:ratatui",
|
|
"dep:ansi-to-tui",
|
|
"dep:tokio",
|
|
"dep:arboard",
|
|
"dep:open",
|
|
"dep:termimad",
|
|
"dep:tracing-log",
|
|
"dep:tracing-subscriber",
|
|
]
|
|
syntax-highlighting = ["dep:tree-sitter-bash", "dep:tree-sitter-highlight"]
|
|
# Enable shell/PTY integration tests (needs bash, zsh, fish, nu, pwsh, and jq on PATH)
|
|
# Includes: shell wrapper tests, PTY-based approval prompts, TUI select, progressive rendering
|
|
shell-integration-tests = []
|
|
# Enable benchmarks whose fixture is too large for hosted CI: the
|
|
# large-repository prune fixture (multi-gigabyte linked worktrees, cached under
|
|
# target/wt-perf/bench-repos). The daily benchmarks workflow runs plain `cargo bench`
|
|
# and must never build it; opt in locally with
|
|
# `cargo bench --bench prune --features large-repository-benches`.
|
|
large-repository-benches = []
|
|
# Install git-wt binary so `git wt` works as a git subcommand
|
|
git-wt = []
|
|
|
|
[lib]
|
|
name = "worktrunk"
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "wt"
|
|
path = "src/main.rs"
|
|
required-features = ["cli"]
|
|
|
|
# Also install as git-wt so `git wt <command>` works as a git subcommand.
|
|
# Primarily useful on Windows where `wt` conflicts with Windows Terminal.
|
|
# See: https://github.com/max-sixty/worktrunk/issues/133
|
|
# Install with: cargo install worktrunk --features git-wt
|
|
[[bin]]
|
|
name = "git-wt"
|
|
path = "src/git_wt.rs"
|
|
required-features = ["cli", "git-wt"]
|
|
# `git_wt.rs` is `include!("main.rs")`, so its unit tests are byte-identical
|
|
# duplicates of the `wt` binary's. Running them adds no coverage and breaks
|
|
# under `cargo hack test --feature-powerset`: insta derives snapshot filenames
|
|
# from the crate name, so the duplicates look for `git_wt__*.snap` files that
|
|
# don't exist (only `wt__*`). The `check` powerset still compiles this target.
|
|
test = false
|
|
|
|
# The integration suite execs the `wt` binary (needs `cli`) and snapshots its
|
|
# rendered output, which bakes in syntax highlighting (needs
|
|
# `syntax-highlighting`). Declaring both lets `cargo hack test
|
|
# --feature-powerset` skip this target on combinations that can't satisfy it
|
|
# rather than fail; lib and doc tests still run on every combination.
|
|
[[test]]
|
|
name = "integration"
|
|
path = "tests/integration.rs"
|
|
required-features = ["cli", "syntax-highlighting"]
|
|
|
|
# Deliberately a second binary rather than another module under `integration`:
|
|
# it latches process-wide cancellation state, which would take out any test
|
|
# running beside it in the same process. See the file's module docs.
|
|
[[test]]
|
|
name = "cancel_background"
|
|
path = "tests/cancel_background.rs"
|
|
|
|
[dependencies]
|
|
anyhow = "1.0.102"
|
|
anstream = "1.0"
|
|
anstyle = "1.0.13"
|
|
ansi-str = "0.9"
|
|
color-print = "0.3.7"
|
|
askama = { version = "0.16", default-features = false, features = ["derive", "std"] }
|
|
# Floor is 0.4.31, not 0.4: `DateTime::from_timestamp` (utils.rs, statusline.rs,
|
|
# backup.rs) landed in chrono 0.4.31. `-Z minimal-versions` otherwise resolves
|
|
# 0.4.0 and our own lib fails to compile.
|
|
chrono = "0.4.31"
|
|
# `unstable-markdown` renders our `///` doc-comments as styled help (bold inline
|
|
# code, literal `[experimental]`). skim 0.20 pulled it in transitively; skim 4
|
|
# (default-features = false) does not, so depend on it explicitly to keep help
|
|
# output stable rather than reverting to raw text.
|
|
clap = { version = "4.6", features = ["derive", "unstable-ext", "wrap_help", "unstable-markdown"], optional = true }
|
|
clap_complete = { version = "4.6", features = ["unstable-dynamic"], optional = true }
|
|
crossbeam-channel = "0.5"
|
|
crossterm = { version = "0.29", optional = true }
|
|
indexmap = { version = "2.14", features = ["serde"] }
|
|
etcetera = "0.11"
|
|
# `log` is still used pervasively for application logging; events flow into
|
|
# `tracing` via `tracing-log::LogTracer` (CLI binary only).
|
|
log = "0.4.31"
|
|
# 0.1.30 added the `enabled!` macro `src/trace/emit.rs::Span::drop` uses to
|
|
# elide span emission when the subscriber doesn't care. Older versions only
|
|
# expose the per-level macros and dispatcher checks.
|
|
tracing = "0.1.35"
|
|
# Compatibility shim: forward `log::*` macros into `tracing`. ~100 call sites
|
|
# across the codebase keep using `log::debug!` etc.; only the routing layer
|
|
# moved.
|
|
tracing-log = { version = "0.2.0", optional = true }
|
|
# Layered subscribers do the routing today's `Route` enum used to. `env-filter`
|
|
# replaces env_logger's RUST_LOG parsing; `fmt` provides the writer + format
|
|
# scaffolding; `registry` composes layers. Pinned to ≥ 0.3.17: that's when
|
|
# `EnvFilter::builder().with_default_directive(...).from_env_lossy()` (used in
|
|
# `src/logging.rs`) stabilized on top of the per-layer filtering rework.
|
|
tracing-subscriber = { version = "0.3.17", default-features = false, features = ["ansi", "env-filter", "fmt", "registry"], optional = true }
|
|
# Only enable needed features - saves ~200KB by excluding debug, macros, multi_template
|
|
minijinja = { version = "2.20", default-features = false, features = ["builtins", "serde", "std_collections"] }
|
|
rayon = "1.12"
|
|
serde = { version = "1.0.228", features = ["derive"] }
|
|
serde_json = "1.0.145"
|
|
shell-escape = "0.1"
|
|
shellexpand = "3.1"
|
|
strsim = "0.11.1"
|
|
strum = { version = "0.28", features = ["derive"] }
|
|
synoptic = "2"
|
|
terminal_size = "0.4.3"
|
|
toml = { version = "1.0", features = ["preserve_order"] }
|
|
toml_edit = { version = "0.25", features = ["serde"] }
|
|
# tree-sitter-bash may lag behind tree-sitter-highlight (0.25.x works with
|
|
# tree-sitter-highlight 0.26.x).
|
|
# These are optional dependencies controlled by the "syntax-highlighting" feature.
|
|
# To build without C compilation requirements, use: cargo install worktrunk --no-default-features --features cli
|
|
tree-sitter-bash = { version = "0.25.1", optional = true }
|
|
tree-sitter-highlight = { version = "0.26", optional = true }
|
|
unicode-width = "0.2.1"
|
|
wrap-ansi = "0.1"
|
|
osc8 = "0.1.0"
|
|
supports-hyperlinks = "3"
|
|
home = "0.5.12"
|
|
humantime = { version = "2.2", optional = true }
|
|
once_cell = "1.21.4"
|
|
dirs = "6.0"
|
|
normalize-path = "0.2.1"
|
|
path-slash = "0.2"
|
|
pathdiff = "0.2"
|
|
which = "8.0.2"
|
|
# Cross-platform path canonicalization that avoids Windows verbatim paths (\\?\)
|
|
# which external tools like git cannot handle. On Unix, it's a no-op wrapper.
|
|
dunce = "1.0"
|
|
termimad = { version = "0.35.1", optional = true }
|
|
urlencoding = "2.1"
|
|
regex = "1.12.3"
|
|
ignore = "0.4"
|
|
reflink-copy = "0.1"
|
|
# Atomic, no-overwrite rename (renameat2 / renamex_np / MoveFileExW) for
|
|
# `--clobber` backups — closes the check-then-rename TOCTOU. Keeps the FFI
|
|
# (and its `unsafe`) out of this crate, which is `unsafe_code = "forbid"`.
|
|
renamore = "0.3"
|
|
dashmap = "6.2.1"
|
|
fs2 = "0.4.3"
|
|
sanitize-filename = "0.6.0"
|
|
schemars = { version = "1.2.1", features = ["derive"] }
|
|
# SHA-256 is used for persistent cache keys (e.g., summary diff hashes in
|
|
# `.git/wt/cache/summary/`). stdlib's `DefaultHasher` is not guaranteed
|
|
# stable across Rust versions, so we need a deterministic algorithm on disk.
|
|
sha2 = "0.11"
|
|
# Wordlists for the `codename` template filter. PINNED EXACT — bumping this
|
|
# can silently shift every existing user's codename-derived worktree path,
|
|
# orphaning their on-disk worktrees. Coordinate any version change as a
|
|
# breaking-change rollout (see `test_codename_outputs_are_stable` and
|
|
# `src/config/expansion.rs::codename`). We use only the static wordlists,
|
|
# not the random-name generator, so `default-rng` and `clap` stay off.
|
|
petname = { version = "=3.1.0", default-features = false, features = ["default-words"] }
|
|
# PINNED EXACT to match `petname`: its caret dependency otherwise permits a
|
|
# different proc-macro version, but the generated code and runtime re-exports
|
|
# require an exact match. Keep both pins in lockstep.
|
|
petname-macros = "=3.2.0"
|
|
|
|
tempfile = "3.27"
|
|
wait-timeout = "0.2"
|
|
|
|
# Interactive picker (`wt switch`) TUI stack, pulled in only by the `cli`
|
|
# feature's `dep:` entries. These are platform-neutral (skim 4.x is the
|
|
# ratatui/crossterm rewrite, which supports Windows), so they live in the main
|
|
# table — not under `[target.'cfg(unix)']` — or the picker fails to compile on
|
|
# Windows.
|
|
#
|
|
# skim 4.x is the ratatui-based rewrite; the 0.20 line used the now-abandoned
|
|
# tuikit backend (we previously vendored a patched skim-tuikit fork). The
|
|
# picker feeds rows as a custom `SkimItem` whose `display()` returns a ratatui
|
|
# `Line`, so `ratatui` + `ansi-to-tui` below convert the picker's pre-rendered
|
|
# ANSI rows into styled lines.
|
|
#
|
|
# `default-features = false` drops skim's own CLI (`clap` / `clap_mangen` / …):
|
|
# worktrunk embeds the picker as a library and never shells out to the `sk`
|
|
# binary. `frizbee` keeps skim's default fuzzy matcher.
|
|
# Floor is 4.8, not 4: the picker is written against 4.8's `ratatui 0.30.1`
|
|
# API, and earlier 4.x compile against an incompatible ratatui (`-Z
|
|
# minimal-versions` otherwise resolves skim 4.6 against ratatui 0.30.1 and fails
|
|
# to build).
|
|
# skim 5.3.1 (bumped in #3526) regressed the picker on the legacy Windows
|
|
# console — every picker PTY test failed with "Keyboard progressive enhancement
|
|
# not implemented for the legacy Windows API", reddening the Windows test job,
|
|
# so the pin held at the last-Windows-green 5.1.0. 5.5.0 guards that path ("Do
|
|
# not panic on push/pop keyboard enhancement flags failure") and is
|
|
# Windows-green again. Kept as an exact pin; it can relax to a range now that
|
|
# the keyboard-enhancement path no longer regresses the legacy console.
|
|
skim = { version = "=5.6.4", optional = true, default-features = false, features = ["frizbee"] }
|
|
# Pinned to skim's ratatui line so the `Line` type `display()` returns is the
|
|
# same one skim consumes. `ansi-to-tui` parses ANSI SGR codes into ratatui spans.
|
|
# Floor is 0.30.1: 0.30.0 is a broken release (its `#[instability::unstable]`
|
|
# attribute fails to compile).
|
|
ratatui = { version = "0.30.1", optional = true }
|
|
ansi-to-tui = { version = "8.0.1", optional = true }
|
|
# Already in the tree via skim (its event loop is tokio-based). The picker drives
|
|
# skim through the public `Skim::init`/`run` API rather than the all-in-one
|
|
# `Skim::run_with` so it can grab `event_sender()` and push `Event::Render` while
|
|
# collect mutates rows in place — skim 4.x renders on demand, not on a heartbeat.
|
|
# `Runtime::new()` needs `rt-multi-thread`; `event_sender()` is a `sync::mpsc`.
|
|
tokio = { version = "1.52.3", optional = true, default-features = false, features = ["rt-multi-thread", "sync"] }
|
|
# Picker row shortcuts: `alt-y` copies the selected branch to the system
|
|
# clipboard, `alt-o` opens its PR/MR URL in the browser. Both are cross-platform
|
|
# (so they sit in the main table alongside the picker stack, not under
|
|
# `[target.'cfg(unix)']`). `arboard` drops `default-features` to skip the `image`
|
|
# crate — the picker only copies text — while keeping `wayland-data-control` so
|
|
# Linux Wayland clipboards work alongside X11 and macOS.
|
|
arboard = { version = "3.4", optional = true, default-features = false, features = ["wayland-data-control"] }
|
|
open = { version = "5.3", optional = true }
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
# Unix-only syscall crates: `nix` (process/signal) backs the fsmonitor reap and
|
|
# `signal-hook` forwards Ctrl-C to child process groups. Gating keeps both out of
|
|
# the Windows dependency graph.
|
|
nix = { version = "0.31.3", default-features = false, features = ["process", "signal"] }
|
|
signal-hook = "0.4.1"
|
|
|
|
[build-dependencies]
|
|
vergen-gitcl = { version = "10.0.0", features = ["build"] }
|
|
|
|
[dev-dependencies]
|
|
insta = { version = "1.47.2", features = ["yaml", "redactions", "filters"] }
|
|
insta-cmd = "0.7"
|
|
rstest = "0.26"
|
|
tempfile = "3.27"
|
|
toml = "1.0"
|
|
criterion = "0.8"
|
|
portable-pty = "0.9"
|
|
regex = "1.12.3"
|
|
vt100 = "0.16.2"
|
|
ansi-to-html = "0.2.3"
|
|
wt-perf = { path = "tests/helpers/wt-perf" }
|
|
similar = "3.1.1"
|
|
jsonschema = { version = "0.49", default-features = false }
|
|
|
|
[[bench]]
|
|
name = "alias"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "completion"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "list"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "time_to_first_output"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "remove"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "prune"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "picker_preview"
|
|
harness = false
|
|
|
|
[lints.rust]
|
|
unsafe_code = "forbid"
|
|
|
|
# The profile that 'dist' will build with
|
|
[profile.dist]
|
|
inherits = "release"
|
|
lto = "thin"
|