/
CHANGELOG.md
6946 lines (6571 loc) · 357 KB
/
CHANGELOG.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!-- MD024 - We want repeated headings in a changelog file -->
<!-- markdownlint-disable-file MD024 -->
# Changelog
While we try to keep the `Unreleased` changes updated, it is often behind and does not include
all merged pull requests. To see a list of all changes since the latest release, you may compare
current changes on git with [previous release tags][git_tag_comparison].
[git_tag_comparison]: https://github.com/bevyengine/bevy/compare/v0.13.0...main
## Version 0.13.0 (2024-02-17)
### A-Rendering + A-Windowing
- [Allow prepare_windows to run off main thread.][11660]
- [Allow prepare_windows to run off main thread on all platforms][11672]
- [don't run `create_surfaces` system if not needed][11720]
- [fix create_surfaces system ordering][11747]
### A-Animation + A-Reflection
- [Add type registrations for animation types][11889]
### A-Assets
- [Don't `.unwrap()` in `AssetPath::try_parse`][10452]
- [feat: `Debug` implemented for `AssetMode`][10494]
- [Remove rogue : from embedded_asset! docs][10516]
- [use `tree` syntax to explain bevy_rock file structure][10523]
- [Make AssetLoader/Saver Error type bounds compatible with anyhow::Error][10493]
- [Fix untyped labeled asset loading][10514]
- [Add `load_untyped` to LoadContext][10526]
- [fix example custom_asset_reader on wasm][10574]
- [`ReadAssetBytesError::Io` exposes failing path][10450]
- [Added Method to Allow Pipelined Asset Loading][10565]
- [Add missing asset load error logs for load_folder and load_untyped][10578]
- [Fix wasm builds with file_watcher enabled][10589]
- [Do not panic when failing to create assets folder (#10613)][10614]
- [Use handles for queued scenes in SceneSpawner][10619]
- [Fix file_watcher feature hanging indefinitely][10585]
- [derive asset for enums][10410]
- [Ensure consistency between Un/Typed `AssetId` and `Handle`][10628]
- [Fix Asset Loading Bug][10698]
- [remove double-hasing of typeid for handle][10699]
- [AssetMetaMode][10623]
- [Fix GLTF scene dependencies and make full scene renders predictable][10745]
- [Print precise and correct watch warnings (and only when necessary)][10787]
- [Allow removing and reloading assets with live handles][10785]
- [Add GltfLoaderSettings][10804]
- [Refactor `process_handle_drop_internal()` in bevy_asset][10920]
- [fix base64 padding when loading a gltf file][11053]
- [assets should be kept on CPU by default][11212]
- [Don't auto create assets folder][11218]
- [Use `impl Into<A>` for `Assets::add`][10878]
- [Add `reserve_handle` to `Assets`.][10939]
- [Better error message on incorrect asset label][11254]
- [GLTF extension support][11138]
- [Fix embedded watcher to work with external crates][11370]
- [Added AssetLoadFailedEvent, UntypedAssetLoadFailedEvent][11369]
- [auto create imported asset folder if needed][11284]
- [Fix minor typo][11491]
- [Include asset path in get_meta_path panic message][11504]
- [Fix documentation for `AssetReader::is_directory` function][11538]
- [AssetSaver and AssetTransformer split][11260]
- [AssetPath source parse fix][11543]
- [Allow TextureAtlasBuilder in AssetLoader][11548]
- [Add a getter for asset watching status on `AssetServer`][11578]
- [Make SavedAsset::get_labeled accept &str as label][11612]
- [Added Support for Extension-less Assets][10153]
- [Fix embedded asset path manipulation][10383]
- [Fix AssetTransformer breaking LabeledAssets][11626]
- [Put asset_events behind a run condition][11800]
- [Use Asset Path Extension for `AssetLoader` Disambiguation][11644]
### A-Core + A-App
- [Add Accessibility plugin to default plugins docs][11512]
### A-Accessibility
- [Add html tags required for accessibility][10989]
- [missed negation during accessibility refactor][11206]
### A-Transform
- [Add `Transform::is_finite`][10592]
### A-ECS + A-Hierarchy
- [Add a doc note about despawn footgun][10889]
### A-Text
- [Rename `TextAlignment` to `JustifyText`.][10854]
- [Subtract 1 from text positions to account for glyph texture padding.][11662]
### A-Assets + A-UI
- [UI and unloaded assets: don't filter out nodes with an unloaded image][11205]
### A-Utils + A-Time
- [Make SystemTime available in both native and wasm][10980]
### A-Rendering + A-Assets
- [Fix shader import hot reloading on windows][10502]
- [Unload render assets from RAM][10520]
- [mipmap levels can be 0 and they should be interpreted as 1][11767]
### A-Physics
- [refactor collide code (Adopted)][11106]
- [Use `IntersectsVolume` for breakout example collisions][11500]
### A-ECS + A-Editor + A-App + A-Diagnostics
- [System Stepping implemented as Resource][8453]
### A-Reflection + A-Scenes
- [Implement and register Reflect (value) for CameraRenderGraph and CameraMainTextureUsages][11878]
### A-Audio + A-Windowing
- [Winit update: fix suspend on Android][11403]
### A-Build-System + A-Meta
- [Standardize toml format with taplo][10594]
### A-ECS + A-Time
- [Wait until `FixedUpdate` can see events before dropping them][10077]
- [Add First/Pre/Post/Last schedules to the Fixed timestep][10977]
- [Add run conditions for executing a system after a delay][11095]
- [Add paused run condition][11313]
### A-Meta
- [Add "update screenshots" to release checklist][10369]
- [Remove references to specific projects from the readme][10836]
- [Fix broken link between files][10962]
- [[doc] Fix typo in CONTRIBUTING.md][10971]
- [Remove unused namespace declarations][10965]
- [Add docs link to root `Cargo.toml`][10998]
- [Migrate third party plugins guidelines to the book][11242]
- [Run markdownlint][11386]
- [Improve `config_fast_builds.toml`][11529]
- [Use `-Z threads=0` option in `config_fast_builds.toml`][11541]
- [CONTRIBUTING.md: Mention splitting complex PRs][11703]
### A-Time
- [docs: use `read` instead of deprecated `iter`][10376]
- [Rename `Time::<Fixed>::overstep_percentage()` and `Time::<Fixed>::overstep_percentage_f64()`][10448]
- [Rename `Timer::{percent,percent_left}` to `Timer::{fraction,fraction_remaining}`][10442]
- [Document how to configure FixedUpdate][10564]
- [Add discard_overstep function to `Time<Fixed>`][10453]
### A-Assets + A-Reflection
- [Register `AssetPath` as type for reflection][11483]
### A-Diagnostics + A-Utils
- [move once from bevy_log to bevy_utils, to allow for it's use in bevy_ecs][11419]
### A-Windowing + A-App
- [Revert `App::run()` behavior/Remove `winit` specific code from `bevy_app`][10389]
### A-ECS + A-Scenes
- [Make the MapEntities trait generic over Mappers, and add a simpler EntityMapper][11428]
### A-Hierarchy
- [bevy_hierarchy: add some docs][10598]
- [Make bevy_app and reflect opt-out for bevy_hierarchy.][10721]
- [Add `bevy_hierarchy` Crate and plugin documentation][10951]
- [Rename "AddChild" to "PushChild"][11194]
- [Inline trivial methods in bevy_hierarchy][11332]
### A-ECS + A-App
- [Add custom schedule example][11527]
### A-Transform + A-Math
- [return Direction3d from Transform::up and friends][11604]
### A-UI + A-Text
- [Improved Text Rendering][10537]
- [Feature-gate all references to `bevy_text` in `bevy_ui`][11391]
### A-Input
- [Make ButtonSettings.is_pressed/released public][10534]
- [Rename `Input` to `ButtonInput`][10859]
- [Add method to check if all inputs are pressed][11010]
- [Add window entity to TouchInput events][11128]
- [Extend `Touches` with clear and reset methods][10930]
- [Add logical key data to KeyboardInput][11400]
- [Derive Ord for GamepadButtonType.][11791]
- [Add delta to CursorMoved event][11710]
### A-Rendering + A-Diagnostics
- [Use `warn_once` where relevant instead of manually implementing a single warn check][11693]
### A-Rendering
- [Fix bevy_pbr shader function name][10423]
- [Implement Clone for VisibilityBundle and SpatialBundle][10394]
- [Reexport `wgpu::Maintain`][10461]
- [Use a consistent scale factor and resolution in stress tests][10474]
- [Ignore inactive cameras][10543]
- [Add shader_material_2d example][10542]
- [More inactive camera checks][10555]
- [Fix post processing example to only run effect on camera with settings component][10560]
- [Make sure added image assets are checked in camera_system][10556]
- [Ensure ExtendedMaterial works with reflection (to enable bevy_egui_inspector integration)][10548]
- [Explicit color conversion methods][10321]
- [Re-export wgpu BufferAsyncError][10611]
- [Improve shader_material example][10547]
- [Non uniform transmission samples][10674]
- [Explain how `AmbientLight` is inserted and configured][10712]
- [Add wgpu_pass method to TrackedRenderPass][10722]
- [Add a `depth_bias` to `Material2d`][10683]
- [Use as_image_copy where possible][10733]
- [impl `From<Color>` for ClearColorConfig][10734]
- [Ensure instance_index push constant is always used in prepass.wgsl][10706]
- [Bind group layout entries][10224]
- [prepass vertex shader always outputs world position][10657]
- [Swap material and mesh bind groups][10485]
- [try_insert Aabbs][10801]
- [Fix prepass binding issues causing crashes when not all prepass bindings are used][10788]
- [Fix binding group in custom_material_2d.wgsl][10841]
- [Normalize only nonzero normals for mikktspace normal maps][10905]
- [light renderlayers][10742]
- [Explain how RegularPolygon mesh is generated][10927]
- [Fix Mesh2d normals on webgl][10967]
- [Update to wgpu 0.18][10266]
- [Fix typo in docs for `ViewVisibility`][10979]
- [Add docs to bevy_sprite a little][10947]
- [Fix BindingType import warning][10818]
- [Update texture_atlas example with different padding and sampling][10073]
- [Update AABB when Sprite component changes in calculate_bounds_2d()][11016]
- [OrthographicProjection.scaling_mode is not just for resize][11024]
- [Derive `Debug` for `BloomCompositeMode`][11041]
- [Document None conditions on compute_aabb][11051]
- [Replace calculation with function call][11077]
- [Register Camera types.][11069]
- [Add example for pixel-perfect grid snapping in 2D][8112]
- [Misc cleanup][11134]
- [Keep track of when a texture is first cleared][10325]
- [Fix Mesh::ATTRIBUTE_UV_0 documentation][11110]
- [Do not load prepass normals for transmissive materials][11140]
- [Export tonemapping_pipeline_key (2d), alpha_mode_pipeline_key][11166]
- [Simplify examples/3d/orthographic][11045]
- [Implement lightmaps.][10231]
- [Bump the vertex attribute index for prepass joints.][11191]
- [Fix: Gizmos crash due to the persistence policy being set to `Unload`. Change it to `Keep`][11192]
- [Usability methods for RenderTargets and image handles][10736]
- [Explain Camera physical size is in pixel][11189]
- [update Outdated comment][11243]
- [Revert "Implement minimal reflection probes. (#10057)"][11307]
- [Explain OrthographicProjection.scale][11023]
- [`Mul<f32>` for ScalingMode][11030]
- [Rustdoc examples for OrthographicProjection][11031]
- [Option to enable deterministic rendering][11248]
- [Fix ssao only sampling mip 0][11292]
- [Revert "Implement minimal reflection probes. (#10057)"][11307]
- [Sprite slicing and tiling][10588]
- [Approximate indirect specular occlusion][11152]
- [Texture Atlas rework][5103]
- [Exposure settings (adopted)][11347]
- [Remove Vec from GpuArrayBuffer][11368]
- [Make `DynamicUniformBuffer::push` accept an `&T` instead of `T`][11373]
- [Restore brightness in the remaining three examples after exposure PR][11389]
- [Customizable camera main texture usage][11412]
- [Cleanup deterministic example][11416]
- [Implement minimal reflection probes (fixed macOS, iOS, and Android).][11366]
- [optimize batch_and_prepare_render_phase][11323]
- [add `storage_texture` option to as_bind_group macro][9943]
- [Revert rendering-related associated type name changes][11027]
- [Meshlet prep][11442]
- [Reuse sampler when creating cached bind groups][10610]
- [Add Animated Material example][11524]
- [Update to wgpu 0.19 and raw-window-handle 0.6][11280]
- [Fix bug where Sprite::rect was ignored][11480]
- [Added documentation explaining the difference between lumens and luxes][11551]
- [Fix infinite asset preparation due to undrained AssetEvent events][11383]
- [Workaround for ICE in the DXC shader compiler in debug builds with an `EnvironmentMapLight`][11487]
- [Refactor tonemapping example's image viewer update into two systems][11519]
- [Add `Mesh` transformation][11454]
- [Fix specular envmap in deferred][11534]
- [Add `Meshable` trait and implement meshing for 2D primitives][11431]
- [Optimize extract_clusters and prepare_clusters systems][10633]
- [RenderAssetPersistencePolicy → RenderAssetUsages][11399]
- [RenderGraph Labelization][10644]
- [Gate diffuse and specular transmission behind shader defs][11627]
- [Add helpers for translate, rotate, and scale operations - Mesh][11675]
- [CameraProjection::compute_frustum][11139]
- [Added formats to `MeshVertexAttribute` constant's docstrings][11705]
- [Async pipeline compilation][10812]
- [sort by pipeline then mesh for non transparent passes for massively better batching][11671]
- [Added remove_indices to Mesh][11733]
- [Implement irradiance volumes.][10268]
- [Mesh insert indices][11745]
- [Don't try to create a uniform buffer for light probes if there are no views.][11751]
- [Properly check for result when getting pipeline in Msaa][11758]
- [wait for render app when main world is dropped][11737]
- [Deprecate shapes in `bevy_render::mesh::shape`][11773]
- [Cache the QueryState used to drop swapchain TextureViews][11781]
- [Multithreaded render command encoding][9172]
- [Fix `Quad` deprecation message mentioning a type that doesn't exist][11798]
- [Stop extracting mesh entities to the render world.][11803]
- [Stop copying the light probe array to the stack in the shader.][11805]
- [Add `Mesh::merge`][11456]
- [Call a TextureAtlasLayout a layout and not an atlas][11783]
- [fix shadow batching][11645]
- [Change light defaults & fix light examples][11581]
- [New Exposure and Lighting Defaults (and calibrate examples)][11868]
- [Change MeshUniform::new() to be public.][11880]
- [Rename Core Render Graph Labels][11882]
- [Support optional clear color in ColorAttachment.][11884]
- [irradiance: use textureSampleLevel for WebGPU support][11893]
- [Add configuration for async pipeline creation on RenderPlugin][11847]
- [Derive Reflect for Exposure][11907]
- [Add `MeshPipelineKey::LIGHTMAPPED` as applicable during the shadow map pass.][11910]
- [Irradiance volume example tweaks][11911]
- [Disable irradiance volumes on WebGL and WebGPU.][11909]
- [Remove `naga_oil` dependency from `bevy_pbr`][11914]
### A-Scenes
- [Re-export `ron` in `bevy_scene`][10529]
- [Fix load scene example to use proper serialization format for rotation field][10638]
- [Mention DynamicSceneBuilder in doc comment][10780]
- [Mention DynamicSceneBuilder in scene example][10441]
- [Implement Std traits for `SceneInstanceReady`][11003]
- [Change SceneSpawner::spawn_dynamic_sync to return InstanceID][11239]
- [Fix scene example][11289]
- [Send `SceneInstanceReady` only once per scene][11002]
### A-Utils
- [bevy_utils: Export `generate_composite_uuid` utility function][10496]
- [Save an instruction in `EntityHasher`][10648]
- [Add SystemTime to bevy_utils][11054]
- [Re-export smallvec crate from bevy_utils][11006]
- [Enable cloning EntityHashMap and PreHashMap][11178]
- [impl `Borrow` and `AsRef` for `CowArc`][11616]
- [Hash stability guarantees][11690]
- [Deprecating hashbrown reexports][11721]
- [Update ahash to 0.8.7][11785]
### A-UI
- [ui material: fix right border width][10421]
- [Add PartialEq to Anchor][10424]
- [UI Material: each material should have its own buffer][10422]
- [UI Materials: ignore entities with a `BackgroundColor` component][10434]
- [Fix panic when using image in UiMaterial][10591]
- [Make clipped areas of UI nodes non-interactive][10454]
- [Fix typo in resolve_outlines_system][10730]
- [Clip outlines by the node's own clipping rect, not the parent's.][10922]
- [Give UI nodes with `Display::None` an empty clipping rect][10942]
- [Create serialize feature for bevy_ui][11188]
- [Made the remaining types from bevy_ui to reflect the Default trait if…][11199]
- [Camera-driven UI][10559]
- [fix occasional crash moving ui root nodes][11371]
- [Fix panic on Text UI without Cameras][11405]
- [Allow user to choose default ui camera][11436]
- [Rustdoc links in bevy_ui][11555]
- [Avoid unconditionally unwrapping the Result - UI Stack System][11575]
### A-Assets + A-Diagnostics
- [Fix asset loader registration warning][11870]
### A-Audio + A-Reflection
- [Reflect and register audio-related types][10484]
### A-Audio
- [Add `VolumeLevel::ZERO`][10608]
- [Deduplicate systems in bevy_audio][10906]
- [Non-Intrusive refactor of `play_queued_audio_system()`][10910]
- [docs: AnimationPlayer::play doesn't have transition_duration arg][10970]
- [Remove the ability to ignore global volume][11092]
- [Optional override for global spatial scale][10419]
### A-Tasks
- [Make FakeTask public on singlethreaded context][10517]
- [Re-export `futures_lite` in `bevy_tasks`][10670]
- [bump bevy_tasks futures-lite to 2.0.1][10675]
- [Fix wrong transmuted type in `TaskPool::scope_with_executor_inner`][11455]
- [Use `std::thread::sleep` instead of spin-waiting in the async_compute example][11856]
### A-ECS
- [Use `EntityHashMap` for `EntityMapper`][10415]
- [Allow registering boxed systems][10378]
- [Remove unnecessary if statement in scheduler][10446]
- [Optimize `Entity::eq`][10519]
- [Add 'World::run_system_with_input' function + allow `World::run_system` to get system output][10380]
- [Update `Event` send methods to return `EventId`][10551]
- [Some docs for IntoSystemSet][10563]
- [Link to `In` in `pipe` documentation][10596]
- [Optimise `Entity` with repr align & manual `PartialOrd`/`Ord`][10558]
- [Allow #[derive(Bundle)] on tuple structs (take 3)][10561]
- [Add an `Entry` api to `EntityWorldMut`.][10650]
- [Make impl block for RemovedSystem generic][10651]
- [Append commands][10400]
- [Rustdoc example for Ref][10682]
- [Link to `Main` schedule docs from other schedules][10691]
- [Warn that Added/Changed filters do not see deferred changes][10681]
- [Fix non-functional nondeterministic_system_order example][10719]
- [Copy over docs for `Condition` trait from PR #10718][10748]
- [Implement `Drop` for `CommandQueue`][10746]
- [Split WorldQuery into WorldQueryData and WorldQueryFilter][9918]
- [Make IntoSystemConfigs::into_configs public API (visible in docs)][10624]
- [Override QueryIter::fold to port Query::for_each perf gains to select Iterator combinators][6773]
- [Deprecate QueryState::for_each_unchecked][10815]
- [Clarifying Commands' purpose][10837]
- [Make ComponentId typed in Components][10770]
- [Reduced `TableRow` `as` Casting][10811]
- [Add `EntityCommands.retain` and `EntityWorldMut.retain`][10873]
- [Remove unnecessary ResMut in examples][10879]
- [Add a couple assertions for system types][10893]
- [Remove reference to default schedule][10918]
- [Improve `EntityWorldMut.remove`, `retain` and `despawn` docs by linking to more detail][10943]
- [Reorder fields in SystemSchedule][10764]
- [Rename `WorldQueryData` & `WorldQueryFilter` to `QueryData` & `QueryFilter`][10779]
- [Fix soundness of `UnsafeWorldCell` usage example][10941]
- [Actually check alignment in BlobVec test aligned_zst][10885]
- [Rename `Q` type parameter to `D` when referring to `WorldQueryData`][10782]
- [Allow the editing of startup schedules][10969]
- [Auto insert sync points][9822]
- [Simplify lifetimes in `QueryState` methods][10937]
- [Add is_resource_changed_by_id + is_resource_added_by_id][11012]
- [Rename some lifetimes (ResMut etc) for clarity][11021]
- [Add non-existent entity behavior to Has doc][11025]
- [Fix typo in docs for Has][11028]
- [Add insert_state to App.][11043]
- [Explain Changed, Added are not archetype filters][11049]
- [Add missing colon in `States` documentation][11064]
- [Explain EventWriter limits concurrency][11063]
- [Better doc for SystemName][11084]
- [impl ExclusiveSystemParam for WorldId][11164]
- [impl ExclusiveSystemParam for PhantomData][11153]
- [Remove little warn on bevy_ecs][11149]
- [Rename `ArchetypeEntity::entity` into `ArchetypeEntity::id`][11118]
- [Fixed Typo in the description of EntityMut][11103]
- [Implement Deref and DerefMut for In][11104]
- [impl ExclusiveSystemParam for SystemName][11163]
- [Print a warning for un-applied commands being dropped from a CommandQueue][11146]
- [Implement TypePath for EntityHash][11195]
- [Fix integer overflow in BlobVec::push for ZST][10799]
- [Fix integer overflow in BlobVec::reserve_exact][11234]
- [StateTransitionEvent][11089]
- [Restore support for running `fn` `EntityCommands` on entities that might be despawned][11107]
- [Remove apply_deferred example][11142]
- [Minimize small allocations by dropping the tick Vecs from Resources][11226]
- [Change Entity::generation from u32 to NonZeroU32 for niche optimization][9907]
- [fix B0003 example and update logs][11162]
- [Unified identifer for entities & relations][9797]
- [Simplify conditions][11316]
- [Add example using `State` in docs][11319]
- [Skip rehashing TypeIds][11268]
- [Make `TypeId::hash` more robust in case of upstream rustc changes][11334]
- [Fix doc of [`Schedules`] to mention exclusion of current schedule.][11360]
- [Dynamic queries and builder API][9774]
- [Remove duplicate `#[automatically_derived]` in ECS macro][11388]
- [Get Change Tick methods for Resources][11404]
- [Optional state][11417]
- [Double the capacity when BlobVec is full][11167]
- [document which lifetime is needed for systemparam derive][11321]
- [refactor: Simplify lifetimes for `Commands` and related types][11445]
- [Implement `Debug` for `CommandQueue`][11444]
- [Fix typo in comment][11486]
- [Rename Schedule::name to Schedule::label][11531]
- [Exclusive systems can now be used for one-shot systems][11560]
- [added ability to get `Res<T>` from `World` with `World::get_resource_ref`][11561]
- [bevy_ecs: Add doc example for par_iter_mut (#11311)][11499]
- [Add an example demonstrating how to send and receive events in the same system][11574]
- [Add a doctest example for EntityMapper][11583]
- [Rephrase comment about `Local<T>` for clarity. (Adopted)][11129]
- [Use batch spawn in benchmarks][11611]
- [Fix bug where events are not being dropped][11528]
- [Make Archetypes.archetype_component_count private][10774]
- [Deprecated Various Component Methods from `Query` and `QueryState`][9920]
- [`System::type_id` Consistency][11728]
- [Typo in [`ScheduleLabel`] derive macro][11764]
- [Mention Resource where missing from component/resource related type docs][11769]
- [Expose query accesses][11700]
- [Add a method for detecting changes within a certain scope][11687]
- [Fix double indirection when applying command queues][11822]
- [Immediately poll the executor once before spawning it as a task][11801]
- [Fix small docs misformat in `BundleInfo::new`][11855]
- [`FilteredEntityRef` conversions][11838]
### A-Rendering + A-Animation
- [TextureAtlasBuilder now respects insertion order][11474]
- [normalize joint weights][10539]
### A-ECS + A-Meta
- [resolve all internal ambiguities][10411]
### A-Rendering + A-UI
- [Provide GlobalsUniform in UiMaterial shaders][10739]
- [Include UI node size in the vertex inputs for UiMaterial.][11722]
- [UI Texture 9 slice][11600]
- [Optional ImageScaleMode][11780]
### A-Math
- [Define a basic set of Primitives][10466]
- [Add and impl Primitives][10580]
- [Add winding order for `Triangle2d`][10620]
- [Use minor and major radii for `Torus` primitive shape][10643]
- [Remove `From` implementations from the direction types][10857]
- [Impl `TryFrom` vector for directions and add `InvalidDirectionError`][10884]
- [Add `Direction2d::from_xy` and `Direction3d::from_xyz`][10882]
- [Implement `Neg` for `Direction2d` and `Direction3d`][11179]
- [Add constants for `Direction2d` and `Direction3d`][11180]
- [Add `approx` feature to `bevy_math`][11176]
- [Add `libm` feature to `bevy_math`][11238]
- [Add `new_and_length` method to `Direction2d` and `Direction3d`][11172]
- [Update `glam`, `encase` and `hexasphere`][11082]
- [Implement bounding volume types][10946]
- [Remove `Default` impl for `CubicCurve`][11335]
- [Implement bounding volumes for primitive shapes][11336]
- [Improve `Rectangle` and `Cuboid` consistency][11434]
- [Change `Ellipse` representation and improve helpers][11435]
- [Add `Aabb2d::new` and `Aabb3d::new` constructors][11433]
- [Add geometric primitives to `bevy_math::prelude`][11432]
- [Direction: Rename `from_normalized` to `new_unchecked`][11425]
- [Implement bounding volume intersections][11439]
- [Add `new` constructors for `Circle` and `Sphere`][11526]
- [Derive PartialEq, Serialize, Deserialize and Reflect on primitives][11514]
- [Document RegularPolygon][11017]
- [Add RayTest2d and RayTest3d][11310]
- [Add more constructors and math helpers for primitive shapes][10632]
- [Add `Capsule2d` primitive][11585]
- [Add volume cast intersection tests][11586]
- [Add Clone to intersection test types][11640]
- [Implement `approx` traits for direction types][11650]
- [Support rotating `Direction3d` by `Quat`][11649]
- [Rename RayTest to RayCast][11635]
- [Add example for bounding volumes and intersection tests][11666]
- [Dedicated primitive example][11697]
- [Un-hardcode positions and colors in `2d_shapes` example][11867]
### A-Build-System
- [check for all-features with cargo-deny][10544]
- [Bump actions/github-script from 6 to 7][10653]
- [Add doc_markdown clippy linting config to cargo workspace][10640]
- [Enable `clippy::undocumented_unsafe_blocks` warning across the workspace][10646]
- [Remove trailing whitespace][10723]
- [Move remaining clippy lint definitions to Cargo.toml][10672]
- [Add `clippy::manual_let_else` at warn level to lints][10684]
- [Remove unused import][10963]
- [Rename functions and variables to follow code style][10961]
- [Remove unused variable][10966]
- [add libxkbcommon-x11-0 to the default linux dependencies][11060]
- [fix patches for example showcase after winit update][11058]
- [finish cleaning up dependency bans job][11059]
- [Bump actions/upload-artifact from 2 to 4][11014]
- [Publish dev-docs with Github Pages artifacts (2nd attempt)][10892]
- [example showcase patches: use default instead of game mode for desktop][11250]
- [Bump toml_edit in build-template-pages tool][11342]
- [Miri is failing on latest nightly: pin nightly to last known working version][11421]
- [Bump dev-docs pages actions][11418]
- [Unpin nightly for miri][11462]
- [documentation in CI: remove lock file][11507]
- [Bump actions/cache from 3 to 4][11469]
- [simplify animated_material example][11576]
- [example showcase: fix window resized patch][11596]
- [run examples on macOS to validate PRs][11630]
- [Inverse `missing_docs` logic][11676]
- [Bump peter-evans/create-pull-request from 5 to 6][11712]
### A-Gizmos
- [Fix float precision issue in the gizmo shader][10408]
- [Gizmo Arrows][10550]
- [Move Circle Gizmos to Their Own File][10631]
- [move gizmo arcs to their own file][10660]
- [Warn when bevy_sprite and bevy_pbr are not enabled with bevy_gizmos][11296]
- [Multiple Configurations for Gizmos][10342]
- [Fix gizmos app new panic][11420]
- [Use Direction3d for gizmos.circle normal][11422]
- [Implement Arc3D for Gizmos][11540]
- [Insert Gizmos config instead of Init][11580]
- [Drawing Primitives with Gizmos][11072]
- [fix(primitives): fix polygon gizmo rendering bug][11699]
- [Fix global wireframe behavior not being applied on new meshes][11792]
- [Overwrite gizmo group in `insert_gizmo_group`][11860]
### A-Rendering + A-Math
- [Split `Ray` into `Ray2d` and `Ray3d` and simplify plane construction][10856]
- [Introduce AspectRatio struct][10368]
- [Implement meshing for `Capsule2d`][11639]
- [Implement `Meshable` for some 3D primitives][11688]
### A-Core
- [Derive `Debug` for `Framecount`][11573]
- [Don't unconditionally enable bevy_render or bevy_assets if mutli-threaded feature is enabled][11726]
### A-Windowing
- [Some explanations for Window component][10714]
- [don't run update before window creation in winit][10741]
- [add new event `WindowOccluded` from winit][10735]
- [Add comment about scale factor in `WindowMode`][10872]
- [Refactor function `update_accessibility_nodes`][10911]
- [Change `Window` scale factor to f32 (adopted)][10897]
- [Reexport winit::platform::android::activity::* in bevy_winit][11011]
- [Update winit dependency to 0.29][10702]
- [Remove CanvasParentResizePlugin][11057]
- [Use `WindowBuilder::with_append()` to append canvas][11065]
- [Fix perf degradation on web builds][11227]
- [mobile and webgpu: trigger redraw request when needed and improve window creation][11245]
- [Remove unnecessary unsafe impls for WinitWindows on Wasm][11270]
- [Fix Reactive and ReactiveLowPower update modes][11325]
- [Change `WinitPlugin` defaults to limit game update rate when window is not visible (for real this time)][11305]
- [Cleanup bevy winit][11489]
- [Add `name` to `bevy::window::Window`][7650]
- [Avoid unwraps in winit fullscreen handling code][11735]
### A-UI + A-Transform + A-Text
- [UI text rotation and scaling fix][11326]
### A-Animation
- [Fix animations resetting after repeat count][10540]
- [Add Debug, PartialEq and Eq derives to bevy_animation.][10562]
- [support all types of animation interpolation from gltf][10755]
- [Clean up code to find the current keyframe][11306]
- [Skip alloc when updating animation path cache][11330]
- [Replace the `cubic_spline_interpolation` macro with a generic function][11605]
- [Animatable trait for interpolation and blending][4482]
### A-ECS + A-Pointers
- [Replace pointer castings (`as`) by their API equivalent][11818]
### A-ECS + A-Utils
- [Add helper macro's for logging only once][10808]
- [Move `EntityHash` related types into `bevy_ecs`][11498]
### A-Reflection
- [Fix issue with `Option` serialization][10705]
- [fix `insert_reflect` panic caused by `clone_value`][10627]
- [Remove pointless trait implementation exports in `bevy_reflect`][10771]
- [Fix nested generics in Reflect derive][10791]
- [Fix debug printing for dynamic types][10740]
- [reflect: maximally relax `TypePath` bounds][11037]
- [Use `static_assertions` to check for trait impls][11407]
- [Add `ReflectFromWorld` and replace the `FromWorld` requirement on `ReflectComponent` and `ReflectBundle` with `FromReflect`][9623]
- [Fix reflected serialization/deserialization on `Name` component][11447]
- [Add Reflection for Wrapping/Saturating types][11397]
- [Remove TypeUuid][11497]
- [Fix warnings in bevy_reflect][11556]
- [bevy_reflect: Type parameter bounds][9046]
- [bevy_reflect: Split `#[reflect(where)]`][11597]
- [reflection: replace `impl_reflect_struct` with `impl_reflect`][11437]
- [Add the ability to manually create ParsedPaths (+ cleanup)][11029]
- [bevy_reflect: Reflect `&'static str`][11686]
- [Improve DynamicStruct::insert][11068]
- [Missing registrations][11736]
- [Add `ReflectKind`][11664]
- [doc(bevy_reflect): add note about trait bounds on `impl_type_path`][11810]
- [bevy_reflect_derive: Clean up attribute logic][11777]
### A-ECS + A-Tasks
- [Async channel v2][10692]
### A-Pointers
- [Remove a ptr-to-int cast in `CommandQueue::apply`][10475]
- [Fix memory leak in dynamic ECS example][11461]
- [bevy_ptr: fix `unsafe_op_in_unsafe_fn` lint][11610]
### A-ECS + A-Reflection
- [Adding derive Reflect for tick structs][11641]
### A-Reflection + A-Gizmos
- [`#[derive(Reflect)]` on `GizmoConfig`][10483]
- [Register `WireframeColor`][10486]
### No area label
- [Fix intra-doc link warnings][10445]
- [Fix minor issues with custom_asset example][10337]
- [Prepend `root_path` to meta path in HttpWasmAssetReader][10527]
- [support required features in wasm examples showcase][10577]
- [examples showcase: use patches instead of sed for wasm hacks][10601]
- [Add [lints] table, fix adding `#![allow(clippy::type_complexity)]` everywhere][10011]
- [Bumps async crates requirements to latest major version][10370]
- [delete methods deprecated in 0.12][10693]
- [Ran `cargo fmt` on `benches` crate][10758]
- [Remove unnecessary path prefixes][10749]
- [Fix typos in safety comment][10827]
- [Substitute `get(0)` with `first()`][10847]
- [Remove identity `map` calls][10848]
- [Renamed Accessibility plugin to AccessKitPlugin in bevy_winit][10914]
- [Reorder impl to be the same as the trait][11076]
- [Replace deprecated elements][10999]
- [Remove unnecessary parentheses][10990]
- [Replace deprecated elements][10999]
- [Simplify equality assertions][10988]
- [Add Solus package requrements to linux_dependencies.md][10996]
- [Update base64 requirement from 0.13.0 to 0.21.5][10336]
- [Update sysinfo version to 0.30.0][11071]
- [Remove unnecessary parens][11075]
- [Reorder impl to be the same as the trait][11076]
- [Fix ci xvfb][11143]
- [Replace or document ignored doctests][11040]
- [Add static assertions to bevy_utils for compile-time checks][11182]
- [Fix missed explicit conversions in examples][11261]
- [Remove unused event-listener dependency][11269]
- [Fixed typo in generate_custom_mesh.rs example][11293]
- [Extract examples `CameraController` into a module][11338]
- [Use EntityHashMap whenever possible][11353]
- [Fix link to plugin guidelines][11379]
- [[doc] Fix typo and formatting in CONTRIBUTING.md][11381]
- [add a required feature for shader_material_glsl][11440]
- [Update ruzstd requirement from 0.4.0 to 0.5.0][11467]
- [Tweak gamepad viewer example style][11484]
- [Add `.toml` extension to `.cargo/config_fast_builds`][11506]
- [Add README to benches][11508]
- [Fix panic in examples using argh on the web][11513]
- [Fix cyclic dep][11523]
- [Enable the `unsafe_op_in_unsafe_fn` lint][11591]
- [Update erased-serde requirement from 0.3 to 0.4][11599]
- [Fix example send_and_receive_events][11615]
- [Update cursor.rs][11617]
- [Use the `Continuous` update mode in stress tests when unfocused][11652]
- [Don't auto insert on the extract schedule][11669]
- [Update tracing-tracy requirement from 0.10.4 to 0.11.0 and tracy-client requirement from 0.16.4 to 0.17.0][11678]
- [Use TypeIdMap whenever possible][11684]
- [Fix a few typos in error docs][11709]
- [bevy_render: use the non-send marker from bevy_core][11725]
- [Ignore screenshots generated by `screenshot` example][11797]
- [Docs reflect that `RemovalDetection` also yields despawned entities][11795]
- [bevy_dynamic_plugin: fix `unsafe_op_in_unsafe_fn` lint][11622]
- [Replace `crossbeam::scope` reference with `thread::scope` in docs][11832]
- [Use question mark operator when possible][11865]
- [Fix a few Clippy lints][11866]
- [WebGPU: fix web-sys version][11894]
- [Remove map_flatten from linting rules][11913]
- [Fix duplicate `encase_derive_impl` dependency][11915]
### A-App
- [add regression test for #10385/#10389][10609]
- [Fix typos plugin.rs][11193]
- [Expressively define plugins using functions][11080]
- [Mark `DynamicPluginLoadError` internal error types as source][11618]
### A-Diagnostics
- [Fix Line for tracy version][10663]
- [Some doc to bevy_diagnostic][11020]
- [Print to stderr from panic handler in LogPlugin][11170]
- [Add ability to panic to logs example][11171]
- [Make sure tracy deps conform to compatibility table][11331]
- [Describe purpose of bevy_diagnostic][11327]
- [Add support for updating the tracing subscriber in LogPlugin][10822]
- [Replace `DiagnosticId` by `DiagnosticPath`][9266]
- [fix link to tracy][11521]
- [Fix sysinfo CPU brand output][11850]
### A-Rendering + A-ECS
- [Explain where rendering is][11018]
### A-Assets + A-Math
- [Use glam for computing gLTF node transform][11361]
[4482]: https://github.com/bevyengine/bevy/pull/4482
[5103]: https://github.com/bevyengine/bevy/pull/5103
[6773]: https://github.com/bevyengine/bevy/pull/6773
[7650]: https://github.com/bevyengine/bevy/pull/7650
[8112]: https://github.com/bevyengine/bevy/pull/8112
[8453]: https://github.com/bevyengine/bevy/pull/8453
[9046]: https://github.com/bevyengine/bevy/pull/9046
[9172]: https://github.com/bevyengine/bevy/pull/9172
[9266]: https://github.com/bevyengine/bevy/pull/9266
[9623]: https://github.com/bevyengine/bevy/pull/9623
[9774]: https://github.com/bevyengine/bevy/pull/9774
[9797]: https://github.com/bevyengine/bevy/pull/9797
[9822]: https://github.com/bevyengine/bevy/pull/9822
[9907]: https://github.com/bevyengine/bevy/pull/9907
[9918]: https://github.com/bevyengine/bevy/pull/9918
[9920]: https://github.com/bevyengine/bevy/pull/9920
[9943]: https://github.com/bevyengine/bevy/pull/9943
[10011]: https://github.com/bevyengine/bevy/pull/10011
[10073]: https://github.com/bevyengine/bevy/pull/10073
[10077]: https://github.com/bevyengine/bevy/pull/10077
[10153]: https://github.com/bevyengine/bevy/pull/10153
[10224]: https://github.com/bevyengine/bevy/pull/10224
[10231]: https://github.com/bevyengine/bevy/pull/10231
[10266]: https://github.com/bevyengine/bevy/pull/10266
[10268]: https://github.com/bevyengine/bevy/pull/10268
[10321]: https://github.com/bevyengine/bevy/pull/10321
[10325]: https://github.com/bevyengine/bevy/pull/10325
[10336]: https://github.com/bevyengine/bevy/pull/10336
[10337]: https://github.com/bevyengine/bevy/pull/10337
[10342]: https://github.com/bevyengine/bevy/pull/10342
[10368]: https://github.com/bevyengine/bevy/pull/10368
[10369]: https://github.com/bevyengine/bevy/pull/10369
[10370]: https://github.com/bevyengine/bevy/pull/10370
[10376]: https://github.com/bevyengine/bevy/pull/10376
[10378]: https://github.com/bevyengine/bevy/pull/10378
[10380]: https://github.com/bevyengine/bevy/pull/10380
[10383]: https://github.com/bevyengine/bevy/pull/10383
[10389]: https://github.com/bevyengine/bevy/pull/10389
[10394]: https://github.com/bevyengine/bevy/pull/10394
[10400]: https://github.com/bevyengine/bevy/pull/10400
[10408]: https://github.com/bevyengine/bevy/pull/10408
[10410]: https://github.com/bevyengine/bevy/pull/10410
[10411]: https://github.com/bevyengine/bevy/pull/10411
[10415]: https://github.com/bevyengine/bevy/pull/10415
[10419]: https://github.com/bevyengine/bevy/pull/10419
[10421]: https://github.com/bevyengine/bevy/pull/10421
[10422]: https://github.com/bevyengine/bevy/pull/10422
[10423]: https://github.com/bevyengine/bevy/pull/10423
[10424]: https://github.com/bevyengine/bevy/pull/10424
[10434]: https://github.com/bevyengine/bevy/pull/10434
[10441]: https://github.com/bevyengine/bevy/pull/10441
[10442]: https://github.com/bevyengine/bevy/pull/10442
[10445]: https://github.com/bevyengine/bevy/pull/10445
[10446]: https://github.com/bevyengine/bevy/pull/10446
[10448]: https://github.com/bevyengine/bevy/pull/10448
[10450]: https://github.com/bevyengine/bevy/pull/10450
[10452]: https://github.com/bevyengine/bevy/pull/10452
[10453]: https://github.com/bevyengine/bevy/pull/10453
[10454]: https://github.com/bevyengine/bevy/pull/10454
[10461]: https://github.com/bevyengine/bevy/pull/10461
[10466]: https://github.com/bevyengine/bevy/pull/10466
[10474]: https://github.com/bevyengine/bevy/pull/10474
[10475]: https://github.com/bevyengine/bevy/pull/10475
[10483]: https://github.com/bevyengine/bevy/pull/10483
[10484]: https://github.com/bevyengine/bevy/pull/10484
[10485]: https://github.com/bevyengine/bevy/pull/10485
[10486]: https://github.com/bevyengine/bevy/pull/10486
[10493]: https://github.com/bevyengine/bevy/pull/10493
[10494]: https://github.com/bevyengine/bevy/pull/10494
[10496]: https://github.com/bevyengine/bevy/pull/10496
[10502]: https://github.com/bevyengine/bevy/pull/10502
[10514]: https://github.com/bevyengine/bevy/pull/10514
[10516]: https://github.com/bevyengine/bevy/pull/10516
[10517]: https://github.com/bevyengine/bevy/pull/10517
[10519]: https://github.com/bevyengine/bevy/pull/10519
[10520]: https://github.com/bevyengine/bevy/pull/10520
[10523]: https://github.com/bevyengine/bevy/pull/10523
[10526]: https://github.com/bevyengine/bevy/pull/10526
[10527]: https://github.com/bevyengine/bevy/pull/10527
[10529]: https://github.com/bevyengine/bevy/pull/10529
[10534]: https://github.com/bevyengine/bevy/pull/10534
[10537]: https://github.com/bevyengine/bevy/pull/10537
[10539]: https://github.com/bevyengine/bevy/pull/10539
[10540]: https://github.com/bevyengine/bevy/pull/10540
[10542]: https://github.com/bevyengine/bevy/pull/10542
[10543]: https://github.com/bevyengine/bevy/pull/10543
[10544]: https://github.com/bevyengine/bevy/pull/10544
[10547]: https://github.com/bevyengine/bevy/pull/10547
[10548]: https://github.com/bevyengine/bevy/pull/10548
[10550]: https://github.com/bevyengine/bevy/pull/10550
[10551]: https://github.com/bevyengine/bevy/pull/10551
[10555]: https://github.com/bevyengine/bevy/pull/10555
[10556]: https://github.com/bevyengine/bevy/pull/10556
[10558]: https://github.com/bevyengine/bevy/pull/10558
[10559]: https://github.com/bevyengine/bevy/pull/10559
[10560]: https://github.com/bevyengine/bevy/pull/10560
[10561]: https://github.com/bevyengine/bevy/pull/10561
[10562]: https://github.com/bevyengine/bevy/pull/10562
[10563]: https://github.com/bevyengine/bevy/pull/10563
[10564]: https://github.com/bevyengine/bevy/pull/10564
[10565]: https://github.com/bevyengine/bevy/pull/10565
[10574]: https://github.com/bevyengine/bevy/pull/10574
[10577]: https://github.com/bevyengine/bevy/pull/10577
[10578]: https://github.com/bevyengine/bevy/pull/10578
[10580]: https://github.com/bevyengine/bevy/pull/10580
[10585]: https://github.com/bevyengine/bevy/pull/10585
[10588]: https://github.com/bevyengine/bevy/pull/10588
[10589]: https://github.com/bevyengine/bevy/pull/10589
[10591]: https://github.com/bevyengine/bevy/pull/10591
[10592]: https://github.com/bevyengine/bevy/pull/10592
[10594]: https://github.com/bevyengine/bevy/pull/10594
[10596]: https://github.com/bevyengine/bevy/pull/10596
[10598]: https://github.com/bevyengine/bevy/pull/10598
[10601]: https://github.com/bevyengine/bevy/pull/10601
[10608]: https://github.com/bevyengine/bevy/pull/10608
[10609]: https://github.com/bevyengine/bevy/pull/10609
[10610]: https://github.com/bevyengine/bevy/pull/10610
[10611]: https://github.com/bevyengine/bevy/pull/10611
[10614]: https://github.com/bevyengine/bevy/pull/10614
[10619]: https://github.com/bevyengine/bevy/pull/10619
[10620]: https://github.com/bevyengine/bevy/pull/10620
[10623]: https://github.com/bevyengine/bevy/pull/10623
[10624]: https://github.com/bevyengine/bevy/pull/10624
[10627]: https://github.com/bevyengine/bevy/pull/10627
[10628]: https://github.com/bevyengine/bevy/pull/10628
[10631]: https://github.com/bevyengine/bevy/pull/10631
[10632]: https://github.com/bevyengine/bevy/pull/10632
[10633]: https://github.com/bevyengine/bevy/pull/10633
[10638]: https://github.com/bevyengine/bevy/pull/10638
[10640]: https://github.com/bevyengine/bevy/pull/10640
[10643]: https://github.com/bevyengine/bevy/pull/10643
[10644]: https://github.com/bevyengine/bevy/pull/10644
[10646]: https://github.com/bevyengine/bevy/pull/10646
[10648]: https://github.com/bevyengine/bevy/pull/10648
[10650]: https://github.com/bevyengine/bevy/pull/10650
[10651]: https://github.com/bevyengine/bevy/pull/10651
[10653]: https://github.com/bevyengine/bevy/pull/10653
[10657]: https://github.com/bevyengine/bevy/pull/10657
[10660]: https://github.com/bevyengine/bevy/pull/10660
[10663]: https://github.com/bevyengine/bevy/pull/10663
[10670]: https://github.com/bevyengine/bevy/pull/10670
[10672]: https://github.com/bevyengine/bevy/pull/10672
[10674]: https://github.com/bevyengine/bevy/pull/10674
[10675]: https://github.com/bevyengine/bevy/pull/10675
[10681]: https://github.com/bevyengine/bevy/pull/10681
[10682]: https://github.com/bevyengine/bevy/pull/10682
[10683]: https://github.com/bevyengine/bevy/pull/10683
[10684]: https://github.com/bevyengine/bevy/pull/10684
[10691]: https://github.com/bevyengine/bevy/pull/10691
[10692]: https://github.com/bevyengine/bevy/pull/10692
[10693]: https://github.com/bevyengine/bevy/pull/10693
[10698]: https://github.com/bevyengine/bevy/pull/10698
[10699]: https://github.com/bevyengine/bevy/pull/10699
[10702]: https://github.com/bevyengine/bevy/pull/10702
[10705]: https://github.com/bevyengine/bevy/pull/10705
[10706]: https://github.com/bevyengine/bevy/pull/10706
[10712]: https://github.com/bevyengine/bevy/pull/10712
[10714]: https://github.com/bevyengine/bevy/pull/10714
[10719]: https://github.com/bevyengine/bevy/pull/10719
[10721]: https://github.com/bevyengine/bevy/pull/10721
[10722]: https://github.com/bevyengine/bevy/pull/10722
[10723]: https://github.com/bevyengine/bevy/pull/10723
[10730]: https://github.com/bevyengine/bevy/pull/10730
[10733]: https://github.com/bevyengine/bevy/pull/10733
[10734]: https://github.com/bevyengine/bevy/pull/10734
[10735]: https://github.com/bevyengine/bevy/pull/10735
[10736]: https://github.com/bevyengine/bevy/pull/10736
[10739]: https://github.com/bevyengine/bevy/pull/10739
[10740]: https://github.com/bevyengine/bevy/pull/10740
[10741]: https://github.com/bevyengine/bevy/pull/10741
[10742]: https://github.com/bevyengine/bevy/pull/10742
[10745]: https://github.com/bevyengine/bevy/pull/10745
[10746]: https://github.com/bevyengine/bevy/pull/10746
[10748]: https://github.com/bevyengine/bevy/pull/10748
[10749]: https://github.com/bevyengine/bevy/pull/10749
[10755]: https://github.com/bevyengine/bevy/pull/10755
[10758]: https://github.com/bevyengine/bevy/pull/10758
[10764]: https://github.com/bevyengine/bevy/pull/10764
[10770]: https://github.com/bevyengine/bevy/pull/10770
[10771]: https://github.com/bevyengine/bevy/pull/10771
[10774]: https://github.com/bevyengine/bevy/pull/10774
[10779]: https://github.com/bevyengine/bevy/pull/10779
[10780]: https://github.com/bevyengine/bevy/pull/10780
[10782]: https://github.com/bevyengine/bevy/pull/10782
[10785]: https://github.com/bevyengine/bevy/pull/10785
[10787]: https://github.com/bevyengine/bevy/pull/10787
[10788]: https://github.com/bevyengine/bevy/pull/10788
[10791]: https://github.com/bevyengine/bevy/pull/10791
[10799]: https://github.com/bevyengine/bevy/pull/10799
[10801]: https://github.com/bevyengine/bevy/pull/10801
[10804]: https://github.com/bevyengine/bevy/pull/10804
[10808]: https://github.com/bevyengine/bevy/pull/10808
[10811]: https://github.com/bevyengine/bevy/pull/10811
[10812]: https://github.com/bevyengine/bevy/pull/10812
[10815]: https://github.com/bevyengine/bevy/pull/10815
[10818]: https://github.com/bevyengine/bevy/pull/10818
[10822]: https://github.com/bevyengine/bevy/pull/10822
[10827]: https://github.com/bevyengine/bevy/pull/10827