871 Commits

Author SHA1 Message Date
Zanie Blue
c8214d1c3b Publish playgrounds using the release-playground environment (#24223) 2026-03-26 19:09:43 -05:00
Zanie Blue
0cfec2268c Use the release environment in publish-versions and publish-wasm (#24218) 2026-03-26 14:26:26 -05:00
Zanie Blue
d81266252a Use the release environment in publish-docs (#24214)
See https://github.com/astral-sh/ty/pull/3147
2026-03-26 12:05:28 -05:00
Micha Reiser
7973118f77 Mention AI policy in PR template (#24198)
Co-authored-by: David Peter <sharkdp@users.noreply.github.com>
2026-03-26 08:48:01 +01:00
Zanie Blue
3857db0d29 Bump the npm version before publish (#24178) 2026-03-25 10:55:12 -05:00
Zanie Blue
96f55d1788 Use trusted publishing for NPM packages (#24171)
If it breaks, it's @MichaReiser's fault
2026-03-25 09:40:02 -05:00
Alex Waygood
8e26042b5c Bump ecosystem-analyzer pin (#24136) 2026-03-23 14:14:24 +00:00
Alex Waygood
ee0aaf712c Bump ecosystem-analyzer pin (#24135) 2026-03-23 13:07:24 +00:00
renovate[bot]
8e20ee2450 Update Artifact GitHub Actions dependencies (#24116)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| actions/download-artifact | action | digest | `3e5f45b` → `484a0b5` |
|
[actions/download-artifact](https://redirect.github.com/actions/download-artifact)
| action | patch | `v8.0.0` → `v8.0.1` |

---

### Release Notes

<details>
<summary>actions/download-artifact (actions/download-artifact)</summary>

###
[`v8.0.1`](https://redirect.github.com/actions/download-artifact/releases/tag/v8.0.1)

[Compare
Source](https://redirect.github.com/actions/download-artifact/compare/v8...v8.0.1)

##### What's Changed

- Support for CJK characters in the artifact name by
[@&#8203;danwkennedy](https://redirect.github.com/danwkennedy) in
[#&#8203;471](https://redirect.github.com/actions/download-artifact/pull/471)
- Add a regression test for artifact name + content-type mismatches by
[@&#8203;danwkennedy](https://redirect.github.com/danwkennedy) in
[#&#8203;472](https://redirect.github.com/actions/download-artifact/pull/472)

**Full Changelog**:
<https://github.com/actions/download-artifact/compare/v8...v8.0.1>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Micha Reiser <micha@reiser.io>
2026-03-23 08:15:27 +00:00
renovate[bot]
2daaf29d90 Update taiki-e/install-action action to v2.68.33 (#24130) 2026-03-23 02:04:43 +00:00
renovate[bot]
1b8d317524 Update taiki-e/install-action action to v2.68.32 (#24123) 2026-03-22 21:01:55 -04:00
renovate[bot]
eb9804dca4 Update Swatinem/rust-cache action to v2.9.1 (#24127) 2026-03-23 00:46:51 +00:00
renovate[bot]
ce610bb00a Update dependency astral-sh/uv to v0.10.12 (#24117) 2026-03-23 00:28:27 +00:00
Alex Waygood
67bb58557c Bump ecosystem-analyzer pin to latest upstream SHA (#24090)
## Summary

cc6b94a -> 79409a4

## Test Plan

<!-- How was it tested? -->

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-20 21:16:36 +00:00
David Peter
beb543b5c6 [ty] ecosystem-analyzer: Fail on newly panicking projects (#24043)
## Summary

* Fail the ecosystem-analyzer CI run if new projects result in a ty
panic
* Add a new table to the PR comment if there are projects with large
timing diffs (> 50%)

## Test Plan

- [x] Clean CI runs on this PR
- [x] Failing CI run on [this test
PR](https://github.com/astral-sh/ruff/pull/24046)
2026-03-19 10:47:56 +01:00
David Peter
dc59ffa9c6 [ty] Remove the mypy_primer CI workflow (#24016)
## Summary

Remove the mypy_primer CI workflow and several files/scripts associated
with it.

## Test Plan

Successful CI run on this PR
2026-03-17 15:49:55 +01:00
renovate[bot]
a32c209d18 Update prek dependencies (#23980)
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
|
[astral-sh/ruff-pre-commit](https://redirect.github.com/astral-sh/ruff-pre-commit)
| repository | patch | `v0.15.4` → `v0.15.5` | `v0.15.6` |
|
[igorshubovych/markdownlint-cli](https://redirect.github.com/igorshubovych/markdownlint-cli)
| repository | minor | `v0.47.0` → `v0.48.0` | |
|
[zizmorcore/zizmor-pre-commit](https://redirect.github.com/zizmorcore/zizmor-pre-commit)
| repository | minor | `v1.22.0` → `v1.23.1` | |

Note: The `pre-commit` manager in Renovate is not supported by the
`pre-commit` maintainers or community. Please do not report any problems
there, instead [create a Discussion in the Renovate
repository](https://redirect.github.com/renovatebot/renovate/discussions/new)
if you have any questions.

---

### Release Notes

<details>
<summary>astral-sh/ruff-pre-commit (astral-sh/ruff-pre-commit)</summary>

###
[`v0.15.5`](https://redirect.github.com/astral-sh/ruff-pre-commit/releases/tag/v0.15.5)

[Compare
Source](https://redirect.github.com/astral-sh/ruff-pre-commit/compare/v0.15.4...v0.15.5)

See: <https://github.com/astral-sh/ruff/releases/tag/0.15.5>

</details>

<details>
<summary>igorshubovych/markdownlint-cli
(igorshubovych/markdownlint-cli)</summary>

###
[`v0.48.0`](https://redirect.github.com/igorshubovych/markdownlint-cli/releases/tag/v0.48.0)

[Compare
Source](https://redirect.github.com/igorshubovych/markdownlint-cli/compare/v0.47.0...v0.48.0)

- Update all dependencies via `Dependabot`

</details>

<details>
<summary>zizmorcore/zizmor-pre-commit
(zizmorcore/zizmor-pre-commit)</summary>

###
[`v1.23.1`](https://redirect.github.com/zizmorcore/zizmor-pre-commit/releases/tag/v1.23.1)

[Compare
Source](https://redirect.github.com/zizmorcore/zizmor-pre-commit/compare/v1.23.0...v1.23.1)

See: <https://github.com/zizmorcore/zizmor/releases/tag/v1.23.1>

###
[`v1.23.0`](https://redirect.github.com/zizmorcore/zizmor-pre-commit/releases/tag/v1.23.0)

[Compare
Source](https://redirect.github.com/zizmorcore/zizmor-pre-commit/compare/v1.22.0...v1.23.0)

See: <https://github.com/zizmorcore/zizmor/releases/tag/v1.23.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2026-03-17 23:48:54 +09:00
David Peter
df3922842c [ty] ecosystem-analyzer: Inline diffs and panic messages (#24015)
## Summary

Pulls in some ecosystem analyzer changes that allow us to see diagnostic
diffs inline (will be collapsed into a `<details>` block if there are
more of them, and will be randomly sampled if there are too many of them
to fit inside a comment):

<img width="833" height="934" alt="image"
src="https://github.com/user-attachments/assets/c66cd458-5328-4e1e-a86d-d54ab3ca2005"
/>

And we can now see panic messages in the HTML report:

<img width="1003" height="310" alt="image"
src="https://github.com/user-attachments/assets/421f94c1-568b-4a07-9c8c-2300b7f233e7"
/>



## Test Plan

Various test runs on dummy PRs
2026-03-17 12:37:28 +00:00
renovate[bot]
a687f78c4e Update astral-sh/setup-uv action to v7.6.0 (#24003)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 17:15:08 +00:00
David Peter
ffbf1e80db [ty] Make ecosystem-analyzer the default workflow (#23996)
## Summary

- Make ecosystem-analyzer the default workflow that runs on ty PRs
- Make the mypy_primer workflow opt-in (using a `mypy_primer` label)

## Test Plan

- [x]  ecosystem-analyzer runs on this PR
- [x] mypy_primer can be triggered by adding a label
2026-03-16 11:34:17 +01:00
renovate[bot]
b66754e293 Update docker/setup-buildx-action action to v4 (#23992)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 10:34:48 +01:00
renovate[bot]
9b58d66f36 Update actions/download-artifact digest to 484a0b5 (#23974)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| actions/download-artifact | action | digest | `70fc10c` → `484a0b5` |

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Micha Reiser <micha@reiser.io>
2026-03-16 09:34:19 +00:00
renovate[bot]
348cf1d047 Update docker/metadata-action action to v6 (#23991)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 10:34:07 +01:00
renovate[bot]
2999f4e155 Update docker/login-action action to v4 (#23990)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 10:33:29 +01:00
renovate[bot]
1ef5be2ab0 Update docker/build-push-action action to v7 (#23989)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 10:32:57 +01:00
renovate[bot]
8b63cf197d Update dependency astral-sh/uv to v0.10.10 (#23977)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 07:41:22 +00:00
renovate[bot]
361e95e295 Update cargo-bins/cargo-binstall action to v1.17.7 (#23975)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 08:31:35 +01:00
renovate[bot]
a916511dcb Update CodSpeedHQ/action action to v4.11.1 (#23976)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 08:31:21 +01:00
renovate[bot]
7a8ae50075 Update actions/setup-node action to v6.3.0 (#23987)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 08:29:15 +01:00
renovate[bot]
aeec6c8d6b Update taiki-e/install-action action to v2.68.25 (#23986)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 08:27:10 +01:00
Alex Waygood
7dfefd9a62 Bump typing conformance suite SHA (#23951)
Update CONFORMANCE_SUITE_COMMIT from
e6b1896baa7c9bb6ba6e563a66aa1fb717698eb9
to 1df1565c69730d88ce6877009d268ba1d602af1e.

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-13 22:34:11 +00:00
Jack O'Connor
a9a544c30d [ty]: make possibly-missing-attribute ignored by default
This warning has a lot of false positives, and other typecheckers don't
report it. The previous commit split out `possibly-missing-submodule` as
a separate default-on warning, which was our last blocker for disabling
this one.
2026-03-12 16:48:14 -07:00
renovate[bot]
74c7fe849f Update astral-sh/setup-uv action to v7.5.0 (#23922) 2026-03-12 19:36:09 -04:00
Alex Waygood
2ca0b368e2 Update CONFORMANCE_SUITE_COMMIT to new hash (#23895) 2026-03-11 16:32:30 +00:00
David Peter
7200fb96bd [ty] Show flaky project names in ecosystem report (#23854)
## Summary

Show all flaky project names in a tooltip, no matter if they are
included in the report or not.

## Test Plan

- [This run](https://github.com/astral-sh/ruff/actions/runs/22895734470)
2026-03-10 11:05:05 +01:00
Alex Waygood
e350fafc8e Update conformance suite commit reference (#23835) 2026-03-09 12:48:38 +00:00
David Peter
b0617e8a9c [ty] Add myself to the reviewer pool again (#23833)
## Summary

This reverts commit dcab6f2dca.
2026-03-09 12:08:05 +00:00
renovate[bot]
5c863c927e Update Artifact GitHub Actions dependencies (#23829)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[actions/download-artifact](https://redirect.github.com/actions/download-artifact)
| action | major | `v7.0.0` → `v8.0.0` |
|
[actions/upload-artifact](https://redirect.github.com/actions/upload-artifact)
| action | major | `v6.0.0` → `v7.0.0` |

---

### Release Notes

<details>
<summary>actions/download-artifact (actions/download-artifact)</summary>

###
[`v8.0.0`](https://redirect.github.com/actions/download-artifact/releases/tag/v8.0.0)

[Compare
Source](https://redirect.github.com/actions/download-artifact/compare/v7.0.0...v8.0.0)

##### v8 - What's new

##### Direct downloads

To support direct uploads in `actions/upload-artifact`, the action will
no longer attempt to unzip all downloaded files. Instead, the action
checks the `Content-Type` header ahead of unzipping and skips non-zipped
files. Callers wishing to download a zipped file as-is can also set the
new `skip-decompress` parameter to `false`.

##### Enforced checks (breaking)

A previous release introduced digest checks on the download. If a
download hash didn't match the expected hash from the server, the action
would log a warning. Callers can now configure the behavior on mismatch
with the `digest-mismatch` parameter. To be secure by default, we are
now defaulting the behavior to `error` which will fail the workflow run.

##### ESM

To support new versions of the @&#8203;actions/\* packages, we've
upgraded the package to ESM.

##### What's Changed

- Don't attempt to un-zip non-zipped downloads by
[@&#8203;danwkennedy](https://redirect.github.com/danwkennedy) in
[#&#8203;460](https://redirect.github.com/actions/download-artifact/pull/460)
- Add a setting to specify what to do on hash mismatch and default it to
`error` by
[@&#8203;danwkennedy](https://redirect.github.com/danwkennedy) in
[#&#8203;461](https://redirect.github.com/actions/download-artifact/pull/461)

**Full Changelog**:
<https://github.com/actions/download-artifact/compare/v7...v8.0.0>

</details>

<details>
<summary>actions/upload-artifact (actions/upload-artifact)</summary>

###
[`v7.0.0`](https://redirect.github.com/actions/upload-artifact/releases/tag/v7.0.0)

[Compare
Source](https://redirect.github.com/actions/upload-artifact/compare/v6.0.0...v7.0.0)

#### v7 What's new

##### Direct Uploads

Adds support for uploading single files directly (unzipped). Callers can
set the new `archive` parameter to `false` to skip zipping the file
during upload. Right now, we only support single files. The action will
fail if the glob passed resolves to multiple files. The `name` parameter
is also ignored with this setting. Instead, the name of the artifact
will be the name of the uploaded file.

##### ESM

To support new versions of the `@actions/*` packages, we've upgraded the
package to ESM.

#### What's Changed

- Add proxy integration test by
[@&#8203;Link-](https://redirect.github.com/Link-) in
[#&#8203;754](https://redirect.github.com/actions/upload-artifact/pull/754)
- Upgrade the module to ESM and bump dependencies by
[@&#8203;danwkennedy](https://redirect.github.com/danwkennedy) in
[#&#8203;762](https://redirect.github.com/actions/upload-artifact/pull/762)
- Support direct file uploads by
[@&#8203;danwkennedy](https://redirect.github.com/danwkennedy) in
[#&#8203;764](https://redirect.github.com/actions/upload-artifact/pull/764)

#### New Contributors

- [@&#8203;Link-](https://redirect.github.com/Link-) made their first
contribution in
[#&#8203;754](https://redirect.github.com/actions/upload-artifact/pull/754)

**Full Changelog**:
<https://github.com/actions/upload-artifact/compare/v6...v7.0.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 08:04:11 +00:00
renovate[bot]
85bbb3a4e9 Update actions/attest-build-provenance action to v4 (#23828) 2026-03-08 22:42:38 -04:00
renovate[bot]
10c0e052aa Update CodSpeedHQ/action action to v4.11.0 (#23826) 2026-03-08 22:42:10 -04:00
renovate[bot]
275e28cce1 Update taiki-e/install-action action to v2.68.16 (#23825) 2026-03-08 22:41:56 -04:00
renovate[bot]
f131f439ab Update PyO3/maturin-action action to v1.50.1 (#23821) 2026-03-08 22:13:44 -04:00
renovate[bot]
5abba5f087 Update dependency astral-sh/uv to v0.10.9 (#23817) 2026-03-08 22:12:53 -04:00
renovate[bot]
880d191487 Update cargo-bins/cargo-binstall action to v1.17.6 (#23816) 2026-03-08 22:12:46 -04:00
Alex Waygood
f9324a5bf6 Update conformance suite commit hash (#23746)
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-05 20:04:08 +00:00
Alex Waygood
015217e485 Update conformance suite commit hash (#23719)
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-04 22:06:50 +00:00
Brent Westbrook
d7efaf45e3 Fail CI on new linter ecosystem panics (#23597)
Summary
--

The huge number of changes in
https://github.com/astral-sh/ruff/pull/22205#issuecomment-3696660639
should have
obviously been a red flag, but I think it would be nice if CI failed
when new
ecosystem panics were introduced. This PR adds a check for diagnostic
lines that
start with `panic: Panicked at crates/`, raises a `ToolError` if any are
found
in the results from the comparison executable, and then ~~also exits
non-zero if
any errors are returned~~ fails the CI run if the corresponding error
message
was printed.

After trying this out in CI, I opted not to change the script's exit
code itself
because that suppressed the ecosystem comment. It feels a little hackier
this way but preserves the behavior I wanted of both failing CI and
still getting
the ecosystem comment to help with debugging.

Test Plan
--

Local testing on the 0.15.3 tag showing that ruff-ecosystem exited
non-zero and
some manual testing in CI, as you can see below.
2026-03-04 11:14:10 -05:00
Alex Waygood
bb80aff1be [ty] Avoid the mandatory "ecosystem-analyzer workflow run cancelled" notification every time you make a PR (#23695)
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-03 12:14:34 +00:00
Alex Waygood
4c360c6323 Update conformance suite commit hash (#23693) 2026-03-03 11:04:46 +00:00
renovate[bot]
080644e96c Update Artifact GitHub Actions dependencies (#23676)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| actions/download-artifact | action | digest | `37930b1` → `70fc10c` |
| actions/upload-artifact | action | digest | `b7c566a` → `bbbca2d` |

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My40My4yIiwidXBkYXRlZEluVmVyIjoiNDMuNDMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2026-03-02 12:16:21 +00:00