Skip to content

Conversation

@robtfm
Copy link
Owner

@robtfm robtfm commented Nov 30, 2025

pr created to show a clean diff on top of bevyengine#21732 for the InfallibleMesh implementation.

dependabot bot and others added 28 commits December 1, 2025 06:56
Bumps
[super-linter/super-linter](https://github.com/super-linter/super-linter)
from 8.2.1 to 8.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/super-linter/super-linter/releases">super-linter/super-linter's
releases</a>.</em></p>
<blockquote>
<h2>v8.3.0</h2>
<h2><a
href="https://github.com/super-linter/super-linter/compare/v8.2.1...v8.3.0">8.3.0</a>
(2025-11-28)</h2>
<h3>🚀 Features</h3>
<ul>
<li>add ability to specify config files for nbqa tools (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7184">#7184</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/b37c1c33a78f7cbf9bfa04609b83180319421bfc">b37c1c3</a>)</li>
<li>lint dependabot, github actions with zizmor (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7241">#7241</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/09306cdabe5c1afaedcab156e7a75b88575c829b">09306cd</a>),
closes <a
href="https://redirect.github.com/super-linter/super-linter/issues/7137">#7137</a></li>
<li>support rust 2024 (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7211">#7211</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/c15ee6dd7d559940b734579617c3637b9c007f6f">c15ee6d</a>),
closes <a
href="https://redirect.github.com/super-linter/super-linter/issues/7139">#7139</a></li>
</ul>
<h3>🐛 Bugfixes</h3>
<ul>
<li>parse json to extract terraform version (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7239">#7239</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/29f17277db2147d8af291ae20e5c792b499052c7">29f1727</a>)</li>
</ul>
<h3>⬆️ Dependency updates</h3>
<ul>
<li><strong>bundler:</strong> bump rubocop in /dependencies in the
rubocop group (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7188">#7188</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/74b24446f8c7575d1b83edc5c975726d9e47416a">74b2444</a>)</li>
<li><strong>bundler:</strong> bump rubocop-rails in /dependencies in the
rubocop group (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7231">#7231</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/dd55c528c7a818fc25840f934f8a8d8c8264bab7">dd55c52</a>)</li>
<li><strong>bundler:</strong> bump the rubocop group in /dependencies
with 2 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7178">#7178</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/3bdc91928162635ba67a148016a0ee29846087c6">3bdc919</a>)</li>
<li><strong>bundler:</strong> bump the rubocop group in /dependencies
with 4 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7202">#7202</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/0e09528bdf1e450d83fab9ce2400225a11c7657d">0e09528</a>)</li>
<li><strong>docker:</strong> bump python in the docker-base-images group
(<a
href="https://redirect.github.com/super-linter/super-linter/issues/7123">#7123</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/41c3da1d09d0e5ec067ad65c9b855c6aeff225bc">41c3da1</a>)</li>
<li><strong>docker:</strong> bump the docker group across 1 directory
with 12 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7235">#7235</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/b1cf27d548d8e772a89094d18b52c6d097b5ba08">b1cf27d</a>)</li>
<li><strong>docker:</strong> bump the docker group across 1 directory
with 6 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7148">#7148</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/76149cff49dabb7f045e86f46e93f6767e2da34d">76149cf</a>)</li>
<li><strong>docker:</strong> bump the docker group across 1 directory
with 9 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7194">#7194</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/45f731ea75a53496824bd31bb77c6ceab71a18ec">45f731e</a>)</li>
<li><strong>npm:</strong> bump <code>@​babel/eslint-parser</code> in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7183">#7183</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/197eb8863a766dcfcf4c4ca670dc8560a9db85c6">197eb88</a>)</li>
<li><strong>npm:</strong> bump
<code>@​typescript-eslint/eslint-plugin</code> (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7127">#7127</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/2d57f06c64c521f2cfbbea3b8cc9c8f080fb473a">2d57f06</a>)</li>
<li><strong>npm:</strong> bump
<code>@​typescript-eslint/eslint-plugin</code> (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7196">#7196</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/033ea992a1aa5a0d4f868c2a3d401008ef218d9a">033ea99</a>)</li>
<li><strong>npm:</strong> bump body-parser from 2.2.0 to 2.2.1 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7238">#7238</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/30403f6aa43e234b7196dfd2eaa425b05294aa4c">30403f6</a>)</li>
<li><strong>npm:</strong> bump eslint from 9.37.0 to 9.38.0 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7170">#7170</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/b42af6f21b7bc5b827acd2c977b6047baad41ce9">b42af6f</a>)</li>
<li><strong>npm:</strong> bump eslint from 9.38.0 to 9.39.0 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7191">#7191</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/0cf22c89f925988556f38fcce929adde347f527b">0cf22c8</a>)</li>
<li><strong>npm:</strong> bump eslint from 9.39.0 to 9.39.1 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7197">#7197</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/513ae8ba519bb2c67e124d0fa1f03aff521babaa">513ae8b</a>)</li>
<li><strong>npm:</strong> bump eslint-plugin-react-hooks (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7180">#7180</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/61e42084aa3bc2771777fc56ca15f2b480117106">61e4208</a>)</li>
<li><strong>npm:</strong> bump js-yaml from 3.14.1 to 3.14.2 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7210">#7210</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/29faa987594b8d482545899275cd14bfc3cfe6bd">29faa98</a>)</li>
<li><strong>npm:</strong> bump npm-groovy-lint from 15.2.1 to 15.2.2 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7130">#7130</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/49138252344a9c051b5d4c4f12cc660d670415d8">4913825</a>)</li>
<li><strong>npm:</strong> bump renovate from 41.142.0 to 41.146.5 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7134">#7134</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/900b973697b89c3d89462a12bdd556c8dec5b4d0">900b973</a>)</li>
<li><strong>npm:</strong> bump renovate from 41.151.1 to 41.161.0 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7182">#7182</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/1d8c2a20d753278a958cf2a5f8c5b264bd1807c4">1d8c2a2</a>)</li>
<li><strong>npm:</strong> bump renovate from 41.161.0 to 42.4.0 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7198">#7198</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/0a4ed306a12b6a923c8c5ae80b798fd64314e193">0a4ed30</a>)</li>
<li><strong>npm:</strong> bump the eslint-plugins-configs group across 1
directory with 2 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7145">#7145</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/c137ca99f70bb902052d71b0191dd000fb2390a1">c137ca9</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 2
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7175">#7175</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/f0b0ff5c9a26aac384cd4b016a099932ec2f96a9">f0b0ff5</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 3
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7146">#7146</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/d4d3f168263fb5ae8b10cec7280d34954230f0a0">d4d3f16</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 3
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7195">#7195</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/ad4f63c1683738277ceb276609c1acedf4f72ca9">ad4f63c</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 5
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7233">#7233</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/5cadbf190ab223e8deab07f2415670e0aef342d9">5cadbf1</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 8
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7221">#7221</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/3802c521f77bf81bda1453e9ba189a6e442a0dbb">3802c52</a>)</li>
<li><strong>npm:</strong> bump the react group across 1 directory with 2
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7190">#7190</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/d6c8078d417d100057ba28b372755aa78d9cbf0b">d6c8078</a>)</li>
<li><strong>npm:</strong> bump the react group across 1 directory with 4
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7128">#7128</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/40347029803087080f7cc79e7ca129c1e6b7cbd1">4034702</a>)</li>
<li><strong>npm:</strong> bump the typescript group across 1 directory
with 2 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7176">#7176</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/39aba7679238de915382df7ecbe0194bc6677af9">39aba76</a>)</li>
<li><strong>python:</strong> bump the pip group across 1 directory with
11 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7199">#7199</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/07fbf76c2cf08a5c12b51f73329ae4ddc0c93d22">07fbf76</a>)</li>
<li><strong>python:</strong> bump the pip group across 1 directory with
3 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7234">#7234</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/c8bd6d308cdb7dc47ef439de8edff221afca95d2">c8bd6d3</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md">super-linter/super-linter's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/super-linter/super-linter/compare/v8.2.1...v8.3.0">8.3.0</a>
(2025-11-28)</h2>
<h3>🚀 Features</h3>
<ul>
<li>add ability to specify config files for nbqa tools (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7184">#7184</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/b37c1c33a78f7cbf9bfa04609b83180319421bfc">b37c1c3</a>)</li>
<li>lint dependabot, github actions with zizmor (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7241">#7241</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/09306cdabe5c1afaedcab156e7a75b88575c829b">09306cd</a>),
closes <a
href="https://redirect.github.com/super-linter/super-linter/issues/7137">#7137</a></li>
<li>support rust 2024 (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7211">#7211</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/c15ee6dd7d559940b734579617c3637b9c007f6f">c15ee6d</a>),
closes <a
href="https://redirect.github.com/super-linter/super-linter/issues/7139">#7139</a></li>
</ul>
<h3>🐛 Bugfixes</h3>
<ul>
<li>parse json to extract terraform version (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7239">#7239</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/29f17277db2147d8af291ae20e5c792b499052c7">29f1727</a>)</li>
</ul>
<h3>⬆️ Dependency updates</h3>
<ul>
<li><strong>bundler:</strong> bump rubocop in /dependencies in the
rubocop group (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7188">#7188</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/74b24446f8c7575d1b83edc5c975726d9e47416a">74b2444</a>)</li>
<li><strong>bundler:</strong> bump rubocop-rails in /dependencies in the
rubocop group (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7231">#7231</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/dd55c528c7a818fc25840f934f8a8d8c8264bab7">dd55c52</a>)</li>
<li><strong>bundler:</strong> bump the rubocop group in /dependencies
with 2 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7178">#7178</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/3bdc91928162635ba67a148016a0ee29846087c6">3bdc919</a>)</li>
<li><strong>bundler:</strong> bump the rubocop group in /dependencies
with 4 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7202">#7202</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/0e09528bdf1e450d83fab9ce2400225a11c7657d">0e09528</a>)</li>
<li><strong>docker:</strong> bump python in the docker-base-images group
(<a
href="https://redirect.github.com/super-linter/super-linter/issues/7123">#7123</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/41c3da1d09d0e5ec067ad65c9b855c6aeff225bc">41c3da1</a>)</li>
<li><strong>docker:</strong> bump the docker group across 1 directory
with 12 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7235">#7235</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/b1cf27d548d8e772a89094d18b52c6d097b5ba08">b1cf27d</a>)</li>
<li><strong>docker:</strong> bump the docker group across 1 directory
with 6 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7148">#7148</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/76149cff49dabb7f045e86f46e93f6767e2da34d">76149cf</a>)</li>
<li><strong>docker:</strong> bump the docker group across 1 directory
with 9 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7194">#7194</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/45f731ea75a53496824bd31bb77c6ceab71a18ec">45f731e</a>)</li>
<li><strong>npm:</strong> bump <code>@​babel/eslint-parser</code> in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7183">#7183</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/197eb8863a766dcfcf4c4ca670dc8560a9db85c6">197eb88</a>)</li>
<li><strong>npm:</strong> bump
<code>@​typescript-eslint/eslint-plugin</code> (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7127">#7127</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/2d57f06c64c521f2cfbbea3b8cc9c8f080fb473a">2d57f06</a>)</li>
<li><strong>npm:</strong> bump
<code>@​typescript-eslint/eslint-plugin</code> (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7196">#7196</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/033ea992a1aa5a0d4f868c2a3d401008ef218d9a">033ea99</a>)</li>
<li><strong>npm:</strong> bump body-parser from 2.2.0 to 2.2.1 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7238">#7238</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/30403f6aa43e234b7196dfd2eaa425b05294aa4c">30403f6</a>)</li>
<li><strong>npm:</strong> bump eslint from 9.37.0 to 9.38.0 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7170">#7170</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/b42af6f21b7bc5b827acd2c977b6047baad41ce9">b42af6f</a>)</li>
<li><strong>npm:</strong> bump eslint from 9.38.0 to 9.39.0 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7191">#7191</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/0cf22c89f925988556f38fcce929adde347f527b">0cf22c8</a>)</li>
<li><strong>npm:</strong> bump eslint from 9.39.0 to 9.39.1 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7197">#7197</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/513ae8ba519bb2c67e124d0fa1f03aff521babaa">513ae8b</a>)</li>
<li><strong>npm:</strong> bump eslint-plugin-react-hooks (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7180">#7180</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/61e42084aa3bc2771777fc56ca15f2b480117106">61e4208</a>)</li>
<li><strong>npm:</strong> bump js-yaml from 3.14.1 to 3.14.2 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7210">#7210</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/29faa987594b8d482545899275cd14bfc3cfe6bd">29faa98</a>)</li>
<li><strong>npm:</strong> bump npm-groovy-lint from 15.2.1 to 15.2.2 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7130">#7130</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/49138252344a9c051b5d4c4f12cc660d670415d8">4913825</a>)</li>
<li><strong>npm:</strong> bump renovate from 41.142.0 to 41.146.5 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7134">#7134</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/900b973697b89c3d89462a12bdd556c8dec5b4d0">900b973</a>)</li>
<li><strong>npm:</strong> bump renovate from 41.151.1 to 41.161.0 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7182">#7182</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/1d8c2a20d753278a958cf2a5f8c5b264bd1807c4">1d8c2a2</a>)</li>
<li><strong>npm:</strong> bump renovate from 41.161.0 to 42.4.0 in
/dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7198">#7198</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/0a4ed306a12b6a923c8c5ae80b798fd64314e193">0a4ed30</a>)</li>
<li><strong>npm:</strong> bump the eslint-plugins-configs group across 1
directory with 2 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7145">#7145</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/c137ca99f70bb902052d71b0191dd000fb2390a1">c137ca9</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 2
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7175">#7175</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/f0b0ff5c9a26aac384cd4b016a099932ec2f96a9">f0b0ff5</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 3
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7146">#7146</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/d4d3f168263fb5ae8b10cec7280d34954230f0a0">d4d3f16</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 3
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7195">#7195</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/ad4f63c1683738277ceb276609c1acedf4f72ca9">ad4f63c</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 5
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7233">#7233</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/5cadbf190ab223e8deab07f2415670e0aef342d9">5cadbf1</a>)</li>
<li><strong>npm:</strong> bump the npm group across 1 directory with 8
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7221">#7221</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/3802c521f77bf81bda1453e9ba189a6e442a0dbb">3802c52</a>)</li>
<li><strong>npm:</strong> bump the react group across 1 directory with 2
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7190">#7190</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/d6c8078d417d100057ba28b372755aa78d9cbf0b">d6c8078</a>)</li>
<li><strong>npm:</strong> bump the react group across 1 directory with 4
updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7128">#7128</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/40347029803087080f7cc79e7ca129c1e6b7cbd1">4034702</a>)</li>
<li><strong>npm:</strong> bump the typescript group across 1 directory
with 2 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7176">#7176</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/39aba7679238de915382df7ecbe0194bc6677af9">39aba76</a>)</li>
<li><strong>python:</strong> bump the pip group across 1 directory with
11 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7199">#7199</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/07fbf76c2cf08a5c12b51f73329ae4ddc0c93d22">07fbf76</a>)</li>
<li><strong>python:</strong> bump the pip group across 1 directory with
3 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7234">#7234</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/c8bd6d308cdb7dc47ef439de8edff221afca95d2">c8bd6d3</a>)</li>
<li><strong>python:</strong> bump the pip group across 1 directory with
4 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7219">#7219</a>)
(<a
href="https://github.com/super-linter/super-linter/commit/91361a34fd58bc5dc83b52e0bd25114a06223fab">91361a3</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/super-linter/super-linter/commit/502f4fe48a81a392756e173e39a861f8c8efe056"><code>502f4fe</code></a>
chore(main): release 8.3.0 (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7149">#7149</a>)</li>
<li><a
href="https://github.com/super-linter/super-linter/commit/13997378fdbc9d06dd8791ab2ff8985d27810d58"><code>1399737</code></a>
chore: update google-java-format to 1.29.0 (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7104">#7104</a>)</li>
<li><a
href="https://github.com/super-linter/super-linter/commit/b1cf27d548d8e772a89094d18b52c6d097b5ba08"><code>b1cf27d</code></a>
deps(docker): bump the docker group across 1 directory with 12 updates
(<a
href="https://redirect.github.com/super-linter/super-linter/issues/7235">#7235</a>)</li>
<li><a
href="https://github.com/super-linter/super-linter/commit/09306cdabe5c1afaedcab156e7a75b88575c829b"><code>09306cd</code></a>
feat: lint dependabot, github actions with zizmor (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7241">#7241</a>)</li>
<li><a
href="https://github.com/super-linter/super-linter/commit/5aa81e2b92d9cec28bdd7183b8197383aace3203"><code>5aa81e2</code></a>
chore: set devcontainer name (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7240">#7240</a>)</li>
<li><a
href="https://github.com/super-linter/super-linter/commit/29f17277db2147d8af291ae20e5c792b499052c7"><code>29f1727</code></a>
fix: parse json to extract terraform version (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7239">#7239</a>)</li>
<li><a
href="https://github.com/super-linter/super-linter/commit/30403f6aa43e234b7196dfd2eaa425b05294aa4c"><code>30403f6</code></a>
deps(npm): bump body-parser from 2.2.0 to 2.2.1 in /dependencies (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7238">#7238</a>)</li>
<li><a
href="https://github.com/super-linter/super-linter/commit/c8bd6d308cdb7dc47ef439de8edff221afca95d2"><code>c8bd6d3</code></a>
deps(python): bump the pip group across 1 directory with 3 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7234">#7234</a>)</li>
<li><a
href="https://github.com/super-linter/super-linter/commit/5cadbf190ab223e8deab07f2415670e0aef342d9"><code>5cadbf1</code></a>
deps(npm): bump the npm group across 1 directory with 5 updates (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7233">#7233</a>)</li>
<li><a
href="https://github.com/super-linter/super-linter/commit/f40c1749ad03cda5cbb70dd78fd74c9f2a8209a6"><code>f40c174</code></a>
ci(github-actions): bump actions/checkout in the dev-ci-tools group (<a
href="https://redirect.github.com/super-linter/super-linter/issues/7232">#7232</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/super-linter/super-linter/compare/v8.2.1...v8.3.0">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.39.2 to
1.40.0.
<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.40.0</h2>
<h2>[1.40.0] - 2025-11-26</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1405">November
2025</a> changes</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>
<h2>[1.40.0] - 2025-11-26</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1405">November
2025</a> changes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/2d0ce569feab1f8752f1dde43cc2f2aa53236e06"><code>2d0ce56</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/efbd900f8db9952781b6bd1ad83baa38ebd153e3"><code>efbd900</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/863fd15db8bf16bfe9117ec1a83ea7b6e802e9f3"><code>863fd15</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/9a27b16791dd73549457a07f247bc4920f787919"><code>9a27b16</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1432">#1432</a>
from epage/nov</li>
<li><a
href="https://github.com/crate-ci/typos/commit/3dbd9d4eacab7f22586ea581e4d403c3ca9dbbb7"><code>3dbd9d4</code></a>
feat(dict): November additions</li>
<li><a
href="https://github.com/crate-ci/typos/commit/a1a16c7b7c25d1c27cc750525aada8b9ae68b716"><code>a1a16c7</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1427">#1427</a>
from deining/bump-github-action</li>
<li><a
href="https://github.com/crate-ci/typos/commit/cb8d2e78ff23c82fca05340ed256b04513d022b9"><code>cb8d2e7</code></a>
docs: Bump GitHub checkout action in 'github-action.md'</li>
<li><a
href="https://github.com/crate-ci/typos/commit/9f99fb8dfe87b8a3441863fb2e5d5da88a2aa9a2"><code>9f99fb8</code></a>
docs(ref): Clarify extend-words / extend-identifiers</li>
<li>See full diff in <a
href="https://github.com/crate-ci/typos/compare/v1.39.2...v1.40.0">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.39.2&new-version=1.40.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Updates the requirements on
[criterion](https://github.com/criterion-rs/criterion.rs) to permit the
latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/criterion-rs/criterion.rs/blob/master/CHANGELOG.md">criterion's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/criterion-rs/criterion.rs/compare/criterion-v0.7.0...criterion-v0.8.0">0.8.0</a>
- 2025-11-29</h2>
<h3>BREAKING</h3>
<ul>
<li>Drop async-std support</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Bump MSRV to 1.86, stable to 1.91.1</li>
</ul>
<h3>Added</h3>
<ul>
<li>Add ability to plot throughput on summary page.</li>
<li>Add support for reporting throughput in elements and bytes -
<code>Throughput::ElementsAndBytes</code> allows the text summary to
report throughput in both units simultaneously.</li>
<li>Add alloca-based memory layout randomisation to mitigate memory
effects on measurements.</li>
<li>Add doc comment to benchmark runner in criterion_group macro
(removes linter warnings)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix plotting NaN bug</li>
</ul>
<h3>Other</h3>
<ul>
<li>Remove Master API Docs links temporarily while we restore the docs
publishing.</li>
</ul>
<h2>[0.7.0] - 2025-07-25</h2>
<ul>
<li>Bump version of criterion-plot to align dependencies.</li>
</ul>
<h2>[0.6.0] - 2025-05-17</h2>
<h3>Changed</h3>
<ul>
<li>MSRV bumped to 1.80</li>
<li>The <code>real_blackbox</code> feature no longer has any impact.
Criterion always uses <code>std::hint::black_box()</code> now.
Users of <code>criterion::black_box()</code> should switch to
<code>std::hint::black_box()</code>.</li>
<li><code>clap</code> dependency unpinned.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>gnuplot version is now correctly detected when using certain Windows
binaries/configurations that used to fail</li>
</ul>
<h3>Added</h3>
<ul>
<li>Async benchmarking with Tokio may be done via a
<code>tokio::runtime::Handle</code>, not only a
<code>tokio::runtime::Runtime</code></li>
</ul>
<h2>[0.5.1] - 2023-05-26</h2>
<h3>Fixed</h3>
<ul>
<li>Quick mode (--quick) no longer crashes with measured times over 5
seconds when --noplot is not active</li>
</ul>
<h2>[0.5.0] - 2023-05-23</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/criterion-rs/criterion.rs/commit/b49ade728c064f49cb2a70b0368658a15cf21833"><code>b49ade7</code></a>
chore: release v0.8.0</li>
<li>See full diff in <a
href="https://github.com/criterion-rs/criterion.rs/compare/criterion-plot-v0.7.0...criterion-v0.8.0">compare
view</a></li>
</ul>
</details>
<br />


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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
# Objective

To clear the `PointerButtonState`, `clear` is called on each of its
individual fields holding the button state data. Instead add a `clear`
method to `PointerButtonState`.

## Solution

Add a `clear` method to `PointerButtonState` to clear its data.

---------

Co-authored-by: Kevin Chen <chen.kevin.f@gmail.com>
# Objective

Fix crash when a window is closed on current main

<details>
  <summary>Crash log</summary>

```
❯ RUST_BACKTRACE=full cargo run --example 3d_scene -F dev
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.17s
     Running `target/debug/examples/3d_scene`
2025-11-29T21:39:06.551816Z  INFO bevy_diagnostic::system_information_diagnostics_plugin::internal: SystemInfo { os: "Linux (Arch Linux rolling)", kernel: "6.17.9-arch1-1", cpu: "AMD Ryzen 9 9950X 16-Core Processor", core_count: "16", memory: "186.4 GiB" }
2025-11-29T21:39:06.589438Z  INFO bevy_render::renderer: AdapterInfo { name: "NVIDIA GeForce RTX 5080", vendor: 4318, device: 11266, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "580.105.08", backend: Vulkan }
2025-11-29T21:39:06.953148Z  INFO bevy_render::batching::gpu_preprocessing: GPU preprocessing is fully supported on this device.
2025-11-29T21:39:06.959263Z  INFO bevy_winit::system: Creating new window 3d_scene (0v0)
2025-11-29T21:39:09.503214Z  INFO bevy_window::system: No windows are open, exiting
2025-11-29T21:39:09.504687Z  INFO bevy_winit::system: Closing window 0v0
2025-11-29T21:39:09.510808Z ERROR wgpu::backend::wgpu_core: Handling wgpu errors as fatal by default

thread '<unnamed>' (664835) panicked at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-26.0.1/src/backend/wgpu_core.rs:1852:22:
wgpu error: Validation Error

Caused by:
  In Queue::submit
    In a pass parameter
      Texture with '<Surface Texture>' label has been destroyed


stack backtrace:
   0:     0x557069cd5e42 - std[cbf56a46dac989f5]::backtrace_rs::backtrace::libunwind::trace
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1:     0x557069cd5e42 - std[cbf56a46dac989f5]::backtrace_rs::backtrace::trace_unsynchronized::<std[cbf56a46dac989f5]::sys::backtrace::_print_fmt::{closure#1}>
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2:     0x557069cd5e42 - std[cbf56a46dac989f5]::sys::backtrace::_print_fmt
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/sys/backtrace.rs:68:9
   3:     0x557069cd5e42 - <<std[cbf56a46dac989f5]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a3424aac13c77cf6]::fmt::Display>::fmt
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/sys/backtrace.rs:38:26
   4:     0x557069cf05e7 - <core[a3424aac13c77cf6]::fmt::rt::Argument>::fmt
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/core/src/fmt/rt.rs:152:76
   5:     0x557069cf05e7 - core[a3424aac13c77cf6]::fmt::write
   6:     0x557069cdc5d6 - std[cbf56a46dac989f5]::io::default_write_fmt::<std[cbf56a46dac989f5]::sys::stdio::unix::Stderr>
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/io/mod.rs:639:11
   7:     0x557069cdc5d6 - <std[cbf56a46dac989f5]::sys::stdio::unix::Stderr as std[cbf56a46dac989f5]::io::Write>::write_fmt
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/io/mod.rs:1994:13
   8:     0x557069cb255a - <std[cbf56a46dac989f5]::sys::backtrace::BacktraceLock>::print
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/sys/backtrace.rs:41:9
   9:     0x557069cb255a - std[cbf56a46dac989f5]::panicking::default_hook::{closure#0}
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/panicking.rs:292:27
  10:     0x557069cce7e1 - std[cbf56a46dac989f5]::panicking::default_hook
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/panicking.rs:319:9
  11:     0x5570696cd6b3 - <alloc[9fa3fef380221c31]::boxed::Box<dyn for<'a, 'b> core[a3424aac13c77cf6]::ops::function::Fn<(&'a std[cbf56a46dac989f5]::panic::PanicHookInfo<'b>,), Output = ()> + core[a3424aac13c77cf6]::marker::Send + core[a3424aac13c77cf6]::marker::Sync> as core[a3424aac13c77cf6]::ops::function::Fn<(&std[cbf56a46dac989f5]::panic::PanicHookInfo,)>>::call
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:2220:9
  12:     0x5570696b9081 - bevy_ecs[ae55bfe1c74e77a3]::error::bevy_error::bevy_error_panic_hook::<alloc[9fa3fef380221c31]::boxed::Box<dyn for<'a, 'b> core[a3424aac13c77cf6]::ops::function::Fn<(&'a std[cbf56a46dac989f5]::panic::PanicHookInfo<'b>,), Output = ()> + core[a3424aac13c77cf6]::marker::Send + core[a3424aac13c77cf6]::marker::Sync>>::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/error/bevy_error.rs:162:9
  13:     0x557069ccea82 - <alloc[9fa3fef380221c31]::boxed::Box<dyn for<'a, 'b> core[a3424aac13c77cf6]::ops::function::Fn<(&'a std[cbf56a46dac989f5]::panic::PanicHookInfo<'b>,), Output = ()> + core[a3424aac13c77cf6]::marker::Send + core[a3424aac13c77cf6]::marker::Sync> as core[a3424aac13c77cf6]::ops::function::Fn<(&std[cbf56a46dac989f5]::panic::PanicHookInfo,)>>::call
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/alloc/src/boxed.rs:2220:9
  14:     0x557069ccea82 - std[cbf56a46dac989f5]::panicking::panic_with_hook
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/panicking.rs:833:13
  15:     0x557069cb2618 - std[cbf56a46dac989f5]::panicking::panic_handler::{closure#0}
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/panicking.rs:698:13
  16:     0x557069ca9779 - std[cbf56a46dac989f5]::sys::backtrace::__rust_end_short_backtrace::<std[cbf56a46dac989f5]::panicking::panic_handler::{closure#0}, !>
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/sys/backtrace.rs:176:18
  17:     0x557069cb37cd - __rustc[f3f8441e4970532f]::rust_begin_unwind
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/panicking.rs:689:5
  18:     0x557069cf0d5c - core[a3424aac13c77cf6]::panicking::panic_fmt
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/core/src/panicking.rs:80:14
  19:     0x5570675ffab5 - wgpu[932fed8fce9d4b4b]::backend::wgpu_core::default_error_handler
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-26.0.1/src/backend/wgpu_core.rs:659:5
  20:     0x5570675ff6e5 - <wgpu[932fed8fce9d4b4b]::backend::wgpu_core::ErrorSinkRaw>::handle_error
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-26.0.1/src/backend/wgpu_core.rs:643:21
  21:     0x5570675ff3f4 - <wgpu[932fed8fce9d4b4b]::backend::wgpu_core::ContextWgpuCore>::handle_error_inner
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-26.0.1/src/backend/wgpu_core.rs:298:14
  22:     0x5570675fcda3 - <wgpu[932fed8fce9d4b4b]::backend::wgpu_core::ContextWgpuCore>::handle_error_nolabel::<wgpu_core[2f77c8d0c0f83b61]::device::queue::QueueSubmitError>
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-26.0.1/src/backend/wgpu_core.rs:323:14
  23:     0x55706760ed17 - <wgpu[932fed8fce9d4b4b]::backend::wgpu_core::CoreQueue as wgpu[932fed8fce9d4b4b]::dispatch::QueueInterface>::submit
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-26.0.1/src/backend/wgpu_core.rs:1852:22
  24:     0x5570672eef2a - <wgpu[932fed8fce9d4b4b]::api::queue::Queue>::submit::<alloc[9fa3fef380221c31]::vec::Vec<wgpu[932fed8fce9d4b4b]::api::command_buffer::CommandBuffer>>
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wgpu-26.0.1/src/api/queue.rs:253:32
  25:     0x557066f4965c - <bevy_render[cbe98d17828001b5]::renderer::graph_runner::RenderGraphRunner>::run::<bevy_render[cbe98d17828001b5]::renderer::render_system::{closure#1}>
                               at /home/ssingh/Projects/bevy/crates/bevy_render/src/renderer/graph_runner.rs:87:19
  26:     0x5570670a05ad - bevy_render[cbe98d17828001b5]::renderer::render_system
                               at /home/ssingh/Projects/bevy/crates/bevy_render/src/renderer/mod.rs:48:15
  27:     0x55706744d021 - <bevy_render[cbe98d17828001b5]::renderer::render_system as core[a3424aac13c77cf6]::ops::function::FnMut<(&mut bevy_ecs[ae55bfe1c74e77a3]::world::World, &mut bevy_ecs[ae55bfe1c74e77a3]::system::function_system::SystemState<bevy_ecs[ae55bfe1c74e77a3]::system::query::Query<(&bevy_render[cbe98d17828001b5]::view::ViewTarget, &bevy_render[cbe98d17828001b5]::camera::ExtractedCamera)>>)>>::call_mut
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:166:5
  28:     0x5570670ad864 - <&mut bevy_render[cbe98d17828001b5]::renderer::render_system as core[a3424aac13c77cf6]::ops::function::FnMut<(&mut bevy_ecs[ae55bfe1c74e77a3]::world::World, &mut bevy_ecs[ae55bfe1c74e77a3]::system::function_system::SystemState<bevy_ecs[ae55bfe1c74e77a3]::system::query::Query<(&bevy_render[cbe98d17828001b5]::view::ViewTarget, &bevy_render[cbe98d17828001b5]::camera::ExtractedCamera)>>)>>::call_mut
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:298:21
  29:     0x55706735dc8e - <_ as bevy_ecs[ae55bfe1c74e77a3]::system::exclusive_function_system::ExclusiveSystemParamFunction<fn(_) -> _>>::run::call_inner::<(), &mut bevy_ecs[ae55bfe1c74e77a3]::system::function_system::SystemState<bevy_ecs[ae55bfe1c74e77a3]::system::query::Query<(&bevy_render[cbe98d17828001b5]::view::ViewTarget, &bevy_render[cbe98d17828001b5]::camera::ExtractedCamera)>>, &mut bevy_render[cbe98d17828001b5]::renderer::render_system>
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/system/exclusive_function_system.rs:270:21
  30:     0x5570670ad95e - <bevy_render[cbe98d17828001b5]::renderer::render_system as bevy_ecs[ae55bfe1c74e77a3]::system::exclusive_function_system::ExclusiveSystemParamFunction<fn(&mut bevy_ecs[ae55bfe1c74e77a3]::system::function_system::SystemState<bevy_ecs[ae55bfe1c74e77a3]::system::query::Query<(&bevy_render[cbe98d17828001b5]::view::ViewTarget, &bevy_render[cbe98d17828001b5]::camera::ExtractedCamera)>>)>>::run
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/system/exclusive_function_system.rs:273:17
  31:     0x55706735e0ab - <bevy_ecs[ae55bfe1c74e77a3]::system::exclusive_function_system::ExclusiveFunctionSystem<fn(&mut bevy_ecs[ae55bfe1c74e77a3]::system::function_system::SystemState<bevy_ecs[ae55bfe1c74e77a3]::system::query::Query<(&bevy_render[cbe98d17828001b5]::view::ViewTarget, &bevy_render[cbe98d17828001b5]::camera::ExtractedCamera)>>), (), bevy_render[cbe98d17828001b5]::renderer::render_system> as bevy_ecs[ae55bfe1c74e77a3]::system::system::System>::run_unsafe::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/system/exclusive_function_system.rs:135:33
  32:     0x55706702ac65 - <bevy_ecs[ae55bfe1c74e77a3]::world::World>::last_change_tick_scope::<core[a3424aac13c77cf6]::result::Result<(), bevy_ecs[ae55bfe1c74e77a3]::system::system::RunSystemError>, <bevy_ecs[ae55bfe1c74e77a3]::system::exclusive_function_system::ExclusiveFunctionSystem<fn(&mut bevy_ecs[ae55bfe1c74e77a3]::system::function_system::SystemState<bevy_ecs[ae55bfe1c74e77a3]::system::query::Query<(&bevy_render[cbe98d17828001b5]::view::ViewTarget, &bevy_render[cbe98d17828001b5]::camera::ExtractedCamera)>>), (), bevy_render[cbe98d17828001b5]::renderer::render_system> as bevy_ecs[ae55bfe1c74e77a3]::system::system::System>::run_unsafe::{closure#0}>
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/world/mod.rs:3070:9
  33:     0x55706735eb0a - <bevy_ecs[ae55bfe1c74e77a3]::system::exclusive_function_system::ExclusiveFunctionSystem<fn(&mut bevy_ecs[ae55bfe1c74e77a3]::system::function_system::SystemState<bevy_ecs[ae55bfe1c74e77a3]::system::query::Query<(&bevy_render[cbe98d17828001b5]::view::ViewTarget, &bevy_render[cbe98d17828001b5]::camera::ExtractedCamera)>>), (), bevy_render[cbe98d17828001b5]::renderer::render_system> as bevy_ecs[ae55bfe1c74e77a3]::system::system::System>::run_unsafe
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/system/exclusive_function_system.rs:113:15
  34:     0x55706735f7ab - <bevy_ecs[ae55bfe1c74e77a3]::system::exclusive_function_system::ExclusiveFunctionSystem<fn(&mut bevy_ecs[ae55bfe1c74e77a3]::system::function_system::SystemState<bevy_ecs[ae55bfe1c74e77a3]::system::query::Query<(&bevy_render[cbe98d17828001b5]::view::ViewTarget, &bevy_render[cbe98d17828001b5]::camera::ExtractedCamera)>>), (), bevy_render[cbe98d17828001b5]::renderer::render_system> as bevy_ecs[ae55bfe1c74e77a3]::system::system::System>::run_without_applying_deferred
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/system/system.rs:138:23
  35:     0x55706735f806 - <bevy_ecs[ae55bfe1c74e77a3]::system::exclusive_function_system::ExclusiveFunctionSystem<fn(&mut bevy_ecs[ae55bfe1c74e77a3]::system::function_system::SystemState<bevy_ecs[ae55bfe1c74e77a3]::system::query::Query<(&bevy_render[cbe98d17828001b5]::view::ViewTarget, &bevy_render[cbe98d17828001b5]::camera::ExtractedCamera)>>), (), bevy_render[cbe98d17828001b5]::renderer::render_system> as bevy_ecs[ae55bfe1c74e77a3]::system::system::System>::run
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/system/system.rs:119:24
  36:     0x55706988d090 - bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::__rust_begin_short_backtrace::run
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/schedule/executor/mod.rs:288:29
  37:     0x5570697be94d - <bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/schedule/executor/multi_threaded.rs:742:25
  38:     0x5570697254f9 - <<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}::{closure#0} as core[a3424aac13c77cf6]::ops::function::FnOnce<()>>::call_once
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  39:     0x55706977f259 - <core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}::{closure#0}> as core[a3424aac13c77cf6]::ops::function::FnOnce<()>>::call_once
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:274:9
  40:     0x5570697c3253 - std[cbf56a46dac989f5]::panicking::catch_unwind::do_call::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}::{closure#0}>, ()>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:581:40
  41:     0x557069887a9b - __rust_try
  42:     0x557069886fae - std[cbf56a46dac989f5]::panicking::catch_unwind::<(), core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}::{closure#0}>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:544:19
  43:     0x557069886fae - std[cbf56a46dac989f5]::panic::catch_unwind::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}::{closure#0}>, ()>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
  44:     0x5570697bf233 - <bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/schedule/executor/multi_threaded.rs:740:27
  45:     0x55706977f642 - <core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}> as core[a3424aac13c77cf6]::future::future::Future>::poll
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:299:9
  46:     0x557069765c04 - <futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-lite-2.6.1/src/future.rs:653:53
  47:     0x55706977f4f4 - <core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}> as core[a3424aac13c77cf6]::ops::function::FnOnce<()>>::call_once
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:274:9
  48:     0x5570697c374d - std[cbf56a46dac989f5]::panicking::catch_unwind::do_call::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}>, core[a3424aac13c77cf6]::task::poll::Poll<()>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:581:40
  49:     0x557069887a9b - __rust_try
  50:     0x557069887a24 - std[cbf56a46dac989f5]::panicking::catch_unwind::<core[a3424aac13c77cf6]::task::poll::Poll<()>, core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:544:19
  51:     0x557069887a24 - std[cbf56a46dac989f5]::panic::catch_unwind::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}>, core[a3424aac13c77cf6]::task::poll::Poll<()>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
  52:     0x557069766ae8 - <futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>> as core[a3424aac13c77cf6]::future::future::Future>::poll
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-lite-2.6.1/src/future.rs:653:9
  53:     0x557069892db3 - <async_executor[9f76b1279a3f5047]::AsyncCallOnDrop<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>, <async_executor[9f76b1279a3f5047]::Executor>::spawn_inner<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>>::{closure#0}> as core[a3424aac13c77cf6]::future::future::Future>::poll
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-executor-1.13.2/src/lib.rs:1179:31
  54:     0x557069896c98 - <async_task[6d75e66224110732]::raw::RawTask<async_executor[9f76b1279a3f5047]::AsyncCallOnDrop<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>, <async_executor[9f76b1279a3f5047]::Executor>::spawn_inner<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>>::{closure#0}>, core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, <async_executor[9f76b1279a3f5047]::Executor>::schedule::{closure#0}, ()>>::run::{closure#1}
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-task-4.7.1/src/raw.rs:550:21
  55:     0x557069725734 - <<async_task[6d75e66224110732]::raw::RawTask<async_executor[9f76b1279a3f5047]::AsyncCallOnDrop<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>, <async_executor[9f76b1279a3f5047]::Executor>::spawn_inner<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>>::{closure#0}>, core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, <async_executor[9f76b1279a3f5047]::Executor>::schedule::{closure#0}, ()>>::run::{closure#1} as core[a3424aac13c77cf6]::ops::function::FnOnce<()>>::call_once
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  56:     0x55706977f2db - <core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<async_task[6d75e66224110732]::raw::RawTask<async_executor[9f76b1279a3f5047]::AsyncCallOnDrop<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>, <async_executor[9f76b1279a3f5047]::Executor>::spawn_inner<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>>::{closure#0}>, core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, <async_executor[9f76b1279a3f5047]::Executor>::schedule::{closure#0}, ()>>::run::{closure#1}> as core[a3424aac13c77cf6]::ops::function::FnOnce<()>>::call_once
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:274:9
  57:     0x5570697c336e - std[cbf56a46dac989f5]::panicking::catch_unwind::do_call::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<async_task[6d75e66224110732]::raw::RawTask<async_executor[9f76b1279a3f5047]::AsyncCallOnDrop<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>, <async_executor[9f76b1279a3f5047]::Executor>::spawn_inner<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>>::{closure#0}>, core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, <async_executor[9f76b1279a3f5047]::Executor>::schedule::{closure#0}, ()>>::run::{closure#1}>, core[a3424aac13c77cf6]::task::poll::Poll<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:581:40
  58:     0x557069887a9b - __rust_try
  59:     0x5570698871c4 - std[cbf56a46dac989f5]::panicking::catch_unwind::<core[a3424aac13c77cf6]::task::poll::Poll<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>>, core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<async_task[6d75e66224110732]::raw::RawTask<async_executor[9f76b1279a3f5047]::AsyncCallOnDrop<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>, <async_executor[9f76b1279a3f5047]::Executor>::spawn_inner<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>>::{closure#0}>, core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, <async_executor[9f76b1279a3f5047]::Executor>::schedule::{closure#0}, ()>>::run::{closure#1}>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:544:19
  60:     0x5570698871c4 - std[cbf56a46dac989f5]::panic::catch_unwind::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<async_task[6d75e66224110732]::raw::RawTask<async_executor[9f76b1279a3f5047]::AsyncCallOnDrop<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>, <async_executor[9f76b1279a3f5047]::Executor>::spawn_inner<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>>::{closure#0}>, core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, <async_executor[9f76b1279a3f5047]::Executor>::schedule::{closure#0}, ()>>::run::{closure#1}>, core[a3424aac13c77cf6]::task::poll::Poll<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
  61:     0x55706989b7cd - <async_task[6d75e66224110732]::raw::RawTask<async_executor[9f76b1279a3f5047]::AsyncCallOnDrop<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>, <async_executor[9f76b1279a3f5047]::Executor>::spawn_inner<core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::ExecutorState>::spawn_exclusive_system_task::{closure#1}>>>::{closure#0}>, core[a3424aac13c77cf6]::result::Result<(), alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::any::Any + core[a3424aac13c77cf6]::marker::Send>>, <async_executor[9f76b1279a3f5047]::Executor>::schedule::{closure#0}, ()>>::run
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-task-4.7.1/src/raw.rs:549:23
  62:     0x557069924fd2 - <async_task[6d75e66224110732]::runnable::Runnable>::run
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-task-4.7.1/src/runnable.rs:781:18
  63:     0x55706990a9bb - <async_executor[9f76b1279a3f5047]::State>::tick::{closure#0}
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-executor-1.13.2/src/lib.rs:733:18
  64:     0x55706990a4b5 - <async_executor[9f76b1279a3f5047]::Executor>::tick::{closure#0}
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/async-executor-1.13.2/src/lib.rs:324:29
  65:     0x5570697c9dec - <bevy_tasks[be92084dce5eafd]::thread_executor::ThreadExecutorTicker>::tick::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_tasks/src/thread_executor.rs:105:39
  66:     0x55706975e735 - <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope::<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_tasks/src/task_pool.rs:542:45
  67:     0x55706977f583 - <core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}::{closure#0}> as core[a3424aac13c77cf6]::future::future::Future>::poll
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:299:9
  68:     0x557069765b84 - <futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-lite-2.6.1/src/future.rs:653:53
  69:     0x55706977f474 - <core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}> as core[a3424aac13c77cf6]::ops::function::FnOnce<()>>::call_once
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:274:9
  70:     0x5570697c3647 - std[cbf56a46dac989f5]::panicking::catch_unwind::do_call::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}>, core[a3424aac13c77cf6]::task::poll::Poll<!>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:581:40
  71:     0x557069887a9b - __rust_try
  72:     0x5570698877da - std[cbf56a46dac989f5]::panicking::catch_unwind::<core[a3424aac13c77cf6]::task::poll::Poll<!>, core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:544:19
  73:     0x5570698877da - std[cbf56a46dac989f5]::panic::catch_unwind::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>> as core[a3424aac13c77cf6]::future::future::Future>::poll::{closure#0}>, core[a3424aac13c77cf6]::task::poll::Poll<!>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
  74:     0x5570697667ea - <futures_lite[d9f7489fbab33684]::future::CatchUnwind<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>> as core[a3424aac13c77cf6]::future::future::Future>::poll
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-lite-2.6.1/src/future.rs:653:9
  75:     0x55706975d6e3 - <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope::<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_tasks/src/task_pool.rs:545:77
  76:     0x557069766039 - <futures_lite[d9f7489fbab33684]::future::Or<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}, <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}::{closure#0}> as core[a3424aac13c77cf6]::future::future::Future>::poll
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-lite-2.6.1/src/future.rs:454:46
  77:     0x55706975c15d - <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::execute_scope::<(), <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}::{closure#0}>::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_tasks/src/task_pool.rs:548:41
  78:     0x55706975d1e7 - <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner::<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_tasks/src/task_pool.rs:459:85
  79:     0x55706976577a - futures_lite[d9f7489fbab33684]::future::block_on::<alloc[9fa3fef380221c31]::vec::Vec<()>, <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}>::{closure#0}
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-lite-2.6.1/src/future.rs:96:35
  80:     0x5570698fe6e4 - <std[cbf56a46dac989f5]::thread::local::LocalKey<core[a3424aac13c77cf6]::cell::RefCell<(parking[9edd71b36109867e]::Parker, core[a3424aac13c77cf6]::task::wake::Waker)>>>::try_with::<futures_lite[d9f7489fbab33684]::future::block_on<alloc[9fa3fef380221c31]::vec::Vec<()>, <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}>::{closure#0}, alloc[9fa3fef380221c31]::vec::Vec<()>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:508:12
  81:     0x5570698fe563 - <std[cbf56a46dac989f5]::thread::local::LocalKey<core[a3424aac13c77cf6]::cell::RefCell<(parking[9edd71b36109867e]::Parker, core[a3424aac13c77cf6]::task::wake::Waker)>>>::with::<futures_lite[d9f7489fbab33684]::future::block_on<alloc[9fa3fef380221c31]::vec::Vec<()>, <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}>::{closure#0}, alloc[9fa3fef380221c31]::vec::Vec<()>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:472:20
  82:     0x5570697654dd - futures_lite[d9f7489fbab33684]::future::block_on::<alloc[9fa3fef380221c31]::vec::Vec<()>, <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}>
                               at /home/ssingh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-lite-2.6.1/src/future.rs:75:11
  83:     0x55706975b709 - <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor_inner::<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>
                               at /home/ssingh/Projects/bevy/crates/bevy_tasks/src/task_pool.rs:413:13
  84:     0x55706975c349 - <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor::<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_tasks/src/task_pool.rs:343:22
  85:     0x5570698fe407 - <std[cbf56a46dac989f5]::thread::local::LocalKey<alloc[9fa3fef380221c31]::sync::Arc<bevy_tasks[be92084dce5eafd]::thread_executor::ThreadExecutor>>>::try_with::<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}, alloc[9fa3fef380221c31]::vec::Vec<()>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:508:12
  86:     0x5570698fe29d - <std[cbf56a46dac989f5]::thread::local::LocalKey<alloc[9fa3fef380221c31]::sync::Arc<bevy_tasks[be92084dce5eafd]::thread_executor::ThreadExecutor>>>::with::<<bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>::{closure#0}, alloc[9fa3fef380221c31]::vec::Vec<()>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:472:20
  87:     0x55706975b42c - <bevy_tasks[be92084dce5eafd]::task_pool::TaskPool>::scope_with_executor::<<bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run::{closure#1}, ()>
                               at /home/ssingh/Projects/bevy/crates/bevy_tasks/src/task_pool.rs:339:31
  88:     0x5570698d5d34 - <bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::multi_threaded::MultiThreadedExecutor as bevy_ecs[ae55bfe1c74e77a3]::schedule::executor::SystemExecutor>::run
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/schedule/executor/multi_threaded.rs:279:57
  89:     0x55706980e792 - <bevy_ecs[ae55bfe1c74e77a3]::schedule::schedule::Schedule>::run
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/schedule/schedule.rs:540:14
  90:     0x5570696aca61 - <bevy_ecs[ae55bfe1c74e77a3]::world::World>::run_schedule::<bevy_ecs[ae55bfe1c74e77a3]::intern::Interned<dyn bevy_ecs[ae55bfe1c74e77a3]::schedule::set::ScheduleLabel>>::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/world/mod.rs:3673:57
  91:     0x5570696abc76 - <bevy_ecs[ae55bfe1c74e77a3]::world::World>::try_schedule_scope::<(), bevy_ecs[ae55bfe1c74e77a3]::intern::Interned<dyn bevy_ecs[ae55bfe1c74e77a3]::schedule::set::ScheduleLabel>, <bevy_ecs[ae55bfe1c74e77a3]::world::World>::run_schedule<bevy_ecs[ae55bfe1c74e77a3]::intern::Interned<dyn bevy_ecs[ae55bfe1c74e77a3]::schedule::set::ScheduleLabel>>::{closure#0}>
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/world/mod.rs:3591:21
  92:     0x5570696abad9 - <bevy_ecs[ae55bfe1c74e77a3]::world::World>::schedule_scope::<(), bevy_ecs[ae55bfe1c74e77a3]::intern::Interned<dyn bevy_ecs[ae55bfe1c74e77a3]::schedule::set::ScheduleLabel>, <bevy_ecs[ae55bfe1c74e77a3]::world::World>::run_schedule<bevy_ecs[ae55bfe1c74e77a3]::intern::Interned<dyn bevy_ecs[ae55bfe1c74e77a3]::schedule::set::ScheduleLabel>>::{closure#0}>
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/world/mod.rs:3643:14
  93:     0x5570696abab8 - <bevy_ecs[ae55bfe1c74e77a3]::world::World>::run_schedule::<bevy_ecs[ae55bfe1c74e77a3]::intern::Interned<dyn bevy_ecs[ae55bfe1c74e77a3]::schedule::set::ScheduleLabel>>
                               at /home/ssingh/Projects/bevy/crates/bevy_ecs/src/world/mod.rs:3673:14
  94:     0x5570696a8f93 - <bevy_app[8596c61a6a25de94]::sub_app::SubApp>::run_default_schedule
                               at /home/ssingh/Projects/bevy/crates/bevy_app/src/sub_app.rs:141:24
  95:     0x5570696a91e4 - <bevy_app[8596c61a6a25de94]::sub_app::SubApp>::update
                               at /home/ssingh/Projects/bevy/crates/bevy_app/src/sub_app.rs:147:14
  96:     0x55706707b40e - <bevy_render[cbe98d17828001b5]::pipelined_rendering::PipelinedRenderingPlugin as bevy_app[8596c61a6a25de94]::plugin::Plugin>::cleanup::{closure#0}
                               at /home/ssingh/Projects/bevy/crates/bevy_render/src/pipelined_rendering.rs:168:32
  97:     0x55706744e516 - std[cbf56a46dac989f5]::sys::backtrace::__rust_begin_short_backtrace::<<bevy_render[cbe98d17828001b5]::pipelined_rendering::PipelinedRenderingPlugin as bevy_app[8596c61a6a25de94]::plugin::Plugin>::cleanup::{closure#0}, ()>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs:160:18
  98:     0x5570670439c0 - <std[cbf56a46dac989f5]::thread::Builder>::spawn_unchecked_::<<bevy_render[cbe98d17828001b5]::pipelined_rendering::PipelinedRenderingPlugin as bevy_app[8596c61a6a25de94]::plugin::Plugin>::cleanup::{closure#0}, ()>::{closure#1}::{closure#0}
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:562:17
  99:     0x557066f925c1 - <core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<std[cbf56a46dac989f5]::thread::Builder>::spawn_unchecked_<<bevy_render[cbe98d17828001b5]::pipelined_rendering::PipelinedRenderingPlugin as bevy_app[8596c61a6a25de94]::plugin::Plugin>::cleanup::{closure#0}, ()>::{closure#1}::{closure#0}> as core[a3424aac13c77cf6]::ops::function::FnOnce<()>>::call_once
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:274:9
 100:     0x55706703e4db - std[cbf56a46dac989f5]::panicking::catch_unwind::do_call::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<std[cbf56a46dac989f5]::thread::Builder>::spawn_unchecked_<<bevy_render[cbe98d17828001b5]::pipelined_rendering::PipelinedRenderingPlugin as bevy_app[8596c61a6a25de94]::plugin::Plugin>::cleanup::{closure#0}, ()>::{closure#1}::{closure#0}>, ()>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:581:40
 101:     0x557067043a4b - __rust_try
 102:     0x5570670435ea - std[cbf56a46dac989f5]::panicking::catch_unwind::<(), core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<std[cbf56a46dac989f5]::thread::Builder>::spawn_unchecked_<<bevy_render[cbe98d17828001b5]::pipelined_rendering::PipelinedRenderingPlugin as bevy_app[8596c61a6a25de94]::plugin::Plugin>::cleanup::{closure#0}, ()>::{closure#1}::{closure#0}>>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:544:19
 103:     0x5570670435ea - std[cbf56a46dac989f5]::panic::catch_unwind::<core[a3424aac13c77cf6]::panic::unwind_safe::AssertUnwindSafe<<std[cbf56a46dac989f5]::thread::Builder>::spawn_unchecked_<<bevy_render[cbe98d17828001b5]::pipelined_rendering::PipelinedRenderingPlugin as bevy_app[8596c61a6a25de94]::plugin::Plugin>::cleanup::{closure#0}, ()>::{closure#1}::{closure#0}>, ()>
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
 104:     0x5570670435ea - <std[cbf56a46dac989f5]::thread::Builder>::spawn_unchecked_::<<bevy_render[cbe98d17828001b5]::pipelined_rendering::PipelinedRenderingPlugin as bevy_app[8596c61a6a25de94]::plugin::Plugin>::cleanup::{closure#0}, ()>::{closure#1}
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:560:30
 105:     0x55706742811f - <<std[cbf56a46dac989f5]::thread::Builder>::spawn_unchecked_<<bevy_render[cbe98d17828001b5]::pipelined_rendering::PipelinedRenderingPlugin as bevy_app[8596c61a6a25de94]::plugin::Plugin>::cleanup::{closure#0}, ()>::{closure#1} as core[a3424aac13c77cf6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
                               at /home/ssingh/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
 106:     0x557069cd501f - <alloc[9fa3fef380221c31]::boxed::Box<dyn core[a3424aac13c77cf6]::ops::function::FnOnce<(), Output = ()>> as core[a3424aac13c77cf6]::ops::function::FnOnce<()>>::call_once
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/alloc/src/boxed.rs:2206:9
 107:     0x557069cd501f - <std[cbf56a46dac989f5]::sys::thread::unix::Thread>::new::thread_start
                               at /rustc/cc3eee7fbe17ea4b7238531cb97e1b7b8bd6afce/library/std/src/sys/thread/unix.rs:124:17
 108:     0x7f75f1a9698b - <unknown>
 109:     0x7f75f1b1a9cc - <unknown>
 110:                0x0 - <unknown>
Encountered a panic in system `bevy_render::renderer::render_system`!

```

</details>

## Solution

- Remove the `ViewTarget` when it becomes unavailable

## Testing

- Testing by running the bevy examples on linux

---------

Co-authored-by: IceSentry <IceSentry@users.noreply.github.com>
# Objective

`markdownlint` fails on `docs/cargo_features.md` as it doesn't like the
space before the pipe at the end of this line

## Solution

- Add a `.`

## Testing

- CI
# Objective

`load_font_to_fontdb` clones the font handle needlessly.

## Solution

Just call id() on it.
# Objective

- Debugging an application with multiple cameras can be really annoying
because it's hard to know at a glance which pass is associated with
which camera.
- wgpu exposes a feature to set debug_group that will add labels around
groups of passes and draw commands

## Solution

- Expose the debug_group feature to the render graph. 
	- Each sub graph can now specify a debug group
- Add a new debug group label to each camera with the camera order and
entity id
- I also added the new debug_group to the tracy span so you can more
easily see which span is associated with which camera

## Testing

- I tested the  3d_scene and split_screen examples

---

## Showcase

Here's what it looked like before

<img width="1626" height="98" alt="ngfx-ui_cH0BZAQWh9"
src="https://github.com/user-attachments/assets/ef8cdb59-f402-45cd-b2f9-90d315e8e411"
/>

Here's what the split_screen example looks like inside nvidia nsight
with the new debug group labels. You can clearly see each camera clearly
identified.

<img width="1933" height="125" alt="ngfx-ui_t4L2AheYS3"
src="https://github.com/user-attachments/assets/980c4c7f-c933-44b8-8bfb-34406221bf06"
/>
# Objective

The `measure_text_system` and `text_system` systems don't do anything
except iterate a query and then delegate to two other functions,
`create_text_measure` and `queue_text`, respectively. This doesn't serve
any purpose and just makes these systems harder to understand.

## Solution

Flatten the module by moving the code from `create_text_measure` and
`queue_text` into the systems and remove those functions.
…alified path (bevyengine#21981)

# Objective

Fixes bevyengine#21980

## Solution

Use fully qualified path for `Entity`

## Testing

The following code now compiles
```rust
mod test {
    fn derive_component_relationship_hygiene() {
        #[derive(Debug, bevy::prelude::Component)]
        #[relationship(relationship_target = RelTarget)]
        struct Rel(pub bevy::prelude::Entity);

        #[derive(Debug, bevy::prelude::Component)]
        #[relationship_target(relationship = Rel)]
        struct RelTarget(bevy::prelude::Entity);
    }
}```

Co-authored-by: Heart <>
# Objective

Problems:

* If a drag starts over a hovered entity, `picking_events` doesn't add
the hovered entity to the `dragging_over` map in `PointerButtonState`.
This causes a panic when the pointer is moved and `picking_events` tries
to update the non-existant `dragging_over` state for the hovered entity.

* `DragEnter` isn't dispatched on `DragStart`. This doesn't seem ideal.
The drag isn't crossing a geometric boundary, but it is causing the
dragged over entities to enter into a dragged over state.

Fixes bevyengine#21998

## Solution

* Update the `dragging_state` for all hovered entities every frame,
before handling any `PointerInput`s.
* Reworked the `DragEnter` dispatch logic. `DragEnter` now also fires
when a drag starts over an already hovered entity.

## Testing

The examples using drag events should no longer panic:

```
cargo run --example standard_widgets --features="experimental_bevy_ui_widgets"
```

```
cargo run --example ui_drag_and_drop
````

---------

Co-authored-by: Kevin Chen <chen.kevin.f@gmail.com>
…/Metal (bevyengine#21729)

# Objective

- Fixes bevyengine#21719

## Solution

- Implementing `bindless_supported` of the `AsBindGroup` trait for
`ExtendedMaterial`:
```rust
    fn bindless_supported(render_device: &RenderDevice) -> bool {
        B::bindless_supported(render_device) && E::bindless_supported(render_device)
    }
```
Before it just returned the default (true), leading to the mismatch.

I made small, mostly stylistic, improvements to `fn
bind_group_layout_entries` and a few other locations like a comment in
`extended_material` during debugging but I could move that out into a
separate PR as well. Since the changes are rather limited and related to
the issue I decided to leave it in for now.

## Testing

- Tested on Windows/NixOS and MacOS, tested multiple examples but most
testing happened on the `extended_material_bindless` and
`extended_material` examples.
# Objective

The proposed ["Resources as
entities"](bevyengine#20934 ) PR makes
Resource implement Component. This creates a situation where we need to
do:

```rust
#[derive(Resource, Reflect)]
#[reflect(Resource, Component)]
struct Thing;
```

I'm of the mind that we should add the ability for TypeData to have
"dependencies". Ex `reflect(Resource)` implies `reflect(Component)`. For
"subtrait" types, I think supporting this is logical / users would
appreciate it.

## Solution

1. Add a new `FromType<T>::insert_dependencies` function with a default
impl (which makes this a non-breaking change). This does kind of
overload the `FromType` trait (ex: a name like `GetTypeData` might be
better with this new context), but this is a pretty niche trait / piece
of functionality, and I like the idea of not breaking people.
2. Add a new `TypeRegistration::register_type_data<T, V>` function,
which initializes the TypeData `T` for a given type `V` , inserts that
type data, and also inserts any dependent type data using
`insert_dependencies`.
3. Adjust the `Reflect` macro to use `register_type_data` instead of
`insert(FromType::<Self>::from_type())`

This makes it possible to do the following:

```rust
impl<R: Resource + FromReflect + TypePath> FromType<R> for ReflectResource {
    fn from_type() -> Self {
        ReflectResource
    }

    fn insert_dependencies(type_registration: &mut TypeRegistration) {
        type_registration.register_type_data::<ReflectComponent, R>();
    }
}
```

Which then allows dropping `reflect(Component)`:

```rust
#[derive(Resource, Reflect)]
#[reflect(Resource)]
struct Thing;
```

## Testing

I added a unit test 😜
For esoteric reasons we need to send this to the MainWorld for
processing. All the fields are GPU resources or Arc'd so it can be
trivially cloned.
# Objective

Since we set explicit font size and line height attributes for every
text section, the `Metrics` values passed to the text buffer don't
matter. We can just initialize the buffer with some dummy value and then
ignore it.

## Solution

* Initialize the text buffer to some dummy values.
* Remove the code that collects and sets the metrics during text
updates.
# Objective

In `TextPipeline::update_buffer` the `shape_until_scroll` call is
redundant.
The preceding line that calls `set_rich_text`, calls
`shape_until_scroll` itself before returning.

## Solution

Remove the `shape_until_scroll` call.

## Testing

The `testbed_ui` screenshot CI will fail with no text rendered if this
is incorrect.
# Objective

This PR is a sister PR necessary for the website to have
`required_features` data.
You will find more information on the motivations there:
bevyengine/bevy-website#2313

## Solution

- Add the required_features data to the examples docs export

## Testing

I tested both together and it worked fine
# Objective

My [TypeData dependencies](bevyengine#22016 ) PR regressed native binary size by
~8mb.

(thank you [twitcher](https://github.com/bevyengine/twitcher/))

<img width="858" height="306" alt="image"
src="https://github.com/user-attachments/assets/e6d86c67-33f6-4280-bee4-49771014b678"
/>

## Solution

- Inline `register_type_data`, which restores the original binary size:
  - `release breakout` before bevyengine#22016: 127.3mb
  - `release breakout` after bevyengine#22016: 136.4mb
  - `release breakout` after this PR: 127.4mb
# Objective

- In bevyengine#21822 the MSRV bump triggers some new lint warnings, so this pr
fixes them.

## Solution

- Bumped the msrv in bevy_ecs and fixed the lints. But this pr does not
actually bump the msrv. These fixes are all for combining nested if's
together.
The previous docs incorrectly states that the `ExtractSchedule` is run
on the main world. Also some small additional changes.

---------

Co-authored-by: Ivar Källström <ivar.kallstrom@nekohealth.com>
Co-authored-by: JMS55 <47158642+JMS55@users.noreply.github.com>
# Objective

Text is shaped in `measure_text_system`. When the schedule reaches
`text_system` there's no need to reupdate the cosmic-text buffer a
second time. `text_system` should only be updating any stale
`TextLayoutInfo` components.

## Solution

* Add a new method `update_text_layout_info` to `TextPipeline`. This
method updates the given `TextLayoutInfo` without performing any
shaping.
* Call `update_text_layout_info` instead of `queue_text` from
`text_system`.
* Only query for `TextFont`, instead of the full `TextUiReader`.

#

The next step is to remove `TextPipeline::queue_text`. I didn't do that
here as it's a fairly large refactor and I have a bunch of other open
text PRs I'd like to get merged first.

## Testing

#### yellow = this PR, red = main

```
cargo run --example many_glyphs --release --features trace_tracy,debug -- --no-text2d --recompute-text
```

<img width="1599" height="851" alt="Screenshot 2025-11-28 130411"
src="https://github.com/user-attachments/assets/d21a42bf-8ea9-48b9-8cf3-24f742cb4174"
/>

```
cargo run --example many_buttons --release --features trace_tracy,debug -- --text --respawn
```

<img width="1597" height="767" alt="Screenshot 2025-11-28 145240"
src="https://github.com/user-attachments/assets/75d2d989-37fc-4804-9c6d-6056413d91ef"
/>
# Objective

Fixes bevyengine#21336. 

`bevy_platform` and dependents such as `bevy_ecs` may be used on web
without incurring the `RUSTFLAGS` requirement of `getrandom`.

## Solution

Remove dependency `bevy_platform` → `getrandom`.

Note: There was a suggestion of adding a dependency `bevy_math` →
`getrandom` to replace it, but `bevy_math` does not actually depend
transitively on `getrandom` at all (except in its examples), nor does
any other Bevy library. If making `getrandom` work is desired for
convenience of Bevy users, we could add `bevy_internal/web` →
`getrandom/wasm_js`, but that would not be for the use of Bevy itself at
all, and it would mean that Bevy users would hit the `RUSTFLAGS`
requirement even if they don't truly need it.

## Testing

- Ran `cargo run -p ci -- compile` and `cargo run -p ci -- test`.
- Tested depending on this version of `bevy_ecs` in my own wasm32
project.
- Have not tested any further feature combinations.
# Objective

- Fix `cargo t -p bevy_asset --all-features`.
    - Note: `all-features` do not run on CI!
- The doc tests for the `WebAssetPlugin` don't compile at all. There are
bad imports and we don't even add the `AssetPlugin`.

## Solution

- Add missing imports, and add missing plugins to the `App`.

## Testing

- Ran `cargo t -p bevy_asset --all-features` and it passes now!
…gine#22042)

# Objective

Previously, to modify a sampler when loading an image with settings it
was required to set all fields individually. Much of the time, these
settings are all the same so to enable repeating textures you have to
set the address_mode 3 times. To set filters you have to set them
another 3 times.

```rust
MeshMaterial3d(materials.add(
    StandardMaterial {
        base_color_texture:
            Some(
                asset_server.load_with_settings(
                    "floor_graph_base_color.png",
                    |settings: &mut ImageLoaderSettings| {
                        let  descriptor = settings.sampler.get_or_init_descriptor();
                        descriptor.address_mode_u = bevy::image::ImageAddressMode::Repeat;
                        descriptor.address_mode_v = bevy::image::ImageAddressMode::Repeat;
                        descriptor.address_mode_w = bevy::image::ImageAddressMode::Repeat;
                        descriptor.mag_filter = ImageFilterMode::Linear;
                        descriptor.min_filter = ImageFilterMode::Linear;
                        descriptor.mipmap_filter = ImageFilterMode::Linear;
                    }
                ),
            ),
        unlit: true,
        cull_mode: None,
        uv_transform: Affine2::from_scale(Vec2::new(30., 90.)),
        ..default()
    },
)),
```

## Solution

Add two new helpers, loosely modeled after the `Transform::with_<field>`
functions. Further modifications can still be made to the descriptor for
use cases which want to set one of the three fields differently, or
additionally set anisotropy_clamp, etc.

```rust
let descriptor = settings
    .sampler
    .get_or_init_descriptor()
    .set_address_mode(ImageAddressMode::Repeat)
    .set_filter(ImageFilterMode::Linear);
```

## Testing

New test in bevy_image

## Showcase

```rust
MeshMaterial3d(materials.add(
    StandardMaterial {
        base_color_texture:
            Some(
                asset_server.load_with_settings(
                    "floor_graph_base_color.png",
                    |settings: &mut ImageLoaderSettings| {
                        let descriptor = settings
                            .sampler
                            .get_or_init_descriptor()
                            .set_address_mode(ImageAddressMode::Repeat)
                            .set_filter(ImageFilterMode::Linear);
                    }
                ),
            ),
        unlit: true,
        cull_mode: None,
        uv_transform: Affine2::from_scale(Vec2::new(30., 90.)),
        ..default()
    },
)),
```

This PR now includes:

- `set_filter`
- `set_address_mode`
- `set_anisotropic_filter`

---------

Co-authored-by: Greeble <166992735+greeble-dev@users.noreply.github.com>
…ctSizeIterator::len` to panic (bevyengine#22035)

# Objective

- Fixes `ExactSizeIterator::len` panic in a few of these iterators.
Note: the std default impl of `ExactSizeIterator::len` has
`assert_eq!(Some(lower), upper);`. I am facing this issue myself with
`<index_set::Iter as ExactSizeIterator>::len`.
- Should slightly improve performance in some cases, where the more
precise `size_hint` causes less allocations (for example when collecting
into a `Vec`)

## Solution

- Add `size_hint` overrides that forward to inner iterators or an
`ExactSizeIterator::len` override in one specific case.

## Testing

- Since the overrides are pretty simple, I mostly didn't add any tests.
- I didn't feel 100% confident in the `WriteBatchIds::size_hint`
implementation, so I added a test there.
…e_buffer` (bevyengine#22021)

# Objective

Rearrange the order that cosmic text's properties are set for improved
performance.

## Solution

Update size and metrics after `set_rich_text` in
`TextPipeline::update_buffer`

## Testing

yellow = this PR, red = main:

```
cargo run --example many_glyphs --features=trace_tracy,debug --release -- --recompute-text 
```

<img width="1610" height="605" alt="reorder"
src="https://github.com/user-attachments/assets/4819aa79-a147-45ab-8636-3e17f81462b2"
/>

<img width="1603" height="617" alt="reorder-measure-text"
src="https://github.com/user-attachments/assets/eb74569d-79e1-4138-9283-641eae8fd2ab"
/>
…ck. (bevyengine#22017)

# Objective

- Fix the first flake related to bevyengine#22001.
- We had a double lock problem. We would first lock `asset_infos`, then
lock one of the assets within `asset_infos` **and then dropped the
`asset_infos` lock**. This means however that if a process needs to
access `asset_infos` (which is necessary for loading nested assets
during processing), we'll have one thread trying to lock 1) asset_infos,
2) per-asset lock, and we'll have another thread trying to lock 1)
per-asset lock (we've already dropped the asset_infos lock), 2)
asset_infos. A classic deadlock!

## Solution

- Before locking the per-asset lock, we clone the `Arc<RwLock>` out of
the `asset_infos`, drop the `asset_infos`, and only then lock the
per-asset lock. This ensures that we never hang on the `asset_infos`
lock when just trying to fetch a single asset.
- Make all the access to `asset_infos` "short" - they get what they need
out of `asset_infos` and then drop the lock as soon as possible.
- I also used `?` to cleanup some methods in `ProcessorAssetInfos`,
where previously it was "remove the asset info, then have one big `if
let` after it". Now we just return early if the value is none.
- I also happened to fix a weird case where the new path in a rename
wasn't guarded by a transaction lock. Now it is!

## Testing

- Running without this fix I get "Ran out of loops" from the
`only_reprocesses_wrong_hash_on_startup` test quite quickly (after a
minute or so). With this fix, I now only get the assertion failure
problem. If I also skip that assertion, the test hasn't flaked for a
while! Yay, no more deadlock!
# Objective

`queue_text` does a second pass to compute the size of the text buffer,
this could be moved inside the layout update loop instead.

## Solution

Do the buffer size computation inside the update loop.
aevyrie and others added 29 commits December 14, 2025 21:35
# Objective

- Recompute AABBs when meshes change. 
- Optimize sprite AABB re-computation to avoid component insertion where
mutation is possible.
- Fixes bevyengine#4294 and closes bevyengine#7971

## Solution

- Implement the things.

## Testing

- CI
# Objective

Fixes
bevyengine#22031 (comment).
Fixes bevyengine#15201.
bevyengine#22031 makes `ViewTarget::out_texture_format` to return the underlying
texture’s format, which causes some issues:
1. `ExtractedWindow::swap_chain_texture_view` always uses srgb view. But
the underlying swap chain texture in WebGPU can be Bgra8unorm, leading
to format mismatch between the render pipeline and the render pass.
2. We can no longer use srgb view for non-srgb target texture, it will
panic due to incompatible pipeline:
```rs
    let mut image = Image::new_target_texture(512, 512, TextureFormat::Rgba8Unorm);
    image.texture_view_descriptor = Some(bevy_render::render_resource::TextureViewDescriptor {
        format: Some(TextureFormat::Rgba8UnormSrgb),
        ..Default::default()
    });
    image.texture_descriptor.view_formats = &[TextureFormat::Rgba8UnormSrgb];
```

## Solution

Reverts bevyengine#22031.
Renames some `format` to `view_format` explicitly.
Adds `view_format` to `GpuImage` and `Image::new_target_texture` so we
can make render pipeline match render pass texture view.

## Testing
Tested `render_to_texture` and `screenshot` examples on linux and
webgpu.
<details>
<summary>The rendered Rgba8Unorm texture with or without srgb view in
MeshMaterial3d looks the same, but the underlaying data is
different:</summary>

With srgb view:
<img width="912" height="640" alt="屏幕截图_20251212_223355"
src="https://github.com/user-attachments/assets/d320bad9-d11a-4d3d-93a9-879af6413658"
/>

Without srgb view:
<img width="912" height="640" alt="屏幕截图_20251212_223313"
src="https://github.com/user-attachments/assets/522abf23-9c85-468d-8d17-a94495ee4452"
/>

</details>
)

# Objective

when `RenderAssets` with `RenderAssetUsages::RENDER_WORLD` and without
`RenderAssetUsages::MAIN_WORLD` are extracted, the asset is removed from
the assets collection. this causes some issues:
- systems which rely on the asset, like picking with meshes, fail with
"asset not found" errors which are unintuitive.
- loading the asset by path a second time results in the asset being
reloaded from storage, re-extracted and re-transferred to gpu, replacing
the existing asset
- knowledge about the asset state is lost, we cannot tell if an asset is
already loaded with `AssetServer::get_handle`
- metadata (image size, e.g.) is no longer available for the asset

## Solution

### extraction:
- add `take_gpu_data` to the `RenderAsset` trait. use it to pull the
data out of the asset for transfer, and leave the empty asset in the
collection. default implementation just `clone`s the asset.
- if the data has already been taken, ~~panic. this follows from
modifying an asset after extraction, which is always a code error, so i
think panic here makes sense~~ _log an error_

### Mesh/RenderMesh:
- make `Mesh::attributes` and `Mesh::indices` options
- take them on extraction
- `expect` operations which access or modify the vertex data or indices
if it has been extracted. accessing the vertex data after extraction is
always a code error. fixes bevyengine#19737 by resulting in the error `Mesh has
been extracted to RenderWorld. To access vertex attributes, the mesh
must have RenderAssetUsages::MAIN_WORLD`
- provide `try_xxx` operations which allow users to handle the access
error gracefully if required (no usages as part of this pr, but provided
for future)
- compute the mesh `Aabb` when gpu data is taken and store the result.
this allows extracted meshes to still use frustum culling (otherwise
using multiple copies of an extracted mesh now panics as `compute_aabb`
relied on vertex positions). there's a bit of a tradeoff here: users may
not need the Aabb and we needlessly compute it. but i think users almost
always do want them, and computing once (for extracted meshes) is
cheaper than the alternative, keeping position data and computing a
fresh `Aabb` every time the mesh is used on a new entity.

### Image/GpuImage:
images are a little more complex because the data can be deliberately
`None` for render-targets / GPU-written textures where we only want an
uninitialized gpu-side texture.
- take `Image::data` on extraction
- record on the resulting `GpuImage` whether any data was found
initially
- on subsequent modifications with no data, panic if there was data
previously

corner case / issue: when used with `RenderAssetBytesPerFrameLimiter`
there may be no previous gpu asset if it is still queued pending upload
due to the bandwidth limit. this can result in a modified image with
initial data skipping the `had_data` check, resulting in a blank
texture. i think this is sufficiently rare that it's not a real problem,
users would still hit the panic if the asset is transferred in time and
the problem/solution should be clear when they do hit it.

### ShaderStorageBuffer/GpuShaderStorageBuffer
follows the same pattern as Image/GpuImage:
- take `ShaderStorageBuffer::data` on extraction
- record on the resulting `GpuShaderStorageBuffer` whether any data was
found initially
- on modifications with no data, panic if there was data previously

we don't have the queue issue here because `GpuShaderStorageBuffer`
doesn't implement `byte_len` so we can't end up queueing them.

#### other RenderAssets
i didn't modify the other `RenderAsset` types
(`GpuAutoExposureCompensationCurve`, `GpuLineGizmo`,
`RenderWireframeMaterial`, `PreparedMaterial`, `PreparedMaterial2d`,
`PreparedUiMaterial`) on the assumption that ~~cloning these is cheap
enough anyway~~ _the asset usages are not exposed so we should never
call `take_gpu_data`. the default implementation panics with a message
directing users to implement the method if required_

## Testing

only really tested within my work project. i can add some explicit tests
if required.

---------

Co-authored-by: Jasmine S <jasmine.schweitzer@nominal.io>
Co-authored-by: Greeble <166992735+greeble-dev@users.noreply.github.com>
# Objective

Fixes bevyengine#21582 

## Solution

In the original implementation of `extract_meshes_for_gpu_building`, we
didn’t account for the case where components are removed. This patch
adds fixes for all affected components.

## Testing

The example `shadow_caster_receiver` works now.
…0671)

# Objective

Fixes bevyengine#20376:

CombinatorSystems short circuit if one of the systems fails to validate,
e.g. because it queries a Component that isn't resident in the world.

## Solution

Instead, we can treat the system failing as the system yielding `false`,
appropriately querying the second system depending on the logical
operator.

## Testing

I added a new test that calls the combinators in different
configurations with a failing system as both the rhs and lhs of the
combinator and counts the invocations of the system and the condition.

---

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
# Objective

- Users often want to run a fullscreen shader but the current solution
involves copying the custom_post_processing example which is a 350 line
file with a lot of low level wgpu complexity. Users shouldn't have to
deal with that just to make a fullscreen shader

## Solution

- Introduce a new FullscreenMaterial trait and FullscsreenMaterialPlugin
- This new material will run a fullscreen triangle with the specified
shader. It builds on top of the existing FullscreenShader infrastructure
- It lets user customize the node ordering. There's no defaults right
now becausae it's intended as a bit of a primitive plugin. Eventually we
could have some kind of default for custom post processing

## Testing

Made a new fullscreen_material example and made sure it works

## Follow up

Once this is merged there are various things that should be done to
improve it. Add the option to bind the depth texture, offer defaults for
post processing, use a full AsBindGroup, add a way to bind the gbuffer.

---------

Co-authored-by: JMS55 <47158642+JMS55@users.noreply.github.com>
Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
# Objective

Fix the stackoverflow on asset reload when asset contains its own path
as a dependency.

## Problem
There is a way to create a circular dependency graph with an asset
loader. I don't know how I managed to do it. I have tried to create a
minimal example, but it has not exhibited the error yet. But I do have a
means of exhibiting the error with my project Nano-9, reproduction
details below.

## Solution

This commit has two fixes: one at the insertion point (introducing
self-reference), and one at the recursion point (following
self-reference).

### Insertion point
Issue warning when an asset wants to mark itself as a dependency and do
not allow inserting itself as a dependent.

### Recursion point
Check for self loops. Warn on self detection and do not loop.

It's likely that if you fix it at the insertion point, you don't need to
worry about it at the recursion point. You will have stopped the cause
of the issue. I left both in for transparency about where the issue lies
so far as I could see.

## Testing

I can reproduce this error with an example from my [Nano-9
project](https://github.com/shanecelis/nano-9). I wish it were a minimal
example. It's not, but I have put it on a branch to isolate this issue.
It uses my Bevy fork that is v0.16.1 plus a commit tagged v0.16.1b,
which was required for it to build. This PR is a cherry pick of the fix
commit against Bevy's main branch.

I can reproduce this error by doing the following:

```sh
git clone -b bevy-asset-stackoverflow https://github.com/shanecelis/nano-9.git
cd nano-9
cargo run --example sprite --features watcher --no-default-features &
touch assets/BirdSprite.png
```
Here is an excerpt of the crash report on macOS 15.6.1, M4 Max:

```
...
Thread 0 Crashed:: main Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	       0x18cc2a388 __pthread_kill + 8
1   libsystem_pthread.dylib       	       0x18cc6388c pthread_kill + 296
2   libsystem_c.dylib             	       0x18cb6ca3c abort + 124
3   sprite                        	       0x10598d09c std::sys::pal::unix::abort_internal::h1edcc850f5dec78e + 12
4   sprite                        	       0x10598c5b0 std::process::abort::hffd6db68ff0662a6 + 12
5   sprite                        	       0x10580d464 std::sys::pal::unix::stack_overflow::imp::signal_handler::h7b8eae417c5ee98d + 604
6   libsystem_platform.dylib      	       0x18cc9d6a4 _sigtramp + 56
7   sprite                        	       0x10573f890 _$LT$std..path..Path$u20$as$u20$core..hash..Hash$GT$::hash::h732e05949b6a170e + 136
8   sprite                        	       0x10573f890 _$LT$std..path..Path$u20$as$u20$core..hash..Hash$GT$::hash::h732e05949b6a170e + 136
9   sprite                        	       0x104d5f278 _$LT$atomicow..CowArc$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$::hash::h6c45383281764a05 + 40
10  sprite                        	       0x104ed62d8 _$LT$bevy_asset..path..AssetPath$u20$as$u20$core..hash..Hash$GT$::hash::h11b348528182d76d + 52
11  sprite                        	       0x104ded598 hashbrown::map::make_hash::hb7812997186aa817 + 56
12  sprite                        	       0x104de8eec hashbrown::map::HashMap$LT$K$C$V$C$S$C$A$GT$::insert::h3a8b107dcf9615e9 + 64
13  sprite                        	       0x104da7264 hashbrown::set::HashSet$LT$T$C$S$C$A$GT$::insert::h44e988e7a7752688 + 24
14  sprite                        	       0x104e7b15c bevy_platform::collections::hash_set::HashSet$LT$T$C$S$GT$::insert::hb1d23d506d548fcc + 24
15  sprite                        	       0x104dba770 bevy_asset::server::handle_internal_asset_events::_$u7b$$u7b$closure$u7d$$u7d$::queue_ancestors::hd1670687bb18ae9f + 216
16  sprite                        	       0x104dba780 bevy_asset::server::handle_internal_asset_events::_$u7b$$u7b$closure$u7d$$u7d$::queue_ancestors::hd1670687bb18ae9f + 232
17  sprite                        	       0x104dba780 bevy_asset::server::handle_internal_asset_events::_$u7b$$u7b$closure$u7d$$u7d$::queue_ancestors::hd1670687bb18ae9f + 232
18  sprite                        	       0x104dba780 bevy_asset::server::handle_internal_asset_events::_$u7b$$u7b$closure$u7d$$u7d$::queue_ancestors::hd1670687bb18ae9f + 232
19  sprite                        	       0x104dba780 bevy_asset::server::handle_internal_asset_events::_$u7b$$u7b$closure$u7d$$u7d$::queue_ancestors::hd1670687bb18ae9f + 232
...
```

### Exercising the fix

Alter Nano-9's Cargo file to use the fix branch:

```diff
-bevy = { git = "https://github.com/shanecelis/bevy.git", tag = "v0.16.1b" }
+bevy = { git = "https://github.com/shanecelis/bevy.git", branch = "fix/asset-reload-overflow" }
```
Run the same command again, and you will see a warning:

```sh
2025-10-21T04:10:52.348726Z  WARN bevy_asset::server::info: Asset 'BirdSprite.png' wants to treat itself as a dependency
```

## Alternative Solution

This commit fixes the immediate stackoverflow issue; however, it would
be even better if the user were prevented from making a circular
dependency graph in the first place.

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
# Objective

- Migrate TAA to `spec_v2`

## Testing

- Ran `anti_aliasing` example, seems fine
# Objective
#### Fix two problems
1. Scrollbars are placed in the padding region of the node, not the
content region. The content insets returned by
`ComputedNode::content_inset` should account for the sizes of the
scrollbars.
3. In `update_clipping_system` the clipping rect calculations are
incorrect, `scrollbar_size` should only be added to the `right` and
`bottom` when `visual_area` is set to `ContentBox`. For `BorderBox` and
`PaddingBox`, the scrollbars are inside the clipping rect.

## Solution

1. Add the scrollbar size to the `right` and `bottom` insets returned by
`ComputedNode::content_inset`.
2. Since `content_inset` now includes `scrollbar size`, remove the
subtraction from `clip_rect.max` in `update_clipping_system`.

## Testing

Look at:
```
cargo run --example scrollbars --features="experimental_bevy_ui_widgets"
```
# Objective

- Followup on bevyengine#21235
- See
mockersf/bevy@easy-screenshots...mockersf:bevy:easy-screenrecording
for what's new
- Be able to record videos from Bevy in a consistent manner

## Solution

- Make a new `EasyScreenRecordPlugin` in the dev tools

## Testing

- Add to any example
```
        .add_plugins(bevy::dev_tools::EasyScreenRecordPlugin::default())
```
- Run the example with the feature `bevy_internal/screenrecording`
enabled
- press the space bar
- wait for it...
- press the space bar again
- screen recording! 🎉 
- almost... you now have a h264 file. VLC can read them, but they are
not the most friendly format
- `ffmpeg` is our friend! `for file in *.h264; do ffmpeg -i $file
$file.mp4; done`
- you now have a .mp4 file that can be shared anywhere!

---

## Showcase

directly taken by Bevy


https://github.com/user-attachments/assets/217f5093-9443-40e5-b2ce-33f65f6a56c6
# Objective

The UI picking backend queries twice for the node data. Simplify
`ui_picking` by storing the camera entity and picking data in
`hit_nodes` instead of the second query.

## Solution

Store the camera entity and picking data in `hit_nodes` instead of
querying for them again.
# Objective

Add helper functions to `ComputedNode` that return the bounds of the
node's border, padding, and content areas.

## Solution

Add helper functions `border_box`, `padding_box`, and `content_box` to
`ComputedNode`.

#

Included a release note. These changes are very trivial and don't really
need one, but I've got quite a few more less trivial changes to
`ComputedNode` that I want to add later.

## Testing

This PR also includes a couple of trivial tests.
RenderTarget was a Component that derived Reflect but did not Reflect
Component

as of this merge today:
bevyengine@67633b3

Without this fix, spawning a scene with a camera (such as from a Blender
export) causes a panic:

> scene contains the unregistered component
`bevy_camera::camera::RenderTarget`. consider adding
`#[reflect(Component)]` to your type
…ne#22005)

# Objective

Builtin BRP methods make constant use of `parse` and `parse_some` in
parsing utilities. Making them public allows users to use them in their
own code.

## Solution

Make both functions `pub`.

## Testing

I think testing is not necessary, especially since doc strings do not
link anywhere.
# Objective

- Trying to doc most of the unsafe in the ecs crate so we can turn on
`unsafe_op_in_unsafe_fn`.

## Solution

- Unfortunately reviewing the unsafe docs will probably not be trivial
if we try to do it all in one pr. There are 400+ warnings when you turn
on the lint. So we need to break it up as much as possible as reviewing
the safety contracts in some cases isn't the easiest.
- This pr includes two types of unsafe blocks.
1. Blocks that already had safety comments, but were missing the `unsafe
{}` block.
2. Unsafe functions that have the same safety contract as their unsafe
parent function and are very short. (Usually just the call to the
function).
As it turns out, many glTF extensions require accessing the data from
other extensions.

Trying to isolate and scope access is much less helpful than exposing
the glTF objects for consumers to take what they want.

This includes

- extension data in the "others" category (anything the gltf crate
doesn't support explicitly)
- the functions that return the extension data the gltf crate *does*
have hardcoded support for
- names and any other available data

---

The diff for users is that they

- no longer have to worry about defining extension ids to process
- no longer have to worry about multiple calls due to those ids
- now have to use `.extension_value()`, `.name()`, or similar to get
relevant data
- Can now access `.light()` or any other data built-in to the gltf
crate, such as
[`.variants`](https://docs.rs/gltf/1.4.1/gltf/struct.Document.html#method.variants)
for `KHR_materials_variants`.

An example diff on the user side can be viewed in the update commit for
the Skein PR:
rust-adventure/skein@ac1e510
…bevyengine#22115)

# Objective

- derive `Clone` and `Copy` for the newer unit structs in
`interaction_states`, this is useful for frameworks that are generic
over `Component + Clone/Copy` and is also the status quo for the
existing `InteractionDisabled` component defined a few lines above

## Solution

- derive `Clone` and `Copy` for `Pressed`, `Checkable`, and `Checked`
# Objective

- Followup to bevyengine#22106.

## Solution

- Use slice `last` instead of iter `last` for better performance - we
don't need to iterate just to find the last element.
…atures. (bevyengine#22125)

# Objective

- bevyengine#22106 accidentally added imports for AnimationClip, HashMap, and
HashSet - but these are only available/used if the bevy_animation
feature is enabled. So running `cargo t -p bevy_gltf` fails to compile
and gives warnings!

## Solution

- Guard these `use` statements on the bevy_animation feature.

## Testing

- Ran `cargo t -p bevy_gltf`.
- Ran `cargo t -p bevy_gltf --all-features`.
…2124)

# Objective

- Closes bevyengine#21949 

## Solution

- Implements the solution as suggested by 21949. The Directional
Navigation Map does not prune any old edges that may be connected to
removed Nodes, so we clear the map between rebuilds of the map.

(If the more preferable solution figures out what nodes were removed and
then calls `map.remove_multiple` instead, you can feel free to reject
this)

## Testing

- Did you test these changes? If so, how?
I did not test this change, but the reporter of the issue did (via
backport to an older version of Bevy). However, the fix is
straightforward and explains itself. If you would like an automated test
somehow, some pointers to tests that do similar would be welcome.
# Objective

- use gizmos in non-system contexts, such as deep in a math library or
callback without ecs access.
- kind of upstream https://github.com/atlv24/glizmo
- builds off of bevyengine#22105

## Solution

- mutex + deref

## Testing

-
# Objective

- Screen Recording is not ready to be exposed, and very hard to build on
windows

## Solution

- Disable it for now on windows

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: JMS55 <47158642+JMS55@users.noreply.github.com>
…av (bevyengine#22123)

# Objective

- Fixes bevyengine#21950

## Solution

- Updated the query as suggested in the issue to also check for
`InheritedVisibility`. Entities that have `Visibility::INHERITED` and
`InheritedVisibility::HIDDEN` should also be ignored for directional
navigation

## Testing

- Did you test these changes? If so, how?
I did not test this change at all! And I wasn’t sure how best to set up
an automated test for this since there is not an existing one for that
function, else I would have. However, the logic change is simple at
least… So if a test is desired, just let me know and please provide me
with a little direction :)
…#22131)

# Objective

extension hooks for `on_texture` currently pass the extension data and
not the gltf object.

## Solution

`IoTaskPool::scope` preserves ordering if the futures are only spawned
from the root scope, so we can use that to zip with the texture
references for hooks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.