11380 Commits

Author SHA1 Message Date
Justace Clutter 15b23b4e4a Add a warning for the use of Viewport with Window targets (#21830)
# Objective

This PR adds a warning in the Viewport portion of the Camera class to
highlight the need to scale to physical pixels. This PR fixes #21828

## Solution

Adds a warning block in the class documentation

## Testing

I build the documentation and it renders to the following:

<img width="827" height="496" alt="Camrea_Viewport_Warning"
src="https://github.com/user-attachments/assets/d81b82c6-565b-450c-89ed-f6643f22ea23"
/>

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: ickshonpe <david.curthoys@googlemail.com>
Co-authored-by: François Mockers <francois.mockers@vleue.com>
Co-authored-by: Carter Anderson <mcanders1@gmail.com>
2026-05-06 03:35:37 +00:00
DavidCrossman e761a1799b Use <[T]>::array_windows for exact size windows (#24146)
# Objective

- Reduce panicking code and bounds checks.

## Solution

- Replace `<[T]>::windows` with `<[T]>::array_windows` when the window
size is constant.
- Update MSRV in affected crates (and fix the new warnings).

## Testing

- Ran `cargo test -p bevy_mesh -p bevy_gizmos -p bevy_math -p
bevy_input_focus`

## MSRV

The main `bevy` crate has a MSRV of 1.95; I've increased the MSRV to
1.94 (when `array_windows` was stabilised) for `bevy_math` and
`bevy_input_focus` in this PR. If it's too early to increase the MSRV, I
can drop the changes to these crates in this PR or convert this PR to
draft.
2026-05-06 01:24:49 +00:00
ickshonpe 35b9a21251 Add a translate method to Rect (#24139)
# Objective

Add a `translate` method to `Rect`.

## Solution

Add a `translate` method to `Rect`.

## Testing

Added a `rect_translate` test to the `rect` module.
2026-05-06 00:25:55 +00:00
ickshonpe 152dc2f075 ComputedNode::resolve_clip_rect margins fix (#24138)
# Objective

The `resolve_clip_rect` function on `ComputedNode` wasn't adding the
margin from `OverflowClipMargin`. This only affected picking, not
rendering, as `update_clipping` has its own clipping calculations.

## Solution

* Inflate the clipping rect in `resolve_clip_rect` by the margin value
from `OverflowClipMargin` (after scaling as the margin is logical).
* Removed the duplicate calculations from `update_clipping`. 
* Added two basic tests.

## Testing

Added two new tests to the `ui_node` module:
`overflow_clip_margin_boxes` and overflow_clip_margin_is_logical`.
2026-05-06 00:23:49 +00:00
Carter Anderson 48b4c010c2 Filter out Tuple fields when generating props (#24144)
# Objective

Setting fields on tuple Scene Components breaks down because their
fields are improperly considered "props".

## Solution

Properly filter out tuple fields.

## Testing

- Added a test!
2026-05-06 00:23:15 +00:00
Seliksi cb02e96b6d Move bevy_window, bevy_input_focus, custom_cursor features to alternate feature collections (#22488)
Related: Cargo Feature Collections
https://github.com/bevyengine/bevy/pull/21472
## Context:

> If `default_app` is meant to be
> > The core pieces that most apps need. This serves as a baseline
feature set for other higher level feature collections (such as "2d" and
"3d"). It is also useful as a baseline feature set for scenarios like
headless apps that require no rendering (ex: command line tools,
servers, etc).
>
> why should `bevy_window` / `custom_cursor` be there? I would expect
these to be in `common_api`.

\- Me,
https://discord.com/channels/691052431525675048/692572690833473578/1460424003486224517

> Imo this is a mistake. Can you open a PR with a migration guide
please?

\- Alice,
https://discord.com/channels/691052431525675048/692572690833473578/1460429142376845404

## Solution


- <strike>Move `bevy_window`, `bevy_input_focus`, `custom_cursor`
features from `default_app` collection to `common_api`</strike>

- From `default_app` collection move: `bevy_window` to `common_api`,
`bevy_input_focus` to `ui_api`, and `custom_cursor` to
`default_platform`.

## Testing
- Did you test these changes? If so, how?

Confirmed that `default_app` collection no longer introduces the crates
to the dependency tree:
```sh
$ git checkout bevy/main -q

$ cargo tree --no-default-features -Fdefault_app -e normal | grep -e bevy_window -e bevy_input_focus -e custom_cursor
    ├── bevy_input_focus v0.18.0-dev
    │   ├── bevy_window v0.18.0-dev
    ├── bevy_window v0.18.0-dev (*)
        ├── bevy_input_focus v0.18.0-dev (*)
        ├── bevy_window v0.18.0-dev (*)

$ git checkout reduced-feature-group
Previous HEAD position was f8ea30965 Add support for reflected math operations ✖️ (#22478)
Switched to branch 'reduced-feature-group'

$ cargo tree --no-default-features -Fdefault_app -e normal | grep -e bevy_window -e bevy_input_focus -e custom_cursor

$
```

- How can other people (reviewers) test your changes? Is there anything
specific they need to know?

I'm not sure how cross-cutting changes to features have to be since I
haven't worked with such a complicated feature set before, so it's
possible I've omitted a change to some place that needs to be updated.
Please point it out to me, thank you.

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Carter Anderson <mcanders1@gmail.com>
2026-05-06 00:05:19 +00:00
François Mockers 9e85b052d8 cache packages from ppa:kisak/turtle (#24143)
# Objective

- ppa:kisak/turtle has been unstable lately
- Improve CI stability

## Solution

- Cache the packages in actions cache
- Use the cache if available, otherwise clean install

## Testing

- I did the same changes to the example runner
2026-05-05 23:13:01 +00:00
Freyja-moth 027c560751 Add Disabled/Enabled state scoped components (#24142)
# Objective

Fixes #19087

## Solution

Add 

- `DisableWhen`
- `DisableOnEnter`
- `DisableOnExit`
- `EnableWhen`
- `EnableOnEnter`
- `EnableOnExit`

## Testing

This is the exact same code copied over from
`DespawnWhen`/`DespawnOnEnter`/`DespawnOnExit`, so it should work. If
tests are needed lmk and I'll add them

## Showcase

```rust
#[derive(Component, Clone, Default)]
pub struct Player;

#[derive(States, Hash, PartialEq, Eq, Clone, Default, Debug)]
pub enum GameState {
    #[default]
    MainMenu,
    Loading,
    InGame
}

fn main() -> AppExit {
    App::new()
        .init_state::<GameState>()
        .add_systems(Startup, player.spawn())
        .run()
}

fn player() -> impl Scene {
    bsn! {
        Disabled
        Player
        EnableOnEnter(GameState::InGame)
        DisableOnExit(GameState::InGame)
    }
}
```
2026-05-05 23:12:00 +00:00
dependabot[bot] 4f1bdaa156 Update getrandom requirement from 0.3 to 0.4 (#23069)
Updates the requirements on
[getrandom](https://github.com/rust-random/getrandom) to permit the
latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md">getrandom's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-random/getrandom/compare/v0.4.0...v0.4.1">0.4.1</a>
- 2026-02-03</h2>
<h3>Fixed</h3>
<ul>
<li>Documentation build on docs.rs <a
href="https://redirect.github.com/rust-random/getrandom/issues/801">#801</a></li>
</ul>
<p><a
href="https://redirect.github.com/rust-random/getrandom/issues/801">#801</a>:
<a
href="https://redirect.github.com/rust-random/getrandom/pull/801">rust-random/getrandom#801</a></p>
<h2><a
href="https://github.com/rust-random/getrandom/compare/v0.3.4...v0.4.0">0.4.0</a>
- 2026-02-02</h2>
<h3>Added</h3>
<ul>
<li><code>RawOsError</code> type alias <a
href="https://redirect.github.com/rust-random/getrandom/issues/739">#739</a></li>
<li><code>SysRng</code> behind new feature <code>sys_rng</code> <a
href="https://redirect.github.com/rust-random/getrandom/issues/751">#751</a></li>
<li>WASIp3 support <a
href="https://redirect.github.com/rust-random/getrandom/issues/779">#779</a></li>
<li><code>extern_impl</code> opt-in backend <a
href="https://redirect.github.com/rust-random/getrandom/issues/786">#786</a>
<a
href="https://redirect.github.com/rust-random/getrandom/issues/794">#794</a></li>
<li>Motor OS support <a
href="https://redirect.github.com/rust-random/getrandom/issues/797">#797</a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>Use Edition 2024 and MSRV 1.85 <a
href="https://redirect.github.com/rust-random/getrandom/issues/749">#749</a></li>
</ul>
<p><a
href="https://redirect.github.com/rust-random/getrandom/issues/739">#739</a>:
<a
href="https://redirect.github.com/rust-random/getrandom/pull/739">rust-random/getrandom#739</a>
<a
href="https://redirect.github.com/rust-random/getrandom/issues/749">#749</a>:
<a
href="https://redirect.github.com/rust-random/getrandom/pull/749">rust-random/getrandom#749</a>
<a
href="https://redirect.github.com/rust-random/getrandom/issues/751">#751</a>:
<a
href="https://redirect.github.com/rust-random/getrandom/pull/751">rust-random/getrandom#751</a>
<a
href="https://redirect.github.com/rust-random/getrandom/issues/779">#779</a>:
<a
href="https://redirect.github.com/rust-random/getrandom/pull/779">rust-random/getrandom#779</a>
<a
href="https://redirect.github.com/rust-random/getrandom/issues/786">#786</a>:
<a
href="https://redirect.github.com/rust-random/getrandom/pull/786">rust-random/getrandom#786</a>
<a
href="https://redirect.github.com/rust-random/getrandom/issues/794">#794</a>:
<a
href="https://redirect.github.com/rust-random/getrandom/pull/794">rust-random/getrandom#794</a></p>
<h2>[0.3.4] - 2025-10-14</h2>
<h3>Major change to <code>wasm_js</code> backend</h3>
<p>Now, when the <code>wasm_js</code> feature is enabled, the
<code>wasm_js</code> backend will be used
by default. Users of <code>wasm32-unknown-unknown</code> targeting
JavaScript environments
like the Web and Node.js will no longer need to specify:</p>
<pre><code>--cfg getrandom_backend=&quot;wasm_js&quot;
</code></pre>
<p>in <code>RUSTFLAGS</code> for the crate to compile. They can now
simple enable a feature.</p>
<p>Note: this should not affect non-JS users of the
<code>wasm32-unknown-unknown</code>
target. Using <code>--cfg getrandom_backend</code> will still override
the source of
randomness <em>even if</em> the <code>wasm_js</code> feature is enabled.
This includes
<code>--cfg getrandom_backend=custom</code> and <code>--cfg
getrandom_backend=unsupported</code>.</p>
<p>For more information, see the discussions in <a
href="https://redirect.github.com/rust-random/getrandom/issues/671">#671</a>,
<a
href="https://redirect.github.com/rust-random/getrandom/issues/675">#675</a>,
and <a
href="https://redirect.github.com/rust-random/getrandom/issues/730">#730</a>.</p>
<h3>Added</h3>
<ul>
<li><code>unsupported</code> opt-in backend <a
href="https://redirect.github.com/rust-random/getrandom/issues/667">#667</a></li>
<li><code>windows_legacy</code> opt-in backend <a
href="https://redirect.github.com/rust-random/getrandom/issues/724">#724</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/rust-random/getrandom/commits/v0.4.1">compare
view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR 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>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Carter Anderson <mcanders1@gmail.com>
2026-05-05 23:11:21 +00:00
dependabot[bot] a2e47d0793 Update intel_tex_2 requirement from 0.4.0 to 0.5.0 (#22447)
Updates the requirements on
[intel_tex_2](https://github.com/Traverse-Research/intel-tex-rs-2) to
permit the latest version.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Traverse-Research/intel-tex-rs-2/commit/9a05fb8926d635014fddfcadb02ffd5c84822688"><code>9a05fb8</code></a>
Release 0.5.0 (<a
href="https://redirect.github.com/Traverse-Research/intel-tex-rs-2/issues/37">#37</a>)</li>
<li><a
href="https://github.com/Traverse-Research/intel-tex-rs-2/commit/f622631ac87056ef2bafd6468f6a7d703bea13dc"><code>f622631</code></a>
Add <code>ispc_texcomp_astc</code> compiled against static Windows/MSVC
CRT (<a
href="https://redirect.github.com/Traverse-Research/intel-tex-rs-2/issues/35">#35</a>)</li>
<li><a
href="https://github.com/Traverse-Research/intel-tex-rs-2/commit/31619c18a5438293600a3f5b6d6d89a92707cff7"><code>31619c1</code></a>
CI: Sync up <code>generate-binaries</code> with
<code>ispc-downsampler</code> slightly to include `...</li>
<li><a
href="https://github.com/Traverse-Research/intel-tex-rs-2/commit/446eb43d5fd21a1da3646f6cc4b7361b82277689"><code>446eb43</code></a>
🔖 Fix typo (<a
href="https://redirect.github.com/Traverse-Research/intel-tex-rs-2/issues/33">#33</a>)</li>
<li><a
href="https://github.com/Traverse-Research/intel-tex-rs-2/commit/7a262278c8a54014bb54f321430c7574713cf7b6"><code>7a26227</code></a>
🎍 Consistent encode settings referencing (<a
href="https://redirect.github.com/Traverse-Research/intel-tex-rs-2/issues/32">#32</a>)</li>
<li>See full diff in <a
href="https://github.com/Traverse-Research/intel-tex-rs-2/compare/0.4.0...0.5.0">compare
view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR 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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Carter Anderson <mcanders1@gmail.com>
2026-05-05 23:00:18 +00:00
dependabot[bot] 474ee77d12 Bump github/codeql-action from 4.32.6 to 4.35.2 (#24051)
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 4.32.6 to 4.35.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.35.2</h2>
<ul>
<li>The undocumented TRAP cache cleanup feature that could be enabled
using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment
variable is deprecated and will be removed in May 2026. If you are
affected by this, we recommend disabling TRAP caching by passing the
<code>trap-caching: false</code> input to the <code>init</code> Action.
<a
href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li>
<li>The Git version 2.36.0 requirement for improved incremental analysis
now only applies to repositories that contain submodules. <a
href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li>
<li>Python analysis on GHES no longer extracts the standard library,
relying instead on models of the standard library. This should result in
significantly faster extraction and analysis times, while the effect on
alerts should be minimal. <a
href="https://redirect.github.com/github/codeql-action/pull/3794">#3794</a></li>
<li>Fixed a bug in the validation of OIDC configurations for private
registries that was added in CodeQL Action 4.33.0 / 3.33.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3807">#3807</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2">2.25.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3823">#3823</a></li>
</ul>
<h2>v4.35.1</h2>
<ul>
<li>Fix incorrect minimum required Git version for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>: it should have been 2.36.0, not 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3781">#3781</a></li>
</ul>
<h2>v4.35.0</h2>
<ul>
<li>Reduced the minimum Git version required for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> from 2.38.0 to 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3767">#3767</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.1">2.25.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3773">#3773</a></li>
</ul>
<h2>v4.34.1</h2>
<ul>
<li>Downgrade default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.3">2.24.3</a>
due to issues with a small percentage of Actions and JavaScript
analyses. <a
href="https://redirect.github.com/github/codeql-action/pull/3762">#3762</a></li>
</ul>
<h2>v4.34.0</h2>
<ul>
<li>Added an experimental change which disables TRAP caching when <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> is enabled, since improved incremental analysis
supersedes TRAP caching. This will improve performance and reduce
Actions cache usage. We expect to roll this change out to everyone in
March. <a
href="https://redirect.github.com/github/codeql-action/pull/3569">#3569</a></li>
<li>We are rolling out improved incremental analysis to C/C++ analyses
that use build mode <code>none</code>. We expect this rollout to be
complete by the end of April 2026. <a
href="https://redirect.github.com/github/codeql-action/pull/3584">#3584</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.0">2.25.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3585">#3585</a></li>
</ul>
<h2>v4.33.0</h2>
<ul>
<li>
<p>Upcoming change: Starting April 2026, the CodeQL Action will skip
collecting file coverage information on pull requests to improve
analysis performance. File coverage information will still be computed
on non-PR analyses. Pull request analyses will log a warning about this
upcoming change. <a
href="https://redirect.github.com/github/codeql-action/pull/3562">#3562</a></p>
<p>To opt out of this change:</p>
<ul>
<li><strong>Repositories owned by an organization:</strong> Create a
custom repository property with the name
<code>github-codeql-file-coverage-on-prs</code> and the type
&quot;True/false&quot;, then set this property to <code>true</code> in
the repository's settings. For more information, see <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">Managing
custom properties for repositories in your organization</a>.
Alternatively, if you are using an advanced setup workflow, you can set
the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable
to <code>true</code> in your workflow.</li>
<li><strong>User-owned repositories using default setup:</strong> Switch
to an advanced setup workflow and set the
<code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable to
<code>true</code> in your workflow.</li>
<li><strong>User-owned repositories using advanced setup:</strong> Set
the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable
to <code>true</code> in your workflow.</li>
</ul>
</li>
<li>
<p>Fixed <a
href="https://redirect.github.com/github/codeql-action/issues/3555">a
bug</a> which caused the CodeQL Action to fail loading repository
properties if a &quot;Multi select&quot; repository property was
configured for the repository. <a
href="https://redirect.github.com/github/codeql-action/pull/3557">#3557</a></p>
</li>
<li>
<p>The CodeQL Action now loads <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">custom
repository properties</a> on GitHub Enterprise Server, enabling the
customization of features such as
<code>github-codeql-disable-overlay</code> that was previously only
available on GitHub.com. <a
href="https://redirect.github.com/github/codeql-action/pull/3559">#3559</a></p>
</li>
<li>
<p>Once <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registries</a> can be configured with OIDC-based authentication
for organizations, the CodeQL Action will now be able to accept such
configurations. <a
href="https://redirect.github.com/github/codeql-action/pull/3563">#3563</a></p>
</li>
<li>
<p>Fixed the retry mechanism for database uploads. Previously this would
fail with the error &quot;Response body object should not be disturbed
or locked&quot;. <a
href="https://redirect.github.com/github/codeql-action/pull/3564">#3564</a></p>
</li>
<li>
<p>A warning is now emitted if the CodeQL Action detects a repository
property whose name suggests that it relates to the CodeQL Action, but
which is not one of the properties recognised by the current version of
the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3570">#3570</a></p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>4.35.3 - 01 May 2026</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.19.3 and earlier. These versions of
CodeQL were discontinued on 9 April 2026 alongside GitHub Enterprise
Server 3.15, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3837">#3837</a></li>
<li>Configurations for private registries that use Cloudsmith or GCP
OIDC are now accepted. <a
href="https://redirect.github.com/github/codeql-action/pull/3850">#3850</a></li>
<li>Best-effort connection tests for private registries now use
<code>GET</code> requests instead of <code>HEAD</code> for better
compatibility with various registry implementations. For NuGet feeds,
the test is now always performed against the service index. <a
href="https://redirect.github.com/github/codeql-action/pull/3853">#3853</a></li>
<li>Fixed a bug where two diagnostics produced within the same
millisecond could overwrite each other on disk, causing one of them to
be lost. <a
href="https://redirect.github.com/github/codeql-action/pull/3852">#3852</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.3">2.25.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3865">#3865</a></li>
</ul>
<h2>4.35.2 - 15 Apr 2026</h2>
<ul>
<li>The undocumented TRAP cache cleanup feature that could be enabled
using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment
variable is deprecated and will be removed in May 2026. If you are
affected by this, we recommend disabling TRAP caching by passing the
<code>trap-caching: false</code> input to the <code>init</code> Action.
<a
href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li>
<li>The Git version 2.36.0 requirement for improved incremental analysis
now only applies to repositories that contain submodules. <a
href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li>
<li>Python analysis on GHES no longer extracts the standard library,
relying instead on models of the standard library. This should result in
significantly faster extraction and analysis times, while the effect on
alerts should be minimal. <a
href="https://redirect.github.com/github/codeql-action/pull/3794">#3794</a></li>
<li>Fixed a bug in the validation of OIDC configurations for private
registries that was added in CodeQL Action 4.33.0 / 3.33.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3807">#3807</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2">2.25.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3823">#3823</a></li>
</ul>
<h2>4.35.1 - 27 Mar 2026</h2>
<ul>
<li>Fix incorrect minimum required Git version for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>: it should have been 2.36.0, not 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3781">#3781</a></li>
</ul>
<h2>4.35.0 - 27 Mar 2026</h2>
<ul>
<li>Reduced the minimum Git version required for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> from 2.38.0 to 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3767">#3767</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.1">2.25.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3773">#3773</a></li>
</ul>
<h2>4.34.1 - 20 Mar 2026</h2>
<ul>
<li>Downgrade default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.3">2.24.3</a>
due to issues with a small percentage of Actions and JavaScript
analyses. <a
href="https://redirect.github.com/github/codeql-action/pull/3762">#3762</a></li>
</ul>
<h2>4.34.0 - 20 Mar 2026</h2>
<ul>
<li>Added an experimental change which disables TRAP caching when <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> is enabled, since improved incremental analysis
supersedes TRAP caching. This will improve performance and reduce
Actions cache usage. We expect to roll this change out to everyone in
March. <a
href="https://redirect.github.com/github/codeql-action/pull/3569">#3569</a></li>
<li>We are rolling out improved incremental analysis to C/C++ analyses
that use build mode <code>none</code>. We expect this rollout to be
complete by the end of April 2026. <a
href="https://redirect.github.com/github/codeql-action/pull/3584">#3584</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.0">2.25.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3585">#3585</a></li>
</ul>
<h2>4.33.0 - 16 Mar 2026</h2>
<ul>
<li>
<p>Upcoming change: Starting April 2026, the CodeQL Action will skip
collecting file coverage information on pull requests to improve
analysis performance. File coverage information will still be computed
on non-PR analyses. Pull request analyses will log a warning about this
upcoming change. <a
href="https://redirect.github.com/github/codeql-action/pull/3562">#3562</a></p>
<p>To opt out of this change:</p>
<ul>
<li><strong>Repositories owned by an organization:</strong> Create a
custom repository property with the name
<code>github-codeql-file-coverage-on-prs</code> and the type
&quot;True/false&quot;, then set this property to <code>true</code> in
the repository's settings. For more information, see <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">Managing
custom properties for repositories in your organization</a>.
Alternatively, if you are using an advanced setup workflow, you can set
the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable
to <code>true</code> in your workflow.</li>
<li><strong>User-owned repositories using default setup:</strong> Switch
to an advanced setup workflow and set the
<code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable to
<code>true</code> in your workflow.</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/95e58e9a2cdfd71adc6e0353d5c52f41a045d225"><code>95e58e9</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3824">#3824</a>
from github/update-v4.35.2-d2e135a73</li>
<li><a
href="https://github.com/github/codeql-action/commit/6f31bfe060e817d81e938dbec767969d20031e25"><code>6f31bfe</code></a>
Update changelog for v4.35.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/d2e135a73a39154e3a231aeb49163c4661c5b8b1"><code>d2e135a</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3823">#3823</a>
from github/update-bundle/codeql-bundle-v2.25.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/60abb65df09fcf213c398e064c8a80db1f15cdaf"><code>60abb65</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/5a0a562209255e956ad8aafcee303294e64eefa2"><code>5a0a562</code></a>
Update default bundle to codeql-bundle-v2.25.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/65216971a11ded447a6b76263d5a144519e5eee1"><code>6521697</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3820">#3820</a>
from github/dependabot/github_actions/dot-github/wor...</li>
<li><a
href="https://github.com/github/codeql-action/commit/3c45af2dd258e1623af1898da5c86545b514e028"><code>3c45af2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3821">#3821</a>
from github/dependabot/npm_and_yarn/npm-minor-345b93...</li>
<li><a
href="https://github.com/github/codeql-action/commit/f1c339364c12f922998186ed897e45e3b4ae8874"><code>f1c3393</code></a>
Rebuild</li>
<li><a
href="https://github.com/github/codeql-action/commit/1024fc496c87e944a93e98d8cf2c09e2c7602a30"><code>1024fc4</code></a>
Rebuild</li>
<li><a
href="https://github.com/github/codeql-action/commit/9dd4cfed96030ccdfe1af4daf7a7964322704fed"><code>9dd4cfe</code></a>
Bump the npm-minor group across 1 directory with 6 updates</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/0d579ffd059c29b07949a3cce3983f0780820c98...95e58e9a2cdfd71adc6e0353d5c52f41a045d225">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-05-05 22:58:54 +00:00
dependabot[bot] dd9203c4b0 Bump actions/cache from 5.0.4 to 5.0.5 (#24053)
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.4 to
5.0.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/releases">actions/cache's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.5</h2>
<h2>What's Changed</h2>
<ul>
<li>Update ts-http-runtime dependency by <a
href="https://github.com/yacaovsnc"><code>@​yacaovsnc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1747">actions/cache#1747</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v5...v5.0.5">https://github.com/actions/cache/compare/v5...v5.0.5</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's
changelog</a>.</em></p>
<blockquote>
<h1>Releases</h1>
<h2>How to prepare a release</h2>
<blockquote>
<p>[!NOTE]<br />
Relevant for maintainers with write access only.</p>
</blockquote>
<ol>
<li>Switch to a new branch from <code>main</code>.</li>
<li>Run <code>npm test</code> to ensure all tests are passing.</li>
<li>Update the version in <a
href="https://github.com/actions/cache/blob/main/package.json"><code>https://github.com/actions/cache/blob/main/package.json</code></a>.</li>
<li>Run <code>npm run build</code> to update the compiled files.</li>
<li>Update this <a
href="https://github.com/actions/cache/blob/main/RELEASES.md"><code>https://github.com/actions/cache/blob/main/RELEASES.md</code></a>
with the new version and changes in the <code>## Changelog</code>
section.</li>
<li>Run <code>licensed cache</code> to update the license report.</li>
<li>Run <code>licensed status</code> and resolve any warnings by
updating the <a
href="https://github.com/actions/cache/blob/main/.licensed.yml"><code>https://github.com/actions/cache/blob/main/.licensed.yml</code></a>
file with the exceptions.</li>
<li>Commit your changes and push your branch upstream.</li>
<li>Open a pull request against <code>main</code> and get it reviewed
and merged.</li>
<li>Draft a new release <a
href="https://github.com/actions/cache/releases">https://github.com/actions/cache/releases</a>
use the same version number used in <code>package.json</code>
<ol>
<li>Create a new tag with the version number.</li>
<li>Auto generate release notes and update them to match the changes you
made in <code>RELEASES.md</code>.</li>
<li>Toggle the set as the latest release option.</li>
<li>Publish the release.</li>
</ol>
</li>
<li>Navigate to <a
href="https://github.com/actions/cache/actions/workflows/release-new-action-version.yml">https://github.com/actions/cache/actions/workflows/release-new-action-version.yml</a>
<ol>
<li>There should be a workflow run queued with the same version
number.</li>
<li>Approve the run to publish the new version and update the major tags
for this action.</li>
</ol>
</li>
</ol>
<h2>Changelog</h2>
<h3>5.0.4</h3>
<ul>
<li>Bump <code>minimatch</code> to v3.1.5 (fixes ReDoS via globstar
patterns)</li>
<li>Bump <code>undici</code> to v6.24.1 (WebSocket decompression bomb
protection, header validation fixes)</li>
<li>Bump <code>fast-xml-parser</code> to v5.5.6</li>
</ul>
<h3>5.0.3</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a
href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li>
<li>Bump <code>@actions/core</code> to v2.0.3</li>
</ul>
<h3>5.0.2</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v5.0.3 <a
href="https://redirect.github.com/actions/cache/pull/1692">#1692</a></li>
</ul>
<h3>5.0.1</h3>
<ul>
<li>Update <code>@azure/storage-blob</code> to <code>^12.29.1</code> via
<code>@actions/cache@5.0.1</code> <a
href="https://redirect.github.com/actions/cache/pull/1685">#1685</a></li>
</ul>
<h3>5.0.0</h3>
<blockquote>
<p>[!IMPORTANT]
<code>actions/cache@v5</code> runs on the Node.js 24 runtime and
requires a minimum Actions Runner version of <code>2.327.1</code>.</p>
</blockquote>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/cache/commit/27d5ce7f107fe9357f9df03efb73ab90386fccae"><code>27d5ce7</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1747">#1747</a>
from actions/yacaovsnc/update-dependency</li>
<li><a
href="https://github.com/actions/cache/commit/f280785d7b6e1884c7d12b9136eb0f4a1574fcfd"><code>f280785</code></a>
licensed changes</li>
<li><a
href="https://github.com/actions/cache/commit/619aeb1606e195be0b36fd0ff68dcf1aff6b65a7"><code>619aeb1</code></a>
npm run build generated dist files</li>
<li><a
href="https://github.com/actions/cache/commit/bcf16c2893940a4899761e55c7ac3c1cf88a04f6"><code>bcf16c2</code></a>
Update ts-http-runtime to 0.3.5</li>
<li>See full diff in <a
href="https://github.com/actions/cache/compare/668228422ae6a00e4ad889ee87cd7109ec5666a7...27d5ce7f107fe9357f9df03efb73ab90386fccae">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-05-05 22:57:39 +00:00
dependabot[bot] 0376e7177f Bump crate-ci/typos from 1.45.1 to 1.45.2 (#24128)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.45.1 to
1.45.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.45.2</h2>
<h2>[1.45.2] - 2026-04-27</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore ssh ed25519 public keys</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.46.0] - 2026-04-30</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1531">April
2026</a> changes</li>
</ul>
<h2>[1.45.2] - 2026-04-27</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore ssh ed25519 public keys</li>
</ul>
<h2>[1.45.1] - 2026-04-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(action)</em> Use a temp dir for caching</li>
</ul>
<h2>[1.45.0] - 2026-04-01</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1509">March
2026</a> changes</li>
</ul>
<h2>[1.44.0] - 2026-02-27</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1488">February
2026</a> changes</li>
</ul>
<h2>[1.43.5] - 2026-02-16</h2>
<h3>Fixes</h3>
<ul>
<li><em>(pypi)</em> Hopefully fix the sdist build</li>
</ul>
<h2>[1.43.4] - 2026-02-09</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>pincher</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/7c572958218557a3272c2d6719629443b5cc26fd"><code>7c57295</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/b5056d68e672a71305f3b5b1dfc3b7e200570b2a"><code>b5056d6</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/a063c3f6bd6e6e01d91127d5715b0f574fdabda6"><code>a063c3f</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1544">#1544</a>
from epage/pub</li>
<li><a
href="https://github.com/crate-ci/typos/commit/5d5e80b1f98b3db3d32198b5a3807aa0fd16208d"><code>5d5e80b</code></a>
fix(tokens): Ignore ssh ed25519 pub keys</li>
<li><a
href="https://github.com/crate-ci/typos/commit/4da614bf1e9c420ec7cbf6c949df86a1b855f422"><code>4da614b</code></a>
test(tokens): Show parsing of a public key</li>
<li><a
href="https://github.com/crate-ci/typos/commit/93c857b593a98e94ba33871b7130363df8b5d51f"><code>93c857b</code></a>
chore(deps): Update Rust Stable to v1.95 (<a
href="https://redirect.github.com/crate-ci/typos/issues/1540">#1540</a>)</li>
<li>See full diff in <a
href="https://github.com/crate-ci/typos/compare/cf5f1c29a8ac336af8568821ec41919923b05a83...7c572958218557a3272c2d6719629443b5cc26fd">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.45.1&new-version=1.45.2)](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-05-05 19:17:36 +00:00
ickshonpe 3e76f8c893 clip_check_recursive improvements (#24135)
## Objective

* `clip_check_recursive` can skip the clip containment test in the
absence of clipping
* `try_inverse` should be used to avoid invalid results.

## Solution
* Skip the clip containment test, if there's no clipping.
* Use `try_inverse` to reject non-invertible transforms.

## Testing 

Changes are very simple, shouldn't be hard to convince anyone they are
correct. Test with:

```
cargo run --example overflow
```
2026-05-05 18:19:29 +00:00
Luo Zhihao 9bd7e1fca8 Run prepass_build_indirect_parameters if there is any prepass (#24113)
# Objective

Fixes #24097

Indirect parameters are not built in early prepass if depth prepass and
shadow map are not enabled:

<img width="1219" height="453" alt="屏幕截图_20260504_123430"
src="https://github.com/user-attachments/assets/93854a27-84e5-4918-a167-398ec535e7fc"
/>


## Solution

Run prepass_build_indirect_parameters if there is any prepass, not only
depth prepass.

## Testing

`motion_blur` example without shadow map is fixed:

<img width="1283" height="489" alt="屏幕截图_20260504_140302"
src="https://github.com/user-attachments/assets/7454880d-7338-4282-936f-e540824ce7df"
/>
2026-05-05 05:22:20 +00:00
dependabot[bot] 35678126c4 Bump crate-ci/typos from 1.45.0 to 1.45.1 (#24054)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.45.0 to
1.45.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.45.1</h2>
<h2>[1.45.1] - 2026-04-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(action)</em> Use a temp dir for caching</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.46.0] - 2026-04-30</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1531">April
2026</a> changes</li>
</ul>
<h2>[1.45.2] - 2026-04-27</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore ssh ed25519 public keys</li>
</ul>
<h2>[1.45.1] - 2026-04-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(action)</em> Use a temp dir for caching</li>
</ul>
<h2>[1.45.0] - 2026-04-01</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1509">March
2026</a> changes</li>
</ul>
<h2>[1.44.0] - 2026-02-27</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1488">February
2026</a> changes</li>
</ul>
<h2>[1.43.5] - 2026-02-16</h2>
<h3>Fixes</h3>
<ul>
<li><em>(pypi)</em> Hopefully fix the sdist build</li>
</ul>
<h2>[1.43.4] - 2026-02-09</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>pincher</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/cf5f1c29a8ac336af8568821ec41919923b05a83"><code>cf5f1c2</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/485d42553ebf5bd9c810c24c6521bf608d663e70"><code>485d425</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2fe77ce0ce53ef0ba47e9b371fef1a949baaff3a"><code>2fe77ce</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1539">#1539</a>
from epage/action</li>
<li><a
href="https://github.com/crate-ci/typos/commit/a9595eaf0cc3266bd7fa5c3b2ec7e2a5f3685d18"><code>a9595ea</code></a>
fix(action): Leave binary in temp dir</li>
<li>See full diff in <a
href="https://github.com/crate-ci/typos/compare/02ea592e44b3a53c302f697cddca7641cd051c3d...cf5f1c29a8ac336af8568821ec41919923b05a83">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.45.0&new-version=1.45.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-05-04 16:15:20 -07:00
dependabot[bot] d461e33e24 Bump zizmorcore/zizmor-action from 0.5.2 to 0.5.3 (#24052)
Bumps
[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action)
from 0.5.2 to 0.5.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/zizmorcore/zizmor-action/releases">zizmorcore/zizmor-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.3</h2>
<h2>What's Changed</h2>
<ul>
<li><code>1.24.0</code> and <code>1.24.1</code> are now available via
the action</li>
<li><code>1.24.1</code> is now the default version of zizmor used by the
action</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.5.2...v0.5.3">https://github.com/zizmorcore/zizmor-action/compare/v0.5.2...v0.5.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/b1d7e1fb5de872772f31590499237e7cce841e8e"><code>b1d7e1f</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/102">#102</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/a195b57475917ddcb70845e5ffe1c3a15dbbdedc"><code>a195b57</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/100">#100</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/629d5d01fe5939a6aeae25c1bd1acd2cfa28e9b2"><code>629d5d0</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/99">#99</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/453d591467e8199b1d5c6883b6ec5c22a12aac72"><code>453d591</code></a>
chore(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/98">#98</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/ea2c18b942410df0b22bed3b94c361c407518d45"><code>ea2c18b</code></a>
Bump pins (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/97">#97</a>)</li>
<li>See full diff in <a
href="https://github.com/zizmorcore/zizmor-action/compare/71321a20a9ded102f6e9ce5718a2fcec2c4f70d8...b1d7e1fb5de872772f31590499237e7cce841e8e">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zizmorcore/zizmor-action&package-manager=github_actions&previous-version=0.5.2&new-version=0.5.3)](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-05-04 16:15:20 -07:00
Trashtalk217 a50b65dfa5 Store resources on sparse sets (#24077)
# Objective

Part of the #23988 and #24058 saga. We attempt to speed up resource
access.

## Solution

When messing around with #23988 I noticed that changing the storage type
mattered a lot for the benchmarks.

## Testing

Added benchmarks from #24058 and got the following micro benchmarks
compared to main:

```
ecs::resources::get     time:   [6.3584 ns 6.3840 ns 6.4097 ns]
                        change: [−10.625% −10.075% −9.6652%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) low mild
  8 (8.00%) high mild

ecs::resources::get_mut time:   [7.4181 ns 7.4343 ns 7.4515 ns]
                        change: [−39.895% −39.304% −38.809%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 7 outliers among 100 measurements (7.00%)
  5 (5.00%) high mild
  2 (2.00%) high severe

ecs::resources::insert_remove
                        time:   [89.515 ns 89.654 ns 89.815 ns]
                        change: [−20.163% −16.527% −11.930%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 10 outliers among 100 measurements (10.00%)
  2 (2.00%) low severe
  1 (1.00%) low mild
  3 (3.00%) high mild
  4 (4.00%) high severe
```

If someone wants to double-check these numbers, I encourage you to do
so.
2026-05-04 16:15:20 -07:00
Richard Braakman 0d6131008c Make 1-to-1 Relationship clearer in docs (#24116)
# Objective

Make the possibility of 1-to-1 `Relationship` clearer in the docs, so
that people know it's an option.
(There's already a passing mention of it at the top, but that doesn't
show that it's supported in code.)

## Solution

Added an example to the doc comment to show how it's done, and explained
what happens if you try to add another entity anyway.

## Testing

Ran `cargo doc` and looked at the new docs to see if they're ok.
2026-05-04 16:15:20 -07:00
Dea 9ee0573ebd Push window resize and scale factor messages to bevy_window_events (#24046)
I was initially using `MessageReader<WindowResized>` in my system for my
app but once my system grew to use more and more window events, I
refactored to using `MessageReader<WindowEvent>` and matching on its
variants. This is where I ran into the issue of the
`WindowEvent::WindowResized` case never matching.

When making this PR, I noticed
`WindowEvent::WindowBackendScaleFactorChanged` and
`WindowEvent::WindowScaleFactorChanged` had the same issue.

# Objective

Fixes #15268

## Solution

Instead of writing into `MessageWriter<WindowResized>`,
`MessageWriter<WindowBackendScaleFactorChanged>` and
`MessageWriter<WindowScaleFactorChanged>`, push into
`bevy_window_events` where it gets sent to the `forward_bevy_events`
function for syncing the messages.

## Testing

I made local modifications to the `window_resizing` example to use a
`MessageReader<WindowEvent>` instead of `MessageReader<WindowResized>`
like so:
```rs
fn on_resize_system(
    mut text: Single<&mut Text, With<ResolutionText>>,
    mut resize_reader: MessageReader<WindowEvent>,
) {
    for e in resize_reader.read() {
        if let WindowEvent::WindowResized(e) = e {
            // When resolution is being changed
            text.0 = format!("{:.1} x {:.1}", e.width, e.height);
        }
    }
}
```
I ran this example on linux wayland.
2026-05-04 16:15:20 -07:00
Kevin Chen fc5c1806b4 Revert Screen Space Transmission Gate for Mesh Bind Groups (#24089)
# Objective

- Alongside #24086, helps with #24084, although I think we should double
check any other added conditionals for bind group entries to make sure
they are accurate.

## Solution
So, originally the `SCREEN_SPACE_TRANSMISSION` was enabled with
`key.intersects(MeshPipelineKey::SCREEN_SPACE_SPECULAR_TRANSMISSION_RESERVED_BITS)`.
However, a low quality transmission would make this false, since low’s
MeshPipelineKey is configured like this: `const
SCREEN_SPACE_SPECULAR_TRANSMISSION_LOW = 0 <<
Self::SCREEN_SPACE_SPECULAR_TRANSMISSION_SHIFT_BITS;`. So, a
ScreenSpaceTransmission with Low Quality would break rendering (since
another if-block merely checks that the `ScreenSpaceTransmission`
component exists)

Making it so that the low transmission truly does *not* include the
view_transmission_textures makes the transmission render not properly -
the spheres disappear!

So, I think the proper fix here is to remove the gating around
transmission textures.
Edit: Another potential fix is to change the condition of the
`intersects` but I’m not sure how to encode what we want unless we want
to add another bit for `ScreenSpaceTransmission` component exists
essentially? Happy to close this PR if that is an acceptable direction.

## Testing

`cargo run --example transmission` works for all quality levels.
2026-05-04 16:15:20 -07:00
Maksymilian Mozolewski ff8f3b5705 fix: Handle<T>::from_reflect incorrectly instantiating regardless of T type (#24048)
# Objective

Fixes issue where handles generate no problem regardless of T type via
`from_reflect` due to strong handle's being fully opaque and simply
cloned.


## Solution

Adds a small type id check to the `FromReflect` implemenation which
fails conversion if the type id is not what we expect:

Reference automatically derived implementation:

```rust
impl<A: Asset> bevy_reflect::FromReflect for Handle<A>
where
    Handle<A>: ::core::any::Any + ::core::marker::Send + ::core::marker::Sync,
    A: bevy_reflect::TypePath,
{
    fn from_reflect(__param0: &dyn bevy_reflect::PartialReflect) -> ::core::option::Option<Self> {
        if let bevy_reflect::ReflectRef::Enum(__param0) =
            bevy_reflect::PartialReflect::reflect_ref(__param0)
        {
            match bevy_reflect::enums::Enum::variant_name(__param0) {
                "Strong" => ::core::option::Option::Some(Handle::Strong {
                    0: {
                        let __0 = __param0.field_at(0usize);
                        let __0 = __0?;
                        <Arc<StrongHandle> as bevy_reflect::FromReflect>::from_reflect(__0)?
                    },
                }),
                "Uuid" => ::core::option::Option::Some(Handle::Uuid {
                    0: {
                        let __0 = __param0.field_at(0usize);
                        let __0 = __0?;
                        <Uuid as bevy_reflect::FromReflect>::from_reflect(__0)?
                    },
                    1: ::core::default::Default::default(),
                }),
                name => panic!(
                    "variant with name `{}` does not exist on enum `{}`",
                    name,
                    <Self as bevy_reflect::TypePath>::type_path()
                ),
            }
        } else {
            ::core::option::Option::None
        }
    }
}
```

## Testing

added basic tests

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Greeble <166992735+greeble-dev@users.noreply.github.com>
2026-05-04 16:15:20 -07:00
Luo Zhihao c757497b27 Gate LTC LUTs behind a feature and merge them to a texture array (#24065)
# Objective

Alternative to #24004.

https://github.com/bevyengine/bevy/pull/23288 adds ltc luts for rect
light support which implicitly requires `bevy_image/ktx2` and
`bevy_image/zstd` otherwise loading ltc luts will panic.

We either accept to always enable area light supoort (#24004), or add a
feature to opt out it (this PR).

## Solution

Gate ltc luts behind a feature and merge them to a texture array.

## Testing

`rect_light` example works.

---------

Co-authored-by: Kevin Chen <chen.kevin.f@gmail.com>
2026-05-04 16:15:20 -07:00
Giacomo Stevanato 827358a922 Limit Pixel 10 to GPU preprocessing without GPU culling (#24101)
# Objective

- Workaround for #23754 until we find the actual issue or Google fixes
its driver

## Solution

- Limit Pixel 10 to GPU preprocessing without GPU culling

## Testing

- Ran the android example on my Pixel 10
2026-05-04 03:42:13 +00:00
Carter Anderson abc6c9049b Feathers bsn! style improvements (#24063)
Use our "shorthand" conventions for `Val` everywhere in feathers code /
usage

This also:
- adds a `VariantDefaults` derive to `Visibility` to make it usable
without `template_value`
- adds `From<Val>` to BorderRadius to support `px(10)` assignments
instead of `BorderRadius::all(px(10))`

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: ickshonpe <david.curthoys@googlemail.com>
2026-05-04 03:11:02 +00:00
Alice Cecile 74e7f1dd14 Integrate bevy_world_serialization rename into existing release content (#24110)
# Objective

An existing migration guide + release note got clobbered by the
`bevy_scene` -> `bevy_ecs_serialization` rename.

Fixes #24007.

## Solution

Carefully integrate the rename into the text to make the migration less
confusing.
2026-05-04 01:44:01 +00:00
Vic 17602868b7 General entity set cleanup (#21498)
# Objective

There are various straightforward cleanup/code quality changes that can
be done in the entity set logic.

## Solution

These changes tend to be far-reaching and bitrotty, so this PR stacks
several of them. It should be reviewed commit after commit!

Commit 1: Privatizing entity set type fields
- Sometimes, other places in the engine would make use of the
crate-public nature of some of these types to circumvent
encapsulation, which risks circumventing safety requirements as well.
    
Commit 2: entity set constructor consistency
- There were some missing constructors that serve as more direct and
consistent code paths into entity set logic.
 
 Commit 3: inline entity set logic
- When authoring the entirety of `EntitySet`, I just... completely
forgot about any inlining! They had no semantic impact, so I
    didn't think of them XD.
- The inlines here are best-effort, and try to roughly match the
inlining decisions `std` makes. Sometimes, those decisions are
mysteries, or might be downright suboptimal, but that is a lot of effort
to check.
    (Looking at you, `binary_search`/`binary_search_by`...)
- This should result in a small general performance gain for code based
on this logic.
    LIkely noticeable with `EntityHashMap`/`Set``propagate_transforms`.
    
Commit 4: stop internally skipping entity set type construction safety
- This mostly serves as documentation for further contributors/users,
clarifying why certain impls exist, and why the API
    should not be circumvented.

Commit 5: Turn various entity set functions const
   - Self-explanatory, some functions can be turned const.
 
 Commit 6: miscellaneous simplifications
  - Self-explanatory
  
  Commit 7: doc cleanup
  - Mostly typos and some broken imports
- I don't really understand why the `indexmap` doc links are broken,
given that they work when I generate the docs locally. So
  left them as is for now
  
Commit 8: update bevy ecs msrv to 1.89, and the associated clippy fixes.

There is more to do, like add methods that have since been added to the
various types, and cleanup/inlining surrounding query iteration methods
directly, but I wanted to restrict myself to the `entity` module for
now. This PR frees me up to do other entity set changes with less worry
about cleanup conflicts.

## Testing

These code quality/consistency changes should not change semantics,
outside of adding a few missing constructors.
2026-05-03 23:56:19 +00:00
Yuriko♪ 637eeec352 feat(animation): implement Animatable for Rot2 (#23621)
## Objective

This PR adds animation support for 2D rotations by implementing the
`Animatable` trait for `Rot2`. This enables developers to smoothly
animate 2D entities and UI elements.

*(Note: This is a clean, cherry-picked recreation of #23618 targeting
the `main` branch, as suggested by @alice-i-cecile .)*

## Solution

To ensure mathematical correctness and consistency with existing Bevy
math types (like `Quat`), this implementation includes:

- **Shortest-path interpolation:** Uses spherical linear interpolation
(`slerp`) so that rotations naturally take the shortest route (e.g.,
passing through 0° rather than 180° when moving from 89° to -89°).
- **Standardized blending:** Implements precise cumulative and additive
blending logic that perfectly mirrors the behavior of `Quat`.
- **Comprehensive Unit Tests:** Added tests specifically to verify:
  - Shortest path interpolation.
  - Absolute blending with equal weights.
  - Cumulative multi-way blending.
  - Additive blending.
- **Example Update:** Updated the `animated_ui` example to showcase the
new `Rot2` animation capabilities.

## Testing
- [x] All new unit tests pass (`cargo test -p bevy_animation --lib
animatable`).
- [x] Ran `cargo fmt` and `cargo clippy`.
- [x] Tested the `animated_ui` example locally to ensure the 2D rotation
curve behaves as expected.

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
2026-05-03 23:56:16 +00:00
Greeble b70ebb2186 Remove unused parts of AssetLoaders::find (#23703)
## Objective

`AssetLoaders::find` maps from various properties to an asset loader:

```rust
fn find(
    &self,
    type_name: Option<&str>,
    asset_type_id: Option<TypeId>,
    extension: Option<&str>,
    asset_path: Option<&AssetPath<'_>>,
) -> Option<MaybeAssetLoader> {
```

But in practice the `type_name` and `extension` parameters are always
`None`, and the `asset_path` parameter is always `Some`.

## Solution

This PR removes the unused parts:

```diff
 fn find(
     &self,
-    type_name: Option<&str>,
     asset_type_id: Option<TypeId>,
-    extension: Option<&str>,
-    asset_path: Option<&AssetPath<'_>>,
+    asset_path: &AssetPath<'_>,
 ) -> Option<MaybeAssetLoader> {
```

`AssetLoaders::find` is `pub(crate)`, so this should not affect users.

I looked back at the [original
PR](https://github.com/bevyengine/bevy/pull/11644) and couldn't spot any
cases where these parameters were ever used. I'm not sure if that's an
oversight or if they were intended for future use.

I also made matching changes to `AssetLoaderError::MissingAssetLoaders`.
This is `pub` so technically should have a migration guide. I'm not
entirely convinced that's necessary for such a trivial change, but happy
to add one if requested.

```diff
 MissingAssetLoader {
-    loader_name: Option<String>,
     asset_type_id: Option<TypeId>,
-    extension: Option<String>,
-    asset_path: Option<String>,
+    asset_path: String,
 },
```

## Testing

```sh
cargo test -p bevy_asset
cargo run --example asset_loading
cargo run --example asset_processing --features="file_watcher asset_processor"
```
2026-05-03 23:56:13 +00:00
DavidCrossman 5d03586dd7 Use <[T]>::as_chunks{_mut} for exact size chunks (#23755)
# Objective

- Reduce `unwrap`s and bounds checks.

## Solution

- Replace usages of `<[T]>::chunks{_mut}` and
`<[T]>::chunks_exact{_mut}` where the size is exact with
`<[T]>::as_chunks{_mut}`.

## Testing

- Ran `cargo run -p ci -- compile`

---------

Co-authored-by: Luo Zhihao <luo_zhihao@outlook.com>
2026-05-03 23:56:08 +00:00
DavidCrossman 242f51245e Use absolute paths in procedural macros (#23784)
# Objective

- Improve procedural macro hygiene. Follow-up to #23718.

## Solution

- Use absolute paths in all procedural macros.

## Testing

- Ran `cargo run -p ci -- compile`

## Notes
- I've qualified `Vec` as `::std::vec::Vec` in the `AsBindGroup` derive
because `bevy_render` requires `std`. If `bevy_render` supports `no_std`
in the future, this will need to be changed to use the `__macro_exports`
strategy used by `bevy_ecs` and `bevy_reflect`. Perhaps
`bevy_macro_utils` itself could export `no_std` compatible paths for
`alloc` types like `Vec` and `Box` to avoid repeating the same strategy
in every crate which generates `alloc` types in macros.
- I haven't used absolute paths for primitives
(`::core::primitive::bool` vs `bool`) since even `serde` doesn't, but I
can do so in this PR if desired.
2026-05-03 23:56:05 +00:00
JMS55 11b81eb1d7 Solari: Stability improvements (#23968)
Various changes to improve quality.

Please review commit by commit.
2026-05-03 23:55:56 +00:00
ickshonpe 211b9ab63f EditableText scrolling and cursor fixes (#24032)
# Objective

Fix some scrolling jitters and bugs.
* The cursor can be scrolled out of view.
* Horizontal scrolling is jittery with a cursor taller then the line
height.
* Vertical scrolling jitters.
* Scrolling and cursor state should only update on changes to the editor
state and input focus (this is needed so scroll bars will work with a
text input).

Fixes #23931

## Solution

* Use the full cursor width when calculating the horizontal scroll
offset.
* Base vertical offsets on the bounds of the current visual line, not
the cursor.
* Update scrolling on `InputFocus` changes.
* `TextLayoutInfo` always holds the cursor geometry (if there is a
cursor), made the field a `(bool, Rect)` tuple, the bool is true if the
cursor should be rendered.
* Lots of clamping, logic behind it mostly trial and error tbh. 

This should fix the major scrolling bugs, scrolling should feel
consistant and intuitive now.
Left look-ahead scrolling
https://github.com/bevyengine/bevy/issues/23933 left for a follow up,
after this is merged.

## Testing

```
cargo run --example multiple_text_inputs
cargo run --example multiline_text_input
cargo run --example ime_support --features="system_font_discovery"
```

With `ime_support` and `multiline_text_input`, you probably want to set
`TextLayout::new_with_no_wrap()` on the inputs to fully appreciate the
changes.
2026-05-03 23:55:52 +00:00
Alice Cecile 20ec8610d3 Add docs for bsn! macro (#24047)
# Objective

The bsn! macro has quite a lot of complex syntax and concepts.

While much of this is explained in the crate docs, users will regularly
miss that documentation.

Currently, the docs for `bsn!` itself are blank, yielding a very sad
tooltip hover.

## Solution

- Write extensive docs for `bsn!`, focusing on syntax and practical
usage.
- Link to those docs from `bsn_list!`
- Fix a factual error from #23604 about when to use `FromTemplate`.
- Carefully explain the actual path for `&'static str` -> `Handle`,
because I found that a very informative learning exercise while trying
to piece together the implicit default mechanisms.

## Notes to reviewers

1. No doc links and all the doc tests are ignored sorry: proc macro
crates are literally the worst.
I spent like an hour researching and experimenting with solutions for
this, but it seems to be an underlying limitation.
2. I think that the lack of `.into()` on boolean literals could and
probably should be fixed. Unlike numbers, there's no "two unknowns"
problem there that breaks type inference. Definitely not this PR's
problem.
3. I think that the explanation is best suited to the macro itself
because they're the most discoverable, both on docs.rs and in IDEs. Open
to suggestions though.
4. When verifying these docs, check the tests and the PR description of
https://github.com/bevyengine/bevy/pull/23413.

## Testing

It was mentioned that my understanding about the `FromTemplate` vs
`Clone+Default` tradeoffs was simply wrong. I wrote a test to verify
that, and I *was* wrong.

---------

Co-authored-by: Carter Anderson <mcanders1@gmail.com>
2026-05-03 23:55:44 +00:00
Kevin Chen d6fbec5b5f Deps: bump up wgpu and related deps to 29.0.3 (#24064)
# Objective

- Should fix #23573 - I don’t have DX-12 so I can’t verify this, just
following orders. Someone can verify this is fixed!
## Solution

- Search and replace “29.0.1” with “29.0.3” if it is related to wgpu
(and checking that the version is available on crates)

- Fixes #23220.

## Testing

- Leaning on CI for this one personally
2026-05-03 23:55:33 +00:00
Kevin Chen ebdd7d983b Fix(bg motion vectors): gate BackgroundMotionVectorsPlugin pipelines to DownlevelFlags(INDEPENDENT_BLEND) (#24067)
# Objective

- Help out with #23975 
- Fixes an issue on WebGL2 as a result of #23629
- Supporting #23975 on WebGL2 necessitates fixing the “Forward +
Prepass” option on the `deferred_rendering` example. The WebGPU focused
solution to #23629 requires this PR to also allow the “Forward +
Prepass” option to work.

## Solution

- @beicause mentioned gating the whole pipeline of
`background_motion_vectors.rs` to `DownlevelFlags(INDEPENDENT_BLEND)` as
implied in the error message in [this issue
comment](https://github.com/bevyengine/bevy/issues/23975#issuecomment-4362512138).
It works!

## Testing

- Included the change from this PR on top of #24065, and it fixes the
`deferred_rendering` example on WebGL2.
2026-05-03 23:55:29 +00:00
andriyDev 2730c6ee88 Remove panic from code gen of an enum's FromReflect derive. (#24068)
# Objective

- I noticed this while reviewing #24048. Our current FromReflect derive
macro adds a panic for cases when a PartialReflect-ed enum includes a
variant we weren't expecting. This can happen for a few reasons, e.g., a
variant of the enum has been removed. In any case, **crashing the
program** is not the correct answer, since we already have an
appropriate response to a failed conversion: just return None!

## Solution

- Return None instead of panicking.

I also checked if there are any other panics, and it looks like none in
the codegen. The only remaining panics have to do with some auto
registration file stuff, which seems appropriate to panic on.

## Testing

- Added a unit test.
2026-05-03 23:55:26 +00:00
ickshonpe 4b77775c86 Improved Val2 and UiTransform constructors (#24074)
# Objective

- Add more constructors for `Val2` and `UiTransform`.
- `Val2's `px` and `percent` functions should accept `ValNum`'s like the
`Val` helper functions do.

## Solution
* Add `new` and `all` constructors for `Val2`.
* Add a `from_xy` constructor for `UiTransform`.
* `Val2`'s `px` and `percent` methods are no longer `const` and now
accept `ValNum`s.

---------

Co-authored-by: Kevin Chen <chen.kevin.f@gmail.com>
2026-05-03 23:55:21 +00:00
ickshonpe 094543645f Change the ColorStop constructors to take ValNum`s (#24075)
# Objective

Change the `ColorStop` `px` and `percent` constructors to take `ValNum`
instead of `f32`.
2026-05-03 23:54:57 +00:00
ickshonpe 6d9511a5f3 Implement From<Val> for Fontsize (#24076)
# Objective

Implement `From<Val>` for `Fontsize` so that the `Val` `px`, `vh`, etc
helpers to be used to set font sizes in `bsn! `.

## Solution

Implement `From<Val>` for `Fontsize`, with `Val::Auto` mapped to
`FontSize:Rem(1.)` and `Val::Percent(x)` mapped to
`FontSize::Rem(x/100.)`.
2026-05-03 23:54:53 +00:00
Luke Yoo 2f01f61cde Add Commands::insert_resource_if_neq (#24082)
# Objective

- Fixes #24041

## Testing

-
[`insert_resource_if_not_equal`](https://github.com/micttyoid/bevy/blob/command-insert-resource-if-neq/crates/bevy_ecs/src/system/commands/mod.rs#L2932)
-
[`insert_resource_if_not_equal_tracks_caller`](https://github.com/micttyoid/bevy/blob/command-insert-resource-if-neq/crates/bevy_ecs/src/system/commands/mod.rs#L2973)
2026-05-03 23:54:39 +00:00
Kevin Chen d00313ed55 Fix: Add SyncComponents for SSAO, ensuring SSAOResources is synced (#24086)
# Objective

- The SSAO part of the fix for #24084 

## Solution

- Add SSAOResources (and other related components) to the sync component
target for SSAO to ensure that adding/removing SSAO also adds/removes
resources. This ensures that checking for SSAOResources later in
`mesh_view_bindings` logic is valid.

## Testing

- `cargo run --example ssao` : toggling “Off” no longer crashes.
2026-05-03 23:54:26 +00:00
Richard Braakman e626337b00 Use the shorthand functions to construct Val in examples (#24096)
This is my first bevy PR, please tell me if I'm doing anything wrong.

# Objective

Contribute to #22695.
Showcase the preferred coding style in all examples.

## Solution

Replace Val:: constructors with the more ergonomic shorthand functions.
Change their float literals to integer literals if they are integral.

Exceptions:
  - const contexts (the shorthand functions are not const)
- inside bsn! macros (these are new and presumably know what they are
doing)
  - in testbed (these are not really examples)
  - Val::ZERO (no helper function)

## Testing

Ran the changed examples before and after, except the library example
`widgets` where I just checked that it still builds.

## Context

There was PR #22765 that fixed the same thing but only in the UI
examples.

---------

Co-authored-by: ickshonpe <david.curthoys@googlemail.com>
2026-05-03 23:54:21 +00:00
Talin d03f0c7dc1 Renamed ToolButton to FeathersToolButton to be consistent (#24098)
with naming conventions for other widgets.

# Objective

The `ToolButton` widget was not consistently named like the other
controls.

## Solution

Renamed.

## Testing

Basic manual testing.

@cart
2026-05-03 23:54:17 +00:00
Alice Cecile ba7b3c8950 Rename bevy_experimental_feathers feature to bevy_feathers (#24108)
# Objective

> With the introduction of scene components, the feathers API has now
reached its final form. This has a number of consequences:
> - There's no longer any reason to keep the experimental flag around
> - The effort of migrating the Bevy examples to feathers widgets is
unblocked, however I think we should start with migrating just one
example


- @viridia 

## Solution

1. Rename the feature flag.
2. Write a migration guide.

This was previously attempted as part of
https://github.com/bevyengine/bevy/pull/22934, but I got pushback there.
Now that bsn! is more complete (scene components!) things are better.

I've opted not to change the default features here, even though it makes
it much harder to move our examples over, because that's a much more
contentious change. While I feel that Bevy's default features should be
example-oriented, that's still up for debate!
2026-05-03 23:53:51 +00:00
Alice Cecile ebbc1e6e45 Increase time allocated to run-examples-on-windows-dx12 (#24107)
# Objective

Stopgap solution for #24106 so we can actually merge things.

## Solution

Double the time allocated (we're game-devs here after all).
Leave a comment to the issue tracking this, so when we inevitably get
annoyed about how slow this is we have a breadcrumb trail.

## Testing

CI do your thing!
2026-05-03 23:05:22 +00:00
Robin KAY 6c2aeffbcc Expose MorphIndices::morph_descriptor_index() as public. (#24083)
# Objective

My ecosystem crate, bevy_mod_outline, renders the outlines of morphed
meshes while reusing the data already bound for this purpose by the
regular mesh rendering pipeline. While porting the crate to _0.19-dev_,
I found that the new support by #23023 for providing the morph targets
in storage buffers requires me to know the morph descriptor index in
order to use the prepared data, but this field is not accessible outside
of the bevy_pbr crate.

## Solution

- Change `MorphIndices::morph_descriptor_index()` from `pub(crate)` to
`pub`.

## Testing

- Check that Bevy compiles and that the function is accessible from a
dependent crate.
2026-05-03 17:52:04 +00:00
Kevin Chen 20dc1761c7 Fix: use ViewKeyCache in volumetric fog instead of manually creating MeshPipelineViewLayoutKey (#24090)
# Objective

- Related #24084
- Fixes `atmosphere` example after merging #23982

## Solution

- As @beicause mentioned, volumetric frog was calculating
`MeshPipelineViewLayoutKey` manually when it could just rely on the
`ViewKeyCache` instead, which has centralized logic for calculating it
in `check_views_need_specialization` (`STBN` is added in `impl
From<MeshPipelineKey> for MeshPipelineViewLayoutKey`)

## Testing

- `cargo run --example atmosphere` works now, no strobing!
- `cargo run --example volumetric_fog` also works
- `cargo run --example scrolling_fog` works
2026-05-03 17:30:18 +00:00
JMS55 ce2bf99b6a Fix flickering when combining CAS with SMAA (#24066)
Fix https://github.com/bevyengine/bevy/issues/24055.
2026-05-02 17:07:38 +00:00
JMS55 489818930b Update ktx2 to v0.5.0 (#23900)
Updated ktx2 crate.

After doing so, Bevy ktx2 files failed to validate due to invalid
metadata. I fixed all their metadata, and made sure they passed ktx
validate.
2026-05-02 01:57:00 +00:00