bevy/CHANGELOG.md
Carter Anderson 4e20e4a151
0.13 changelog (#11918)
# Objective

Add 0.13 changelog
2024-02-17 07:22:02 +00:00

6946 lines
357 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 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
[10836]: https://github.com/bevyengine/bevy/pull/10836
[10837]: https://github.com/bevyengine/bevy/pull/10837
[10841]: https://github.com/bevyengine/bevy/pull/10841
[10847]: https://github.com/bevyengine/bevy/pull/10847
[10848]: https://github.com/bevyengine/bevy/pull/10848
[10854]: https://github.com/bevyengine/bevy/pull/10854
[10856]: https://github.com/bevyengine/bevy/pull/10856
[10857]: https://github.com/bevyengine/bevy/pull/10857
[10859]: https://github.com/bevyengine/bevy/pull/10859
[10872]: https://github.com/bevyengine/bevy/pull/10872
[10873]: https://github.com/bevyengine/bevy/pull/10873
[10878]: https://github.com/bevyengine/bevy/pull/10878
[10879]: https://github.com/bevyengine/bevy/pull/10879
[10882]: https://github.com/bevyengine/bevy/pull/10882
[10884]: https://github.com/bevyengine/bevy/pull/10884
[10885]: https://github.com/bevyengine/bevy/pull/10885
[10889]: https://github.com/bevyengine/bevy/pull/10889
[10892]: https://github.com/bevyengine/bevy/pull/10892
[10893]: https://github.com/bevyengine/bevy/pull/10893
[10897]: https://github.com/bevyengine/bevy/pull/10897
[10905]: https://github.com/bevyengine/bevy/pull/10905
[10906]: https://github.com/bevyengine/bevy/pull/10906
[10910]: https://github.com/bevyengine/bevy/pull/10910
[10911]: https://github.com/bevyengine/bevy/pull/10911
[10914]: https://github.com/bevyengine/bevy/pull/10914
[10918]: https://github.com/bevyengine/bevy/pull/10918
[10920]: https://github.com/bevyengine/bevy/pull/10920
[10922]: https://github.com/bevyengine/bevy/pull/10922
[10927]: https://github.com/bevyengine/bevy/pull/10927
[10930]: https://github.com/bevyengine/bevy/pull/10930
[10937]: https://github.com/bevyengine/bevy/pull/10937
[10939]: https://github.com/bevyengine/bevy/pull/10939
[10941]: https://github.com/bevyengine/bevy/pull/10941
[10942]: https://github.com/bevyengine/bevy/pull/10942
[10943]: https://github.com/bevyengine/bevy/pull/10943
[10946]: https://github.com/bevyengine/bevy/pull/10946
[10947]: https://github.com/bevyengine/bevy/pull/10947
[10951]: https://github.com/bevyengine/bevy/pull/10951
[10961]: https://github.com/bevyengine/bevy/pull/10961
[10962]: https://github.com/bevyengine/bevy/pull/10962
[10963]: https://github.com/bevyengine/bevy/pull/10963
[10965]: https://github.com/bevyengine/bevy/pull/10965
[10966]: https://github.com/bevyengine/bevy/pull/10966
[10967]: https://github.com/bevyengine/bevy/pull/10967
[10969]: https://github.com/bevyengine/bevy/pull/10969
[10970]: https://github.com/bevyengine/bevy/pull/10970
[10971]: https://github.com/bevyengine/bevy/pull/10971
[10977]: https://github.com/bevyengine/bevy/pull/10977
[10979]: https://github.com/bevyengine/bevy/pull/10979
[10980]: https://github.com/bevyengine/bevy/pull/10980
[10988]: https://github.com/bevyengine/bevy/pull/10988
[10989]: https://github.com/bevyengine/bevy/pull/10989
[10990]: https://github.com/bevyengine/bevy/pull/10990
[10996]: https://github.com/bevyengine/bevy/pull/10996
[10998]: https://github.com/bevyengine/bevy/pull/10998
[10999]: https://github.com/bevyengine/bevy/pull/10999
[11002]: https://github.com/bevyengine/bevy/pull/11002
[11003]: https://github.com/bevyengine/bevy/pull/11003
[11006]: https://github.com/bevyengine/bevy/pull/11006
[11010]: https://github.com/bevyengine/bevy/pull/11010
[11011]: https://github.com/bevyengine/bevy/pull/11011
[11012]: https://github.com/bevyengine/bevy/pull/11012
[11014]: https://github.com/bevyengine/bevy/pull/11014
[11016]: https://github.com/bevyengine/bevy/pull/11016
[11017]: https://github.com/bevyengine/bevy/pull/11017
[11018]: https://github.com/bevyengine/bevy/pull/11018
[11020]: https://github.com/bevyengine/bevy/pull/11020
[11021]: https://github.com/bevyengine/bevy/pull/11021
[11023]: https://github.com/bevyengine/bevy/pull/11023
[11024]: https://github.com/bevyengine/bevy/pull/11024
[11025]: https://github.com/bevyengine/bevy/pull/11025
[11027]: https://github.com/bevyengine/bevy/pull/11027
[11028]: https://github.com/bevyengine/bevy/pull/11028
[11029]: https://github.com/bevyengine/bevy/pull/11029
[11030]: https://github.com/bevyengine/bevy/pull/11030
[11031]: https://github.com/bevyengine/bevy/pull/11031
[11037]: https://github.com/bevyengine/bevy/pull/11037
[11040]: https://github.com/bevyengine/bevy/pull/11040
[11041]: https://github.com/bevyengine/bevy/pull/11041
[11043]: https://github.com/bevyengine/bevy/pull/11043
[11045]: https://github.com/bevyengine/bevy/pull/11045
[11049]: https://github.com/bevyengine/bevy/pull/11049
[11051]: https://github.com/bevyengine/bevy/pull/11051
[11053]: https://github.com/bevyengine/bevy/pull/11053
[11054]: https://github.com/bevyengine/bevy/pull/11054
[11057]: https://github.com/bevyengine/bevy/pull/11057
[11058]: https://github.com/bevyengine/bevy/pull/11058
[11059]: https://github.com/bevyengine/bevy/pull/11059
[11060]: https://github.com/bevyengine/bevy/pull/11060
[11063]: https://github.com/bevyengine/bevy/pull/11063
[11064]: https://github.com/bevyengine/bevy/pull/11064
[11065]: https://github.com/bevyengine/bevy/pull/11065
[11068]: https://github.com/bevyengine/bevy/pull/11068
[11069]: https://github.com/bevyengine/bevy/pull/11069
[11071]: https://github.com/bevyengine/bevy/pull/11071
[11072]: https://github.com/bevyengine/bevy/pull/11072
[11075]: https://github.com/bevyengine/bevy/pull/11075
[11076]: https://github.com/bevyengine/bevy/pull/11076
[11077]: https://github.com/bevyengine/bevy/pull/11077
[11080]: https://github.com/bevyengine/bevy/pull/11080
[11082]: https://github.com/bevyengine/bevy/pull/11082
[11084]: https://github.com/bevyengine/bevy/pull/11084
[11089]: https://github.com/bevyengine/bevy/pull/11089
[11092]: https://github.com/bevyengine/bevy/pull/11092
[11095]: https://github.com/bevyengine/bevy/pull/11095
[11103]: https://github.com/bevyengine/bevy/pull/11103
[11104]: https://github.com/bevyengine/bevy/pull/11104
[11106]: https://github.com/bevyengine/bevy/pull/11106
[11107]: https://github.com/bevyengine/bevy/pull/11107
[11110]: https://github.com/bevyengine/bevy/pull/11110
[11118]: https://github.com/bevyengine/bevy/pull/11118
[11128]: https://github.com/bevyengine/bevy/pull/11128
[11129]: https://github.com/bevyengine/bevy/pull/11129
[11134]: https://github.com/bevyengine/bevy/pull/11134
[11138]: https://github.com/bevyengine/bevy/pull/11138
[11139]: https://github.com/bevyengine/bevy/pull/11139
[11140]: https://github.com/bevyengine/bevy/pull/11140
[11142]: https://github.com/bevyengine/bevy/pull/11142
[11143]: https://github.com/bevyengine/bevy/pull/11143
[11146]: https://github.com/bevyengine/bevy/pull/11146
[11149]: https://github.com/bevyengine/bevy/pull/11149
[11152]: https://github.com/bevyengine/bevy/pull/11152
[11153]: https://github.com/bevyengine/bevy/pull/11153
[11162]: https://github.com/bevyengine/bevy/pull/11162
[11163]: https://github.com/bevyengine/bevy/pull/11163
[11164]: https://github.com/bevyengine/bevy/pull/11164
[11166]: https://github.com/bevyengine/bevy/pull/11166
[11167]: https://github.com/bevyengine/bevy/pull/11167
[11170]: https://github.com/bevyengine/bevy/pull/11170
[11171]: https://github.com/bevyengine/bevy/pull/11171
[11172]: https://github.com/bevyengine/bevy/pull/11172
[11176]: https://github.com/bevyengine/bevy/pull/11176
[11178]: https://github.com/bevyengine/bevy/pull/11178
[11179]: https://github.com/bevyengine/bevy/pull/11179
[11180]: https://github.com/bevyengine/bevy/pull/11180
[11182]: https://github.com/bevyengine/bevy/pull/11182
[11188]: https://github.com/bevyengine/bevy/pull/11188
[11189]: https://github.com/bevyengine/bevy/pull/11189
[11191]: https://github.com/bevyengine/bevy/pull/11191
[11192]: https://github.com/bevyengine/bevy/pull/11192
[11193]: https://github.com/bevyengine/bevy/pull/11193
[11194]: https://github.com/bevyengine/bevy/pull/11194
[11195]: https://github.com/bevyengine/bevy/pull/11195
[11199]: https://github.com/bevyengine/bevy/pull/11199
[11205]: https://github.com/bevyengine/bevy/pull/11205
[11206]: https://github.com/bevyengine/bevy/pull/11206
[11212]: https://github.com/bevyengine/bevy/pull/11212
[11218]: https://github.com/bevyengine/bevy/pull/11218
[11226]: https://github.com/bevyengine/bevy/pull/11226
[11227]: https://github.com/bevyengine/bevy/pull/11227
[11234]: https://github.com/bevyengine/bevy/pull/11234
[11238]: https://github.com/bevyengine/bevy/pull/11238
[11239]: https://github.com/bevyengine/bevy/pull/11239
[11242]: https://github.com/bevyengine/bevy/pull/11242
[11243]: https://github.com/bevyengine/bevy/pull/11243
[11245]: https://github.com/bevyengine/bevy/pull/11245
[11248]: https://github.com/bevyengine/bevy/pull/11248
[11250]: https://github.com/bevyengine/bevy/pull/11250
[11254]: https://github.com/bevyengine/bevy/pull/11254
[11260]: https://github.com/bevyengine/bevy/pull/11260
[11261]: https://github.com/bevyengine/bevy/pull/11261
[11268]: https://github.com/bevyengine/bevy/pull/11268
[11269]: https://github.com/bevyengine/bevy/pull/11269
[11270]: https://github.com/bevyengine/bevy/pull/11270
[11280]: https://github.com/bevyengine/bevy/pull/11280
[11284]: https://github.com/bevyengine/bevy/pull/11284
[11289]: https://github.com/bevyengine/bevy/pull/11289
[11292]: https://github.com/bevyengine/bevy/pull/11292
[11293]: https://github.com/bevyengine/bevy/pull/11293
[11296]: https://github.com/bevyengine/bevy/pull/11296
[11305]: https://github.com/bevyengine/bevy/pull/11305
[11306]: https://github.com/bevyengine/bevy/pull/11306
[11307]: https://github.com/bevyengine/bevy/pull/11307
[11310]: https://github.com/bevyengine/bevy/pull/11310
[11313]: https://github.com/bevyengine/bevy/pull/11313
[11316]: https://github.com/bevyengine/bevy/pull/11316
[11319]: https://github.com/bevyengine/bevy/pull/11319
[11321]: https://github.com/bevyengine/bevy/pull/11321
[11323]: https://github.com/bevyengine/bevy/pull/11323
[11325]: https://github.com/bevyengine/bevy/pull/11325
[11326]: https://github.com/bevyengine/bevy/pull/11326
[11327]: https://github.com/bevyengine/bevy/pull/11327
[11330]: https://github.com/bevyengine/bevy/pull/11330
[11331]: https://github.com/bevyengine/bevy/pull/11331
[11332]: https://github.com/bevyengine/bevy/pull/11332
[11334]: https://github.com/bevyengine/bevy/pull/11334
[11335]: https://github.com/bevyengine/bevy/pull/11335
[11336]: https://github.com/bevyengine/bevy/pull/11336
[11338]: https://github.com/bevyengine/bevy/pull/11338
[11342]: https://github.com/bevyengine/bevy/pull/11342
[11347]: https://github.com/bevyengine/bevy/pull/11347
[11353]: https://github.com/bevyengine/bevy/pull/11353
[11360]: https://github.com/bevyengine/bevy/pull/11360
[11361]: https://github.com/bevyengine/bevy/pull/11361
[11366]: https://github.com/bevyengine/bevy/pull/11366
[11368]: https://github.com/bevyengine/bevy/pull/11368
[11369]: https://github.com/bevyengine/bevy/pull/11369
[11370]: https://github.com/bevyengine/bevy/pull/11370
[11371]: https://github.com/bevyengine/bevy/pull/11371
[11373]: https://github.com/bevyengine/bevy/pull/11373
[11379]: https://github.com/bevyengine/bevy/pull/11379
[11381]: https://github.com/bevyengine/bevy/pull/11381
[11383]: https://github.com/bevyengine/bevy/pull/11383
[11386]: https://github.com/bevyengine/bevy/pull/11386
[11388]: https://github.com/bevyengine/bevy/pull/11388
[11389]: https://github.com/bevyengine/bevy/pull/11389
[11391]: https://github.com/bevyengine/bevy/pull/11391
[11397]: https://github.com/bevyengine/bevy/pull/11397
[11399]: https://github.com/bevyengine/bevy/pull/11399
[11400]: https://github.com/bevyengine/bevy/pull/11400
[11403]: https://github.com/bevyengine/bevy/pull/11403
[11404]: https://github.com/bevyengine/bevy/pull/11404
[11405]: https://github.com/bevyengine/bevy/pull/11405
[11407]: https://github.com/bevyengine/bevy/pull/11407
[11412]: https://github.com/bevyengine/bevy/pull/11412
[11416]: https://github.com/bevyengine/bevy/pull/11416
[11417]: https://github.com/bevyengine/bevy/pull/11417
[11418]: https://github.com/bevyengine/bevy/pull/11418
[11419]: https://github.com/bevyengine/bevy/pull/11419
[11420]: https://github.com/bevyengine/bevy/pull/11420
[11421]: https://github.com/bevyengine/bevy/pull/11421
[11422]: https://github.com/bevyengine/bevy/pull/11422
[11425]: https://github.com/bevyengine/bevy/pull/11425
[11428]: https://github.com/bevyengine/bevy/pull/11428
[11431]: https://github.com/bevyengine/bevy/pull/11431
[11432]: https://github.com/bevyengine/bevy/pull/11432
[11433]: https://github.com/bevyengine/bevy/pull/11433
[11434]: https://github.com/bevyengine/bevy/pull/11434
[11435]: https://github.com/bevyengine/bevy/pull/11435
[11436]: https://github.com/bevyengine/bevy/pull/11436
[11437]: https://github.com/bevyengine/bevy/pull/11437
[11439]: https://github.com/bevyengine/bevy/pull/11439
[11440]: https://github.com/bevyengine/bevy/pull/11440
[11442]: https://github.com/bevyengine/bevy/pull/11442
[11444]: https://github.com/bevyengine/bevy/pull/11444
[11445]: https://github.com/bevyengine/bevy/pull/11445
[11447]: https://github.com/bevyengine/bevy/pull/11447
[11454]: https://github.com/bevyengine/bevy/pull/11454
[11455]: https://github.com/bevyengine/bevy/pull/11455
[11456]: https://github.com/bevyengine/bevy/pull/11456
[11461]: https://github.com/bevyengine/bevy/pull/11461
[11462]: https://github.com/bevyengine/bevy/pull/11462
[11467]: https://github.com/bevyengine/bevy/pull/11467
[11469]: https://github.com/bevyengine/bevy/pull/11469
[11474]: https://github.com/bevyengine/bevy/pull/11474
[11480]: https://github.com/bevyengine/bevy/pull/11480
[11483]: https://github.com/bevyengine/bevy/pull/11483
[11484]: https://github.com/bevyengine/bevy/pull/11484
[11486]: https://github.com/bevyengine/bevy/pull/11486
[11487]: https://github.com/bevyengine/bevy/pull/11487
[11489]: https://github.com/bevyengine/bevy/pull/11489
[11491]: https://github.com/bevyengine/bevy/pull/11491
[11497]: https://github.com/bevyengine/bevy/pull/11497
[11498]: https://github.com/bevyengine/bevy/pull/11498
[11499]: https://github.com/bevyengine/bevy/pull/11499
[11500]: https://github.com/bevyengine/bevy/pull/11500
[11504]: https://github.com/bevyengine/bevy/pull/11504
[11506]: https://github.com/bevyengine/bevy/pull/11506
[11507]: https://github.com/bevyengine/bevy/pull/11507
[11508]: https://github.com/bevyengine/bevy/pull/11508
[11512]: https://github.com/bevyengine/bevy/pull/11512
[11513]: https://github.com/bevyengine/bevy/pull/11513
[11514]: https://github.com/bevyengine/bevy/pull/11514
[11519]: https://github.com/bevyengine/bevy/pull/11519
[11521]: https://github.com/bevyengine/bevy/pull/11521
[11523]: https://github.com/bevyengine/bevy/pull/11523
[11524]: https://github.com/bevyengine/bevy/pull/11524
[11526]: https://github.com/bevyengine/bevy/pull/11526
[11527]: https://github.com/bevyengine/bevy/pull/11527
[11528]: https://github.com/bevyengine/bevy/pull/11528
[11529]: https://github.com/bevyengine/bevy/pull/11529
[11531]: https://github.com/bevyengine/bevy/pull/11531
[11534]: https://github.com/bevyengine/bevy/pull/11534
[11538]: https://github.com/bevyengine/bevy/pull/11538
[11540]: https://github.com/bevyengine/bevy/pull/11540
[11541]: https://github.com/bevyengine/bevy/pull/11541
[11543]: https://github.com/bevyengine/bevy/pull/11543
[11548]: https://github.com/bevyengine/bevy/pull/11548
[11551]: https://github.com/bevyengine/bevy/pull/11551
[11555]: https://github.com/bevyengine/bevy/pull/11555
[11556]: https://github.com/bevyengine/bevy/pull/11556
[11560]: https://github.com/bevyengine/bevy/pull/11560
[11561]: https://github.com/bevyengine/bevy/pull/11561
[11573]: https://github.com/bevyengine/bevy/pull/11573
[11574]: https://github.com/bevyengine/bevy/pull/11574
[11575]: https://github.com/bevyengine/bevy/pull/11575
[11576]: https://github.com/bevyengine/bevy/pull/11576
[11578]: https://github.com/bevyengine/bevy/pull/11578
[11580]: https://github.com/bevyengine/bevy/pull/11580
[11581]: https://github.com/bevyengine/bevy/pull/11581
[11583]: https://github.com/bevyengine/bevy/pull/11583
[11585]: https://github.com/bevyengine/bevy/pull/11585
[11586]: https://github.com/bevyengine/bevy/pull/11586
[11591]: https://github.com/bevyengine/bevy/pull/11591
[11596]: https://github.com/bevyengine/bevy/pull/11596
[11597]: https://github.com/bevyengine/bevy/pull/11597
[11599]: https://github.com/bevyengine/bevy/pull/11599
[11600]: https://github.com/bevyengine/bevy/pull/11600
[11604]: https://github.com/bevyengine/bevy/pull/11604
[11605]: https://github.com/bevyengine/bevy/pull/11605
[11610]: https://github.com/bevyengine/bevy/pull/11610
[11611]: https://github.com/bevyengine/bevy/pull/11611
[11612]: https://github.com/bevyengine/bevy/pull/11612
[11615]: https://github.com/bevyengine/bevy/pull/11615
[11616]: https://github.com/bevyengine/bevy/pull/11616
[11617]: https://github.com/bevyengine/bevy/pull/11617
[11618]: https://github.com/bevyengine/bevy/pull/11618
[11622]: https://github.com/bevyengine/bevy/pull/11622
[11626]: https://github.com/bevyengine/bevy/pull/11626
[11627]: https://github.com/bevyengine/bevy/pull/11627
[11630]: https://github.com/bevyengine/bevy/pull/11630
[11635]: https://github.com/bevyengine/bevy/pull/11635
[11639]: https://github.com/bevyengine/bevy/pull/11639
[11640]: https://github.com/bevyengine/bevy/pull/11640
[11641]: https://github.com/bevyengine/bevy/pull/11641
[11644]: https://github.com/bevyengine/bevy/pull/11644
[11645]: https://github.com/bevyengine/bevy/pull/11645
[11649]: https://github.com/bevyengine/bevy/pull/11649
[11650]: https://github.com/bevyengine/bevy/pull/11650
[11652]: https://github.com/bevyengine/bevy/pull/11652
[11660]: https://github.com/bevyengine/bevy/pull/11660
[11662]: https://github.com/bevyengine/bevy/pull/11662
[11664]: https://github.com/bevyengine/bevy/pull/11664
[11666]: https://github.com/bevyengine/bevy/pull/11666
[11669]: https://github.com/bevyengine/bevy/pull/11669
[11671]: https://github.com/bevyengine/bevy/pull/11671
[11672]: https://github.com/bevyengine/bevy/pull/11672
[11675]: https://github.com/bevyengine/bevy/pull/11675
[11676]: https://github.com/bevyengine/bevy/pull/11676
[11678]: https://github.com/bevyengine/bevy/pull/11678
[11684]: https://github.com/bevyengine/bevy/pull/11684
[11686]: https://github.com/bevyengine/bevy/pull/11686
[11687]: https://github.com/bevyengine/bevy/pull/11687
[11688]: https://github.com/bevyengine/bevy/pull/11688
[11690]: https://github.com/bevyengine/bevy/pull/11690
[11693]: https://github.com/bevyengine/bevy/pull/11693
[11697]: https://github.com/bevyengine/bevy/pull/11697
[11699]: https://github.com/bevyengine/bevy/pull/11699
[11700]: https://github.com/bevyengine/bevy/pull/11700
[11703]: https://github.com/bevyengine/bevy/pull/11703
[11705]: https://github.com/bevyengine/bevy/pull/11705
[11709]: https://github.com/bevyengine/bevy/pull/11709
[11710]: https://github.com/bevyengine/bevy/pull/11710
[11712]: https://github.com/bevyengine/bevy/pull/11712
[11720]: https://github.com/bevyengine/bevy/pull/11720
[11721]: https://github.com/bevyengine/bevy/pull/11721
[11722]: https://github.com/bevyengine/bevy/pull/11722
[11725]: https://github.com/bevyengine/bevy/pull/11725
[11726]: https://github.com/bevyengine/bevy/pull/11726
[11728]: https://github.com/bevyengine/bevy/pull/11728
[11733]: https://github.com/bevyengine/bevy/pull/11733
[11735]: https://github.com/bevyengine/bevy/pull/11735
[11736]: https://github.com/bevyengine/bevy/pull/11736
[11737]: https://github.com/bevyengine/bevy/pull/11737
[11745]: https://github.com/bevyengine/bevy/pull/11745
[11747]: https://github.com/bevyengine/bevy/pull/11747
[11751]: https://github.com/bevyengine/bevy/pull/11751
[11758]: https://github.com/bevyengine/bevy/pull/11758
[11764]: https://github.com/bevyengine/bevy/pull/11764
[11767]: https://github.com/bevyengine/bevy/pull/11767
[11769]: https://github.com/bevyengine/bevy/pull/11769
[11773]: https://github.com/bevyengine/bevy/pull/11773
[11777]: https://github.com/bevyengine/bevy/pull/11777
[11780]: https://github.com/bevyengine/bevy/pull/11780
[11781]: https://github.com/bevyengine/bevy/pull/11781
[11783]: https://github.com/bevyengine/bevy/pull/11783
[11785]: https://github.com/bevyengine/bevy/pull/11785
[11791]: https://github.com/bevyengine/bevy/pull/11791
[11792]: https://github.com/bevyengine/bevy/pull/11792
[11795]: https://github.com/bevyengine/bevy/pull/11795
[11797]: https://github.com/bevyengine/bevy/pull/11797
[11798]: https://github.com/bevyengine/bevy/pull/11798
[11800]: https://github.com/bevyengine/bevy/pull/11800
[11801]: https://github.com/bevyengine/bevy/pull/11801
[11803]: https://github.com/bevyengine/bevy/pull/11803
[11805]: https://github.com/bevyengine/bevy/pull/11805
[11810]: https://github.com/bevyengine/bevy/pull/11810
[11818]: https://github.com/bevyengine/bevy/pull/11818
[11822]: https://github.com/bevyengine/bevy/pull/11822
[11832]: https://github.com/bevyengine/bevy/pull/11832
[11838]: https://github.com/bevyengine/bevy/pull/11838
[11847]: https://github.com/bevyengine/bevy/pull/11847
[11850]: https://github.com/bevyengine/bevy/pull/11850
[11855]: https://github.com/bevyengine/bevy/pull/11855
[11856]: https://github.com/bevyengine/bevy/pull/11856
[11860]: https://github.com/bevyengine/bevy/pull/11860
[11865]: https://github.com/bevyengine/bevy/pull/11865
[11866]: https://github.com/bevyengine/bevy/pull/11866
[11867]: https://github.com/bevyengine/bevy/pull/11867
[11868]: https://github.com/bevyengine/bevy/pull/11868
[11870]: https://github.com/bevyengine/bevy/pull/11870
[11878]: https://github.com/bevyengine/bevy/pull/11878
[11880]: https://github.com/bevyengine/bevy/pull/11880
[11882]: https://github.com/bevyengine/bevy/pull/11882
[11884]: https://github.com/bevyengine/bevy/pull/11884
[11889]: https://github.com/bevyengine/bevy/pull/11889
[11893]: https://github.com/bevyengine/bevy/pull/11893
[11894]: https://github.com/bevyengine/bevy/pull/11894
[11907]: https://github.com/bevyengine/bevy/pull/11907
[11909]: https://github.com/bevyengine/bevy/pull/11909
[11910]: https://github.com/bevyengine/bevy/pull/11910
[11911]: https://github.com/bevyengine/bevy/pull/11911
[11913]: https://github.com/bevyengine/bevy/pull/11913
[11914]: https://github.com/bevyengine/bevy/pull/11914
[11915]: https://github.com/bevyengine/bevy/pull/11915
## Version 0.12.0 (2023-11-04)
### A-ECS + A-Diagnostics
- [Cache parallel iteration spans][9950]
### A-ECS + A-Scenes
- [Make builder types take and return `Self`][10001]
### A-Scenes
- [Move scene spawner systems to SpawnScene schedule][9260]
- [Add `SceneInstanceReady`][9313]
- [Add `SpawnScene` to prelude][9451]
- [Finish documenting `bevy_scene`][9949]
- [Only attempt to copy resources that still exist from scenes][9984]
- [Correct Scene loader error description][10161]
### A-Tasks + A-Diagnostics
- [Fix doc warning in bevy_tasks][9348]
### A-Tasks
- [elaborate on TaskPool and bevy tasks][8750]
- [Remove Resource and add Debug to TaskPoolOptions][9485]
- [Fix clippy lint in single_threaded_task_pool][9851]
- [Remove dependecies from bevy_tasks' README][9881]
- [Allow using async_io::block_on in bevy_tasks][9626]
- [add test for nested scopes][10026]
- [Global TaskPool API improvements][10008]
### A-Audio + A-Windowing
- [Application lifetime events (suspend audio on Android)][10158]
### A-Animation + A-Transform
- [Add system parameter for computing up-to-date `GlobalTransform`s][8603]
### A-Transform
- [Update `GlobalTransform` on insertion][9081]
- [Add `Without<Parent>` filter to `sync_simple_transforms`' orphaned entities query][9518]
- [Fix ambiguities in transform example][9845]
### A-App
- [Add `track_caller` to `App::add_plugins`][9174]
- [Remove redundant check for `AppExit` events in `ScheduleRunnerPlugin`][9421]
- [fix typos in crates/bevy_app/src/app.rs][10173]
- [fix typos in crates/bevy_app/src/app.rs][10173]
- [fix run-once runners][10195]
### A-ECS + A-App
- [Add configure_schedules to App and Schedules to apply `ScheduleBuildSettings` to all schedules][9514]
- [Only run event systems if they have tangible work to do][7728]
### A-Rendering + A-Gizmos
- [Fix gizmo draw order in 2D][9129]
- [Fix gizmo line width issue when using perspective][9067]
### A-Rendering + A-Diagnostics
- [Include note of common profiling issue][9484]
- [Enhance many_cubes stress test use cases][9596]
- [GLTF loader: handle warning NODE_SKINNED_MESH_WITHOUT_SKIN][9360]
### A-Rendering + A-Reflection
- [Register `AlphaMode` type][9222]
### A-Windowing
- [Add option to toggle window control buttons][9083]
- [Fixed: Default window is now "App" instead of "Bevy App"][9301]
- [improve documentation relating to `WindowPlugin` and `Window`][9173]
- [Improve `bevy_winit` documentation][7609]
- [Change `WinitPlugin` defaults to limit game update rate when window is not visible][7611]
- [User controlled window visibility][9355]
- [Check cursor position for out of bounds of the window][8855]
- [Fix doc link in transparent_window example][9697]
- [Wait before making window visible][9692]
- [don't create windows on winit StartCause::Init event][9684]
- [Fix the doc warning attribute and document remaining items for `bevy_window`][9933]
- [Revert "macOS Sonoma (14.0) / Xcode 15.0 — Compatibility Fixes + Docs…][9991]
- [Revert "macOS Sonoma (14.0) / Xcode 15.0 — Compatibility Fixes + Docs…][9991]
- [Allow Bevy to start from non-main threads on supported platforms][10020]
- [Prevent black frames during startup][9826]
- [Slightly improve `CursorIcon` doc.][10289]
- [Fix typo in window.rs][10358]
### A-Gizmos
- [Replace AHash with a good sequence for entity AABB colors][9175]
- [gizmo plugin lag bugfix][9166]
- [Clarify immediate mode in `Gizmos` documentation][9183]
- [Fix crash when drawing line gizmo with less than 2 vertices][9101]
- [Document that gizmo `depth_bias` has no effect in 2D][10074]
### A-Utils
- [change 'collapse_type_name' to retain enum types][9587]
- [bevy_derive: Fix `#[deref]` breaking other attributes][9551]
- [Move default docs][9638]
### A-Rendering + A-Assets
- [Import the second UV map if present in glTF files.][9992]
- [fix custom shader imports][10030]
- [Add `ImageSamplerDescriptor` as an image loader setting][9982]
### A-ECS
- [Add the Has world query to bevy_ecs::prelude][9204]
- [Simplify parallel iteration methods][8854]
- [Fix safety invariants for `WorldQuery::fetch` and simplify cloning][8246]
- [Derive debug for ManualEventIterator][9293]
- [Add `EntityMap::clear`][9291]
- [Add a paragraph to the lifetimeless module doc][9312]
- [opt-out `multi-threaded` feature flag][9269]
- [Fix `ambiguous_with` breaking run conditions][9253]
- [Add `RunSystem`][9366]
- [Add `replace_if_neq` to `DetectChangesMut`][9418]
- [Adding `Copy, Clone, Debug` to derived traits of `ExecutorKind`][9385]
- [Fix incorrect documentation link in `DetectChangesMut`][9431]
- [Implement `Debug` for `UnsafeWorldCell`][9460]
- [Relax In/Out bounds on impl Debug for dyn System][9581]
- [Improve various `Debug` implementations][9588]
- [Make `run_if_inner` public and rename to `run_if_dyn`][9576]
- [Refactor build_schedule and related errors][9579]
- [Add `system.map(...)` for transforming the output of a system][8526]
- [Reorganize `Events` and `EventSequence` code][9306]
- [Replaced EntityMap with HashMap][9461]
- [clean up configure_set(s) erroring][9577]
- [Relax more `Sync` bounds on `Local`][9589]
- [Rename `ManualEventIterator`][9592]
- [Replaced `EntityCommand` Implementation for `FnOnce`][9604]
- [Add a variant of `Events::update` that returns the removed events][9542]
- [Move schedule name into `Schedule`][9600]
- [port old ambiguity tests over][9617]
- [Refactor `EventReader::iter` to `read`][9631]
- [fix ambiguity reporting][9648]
- [Fix anonymous set name stack overflow][9650]
- [Fix unsoundness in `QueryState::is_empty`][9463]
- [Add panicking helpers for getting components from `Query`][9659]
- [Replace `IntoSystemSetConfig` with `IntoSystemSetConfigs`][9247]
- [Moved `get_component(_unchecked_mut)` from `Query` to `QueryState`][9686]
- [Fix naming on "tick" Column and ComponentSparseSet methods][9744]
- [Clarify a comment in Option WorldQuery impl][9749]
- [Return a boolean from `set_if_neq`][9801]
- [Rename RemovedComponents::iter/iter_with_id to read/read_with_id][9778]
- [Remove some old references to CoreSet][9833]
- [Use single threaded executor for archetype benches][9835]
- [docs: Improve some `ComponentId` doc cross-linking.][9839]
- [One Shot Systems][8963]
- [Add mutual exclusion safety info on filter_fetch][9836]
- [add try_insert to entity commands][9844]
- [Improve codegen for world validation][9464]
- [docs: Use intradoc links for method references.][9958]
- [Remove States::variants and remove enum-only restriction its derive][9945]
- [`as_deref_mut()` method for Mut-like types][9912]
- [refactor: Change `Option<With<T>>` query params to `Has<T>`][9959]
- [Hide `UnsafeWorldCell::unsafe_world`][9741]
- [Add a public API to ArchetypeGeneration/Id][9825]
- [Ignore ambiguous components or resources][9895]
- [Use chain in breakout example][10124]
- [`ParamSet`s containing non-send parameters should also be non-send][10211]
- [Replace all labels with interned labels][7762]
- [Fix outdated comment referencing CoreSet][10294]
### A-Rendering + A-Math
- [derive Clone/Copy/Debug trio for shape::Cylinder][9705]
### A-UI
- [Fix for vertical text bounds and alignment][9133]
- [UI extraction order fix][9099]
- [Update text example using default font][9259]
- [bevy_ui: fix doc formatting for some Style fields][9295]
- [Remove the `With<Parent>` query filter from `bevy_ui::render::extract_uinode_borders`][9285]
- [Fix incorrent doc comment for the set method of `ContentSize`][9345]
- [Improved text widget doc comments][9344]
- [Change the default for the `measure_func` field of `ContentSize` to None.][9346]
- [Unnecessary line in game_menu example][9406]
- [Change `UiScale` to a tuple struct][9444]
- [Remove unnecessary doc string][9481]
- [Add some missing pub in ui_node][9529]
- [UI examples clean up][9479]
- [`round_ties_up` fix][9548]
- [fix incorrect docs for `JustifyItems` and `JustifySelf`][9539]
- [Added `Val::ZERO` Constant][9566]
- [Cleanup some bevy_text pipeline.rs][9111]
- [Make `GridPlacement`'s fields non-zero and add accessor functions.][9486]
- [Remove `Val`'s `try_*` arithmetic methods][9609]
- [UI node bundle comment fix][9404]
- [Do not panic on non-UI child of UI entity][9621]
- [Rename `Val` `evaluate` to `resolve` and implement viewport variant support][9568]
- [Change `Urect::width` & `Urect::height` to be const][9640]
- [`TextLayoutInfo::size` should hold the drawn size of the text, and not a scaled value.][7794]
- [`impl From<String>` and `From<&str>` for `TextSection`][8856]
- [Remove z-axis scaling in `extract_text2d_sprite`][9733]
- [Fix doc comments for align items][9739]
- [Add tests to `bevy_ui::Layout`][9781]
- [examples: Remove unused doc comments.][9795]
- [Add missing `bevy_text` feature attribute to `TextBundle` from impl][9785]
- [Move `Val` into `geometry`][9818]
- [Derive Serialize and Deserialize for UiRect][9820]
- [`ContentSize` replacement fix][9753]
- [Round UI coordinates after scaling][9784]
- [Have a separate implicit viewport node per root node + make viewport node `Display::Grid`][9637]
- [Rename `num_font_atlases` to `len`.][9879]
- [Fix documentation for ui node Style][9935]
- [`text_wrap_debug` scale factor commandline args][9951]
- [Store both the rounded and unrounded node size in Node][9923]
- [Various accessibility API updates.][9989]
- [UI node outlines][9931]
- [Implement serialize and deserialize for some UI types][10044]
- [Tidy up UI node docs][10189]
- [Remove unused import warning when default_font feature is disabled][10230]
- [Fix crash with certain right-aligned text][10271]
- [Add some more docs for bevy_text.][9873]
- [Implement `Neg` for `Val`][10295]
- [`normalize` method for `Rect`][10297]
- [don't Implement `Display` for `Val`][10345]
- [[bevy_text] Document what happens when font is not specified][10252]
- [Update UI alignment docs][10303]
- [Add stack index to `Node`][9853]
- [don't Implement `Display` for `Val`][10345]
### A-Animation
- [Fix doc typo][9162]
- [Expose `animation_clip` paths][9392]
- [animations: convert skinning weights from unorm8x4 to float32x4][9338]
- [API updates to the AnimationPlayer][9002]
- [only take up to the max number of joints][9351]
- [check root node for animations][9407]
- [Fix morph interpolation][9927]
### A-Pointers
- [Put `#[repr(transparent)]` attr to bevy_ptr types][9068]
### A-Assets + A-Reflection
- [reflect: `TypePath` part 2][8768]
### A-Rendering + A-Hierarchy
- [default inherited visibility when parent has invalid components][10275]
### A-ECS + A-Tasks
- [Round up for the batch size to improve par_iter performance][9814]
### A-Reflection + A-Utils
- [Moved `fq_std` from `bevy_reflect_derive` to `bevy_macro_utils`][9956]
### A-Reflection + A-Math
- [Add reflect impls to IRect and URect][9191]
- [Implement reflect trait on new glam types (I64Vec and U64Vec)][9281]
### A-Hierarchy
- [Prevent setting parent as itself][8980]
- [Add as_slice to parent][9871]
### A-Input
- [input: allow multiple gamepad inputs to be registered for one button in one frame][9446]
- [Bevy Input Docs : lib.rs][9468]
- [Bevy Input Docs : gamepad.rs][9469]
- [Add `GamepadButtonInput` event][9008]
- [Bevy Input Docs : the modules][9467]
- [Finish documenting `bevy_gilrs`][10010]
- [Change `AxisSettings` livezone default][10090]
- [docs: Update input_toggle_active example][9913]
### A-Input + A-Windowing
- [Fix `Window::set_cursor_position`][9456]
- [Change `Window::physical_cursor_position` to use the physical size of the window][9657]
- [Fix check that cursor position is within window bounds][9662]
### A-ECS + A-Reflection
- [implement insert and remove reflected entity commands][8895]
- [Allow disjoint mutable world access via `EntityMut`][9419]
- [Implement `Reflect` for `State<S>` and `NextState<S>`][9742]
- [`#[derive(Clone)]` on `Component{Info,Descriptor}`][9812]
### A-Math
- [Rename bevy_math::rects conversion methods][9159]
- [Add glam swizzles traits to prelude][9387]
- [Rename `Bezier` to `CubicBezier` for clarity][9554]
- [Add a method to compute a bounding box enclosing a set of points][9630]
- [re-export `debug_glam_assert` feature][10206]
- [Add `Cubic` prefix to all cubic curve generators][10299]
### A-Build-System
- [only check for bans if the dependency tree changed][9252]
- [Slightly better message when contributor modifies examples template][9372]
- [switch CI jobs between windows and linux for example execution][9489]
- [Check for bevy_internal imports in CI][9612]
- [Fix running examples on linux in CI][9665]
- [Bump actions/checkout from 2 to 4][9759]
- [doc: Remove reference to `clippy::manual-strip`.][9794]
- [Only run some workflows on the bevy repo (not forks)][9872]
- [run mobile tests on more devices / OS versions][9936]
- [Allow `clippy::type_complexity` in more places.][9796]
- [hacks for running (and screenshotting) the examples in CI on a github runner][9220]
- [make CI less failing on cargo deny bans][10151]
- [add test on Android 14 / Pixel 8][10148]
- [Use `clippy::doc_markdown` more.][10286]
### A-Diagnostics
- [Cache System Tracing Spans][9390]
### A-Rendering + A-Animation
- [Use a seeded rng for custom_skinned_mesh example][9846]
- [Move skin code to a separate module][9899]
### A-Core
- [Change visibility of `bevy::core::update_frame_count` to `pub`][10111]
### A-Reflection
- [Fix typo in NamedTypePathDef][9102]
- [Refactor `path` module of `bevy_reflect`][8887]
- [Refactor parsing in bevy_reflect path module][9048]
- [bevy_reflect: Fix combined field attributes][9322]
- [bevy_reflect: Opt-out attribute for `TypePath`][9140]
- [Add reflect path parsing benchmark][9364]
- [Make it so `ParsedPath` can be passed to GetPath][9373]
- [Make the reflect path parser utf-8-unaware][9371]
- [bevy_scene: Add `ReflectBundle`][9165]
- [Fix comment in scene example `FromResources`][9743]
- [Remove TypeRegistry re-export rename][9807]
- [Provide getters for fields of ReflectFromPtr][9748]
- [Add TypePath to the prelude][9963]
- [Improve TypeUuid's derive macro error messages][9315]
- [Migrate `Quat` reflection strategy from "value" to "struct"][10068]
- [bevy_reflect: Fix dynamic type serialization][10103]
- [bevy_reflect: Fix ignored/skipped field order][7575]
### A-Rendering + A-Assets + A-Reflection
- [Implement `Reflect` for `Mesh`][9779]
### A-ECS + A-Time
- [add on_real_time_timer run condition][10179]
### A-ECS + A-Hierarchy
- [Added 'clear_children' and 'replace_children' methods to BuildWorldChildren to be consistent with BuildChildren.][10311]
### A-Audio
- [Added Pitch as an alternative sound source][9225]
- [update documentation on AudioSink][9332]
- [audio sinks don't need their custom drop anymore][9336]
- [Clarify what happens when setting the audio volume][9480]
- [More ergonomic spatial audio][9800]
### A-Rendering + A-UI
- [Remove out-of-date paragraph in `Style::border`][9103]
- [Revert "Fix UI corruption for AMD gpus with Vulkan (#9169)"][9237]
- [Revert "Fix UI corruption for AMD gpus with Vulkan (#9169)"][9237]
- [`many_buttons` enhancements][9712]
- [Fix UI borders][10078]
- [UI batching Fix][9610]
- [Add UI Materials][9506]
### A-ECS + A-Reflection + A-Pointers
- [add `MutUntyped::map_unchanged`][9194]
### No area label
- [Fix typos throughout the project][9090]
- [Bump Version after Release][9106]
- [fix `clippy::default_constructed_unit_structs` and trybuild errors][9144]
- [delete code deprecated in 0.11][9128]
- [Drain `ExtractedUiNodes` in `prepare_uinodes`][9142]
- [example showcase - pagination and can build for WebGL2][9168]
- [example showcase: switch default api to webgpu][9193]
- [Add some more helpful errors to BevyManifest when it doesn't find Cargo.toml][9207]
- [Fix path reference to contributors example][9219]
- [replace parens with square brackets when referencing _mut on `Query` docs #9200][9223]
- [use AutoNoVsync in stress tests][9229]
- [bevy_render: Remove direct dep on wgpu-hal.][9249]
- [Fixed typo in line 322][9276]
- [custom_material.vert: gl_InstanceIndex includes gl_BaseInstance][9326]
- [fix typo in a link - Mesh docs][9329]
- [Improve font size related docs][9320]
- [Fix gamepad viewer being marked as a non-wasm example][9399]
- [Rustdoc: Scrape examples][9154]
- [enable multithreading on benches][9388]
- [webgl feature renamed to webgl2][9370]
- [Example Comment Typo Fix][9427]
- [Fix shader_instancing example][9448]
- [Update tracy-client requirement from 0.15 to 0.16][9436]
- [fix bevy imports. windows_settings.rs example][9547]
- [Fix CI for Rust 1.72][9562]
- [Swap TransparentUi to use a stable sort][9598]
- [Replace uses of `entity.insert` with tuple bundles in `game_menu` example][9619]
- [Remove `IntoIterator` impl for `&mut EventReader`][9583]
- [remove VecSwizzles imports][9629]
- [Fix erronenous glam version][9653]
- [Fixing some doc comments][9646]
- [Explicitly make instance_index vertex output @interpolate(flat)][9675]
- [Fix some nightly warnings][9672]
- [Use default resolution for viewport_debug example][9666]
- [Refer to "macOS", not "macOS X".][9704]
- [Remove useless single tuples and trailing commas][9720]
- [Fix some warnings shown in nightly][10012]
- [Fix animate_scale scaling z value in text2d example][9769]
- ["serialize" feature no longer enables the optional "bevy_scene" feature if it's not enabled from elsewhere][9803]
- [fix deprecation warning in bench][9823]
- [don't enable filesystem_watcher when building for WebGPU][9829]
- [Improve doc formatting.][9840]
- [Fix the `clippy::explicit_iter_loop` lint][9834]
- [Wslg docs][9842]
- [skybox.wgsl: Fix precision issues][9909]
- [Fix typos.][9922]
- [Add link to `Text2dBundle` in `TextBundle` docs.][9900]
- [Fix some typos][9934]
- [Fix typos][9965]
- [Replaced `parking_lot` with `std::sync`][9545]
- [Add inline(never) to bench systems][9824]
- [Android: handle suspend / resume][9937]
- [Fix some warnings shown in nightly][10012]
- [Updates for rust 1.73][10035]
- [Improve selection of iOS device in mobile example][9282]
- [Update toml_edit requirement from 0.19 to 0.20][10058]
- [foxes shouldn't march in sync][10070]
- [Fix tonemapping test patten][10092]
- [Removed `once_cell`][10079]
- [Improve WebGPU unstable flags docs][10163]
- [shadow_biases: Support different PCF methods][10184]
- [shadow_biases: Support moving the light position and resetting biases][10185]
- [Update async-io requirement from 1.13.0 to 2.0.0][10238]
- [few fmt tweaks][10264]
- [Derive Error for more error types][10240]
- [Allow AccessKit to react to WindowEvents before they reach the engine][10356]
### A-Rendering + A-Build-System
- [Improve execution of examples in CI][9331]
- [make deferred_rendering simpler to render for CI][10150]
### A-Meta
- [Remove the bevy_dylib feature][9516]
- [add and fix shields in Readmes][9993]
- [Added section for contributing and links for issues and PRs][10171]
- [Fix orphaned contributing paragraph][10174]
### A-Assets + A-Animation
- [Handle empty morph weights when loading gltf][9867]
- [Finish documenting `bevy_gltf`][9998]
### A-Editor + A-Diagnostics
- [Add `DiagnosticsStore::iter_mut`][9679]
### A-Time
- [Fix timers.rs documentation][9290]
- [Add missing documentation to `bevy_time`][9428]
- [Clarify behaviour of `Timer::finished()` for repeating timers][9939]
- [ignore time channel error][9981]
- [Unify `FixedTime` and `Time` while fixing several problems][8964]
- [Time: demote delta time clamping warning to debug][10145]
- [fix typo in time.rs example][10152]
- [Example time api][10204]
### A-Rendering + A-ECS
- [Update `Camera`'s `Frustum` only when its `GlobalTransform` or `CameraProjection` changed][9092]
### A-UI + A-Reflection
- [bevy_ui: reflect missing types][9677]
- [register `TextLayoutInfo` and `TextFlags` type.][9919]
### A-Build-System + A-Assets
- [Increase iteration count for asset tests][9737]
### A-Rendering
- [Clarify that wgpu is based on the webGPU API][9093]
- [Return URect instead of (UVec2, UVec2) in Camera::physical_viewport_rect][9085]
- [fix module name for AssetPath shaders][9186]
- [Add GpuArrayBuffer and BatchedUniformBuffer][8204]
- [Update `bevy_window::PresentMode` to mirror `wgpu::PresentMode`][9230]
- [Stop using unwrap in the pipelined rendering thread][9052]
- [Fix panic whilst loading UASTC encoded ktx2 textures][9158]
- [Document `ClearColorConfig`][9288]
- [Use GpuArrayBuffer for MeshUniform][9254]
- [Update docs for scaling_mode field of Orthographic projection][9297]
- [Fix shader_material_glsl example after #9254][9311]
- [Improve `Mesh` documentation][9061]
- [Include tone_mapping fn in tonemapping_test_patterns][9084]
- [Extend the default render range of 2D camera][9310]
- [Document when Camera::viewport_to_world and related methods return None][8841]
- [include toplevel shader-associated defs][9343]
- [Fix post_processing example on webgl2][9361]
- [use ViewNodeRunner in the post_processing example][9127]
- [Work around naga/wgpu WGSL instance_index -> GLSL gl_InstanceID bug on WebGL2][9383]
- [Fix non-visible motion vector text in shader prepass example][9155]
- [Use bevy crates imports instead of bevy internal. post_processing example][9396]
- [Make Anchor Copy][9327]
- [Move window.rs to window/mod.rs in bevy_render][9394]
- [Reduce the size of MeshUniform to improve performance][9416]
- [Fix temporal jitter bug][9462]
- [Fix gizmo lines deforming or disappearing when partially behind the camera][9470]
- [Make WgpuSettings::default() check WGPU_POWER_PREF][9482]
- [fix wireframe after MeshUniform size reduction][9505]
- [fix shader_material_glsl example][9513]
- [[RAINBOW EFFECT] Added methods to get HSL components from Color][9201]
- [ktx2: Fix Rgb8 -> Rgba8Unorm conversion][9555]
- [Reorder render sets, refactor bevy_sprite to take advantage][9236]
- [Improve documentation relating to `Frustum` and `HalfSpace`][9136]
- [Revert "Update defaults for OrthographicProjection (#9537)"][9878]
- [Remove unused regex dep from bevy_render][9613]
- [Split `ComputedVisibility` into two components to allow for accurate change detection and speed up visibility propagation][9497]
- [Use instancing for sprites][9597]
- [Enhance bevymark][9674]
- [Remove redundant math in tonemapping.][9669]
- [Improve `SpatialBundle` docs][9673]
- [Cache depth texture based on usage][9565]
- [warn and min for different vertex count][9699]
- [default 16bit rgb/rgba textures to unorm instead of uint][9611]
- [Fix TextureAtlasBuilder padding][10031]
- [Add example for `Camera::viewport_to_world`][7179]
- [Fix wireframe for skinned/morphed meshes][9734]
- [generate indices for Mikktspace][8862]
- [invert face culling for negatively scaled gltf nodes][8859]
- [renderer init: create a detached task only on wasm, block otherwise][9830]
- [Cleanup `visibility` module][9850]
- [Use a single line for of large binding lists][9849]
- [Fix a typo in `DirectionalLightBundle`][9861]
- [Revert "Update defaults for OrthographicProjection (#9537)"][9878]
- [Refactor rendering systems to use `let-else`][9870]
- [Use radsort for Transparent2d PhaseItem sorting][9882]
- [Automatic batching/instancing of draw commands][9685]
- [Directly copy data into uniform buffers][9865]
- [Allow other plugins to create renderer resources][9925]
- [Use EntityHashMap<Entity, T> for render world entity storage for better performance][9903]
- [Parallelize extract_meshes][9966]
- [Fix comment grammar][9990]
- [Allow overriding global wireframe setting.][7328]
- [wireframes: workaround for DX12][10022]
- [Alternate wireframe override api][10023]
- [Fix TextureAtlasBuilder padding][10031]
- [fix example mesh2d_manual][9941]
- [PCF For DirectionalLight/SpotLight Shadows][8006]
- [Refactor the render instance logic in #9903 so that it's easier for other components to adopt.][10002]
- [Fix 2d_shapes and general 2D mesh instancing][10051]
- [fix webgl2 crash][10053]
- [fix orthographic cluster aabb for spotlight culling][9614]
- [Add consuming builder methods for more ergonomic `Mesh` creation][10056]
- [wgpu 0.17][9302]
- [use `Material` for wireframes][5314]
- [Extract common wireframe filters in type alias][10080]
- [Deferred Renderer][9258]
- [Configurable colors for wireframe][5303]
- [chore: Renamed RenderInstance trait to ExtractInstance][10065]
- [pbr shader cleanup][10105]
- [Fix text2d view-visibility][10100]
- [Allow optional extraction of resources from the main world][10109]
- [ssao use unlit_color instead of white][10117]
- [Fix missing explicit lifetime name for copy_deferred_lighting_id name][10128]
- [Fixed mod.rs in rendering to support Radeon Cards][10132]
- [Explain usage of prepass shaders in docs for `Material` trait][9025]
- [Better link for prepare_windows docs][10142]
- [Improve linking within `RenderSet` docs.][10143]
- [Fix unlit missing parameters][10144]
- [`*_PREPASS` Shader Def Cleanup][10136]
- [check for any prepass phase][10160]
- [allow extensions to StandardMaterial][7820]
- [array_texture example: use new name of pbr function][10168]
- [chore: use ExtractComponent derive macro for EnvironmentMapLight and FogSettings][10191]
- [Variable `MeshPipeline` View Bind Group Layout][10156]
- [update shader imports][10180]
- [Bind group entries][9694]
- [Detect cubemap for dds textures][10222]
- [Fix alignment on ios simulator][10178]
- [Add convenient methods for Image][10221]
- [Use “specular occlusion” term to consistently extinguish fresnel on Ambient and Environment Map lights][10182]
- [Fix fog color being inaccurate][10226]
- [Replace all usages of texture_descritor.size.* with the helper methods][10227]
- [View Transformations][9726]
- [fix deferred example fog values][10249]
- [WebGL2: fix import path for unpack_unorm3x4_plus_unorm_20_][10251]
- [Use wildcard imports in bevy_pbr][9847]
- [Make mesh attr vertex count mismatch warn more readable][10259]
- [Image Sampler Improvements][10254]
- [Fix sampling of diffuse env map texture with non-uniform control flow][10276]
- [Log a warning when the `tonemapping_luts` feature is disabled but required for the selected tonemapper.][10253]
- [Smaller TAA fixes][10200]
- [Truncate attribute buffer data rather than attribute buffers][10270]
- [Fix deferred lighting pass values not all working on M1 in WebGL2][10304]
- [Add frustum to shader View][10306]
- [Fix handling of `double_sided` for normal maps][10326]
- [Add helper function to determine if color is transparent][10310]
- [`StandardMaterial` Light Transmission][8015]
- [double sided normals: fix apply_normal_mapping calls][10330]
- [Combine visibility queries in check_visibility_system][10196]
- [Make VERTEX_COLORS usable in prepass shader, if available][10341]
- [allow DeferredPrepass to work without other prepass markers][10223]
- [Increase default normal bias to avoid common artifacts][10346]
- [Make `DirectionalLight` `Cascades` computation generic over `CameraProjection`][9226]
- [Update default `ClearColor` to better match Bevy's branding][10339]
- [Fix gizmo crash when prepass enabled][10360]
### A-Build-System + A-Meta
- [Fixed: README.md][9994]
### A-Assets
- [doc(asset): fix asset trait example][9105]
- [Add `GltfLoader::new`.][9120]
- [impl `From<&AssetPath>` for `HandleId`][9132]
- [allow asset loader pre-registration][9429]
- [fix asset loader preregistration for multiple assets][9453]
- [Fix point light radius][9493]
- [Add support for KHR_materials_emissive_strength][9553]
- [Fix panic when using `.load_folder()` with absolute paths][9490]
- [Bevy Asset V2][8624]
- [create imported asset directory if needed][9716]
- [Copy on Write AssetPaths][9729]
- [Asset v2: Asset path serialization fix][9756]
- [don't ignore some EventKind::Modify][9767]
- [Manual "Reflect Value" AssetPath impl to fix dynamic linking][9752]
- [Fix unused variable warning for simple AssetV2 derives][9961]
- [Remove monkey.gltf][9974]
- [Update notify-debouncer-full requirement from 0.2.0 to 0.3.1][9757]
- [Removed `anyhow`][10003]
- [Multiple Asset Sources][9885]
- [Make loading warning for no file ext more descriptive][10119]
- [Fix load_folder for non-default Asset Sources][10121]
- [only set up processed source if asset plugin is not unprocessed][10123]
- [Hot reload labeled assets whose source asset is not loaded][9736]
- [Return an error when loading non-existent labels][9751]
- [remove unused import on android][10197]
- [Log an error when registering an AssetSource after AssetPlugin has been built][10202]
- [Add note about asset source register order][10186]
- [Add `asset_processor` feature and remove AssetMode::ProcessedDev][10194]
- [Implement source into Display for AssetPath][10217]
- [assets: use blake3 instead of md5][10208]
- [Reduce noise in asset processing example][10262]
- [Adding AssetPath::resolve() method.][9528]
- [Assets: fix first hot reloading][9804]
- [Non-blocking load_untyped using a wrapper asset][10198]
- [Reuse and hot reload folder handles][10210]
- [Additional AssetPath unit tests.][10279]
- [Corrected incorrect doc comment on read_asset_bytes][10352]
- [support file operations in single threaded context][10312]
[5303]: https://github.com/bevyengine/bevy/pull/5303
[5314]: https://github.com/bevyengine/bevy/pull/5314
[7179]: https://github.com/bevyengine/bevy/pull/7179
[7328]: https://github.com/bevyengine/bevy/pull/7328
[7575]: https://github.com/bevyengine/bevy/pull/7575
[7609]: https://github.com/bevyengine/bevy/pull/7609
[7611]: https://github.com/bevyengine/bevy/pull/7611
[7728]: https://github.com/bevyengine/bevy/pull/7728
[7762]: https://github.com/bevyengine/bevy/pull/7762
[7794]: https://github.com/bevyengine/bevy/pull/7794
[7820]: https://github.com/bevyengine/bevy/pull/7820
[8006]: https://github.com/bevyengine/bevy/pull/8006
[8015]: https://github.com/bevyengine/bevy/pull/8015
[8204]: https://github.com/bevyengine/bevy/pull/8204
[8246]: https://github.com/bevyengine/bevy/pull/8246
[8526]: https://github.com/bevyengine/bevy/pull/8526
[8603]: https://github.com/bevyengine/bevy/pull/8603
[8624]: https://github.com/bevyengine/bevy/pull/8624
[8750]: https://github.com/bevyengine/bevy/pull/8750
[8768]: https://github.com/bevyengine/bevy/pull/8768
[8841]: https://github.com/bevyengine/bevy/pull/8841
[8854]: https://github.com/bevyengine/bevy/pull/8854
[8855]: https://github.com/bevyengine/bevy/pull/8855
[8856]: https://github.com/bevyengine/bevy/pull/8856
[8859]: https://github.com/bevyengine/bevy/pull/8859
[8862]: https://github.com/bevyengine/bevy/pull/8862
[8887]: https://github.com/bevyengine/bevy/pull/8887
[8895]: https://github.com/bevyengine/bevy/pull/8895
[8963]: https://github.com/bevyengine/bevy/pull/8963
[8964]: https://github.com/bevyengine/bevy/pull/8964
[8980]: https://github.com/bevyengine/bevy/pull/8980
[9002]: https://github.com/bevyengine/bevy/pull/9002
[9008]: https://github.com/bevyengine/bevy/pull/9008
[9025]: https://github.com/bevyengine/bevy/pull/9025
[9048]: https://github.com/bevyengine/bevy/pull/9048
[9052]: https://github.com/bevyengine/bevy/pull/9052
[9061]: https://github.com/bevyengine/bevy/pull/9061
[9067]: https://github.com/bevyengine/bevy/pull/9067
[9068]: https://github.com/bevyengine/bevy/pull/9068
[9081]: https://github.com/bevyengine/bevy/pull/9081
[9083]: https://github.com/bevyengine/bevy/pull/9083
[9084]: https://github.com/bevyengine/bevy/pull/9084
[9085]: https://github.com/bevyengine/bevy/pull/9085
[9090]: https://github.com/bevyengine/bevy/pull/9090
[9092]: https://github.com/bevyengine/bevy/pull/9092
[9093]: https://github.com/bevyengine/bevy/pull/9093
[9099]: https://github.com/bevyengine/bevy/pull/9099
[9101]: https://github.com/bevyengine/bevy/pull/9101
[9102]: https://github.com/bevyengine/bevy/pull/9102
[9103]: https://github.com/bevyengine/bevy/pull/9103
[9105]: https://github.com/bevyengine/bevy/pull/9105
[9106]: https://github.com/bevyengine/bevy/pull/9106
[9111]: https://github.com/bevyengine/bevy/pull/9111
[9120]: https://github.com/bevyengine/bevy/pull/9120
[9127]: https://github.com/bevyengine/bevy/pull/9127
[9128]: https://github.com/bevyengine/bevy/pull/9128
[9129]: https://github.com/bevyengine/bevy/pull/9129
[9132]: https://github.com/bevyengine/bevy/pull/9132
[9133]: https://github.com/bevyengine/bevy/pull/9133
[9136]: https://github.com/bevyengine/bevy/pull/9136
[9140]: https://github.com/bevyengine/bevy/pull/9140
[9142]: https://github.com/bevyengine/bevy/pull/9142
[9144]: https://github.com/bevyengine/bevy/pull/9144
[9154]: https://github.com/bevyengine/bevy/pull/9154
[9155]: https://github.com/bevyengine/bevy/pull/9155
[9158]: https://github.com/bevyengine/bevy/pull/9158
[9159]: https://github.com/bevyengine/bevy/pull/9159
[9162]: https://github.com/bevyengine/bevy/pull/9162
[9165]: https://github.com/bevyengine/bevy/pull/9165
[9166]: https://github.com/bevyengine/bevy/pull/9166
[9168]: https://github.com/bevyengine/bevy/pull/9168
[9173]: https://github.com/bevyengine/bevy/pull/9173
[9174]: https://github.com/bevyengine/bevy/pull/9174
[9175]: https://github.com/bevyengine/bevy/pull/9175
[9183]: https://github.com/bevyengine/bevy/pull/9183
[9186]: https://github.com/bevyengine/bevy/pull/9186
[9191]: https://github.com/bevyengine/bevy/pull/9191
[9193]: https://github.com/bevyengine/bevy/pull/9193
[9194]: https://github.com/bevyengine/bevy/pull/9194
[9201]: https://github.com/bevyengine/bevy/pull/9201
[9204]: https://github.com/bevyengine/bevy/pull/9204
[9207]: https://github.com/bevyengine/bevy/pull/9207
[9219]: https://github.com/bevyengine/bevy/pull/9219
[9220]: https://github.com/bevyengine/bevy/pull/9220
[9222]: https://github.com/bevyengine/bevy/pull/9222
[9223]: https://github.com/bevyengine/bevy/pull/9223
[9225]: https://github.com/bevyengine/bevy/pull/9225
[9226]: https://github.com/bevyengine/bevy/pull/9226
[9229]: https://github.com/bevyengine/bevy/pull/9229
[9230]: https://github.com/bevyengine/bevy/pull/9230
[9236]: https://github.com/bevyengine/bevy/pull/9236
[9237]: https://github.com/bevyengine/bevy/pull/9237
[9247]: https://github.com/bevyengine/bevy/pull/9247
[9249]: https://github.com/bevyengine/bevy/pull/9249
[9252]: https://github.com/bevyengine/bevy/pull/9252
[9253]: https://github.com/bevyengine/bevy/pull/9253
[9254]: https://github.com/bevyengine/bevy/pull/9254
[9258]: https://github.com/bevyengine/bevy/pull/9258
[9259]: https://github.com/bevyengine/bevy/pull/9259
[9260]: https://github.com/bevyengine/bevy/pull/9260
[9269]: https://github.com/bevyengine/bevy/pull/9269
[9276]: https://github.com/bevyengine/bevy/pull/9276
[9281]: https://github.com/bevyengine/bevy/pull/9281
[9282]: https://github.com/bevyengine/bevy/pull/9282
[9285]: https://github.com/bevyengine/bevy/pull/9285
[9288]: https://github.com/bevyengine/bevy/pull/9288
[9290]: https://github.com/bevyengine/bevy/pull/9290
[9291]: https://github.com/bevyengine/bevy/pull/9291
[9293]: https://github.com/bevyengine/bevy/pull/9293
[9295]: https://github.com/bevyengine/bevy/pull/9295
[9297]: https://github.com/bevyengine/bevy/pull/9297
[9301]: https://github.com/bevyengine/bevy/pull/9301
[9302]: https://github.com/bevyengine/bevy/pull/9302
[9306]: https://github.com/bevyengine/bevy/pull/9306
[9310]: https://github.com/bevyengine/bevy/pull/9310
[9311]: https://github.com/bevyengine/bevy/pull/9311
[9312]: https://github.com/bevyengine/bevy/pull/9312
[9313]: https://github.com/bevyengine/bevy/pull/9313
[9315]: https://github.com/bevyengine/bevy/pull/9315
[9320]: https://github.com/bevyengine/bevy/pull/9320
[9322]: https://github.com/bevyengine/bevy/pull/9322
[9326]: https://github.com/bevyengine/bevy/pull/9326
[9327]: https://github.com/bevyengine/bevy/pull/9327
[9329]: https://github.com/bevyengine/bevy/pull/9329
[9331]: https://github.com/bevyengine/bevy/pull/9331
[9332]: https://github.com/bevyengine/bevy/pull/9332
[9336]: https://github.com/bevyengine/bevy/pull/9336
[9338]: https://github.com/bevyengine/bevy/pull/9338
[9343]: https://github.com/bevyengine/bevy/pull/9343
[9344]: https://github.com/bevyengine/bevy/pull/9344
[9345]: https://github.com/bevyengine/bevy/pull/9345
[9346]: https://github.com/bevyengine/bevy/pull/9346
[9348]: https://github.com/bevyengine/bevy/pull/9348
[9351]: https://github.com/bevyengine/bevy/pull/9351
[9355]: https://github.com/bevyengine/bevy/pull/9355
[9360]: https://github.com/bevyengine/bevy/pull/9360
[9361]: https://github.com/bevyengine/bevy/pull/9361
[9364]: https://github.com/bevyengine/bevy/pull/9364
[9366]: https://github.com/bevyengine/bevy/pull/9366
[9370]: https://github.com/bevyengine/bevy/pull/9370
[9371]: https://github.com/bevyengine/bevy/pull/9371
[9372]: https://github.com/bevyengine/bevy/pull/9372
[9373]: https://github.com/bevyengine/bevy/pull/9373
[9383]: https://github.com/bevyengine/bevy/pull/9383
[9385]: https://github.com/bevyengine/bevy/pull/9385
[9387]: https://github.com/bevyengine/bevy/pull/9387
[9388]: https://github.com/bevyengine/bevy/pull/9388
[9390]: https://github.com/bevyengine/bevy/pull/9390
[9392]: https://github.com/bevyengine/bevy/pull/9392
[9394]: https://github.com/bevyengine/bevy/pull/9394
[9396]: https://github.com/bevyengine/bevy/pull/9396
[9399]: https://github.com/bevyengine/bevy/pull/9399
[9404]: https://github.com/bevyengine/bevy/pull/9404
[9406]: https://github.com/bevyengine/bevy/pull/9406
[9407]: https://github.com/bevyengine/bevy/pull/9407
[9416]: https://github.com/bevyengine/bevy/pull/9416
[9418]: https://github.com/bevyengine/bevy/pull/9418
[9419]: https://github.com/bevyengine/bevy/pull/9419
[9421]: https://github.com/bevyengine/bevy/pull/9421
[9427]: https://github.com/bevyengine/bevy/pull/9427
[9428]: https://github.com/bevyengine/bevy/pull/9428
[9429]: https://github.com/bevyengine/bevy/pull/9429
[9431]: https://github.com/bevyengine/bevy/pull/9431
[9436]: https://github.com/bevyengine/bevy/pull/9436
[9444]: https://github.com/bevyengine/bevy/pull/9444
[9446]: https://github.com/bevyengine/bevy/pull/9446
[9448]: https://github.com/bevyengine/bevy/pull/9448
[9451]: https://github.com/bevyengine/bevy/pull/9451
[9453]: https://github.com/bevyengine/bevy/pull/9453
[9456]: https://github.com/bevyengine/bevy/pull/9456
[9460]: https://github.com/bevyengine/bevy/pull/9460
[9461]: https://github.com/bevyengine/bevy/pull/9461
[9462]: https://github.com/bevyengine/bevy/pull/9462
[9463]: https://github.com/bevyengine/bevy/pull/9463
[9464]: https://github.com/bevyengine/bevy/pull/9464
[9467]: https://github.com/bevyengine/bevy/pull/9467
[9468]: https://github.com/bevyengine/bevy/pull/9468
[9469]: https://github.com/bevyengine/bevy/pull/9469
[9470]: https://github.com/bevyengine/bevy/pull/9470
[9479]: https://github.com/bevyengine/bevy/pull/9479
[9480]: https://github.com/bevyengine/bevy/pull/9480
[9481]: https://github.com/bevyengine/bevy/pull/9481
[9482]: https://github.com/bevyengine/bevy/pull/9482
[9484]: https://github.com/bevyengine/bevy/pull/9484
[9485]: https://github.com/bevyengine/bevy/pull/9485
[9486]: https://github.com/bevyengine/bevy/pull/9486
[9489]: https://github.com/bevyengine/bevy/pull/9489
[9490]: https://github.com/bevyengine/bevy/pull/9490
[9493]: https://github.com/bevyengine/bevy/pull/9493
[9497]: https://github.com/bevyengine/bevy/pull/9497
[9505]: https://github.com/bevyengine/bevy/pull/9505
[9506]: https://github.com/bevyengine/bevy/pull/9506
[9513]: https://github.com/bevyengine/bevy/pull/9513
[9514]: https://github.com/bevyengine/bevy/pull/9514
[9516]: https://github.com/bevyengine/bevy/pull/9516
[9518]: https://github.com/bevyengine/bevy/pull/9518
[9528]: https://github.com/bevyengine/bevy/pull/9528
[9529]: https://github.com/bevyengine/bevy/pull/9529
[9539]: https://github.com/bevyengine/bevy/pull/9539
[9542]: https://github.com/bevyengine/bevy/pull/9542
[9545]: https://github.com/bevyengine/bevy/pull/9545
[9547]: https://github.com/bevyengine/bevy/pull/9547
[9548]: https://github.com/bevyengine/bevy/pull/9548
[9551]: https://github.com/bevyengine/bevy/pull/9551
[9553]: https://github.com/bevyengine/bevy/pull/9553
[9554]: https://github.com/bevyengine/bevy/pull/9554
[9555]: https://github.com/bevyengine/bevy/pull/9555
[9562]: https://github.com/bevyengine/bevy/pull/9562
[9565]: https://github.com/bevyengine/bevy/pull/9565
[9566]: https://github.com/bevyengine/bevy/pull/9566
[9568]: https://github.com/bevyengine/bevy/pull/9568
[9576]: https://github.com/bevyengine/bevy/pull/9576
[9577]: https://github.com/bevyengine/bevy/pull/9577
[9579]: https://github.com/bevyengine/bevy/pull/9579
[9581]: https://github.com/bevyengine/bevy/pull/9581
[9583]: https://github.com/bevyengine/bevy/pull/9583
[9587]: https://github.com/bevyengine/bevy/pull/9587
[9588]: https://github.com/bevyengine/bevy/pull/9588
[9589]: https://github.com/bevyengine/bevy/pull/9589
[9592]: https://github.com/bevyengine/bevy/pull/9592
[9596]: https://github.com/bevyengine/bevy/pull/9596
[9597]: https://github.com/bevyengine/bevy/pull/9597
[9598]: https://github.com/bevyengine/bevy/pull/9598
[9600]: https://github.com/bevyengine/bevy/pull/9600
[9604]: https://github.com/bevyengine/bevy/pull/9604
[9609]: https://github.com/bevyengine/bevy/pull/9609
[9610]: https://github.com/bevyengine/bevy/pull/9610
[9611]: https://github.com/bevyengine/bevy/pull/9611
[9612]: https://github.com/bevyengine/bevy/pull/9612
[9613]: https://github.com/bevyengine/bevy/pull/9613
[9614]: https://github.com/bevyengine/bevy/pull/9614
[9617]: https://github.com/bevyengine/bevy/pull/9617
[9619]: https://github.com/bevyengine/bevy/pull/9619
[9621]: https://github.com/bevyengine/bevy/pull/9621
[9626]: https://github.com/bevyengine/bevy/pull/9626
[9629]: https://github.com/bevyengine/bevy/pull/9629
[9630]: https://github.com/bevyengine/bevy/pull/9630
[9631]: https://github.com/bevyengine/bevy/pull/9631
[9637]: https://github.com/bevyengine/bevy/pull/9637
[9638]: https://github.com/bevyengine/bevy/pull/9638
[9640]: https://github.com/bevyengine/bevy/pull/9640
[9646]: https://github.com/bevyengine/bevy/pull/9646
[9648]: https://github.com/bevyengine/bevy/pull/9648
[9650]: https://github.com/bevyengine/bevy/pull/9650
[9653]: https://github.com/bevyengine/bevy/pull/9653
[9657]: https://github.com/bevyengine/bevy/pull/9657
[9659]: https://github.com/bevyengine/bevy/pull/9659
[9662]: https://github.com/bevyengine/bevy/pull/9662
[9665]: https://github.com/bevyengine/bevy/pull/9665
[9666]: https://github.com/bevyengine/bevy/pull/9666
[9669]: https://github.com/bevyengine/bevy/pull/9669
[9672]: https://github.com/bevyengine/bevy/pull/9672
[9673]: https://github.com/bevyengine/bevy/pull/9673
[9674]: https://github.com/bevyengine/bevy/pull/9674
[9675]: https://github.com/bevyengine/bevy/pull/9675
[9677]: https://github.com/bevyengine/bevy/pull/9677
[9679]: https://github.com/bevyengine/bevy/pull/9679
[9684]: https://github.com/bevyengine/bevy/pull/9684
[9685]: https://github.com/bevyengine/bevy/pull/9685
[9686]: https://github.com/bevyengine/bevy/pull/9686
[9692]: https://github.com/bevyengine/bevy/pull/9692
[9694]: https://github.com/bevyengine/bevy/pull/9694
[9697]: https://github.com/bevyengine/bevy/pull/9697
[9699]: https://github.com/bevyengine/bevy/pull/9699
[9704]: https://github.com/bevyengine/bevy/pull/9704
[9705]: https://github.com/bevyengine/bevy/pull/9705
[9712]: https://github.com/bevyengine/bevy/pull/9712
[9716]: https://github.com/bevyengine/bevy/pull/9716
[9720]: https://github.com/bevyengine/bevy/pull/9720
[9726]: https://github.com/bevyengine/bevy/pull/9726
[9729]: https://github.com/bevyengine/bevy/pull/9729
[9733]: https://github.com/bevyengine/bevy/pull/9733
[9734]: https://github.com/bevyengine/bevy/pull/9734
[9736]: https://github.com/bevyengine/bevy/pull/9736
[9737]: https://github.com/bevyengine/bevy/pull/9737
[9739]: https://github.com/bevyengine/bevy/pull/9739
[9741]: https://github.com/bevyengine/bevy/pull/9741
[9742]: https://github.com/bevyengine/bevy/pull/9742
[9743]: https://github.com/bevyengine/bevy/pull/9743
[9744]: https://github.com/bevyengine/bevy/pull/9744
[9748]: https://github.com/bevyengine/bevy/pull/9748
[9749]: https://github.com/bevyengine/bevy/pull/9749
[9751]: https://github.com/bevyengine/bevy/pull/9751
[9752]: https://github.com/bevyengine/bevy/pull/9752
[9753]: https://github.com/bevyengine/bevy/pull/9753
[9756]: https://github.com/bevyengine/bevy/pull/9756
[9757]: https://github.com/bevyengine/bevy/pull/9757
[9759]: https://github.com/bevyengine/bevy/pull/9759
[9767]: https://github.com/bevyengine/bevy/pull/9767
[9769]: https://github.com/bevyengine/bevy/pull/9769
[9778]: https://github.com/bevyengine/bevy/pull/9778
[9779]: https://github.com/bevyengine/bevy/pull/9779
[9781]: https://github.com/bevyengine/bevy/pull/9781
[9784]: https://github.com/bevyengine/bevy/pull/9784
[9785]: https://github.com/bevyengine/bevy/pull/9785
[9794]: https://github.com/bevyengine/bevy/pull/9794
[9795]: https://github.com/bevyengine/bevy/pull/9795
[9796]: https://github.com/bevyengine/bevy/pull/9796
[9800]: https://github.com/bevyengine/bevy/pull/9800
[9801]: https://github.com/bevyengine/bevy/pull/9801
[9803]: https://github.com/bevyengine/bevy/pull/9803
[9804]: https://github.com/bevyengine/bevy/pull/9804
[9807]: https://github.com/bevyengine/bevy/pull/9807
[9812]: https://github.com/bevyengine/bevy/pull/9812
[9814]: https://github.com/bevyengine/bevy/pull/9814
[9818]: https://github.com/bevyengine/bevy/pull/9818
[9820]: https://github.com/bevyengine/bevy/pull/9820
[9823]: https://github.com/bevyengine/bevy/pull/9823
[9824]: https://github.com/bevyengine/bevy/pull/9824
[9825]: https://github.com/bevyengine/bevy/pull/9825
[9826]: https://github.com/bevyengine/bevy/pull/9826
[9829]: https://github.com/bevyengine/bevy/pull/9829
[9830]: https://github.com/bevyengine/bevy/pull/9830
[9833]: https://github.com/bevyengine/bevy/pull/9833
[9834]: https://github.com/bevyengine/bevy/pull/9834
[9835]: https://github.com/bevyengine/bevy/pull/9835
[9836]: https://github.com/bevyengine/bevy/pull/9836
[9839]: https://github.com/bevyengine/bevy/pull/9839
[9840]: https://github.com/bevyengine/bevy/pull/9840
[9842]: https://github.com/bevyengine/bevy/pull/9842
[9844]: https://github.com/bevyengine/bevy/pull/9844
[9845]: https://github.com/bevyengine/bevy/pull/9845
[9846]: https://github.com/bevyengine/bevy/pull/9846
[9847]: https://github.com/bevyengine/bevy/pull/9847
[9849]: https://github.com/bevyengine/bevy/pull/9849
[9850]: https://github.com/bevyengine/bevy/pull/9850
[9851]: https://github.com/bevyengine/bevy/pull/9851
[9853]: https://github.com/bevyengine/bevy/pull/9853
[9861]: https://github.com/bevyengine/bevy/pull/9861
[9865]: https://github.com/bevyengine/bevy/pull/9865
[9867]: https://github.com/bevyengine/bevy/pull/9867
[9870]: https://github.com/bevyengine/bevy/pull/9870
[9871]: https://github.com/bevyengine/bevy/pull/9871
[9872]: https://github.com/bevyengine/bevy/pull/9872
[9873]: https://github.com/bevyengine/bevy/pull/9873
[9878]: https://github.com/bevyengine/bevy/pull/9878
[9879]: https://github.com/bevyengine/bevy/pull/9879
[9881]: https://github.com/bevyengine/bevy/pull/9881
[9882]: https://github.com/bevyengine/bevy/pull/9882
[9885]: https://github.com/bevyengine/bevy/pull/9885
[9895]: https://github.com/bevyengine/bevy/pull/9895
[9899]: https://github.com/bevyengine/bevy/pull/9899
[9900]: https://github.com/bevyengine/bevy/pull/9900
[9903]: https://github.com/bevyengine/bevy/pull/9903
[9909]: https://github.com/bevyengine/bevy/pull/9909
[9912]: https://github.com/bevyengine/bevy/pull/9912
[9913]: https://github.com/bevyengine/bevy/pull/9913
[9919]: https://github.com/bevyengine/bevy/pull/9919
[9922]: https://github.com/bevyengine/bevy/pull/9922
[9923]: https://github.com/bevyengine/bevy/pull/9923
[9925]: https://github.com/bevyengine/bevy/pull/9925
[9927]: https://github.com/bevyengine/bevy/pull/9927
[9931]: https://github.com/bevyengine/bevy/pull/9931
[9933]: https://github.com/bevyengine/bevy/pull/9933
[9934]: https://github.com/bevyengine/bevy/pull/9934
[9935]: https://github.com/bevyengine/bevy/pull/9935
[9936]: https://github.com/bevyengine/bevy/pull/9936
[9937]: https://github.com/bevyengine/bevy/pull/9937
[9939]: https://github.com/bevyengine/bevy/pull/9939
[9941]: https://github.com/bevyengine/bevy/pull/9941
[9945]: https://github.com/bevyengine/bevy/pull/9945
[9949]: https://github.com/bevyengine/bevy/pull/9949
[9950]: https://github.com/bevyengine/bevy/pull/9950
[9951]: https://github.com/bevyengine/bevy/pull/9951
[9956]: https://github.com/bevyengine/bevy/pull/9956
[9958]: https://github.com/bevyengine/bevy/pull/9958
[9959]: https://github.com/bevyengine/bevy/pull/9959
[9961]: https://github.com/bevyengine/bevy/pull/9961
[9963]: https://github.com/bevyengine/bevy/pull/9963
[9965]: https://github.com/bevyengine/bevy/pull/9965
[9966]: https://github.com/bevyengine/bevy/pull/9966
[9974]: https://github.com/bevyengine/bevy/pull/9974
[9981]: https://github.com/bevyengine/bevy/pull/9981
[9982]: https://github.com/bevyengine/bevy/pull/9982
[9984]: https://github.com/bevyengine/bevy/pull/9984
[9989]: https://github.com/bevyengine/bevy/pull/9989
[9990]: https://github.com/bevyengine/bevy/pull/9990
[9991]: https://github.com/bevyengine/bevy/pull/9991
[9992]: https://github.com/bevyengine/bevy/pull/9992
[9993]: https://github.com/bevyengine/bevy/pull/9993
[9994]: https://github.com/bevyengine/bevy/pull/9994
[9998]: https://github.com/bevyengine/bevy/pull/9998
[10001]: https://github.com/bevyengine/bevy/pull/10001
[10002]: https://github.com/bevyengine/bevy/pull/10002
[10003]: https://github.com/bevyengine/bevy/pull/10003
[10008]: https://github.com/bevyengine/bevy/pull/10008
[10010]: https://github.com/bevyengine/bevy/pull/10010
[10012]: https://github.com/bevyengine/bevy/pull/10012
[10020]: https://github.com/bevyengine/bevy/pull/10020
[10022]: https://github.com/bevyengine/bevy/pull/10022
[10023]: https://github.com/bevyengine/bevy/pull/10023
[10026]: https://github.com/bevyengine/bevy/pull/10026
[10030]: https://github.com/bevyengine/bevy/pull/10030
[10031]: https://github.com/bevyengine/bevy/pull/10031
[10035]: https://github.com/bevyengine/bevy/pull/10035
[10044]: https://github.com/bevyengine/bevy/pull/10044
[10051]: https://github.com/bevyengine/bevy/pull/10051
[10053]: https://github.com/bevyengine/bevy/pull/10053
[10056]: https://github.com/bevyengine/bevy/pull/10056
[10058]: https://github.com/bevyengine/bevy/pull/10058
[10065]: https://github.com/bevyengine/bevy/pull/10065
[10068]: https://github.com/bevyengine/bevy/pull/10068
[10070]: https://github.com/bevyengine/bevy/pull/10070
[10074]: https://github.com/bevyengine/bevy/pull/10074
[10078]: https://github.com/bevyengine/bevy/pull/10078
[10079]: https://github.com/bevyengine/bevy/pull/10079
[10080]: https://github.com/bevyengine/bevy/pull/10080
[10090]: https://github.com/bevyengine/bevy/pull/10090
[10092]: https://github.com/bevyengine/bevy/pull/10092
[10100]: https://github.com/bevyengine/bevy/pull/10100
[10103]: https://github.com/bevyengine/bevy/pull/10103
[10105]: https://github.com/bevyengine/bevy/pull/10105
[10109]: https://github.com/bevyengine/bevy/pull/10109
[10111]: https://github.com/bevyengine/bevy/pull/10111
[10117]: https://github.com/bevyengine/bevy/pull/10117
[10119]: https://github.com/bevyengine/bevy/pull/10119
[10121]: https://github.com/bevyengine/bevy/pull/10121
[10123]: https://github.com/bevyengine/bevy/pull/10123
[10124]: https://github.com/bevyengine/bevy/pull/10124
[10128]: https://github.com/bevyengine/bevy/pull/10128
[10132]: https://github.com/bevyengine/bevy/pull/10132
[10136]: https://github.com/bevyengine/bevy/pull/10136
[10142]: https://github.com/bevyengine/bevy/pull/10142
[10143]: https://github.com/bevyengine/bevy/pull/10143
[10144]: https://github.com/bevyengine/bevy/pull/10144
[10145]: https://github.com/bevyengine/bevy/pull/10145
[10148]: https://github.com/bevyengine/bevy/pull/10148
[10150]: https://github.com/bevyengine/bevy/pull/10150
[10151]: https://github.com/bevyengine/bevy/pull/10151
[10152]: https://github.com/bevyengine/bevy/pull/10152
[10156]: https://github.com/bevyengine/bevy/pull/10156
[10158]: https://github.com/bevyengine/bevy/pull/10158
[10160]: https://github.com/bevyengine/bevy/pull/10160
[10161]: https://github.com/bevyengine/bevy/pull/10161
[10163]: https://github.com/bevyengine/bevy/pull/10163
[10168]: https://github.com/bevyengine/bevy/pull/10168
[10171]: https://github.com/bevyengine/bevy/pull/10171
[10173]: https://github.com/bevyengine/bevy/pull/10173
[10174]: https://github.com/bevyengine/bevy/pull/10174
[10178]: https://github.com/bevyengine/bevy/pull/10178
[10179]: https://github.com/bevyengine/bevy/pull/10179
[10180]: https://github.com/bevyengine/bevy/pull/10180
[10182]: https://github.com/bevyengine/bevy/pull/10182
[10184]: https://github.com/bevyengine/bevy/pull/10184
[10185]: https://github.com/bevyengine/bevy/pull/10185
[10186]: https://github.com/bevyengine/bevy/pull/10186
[10189]: https://github.com/bevyengine/bevy/pull/10189
[10191]: https://github.com/bevyengine/bevy/pull/10191
[10194]: https://github.com/bevyengine/bevy/pull/10194
[10195]: https://github.com/bevyengine/bevy/pull/10195
[10196]: https://github.com/bevyengine/bevy/pull/10196
[10197]: https://github.com/bevyengine/bevy/pull/10197
[10198]: https://github.com/bevyengine/bevy/pull/10198
[10200]: https://github.com/bevyengine/bevy/pull/10200
[10202]: https://github.com/bevyengine/bevy/pull/10202
[10204]: https://github.com/bevyengine/bevy/pull/10204
[10206]: https://github.com/bevyengine/bevy/pull/10206
[10208]: https://github.com/bevyengine/bevy/pull/10208
[10210]: https://github.com/bevyengine/bevy/pull/10210
[10211]: https://github.com/bevyengine/bevy/pull/10211
[10217]: https://github.com/bevyengine/bevy/pull/10217
[10221]: https://github.com/bevyengine/bevy/pull/10221
[10222]: https://github.com/bevyengine/bevy/pull/10222
[10223]: https://github.com/bevyengine/bevy/pull/10223
[10226]: https://github.com/bevyengine/bevy/pull/10226
[10227]: https://github.com/bevyengine/bevy/pull/10227
[10230]: https://github.com/bevyengine/bevy/pull/10230
[10238]: https://github.com/bevyengine/bevy/pull/10238
[10240]: https://github.com/bevyengine/bevy/pull/10240
[10249]: https://github.com/bevyengine/bevy/pull/10249
[10251]: https://github.com/bevyengine/bevy/pull/10251
[10252]: https://github.com/bevyengine/bevy/pull/10252
[10253]: https://github.com/bevyengine/bevy/pull/10253
[10254]: https://github.com/bevyengine/bevy/pull/10254
[10259]: https://github.com/bevyengine/bevy/pull/10259
[10262]: https://github.com/bevyengine/bevy/pull/10262
[10264]: https://github.com/bevyengine/bevy/pull/10264
[10270]: https://github.com/bevyengine/bevy/pull/10270
[10271]: https://github.com/bevyengine/bevy/pull/10271
[10275]: https://github.com/bevyengine/bevy/pull/10275
[10276]: https://github.com/bevyengine/bevy/pull/10276
[10279]: https://github.com/bevyengine/bevy/pull/10279
[10286]: https://github.com/bevyengine/bevy/pull/10286
[10289]: https://github.com/bevyengine/bevy/pull/10289
[10294]: https://github.com/bevyengine/bevy/pull/10294
[10295]: https://github.com/bevyengine/bevy/pull/10295
[10297]: https://github.com/bevyengine/bevy/pull/10297
[10299]: https://github.com/bevyengine/bevy/pull/10299
[10303]: https://github.com/bevyengine/bevy/pull/10303
[10304]: https://github.com/bevyengine/bevy/pull/10304
[10306]: https://github.com/bevyengine/bevy/pull/10306
[10310]: https://github.com/bevyengine/bevy/pull/10310
[10311]: https://github.com/bevyengine/bevy/pull/10311
[10312]: https://github.com/bevyengine/bevy/pull/10312
[10326]: https://github.com/bevyengine/bevy/pull/10326
[10330]: https://github.com/bevyengine/bevy/pull/10330
[10339]: https://github.com/bevyengine/bevy/pull/10339
[10341]: https://github.com/bevyengine/bevy/pull/10341
[10345]: https://github.com/bevyengine/bevy/pull/10345
[10346]: https://github.com/bevyengine/bevy/pull/10346
[10352]: https://github.com/bevyengine/bevy/pull/10352
[10356]: https://github.com/bevyengine/bevy/pull/10356
[10358]: https://github.com/bevyengine/bevy/pull/10358
[10360]: https://github.com/bevyengine/bevy/pull/10360
## Version 0.11.0 (2023-07-09)
### Rendering
- [Webgpu support][8336]
- [improve shader import model][5703]
- [Screen Space Ambient Occlusion (SSAO) MVP][7402]
- [Temporal Antialiasing (TAA)][7291]
- [Immediate Mode Line/Gizmo Drawing][6529]
- [Make render graph slots optional for most cases][8109]
- [Split opaque and transparent phases][8090]
- [Built-in skybox][8275]
- [Add parallax mapping to bevy PBR][5928]
- [Add port of AMD's Robust Contrast Adaptive Sharpening][7422]
- [Add RenderGraphApp to simplify adding render nodes][8007]
- [Add screenshot api][7163]
- [Add morph targets][8158]
- [Screenshots in wasm][8455]
- [Add ViewNode to simplify render node management][8118]
- [Bias texture mipmaps][7614]
- [Instanced line rendering for gizmos based on `bevy_polyline`][8427]
- [Add `RenderTarget::TextureView`][8042]
- [Change default tonemapping method][8685]
- [Allow custom depth texture usage][6815]
- [Use the prepass normal texture in main pass when possible][8231]
- [Left-handed y-up cubemap coordinates][8122]
- [Allow SPIR-V shaders to process when shader defs are present][7772]
- [Remove unnecesssary values Vec from DynamicUniformBuffer and DynamicStorageBuffer][8299]
- [Add `MAY_DISCARD` shader def, enabling early depth tests for most cases][6697]
- [Add `Aabb` calculation for `Sprite`, `TextureAtlasSprite` and `Mesh2d`][7885]
- [Color::Lcha constructors][8041]
- [Fix Color::as_rgba_linear for Color::Lcha][8040]
- [Added Globals struct to prepass shader][8070]
- [Derive Copy and Clone for Collision][8121]
- [Fix crash when enabling HDR on 2d cameras][8151]
- [Dither fix][7977]
- [Compute `vertex_count` for indexed meshes on `GpuMesh`][8460]
- [Run update_previous_view_projections in PreUpdate schedule][9024]
- [Added `WebP` image format support][8220]
- [Add support for pnm textures][8601]
- [fix invalid bone weights][8316]
- [Fix pbr shader breaking on missing UVs][8412]
- [Fix Plane UVs / texture flip][8878]
- [Fix look_to resulting in NaN rotations][7817]
- [Fix look_to variable naming][8627]
- [Fix segfault with 2d gizmos][8223]
- [Use RenderGraphApp in more places][8298]
- [Fix viewport change detection][8323]
- [Remove capacity fields from all Buffer wrapper types][8301]
- [Sync pbr_types.wgsl StandardMaterial values][8380]
- [Avoid spawning gizmo meshes when no gizmos are being drawn][8180]
- [Use a consistent seed for AABB gizmo colors][9030]
- [bevy_pbr: Do not cull meshes without Aabbs from cascades][8444]
- [Handle vertex_uvs if they are present in default prepass fragment shader][8330]
- [Changed (Vec2, Vec2) to Rect in Camera::logical_viewport_rect][7867]
- [make glsl and spirv support optional][8491]
- [fix prepass normal_mapping][8978]
- [conversions between [u8; 4] and Color][8564]
- [Add option to disable gizmo rendering for specific cameras][8952]
- [Fix morph target prepass shader][9013]
- [Fix bloom wasm support][8631]
- [Fix black spots appearing due to NANs when SSAO is enabled][8926]
- [fix normal prepass][8890]
- [Refs #8975 -- Add return to RenderDevice::poll()][8977]
- [Fix WebGL mode for Adreno GPUs][8508]
- [Fix parallax mapping][9003]
- [Added Vec append to BufferVec - Issue #3531][8575]
- [Fix CAS shader with explicit FullscreenVertexOutput import][8993]
- [Make `TextureAtlas::texture_handles` `pub` instead of `pub(crate)` (#8633)][8643]
- [Make Material2d pipeline systems public][8642]
- [Fix screenshots on Wayland + Nvidia][8701]
- [Apply codebase changes in preparation for `StandardMaterial` transmission][8704]
- [Use ViewNode for TAA][8732]
- [Change Camera3dBundle::tonemapping to Default][8753]
- [Remove `Component` derive for AlphaMode][8804]
- [Make setup of Opaque3dPrepass and AlphaMask3dPrepass phase items consistent with others][8408]
- [Rename `Plane` struct to `HalfSpace`][8744]
- [Expand `FallbackImage` to include a `GpuImage` for each possible `TextureViewDimension`][6974]
- [Cascaded shadow maps: Fix prepass ortho depth clamping][8877]
- [Fix gizmos in WebGPU][8910]
- [Fix AsBindGroup derive, texture attribute, visibility flag parsing][8868]
- [Disable camera on window close][8802]
- [Reflect `Component` and `Default` of `BloomSettings`][8283]
- [Add Reflection Macros to TextureAtlasSprite][8428]
- [Implement Reflect on NoFrustumCulling][8801]
### Audio
- [ECS-based API redesign][8424]
- [Ability to set a Global Volume][7706]
- [Expose `AudioSink::empty()`][8145]
### Diagnostics
- [Allow systems using Diagnostics to run in parallel][8677]
- [add a feature for memory tracing with tracy][8272]
- [Re-add the "frame" span for tracy comparisons][8362]
- [log to stderr instead of stdout][8886]
### Scenes
- [bevy_scene: Add SceneFilter][6793]
- [(De) serialize resources in scenes][6846]
- [add position to scene errors][8065]
- [Bugfix: Scene reload fix (nonbreaking)][7951]
- [avoid panic with parented scenes on deleted entities][8512]
### Transform + Hierarchy
- [Fix transform propagation of orphaned entities][7264]
### Gizmo
- [Add a bounding box gizmo][8468]
- [Added `arc_2d` function for gizmos][8448]
- [Use AHash to get color from entity in bevy_gizmos][8960]
- [do not crash when rendering only one gizmo][8434]
### Reflection
- [reflect: stable type path v2][7184]
- [bevy_reflect: Better proxies][6971]
- [bevy_reflect: FromReflect Ergonomics Implementation][6056]
- [bevy_reflect: Allow `#[reflect(default)]` on enum variant fields][8514]
- [Add FromReflect where Reflect is used][8776]
- [Add get_at_mut to bevy_reflect::Map trait][8691]
- [Reflect now requires DynamicTypePath. Remove Reflect::get_type_path()][8764]
- [bevy_ui: Add `FromReflect` derives][8495]
- [Add Reflect and FromReflect for AssetPath][8531]
- [bevy_reflect: Fix trailing comma breaking derives][8014]
- [Fix Box dyn Reflect struct with a hashmap in it panicking when clone_value is called on it][8184]
- [bevy_reflect: Add `ReflectFromReflect` to the prelude][8496]
- [bevy_reflect: Allow construction of MapIter outside of the bevy_reflect crate.][8723]
- [bevy_reflect: Disambiguate type bounds in where clauses.][8761]
- [adding reflection for Cow<'static, [T]>][7454]
- [Do not require mut on ParsedPath::element_mut][8891]
- [Reflect UUID][8905]
- [Don't ignore additional entries in `UntypedReflectDeserializerVisitor`][7112]
- [Construct Box dyn Reflect from world for ReflectComponent][7407]
- [reflect: avoid deadlock in GenericTypeCell][8957]
### App
- [Allow tuples and single plugins in `add_plugins`, deprecate `add_plugin`][8097]
- [Merge ScheduleRunnerSettings into ScheduleRunnerPlugin][8585]
- [correctly setup everything in the default run_once runner][8740]
- [Fix `Plugin::build` detection][8103]
- [Fix not calling App::finish and App::cleanup in `ScheduleRunnerPlugin`][9054]
- [Relaxed runner type from Fn to FnOnce][8961]
- [Relax FnMut to FnOnce in app::edit_schedule][8982]
### Windowing + Reflection
- [Register missing types in bevy_window][7993]
- [bevy_reflect: implement Reflect for SmolStr][8771]
### Hierarchy
- [fix panic when moving child][8346]
- [Remove `Children` component when calling `despawn_descendants`][8476]
- [Change `despawn_descendants` to return `&mut Self`][8928]
### Time
- [Fix timer with zero duration][8467]
### Assets
- [Delay asset hot reloading][8503]
- [Add support for custom glTF vertex attributes.][5370]
- [Fix panic when using debug_asset_server][8485]
- [`unused_variables` warning when building with `filesystem_watcher` feature disabled][7938]
- [bevy_asset: Add `LoadContext::get_handle_untyped`][8470]
### Windowing
- [Move cursor position to internal state][7988]
- [Set cursor hittest during window creation][7966]
- [do not set hit test unconditionally on window creation][7996]
- [Add winit's `wayland-csd-adwaita` feature to Bevy's `wayland` feature][8722]
- [Support to set window theme and expose system window theme changed event][8593]
- [Touchpad magnify and rotate events][8791]
- [Fix windows not being centered properly when system interface is scaled][8903]
- [Expose WindowDestroyed events][9016]
### Animation
- [Register bevy_animation::PlayingAnimation][9023]
### UI
- [Ui Node Borders][7795]
- [Add CSS Grid support to `bevy_ui`][8026]
- [`text_system` split][7779]
- [Replace the local text queues in the text systems with flags stored in a component][8549]
- [`NoWrap` `Text` feature][8947]
- [add a default font][8445]
- [UI texture atlas support][8822]
- [Improved UI render batching][8793]
- [Consistent screen-space coordinates][8306]
- [`UiImage` helper functions][8199]
- [Perform text scaling calculations per text, not per glyph][7819]
- [Fix size of clipped text glyphs.][8197]
- [Apply scale factor to `ImageMeasure` sizes][8545]
- [Fix WebGPU error in "ui_pipeline" by adding a flat interpolate attribute][8933]
- [Rename Interaction::Clicked -> Interaction::Pressed][9027]
- [Flatten UI `Style` properties that use `Size` + remove `Size`][8548]
- [Split UI `Overflow` by axis][8095]
- [Add methods for calculating the size and postion of UI nodes][7930]
- [Skip the UV calculations for untextured UI nodes][7809]
- [Fix text measurement algorithm][8425]
- [Divide by UiScale when converting UI coordinates from physical to logical][8720]
- [`MeasureFunc` improvements][8402]
- [Expose sorting methods in `Children`][8522]
- [Fix min and max size using size value][7948]
- [Fix the `Text2d` text anchor's incorrect horizontal alignment][8019]
- [Remove `Val::Undefined`][7485]
- [`Val` viewport unit variants][8137]
- [Remove the corresponding measure from Taffy when a `CalculatedSize` component is removed.][8294]
- [`UiRect` axes constructor][7656]
- [Fix the UV calculations for clipped and flipped ImageNodes][8195]
- [Fix text systems broken when resolving merge conflicts in #8026][8422]
- [Allow `bevy_ui` crate to compile without the `text` feature enabled][8437]
- [Fix the double leaf node updates in `flex_node_system`][8264]
- [also import the default handle when feature disabled][8456]
- [`measure_text_system` text query fix][8466]
- [Fix panic in example: text_wrap_debug.rs][8497]
- [UI layout tree debug print][8521]
- [Fix `Node::physical_rect` and add a `physical_size` method][8551]
- [Perform `relative_cursor_position` calculation vectorwise in `ui_focus_system`][8795]
- [Add `UiRect::px()` and `UiRect::percent()` utils][8866]
- [Add missing dependencies to `bevy_text` feature][8920]
- [Remove "bevy_text" feature attributes on imports used by non-text systems][8907]
- [Growing UI nodes Fix][8931]
### ECS
- [Schedule-First: the new and improved add_systems][8079]
- [Add OnTransition schedule that is ran between OnExit and OnEnter][7936]
- [`run_if` for `SystemConfigs` via anonymous system sets][7676]
- [Remove OnUpdate system set][8260]
- [Rename apply_system_buffers to apply_deferred][8726]
- [Rename Command's "write" method to "apply"][8814]
- [Require `#[derive(Event)]` on all Events][7086]
- [Implement WorldQuery for EntityRef][6960]
- [Improve or-with disjoint checks][7085]
- [Add a method to run read-only systems using `&World`][8849]
- [Reduce branching when inserting components][8053]
- [Make `#[system_param(ignore)]` and `#[world_query(ignore)]` unnecessary][8030]
- [Remove `#[system_param(ignore)]` and `#[world_query(ignore)]`][8265]
- [Extend the `WorldQuery` macro to tuple structs][8119]
- [Make state private and only accessible through getter for State resource][8009]
- [implement `Deref` for `State<S>`][8668]
- [Inline more ECS functions][8083]
- [Add a `scope` API for world schedules][8387]
- [Simplify system piping and make it more flexible][8377]
- [Add `any_component_removed` condition][8326]
- [Use `UnsafeWorldCell` to increase code quality for `SystemParam`][8174]
- [Improve safety for the multi-threaded executor using `UnsafeWorldCell`][8292]
- [Migrate the rest of the engine to `UnsafeWorldCell`][8833]
- [Make the `Condition` trait generic][8721]
- [Add or_else combinator to run_conditions.rs][8714]
- [Add iter_many_manual QueryState method][8772]
- [Provide access to world storages via UnsafeWorldCell][8987]
- [Added Has T WorldQuery type][8844]
- [Add/fix `track_caller` attribute on panicking entity accessor methods][8951]
- [Increase type safety and clarity for change detection][7905]
- [Make `WorldQuery` meta types unnameable][7964]
- [Add a public constructor for `Mut<T>`][7931]
- [Remove ChangeTrackers][7902]
- [Derive Eq, PartialEq for Tick][9020]
- [Initialize empty schedules when calling `.in_schedule` if they do not already exist][7911]
- [Replace multiple calls to `add_system` with `add_systems`][8001]
- [don't panic on unknown ambiguity][7950]
- [add Clone to common conditions][8060]
- [Make BundleInfo's fields not pub(crate)][8068]
- [Pass query change ticks to `QueryParIter` instead of always using change ticks from `World`.][8029]
- [Remove redundant bounds check in `Entities::get`][8108]
- [Add World::try_run_schedule][8028]
- [change not implemation to custom system struct][8105]
- [Fix name conflicts caused by the `SystemParam` and `WorldQuery` macros][8012]
- [Check for conflicting accesses in `assert_is_system`][8154]
- [Fix field visibility for read-only `WorldQuery` types][8163]
- [`Or<T>` should be a new type of `PhantomData<T>`][8212]
- [Make standard commands more ergonomic (in niche cases)][8249]
- [Remove base set error variants of `ScheduleBuildError`][8269]
- [Replace some unsafe system executor code with safe code][8274]
- [Update `increment_change_tick` to return a strongly-typed `Tick`][8295]
- [Move event traces to detailed_trace!][7732]
- [Only trigger state transitons if `next_state != old_state`][8359]
- [Fix panics and docs when using World schedules][8364]
- [Improve warning for Send resources marked as non_send][8000]
- [Reorganize system modules][8419]
- [Fix boxed labels][8436]
- [Simplify world schedule methods][8403]
- [Just print out name string, not the entire Name struct][8494]
- [Manually implement common traits for `EventId`][8529]
- [Replace remaining uses of `&T, Changed<T>` with `Ref` in UI system queries][8567]
- [Rename `UnsafeWorldCell::read_change_tick`][8588]
- [Improve encapsulation for commands and add docs][8725]
- [Fix all_tuples + added docs.][8743]
- [Add `new` and `map` methods to `Ref`][8797]
- [Allow unsized types as mapped value in `Ref::map`][8817]
- [Implement `Clone` for `CombinatorSystem`][8826]
- [Add get_ref to EntityRef][8818]
- [Make `QueryParIter::for_each_unchecked` private][8848]
- [Simplify the `ComponentIdFor` type][8845]
- [Add last_changed_tick and added_tick to ComponentTicks][8803]
- [Require read-only queries in `QueryState::par_iter`][8832]
- [Fix any_component_removed][8939]
- [Deprecate type aliases for `WorldQuery::Fetch`][8843]
- [bevy_ecs: add untyped methods for inserting components and bundles][7204]
- [Move AppTypeRegistry to bevy_ecs][8901]
- [skip check change tick for apply_deferred systems][8760]
- [Split the bevy_ecs reflect.rs module][8834]
- [Make function pointers of ecs Reflect* public][8687]
### Rendering + Reflection + Scenes
- [fix: register Cascade in the TypeRegistry][8088]
### Tasks
- [Add optional single-threaded feature to bevy_ecs/bevy_tasks][6690]
### Math
- [Re-export glam_assert feature][8232]
- [Fix CubicCurve::iter_samples iteration count][8049]
- [Add integer equivalents for `Rect`][7984]
- [Add `CubicCurve::segment_count` + `iter_samples` adjustment][8711]
### Rendering + Assets + Meta
- [Add depending bevy features for higher level one][7855]
### ECS + Scenes
- [Make scene handling of entity references robust][7335]
- [Rename map_entities and map_specific_entities][7570]
### Util
- [bevy_derive: Add `#[deref]` attribute][8552]
### Input
- [Add gamepad rumble support to bevy_input][8398]
- [Rename keys like `LAlt` to `AltLeft`][8792]
- [Add window entity to mouse and keyboard events][8852]
- [Add get_unclamped to Axis][8871]
### Upgrades
- [Upgrade Taffy requirement to v0.3.5][7959]
- [Update ruzstd and basis universal][8622]
- [Updated to wgpu 0.16.0, wgpu-hal 0.16.0 and naga 0.12.0][8446]
- [Update sysinfo requirement from 0.28.1 to 0.29.0][8650]
- [Update libloading requirement from 0.7 to 0.8][8649]
- [update syn, encase, glam and hexasphere][8573]
- [Update android_log-sys requirement from 0.2.0 to 0.3.0][7925]
- [update bitflags to 2.3][8728]
- [Update ruzstd requirement from 0.3.1 to 0.4.0][8755]
- [Update notify requirement from 5.0.0 to 6.0.0][8757]
- [Bump hashbrown to 0.14][8904]
- [update ahash and hashbrown][8623]
- [Bump accesskit and accesskit_winit][8655]
### Examples
- [new example showcase tool][8561]
- [Adding a bezier curve example][8194]
- [Add low level post process example using a custom render pass][6909]
- [Add example to demonstrate manual generation and UV mapping of 3D mesh (generate_custom_mesh) solve #4922][8909]
- [Add `overflow_debug` example][8198]
- [UI text wrapping and `LineBreakOn` example][7761]
- [Size Constraints Example][7956]
- [UI Display and Visibility Example][7629]
[5370]: https://github.com/bevyengine/bevy/pull/5370
[5703]: https://github.com/bevyengine/bevy/pull/5703
[5928]: https://github.com/bevyengine/bevy/pull/5928
[6529]: https://github.com/bevyengine/bevy/pull/6529
[6697]: https://github.com/bevyengine/bevy/pull/6697
[6815]: https://github.com/bevyengine/bevy/pull/6815
[6846]: https://github.com/bevyengine/bevy/pull/6846
[6909]: https://github.com/bevyengine/bevy/pull/6909
[6960]: https://github.com/bevyengine/bevy/pull/6960
[6971]: https://github.com/bevyengine/bevy/pull/6971
[6974]: https://github.com/bevyengine/bevy/pull/6974
[7085]: https://github.com/bevyengine/bevy/pull/7085
[7086]: https://github.com/bevyengine/bevy/pull/7086
[7112]: https://github.com/bevyengine/bevy/pull/7112
[7163]: https://github.com/bevyengine/bevy/pull/7163
[7184]: https://github.com/bevyengine/bevy/pull/7184
[7204]: https://github.com/bevyengine/bevy/pull/7204
[7264]: https://github.com/bevyengine/bevy/pull/7264
[7291]: https://github.com/bevyengine/bevy/pull/7291
[7335]: https://github.com/bevyengine/bevy/pull/7335
[7402]: https://github.com/bevyengine/bevy/pull/7402
[7407]: https://github.com/bevyengine/bevy/pull/7407
[7422]: https://github.com/bevyengine/bevy/pull/7422
[7454]: https://github.com/bevyengine/bevy/pull/7454
[7485]: https://github.com/bevyengine/bevy/pull/7485
[7570]: https://github.com/bevyengine/bevy/pull/7570
[7614]: https://github.com/bevyengine/bevy/pull/7614
[7629]: https://github.com/bevyengine/bevy/pull/7629
[7656]: https://github.com/bevyengine/bevy/pull/7656
[7676]: https://github.com/bevyengine/bevy/pull/7676
[7706]: https://github.com/bevyengine/bevy/pull/7706
[7732]: https://github.com/bevyengine/bevy/pull/7732
[7761]: https://github.com/bevyengine/bevy/pull/7761
[7772]: https://github.com/bevyengine/bevy/pull/7772
[7779]: https://github.com/bevyengine/bevy/pull/7779
[7795]: https://github.com/bevyengine/bevy/pull/7795
[7809]: https://github.com/bevyengine/bevy/pull/7809
[7817]: https://github.com/bevyengine/bevy/pull/7817
[7819]: https://github.com/bevyengine/bevy/pull/7819
[7855]: https://github.com/bevyengine/bevy/pull/7855
[7867]: https://github.com/bevyengine/bevy/pull/7867
[7885]: https://github.com/bevyengine/bevy/pull/7885
[7902]: https://github.com/bevyengine/bevy/pull/7902
[7905]: https://github.com/bevyengine/bevy/pull/7905
[7911]: https://github.com/bevyengine/bevy/pull/7911
[7925]: https://github.com/bevyengine/bevy/pull/7925
[7930]: https://github.com/bevyengine/bevy/pull/7930
[7931]: https://github.com/bevyengine/bevy/pull/7931
[7936]: https://github.com/bevyengine/bevy/pull/7936
[7938]: https://github.com/bevyengine/bevy/pull/7938
[7948]: https://github.com/bevyengine/bevy/pull/7948
[7950]: https://github.com/bevyengine/bevy/pull/7950
[7951]: https://github.com/bevyengine/bevy/pull/7951
[7956]: https://github.com/bevyengine/bevy/pull/7956
[7959]: https://github.com/bevyengine/bevy/pull/7959
[7964]: https://github.com/bevyengine/bevy/pull/7964
[7966]: https://github.com/bevyengine/bevy/pull/7966
[7977]: https://github.com/bevyengine/bevy/pull/7977
[7984]: https://github.com/bevyengine/bevy/pull/7984
[7988]: https://github.com/bevyengine/bevy/pull/7988
[7993]: https://github.com/bevyengine/bevy/pull/7993
[7996]: https://github.com/bevyengine/bevy/pull/7996
[8000]: https://github.com/bevyengine/bevy/pull/8000
[8001]: https://github.com/bevyengine/bevy/pull/8001
[8007]: https://github.com/bevyengine/bevy/pull/8007
[8009]: https://github.com/bevyengine/bevy/pull/8009
[8012]: https://github.com/bevyengine/bevy/pull/8012
[8014]: https://github.com/bevyengine/bevy/pull/8014
[8019]: https://github.com/bevyengine/bevy/pull/8019
[8026]: https://github.com/bevyengine/bevy/pull/8026
[8028]: https://github.com/bevyengine/bevy/pull/8028
[8029]: https://github.com/bevyengine/bevy/pull/8029
[8030]: https://github.com/bevyengine/bevy/pull/8030
[8040]: https://github.com/bevyengine/bevy/pull/8040
[8041]: https://github.com/bevyengine/bevy/pull/8041
[8042]: https://github.com/bevyengine/bevy/pull/8042
[8049]: https://github.com/bevyengine/bevy/pull/8049
[8053]: https://github.com/bevyengine/bevy/pull/8053
[8060]: https://github.com/bevyengine/bevy/pull/8060
[8065]: https://github.com/bevyengine/bevy/pull/8065
[8068]: https://github.com/bevyengine/bevy/pull/8068
[8070]: https://github.com/bevyengine/bevy/pull/8070
[8079]: https://github.com/bevyengine/bevy/pull/8079
[8083]: https://github.com/bevyengine/bevy/pull/8083
[8088]: https://github.com/bevyengine/bevy/pull/8088
[8090]: https://github.com/bevyengine/bevy/pull/8090
[8095]: https://github.com/bevyengine/bevy/pull/8095
[8097]: https://github.com/bevyengine/bevy/pull/8097
[8103]: https://github.com/bevyengine/bevy/pull/8103
[8105]: https://github.com/bevyengine/bevy/pull/8105
[8108]: https://github.com/bevyengine/bevy/pull/8108
[8109]: https://github.com/bevyengine/bevy/pull/8109
[8118]: https://github.com/bevyengine/bevy/pull/8118
[8119]: https://github.com/bevyengine/bevy/pull/8119
[8121]: https://github.com/bevyengine/bevy/pull/8121
[8122]: https://github.com/bevyengine/bevy/pull/8122
[8137]: https://github.com/bevyengine/bevy/pull/8137
[8145]: https://github.com/bevyengine/bevy/pull/8145
[8151]: https://github.com/bevyengine/bevy/pull/8151
[8154]: https://github.com/bevyengine/bevy/pull/8154
[8158]: https://github.com/bevyengine/bevy/pull/8158
[8163]: https://github.com/bevyengine/bevy/pull/8163
[8174]: https://github.com/bevyengine/bevy/pull/8174
[8180]: https://github.com/bevyengine/bevy/pull/8180
[8184]: https://github.com/bevyengine/bevy/pull/8184
[8194]: https://github.com/bevyengine/bevy/pull/8194
[8195]: https://github.com/bevyengine/bevy/pull/8195
[8197]: https://github.com/bevyengine/bevy/pull/8197
[8198]: https://github.com/bevyengine/bevy/pull/8198
[8199]: https://github.com/bevyengine/bevy/pull/8199
[8212]: https://github.com/bevyengine/bevy/pull/8212
[8220]: https://github.com/bevyengine/bevy/pull/8220
[8223]: https://github.com/bevyengine/bevy/pull/8223
[8231]: https://github.com/bevyengine/bevy/pull/8231
[8232]: https://github.com/bevyengine/bevy/pull/8232
[8249]: https://github.com/bevyengine/bevy/pull/8249
[8260]: https://github.com/bevyengine/bevy/pull/8260
[8264]: https://github.com/bevyengine/bevy/pull/8264
[8265]: https://github.com/bevyengine/bevy/pull/8265
[8269]: https://github.com/bevyengine/bevy/pull/8269
[8272]: https://github.com/bevyengine/bevy/pull/8272
[8274]: https://github.com/bevyengine/bevy/pull/8274
[8275]: https://github.com/bevyengine/bevy/pull/8275
[8283]: https://github.com/bevyengine/bevy/pull/8283
[8292]: https://github.com/bevyengine/bevy/pull/8292
[8294]: https://github.com/bevyengine/bevy/pull/8294
[8295]: https://github.com/bevyengine/bevy/pull/8295
[8298]: https://github.com/bevyengine/bevy/pull/8298
[8299]: https://github.com/bevyengine/bevy/pull/8299
[8301]: https://github.com/bevyengine/bevy/pull/8301
[8306]: https://github.com/bevyengine/bevy/pull/8306
[8316]: https://github.com/bevyengine/bevy/pull/8316
[8323]: https://github.com/bevyengine/bevy/pull/8323
[8326]: https://github.com/bevyengine/bevy/pull/8326
[8330]: https://github.com/bevyengine/bevy/pull/8330
[8336]: https://github.com/bevyengine/bevy/pull/8336
[8346]: https://github.com/bevyengine/bevy/pull/8346
[8359]: https://github.com/bevyengine/bevy/pull/8359
[8362]: https://github.com/bevyengine/bevy/pull/8362
[8364]: https://github.com/bevyengine/bevy/pull/8364
[8377]: https://github.com/bevyengine/bevy/pull/8377
[8380]: https://github.com/bevyengine/bevy/pull/8380
[8387]: https://github.com/bevyengine/bevy/pull/8387
[8398]: https://github.com/bevyengine/bevy/pull/8398
[8402]: https://github.com/bevyengine/bevy/pull/8402
[8403]: https://github.com/bevyengine/bevy/pull/8403
[8408]: https://github.com/bevyengine/bevy/pull/8408
[8412]: https://github.com/bevyengine/bevy/pull/8412
[8419]: https://github.com/bevyengine/bevy/pull/8419
[8422]: https://github.com/bevyengine/bevy/pull/8422
[8425]: https://github.com/bevyengine/bevy/pull/8425
[8427]: https://github.com/bevyengine/bevy/pull/8427
[8428]: https://github.com/bevyengine/bevy/pull/8428
[8434]: https://github.com/bevyengine/bevy/pull/8434
[8436]: https://github.com/bevyengine/bevy/pull/8436
[8437]: https://github.com/bevyengine/bevy/pull/8437
[8444]: https://github.com/bevyengine/bevy/pull/8444
[8445]: https://github.com/bevyengine/bevy/pull/8445
[8446]: https://github.com/bevyengine/bevy/pull/8446
[8448]: https://github.com/bevyengine/bevy/pull/8448
[8455]: https://github.com/bevyengine/bevy/pull/8455
[8456]: https://github.com/bevyengine/bevy/pull/8456
[8460]: https://github.com/bevyengine/bevy/pull/8460
[8466]: https://github.com/bevyengine/bevy/pull/8466
[8467]: https://github.com/bevyengine/bevy/pull/8467
[8468]: https://github.com/bevyengine/bevy/pull/8468
[8470]: https://github.com/bevyengine/bevy/pull/8470
[8476]: https://github.com/bevyengine/bevy/pull/8476
[8485]: https://github.com/bevyengine/bevy/pull/8485
[8491]: https://github.com/bevyengine/bevy/pull/8491
[8494]: https://github.com/bevyengine/bevy/pull/8494
[8495]: https://github.com/bevyengine/bevy/pull/8495
[8496]: https://github.com/bevyengine/bevy/pull/8496
[8497]: https://github.com/bevyengine/bevy/pull/8497
[8503]: https://github.com/bevyengine/bevy/pull/8503
[8512]: https://github.com/bevyengine/bevy/pull/8512
[8514]: https://github.com/bevyengine/bevy/pull/8514
[8521]: https://github.com/bevyengine/bevy/pull/8521
[8522]: https://github.com/bevyengine/bevy/pull/8522
[8529]: https://github.com/bevyengine/bevy/pull/8529
[8531]: https://github.com/bevyengine/bevy/pull/8531
[8545]: https://github.com/bevyengine/bevy/pull/8545
[8548]: https://github.com/bevyengine/bevy/pull/8548
[8549]: https://github.com/bevyengine/bevy/pull/8549
[8551]: https://github.com/bevyengine/bevy/pull/8551
[8552]: https://github.com/bevyengine/bevy/pull/8552
[8561]: https://github.com/bevyengine/bevy/pull/8561
[8564]: https://github.com/bevyengine/bevy/pull/8564
[8567]: https://github.com/bevyengine/bevy/pull/8567
[8573]: https://github.com/bevyengine/bevy/pull/8573
[8575]: https://github.com/bevyengine/bevy/pull/8575
[8585]: https://github.com/bevyengine/bevy/pull/8585
[8588]: https://github.com/bevyengine/bevy/pull/8588
[8593]: https://github.com/bevyengine/bevy/pull/8593
[8601]: https://github.com/bevyengine/bevy/pull/8601
[8622]: https://github.com/bevyengine/bevy/pull/8622
[8623]: https://github.com/bevyengine/bevy/pull/8623
[8627]: https://github.com/bevyengine/bevy/pull/8627
[8631]: https://github.com/bevyengine/bevy/pull/8631
[8642]: https://github.com/bevyengine/bevy/pull/8642
[8643]: https://github.com/bevyengine/bevy/pull/8643
[8649]: https://github.com/bevyengine/bevy/pull/8649
[8650]: https://github.com/bevyengine/bevy/pull/8650
[8668]: https://github.com/bevyengine/bevy/pull/8668
[8677]: https://github.com/bevyengine/bevy/pull/8677
[8685]: https://github.com/bevyengine/bevy/pull/8685
[8687]: https://github.com/bevyengine/bevy/pull/8687
[8691]: https://github.com/bevyengine/bevy/pull/8691
[8701]: https://github.com/bevyengine/bevy/pull/8701
[8704]: https://github.com/bevyengine/bevy/pull/8704
[8711]: https://github.com/bevyengine/bevy/pull/8711
[8714]: https://github.com/bevyengine/bevy/pull/8714
[8721]: https://github.com/bevyengine/bevy/pull/8721
[8722]: https://github.com/bevyengine/bevy/pull/8722
[8723]: https://github.com/bevyengine/bevy/pull/8723
[8725]: https://github.com/bevyengine/bevy/pull/8725
[8726]: https://github.com/bevyengine/bevy/pull/8726
[8728]: https://github.com/bevyengine/bevy/pull/8728
[8732]: https://github.com/bevyengine/bevy/pull/8732
[8740]: https://github.com/bevyengine/bevy/pull/8740
[8743]: https://github.com/bevyengine/bevy/pull/8743
[8744]: https://github.com/bevyengine/bevy/pull/8744
[8753]: https://github.com/bevyengine/bevy/pull/8753
[8755]: https://github.com/bevyengine/bevy/pull/8755
[8757]: https://github.com/bevyengine/bevy/pull/8757
[8760]: https://github.com/bevyengine/bevy/pull/8760
[8761]: https://github.com/bevyengine/bevy/pull/8761
[8764]: https://github.com/bevyengine/bevy/pull/8764
[8771]: https://github.com/bevyengine/bevy/pull/8771
[8772]: https://github.com/bevyengine/bevy/pull/8772
[8776]: https://github.com/bevyengine/bevy/pull/8776
[8791]: https://github.com/bevyengine/bevy/pull/8791
[8792]: https://github.com/bevyengine/bevy/pull/8792
[8793]: https://github.com/bevyengine/bevy/pull/8793
[8795]: https://github.com/bevyengine/bevy/pull/8795
[8797]: https://github.com/bevyengine/bevy/pull/8797
[8801]: https://github.com/bevyengine/bevy/pull/8801
[8802]: https://github.com/bevyengine/bevy/pull/8802
[8803]: https://github.com/bevyengine/bevy/pull/8803
[8804]: https://github.com/bevyengine/bevy/pull/8804
[8814]: https://github.com/bevyengine/bevy/pull/8814
[8817]: https://github.com/bevyengine/bevy/pull/8817
[8818]: https://github.com/bevyengine/bevy/pull/8818
[8822]: https://github.com/bevyengine/bevy/pull/8822
[8826]: https://github.com/bevyengine/bevy/pull/8826
[8832]: https://github.com/bevyengine/bevy/pull/8832
[8833]: https://github.com/bevyengine/bevy/pull/8833
[8834]: https://github.com/bevyengine/bevy/pull/8834
[8843]: https://github.com/bevyengine/bevy/pull/8843
[8844]: https://github.com/bevyengine/bevy/pull/8844
[8845]: https://github.com/bevyengine/bevy/pull/8845
[8848]: https://github.com/bevyengine/bevy/pull/8848
[8849]: https://github.com/bevyengine/bevy/pull/8849
[8852]: https://github.com/bevyengine/bevy/pull/8852
[8866]: https://github.com/bevyengine/bevy/pull/8866
[8868]: https://github.com/bevyengine/bevy/pull/8868
[8871]: https://github.com/bevyengine/bevy/pull/8871
[8877]: https://github.com/bevyengine/bevy/pull/8877
[8878]: https://github.com/bevyengine/bevy/pull/8878
[8886]: https://github.com/bevyengine/bevy/pull/8886
[8890]: https://github.com/bevyengine/bevy/pull/8890
[8891]: https://github.com/bevyengine/bevy/pull/8891
[8901]: https://github.com/bevyengine/bevy/pull/8901
[8903]: https://github.com/bevyengine/bevy/pull/8903
[8904]: https://github.com/bevyengine/bevy/pull/8904
[8905]: https://github.com/bevyengine/bevy/pull/8905
[8907]: https://github.com/bevyengine/bevy/pull/8907
[8909]: https://github.com/bevyengine/bevy/pull/8909
[8910]: https://github.com/bevyengine/bevy/pull/8910
[8920]: https://github.com/bevyengine/bevy/pull/8920
[8928]: https://github.com/bevyengine/bevy/pull/8928
[8933]: https://github.com/bevyengine/bevy/pull/8933
[8939]: https://github.com/bevyengine/bevy/pull/8939
[8947]: https://github.com/bevyengine/bevy/pull/8947
[8951]: https://github.com/bevyengine/bevy/pull/8951
[8960]: https://github.com/bevyengine/bevy/pull/8960
[8957]: https://github.com/bevyengine/bevy/pull/8957
[9054]: https://github.com/bevyengine/bevy/pull/9054
[6690]: https://github.com/bevyengine/bevy/pull/6690
[8424]: https://github.com/bevyengine/bevy/pull/8424
[8655]: https://github.com/bevyengine/bevy/pull/8655
[6793]: https://github.com/bevyengine/bevy/pull/6793
[8720]: https://github.com/bevyengine/bevy/pull/8720
[9024]: https://github.com/bevyengine/bevy/pull/9024
[9027]: https://github.com/bevyengine/bevy/pull/9027
[9016]: https://github.com/bevyengine/bevy/pull/9016
[9023]: https://github.com/bevyengine/bevy/pull/9023
[9020]: https://github.com/bevyengine/bevy/pull/9020
[9030]: https://github.com/bevyengine/bevy/pull/9030
[9013]: https://github.com/bevyengine/bevy/pull/9013
[8926]: https://github.com/bevyengine/bevy/pull/8926
[9003]: https://github.com/bevyengine/bevy/pull/9003
[8993]: https://github.com/bevyengine/bevy/pull/8993
[8508]: https://github.com/bevyengine/bevy/pull/8508
[6056]: https://github.com/bevyengine/bevy/pull/6056
[8987]: https://github.com/bevyengine/bevy/pull/8987
[8952]: https://github.com/bevyengine/bevy/pull/8952
[8961]: https://github.com/bevyengine/bevy/pull/8961
[8978]: https://github.com/bevyengine/bevy/pull/8978
[8982]: https://github.com/bevyengine/bevy/pull/8982
[8977]: https://github.com/bevyengine/bevy/pull/8977
[8931]: https://github.com/bevyengine/bevy/pull/8931
## Version 0.10.0 (2023-03-06)
## Added
- [Accessibility: Added `Label` for marking text specifically as a label for UI controls.][6874]
- [Accessibility: Integrate with and expose AccessKit accessibility.][6874]
- [App: `App::setup`][7586]
- [App: `SubApp::new`][7290]
- [App: Bevy apps will now log system information on startup by default][5454]
- [Audio Expose symphonia features from rodio in bevy_audio and bevy][6388]
- [Audio: Basic spatial audio][6028]
- [ECS: `bevy_ptr::dangling_with_align`: creates a well-aligned dangling pointer to a type whose alignment is not known at compile time.][6618]
- [ECS: `Column::get_added_ticks`][6547]
- [ECS: `Column::get_column_ticks`][6547]
- [ECS: `DetectChanges::set_if_neq`: triggering change detection when the new and previous values are equal. This will work on both components and resources.][6853]
- [ECS: `SparseSet::get_added_ticks`][6547]
- [ECS: `SparseSet::get_column_ticks`][6547]
- [ECS: `Tick`, a wrapper around a single change detection tick.][6547]
- [ECS: `UnsafeWorldCell::world_mut` now exists and can be used to get a `&mut World` out of `UnsafeWorldCell`][7381]
- [ECS: `WorldId` now implements the `FromWorld` trait.][7726]
- [ECS: A `core::fmt::Pointer` impl to `Ptr`, `PtrMut` and `OwnedPtr`.][6980]
- [ECS: Add `bevy_ecs::schedule_v3` module][6587]
- [ECS: Add `EntityMap::iter()`][6935]
- [ECS: Add `Ref` to the prelude][7392]
- [ECS: Add `report_sets` option to `ScheduleBuildSettings`][7756]
- [ECS: add `Resources::iter` to iterate over all resource IDs][6592]
- [ECS: add `UnsafeWorldCell` abstraction][6404]
- [ECS: Add `World::clear_resources` & `World::clear_all`][3212]
- [ECS: Add a basic example for system ordering][7017]
- [ECS: Add a missing impl of `ReadOnlySystemParam` for `Option<NonSend<>>`][7245]
- [ECS: add a spawn_on_external method to allow spawning on the scopes thread or an external thread][7415]
- [ECS: Add const `Entity::PLACEHOLDER`][6761]
- [ECS: Add example to show how to use `apply_system_buffers`][7793]
- [ECS: Add logging variants of system piping][6751]
- [ECS: Add safe constructors for untyped pointers `Ptr` and `PtrMut`][6539]
- [ECS: Add unit test with system that panics][7491]
- [ECS: Add wrapping_add to change_tick][7146]
- [ECS: Added “base sets” and ported CoreSet to use them.][7466]
- [ECS: Added `as_mut` and `as_ref` methods to `MutUntyped`.][7009]
- [ECS: Added `bevy::ecs::system::assert_is_read_only_system`.][7547]
- [ECS: Added `Components::resource_id`.][7284]
- [ECS: Added `DebugName` world query for more human friendly debug names of entities.][7186]
- [ECS: Added `distributive_run_if` to `IntoSystemConfigs` to enable adding a run condition to each system when using `add_systems`.][7724]
- [ECS: Added `EntityLocation::table_id`][6681]
- [ECS: Added `EntityLocation::table_row`.][6681]
- [ECS: Added `IntoIterator` implementation for `EventReader` so you can now do `&mut reader` instead of `reader.iter()` for events.][7720]
- [ECS: Added `len`, `is_empty`, `iter` methods on SparseSets.][7638]
- [ECS: Added `ManualEventReader::clear()`][7471]
- [ECS: Added `MutUntyped::with_type` which allows converting into a `Mut<T>`][7113]
- [ECS: Added `new_for_test` on `ComponentInfo` to make test code easy.][7638]
- [ECS: Added `not` condition.][7559]
- [ECS: Added `on_timer` and `on_fixed_timer` run conditions][7866]
- [ECS: Added `OwningPtr::read_unaligned`.][7039]
- [ECS: Added `ReadOnlySystem`, which is implemented for any `System` type whose parameters all implement `ReadOnlySystemParam`.][7547]
- [ECS: Added `Ref` which allows inspecting change detection flags in an immutable way][7097]
- [ECS: Added `shrink` and `as_ref` methods to `PtrMut`.][7009]
- [ECS: Added `SystemMeta::name`][6900]
- [ECS: Added `SystemState::get_manual_mut`][7084]
- [ECS: Added `SystemState::get_manual`][7084]
- [ECS: Added `SystemState::update_archetypes`][7084]
- [ECS: Added a large number of methods on `App` to work with schedules ergonomically][7267]
- [ECS: Added conversions from `Ptr`, `PtrMut`, and `OwningPtr` to `NonNull<u8>`.][7181]
- [ECS: Added rore common run conditions: `on_event`, resource change detection, `state_changed`, `any_with_component`][7579]
- [ECS: Added support for variants of `bevy_ptr` types that do not require being correctly aligned for the pointee type.][7151]
- [ECS: Added the `CoreSchedule` enum][7267]
- [ECS: Added the `SystemParam` type `Deferred<T>`, which can be used to defer `World` mutations. Powered by the new trait `SystemBuffer`.][6817]
- [ECS: Added the extension methods `.and_then(...)` and `.or_else(...)` to run conditions, which allows combining run conditions with short-circuiting behavior.][7605]
- [ECS: Added the marker trait `BaseSystemSet`, which is distinguished from a `FreeSystemSet`. These are both subtraits of `SystemSet`.][7863]
- [ECS: Added the method `reborrow` to `Mut`, `ResMut`, `NonSendMut`, and `MutUntyped`.][7114]
- [ECS: Added the private `prepare_view_uniforms` system now has a public system set for scheduling purposes, called `ViewSet::PrepareUniforms`][7267]
- [ECS: Added the trait `Combine`, which can be used with the new `CombinatorSystem` to create system combinators with custom behavior.][7605]
- [ECS: Added the trait `EntityCommand`. This is a counterpart of `Command` for types that execute code for a single entity.][7015]
- [ECS: introduce EntityLocation::INVALID const and adjust Entities::get comment][7623]
- [ECS: States derive macro][7535]
- [ECS: support for tuple structs and unit structs to the `SystemParam` derive macro.][6957]
- [Hierarchy: Add `Transform::look_to`][6692]
- [Hierarchy: Added `add_child`, `set_parent` and `remove_parent` to `EntityMut`][6926]
- [Hierarchy: Added `clear_children(&mut self) -> &mut Self` and `replace_children(&mut self, children: &[Entity]) -> &mut Self` function in `BuildChildren` trait][6035]
- [Hierarchy: Added `ClearChildren` and `ReplaceChildren` struct][6035]
- [Hierarchy: Added `push_and_replace_children_commands` and `push_and_clear_children_commands` test][6035]
- [Hierarchy: Added the `BuildChildrenTransformExt` trait][7024]
- [Input: add Input Method Editor support][7325]
- [Input: Added `Axis<T>::devices`][5400]
- [INput: Added common run conditions for `bevy_input`][7806]
- [Macro: add helper for macro to get either bevy::x or bevy_x depending on how it was imported][7164]
- [Math: `CubicBezier2d`, `CubicBezier3d`, `QuadraticBezier2d`, and `QuadraticBezier3d` types with methods for sampling position, velocity, and acceleration. The generic `Bezier` type is also available, and generic over any degree of Bezier curve.][7653]
- [Math: `CubicBezierEasing`, with additional methods to allow for smooth easing animations.][7653]
- [Math: Added a generic cubic curve trait, and implementation for Cardinal splines (including Catmull-Rom), B-Splines, Beziers, and Hermite Splines. 2D cubic curve segments also implement easing functionality for animation.][7683]
- [New reflection path syntax: struct field access by index (example syntax: `foo#1`)][7321]
- [Reflect `State` generics other than just `RandomState` can now be reflected for both `hashbrown::HashMap` and `collections::HashMap`][7782]
- [Reflect: `Aabb` now implements `FromReflect`.][7396]
- [Reflect: `derive(Reflect)` now supports structs and enums that contain generic types][7364]
- [Reflect: `ParsedPath` for cached reflection paths][7321]
- [Reflect: `std::collections::HashMap` can now be reflected][7782]
- [Reflect: `std::collections::VecDeque` now implements `Reflect` and all relevant traits.][6831]
- [Reflect: Add reflection path support for `Tuple` types][7324]
- [Reflect: Added `ArrayIter::new`.][7449]
- [Reflect: Added `FromReflect::take_from_reflect`][6566]
- [Reflect: Added `List::insert` and `List::remove`.][7063]
- [Reflect: Added `Map::remove`][6564]
- [Reflect: Added `ReflectFromReflect`][6245]
- [Reflect: Added `TypeRegistrationDeserializer`, which simplifies getting a `&TypeRegistration` while deserializing a string.][7094]
- [Reflect: Added methods to `List` that were previously provided by `Array`][7467]
- [Reflect: Added support for enums in reflection paths][6560]
- [Reflect: Added the `bevy_reflect_compile_fail_tests` crate for testing compilation errors][7041]
- [Reflect: bevy_reflect: Add missing primitive registrations][7815]
- [Reflect: impl `Reflect` for `&'static Path`][6755]
- [Reflect: implement `Reflect` for `Fxaa`][7527]
- [Reflect: implement `TypeUuid` for primitives and fix multiple-parameter generics having the same `TypeUuid`][6633]
- [Reflect: Implemented `Reflect` + `FromReflect` for window events and related types. These types are automatically registered when adding the `WindowPlugin`.][6235]
- [Reflect: Register Hash for glam types][6786]
- [Reflect: Register missing reflected types for `bevy_render`][6811]
- [Render: A pub field `extras` to `GltfNode`/`GltfMesh`/`GltfPrimitive` which store extras][6973]
- [Render: A pub field `material_extras` to `GltfPrimitive` which store material extras][6973]
- [Render: Add 'Color::as_lcha' function (#7757)][7766]
- [Render: Add `Camera::viewport_to_world_2d`][6557]
- [Render: Add a more familiar hex color entry][7060]
- [Render: add ambient lighting hook][5428]
- [Render: Add bevy logo to the lighting example to demo alpha mask shadows][7895]
- [Render: Add Box::from_corners method][6672]
- [Render: add OpenGL and DX11 backends][7481]
- [Render: Add orthographic camera support back to directional shadows][7796]
- [Render: add standard material depth bias to pipeline][7847]
- [Render: Add support for Rgb9e5Ufloat textures][6781]
- [Render: Added buffer usage field to buffers][7423]
- [Render: can define a value from inside a shader][7518]
- [Render: EnvironmentMapLight support for WebGL2][7737]
- [Render: Implement `ReadOnlySystemParam` for `Extract<>`][7182]
- [Render: Initial tonemapping options][7594]
- [Render: ShaderDefVal: add an `UInt` option][6881]
- [Render: Support raw buffers in AsBindGroup macro][7701]
- [Rendering: `Aabb` now implements `Copy`.][7401]
- [Rendering: `ExtractComponent` can specify output type, and outputting is optional.][6699]
- [Rendering: `Mssaa::samples`][7292]
- [Rendering: Add `#else ifdef` to shader preprocessing.][7431]
- [Rendering: Add a field `push_constant_ranges` to RenderPipelineDescriptor and ComputePipelineDescriptor][7681]
- [Rendering: Added `Material::prepass_vertex_shader()` and `Material::prepass_fragment_shader()` to control the prepass from the `Material`][6284]
- [Rendering: Added `BloomSettings:lf_boost`, `BloomSettings:lf_boost_curvature`, `BloomSettings::high_pass_frequency` and `BloomSettings::composite_mode`.][6677]
- [Rendering: Added `BufferVec::extend`][6833]
- [Rendering: Added `BufferVec::truncate`][6833]
- [Rendering: Added `Camera::msaa_writeback` which can enable and disable msaa writeback.][7671]
- [Rendering: Added `CascadeShadowConfigBuilder` to help with creating `CascadeShadowConfig`][7456]
- [Rendering: Added `DepthPrepass` and `NormalPrepass` component to control which textures will be created by the prepass and available in later passes.][6284]
- [Rendering: Added `Draw<T>::prepare` optional trait function.][6885]
- [Rendering: Added `DrawFunctionsInternals::id()`][6745]
- [Rendering: Added `FallbackImageCubemap`.][7051]
- [Rendering: Added `FogFalloff` enum for selecting between three widely used “traditional” fog falloff modes: `Linear`, `Exponential` and `ExponentialSquared`, as well as a more advanced `Atmospheric` fog;][6412]
- [Rendering: Added `get_input_node`][6720]
- [Rendering: Added `Lcha` member to `bevy_render::color::Color` enum][7483]
- [Rendering: Added `MainTaret::main_texture_other`][7343]
- [Rendering: Added `PhaseItem::entity`][6885]
- [Rendering: Added `prepass_enabled` flag to the `MaterialPlugin` that will control if a material uses the prepass or not.][6284]
- [Rendering: Added `prepass_enabled` flag to the `PbrPlugin` to control if the StandardMaterial uses the prepass. Currently defaults to false.][6284]
- [Rendering: Added `PrepassNode` that runs before the main pass][6284]
- [Rendering: Added `PrepassPlugin` to extract/prepare/queue the necessary data][6284]
- [Rendering: Added `RenderCommand::ItemorldQuery` associated type.][6885]
- [Rendering: Added `RenderCommand::ViewWorldQuery` associated type.][6885]
- [Rendering: Added `RenderContext::add_command_buffer`][7248]
- [Rendering: Added `RenderContext::begin_tracked_render_pass`.][7053]
- [Rendering: Added `RenderContext::finish`][7248]
- [Rendering: Added `RenderContext::new`][7248]
- [Rendering: Added `SortedCameras`, exposing information that was previously internal to the camera driver node.][7671]
- [Rendering: Added `try_add_node_edge`][6720]
- [Rendering: Added `try_add_slot_edge`][6720]
- [Rendering: Added `with_r`, `with_g`, `with_b`, and `with_a` to `Color`.][6899]
- [Rendering: Added 2x and 8x sample counts for MSAA.][7684]
- [Rendering: Added a `#[storage(index)]` attribute to the derive `AsBindGroup` macro.][6129]
- [Rendering: Added an `EnvironmentMapLight` camera component that adds additional ambient light to a scene.][7051]
- [Rendering: Added argument to `ScalingMode::WindowSize` that specifies the number of pixels that equals one world unit.][6201]
- [Rendering: Added cylinder shape][6809]
- [Rendering: Added example `shaders/texture_binding_array`.][6995]
- [Rendering: Added new capabilities for shader validation.][6995]
- [Rendering: Added specializable `BlitPipeline` and ported the upscaling node to use this.][7671]
- [Rendering: Added subdivisions field to shape::Plane][7546]
- [Rendering: Added support for additive and multiplicative blend modes in the PBR `StandardMaterial`, via `AlphaMode::Add` and `AlphaMode::Multiply`;][6644]
- [Rendering: Added support for distance-based fog effects for PBR materials, controllable per-camera via the new `FogSettings` component;][6412]
- [Rendering: Added support for KTX2 `R8_SRGB`, `R8_UNORM`, `R8G8_SRGB`, `R8G8_UNORM`, `R8G8B8_SRGB`, `R8G8B8_UNORM` formats by converting to supported wgpu formats as appropriate][4594]
- [Rendering: Added support for premultiplied alpha in the PBR `StandardMaterial`, via `AlphaMode::Premultiplied`;][6644]
- [Rendering: Added the ability to `#[derive(ExtractComponent)]` with an optional filter.][7399]
- [Rendering: Added: `bevy_render::color::LchRepresentation` struct][7483]
- [Rendering: Clone impl for MaterialPipeline][7548]
- [Rendering: Implemented `Clone` for all pipeline types.][6653]
- [Rendering: Smooth Transition between Animations][6922]
- [Support optional env variable `BEVY_ASSET_ROOT` to explicitly specify root assets directory.][5346]
- [Task: Add thread create/destroy callbacks to TaskPool][6561]
- [Tasks: Added `ThreadExecutor` that can only be ticked on one thread.][7087]
- [the extension methods `in_schedule(label)` and `on_startup()` for configuring the schedule a system belongs to.][7790]
- [Transform: Added `GlobalTransform::reparented_to`][7020]
- [UI: `Size::new` is now `const`][6602]
- [UI: Add const to methods and const defaults to bevy_ui][5542]
- [UI: Added `all`, `width` and `height` functions to `Size`.][7468]
- [UI: Added `Anchor` component to `Text2dBundle`][6807]
- [UI: Added `CalculatedSize::preserve_aspect_ratio`][6825]
- [UI: Added `Component` derive to `Anchor`][6807]
- [UI: Added `RelativeCursorPosition`, and an example showcasing it][7199]
- [UI: Added `Text::with_linebreak_behaviour`][7283]
- [UI: Added `TextBundle::with_linebreak_behaviour`][7283]
- [UI: Added a `BackgroundColor` component to `TextBundle`.][7596]
- [UI: Added a helper method `with_background_color` to `TextBundle`.][7596]
- [UI: Added the `SpaceEvenly` variant to `AlignContent`.][7859]
- [UI: Added the `Start` and `End` variants to `AlignItems`, `AlignSelf`, `AlignContent` and `JustifyContent`.][7859]
- [UI: Adds `flip_x` and `flip_y` fields to `ExtractedUiNode`.][6292]
- [Utils: Added `SyncCell::read`, which allows shared access to values that already implement the `Sync` trait.][7718]
- [Utils: Added the guard type `bevy_utils::OnDrop`.][7181]
- [Window: Add `Windows::get_focused(_mut)`][6571]
- [Window: add span to winit event handler][6612]
- [Window: Transparent window on macos][7617]
- [Windowing: `WindowDescriptor` renamed to `Window`.][5589]
- [Windowing: Added `hittest` to `WindowAttributes`][6664]
- [Windowing: Added `Window::prevent_default_event_handling` . This allows bevy apps to not override default browser behavior on hotkeys like F5, F12, Ctrl+R etc.][7304]
- [Windowing: Added `WindowDescriptor.always_on_top` which configures a window to stay on top.][6527]
- [Windowing: Added an example `cargo run --example fallthrough`][6664]
- [Windowing: Added the `hittest`s setters/getters][6664]
- [Windowing: Modifed the `WindowDescriptor`s `Default` impl.][6664]
- [Windowing: Modified the `WindowBuilder`][6664]
## Changed
- [Animation: `AnimationPlayer` that are on a child or descendant of another entity with another player will no longer be run.][6785]
- [Animation: Animation sampling now runs fully multi-threaded using threads from `ComputeTaskPool`.][6785]
- [App: Adapt path type of dynamically_load_plugin][6734]
- [App: Break CorePlugin into TaskPoolPlugin, TypeRegistrationPlugin, FrameCountPlugin.][7083]
- [App: Increment FrameCount in CoreStage::Last.][7477]
- [App::run() will now panic when called from Plugin::build()][4241]
- [Asset: `AssetIo::watch_path_for_changes` allows watched path and path to reload to differ][6797]
- [Asset: make HandleUntyped::id private][7076]
- [Audio: `AudioOutput` is now a `Resource`. It's no longer `!Send`][6436]
- [Audio: AudioOutput is actually a normal resource now, not a non-send resource][7262]
- [ECS: `.label(SystemLabel)` is now referred to as `.in_set(SystemSet)`][7267]
- [ECS: `App::add_default_labels` is now `App::add_default_sets`][7267]
- [ECS: `App::add_system_set` was renamed to `App::add_systems`][7267]
- [ECS: `Archetype` indices and `Table` rows have been newtyped as `ArchetypeRow` and `TableRow`.][4878]
- [ECS: `ArchetypeGeneration` now implements `Ord` and `PartialOrd`.][6742]
- [ECS: `bevy_pbr::add_clusters` is no longer an exclusive system][7267]
- [ECS: `Bundle::get_components` now takes a `FnMut(StorageType, OwningPtr)`. The provided storage type must be correct for the component being fetched.][6902]
- [ECS: `ChangeTrackers<T>` has been deprecated. It will be removed in Bevy 0.11.][7306]
- [ECS: `Command` closures no longer need to implement the marker trait `std::marker::Sync`.][7014]
- [ECS: `CoreStage` and `StartupStage` enums are now `CoreSet` and `StartupSet`][7267]
- [ECS: `EntityMut::world_scope` now allows returning a value from the immediately-computed closure.][7385]
- [ECS: `EntityMut`: rename `remove_intersection` to `remove` and `remove` to `take`][7810]
- [ECS: `EventReader::clear` now takes a mutable reference instead of consuming the event reader.][6851]
- [ECS: `EventWriter::send_batch` will only log a TRACE level log if the batch is non-empty.][7753]
- [ECS: `oldest_id` and `get_event` convenience methods added to `Events<T>`.][5735]
- [ECS: `OwningPtr::drop_as` will now panic in debug builds if the pointer is not aligned.][7117]
- [ECS: `OwningPtr::read` will now panic in debug builds if the pointer is not aligned.][7117]
- [ECS: `Ptr::deref` will now panic in debug builds if the pointer is not aligned.][7117]
- [ECS: `PtrMut::deref_mut` will now panic in debug builds if the pointer is not aligned.][7117]
- [ECS: `Query::par_for_each(_mut)` has been changed to `Query::par_iter(_mut)` and will now automatically try to produce a batch size for callers based on the current `World` state.][4777]
- [ECS: `RemovedComponents` now internally uses an `Events<RemovedComponentsEntity>` instead of an `Events<Entity>`][7503]
- [ECS: `SceneSpawnerSystem` now runs under `CoreSet::Update`, rather than `CoreStage::PreUpdate.at_end()`.][7267]
- [ECS: `StartupSet` is now a base set][7574]
- [ECS: `System::default_labels` is now `System::default_system_sets`.][7267]
- [ECS: `SystemLabel` trait was replaced by `SystemSet`][7267]
- [ECS: `SystemParamState::apply` now takes a `&SystemMeta` parameter in addition to the provided `&mut World`.][6900]
- [ECS: `SystemTypeIdLabel<T>` was replaced by `SystemSetType<T>`][7267]
- [ECS: `tick_global_task_pools_on_main_thread` is no longer run as an exclusive system. Instead, it has been replaced by `tick_global_task_pools`, which uses a `NonSend` resource to force running on the main thread.][7267]
- [ECS: `Tick::is_older_than` was renamed to `Tick::is_newer_than`. This is not a functional change, since that was what was always being calculated, despite the wrong name.][7561]
- [ECS: `UnsafeWorldCell::world` is now used to get immutable access to the whole world instead of just the metadata which can now be done via `UnsafeWorldCell::world_metadata`][7381]
- [ECS: `World::init_non_send_resource` now returns the generated `ComponentId`.][7284]
- [ECS: `World::init_resource` now returns the generated `ComponentId`.][7284]
- [ECS: `World::iter_entities` now returns an iterator of `EntityRef` instead of `Entity`.][6843]
- [ECS: `World`s can now only hold a maximum of 2^32 - 1 tables.][6681]
- [ECS: `World`s can now only hold a maximum of 2^32- 1 archetypes.][6681]
- [ECS: `WorldId` now implements `SystemParam` and will return the id of the world the system is running in][7741]
- [ECS: Adding rendering extraction systems now panics rather than silently failing if no subapp with the `RenderApp` label is found.][7267]
- [ECS: Allow adding systems to multiple sets that share the same base set][7709]
- [ECS: change `is_system_type() -> bool` to `system_type() -> Option<TypeId>`][7715]
- [ECS: changed some `UnsafeWorldCell` methods to take `self` instead of `&self`/`&mut self` since there is literally no point to them doing that][7381]
- [ECS: Changed: `Query::for_each(_mut)`, `QueryParIter` will now leverage autovectorization to speed up query iteration where possible.][6547]
- [ECS: Default to using ExecutorKind::SingleThreaded on wasm32][7717]
- [ECS: Ensure `Query` does not use the wrong `World`][7150]
- [ECS: Exclusive systems may now be used with system piping.][7023]
- [ECS: expose `ScheduleGraph` for use in third party tools][7522]
- [ECS: extract topsort logic to a new method, one pass to detect cycles and …][7727]
- [ECS: Fixed time steps now use a schedule (`CoreSchedule::FixedTimeStep`) rather than a run criteria.][7267]
- [ECS: for disconnected, use Vec instead of HashSet to reduce insert overhead][7744]
- [ECS: Implement `SparseSetIndex` for `WorldId`][7125]
- [ECS: Improve the panic message for schedule build errors][7860]
- [ECS: Lift the 16-field limit from the `SystemParam` derive][6867]
- [ECS: Make `EntityRef::new` unsafe][7222]
- [ECS: Make `Query` fields private][7149]
- [ECS: make `ScheduleGraph::initialize` public][7723]
- [ECS: Make boxed conditions read-only][7786]
- [ECS: Make RemovedComponents mirror EventReaders api surface][7713]
- [ECS: Mark TableRow and TableId as repr(transparent)][7166]
- [ECS: Most APIs returning `&UnsafeCell<ComponentTicks>` now returns `TickCells` instead, which contains two separate `&UnsafeCell<Tick>` for either component ticks.][6547]
- [ECS: Move MainThreadExecutor for stageless migration.][7444]
- [ECS: Move safe operations out of `unsafe` blocks in `Query`][7851]
- [ECS: Optimize `.nth()` and `.last()` for event iterators][7530]
- [ECS: Optimize `Iterator::count` for event iterators][7582]
- [ECS: Provide public `EntityRef::get_change_ticks_by_id` that takes `ComponentId`][6683]
- [ECS: refactor: move internals from `entity_ref` to `World`, add `SAFETY` comments][6402]
- [ECS: Rename `EntityId` to `EntityIndex`][6732]
- [ECS: Rename `UnsafeWorldCellEntityRef` to `UnsafeEntityCell`][7568]
- [ECS: Rename schedule v3 to schedule][7519]
- [ECS: Rename state_equals condition to in_state][7677]
- [ECS: Replace `World::read_change_ticks` with `World::change_ticks` within `bevy_ecs` crate][6816]
- [ECS: Replaced the trait `ReadOnlySystemParamFetch` with `ReadOnlySystemParam`.][6865]
- [ECS: Simplified the `SystemParamFunction` and `ExclusiveSystemParamFunction` traits.][7675]
- [ECS: Speed up `CommandQueue` by storing commands more densely][6391]
- [ECS: Stageless: move final apply outside of spawned executor][7445]
- [ECS: Stageless: prettier cycle reporting][7463]
- [ECS: Systems without `Commands` and `ParallelCommands` will no longer show a `system_commands` span when profiling.][6900]
- [ECS: The `ReportHierarchyIssue` resource now has a public constructor (`new`), and implements `PartialEq`][7267]
- [ECS: The `StartupSchedule` label is now defined as part of the `CoreSchedules` enum][7267]
- [ECS: The `SystemParam` derive is now more flexible, allowing you to omit unused lifetime parameters.][6694]
- [ECS: the top level `bevy_ecs::schedule` module was replaced with `bevy_ecs::scheduling`][7267]
- [ECS: Use `World` helper methods for sending `HierarchyEvent`s][6921]
- [ECS: Use a bounded channel in the multithreaded executor][7829]
- [ECS: Use a default implementation for `set_if_neq`][7660]
- [ECS: Use consistent names for marker generics][7788]
- [ECS: Use correct terminology for a `NonSend` run condition panic][7841]
- [ECS: Use default-implemented methods for `IntoSystemConfig<>`][7870]
- [ECS: use try_send to replace send.await, unbounded channel should always b…][7745]
- [General: The MSRV of the engine is now 1.67.][7379]
- [Input: Bump gilrs version to 0.10][6558]
- [IOS, Android... same thing][7493]
- [Math: Update `glam` to `0.23`][7883]
- [Math: use `Mul<f32>` to double the value of `Vec3`][6607]
- [Reflect: bevy_reflect now uses a fixed state for its hasher, which means the output of `Reflect::reflect_hash` is now deterministic across processes.][7583]
- [Reflect: Changed function signatures of `ReflectComponent` methods, `apply`, `remove`, `contains`, and `reflect`.][7206]
- [Reflect: Changed the `List::push` and `List::pop` to have default implementations.][7063]
- [Reflect: Registered `SmallVec<[Entity; 8]>` in the type registry][6578]
- [Renamed methods on `GetPath`:][7321]
- `path` -> `reflect_path`
- `path_mut` -> `reflect_path_mut`
- `get_path` -> `path`
- `get_path_mut` -> `path_mut`
- [Render: Allow prepass in webgl][7537]
- [Render: bevy_pbr: Avoid copying structs and using registers in shaders][7069]
- [Render: bevy_pbr: Clear fog DynamicUniformBuffer before populating each frame][7432]
- [Render: bevy_render: Run calculate_bounds in the end-of-update exclusive systems][7127]
- [Render: Change the glTF loader to use `Camera3dBundle`][7890]
- [Render: Changed &mut PipelineCache to &PipelineCache][7598]
- [Render: Intepret glTF colors as linear instead of sRGB][6828]
- [Render: Move 'startup' Resource `WgpuSettings` into the `RenderPlugin`][6946]
- [Render: Move prepass functions to prepass_utils][7354]
- [Render: Only compute sprite color once per quad][7498]
- [Render: Only execute `#define` if current scope is accepting lines][7798]
- [Render: Pipelined Rendering][6503]
- [Render: Refactor Globals and View structs into separate shaders][7512]
- [Render: Replace UUID based IDs with a atomic-counted ones][6988]
- [Render: run clear trackers on render world][6878]
- [Render: set cull mode: None for Mesh2d][7514]
- [Render: Shader defs can now have a value][5900]
- [Render: Shrink ComputedVisibility][6305]
- [Render: Use prepass shaders for shadows][7784]
- [Rendering: `add_node_edge` is now infallible (panics on error)][6720]
- [Rendering: `add_slot_edge` is now infallible (panics on error)][6720]
- [Rendering: `AsBindGroup` is now object-safe.][6937]
- [Rendering: `BloomSettings::knee` renamed to `BloomPrefilterSettings::softness`.][6677]
- [Rendering: `BloomSettings::threshold` renamed to `BloomPrefilterSettings::threshold`.][6677]
- [Rendering: `HexColorError::Hex` has been renamed to `HexColorError::Char`][6940]
- [Rendering: `input_node` now panics on `None`][6720]
- [Rendering: `ktx2` and `zstd` are now part of bevys default enabled features][7696]
- [Rendering: `Msaa` is now enum][7292]
- [Rendering: `PipelineCache` no longer requires mutable access in order to queue render / compute pipelines.][7205]
- [Rendering: `RenderContext::command_encoder` is now private. Use the accessor `RenderContext::command_encoder()` instead.][7248]
- [Rendering: `RenderContext::render_device` is now private. Use the accessor `RenderContext::render_device()` instead.][7248]
- [Rendering: `RenderContext` now supports adding external `CommandBuffer`s for inclusion into the render graphs. These buffers can be encoded outside of the render graph (i.e. in a system).][7248]
- [Rendering: `scale` is now applied before updating `area`. Reading from it will take `scale` into account.][6201]
- [Rendering: `SkinnedMeshJoints::build` now takes a `&mut BufferVec` instead of a `&mut Vec` as a parameter.][6833]
- [Rendering: `StandardMaterial` now defaults to a dielectric material (0.0 `metallic`) with 0.5 `perceptual_roughness`.][7664]
- [Rendering: `TrackedRenderPass` now requires a `&RenderDevice` on construction.][7053]
- [Rendering: `Visibility` is now an enum][6320]
- [Rendering: Bloom now looks different.][6677]
- [Rendering: Directional lights now use cascaded shadow maps for improved shadow quality.][7064]
- [Rendering: ExtractedMaterials, extract_materials and prepare_materials are now public][7548]
- [Rendering: For performance reasons, some detailed renderer trace logs now require the use of cargo feature `detailed_trace` in addition to setting the log level to `TRACE` in order to be shown.][7639]
- [Rendering: Made cameras with the same target share the same `main_texture` tracker, which ensures continuity across cameras.][7671]
- [Rendering: Renamed `ScalingMode::Auto` to `ScalingMode::AutoMin`.][6496]
- [Rendering: Renamed `ScalingMode::None` to `ScalingMode::Fixed`][6201]
- [Rendering: Renamed `window_origin` to `viewport_origin`][6201]
- [Rendering: Renamed the `priority` field on `Camera` to `order`.][6908]
- [Rendering: Replaced `left`, `right`, `bottom`, and `top` fields with a single `area: Rect`][6201]
- [Rendering: StandardMaterials will now appear brighter and more saturated at high roughness, due to internal material changes. This is more physically correct.][7051]
- [Rendering: The `layout` field of `RenderPipelineDescriptor` and `ComputePipelineDescriptor` is now mandatory.][7681]
- [Rendering: The `rangefinder` module has been moved into the `render_phase` module.][7016]
- [Rendering: The bloom example has been renamed to bloom_3d and improved. A bloom_2d example was added.][6677]
- [Rendering: the SubApp Extract stage has been separated from running the sub app schedule.][7046]
- [Rendering: To enable multiple `RenderPhases` to share the same `TrackedRenderPass`, the `RenderPhase::render` signature has changed.][7043]
- [Rendering: update its `Transform` in order to preserve its `GlobalTransform` after the parent change][7024]
- [Rendering: Updated to wgpu 0.15, wgpu-hal 0.15.1, and naga 0.11][7356]
- [Rendering: Users can now use the DirectX Shader Compiler (DXC) on Windows with DX12 for faster shader compilation and ShaderModel 6.0+ support (requires `dxcompiler.dll` and `dxil.dll`)][7356]
- [Rendering: You can now set up the rendering code of a `RenderPhase` directly using the `RenderPhase::render` method, instead of implementing it manually in your render graph node.][7013]
- [Scenes: `SceneSpawner::spawn_dynamic` now returns `InstanceId` instead of `()`.][6663]
- [Shape: Change `From<Icosphere>` to `TryFrom<Icosphere>`][6484]
- [Tasks: `Scope` now uses `FallibleTask` to await the cancellation of all remaining tasks when its dropped.][6696]
- [Time: `Time::set_relative_speed_fXX` now allows a relative speed of -0.0.][7740]
- [UI: `FocusPolicy` default has changed from `FocusPolicy::Block` to `FocusPolicy::Pass`][7161]
- [UI: `TextPipeline::queue_text` and `GlyphBrush::compute_glyphs` now need a TextLineBreakBehaviour argument, in order to pass through the new field.][7283]
- [UI: `update_image_calculated_size_system` sets `preserve_aspect_ratio` to true for nodes with images.][6825]
- [UI: Added `Changed<Node>` to the change detection query of `text_system`. This ensures that any change in the size of a text node will cause any text it contains to be recomputed.][7674]
- [UI: Changed `Size::height` so it sets the `width` to `Val::AUTO`.][7626]
- [UI: Changed `Size::width` so it sets the `height` to `Val::AUTO`.][7626]
- [UI: Changed `TextAlignment` into an enum with `Left`, `Center`, and `Right` variants.][6807]
- [UI: Changed extract_uinodes to extract the flip_x and flip_y values from UiImage.][6292]
- [UI: Changed prepare_uinodes to swap the UV coordinates as required.][6292]
- [UI: Changed Taffy version to 0.3.3 and disabled its `grid` feature.][7859]
- [UI: Changed the `Size` `width` and `height` default values to `Val::Auto`][7475]
- [UI: Changed the `size` field of `CalculatedSize` to a Vec2.][7641]
- [UI: Changed UiImage derefs to texture field accesses.][6292]
- [UI: Changed UiImage to a struct with texture, flip_x, and flip_y fields.][6292]
- [UI: Modified the `text2d` example to show both linebreaking behaviours.][7283]
- [UI: Renamed `image_node_system` to `update_image_calculated_size_system`][6674]
- [UI: Renamed the `background_color` field of `ExtractedUiNode` to `color`.][7452]
- [UI: Simplified the UI examples. Replaced numeric values with the Flex property enums or elided them where possible, and removed the remaining use of auto margins.][7626]
- [UI: The `MeasureFunc` only preserves the aspect ratio when `preserve_aspect_ratio` is true.][6825]
- [UI: Updated `from_style` for Taffy 0.3.3.][7859]
- [UI: Upgraded to Taffy 0.2, improving UI layout performance significantly and adding the flexbox `gap` property and `AlignContent::SpaceEvenly`.][6743]
- [UI: Use `f32::INFINITY` instead of `f32::MAX` to represent unbounded text in Text2dBounds][6807]
- [Window: expose cursor position with scale][7297]
- [Window: Make WindowId::primary() const][6582]
- [Window: revert stage changed for window closing][7296]
- [Windowing: `WindowId` is now `Entity`.][5589]
- [Windowing: Moved `changed_window` and `despawn_window` systems to `CoreStage::Last` to avoid systems making changes to the `Window` between `changed_window` and the end of the frame as they would be ignored.][7517]
- [Windowing: Requesting maximization/minimization is done on the [`Window::state`] field.][5589]
- [Windowing: Width/height consolidated into a `WindowResolution` component.][5589]
## Removed
- [App: Removed `App::add_sub_app`][7290]
- [App: Rename dynamic feature][7340]
- [ECS: Remove .on_update method to improve API consistency and clarity][7667]
- [ECS: Remove `BuildWorldChildren` impl from `WorldChildBuilder`][6727]
- [ECS: Remove a duplicate lookup in `apply_state_transitions`][7800]
- [ECS: Remove an incorrect impl of `ReadOnlySystemParam` for `NonSendMut`][7243]
- [ECS: Remove APIs deprecated in 0.9][6801]
- [ECS: Remove broken `DoubleEndedIterator` impls on event iterators][7469]
- [ECS: Remove duplicate lookups from `Resource` initialization][7174]
- [ECS: Remove useless access to archetype in `UnsafeWorldCell::fetch_table`][7665]
- [ECS: Removed `AddBundle`. `Edges::get_add_bundle` now returns `Option<ArchetypeId>`][6742]
- [ECS: Removed `Archetype::new` and `Archetype::is_empty`.][6742]
- [ECS: Removed `ArchetypeComponentId::new` and `ArchetypeComponentId::value`.][6742]
- [ECS: Removed `ArchetypeGeneration::value`][6742]
- [ECS: Removed `ArchetypeId::new` and `ArchetypeId::value`.][6742]
- [ECS: Removed `ArchetypeIdentity`.][6742]
- [ECS: Removed `Archetypes`s `Default` implementation.][6742]
- [ECS: Removed `AsSystemLabel` trait][7267]
- [ECS: Removed `Entities::alloc_at_without_replacement` and `AllocAtWithoutReplacement`.][6740]
- [ECS: Removed `Entities`s `Default` implementation.][6740]
- [ECS: Removed `EntityMeta`][6740]
- [ECS: Removed `on_hierarchy_reports_enabled` run criteria (now just uses an ad hoc resource checking run condition)][7267]
- [ECS: Removed `RunCriteriaLabel`][7267]
- [ECS: Removed `RunCriteriaLabel`][7267]
- [ECS: Removed `SystemParamFetch`, its functionality has been moved to `SystemParamState`.][6865]
- [ECS: Removed `Table::component_capacity`][4928]
- [ECS: Removed `transform_propagate_system_set`: this was a nonstandard pattern that didnt actually provide enough control. The systems are already `pub`: the docs have been updated to ensure that the third-party usage is clear.][7267]
- [ECS: removed `UnsafeWorldCell::storages` since that is probably unsound since storages contains the actual component/resource data not just metadata][7381]
- [ECS: Removed stages, and all code that mentions stages][7267]
- [ECS: Removed states have been dramatically simplified, and no longer use a stack][7267]
- [ECS: Removed systems in `RenderSet/Stage::Extract` no longer warn when they do not read data from the main world][7267]
- [ECS: Removed the bound `T: Sync` from `Local<T>` when used as an `ExclusiveSystemParam`.][7040]
- [ECS: Removed the method `ExclusiveSystemParamState::apply`.][7489]
- [ECS: Removed the trait `ExclusiveSystemParamState`, merging its functionality into `ExclusiveSystemParam`.][6919]
- [ECS: Removed the trait `SystemParamState`, merging its functionality into `SystemParam`.][6919]
- [ECS: Support `SystemParam` types with const generics][7001]
- [ECS: Use T::Storage::STORAGE_TYPE to optimize out unused branches][6800]
- [Hierarchy: Expose transform propagate systems][7145]
- [Hierarchy: Make adding children idempotent][6763]
- [Hierarchy: Remove `EntityCommands::add_children`][6942]
- [Input: Gamepad events refactor][6965]
- [Reflect: Make proc macros hygienic in bevy_reflect_derive][6752]
- [Reflect: Removed `#[module]` helper attribute for `Reflect` derives (this is not currently used)][7148]
- [Reflect: Removed `Array` as supertrait of `List`][7467]
- [Reflect: Removed `PixelInfo` and get `pixel_size` from wgpu][6820]
- [Reflect: Removed `ReflectSerialize` and `ReflectDeserialize` registrations from most glam types][6580]
- [Remove unnecessary `Default` impl of HandleType][7472]
- [Remove warning about missed events due to false positives][6730]
- [Render: Make Core Pipeline Graph Nodes Public][6605]
- [Render: Optimize color computation in prepare_uinodes][7311]
- [Render: Organized scene_viewer into plugins for reuse and organization][6936]
- [Render: put `update_frusta::<Projection>` in `UpdateProjectionFrusta` set][7526]
- [Render: Remove dependency on the mesh struct in the pbr function][7597]
- [Render: remove potential ub in render_resource_wrapper][7279]
- [Render: Remove redundant bitwise OR `TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES`][7033]
- [Render: Remove the early exit to make sure the prepass textures are cleared][7891]
- [Render: remove the image loaded check for nodes without images in extract_uinodes][7280]
- [Render: Remove unnecessary alternate create_texture path in prepare_asset for Image][6671]
- [Render: remove unused var in fxaa shader][7509]
- [Render: set AVAILABLE_STORAGE_BUFFER_BINDINGS to the actual number of buffers available][6787]
- [Render: Use `Time` `resource` instead of `Extract`ing `Time`][7316]
- [Render: use better set inheritance in render systems][7524]
- [Render: use blendstate blend for alphamode::blend][7899]
- [Render: Use Image::default for 1 pixel white texture directly][7884]
- [Rendering: Removed `bevy_render::render_phase::DrawState`. It was not usable in any form outside of `bevy_render`.][7053]
- [Rendering: Removed `BloomSettings::scale`.][6677]
- [Rendering: Removed `EntityPhaseItem` trait][6885]
- [Rendering: Removed `ExtractedJoints`.][6833]
- [Rendering: Removed `SetShadowViewBindGroup`, `queue_shadow_view_bind_group()`, and `LightMeta::shadow_view_bind_group` in favor of reusing the prepass view bind group.][7875]
- [Rendering: Removed the `render` feature group.][6912]
- [Scene: scene viewer: can select a scene from the asset path][6859]
- [Text: Warn instead of erroring when max_font_atlases is exceeded][6673]
- [Transform: Removed `GlobalTransform::translation_mut`][7134]
- [UI: Re-enable taffy send+sync assert][7769]
- [UI: Remove `TextError::ExceedMaxTextAtlases(usize)` variant][6796]
- [UI: Remove needless manual default impl of ButtonBundle][6970]
- [UI: Removed `HorizontalAlign` and `VerticalAlign`.][6807]
- [UI: Removed `ImageMode`.][6674]
- [UI: Removed `QueuedText`][7414]
- [UI: Removed the `image_mode` field from `ImageBundle`][6674]
- [UI: Removed the `Val` <-> `f32` conversion for `CalculatedSize`.][7641]
- [Update toml_edit to 0.18][7370]
- [Update tracing-chrome requirement from 0.6.0 to 0.7.0][6709]
- [Window: Remove unnecessary windows.rs file][7277]
- [Windowing: `window.always_on_top` has been removed, you can now use `window.window_level`][7480]
- [Windowing: Removed `ModifiesWindows` system label.][7517]
## Fixed
- [Asset: Fix asset_debug_server hang. There should be at most one ThreadExecut…][7825]
- [Asset: fix load_internal_binary_asset with debug_asset_server][7246]
- [Assets: Hot reloading for `LoadContext::read_asset_bytes`][6797]
- [Diagnostics: Console log messages now show when the `trace_tracy` feature was enabled.][6955]
- [ECS: Fix `last_changed()` and `set_last_changed()` for `MutUntyped`][7619]
- [ECS: Fix a miscompilation with `#[derive(SystemParam)]`][7105]
- [ECS: Fix get_unchecked_manual using archetype index instead of table row.][6625]
- [ECS: Fix ignored lifetimes in `#[derive(SystemParam)]`][7458]
- [ECS: Fix init_non_send_resource overwriting previous values][7261]
- [ECS: fix mutable aliases for a very short time if `WorldCell` is already borrowed][6639]
- [ECS: Fix partially consumed `QueryIter` and `QueryCombinationIter` having invalid `size_hint`][5214]
- [ECS: Fix PipeSystem panicking with exclusive systems][6698]
- [ECS: Fix soundness bug with `World: Send`. Dropping a `World` that contains a `!Send` resource on the wrong thread will now panic.][6534]
- [ECS: Fix Sparse Change Detection][6896]
- [ECS: Fix trait bounds for run conditions][7688]
- [ECS: Fix unsoundnes in `insert` `remove` and `despawn`][7805]
- [ECS: Fix unsoundness in `EntityMut::world_scope`][7387]
- [ECS: Fixed `DetectChanges::last_changed` returning the wrong value.][7560]
- [ECS: Fixed `DetectChangesMut::set_last_changed` not actually updating the `changed` tick.][7560]
- [ECS: Fixed `Res` and `Query` parameter never being mutually exclusive.][5105]
- [ECS: Fixed a bug that caused `#[derive(SystemParam)]` to leak the types of private fields.][7056]
- [ECS: schedule_v3: fix default set for systems not being applied][7350]
- [ECS: Stageless: close the finish channel so executor doesn't deadlock][7448]
- [ECS: Stageless: fix unapplied systems][7446]
- [Hierarchy: don't error when sending HierarchyEvents when Event type not registered][7031]
- [Hierarchy: Fix unsoundness for `propagate_recursive`][7003]
- [Hierarchy: Fixed missing `ChildAdded` events][6926]
- [Input: Avoid triggering change detection for inputs][6847]
- [Input: Fix `AxisSettings::new` only accepting invalid bounds][7233]
- [Input: Fix incorrect behavior of `just_pressed` and `just_released` in `Input<GamepadButton>`][7238]
- [Input: Removed Mobile Touch event y-axis flip][6597]
- [Reflect: bevy_reflect: Fix misplaced impls][6829]
- [Reflect: Fix bug where deserializing unit structs would fail for non-self-describing formats][6722]
- [Reflect: Fix bug where scene deserialization using certain readers could fail (e.g. `BufReader`, `File`, etc.)][6894]
- [Reflect: fix typo in bevy_reflect::impls::std GetTypeRegistration for vec like…][7520]
- [Reflect: Retain `::` after `>`, `)` or bracket when shortening type names][7755]
- [Render: bevy_core_pipeline: Fix prepass sort orders][7539]
- [Render: Cam scale cluster fix][7078]
- [Render: fix ambiguities in render schedule][7725]
- [Render: fix bloom viewport][6802]
- [Render: Fix dependency of shadow mapping on the optional `PrepassPlugin`][7878]
- [Render: Fix feature gating in texture_binding_array example][7425]
- [Render: Fix material alpha_mode in example global_vs_local_translation][6658]
- [Render: fix regex for shader define: must have at least one whitespace][7754]
- [Render: fix shader_instancing][7305]
- [Render: fix spot dir nan again][7176]
- [Render: Recreate tonemapping bind group if view uniforms buffer has changed][7904]
- [Render: Shadow render phase - pass the correct view entity][7048]
- [Render: Text2d doesn't recompute text on changes to the text's bounds][7846]
- [Render: wasm: pad globals uniform also in 2d][6643]
- [Rendering: Emission strength is now correctly interpreted by the `StandardMaterial` as linear instead of sRGB.][7897]
- [Rendering: Fix deband dithering intensity for non-HDR pipelines.][6707]
- [Rendering: Fixed StandardMaterial occlusion being incorrectly applied to direct lighting.][7051]
- [Rendering: Fixed the alpha channel of the `image::DynamicImage::ImageRgb32F` to `bevy_render::texture::Image` conversion in `bevy_render::texture::Image::from_dynamic()`.][6914]
- [Scene: Cleanup dynamic scene before building][6254]
- [Task: Fix panicking on another scope][6524]
- [UI: `Size::height` sets `width` not `height`][7478]
- [UI: Don't ignore UI scale for text][7510]
- [UI: Fix `bevy_ui` compile error without `bevy_text`][7877]
- [UI: Fix overflow scaling for images][7142]
- [UI: fix upsert_leaf not setting a MeasureFunc for new leaf nodes][7351]
- [Window: Apply `WindowDescriptor` settings in all modes][6934]
- [Window: break feedback loop when moving cursor][7298]
- [Window: create window as soon as possible][7668]
- [Window: Fix a typo on `Window::set_minimized`][7276]
- [Window: Fix closing window does not exit app in desktop_app mode][7628]
- [Window: fix cursor grab issue][7010]
- [Window: Fix set_cursor_grab_mode to try an alternative mode before giving an error][6599]
[3212]: https://github.com/bevyengine/bevy/pull/3212
[4241]: https://github.com/bevyengine/bevy/pull/4241
[4594]: https://github.com/bevyengine/bevy/pull/4594
[4777]: https://github.com/bevyengine/bevy/pull/4777
[4878]: https://github.com/bevyengine/bevy/pull/4878
[4928]: https://github.com/bevyengine/bevy/pull/4928
[5105]: https://github.com/bevyengine/bevy/pull/5105
[5214]: https://github.com/bevyengine/bevy/pull/5214
[5346]: https://github.com/bevyengine/bevy/pull/5346
[5400]: https://github.com/bevyengine/bevy/pull/5400
[5428]: https://github.com/bevyengine/bevy/pull/5428
[5454]: https://github.com/bevyengine/bevy/pull/5454
[5542]: https://github.com/bevyengine/bevy/pull/5542
[5589]: https://github.com/bevyengine/bevy/pull/5589
[5735]: https://github.com/bevyengine/bevy/pull/5735
[5900]: https://github.com/bevyengine/bevy/pull/5900
[6028]: https://github.com/bevyengine/bevy/pull/6028
[6035]: https://github.com/bevyengine/bevy/pull/6035
[6129]: https://github.com/bevyengine/bevy/pull/6129
[6201]: https://github.com/bevyengine/bevy/pull/6201
[6235]: https://github.com/bevyengine/bevy/pull/6235
[6245]: https://github.com/bevyengine/bevy/pull/6245
[6254]: https://github.com/bevyengine/bevy/pull/6254
[6284]: https://github.com/bevyengine/bevy/pull/6284
[6292]: https://github.com/bevyengine/bevy/pull/6292
[6305]: https://github.com/bevyengine/bevy/pull/6305
[6320]: https://github.com/bevyengine/bevy/pull/6320
[6388]: https://github.com/bevyengine/bevy/pull/6388
[6391]: https://github.com/bevyengine/bevy/pull/6391
[6402]: https://github.com/bevyengine/bevy/pull/6402
[6404]: https://github.com/bevyengine/bevy/pull/6404
[6412]: https://github.com/bevyengine/bevy/pull/6412
[6436]: https://github.com/bevyengine/bevy/pull/6436
[6484]: https://github.com/bevyengine/bevy/pull/6484
[6496]: https://github.com/bevyengine/bevy/pull/6496
[6503]: https://github.com/bevyengine/bevy/pull/6503
[6524]: https://github.com/bevyengine/bevy/pull/6524
[6527]: https://github.com/bevyengine/bevy/pull/6527
[6534]: https://github.com/bevyengine/bevy/pull/6534
[6539]: https://github.com/bevyengine/bevy/pull/6539
[6547]: https://github.com/bevyengine/bevy/pull/6547
[6557]: https://github.com/bevyengine/bevy/pull/6557
[6558]: https://github.com/bevyengine/bevy/pull/6558
[6560]: https://github.com/bevyengine/bevy/pull/6560
[6561]: https://github.com/bevyengine/bevy/pull/6561
[6564]: https://github.com/bevyengine/bevy/pull/6564
[6566]: https://github.com/bevyengine/bevy/pull/6566
[6571]: https://github.com/bevyengine/bevy/pull/6571
[6578]: https://github.com/bevyengine/bevy/pull/6578
[6580]: https://github.com/bevyengine/bevy/pull/6580
[6582]: https://github.com/bevyengine/bevy/pull/6582
[6587]: https://github.com/bevyengine/bevy/pull/6587
[6592]: https://github.com/bevyengine/bevy/pull/6592
[6597]: https://github.com/bevyengine/bevy/pull/6597
[6599]: https://github.com/bevyengine/bevy/pull/6599
[6602]: https://github.com/bevyengine/bevy/pull/6602
[6605]: https://github.com/bevyengine/bevy/pull/6605
[6607]: https://github.com/bevyengine/bevy/pull/6607
[6612]: https://github.com/bevyengine/bevy/pull/6612
[6618]: https://github.com/bevyengine/bevy/pull/6618
[6625]: https://github.com/bevyengine/bevy/pull/6625
[6633]: https://github.com/bevyengine/bevy/pull/6633
[6639]: https://github.com/bevyengine/bevy/pull/6639
[6643]: https://github.com/bevyengine/bevy/pull/6643
[6644]: https://github.com/bevyengine/bevy/pull/6644
[6653]: https://github.com/bevyengine/bevy/pull/6653
[6658]: https://github.com/bevyengine/bevy/pull/6658
[6663]: https://github.com/bevyengine/bevy/pull/6663
[6664]: https://github.com/bevyengine/bevy/pull/6664
[6671]: https://github.com/bevyengine/bevy/pull/6671
[6672]: https://github.com/bevyengine/bevy/pull/6672
[6673]: https://github.com/bevyengine/bevy/pull/6673
[6674]: https://github.com/bevyengine/bevy/pull/6674
[6677]: https://github.com/bevyengine/bevy/pull/6677
[6681]: https://github.com/bevyengine/bevy/pull/6681
[6683]: https://github.com/bevyengine/bevy/pull/6683
[6692]: https://github.com/bevyengine/bevy/pull/6692
[6694]: https://github.com/bevyengine/bevy/pull/6694
[6696]: https://github.com/bevyengine/bevy/pull/6696
[6698]: https://github.com/bevyengine/bevy/pull/6698
[6699]: https://github.com/bevyengine/bevy/pull/6699
[6707]: https://github.com/bevyengine/bevy/pull/6707
[6709]: https://github.com/bevyengine/bevy/pull/6709
[6720]: https://github.com/bevyengine/bevy/pull/6720
[6722]: https://github.com/bevyengine/bevy/pull/6722
[6727]: https://github.com/bevyengine/bevy/pull/6727
[6730]: https://github.com/bevyengine/bevy/pull/6730
[6732]: https://github.com/bevyengine/bevy/pull/6732
[6734]: https://github.com/bevyengine/bevy/pull/6734
[6740]: https://github.com/bevyengine/bevy/pull/6740
[6742]: https://github.com/bevyengine/bevy/pull/6742
[6743]: https://github.com/bevyengine/bevy/pull/6743
[6745]: https://github.com/bevyengine/bevy/pull/6745
[6751]: https://github.com/bevyengine/bevy/pull/6751
[6752]: https://github.com/bevyengine/bevy/pull/6752
[6755]: https://github.com/bevyengine/bevy/pull/6755
[6761]: https://github.com/bevyengine/bevy/pull/6761
[6763]: https://github.com/bevyengine/bevy/pull/6763
[6781]: https://github.com/bevyengine/bevy/pull/6781
[6785]: https://github.com/bevyengine/bevy/pull/6785
[6786]: https://github.com/bevyengine/bevy/pull/6786
[6787]: https://github.com/bevyengine/bevy/pull/6787
[6796]: https://github.com/bevyengine/bevy/pull/6796
[6797]: https://github.com/bevyengine/bevy/pull/6797
[6800]: https://github.com/bevyengine/bevy/pull/6800
[6801]: https://github.com/bevyengine/bevy/pull/6801
[6802]: https://github.com/bevyengine/bevy/pull/6802
[6807]: https://github.com/bevyengine/bevy/pull/6807
[6809]: https://github.com/bevyengine/bevy/pull/6809
[6811]: https://github.com/bevyengine/bevy/pull/6811
[6816]: https://github.com/bevyengine/bevy/pull/6816
[6817]: https://github.com/bevyengine/bevy/pull/6817
[6820]: https://github.com/bevyengine/bevy/pull/6820
[6825]: https://github.com/bevyengine/bevy/pull/6825
[6828]: https://github.com/bevyengine/bevy/pull/6828
[6829]: https://github.com/bevyengine/bevy/pull/6829
[6831]: https://github.com/bevyengine/bevy/pull/6831
[6833]: https://github.com/bevyengine/bevy/pull/6833
[6843]: https://github.com/bevyengine/bevy/pull/6843
[6847]: https://github.com/bevyengine/bevy/pull/6847
[6851]: https://github.com/bevyengine/bevy/pull/6851
[6853]: https://github.com/bevyengine/bevy/pull/6853
[6859]: https://github.com/bevyengine/bevy/pull/6859
[6865]: https://github.com/bevyengine/bevy/pull/6865
[6867]: https://github.com/bevyengine/bevy/pull/6867
[6874]: https://github.com/bevyengine/bevy/pull/6874
[6878]: https://github.com/bevyengine/bevy/pull/6878
[6881]: https://github.com/bevyengine/bevy/pull/6881
[6885]: https://github.com/bevyengine/bevy/pull/6885
[6894]: https://github.com/bevyengine/bevy/pull/6894
[6896]: https://github.com/bevyengine/bevy/pull/6896
[6899]: https://github.com/bevyengine/bevy/pull/6899
[6900]: https://github.com/bevyengine/bevy/pull/6900
[6902]: https://github.com/bevyengine/bevy/pull/6902
[6908]: https://github.com/bevyengine/bevy/pull/6908
[6912]: https://github.com/bevyengine/bevy/pull/6912
[6914]: https://github.com/bevyengine/bevy/pull/6914
[6919]: https://github.com/bevyengine/bevy/pull/6919
[6921]: https://github.com/bevyengine/bevy/pull/6921
[6922]: https://github.com/bevyengine/bevy/pull/6922
[6926]: https://github.com/bevyengine/bevy/pull/6926
[6934]: https://github.com/bevyengine/bevy/pull/6934
[6935]: https://github.com/bevyengine/bevy/pull/6935
[6936]: https://github.com/bevyengine/bevy/pull/6936
[6937]: https://github.com/bevyengine/bevy/pull/6937
[6940]: https://github.com/bevyengine/bevy/pull/6940
[6942]: https://github.com/bevyengine/bevy/pull/6942
[6946]: https://github.com/bevyengine/bevy/pull/6946
[6955]: https://github.com/bevyengine/bevy/pull/6955
[6957]: https://github.com/bevyengine/bevy/pull/6957
[6965]: https://github.com/bevyengine/bevy/pull/6965
[6970]: https://github.com/bevyengine/bevy/pull/6970
[6973]: https://github.com/bevyengine/bevy/pull/6973
[6980]: https://github.com/bevyengine/bevy/pull/6980
[6988]: https://github.com/bevyengine/bevy/pull/6988
[6995]: https://github.com/bevyengine/bevy/pull/6995
[7001]: https://github.com/bevyengine/bevy/pull/7001
[7003]: https://github.com/bevyengine/bevy/pull/7003
[7009]: https://github.com/bevyengine/bevy/pull/7009
[7010]: https://github.com/bevyengine/bevy/pull/7010
[7013]: https://github.com/bevyengine/bevy/pull/7013
[7014]: https://github.com/bevyengine/bevy/pull/7014
[7015]: https://github.com/bevyengine/bevy/pull/7015
[7016]: https://github.com/bevyengine/bevy/pull/7016
[7017]: https://github.com/bevyengine/bevy/pull/7017
[7020]: https://github.com/bevyengine/bevy/pull/7020
[7023]: https://github.com/bevyengine/bevy/pull/7023
[7024]: https://github.com/bevyengine/bevy/pull/7024
[7031]: https://github.com/bevyengine/bevy/pull/7031
[7033]: https://github.com/bevyengine/bevy/pull/7033
[7039]: https://github.com/bevyengine/bevy/pull/7039
[7040]: https://github.com/bevyengine/bevy/pull/7040
[7041]: https://github.com/bevyengine/bevy/pull/7041
[7043]: https://github.com/bevyengine/bevy/pull/7043
[7046]: https://github.com/bevyengine/bevy/pull/7046
[7048]: https://github.com/bevyengine/bevy/pull/7048
[7051]: https://github.com/bevyengine/bevy/pull/7051
[7053]: https://github.com/bevyengine/bevy/pull/7053
[7056]: https://github.com/bevyengine/bevy/pull/7056
[7060]: https://github.com/bevyengine/bevy/pull/7060
[7063]: https://github.com/bevyengine/bevy/pull/7063
[7064]: https://github.com/bevyengine/bevy/pull/7064
[7069]: https://github.com/bevyengine/bevy/pull/7069
[7076]: https://github.com/bevyengine/bevy/pull/7076
[7078]: https://github.com/bevyengine/bevy/pull/7078
[7083]: https://github.com/bevyengine/bevy/pull/7083
[7084]: https://github.com/bevyengine/bevy/pull/7084
[7087]: https://github.com/bevyengine/bevy/pull/7087
[7094]: https://github.com/bevyengine/bevy/pull/7094
[7097]: https://github.com/bevyengine/bevy/pull/7097
[7105]: https://github.com/bevyengine/bevy/pull/7105
[7113]: https://github.com/bevyengine/bevy/pull/7113
[7114]: https://github.com/bevyengine/bevy/pull/7114
[7117]: https://github.com/bevyengine/bevy/pull/7117
[7125]: https://github.com/bevyengine/bevy/pull/7125
[7127]: https://github.com/bevyengine/bevy/pull/7127
[7134]: https://github.com/bevyengine/bevy/pull/7134
[7142]: https://github.com/bevyengine/bevy/pull/7142
[7145]: https://github.com/bevyengine/bevy/pull/7145
[7146]: https://github.com/bevyengine/bevy/pull/7146
[7148]: https://github.com/bevyengine/bevy/pull/7148
[7149]: https://github.com/bevyengine/bevy/pull/7149
[7150]: https://github.com/bevyengine/bevy/pull/7150
[7151]: https://github.com/bevyengine/bevy/pull/7151
[7161]: https://github.com/bevyengine/bevy/pull/7161
[7164]: https://github.com/bevyengine/bevy/pull/7164
[7166]: https://github.com/bevyengine/bevy/pull/7166
[7174]: https://github.com/bevyengine/bevy/pull/7174
[7176]: https://github.com/bevyengine/bevy/pull/7176
[7181]: https://github.com/bevyengine/bevy/pull/7181
[7182]: https://github.com/bevyengine/bevy/pull/7182
[7186]: https://github.com/bevyengine/bevy/pull/7186
[7199]: https://github.com/bevyengine/bevy/pull/7199
[7205]: https://github.com/bevyengine/bevy/pull/7205
[7206]: https://github.com/bevyengine/bevy/pull/7206
[7222]: https://github.com/bevyengine/bevy/pull/7222
[7233]: https://github.com/bevyengine/bevy/pull/7233
[7238]: https://github.com/bevyengine/bevy/pull/7238
[7243]: https://github.com/bevyengine/bevy/pull/7243
[7245]: https://github.com/bevyengine/bevy/pull/7245
[7246]: https://github.com/bevyengine/bevy/pull/7246
[7248]: https://github.com/bevyengine/bevy/pull/7248
[7261]: https://github.com/bevyengine/bevy/pull/7261
[7262]: https://github.com/bevyengine/bevy/pull/7262
[7267]: https://github.com/bevyengine/bevy/pull/7267
[7276]: https://github.com/bevyengine/bevy/pull/7276
[7277]: https://github.com/bevyengine/bevy/pull/7277
[7279]: https://github.com/bevyengine/bevy/pull/7279
[7280]: https://github.com/bevyengine/bevy/pull/7280
[7283]: https://github.com/bevyengine/bevy/pull/7283
[7284]: https://github.com/bevyengine/bevy/pull/7284
[7290]: https://github.com/bevyengine/bevy/pull/7290
[7292]: https://github.com/bevyengine/bevy/pull/7292
[7296]: https://github.com/bevyengine/bevy/pull/7296
[7297]: https://github.com/bevyengine/bevy/pull/7297
[7298]: https://github.com/bevyengine/bevy/pull/7298
[7304]: https://github.com/bevyengine/bevy/pull/7304
[7305]: https://github.com/bevyengine/bevy/pull/7305
[7306]: https://github.com/bevyengine/bevy/pull/7306
[7311]: https://github.com/bevyengine/bevy/pull/7311
[7316]: https://github.com/bevyengine/bevy/pull/7316
[7321]: https://github.com/bevyengine/bevy/pull/7321
[7324]: https://github.com/bevyengine/bevy/pull/7324
[7325]: https://github.com/bevyengine/bevy/pull/7325
[7340]: https://github.com/bevyengine/bevy/pull/7340
[7343]: https://github.com/bevyengine/bevy/pull/7343
[7350]: https://github.com/bevyengine/bevy/pull/7350
[7351]: https://github.com/bevyengine/bevy/pull/7351
[7354]: https://github.com/bevyengine/bevy/pull/7354
[7356]: https://github.com/bevyengine/bevy/pull/7356
[7364]: https://github.com/bevyengine/bevy/pull/7364
[7370]: https://github.com/bevyengine/bevy/pull/7370
[7379]: https://github.com/bevyengine/bevy/pull/7379
[7381]: https://github.com/bevyengine/bevy/pull/7381
[7385]: https://github.com/bevyengine/bevy/pull/7385
[7387]: https://github.com/bevyengine/bevy/pull/7387
[7392]: https://github.com/bevyengine/bevy/pull/7392
[7396]: https://github.com/bevyengine/bevy/pull/7396
[7399]: https://github.com/bevyengine/bevy/pull/7399
[7401]: https://github.com/bevyengine/bevy/pull/7401
[7414]: https://github.com/bevyengine/bevy/pull/7414
[7415]: https://github.com/bevyengine/bevy/pull/7415
[7423]: https://github.com/bevyengine/bevy/pull/7423
[7425]: https://github.com/bevyengine/bevy/pull/7425
[7431]: https://github.com/bevyengine/bevy/pull/7431
[7432]: https://github.com/bevyengine/bevy/pull/7432
[7444]: https://github.com/bevyengine/bevy/pull/7444
[7445]: https://github.com/bevyengine/bevy/pull/7445
[7446]: https://github.com/bevyengine/bevy/pull/7446
[7448]: https://github.com/bevyengine/bevy/pull/7448
[7449]: https://github.com/bevyengine/bevy/pull/7449
[7452]: https://github.com/bevyengine/bevy/pull/7452
[7456]: https://github.com/bevyengine/bevy/pull/7456
[7458]: https://github.com/bevyengine/bevy/pull/7458
[7463]: https://github.com/bevyengine/bevy/pull/7463
[7466]: https://github.com/bevyengine/bevy/pull/7466
[7467]: https://github.com/bevyengine/bevy/pull/7467
[7468]: https://github.com/bevyengine/bevy/pull/7468
[7469]: https://github.com/bevyengine/bevy/pull/7469
[7471]: https://github.com/bevyengine/bevy/pull/7471
[7472]: https://github.com/bevyengine/bevy/pull/7472
[7475]: https://github.com/bevyengine/bevy/pull/7475
[7477]: https://github.com/bevyengine/bevy/pull/7477
[7478]: https://github.com/bevyengine/bevy/pull/7478
[7480]: https://github.com/bevyengine/bevy/pull/7480
[7481]: https://github.com/bevyengine/bevy/pull/7481
[7483]: https://github.com/bevyengine/bevy/pull/7483
[7489]: https://github.com/bevyengine/bevy/pull/7489
[7491]: https://github.com/bevyengine/bevy/pull/7491
[7493]: https://github.com/bevyengine/bevy/pull/7493
[7498]: https://github.com/bevyengine/bevy/pull/7498
[7503]: https://github.com/bevyengine/bevy/pull/7503
[7509]: https://github.com/bevyengine/bevy/pull/7509
[7510]: https://github.com/bevyengine/bevy/pull/7510
[7512]: https://github.com/bevyengine/bevy/pull/7512
[7514]: https://github.com/bevyengine/bevy/pull/7514
[7517]: https://github.com/bevyengine/bevy/pull/7517
[7518]: https://github.com/bevyengine/bevy/pull/7518
[7519]: https://github.com/bevyengine/bevy/pull/7519
[7520]: https://github.com/bevyengine/bevy/pull/7520
[7522]: https://github.com/bevyengine/bevy/pull/7522
[7524]: https://github.com/bevyengine/bevy/pull/7524
[7526]: https://github.com/bevyengine/bevy/pull/7526
[7527]: https://github.com/bevyengine/bevy/pull/7527
[7530]: https://github.com/bevyengine/bevy/pull/7530
[7535]: https://github.com/bevyengine/bevy/pull/7535
[7537]: https://github.com/bevyengine/bevy/pull/7537
[7539]: https://github.com/bevyengine/bevy/pull/7539
[7546]: https://github.com/bevyengine/bevy/pull/7546
[7547]: https://github.com/bevyengine/bevy/pull/7547
[7548]: https://github.com/bevyengine/bevy/pull/7548
[7559]: https://github.com/bevyengine/bevy/pull/7559
[7560]: https://github.com/bevyengine/bevy/pull/7560
[7561]: https://github.com/bevyengine/bevy/pull/7561
[7568]: https://github.com/bevyengine/bevy/pull/7568
[7574]: https://github.com/bevyengine/bevy/pull/7574
[7579]: https://github.com/bevyengine/bevy/pull/7579
[7582]: https://github.com/bevyengine/bevy/pull/7582
[7583]: https://github.com/bevyengine/bevy/pull/7583
[7586]: https://github.com/bevyengine/bevy/pull/7586
[7594]: https://github.com/bevyengine/bevy/pull/7594
[7596]: https://github.com/bevyengine/bevy/pull/7596
[7597]: https://github.com/bevyengine/bevy/pull/7597
[7598]: https://github.com/bevyengine/bevy/pull/7598
[7605]: https://github.com/bevyengine/bevy/pull/7605
[7617]: https://github.com/bevyengine/bevy/pull/7617
[7619]: https://github.com/bevyengine/bevy/pull/7619
[7623]: https://github.com/bevyengine/bevy/pull/7623
[7626]: https://github.com/bevyengine/bevy/pull/7626
[7628]: https://github.com/bevyengine/bevy/pull/7628
[7638]: https://github.com/bevyengine/bevy/pull/7638
[7639]: https://github.com/bevyengine/bevy/pull/7639
[7641]: https://github.com/bevyengine/bevy/pull/7641
[7653]: https://github.com/bevyengine/bevy/pull/7653
[7660]: https://github.com/bevyengine/bevy/pull/7660
[7664]: https://github.com/bevyengine/bevy/pull/7664
[7665]: https://github.com/bevyengine/bevy/pull/7665
[7667]: https://github.com/bevyengine/bevy/pull/7667
[7668]: https://github.com/bevyengine/bevy/pull/7668
[7671]: https://github.com/bevyengine/bevy/pull/7671
[7674]: https://github.com/bevyengine/bevy/pull/7674
[7675]: https://github.com/bevyengine/bevy/pull/7675
[7677]: https://github.com/bevyengine/bevy/pull/7677
[7681]: https://github.com/bevyengine/bevy/pull/7681
[7683]: https://github.com/bevyengine/bevy/pull/7683
[7684]: https://github.com/bevyengine/bevy/pull/7684
[7688]: https://github.com/bevyengine/bevy/pull/7688
[7696]: https://github.com/bevyengine/bevy/pull/7696
[7701]: https://github.com/bevyengine/bevy/pull/7701
[7709]: https://github.com/bevyengine/bevy/pull/7709
[7713]: https://github.com/bevyengine/bevy/pull/7713
[7715]: https://github.com/bevyengine/bevy/pull/7715
[7717]: https://github.com/bevyengine/bevy/pull/7717
[7718]: https://github.com/bevyengine/bevy/pull/7718
[7720]: https://github.com/bevyengine/bevy/pull/7720
[7723]: https://github.com/bevyengine/bevy/pull/7723
[7724]: https://github.com/bevyengine/bevy/pull/7724
[7725]: https://github.com/bevyengine/bevy/pull/7725
[7726]: https://github.com/bevyengine/bevy/pull/7726
[7727]: https://github.com/bevyengine/bevy/pull/7727
[7737]: https://github.com/bevyengine/bevy/pull/7737
[7740]: https://github.com/bevyengine/bevy/pull/7740
[7741]: https://github.com/bevyengine/bevy/pull/7741
[7744]: https://github.com/bevyengine/bevy/pull/7744
[7745]: https://github.com/bevyengine/bevy/pull/7745
[7753]: https://github.com/bevyengine/bevy/pull/7753
[7754]: https://github.com/bevyengine/bevy/pull/7754
[7755]: https://github.com/bevyengine/bevy/pull/7755
[7756]: https://github.com/bevyengine/bevy/pull/7756
[7766]: https://github.com/bevyengine/bevy/pull/7766
[7769]: https://github.com/bevyengine/bevy/pull/7769
[7782]: https://github.com/bevyengine/bevy/pull/7782
[7784]: https://github.com/bevyengine/bevy/pull/7784
[7786]: https://github.com/bevyengine/bevy/pull/7786
[7788]: https://github.com/bevyengine/bevy/pull/7788
[7790]: https://github.com/bevyengine/bevy/pull/7790
[7793]: https://github.com/bevyengine/bevy/pull/7793
[7796]: https://github.com/bevyengine/bevy/pull/7796
[7798]: https://github.com/bevyengine/bevy/pull/7798
[7800]: https://github.com/bevyengine/bevy/pull/7800
[7805]: https://github.com/bevyengine/bevy/pull/7805
[7806]: https://github.com/bevyengine/bevy/pull/7806
[7810]: https://github.com/bevyengine/bevy/pull/7810
[7815]: https://github.com/bevyengine/bevy/pull/7815
[7825]: https://github.com/bevyengine/bevy/pull/7825
[7829]: https://github.com/bevyengine/bevy/pull/7829
[7841]: https://github.com/bevyengine/bevy/pull/7841
[7846]: https://github.com/bevyengine/bevy/pull/7846
[7847]: https://github.com/bevyengine/bevy/pull/7847
[7851]: https://github.com/bevyengine/bevy/pull/7851
[7859]: https://github.com/bevyengine/bevy/pull/7859
[7860]: https://github.com/bevyengine/bevy/pull/7860
[7863]: https://github.com/bevyengine/bevy/pull/7863
[7866]: https://github.com/bevyengine/bevy/pull/7866
[7870]: https://github.com/bevyengine/bevy/pull/7870
[7875]: https://github.com/bevyengine/bevy/pull/7875
[7877]: https://github.com/bevyengine/bevy/pull/7877
[7878]: https://github.com/bevyengine/bevy/pull/7878
[7883]: https://github.com/bevyengine/bevy/pull/7883
[7884]: https://github.com/bevyengine/bevy/pull/7884
[7890]: https://github.com/bevyengine/bevy/pull/7890
[7891]: https://github.com/bevyengine/bevy/pull/7891
[7895]: https://github.com/bevyengine/bevy/pull/7895
[7897]: https://github.com/bevyengine/bevy/pull/7897
[7899]: https://github.com/bevyengine/bevy/pull/7899
[7904]: https://github.com/bevyengine/bevy/pull/7904
## Version 0.9.0 (2022-11-12)
### Added
- [Bloom][6397]
- [Add FXAA postprocessing][6393]
- [Fix color banding by dithering image before quantization][5264]
- [Plugins own their settings. Rework PluginGroup trait.][6336]
- [Add global time scaling][5752]
- [add globals to mesh view bind group][5409]
- [Add UI scaling][5814]
- [Add FromReflect for Timer][6422]
- [Re-add local bool `has_received_time` in `time_system`][6357]
- [Add default implementation of Serialize and Deserialize to Timer and Stopwatch][6248]
- [add time wrapping to Time][5982]
- [Stopwatch elapsed secs f64][5978]
- [Remaining fn in Timer][5971]
- [Support array / cubemap / cubemap array textures in KTX2][5325]
- [Add methods for silencing system-order ambiguity warnings][6158]
- [bevy_dynamic_plugin: make it possible to handle loading errors][6437]
- [can get the settings of a plugin from the app][6372]
- [Use plugin setup for resource only used at setup time][6360]
- [Add `TimeUpdateStrategy` resource for manual `Time` updating][6159]
- [dynamic scene builder][6227]
- [Create a scene from a dynamic scene][6229]
- [Scene example: write file in a task][5952]
- [Add writing of scene data to Scene example][5949]
- [can clone a scene][5855]
- [Add "end of main pass post processing" render graph node][6468]
- [Add `Camera::viewport_to_world`][6126]
- [Sprite: allow using a sub-region (Rect) of the image][6014]
- [Add missing type registrations for bevy_math types][5758]
- [Add `serialize` feature to `bevy_core`][6423]
- [add serialize feature to bevy_transform][6379]
- [Add associated constant `IDENTITY` to `Transform` and friends.][5340]
- [bevy_reflect: Add `Reflect::into_reflect`][6502]
- [Add reflect_owned][6494]
- [`Reflect` for `Tonemapping` and `ClusterConfig`][6488]
- [add `ReflectDefault` to std types][6429]
- [Add FromReflect for Visibility][6410]
- [Register `RenderLayers` type in `CameraPlugin`][6308]
- [Enable Constructing ReflectComponent/Resource][6257]
- [Support multiple `#[reflect]`/`#[reflect_value]` + improve error messages][6237]
- [Reflect Default for GlobalTransform][6200]
- [Impl Reflect for PathBuf and OsString][6193]
- [Reflect Default for `ComputedVisibility` and `Handle<T>`][6187]
- [Register `Wireframe` type][6152]
- [Derive `FromReflect` for `Transform` and `GlobalTransform`][6015]
- [Make arrays behave like lists in reflection][5987]
- [Implement `Debug` for dynamic types][5948]
- [Implemented `Reflect` for all the ranges][5806]
- [Add `pop` method for `List` trait.][5797]
- [bevy_reflect: `GetTypeRegistration` for `SmallVec<T>`][5782]
- [register missing reflect types][5747]
- [bevy_reflect: Get owned fields][5728]
- [bevy_reflect: Add `FromReflect` to the prelude][5720]
- [implement `Reflect` for `Input<T>`, some misc improvements to reflect value derive][5676]
- [register `Cow<'static, str>` for reflection][5664]
- [bevy_reflect: Relax bounds on `Option<T>`][5658]
- [remove `ReflectMut` in favor of `Mut<dyn Reflect>`][5630]
- [add some info from `ReflectPathError` to the error messages][5626]
- [Added reflect/from reflect impls for NonZero integer types][5556]
- [bevy_reflect: Update enum derives][5473]
- [Add `reflect(skip_serializing)` which retains reflection but disables automatic serialization][5250]
- [bevy_reflect: Reflect enums][4761]
- [Disabling default features support in bevy_ecs, bevy_reflect and bevy][5993]
- [expose window alpha mode][6331]
- [Make bevy_window and bevy_input events serializable][6180]
- [Add window resizing example][5813]
- [feat: add GamepadInfo, expose gamepad names][6342]
- [Derive `Reflect` + `FromReflect` for input types][6232]
- [Make TouchInput and ForceTouch serializable][6191]
- [Add a Gamepad Viewer tool to examples][6074]
- [Derived `Copy` trait for `bevy_input` events, `Serialize`/`Deserialize` for events in `bevy_input` and `bevy_windows`, `PartialEq` for events in both, and `Eq` where possible in both.][6023]
- [Support for additional gamepad buttons and axis][5853]
- [Added keyboard scan input event][5495]
- [Add `set_parent` and `remove_parent` to `EntityCommands`][6189]
- [Add methods to `Query<&Children>` and `Query<&Parent>` to iterate over descendants and ancestors][6185]
- [Add `is_finished` to `Task<T>`][6444]
- [Expose mint feature in bevy_math/glam][5857]
- [Utility methods for Val][6134]
- [Register missing bevy_text types][6029]
- [Add additional constructors for `UiRect` to specify values for specific fields][5988]
- [Add AUTO and UNDEFINED const constructors for `Size`][5761]
- [Add Exponential Moving Average into diagnostics][4992]
- [Add `send_event` and friends to `WorldCell`][6515]
- [Add a method for accessing the width of a `Table`][6249]
- [Add iter_entities to World #6228][6242]
- [Adding Debug implementations for App, Stage, Schedule, Query, QueryState, etc.][6214]
- [Add a method for mapping `Mut<T>` -> `Mut<U>`][6199]
- [implemented #[bundle(ignore)]][6123]
- [Allow access to non-send resource through `World::resource_scope`][6113]
- [Add get_entity to Commands][5854]
- [Added the ability to get or set the last change tick of a system.][5838]
- [Add a module for common system `chain`/`pipe` adapters][5776]
- [SystemParam for the name of the system you are currently in][5731]
- [Warning message for missing events][5730]
- [Add a change detection bypass and manual control over change ticks][5635]
- [Add into_world_mut to EntityMut][5586]
- [Add `FromWorld` bound to `T` in `Local<T>`][5481]
- [Add `From<EntityMut>` for EntityRef (fixes #5459)][5461]
- [Implement IntoIterator for ECS wrapper types.][5096]
- [add `Res::clone`][4109]
- [Add CameraRenderGraph::set][6470]
- [Use wgsl saturate][6318]
- [Add mutating `toggle` method to `Visibility` component][6268]
- [Add globals struct to mesh2d][6222]
- [add support for .comp glsl shaders][6084]
- [Implement `IntoIterator` for `&Extract<P>`][6025]
- [add Debug, Copy, Clone derives to Circle][6009]
- [Add TextureFormat::Rg16Unorm support for Image and derive Resource for SpecializedComputePipelines][5991]
- [Add `bevy_render::texture::ImageSettings` to prelude][5566]
- [Add `Projection` component to prelude.][5557]
- [Expose `Image` conversion functions (fixes #5452)][5527]
- [Macro for Loading Internal Binary Assets][6478]
- [Add `From<String>` for `AssetPath<'a>`][6337]
- [Add Eq & PartialEq to AssetPath][6274]
- [add `ReflectAsset` and `ReflectHandle`][5923]
- [Add warning when using load_folder on web][5827]
- [Expose rodio's Source and Sample traits in bevy_audio][6374]
- [Add a way to toggle `AudioSink`][6321]
### Changed
- [separate tonemapping and upscaling passes][3425]
- [Rework ViewTarget to better support post processing][6415]
- [bevy_reflect: Improve serialization format even more][5723]
- [bevy_reflect: Binary formats][6140]
- [Unique plugins][6411]
- [Support arbitrary RenderTarget texture formats][6380]
- [Make `Resource` trait opt-in, requiring `#[derive(Resource)]` V2][5577]
- [Replace `WorldQueryGats` trait with actual gats][6319]
- [Change UI coordinate system to have origin at top left corner][6000]
- [Move the cursor's origin back to the bottom-left][6533]
- [Add z-index support with a predictable UI stack][5877]
- [TaskPool Panic Handling][6443]
- [Implement `Bundle` for `Component`. Use `Bundle` tuples for insertion][2975]
- [Spawn now takes a Bundle][6054]
- [make `WorldQuery` very flat][5205]
- [Accept Bundles for insert and remove. Deprecate insert/remove_bundle][6039]
- [Exclusive Systems Now Implement `System`. Flexible Exclusive System Params][6083]
- [bevy_scene: Serialize entities to map][6416]
- [bevy_scene: Stabilize entity order in `DynamicSceneBuilder`][6382]
- [bevy_scene: Replace root list with struct][6354]
- [bevy_scene: Use map for scene `components`][6345]
- [Start running systems while prepare_systems is running][4919]
- [Extract Resources into their own dedicated storage][4809]
- [get proper texture format after the renderer is initialized, fix #3897][5413]
- [Add getters and setters for `InputAxis` and `ButtonSettings`][6088]
- [Clean up Fetch code][4800]
- [Nested spawns on scope][4466]
- [Skip empty archetypes and tables when iterating over queries][4724]
- [Increase the `MAX_DIRECTIONAL_LIGHTS` from 1 to 10][6066]
- [bevy_pbr: Normalize skinned normals][6543]
- [remove mandatory mesh attributes][6127]
- [Rename `play` to `start` and add new `play` method that won't overwrite the existing animation if it's already playing][6350]
- [Replace the `bool` argument of `Timer` with `TimerMode`][6247]
- [improve panic messages for add_system_to_stage and add_system_set_to_stage][5847]
- [Use default serde impls for Entity][6194]
- [scenes: simplify return type of iter_instance_entities][5994]
- [Consistently use `PI` to specify angles in examples.][5825]
- [Remove `Transform::apply_non_uniform_scale`][6133]
- [Rename `Transform::mul_vec3` to `transform_point` and improve docs][6132]
- [make `register` on `TypeRegistry` idempotent][6487]
- [do not set cursor grab on window creation if not asked for][6381]
- [Make `raw_window_handle` field in `Window` and `ExtractedWindow` an `Option`.][6114]
- [Support monitor selection for all window modes.][5878]
- [`Gamepad` type is `Copy`; do not require / return references to it in `Gamepads` API][5296]
- [Update tracing-chrome to 0.6.0][6398]
- [Update to ron 0.8][5864]
- [Update clap requirement from 3.2 to 4.0][6303]
- [Update glam 0.22, hexasphere 8.0, encase 0.4][6427]
- [Update `wgpu` to 0.14.0, `naga` to `0.10.0`, `winit` to 0.27.4, `raw-window-handle` to 0.5.0, `ndk` to 0.7][6218]
- [Update to notify 5.0 stable][5865]
- [Update rodio requirement from 0.15 to 0.16][6020]
- [remove copyless][6100]
- [Mark `Task` as `#[must_use]`][6068]
- [Swap out num_cpus for std::thread::available_parallelism][4970]
- [Cleaning up NodeBundle, and some slight UI module re-organization][6473]
- [Make the default background color of `NodeBundle` transparent][6211]
- [Rename `UiColor` to `BackgroundColor`][6087]
- [changed diagnostics from seconds to milliseconds][5554]
- [Remove unnecesary branches/panics from Query accesses][6461]
- [`debug_checked_unwrap` should track its caller][6452]
- [Speed up `Query::get_many` and add benchmarks][6400]
- [Rename system chaining to system piping][6230]
- [[Fixes #6059] ``Entity``'s “ID” should be named “index” instead][6107]
- [`Query` filter types must be `ReadOnlyWorldQuery`][6008]
- [Remove ambiguity sets][5916]
- [relax `Sized` bounds around change detection types][5917]
- [Remove ExactSizeIterator from QueryCombinationIter][5895]
- [Remove Sync bound from Command][5871]
- [Make most `Entity` methods `const`][5688]
- [Remove `insert_resource_with_id`][5608]
- [Avoid making `Fetch`s `Clone`][5593]
- [Remove `Sync` bound from `Local`][5483]
- [Replace `many_for_each_mut` with `iter_many_mut`.][5402]
- [bevy_ecs: Use 32-bit entity ID cursor on platforms without AtomicI64][4452]
- [Specialize UI pipeline on "hdr-ness"][6459]
- [Allow passing `glam` vector types as vertex attributes][6442]
- [Add multi draw indirect draw calls][6392]
- [Take DirectionalLight's GlobalTransform into account when calculating shadow map volume (not just direction)][6384]
- [Respect mipmap_filter when create ImageDescriptor with linear()/nearest()][6349]
- [use bevy default texture format if the surface is not yet available][6233]
- [log pipeline cache errors earlier][6115]
- [Merge TextureAtlas::from_grid_with_padding into TextureAtlas::from_grid through option arguments][6057]
- [Reconfigure surface on present mode change][6049]
- [Use 3 bits of PipelineKey to store MSAA sample count][5826]
- [Limit FontAtlasSets][5708]
- [Move `sprite::Rect` into `bevy_math`][5686]
- [Make vertex colors work without textures in bevy_sprite][5685]
- [use bevy_default() for texture format in post_processing][5601]
- [don't render completely transparent UI nodes][5537]
- [make TextLayoutInfo a Component][4460]
- [make `Handle::<T>` field id private, and replace with a getter][6176]
- [Remove `AssetServer::watch_for_changes()`][5968]
- [Rename Handle::as_weak() to cast_weak()][5321]
- [Remove `Sync` requirement in `Decodable::Decoder`][5819]
### Fixed
- [Optimize rendering slow-down at high entity counts][5509]
- [bevy_reflect: Fix `DynamicScene` not respecting component registrations during serialization][6288]
- [fixes the types for Vec3 and Quat in scene example to remove WARN from the logs][5751]
- [Fix end-of-animation index OOB][6210]
- [bevy_reflect: Remove unnecessary `Clone` bounds][5783]
- [bevy_reflect: Fix `apply` method for `Option<T>`][5780]
- [Fix outdated and badly formatted docs for `WindowDescriptor::transparent`][6329]
- [disable window pre creation for ios][5883]
- [Remove unnecessary unsafe `Send` and `Sync` impl for `WinitWindows` on wasm.][5863]
- [Fix window centering when scale_factor is not 1.0][5582]
- [fix order of exit/close window systems][5558]
- [bevy_input: Fix process touch event][4352]
- [fix: explicitly specify required version of async-task][6509]
- [Fix `clippy::iter_with_drain`][6485]
- [Use `cbrt()` instead of `powf(1./3.)`][6481]
- [Fix `RemoveChildren` command][6192]
- [Fix inconsistent children removal behavior][6017]
- [tick local executor][6121]
- [Fix panic when the primary window is closed][6545]
- [UI scaling fix][6479]
- [Fix clipping in UI][6351]
- [Fixes scroll example after inverting UI Y axis][6290]
- [Fixes incorrect glyph positioning for text2d][6273]
- [Clean up taffy nodes when UI node entities are removed][5886]
- [Fix unsound `EntityMut::remove_children`. Add `EntityMut::world_scope`][6464]
- [Fix spawning empty bundles][6425]
- [Fix query.to_readonly().get_component_mut() soundness bug][6401]
- [#5817: derive_bundle macro is not hygienic][5835]
- [drop old value in `insert_resource_by_id` if exists][5587]
- [Fix lifetime bound on `From` impl for `NonSendMut` -> `Mut`][5560]
- [Fix `mesh.wgsl` error for meshes without normals][6439]
- [Fix panic when using globals uniform in wasm builds][6460]
- [Resolve most remaining execution-order ambiguities][6341]
- [Call `mesh2d_tangent_local_to_world` with the right arguments][6209]
- [Fixes Camera not being serializable due to missing registrations in core functionality.][6170]
- [fix spot dir nan bug][6167]
- [use alpha mask even when unlit][6047]
- [Ignore `Timeout` errors on Linux AMD & Intel][5957]
- [adjust cluster index for viewport origin][5947]
- [update camera projection if viewport changed][5945]
- [Ensure 2D phase items are sorted before batching][5942]
- [bevy_pbr: Fix incorrect and unnecessary normal-mapping code][5766]
- [Add explicit ordering between `update_frusta` and `camera_system`][5757]
- [bevy_pbr: Fix tangent and normal normalization][5666]
- [Fix shader syntax][5613]
- [Correctly use as_hsla_f32 in `Add<Color>` and `AddAssign<Color>`, fixes #5543][5546]
- [Sync up bevy_sprite and bevy_ui shader View struct][5531]
- [Fix View by adding missing fields present in ViewUniform][5512]
- [Freeing memory held by visible entities vector][3009]
- [Correctly parse labels with '#'][5729]
[6545]: https://github.com/bevyengine/bevy/pull/6545
[6543]: https://github.com/bevyengine/bevy/pull/6543
[6533]: https://github.com/bevyengine/bevy/pull/6533
[6515]: https://github.com/bevyengine/bevy/pull/6515
[6509]: https://github.com/bevyengine/bevy/pull/6509
[6502]: https://github.com/bevyengine/bevy/pull/6502
[6494]: https://github.com/bevyengine/bevy/pull/6494
[6488]: https://github.com/bevyengine/bevy/pull/6488
[6487]: https://github.com/bevyengine/bevy/pull/6487
[6485]: https://github.com/bevyengine/bevy/pull/6485
[6481]: https://github.com/bevyengine/bevy/pull/6481
[6479]: https://github.com/bevyengine/bevy/pull/6479
[6478]: https://github.com/bevyengine/bevy/pull/6478
[6473]: https://github.com/bevyengine/bevy/pull/6473
[6470]: https://github.com/bevyengine/bevy/pull/6470
[6468]: https://github.com/bevyengine/bevy/pull/6468
[6464]: https://github.com/bevyengine/bevy/pull/6464
[6461]: https://github.com/bevyengine/bevy/pull/6461
[6460]: https://github.com/bevyengine/bevy/pull/6460
[6459]: https://github.com/bevyengine/bevy/pull/6459
[6452]: https://github.com/bevyengine/bevy/pull/6452
[6444]: https://github.com/bevyengine/bevy/pull/6444
[6443]: https://github.com/bevyengine/bevy/pull/6443
[6442]: https://github.com/bevyengine/bevy/pull/6442
[6439]: https://github.com/bevyengine/bevy/pull/6439
[6437]: https://github.com/bevyengine/bevy/pull/6437
[6429]: https://github.com/bevyengine/bevy/pull/6429
[6427]: https://github.com/bevyengine/bevy/pull/6427
[6425]: https://github.com/bevyengine/bevy/pull/6425
[6423]: https://github.com/bevyengine/bevy/pull/6423
[6422]: https://github.com/bevyengine/bevy/pull/6422
[6416]: https://github.com/bevyengine/bevy/pull/6416
[6415]: https://github.com/bevyengine/bevy/pull/6415
[6411]: https://github.com/bevyengine/bevy/pull/6411
[6410]: https://github.com/bevyengine/bevy/pull/6410
[6401]: https://github.com/bevyengine/bevy/pull/6401
[6400]: https://github.com/bevyengine/bevy/pull/6400
[6398]: https://github.com/bevyengine/bevy/pull/6398
[6397]: https://github.com/bevyengine/bevy/pull/6397
[6393]: https://github.com/bevyengine/bevy/pull/6393
[6392]: https://github.com/bevyengine/bevy/pull/6392
[6384]: https://github.com/bevyengine/bevy/pull/6384
[6382]: https://github.com/bevyengine/bevy/pull/6382
[6381]: https://github.com/bevyengine/bevy/pull/6381
[6380]: https://github.com/bevyengine/bevy/pull/6380
[6379]: https://github.com/bevyengine/bevy/pull/6379
[6374]: https://github.com/bevyengine/bevy/pull/6374
[6372]: https://github.com/bevyengine/bevy/pull/6372
[6360]: https://github.com/bevyengine/bevy/pull/6360
[6357]: https://github.com/bevyengine/bevy/pull/6357
[6354]: https://github.com/bevyengine/bevy/pull/6354
[6351]: https://github.com/bevyengine/bevy/pull/6351
[6350]: https://github.com/bevyengine/bevy/pull/6350
[6349]: https://github.com/bevyengine/bevy/pull/6349
[6345]: https://github.com/bevyengine/bevy/pull/6345
[6342]: https://github.com/bevyengine/bevy/pull/6342
[6341]: https://github.com/bevyengine/bevy/pull/6341
[6337]: https://github.com/bevyengine/bevy/pull/6337
[6336]: https://github.com/bevyengine/bevy/pull/6336
[6331]: https://github.com/bevyengine/bevy/pull/6331
[6329]: https://github.com/bevyengine/bevy/pull/6329
[6321]: https://github.com/bevyengine/bevy/pull/6321
[6319]: https://github.com/bevyengine/bevy/pull/6319
[6318]: https://github.com/bevyengine/bevy/pull/6318
[6308]: https://github.com/bevyengine/bevy/pull/6308
[6303]: https://github.com/bevyengine/bevy/pull/6303
[6290]: https://github.com/bevyengine/bevy/pull/6290
[6288]: https://github.com/bevyengine/bevy/pull/6288
[6274]: https://github.com/bevyengine/bevy/pull/6274
[6273]: https://github.com/bevyengine/bevy/pull/6273
[6268]: https://github.com/bevyengine/bevy/pull/6268
[6257]: https://github.com/bevyengine/bevy/pull/6257
[6249]: https://github.com/bevyengine/bevy/pull/6249
[6248]: https://github.com/bevyengine/bevy/pull/6248
[6247]: https://github.com/bevyengine/bevy/pull/6247
[6242]: https://github.com/bevyengine/bevy/pull/6242
[6237]: https://github.com/bevyengine/bevy/pull/6237
[6233]: https://github.com/bevyengine/bevy/pull/6233
[6232]: https://github.com/bevyengine/bevy/pull/6232
[6230]: https://github.com/bevyengine/bevy/pull/6230
[6229]: https://github.com/bevyengine/bevy/pull/6229
[6227]: https://github.com/bevyengine/bevy/pull/6227
[6222]: https://github.com/bevyengine/bevy/pull/6222
[6218]: https://github.com/bevyengine/bevy/pull/6218
[6214]: https://github.com/bevyengine/bevy/pull/6214
[6211]: https://github.com/bevyengine/bevy/pull/6211
[6210]: https://github.com/bevyengine/bevy/pull/6210
[6209]: https://github.com/bevyengine/bevy/pull/6209
[6200]: https://github.com/bevyengine/bevy/pull/6200
[6199]: https://github.com/bevyengine/bevy/pull/6199
[6194]: https://github.com/bevyengine/bevy/pull/6194
[6193]: https://github.com/bevyengine/bevy/pull/6193
[6192]: https://github.com/bevyengine/bevy/pull/6192
[6191]: https://github.com/bevyengine/bevy/pull/6191
[6189]: https://github.com/bevyengine/bevy/pull/6189
[6187]: https://github.com/bevyengine/bevy/pull/6187
[6185]: https://github.com/bevyengine/bevy/pull/6185
[6180]: https://github.com/bevyengine/bevy/pull/6180
[6176]: https://github.com/bevyengine/bevy/pull/6176
[6170]: https://github.com/bevyengine/bevy/pull/6170
[6167]: https://github.com/bevyengine/bevy/pull/6167
[6159]: https://github.com/bevyengine/bevy/pull/6159
[6158]: https://github.com/bevyengine/bevy/pull/6158
[6152]: https://github.com/bevyengine/bevy/pull/6152
[6140]: https://github.com/bevyengine/bevy/pull/6140
[6134]: https://github.com/bevyengine/bevy/pull/6134
[6133]: https://github.com/bevyengine/bevy/pull/6133
[6132]: https://github.com/bevyengine/bevy/pull/6132
[6127]: https://github.com/bevyengine/bevy/pull/6127
[6126]: https://github.com/bevyengine/bevy/pull/6126
[6123]: https://github.com/bevyengine/bevy/pull/6123
[6121]: https://github.com/bevyengine/bevy/pull/6121
[6115]: https://github.com/bevyengine/bevy/pull/6115
[6114]: https://github.com/bevyengine/bevy/pull/6114
[6113]: https://github.com/bevyengine/bevy/pull/6113
[6107]: https://github.com/bevyengine/bevy/pull/6107
[6100]: https://github.com/bevyengine/bevy/pull/6100
[6088]: https://github.com/bevyengine/bevy/pull/6088
[6087]: https://github.com/bevyengine/bevy/pull/6087
[6084]: https://github.com/bevyengine/bevy/pull/6084
[6083]: https://github.com/bevyengine/bevy/pull/6083
[6074]: https://github.com/bevyengine/bevy/pull/6074
[6068]: https://github.com/bevyengine/bevy/pull/6068
[6066]: https://github.com/bevyengine/bevy/pull/6066
[6057]: https://github.com/bevyengine/bevy/pull/6057
[6054]: https://github.com/bevyengine/bevy/pull/6054
[6049]: https://github.com/bevyengine/bevy/pull/6049
[6047]: https://github.com/bevyengine/bevy/pull/6047
[6039]: https://github.com/bevyengine/bevy/pull/6039
[6029]: https://github.com/bevyengine/bevy/pull/6029
[6025]: https://github.com/bevyengine/bevy/pull/6025
[6023]: https://github.com/bevyengine/bevy/pull/6023
[6020]: https://github.com/bevyengine/bevy/pull/6020
[6017]: https://github.com/bevyengine/bevy/pull/6017
[6015]: https://github.com/bevyengine/bevy/pull/6015
[6014]: https://github.com/bevyengine/bevy/pull/6014
[6009]: https://github.com/bevyengine/bevy/pull/6009
[6008]: https://github.com/bevyengine/bevy/pull/6008
[6000]: https://github.com/bevyengine/bevy/pull/6000
[5994]: https://github.com/bevyengine/bevy/pull/5994
[5993]: https://github.com/bevyengine/bevy/pull/5993
[5991]: https://github.com/bevyengine/bevy/pull/5991
[5988]: https://github.com/bevyengine/bevy/pull/5988
[5987]: https://github.com/bevyengine/bevy/pull/5987
[5982]: https://github.com/bevyengine/bevy/pull/5982
[5978]: https://github.com/bevyengine/bevy/pull/5978
[5971]: https://github.com/bevyengine/bevy/pull/5971
[5968]: https://github.com/bevyengine/bevy/pull/5968
[5957]: https://github.com/bevyengine/bevy/pull/5957
[5952]: https://github.com/bevyengine/bevy/pull/5952
[5949]: https://github.com/bevyengine/bevy/pull/5949
[5948]: https://github.com/bevyengine/bevy/pull/5948
[5947]: https://github.com/bevyengine/bevy/pull/5947
[5945]: https://github.com/bevyengine/bevy/pull/5945
[5942]: https://github.com/bevyengine/bevy/pull/5942
[5923]: https://github.com/bevyengine/bevy/pull/5923
[5917]: https://github.com/bevyengine/bevy/pull/5917
[5916]: https://github.com/bevyengine/bevy/pull/5916
[5895]: https://github.com/bevyengine/bevy/pull/5895
[5886]: https://github.com/bevyengine/bevy/pull/5886
[5883]: https://github.com/bevyengine/bevy/pull/5883
[5878]: https://github.com/bevyengine/bevy/pull/5878
[5877]: https://github.com/bevyengine/bevy/pull/5877
[5871]: https://github.com/bevyengine/bevy/pull/5871
[5865]: https://github.com/bevyengine/bevy/pull/5865
[5864]: https://github.com/bevyengine/bevy/pull/5864
[5863]: https://github.com/bevyengine/bevy/pull/5863
[5857]: https://github.com/bevyengine/bevy/pull/5857
[5855]: https://github.com/bevyengine/bevy/pull/5855
[5854]: https://github.com/bevyengine/bevy/pull/5854
[5853]: https://github.com/bevyengine/bevy/pull/5853
[5847]: https://github.com/bevyengine/bevy/pull/5847
[5838]: https://github.com/bevyengine/bevy/pull/5838
[5835]: https://github.com/bevyengine/bevy/pull/5835
[5827]: https://github.com/bevyengine/bevy/pull/5827
[5826]: https://github.com/bevyengine/bevy/pull/5826
[5825]: https://github.com/bevyengine/bevy/pull/5825
[5819]: https://github.com/bevyengine/bevy/pull/5819
[5814]: https://github.com/bevyengine/bevy/pull/5814
[5813]: https://github.com/bevyengine/bevy/pull/5813
[5806]: https://github.com/bevyengine/bevy/pull/5806
[5797]: https://github.com/bevyengine/bevy/pull/5797
[5783]: https://github.com/bevyengine/bevy/pull/5783
[5782]: https://github.com/bevyengine/bevy/pull/5782
[5780]: https://github.com/bevyengine/bevy/pull/5780
[5776]: https://github.com/bevyengine/bevy/pull/5776
[5766]: https://github.com/bevyengine/bevy/pull/5766
[5761]: https://github.com/bevyengine/bevy/pull/5761
[5758]: https://github.com/bevyengine/bevy/pull/5758
[5757]: https://github.com/bevyengine/bevy/pull/5757
[5752]: https://github.com/bevyengine/bevy/pull/5752
[5751]: https://github.com/bevyengine/bevy/pull/5751
[5747]: https://github.com/bevyengine/bevy/pull/5747
[5731]: https://github.com/bevyengine/bevy/pull/5731
[5730]: https://github.com/bevyengine/bevy/pull/5730
[5729]: https://github.com/bevyengine/bevy/pull/5729
[5728]: https://github.com/bevyengine/bevy/pull/5728
[5723]: https://github.com/bevyengine/bevy/pull/5723
[5720]: https://github.com/bevyengine/bevy/pull/5720
[5708]: https://github.com/bevyengine/bevy/pull/5708
[5688]: https://github.com/bevyengine/bevy/pull/5688
[5686]: https://github.com/bevyengine/bevy/pull/5686
[5685]: https://github.com/bevyengine/bevy/pull/5685
[5676]: https://github.com/bevyengine/bevy/pull/5676
[5666]: https://github.com/bevyengine/bevy/pull/5666
[5664]: https://github.com/bevyengine/bevy/pull/5664
[5658]: https://github.com/bevyengine/bevy/pull/5658
[5635]: https://github.com/bevyengine/bevy/pull/5635
[5630]: https://github.com/bevyengine/bevy/pull/5630
[5626]: https://github.com/bevyengine/bevy/pull/5626
[5613]: https://github.com/bevyengine/bevy/pull/5613
[5608]: https://github.com/bevyengine/bevy/pull/5608
[5601]: https://github.com/bevyengine/bevy/pull/5601
[5593]: https://github.com/bevyengine/bevy/pull/5593
[5587]: https://github.com/bevyengine/bevy/pull/5587
[5586]: https://github.com/bevyengine/bevy/pull/5586
[5582]: https://github.com/bevyengine/bevy/pull/5582
[5577]: https://github.com/bevyengine/bevy/pull/5577
[5566]: https://github.com/bevyengine/bevy/pull/5566
[5560]: https://github.com/bevyengine/bevy/pull/5560
[5558]: https://github.com/bevyengine/bevy/pull/5558
[5557]: https://github.com/bevyengine/bevy/pull/5557
[5556]: https://github.com/bevyengine/bevy/pull/5556
[5554]: https://github.com/bevyengine/bevy/pull/5554
[5546]: https://github.com/bevyengine/bevy/pull/5546
[5537]: https://github.com/bevyengine/bevy/pull/5537
[5531]: https://github.com/bevyengine/bevy/pull/5531
[5527]: https://github.com/bevyengine/bevy/pull/5527
[5512]: https://github.com/bevyengine/bevy/pull/5512
[5509]: https://github.com/bevyengine/bevy/pull/5509
[5495]: https://github.com/bevyengine/bevy/pull/5495
[5483]: https://github.com/bevyengine/bevy/pull/5483
[5481]: https://github.com/bevyengine/bevy/pull/5481
[5473]: https://github.com/bevyengine/bevy/pull/5473
[5461]: https://github.com/bevyengine/bevy/pull/5461
[5413]: https://github.com/bevyengine/bevy/pull/5413
[5409]: https://github.com/bevyengine/bevy/pull/5409
[5402]: https://github.com/bevyengine/bevy/pull/5402
[5340]: https://github.com/bevyengine/bevy/pull/5340
[5325]: https://github.com/bevyengine/bevy/pull/5325
[5321]: https://github.com/bevyengine/bevy/pull/5321
[5296]: https://github.com/bevyengine/bevy/pull/5296
[5264]: https://github.com/bevyengine/bevy/pull/5264
[5250]: https://github.com/bevyengine/bevy/pull/5250
[5205]: https://github.com/bevyengine/bevy/pull/5205
[5096]: https://github.com/bevyengine/bevy/pull/5096
[4992]: https://github.com/bevyengine/bevy/pull/4992
[4970]: https://github.com/bevyengine/bevy/pull/4970
[4919]: https://github.com/bevyengine/bevy/pull/4919
[4809]: https://github.com/bevyengine/bevy/pull/4809
[4800]: https://github.com/bevyengine/bevy/pull/4800
[4761]: https://github.com/bevyengine/bevy/pull/4761
[4724]: https://github.com/bevyengine/bevy/pull/4724
[4466]: https://github.com/bevyengine/bevy/pull/4466
[4460]: https://github.com/bevyengine/bevy/pull/4460
[4452]: https://github.com/bevyengine/bevy/pull/4452
[4352]: https://github.com/bevyengine/bevy/pull/4352
[4109]: https://github.com/bevyengine/bevy/pull/4109
[3425]: https://github.com/bevyengine/bevy/pull/3425
[3009]: https://github.com/bevyengine/bevy/pull/3009
[2975]: https://github.com/bevyengine/bevy/pull/2975
## Version 0.8.0 (2022-07-30)
### Added
- [Callable PBR functions][4939]
- [Spotlights][4715]
- [Camera Driven Rendering][4745]
- [Camera Driven Viewports][4898]
- [Visibilty Inheritance, universal `ComputedVisibility`, and `RenderLayers` support][5310]
- [Better Materials: `AsBindGroup` trait and derive, simpler `Material` trait][5053]
- [Derive `AsBindGroup` Improvements: Better errors, more options, update examples][5364]
- [Support `AsBindGroup` for 2d materials as well][5312]
- [Parallel Frustum Culling][4489]
- [Hierarchy commandization][4197]
- [Generate vertex tangents using mikktspace][3872]
- [Add a `SpatialBundle` with `Visibility` and `Transform` components][5344]
- [Add `RegularPolygon` and `Circle` meshes][3730]
- [Add a `SceneBundle` to spawn a scene][2424]
- [Allow higher order systems][4833]
- [Add global `init()` and `get()` accessors for all newtyped `TaskPools`][2250]
- [Add reusable shader functions for transforming position/normal/tangent][4901]
- [Add support for vertex colors][4528]
- [Add support for removing attributes from meshes][5254]
- [Add option to center a window][4999]
- [Add `depth_load_op` configuration field to `Camera3d`][4904]
- [Refactor `Camera` methods and add viewport rect][4948]
- [Add `TextureFormat::R16Unorm` support for `Image`][5249]
- [Add a `VisibilityBundle` with `Visibility` and `ComputedVisibility` components][5335]
- [Add ExtractResourcePlugin][3745]
- [Add depth_bias to SpecializedMaterial][4101]
- [Added `offset` parameter to `TextureAtlas::from_grid_with_padding`][4836]
- [Add the possibility to create custom 2d orthographic cameras][4048]
- [bevy_render: Add `attributes` and `attributes_mut` methods to `Mesh`][3927]
- [Add helper methods for rotating `Transform`s][5151]
- [Enable wgpu profiling spans when using bevy's trace feature][5182]
- [bevy_pbr: rework `extract_meshes`][4240]
- [Add `inverse_projection` and `inverse_view_proj` fields to shader view uniform][5119]
- [Add `ViewRangefinder3d` to reduce boilerplate when enqueuing standard 3D `PhaseItems`][5014]
- [Create `bevy_ptr` standalone crate][4653]
- [Add `IntoIterator` impls for `&Query` and `&mut Query`][4692]
- [Add untyped APIs for `Components` and `Resources`][4447]
- [Add infallible resource getters for `WorldCell`][4104]
- [Add `get_change_ticks` method to `EntityRef` and `EntityMut`][2539]
- [Add comparison methods to `FilteredAccessSet`][4211]
- [Add `Commands::new_from_entities`][4423]
- [Add `QueryState::get_single_unchecked_manual` and its family members][4841]
- [Add `ParallelCommands` system parameter][4749]
- [Add methods for querying lists of entities][4879]
- [Implement `FusedIterator` for eligible `Iterator` types][4942]
- [Add `component_id()` function to `World` and `Components`][5066]
- [Add ability to inspect entity's components][5136]
- [Add a more helpful error to help debug panicking command on despawned entity][5198]
- [Add `ExactSizeIterator` implementation for `QueryCombinatonIter`][5148]
- [Added the `ignore_fields` attribute to the derive macros for `*Label` types][5366]
- [Exact sized event iterators][3863]
- [Add a `clear()` method to the `EventReader` that consumes the iterator][4693]
- [Add helpers to send `Events` from `World`][5355]
- [Add file metadata to `AssetIo`][2123]
- [Add missing audio/ogg file extensions: .oga, .spx][4703]
- [Add `reload_asset` method to `AssetServer`][5106]
- [Allow specifying chrome tracing file path using an environment variable][4618]
- [Create a simple tool to compare traces between executions][4628]
- [Add a tracing span for run criteria][4709]
- [Add tracing spans for `Query::par_for_each` and its variants.][4711]
- [Add a `release_all` method on `Input`][5011]
- [Add a `reset_all` method on `Input`][5015]
- [Add a helper tool to build examples for wasm][4776]
- [bevy_reflect: add a `ReflectFromPtr` type to create `&dyn Reflect` from a `*const ()`][4475]
- [Add a `ReflectDefault` type and add `#[reflect(Default)]` to all component types that implement Default and are user facing][3733]
- [Add a macro to implement `Reflect` for struct types and migrate glam types to use this for reflection][4540]
- [bevy_reflect: reflect arrays][4701]
- [bevy_reflect: reflect char][4790]
- [bevy_reflect: add `GetTypeRegistration` impl for reflected tuples][4226]
- [Add reflection for `Resources`][5175]
- [bevy_reflect: add `as_reflect` and `as_reflect_mut` methods on `Reflect`][4350]
- [Add an `apply_or_insert` method to `ReflectResource` and `ReflectComponent`][5201]
- [bevy_reflect: `IntoIter` for `DynamicList` and `DynamicMap`][4108]
- [bevy_reflect: Add `PartialEq` to reflected `f32`s and `f64`s][4217]
- [Create mutable versions of `TypeRegistry` methods][4484]
- [bevy_reflect: add a `get_boxed` method to `reflect_trait`][4120]
- [bevy_reflect: add `#[reflect(default)]` attribute for `FromReflect`][4140]
- [bevy_reflect: add statically available type info for reflected types][4042]
- [Add an `assert_is_exclusive_system` function][5275]
- [bevy_ui: add a multi-windows check for `Interaction` (we dont yet support multiple windows)][5225]
### Changed
- [Depend on Taffy (a Dioxus and Bevy-maintained fork of Stretch)][4716]
- [Use lifetimed, type erased pointers in bevy_ecs][3001]
- [Migrate to `encase` from `crevice`][4339]
- [Update `wgpu` to 0.13][5168]
- [Pointerfication followup: Type safety and cleanup][4621]
- [bevy_ptr works in no_std environments][4760]
- [Fail to compile on 16-bit platforms][4736]
- [Improve ergonomics and reduce boilerplate around creating text elements][5343]
- [Don't cull `Ui` nodes that have a rotation][5389]
- [Rename `ElementState` to `ButtonState`][4314]
- [Move `Size` to `bevy_ui`][4285]
- [Move `Rect` to `bevy_ui` and rename it to `UiRect`][4276]
- [Modify `FontAtlas` so that it can handle fonts of any size][3592]
- [Rename `CameraUi`][5234]
- [Remove `task_pool` parameter from `par_for_each(_mut)`][4705]
- [Copy `TaskPool` resoures to sub-Apps][4792]
- [Allow closing windows at runtime][3575]
- [Move the configuration of the `WindowPlugin` to a `Resource`][5227]
- [Optionally resize `Window` canvas element to fit parent element][4726]
- [Change window resolution types from tuple to `Vec2`][5276]
- [Update time by sending frame `Instant` through a channel][4744]
- [Split time functionality into `bevy_time`][4187]
- [Split mesh shader files to make the shaders more reusable][4867]
- [Set `naga` capabilities corresponding to `wgpu` features][4824]
- [Separate out PBR lighting, shadows, clustered forward, and utils from pbr.wgsl][4938]
- [Separate PBR and tonemapping into 2 functions][5078]
- [Make `RenderStage::Extract` run on the render world][4402]
- [Change default `FilterMode` of `Image` to `Linear`][4465]
- [bevy_render: Fix KTX2 UASTC format mapping][4569]
- [Allow rendering meshes without UV coordinate data][5222]
- [Validate vertex attribute format on insertion][5259]
- [Use `Affine3A` for `GlobalTransform`to allow any affine transformation][4379]
- [Recalculate entity `AABB`s when meshes change][4944]
- [Change `check_visibility` to use thread-local queues instead of a channel][4663]
- [Allow unbatched render phases to use unstable sorts][5049]
- [Extract resources into their target location][5271]
- [Enable loading textures of unlimited size][5305]
- [Do not create nor execute render passes which have no `PhaseItems` to draw][4643]
- [Filter material handles on extraction][4178]
- [Apply vertex colors to `ColorMaterial` and `Mesh2D`][4812]
- [Make `MaterialPipelineKey` fields public][4508]
- [Simplified API to get NDC from camera and world position][4041]
- [Set `alpha_mode` based on alpha value][4658]
- [Make `Wireframe` respect `VisibleEntities`][4660]
- [Use const `Vec2` in lights cluster and bounding box when possible][4602]
- [Make accessors for mesh vertices and indices public][3906]
- [Use `BufferUsages::UNIFORM` for `SkinnedMeshUniform`][4816]
- [Place origin of `OrthographicProjection` at integer pixel when using `ScalingMode::WindowSize`][4085]
- [Make `ScalingMode` more flexible][3253]
- [Move texture sample out of branch in `prepare_normal`][5129]
- [Make the fields of the `Material2dKey` public][5212]
- [Use collect to build mesh attributes][5255]
- [Replace `ReadOnlyFetch` with `ReadOnlyWorldQuery`][4626]
- [Replace `ComponentSparseSet`'s internals with a `Column`][4909]
- [Remove QF generics from all `Query/State` methods and types][5170]
- [Remove `.system()`][4499]
- [Make change lifespan deterministic and update docs][3956]
- [Make derived `SystemParam` readonly if possible][4650]
- [Merge `matches_archetype` and `matches_table`][4807]
- [Allows conversion of mutable queries to immutable queries][5376]
- [Skip `drop` when `needs_drop` is `false`][4773]
- [Use u32 over usize for `ComponentSparseSet` indicies][4723]
- [Remove redundant `ComponentId` in `Column`][4855]
- [Directly copy moved `Table` components to the target location][5056]
- [`SystemSet::before` and `SystemSet::after` now take `AsSystemLabel`][4503]
- [Converted exclusive systems to parallel systems wherever possible][2774]
- [Improve `size_hint` on `QueryIter`][4244]
- [Improve debugging tools for change detection][4160]
- [Make `RunOnce` a non-manual `System` impl][3922]
- [Apply buffers in `ParamSet`][4677]
- [Don't allocate for `ComponentDescriptors` of non-dynamic component types][4725]
- [Mark mutable APIs under ECS storage as `pub(crate)`][5065]
- [Update `ExactSizeIterator` impl to support archetypal filters (`With`, `Without`)][5124]
- [Removed world cell from places where split multable access is not needed][5167]
- [Add Events to `bevy_ecs` prelude][5159]
- [Improve `EntityMap` API][5231]
- [Implement `From<bool>` for `ShouldRun`.][5306]
- [Allow iter combinations on custom world queries][5286]
- [Simplify design for `*Label`s][4957]
- [Tidy up the code of events][4713]
- [Rename `send_default_event` to `send_event_default` on world][5383]
- [enable optional dependencies to stay optional][5023]
- [Remove the dependency cycles][5171]
- [Enforce type safe usage of Handle::get][4794]
- [Export anyhow::error for custom asset loaders][5359]
- [Update `shader_material_glsl` example to include texture sampling][5215]
- [Remove unused code in game of life shader][5349]
- [Make the contributor birbs bounce to the window height][5274]
- [Improve Gamepad D-Pad Button Detection][5220]
- [bevy_reflect: support map insertio][5173]
- [bevy_reflect: improve debug formatting for reflected types][4218]
- [bevy_reflect_derive: big refactor tidying up the code][4712]
- [bevy_reflect: small refactor and default `Reflect` methods][4739]
- [Make `Reflect` safe to implement][5010]
- [`bevy_reflect`: put `serialize` into external `ReflectSerialize` type][4782]
- [Remove `Serialize` impl for `dyn Array` and friends][4780]
- [Re-enable `#[derive(TypeUuid)]` for generics][4118]
- [Move primitive type registration into `bevy_reflect`][4844]
- [Implement reflection for more `glam` types][5194]
- [Make `reflect_partial_eq` return more accurate results][5210]
- [Make public macros more robust with `$crate`][4655]
- [Ensure that the parent is always the expected entity][4717]
- [Support returning data out of `with_children`][4708]
- [Remove `EntityMut::get_unchecked`][4547]
- [Diagnostics: meaningful error when graph node has wrong number of inputs][4924]
- [Remove redundant `Size` import][5339]
- [Export and register `Mat2`.][5324]
- [Implement `Debug` for `Gamepads`][5291]
- [Update codebase to use `IntoIterator` where possible.][5269]
- [Rename `headless_defaults` example to `no_renderer` for clarity][5263]
- [Remove dead `SystemLabelMarker` struct][5190]
- [bevy_reflect: remove `glam` from a test which is active without the glam feature][5195]
- [Disable vsync for stress tests][5187]
- [Move `get_short_name` utility method from `bevy_reflect` into `bevy_utils`][5174]
- [Derive `Default` for enums where possible][5158]
- [Implement `Eq` and `PartialEq` for `MouseScrollUnit`][5048]
- [Some cleanup for `bevy_ptr`][4668]
- [Move float_ord from `bevy_core` to `bevy_utils`][4189]
- [Remove unused `CountdownEvent`][4290]
- [Some minor cleanups of asset_server][4604]
- [Use `elapsed()` on `Instant`][4599]
- [Make paused `Timers` update `just_finished` on tick][4445]
- [bevy_utils: remove hardcoded log level limit][4580]
- [Make `Time::update_with_instant` public for use in tests][4469]
- [Do not impl Component for Task][4113]
- [Remove nonexistent `WgpuResourceDiagnosticsPlugin`][4541]
- [Update ndk-glue requirement from 0.5 to 0.6][3624]
- [Update tracing-tracy requirement from 0.8.0 to 0.9.0][4786]
- [update image to 0.24][4121]
- [update xshell to 0.2][4789]
- [Update gilrs to v0.9][4848]
- [bevy_log: upgrade to tracing-tracy 0.10.0][4991]
- [update hashbrown to 0.12][5035]
- [Update `clap` to 3.2 in tools using `value_parser`][5031]
- [Updated `glam` to `0.21`.][5142]
- [Update Notify Dependency][5396]
### Fixed
- [bevy_ui: keep `Color` as 4 `f32`s][4494]
- [Fix issues with bevy on android other than the rendering][5130]
- [Update layout/style when scale factor changes too][4689]
- [Fix `Overflow::Hidden` so it works correctly with `scale_factor_override`][3854]
- [Fix `bevy_ui` touch input][4099]
- [Fix physical viewport calculation][5055]
- [Minimally fix the known unsoundness in `bevy_mikktspace`][5299]
- [Make `Transform` propagation correct in the presence of updated children][4608]
- [`StorageBuffer` uses wrong type to calculate the buffer size.][4557]
- [Fix confusing near and far fields in Camera][4457]
- [Allow minimising window if using a 2d camera][4527]
- [WGSL: use correct syntax for matrix access][5039]
- [Gltf: do not import `IoTaskPool` in wasm][5038]
- [Fix skinned mesh normal handling in mesh shader][5095]
- [Don't panic when `StandardMaterial` `normal_map` hasn't loaded yet][5307]
- [Fix incorrect rotation in `Transform::rotate_around`][5300]
- [Fix `extract_wireframes`][5301]
- [Fix type parameter name conflicts of `#[derive(Bundle)]`][4636]
- [Remove unnecessary `unsafe impl` of `Send+Sync` for `ParallelSystemContainer`][5137]
- [Fix line material shader][5348]
- [Fix `mouse_clicked` check for touch][2029]
- [Fix unsoundness with `Or`/`AnyOf`/`Option` component access][4659]
- [Improve soundness of `CommandQueue`][4863]
- [Fix some memory leaks detected by miri][4959]
- [Fix Android example icon][4076]
- [Fix broken `WorldCell` test][5009]
- [Bugfix `State::set` transition condition infinite loop][4890]
- [Fix crash when using `Duration::MAX`][4900]
- [Fix release builds: Move asserts under `#[cfg(debug_assertions)]`][4871]
- [Fix frame count being a float][4493]
- [Fix "unused" warnings when compiling with `render` feature but without `animation`][4714]
- [Fix re-adding a plugin to a `PluginGroup`][2039]
- [Fix torus normals][4520]
- [Add `NO_STORAGE_BUFFERS_SUPPORT` shaderdef when needed][4949]
[2029]: https://github.com/bevyengine/bevy/pull/2029
[2039]: https://github.com/bevyengine/bevy/pull/2039
[2123]: https://github.com/bevyengine/bevy/pull/2123
[2250]: https://github.com/bevyengine/bevy/pull/2250
[2424]: https://github.com/bevyengine/bevy/pull/2424
[2539]: https://github.com/bevyengine/bevy/pull/2539
[2774]: https://github.com/bevyengine/bevy/pull/2774
[3001]: https://github.com/bevyengine/bevy/pull/3001
[3253]: https://github.com/bevyengine/bevy/pull/3253
[3575]: https://github.com/bevyengine/bevy/pull/3575
[3592]: https://github.com/bevyengine/bevy/pull/3592
[3624]: https://github.com/bevyengine/bevy/pull/3624
[3730]: https://github.com/bevyengine/bevy/pull/3730
[3733]: https://github.com/bevyengine/bevy/pull/3733
[3745]: https://github.com/bevyengine/bevy/pull/3745
[3854]: https://github.com/bevyengine/bevy/pull/3854
[3863]: https://github.com/bevyengine/bevy/pull/3863
[3872]: https://github.com/bevyengine/bevy/pull/3872
[3906]: https://github.com/bevyengine/bevy/pull/3906
[3922]: https://github.com/bevyengine/bevy/pull/3922
[3927]: https://github.com/bevyengine/bevy/pull/3927
[3956]: https://github.com/bevyengine/bevy/pull/3956
[4041]: https://github.com/bevyengine/bevy/pull/4041
[4042]: https://github.com/bevyengine/bevy/pull/4042
[4048]: https://github.com/bevyengine/bevy/pull/4048
[4076]: https://github.com/bevyengine/bevy/pull/4076
[4085]: https://github.com/bevyengine/bevy/pull/4085
[4099]: https://github.com/bevyengine/bevy/pull/4099
[4101]: https://github.com/bevyengine/bevy/pull/4101
[4104]: https://github.com/bevyengine/bevy/pull/4104
[4108]: https://github.com/bevyengine/bevy/pull/4108
[4113]: https://github.com/bevyengine/bevy/pull/4113
[4118]: https://github.com/bevyengine/bevy/pull/4118
[4120]: https://github.com/bevyengine/bevy/pull/4120
[4121]: https://github.com/bevyengine/bevy/pull/4121
[4140]: https://github.com/bevyengine/bevy/pull/4140
[4160]: https://github.com/bevyengine/bevy/pull/4160
[4178]: https://github.com/bevyengine/bevy/pull/4178
[4187]: https://github.com/bevyengine/bevy/pull/4187
[4189]: https://github.com/bevyengine/bevy/pull/4189
[4197]: https://github.com/bevyengine/bevy/pull/4197
[4211]: https://github.com/bevyengine/bevy/pull/4211
[4217]: https://github.com/bevyengine/bevy/pull/4217
[4218]: https://github.com/bevyengine/bevy/pull/4218
[4226]: https://github.com/bevyengine/bevy/pull/4226
[4240]: https://github.com/bevyengine/bevy/pull/4240
[4244]: https://github.com/bevyengine/bevy/pull/4244
[4276]: https://github.com/bevyengine/bevy/pull/4276
[4285]: https://github.com/bevyengine/bevy/pull/4285
[4290]: https://github.com/bevyengine/bevy/pull/4290
[4314]: https://github.com/bevyengine/bevy/pull/4314
[4339]: https://github.com/bevyengine/bevy/pull/4339
[4350]: https://github.com/bevyengine/bevy/pull/4350
[4379]: https://github.com/bevyengine/bevy/pull/4379
[4402]: https://github.com/bevyengine/bevy/pull/4402
[4423]: https://github.com/bevyengine/bevy/pull/4423
[4445]: https://github.com/bevyengine/bevy/pull/4445
[4447]: https://github.com/bevyengine/bevy/pull/4447
[4457]: https://github.com/bevyengine/bevy/pull/4457
[4465]: https://github.com/bevyengine/bevy/pull/4465
[4469]: https://github.com/bevyengine/bevy/pull/4469
[4475]: https://github.com/bevyengine/bevy/pull/4475
[4484]: https://github.com/bevyengine/bevy/pull/4484
[4489]: https://github.com/bevyengine/bevy/pull/4489
[4493]: https://github.com/bevyengine/bevy/pull/4493
[4494]: https://github.com/bevyengine/bevy/pull/4494
[4499]: https://github.com/bevyengine/bevy/pull/4499
[4503]: https://github.com/bevyengine/bevy/pull/4503
[4508]: https://github.com/bevyengine/bevy/pull/4508
[4520]: https://github.com/bevyengine/bevy/pull/4520
[4527]: https://github.com/bevyengine/bevy/pull/4527
[4528]: https://github.com/bevyengine/bevy/pull/4528
[4540]: https://github.com/bevyengine/bevy/pull/4540
[4541]: https://github.com/bevyengine/bevy/pull/4541
[4547]: https://github.com/bevyengine/bevy/pull/4547
[4557]: https://github.com/bevyengine/bevy/pull/4557
[4569]: https://github.com/bevyengine/bevy/pull/4569
[4580]: https://github.com/bevyengine/bevy/pull/4580
[4599]: https://github.com/bevyengine/bevy/pull/4599
[4602]: https://github.com/bevyengine/bevy/pull/4602
[4604]: https://github.com/bevyengine/bevy/pull/4604
[4608]: https://github.com/bevyengine/bevy/pull/4608
[4618]: https://github.com/bevyengine/bevy/pull/4618
[4621]: https://github.com/bevyengine/bevy/pull/4621
[4626]: https://github.com/bevyengine/bevy/pull/4626
[4628]: https://github.com/bevyengine/bevy/pull/4628
[4636]: https://github.com/bevyengine/bevy/pull/4636
[4643]: https://github.com/bevyengine/bevy/pull/4643
[4650]: https://github.com/bevyengine/bevy/pull/4650
[4653]: https://github.com/bevyengine/bevy/pull/4653
[4655]: https://github.com/bevyengine/bevy/pull/4655
[4658]: https://github.com/bevyengine/bevy/pull/4658
[4659]: https://github.com/bevyengine/bevy/pull/4659
[4660]: https://github.com/bevyengine/bevy/pull/4660
[4663]: https://github.com/bevyengine/bevy/pull/4663
[4668]: https://github.com/bevyengine/bevy/pull/4668
[4677]: https://github.com/bevyengine/bevy/pull/4677
[4689]: https://github.com/bevyengine/bevy/pull/4689
[4692]: https://github.com/bevyengine/bevy/pull/4692
[4693]: https://github.com/bevyengine/bevy/pull/4693
[4701]: https://github.com/bevyengine/bevy/pull/4701
[4703]: https://github.com/bevyengine/bevy/pull/4703
[4705]: https://github.com/bevyengine/bevy/pull/4705
[4708]: https://github.com/bevyengine/bevy/pull/4708
[4709]: https://github.com/bevyengine/bevy/pull/4709
[4711]: https://github.com/bevyengine/bevy/pull/4711
[4712]: https://github.com/bevyengine/bevy/pull/4712
[4713]: https://github.com/bevyengine/bevy/pull/4713
[4714]: https://github.com/bevyengine/bevy/pull/4714
[4715]: https://github.com/bevyengine/bevy/pull/4715
[4716]: https://github.com/bevyengine/bevy/pull/4716
[4717]: https://github.com/bevyengine/bevy/pull/4717
[4723]: https://github.com/bevyengine/bevy/pull/4723
[4725]: https://github.com/bevyengine/bevy/pull/4725
[4726]: https://github.com/bevyengine/bevy/pull/4726
[4736]: https://github.com/bevyengine/bevy/pull/4736
[4739]: https://github.com/bevyengine/bevy/pull/4739
[4744]: https://github.com/bevyengine/bevy/pull/4744
[4745]: https://github.com/bevyengine/bevy/pull/4745
[4749]: https://github.com/bevyengine/bevy/pull/4749
[4760]: https://github.com/bevyengine/bevy/pull/4760
[4773]: https://github.com/bevyengine/bevy/pull/4773
[4776]: https://github.com/bevyengine/bevy/pull/4776
[4780]: https://github.com/bevyengine/bevy/pull/4780
[4782]: https://github.com/bevyengine/bevy/pull/4782
[4786]: https://github.com/bevyengine/bevy/pull/4786
[4789]: https://github.com/bevyengine/bevy/pull/4789
[4790]: https://github.com/bevyengine/bevy/pull/4790
[4792]: https://github.com/bevyengine/bevy/pull/4792
[4794]: https://github.com/bevyengine/bevy/pull/4794
[4807]: https://github.com/bevyengine/bevy/pull/4807
[4812]: https://github.com/bevyengine/bevy/pull/4812
[4816]: https://github.com/bevyengine/bevy/pull/4816
[4824]: https://github.com/bevyengine/bevy/pull/4824
[4833]: https://github.com/bevyengine/bevy/pull/4833
[4836]: https://github.com/bevyengine/bevy/pull/4836
[4841]: https://github.com/bevyengine/bevy/pull/4841
[4844]: https://github.com/bevyengine/bevy/pull/4844
[4848]: https://github.com/bevyengine/bevy/pull/4848
[4855]: https://github.com/bevyengine/bevy/pull/4855
[4863]: https://github.com/bevyengine/bevy/pull/4863
[4867]: https://github.com/bevyengine/bevy/pull/4867
[4871]: https://github.com/bevyengine/bevy/pull/4871
[4879]: https://github.com/bevyengine/bevy/pull/4879
[4890]: https://github.com/bevyengine/bevy/pull/4890
[4898]: https://github.com/bevyengine/bevy/pull/4898
[4900]: https://github.com/bevyengine/bevy/pull/4900
[4901]: https://github.com/bevyengine/bevy/pull/4901
[4904]: https://github.com/bevyengine/bevy/pull/4904
[4909]: https://github.com/bevyengine/bevy/pull/4909
[4924]: https://github.com/bevyengine/bevy/pull/4924
[4938]: https://github.com/bevyengine/bevy/pull/4938
[4939]: https://github.com/bevyengine/bevy/pull/4939
[4942]: https://github.com/bevyengine/bevy/pull/4942
[4944]: https://github.com/bevyengine/bevy/pull/4944
[4948]: https://github.com/bevyengine/bevy/pull/4948
[4949]: https://github.com/bevyengine/bevy/pull/4949
[4957]: https://github.com/bevyengine/bevy/pull/4957
[4959]: https://github.com/bevyengine/bevy/pull/4959
[4991]: https://github.com/bevyengine/bevy/pull/4991
[4999]: https://github.com/bevyengine/bevy/pull/4999
[5009]: https://github.com/bevyengine/bevy/pull/5009
[5010]: https://github.com/bevyengine/bevy/pull/5010
[5011]: https://github.com/bevyengine/bevy/pull/5011
[5014]: https://github.com/bevyengine/bevy/pull/5014
[5015]: https://github.com/bevyengine/bevy/pull/5015
[5023]: https://github.com/bevyengine/bevy/pull/5023
[5031]: https://github.com/bevyengine/bevy/pull/5031
[5035]: https://github.com/bevyengine/bevy/pull/5035
[5038]: https://github.com/bevyengine/bevy/pull/5038
[5039]: https://github.com/bevyengine/bevy/pull/5039
[5048]: https://github.com/bevyengine/bevy/pull/5048
[5049]: https://github.com/bevyengine/bevy/pull/5049
[5053]: https://github.com/bevyengine/bevy/pull/5053
[5055]: https://github.com/bevyengine/bevy/pull/5055
[5056]: https://github.com/bevyengine/bevy/pull/5056
[5065]: https://github.com/bevyengine/bevy/pull/5065
[5066]: https://github.com/bevyengine/bevy/pull/5066
[5078]: https://github.com/bevyengine/bevy/pull/5078
[5095]: https://github.com/bevyengine/bevy/pull/5095
[5106]: https://github.com/bevyengine/bevy/pull/5106
[5119]: https://github.com/bevyengine/bevy/pull/5119
[5124]: https://github.com/bevyengine/bevy/pull/5124
[5129]: https://github.com/bevyengine/bevy/pull/5129
[5130]: https://github.com/bevyengine/bevy/pull/5130
[5136]: https://github.com/bevyengine/bevy/pull/5136
[5137]: https://github.com/bevyengine/bevy/pull/5137
[5142]: https://github.com/bevyengine/bevy/pull/5142
[5148]: https://github.com/bevyengine/bevy/pull/5148
[5151]: https://github.com/bevyengine/bevy/pull/5151
[5158]: https://github.com/bevyengine/bevy/pull/5158
[5159]: https://github.com/bevyengine/bevy/pull/5159
[5167]: https://github.com/bevyengine/bevy/pull/5167
[5168]: https://github.com/bevyengine/bevy/pull/5168
[5170]: https://github.com/bevyengine/bevy/pull/5170
[5171]: https://github.com/bevyengine/bevy/pull/5171
[5173]: https://github.com/bevyengine/bevy/pull/5173
[5174]: https://github.com/bevyengine/bevy/pull/5174
[5175]: https://github.com/bevyengine/bevy/pull/5175
[5182]: https://github.com/bevyengine/bevy/pull/5182
[5187]: https://github.com/bevyengine/bevy/pull/5187
[5190]: https://github.com/bevyengine/bevy/pull/5190
[5194]: https://github.com/bevyengine/bevy/pull/5194
[5195]: https://github.com/bevyengine/bevy/pull/5195
[5198]: https://github.com/bevyengine/bevy/pull/5198
[5201]: https://github.com/bevyengine/bevy/pull/5201
[5210]: https://github.com/bevyengine/bevy/pull/5210
[5212]: https://github.com/bevyengine/bevy/pull/5212
[5215]: https://github.com/bevyengine/bevy/pull/5215
[5220]: https://github.com/bevyengine/bevy/pull/5220
[5222]: https://github.com/bevyengine/bevy/pull/5222
[5225]: https://github.com/bevyengine/bevy/pull/5225
[5227]: https://github.com/bevyengine/bevy/pull/5227
[5231]: https://github.com/bevyengine/bevy/pull/5231
[5234]: https://github.com/bevyengine/bevy/pull/5234
[5249]: https://github.com/bevyengine/bevy/pull/5249
[5254]: https://github.com/bevyengine/bevy/pull/5254
[5255]: https://github.com/bevyengine/bevy/pull/5255
[5259]: https://github.com/bevyengine/bevy/pull/5259
[5263]: https://github.com/bevyengine/bevy/pull/5263
[5269]: https://github.com/bevyengine/bevy/pull/5269
[5271]: https://github.com/bevyengine/bevy/pull/5271
[5274]: https://github.com/bevyengine/bevy/pull/5274
[5275]: https://github.com/bevyengine/bevy/pull/5275
[5276]: https://github.com/bevyengine/bevy/pull/5276
[5286]: https://github.com/bevyengine/bevy/pull/5286
[5291]: https://github.com/bevyengine/bevy/pull/5291
[5299]: https://github.com/bevyengine/bevy/pull/5299
[5300]: https://github.com/bevyengine/bevy/pull/5300
[5301]: https://github.com/bevyengine/bevy/pull/5301
[5305]: https://github.com/bevyengine/bevy/pull/5305
[5306]: https://github.com/bevyengine/bevy/pull/5306
[5307]: https://github.com/bevyengine/bevy/pull/5307
[5310]: https://github.com/bevyengine/bevy/pull/5310
[5312]: https://github.com/bevyengine/bevy/pull/5312
[5324]: https://github.com/bevyengine/bevy/pull/5324
[5335]: https://github.com/bevyengine/bevy/pull/5335
[5339]: https://github.com/bevyengine/bevy/pull/5339
[5343]: https://github.com/bevyengine/bevy/pull/5343
[5344]: https://github.com/bevyengine/bevy/pull/5344
[5348]: https://github.com/bevyengine/bevy/pull/5348
[5349]: https://github.com/bevyengine/bevy/pull/5349
[5355]: https://github.com/bevyengine/bevy/pull/5355
[5359]: https://github.com/bevyengine/bevy/pull/5359
[5364]: https://github.com/bevyengine/bevy/pull/5364
[5366]: https://github.com/bevyengine/bevy/pull/5366
[5376]: https://github.com/bevyengine/bevy/pull/5376
[5383]: https://github.com/bevyengine/bevy/pull/5383
[5389]: https://github.com/bevyengine/bevy/pull/5389
[5396]: https://github.com/bevyengine/bevy/pull/5396
## Version 0.7.0 (2022-04-15)
### Added
- [Mesh Skinning][4238]
- [Animation Player][4375]
- [Gltf animations][3751]
- [Mesh vertex buffer layouts][3959]
- [Render to a texture][3412]
- [KTX2/DDS/.basis compressed texture support][3884]
- [Audio control - play, pause, volume, speed, loop][3948]
- [Auto-label function systems with SystemTypeIdLabel][4224]
- [Query::get_many][4298]
- [Dynamic light clusters][3968]
- [Always update clusters and remove per-frame allocations][4169]
- [`ParamSet` for conflicting `SystemParam`:s][2765]
- [default() shorthand][4071]
- [use marker components for cameras instead of name strings][3635]
- [Implement `WorldQuery` derive macro][2713]
- [Implement AnyOf queries][2889]
- [Compute Pipeline Specialization][3979]
- [Make get_resource (and friends) infallible][4047]
- [bevy_pbr: Support flipping tangent space normal map y for DirectX normal maps][4433]
- [Faster view frustum culling][4181]
- [Use storage buffers for clustered forward point lights][3989]
- [Add &World as SystemParam][2923]
- [Add text wrapping support to Text2d][4347]
- [Scene Viewer to display glTF files][4183]
- [Internal Asset Hot Reloading][3966]
- [Add FocusPolicy to NodeBundle and ImageBundle][3952]
- [Allow iter combinations on queries with filters][3656]
- [bevy_render: Support overriding wgpu features and limits][3912]
- [bevy_render: Use RenderDevice to get limits/features and expose AdapterInfo][3931]
- [Reduce power usage with configurable event loop][3974]
- [can specify an anchor for a sprite][3463]
- [Implement len and is_empty for EventReaders][2969]
- [Add more FromWorld implementations][3945]
- [Add cart's fork of ecs_bench_suite][4225]
- [bevy_derive: Add derives for `Deref` and `DerefMut`][4328]
- [Add clear_schedule][3941]
- [Add Query::contains][3090]
- [bevy_render: Support removal of nodes, edges, subgraphs][3048]
- [Implement init_resource for `Commands` and `World`][3079]
- [Added method to restart the current state][3328]
- [Simplify sending empty events][2935]
- [impl Command for `impl FnOnce(&mut World)`][2996]
- [Useful error message when two assets have the save UUID][3739]
- [bevy_asset: Add AssetServerSettings watch_for_changes member][3643]
- [Add conversio from Color to u32][4088]
- [Introduce `SystemLabel`'s for `RenderAssetPlugin`, and change `Image` preparation system to run before others][3917]
- [Add a helper for storage buffers similar to `UniformVec`][4079]
- [StandardMaterial: expose a cull_mode option][3982]
- [Expose draw indirect][4056]
- [Add view transform to view uniform][3885]
- [Add a size method on Image.][3696]
- [add Visibility for lights][3958]
- [bevy_render: Provide a way to opt-out of the built-in frustum culling][3711]
- [use error scope to handle errors on shader module creation][3675]
- [include sources in shader validation error][3724]
- [insert the gltf mesh name on the entity if there is one][4119]
- [expose extras from gltf nodes][2154]
- [gltf: add a name to nodes without names][4396]
- [Enable drag-and-drop events on windows][3772]
- [Add transform hierarchy stress test][4170]
- [Add TransformBundle][3054]
- [Add Transform::rotate_around method][3107]
- [example on how to create an animation in code][4399]
- [Add examples for Transforms][2441]
- [Add mouse grab example][4114]
- [examples: add screenspace texture shader example][4063]
- [Add generic systems example][2636]
- [add examples on how to have a data source running in another thread / in a task pool thread][2915]
- [Simple 2d rotation example][3065]
- [Add move sprite example.][2414]
- [add an example using UI & states to create a game menu][2960]
- [CI runs `cargo miri test -p bevy_ecs`][4310]
- [Tracy spans around main 3D passes][4182]
- [Add automatic docs deployment to GitHub Pages][3535]
### Changed
- [Proper prehashing][3963]
- [Move import_path definitions into shader source][3976]
- [Make `System` responsible for updating its own archetypes][4115]
- [Some small changes related to run criteria piping][3923]
- [Remove unnecessary system labels][4340]
- [Increment last event count on next instead of iter][2382]
- [Obviate the need for `RunSystem`, and remove it][3817]
- [Cleanup some things which shouldn't be components][2982]
- [Remove the config api][3633]
- [Deprecate `.system`][3302]
- [Hide docs for concrete impls of Fetch, FetchState, and SystemParamState][4250]
- [Move the CoreStage::Startup to a seperate StartupSchedule label][2434]
- [`iter_mut` on Assets: send modified event only when asset is iterated over][3565]
- [check if resource for asset already exists before adding it][3560]
- [bevy_render: Batch insertion for prepare_uniform_components][4179]
- [Change default `ColorMaterial` color to white][3981]
- [bevy_render: Only auto-disable mappable primary buffers for discrete GPUs][3803]
- [bevy_render: Do not automatically enable MAPPABLE_PRIMARY_BUFFERS][3698]
- [increase the maximum number of point lights with shadows to the max supported by the device][4435]
- [perf: only recalculate frusta of changed lights][4086]
- [bevy_pbr: Optimize assign_lights_to_clusters][3984]
- [improve error messages for render graph runner][3930]
- [Skinned extraction speedup][4428]
- [Sprites - keep color as 4 f32][4361]
- [Change scaling mode to FixedHorizontal][4055]
- [Replace VSync with PresentMode][3812]
- [do not set cursor grab on window creation if not asked for][3617]
- [bevy_transform: Use Changed in the query for much faster transform_propagate_system][4180]
- [Split bevy_hierarchy out from bevy_transform][4168]
- [Make transform builder methods const][3045]
- [many_cubes: Add a cube pattern suitable for benchmarking culling changes][4126]
- [Make many_cubes example more interesting][4015]
- [Run tests (including doc tests) in `cargo run -p ci` command][3849]
- [Use more ergonomic span syntax][4246]
### Fixed
- [Remove unsound lifetime annotations on `EntityMut`][4096]
- [Remove unsound lifetime annotations on `Query` methods][4243]
- [Remove `World::components_mut`][4092]
- [unsafeify `World::entities_mut`][4093]
- [Use ManuallyDrop instead of forget in insert_resource_with_id][2947]
- [Backport soundness fix][3685]
- [Fix clicked UI nodes getting reset when hovering child nodes][4194]
- [Fix ui interactions when cursor disappears suddenly][3926]
- [Fix node update][3785]
- [Fix derive(SystemParam) macro][4400]
- [SystemParam Derive fixes][2838]
- [Do not crash if RenderDevice doesn't exist][4427]
- [Fixed case of R == G, following original conversion formula][4383]
- [Fixed the frustum-sphere collision and added tests][4035]
- [bevy_render: Fix Quad flip][3741]
- [Fix HDR asset support][3795]
- [fix cluster tiling calculations][4148]
- [bevy_pbr: Do not panic when more than 256 point lights are added the scene][3697]
- [fix issues with too many point lights][3916]
- [shader preprocessor - do not import if scope is not valid][4012]
- [support all line endings in shader preprocessor][3603]
- [Fix animation: shadow and wireframe support][4367]
- [add AnimationPlayer component only on scene roots that are also animation roots][4417]
- [Fix loading non-TriangleList meshes without normals in gltf loader][4376]
- [gltf-loader: disable backface culling if material is double-sided][4270]
- [Fix glTF perspective camera projection][4006]
- [fix mul_vec3 transformation order: should be scale -> rotate -> translate][3811]
[2154]: https://github.com/bevyengine/bevy/pull/2154
[2382]: https://github.com/bevyengine/bevy/pull/2382
[2414]: https://github.com/bevyengine/bevy/pull/2414
[2434]: https://github.com/bevyengine/bevy/pull/2434
[2441]: https://github.com/bevyengine/bevy/pull/2441
[2636]: https://github.com/bevyengine/bevy/pull/2636
[2713]: https://github.com/bevyengine/bevy/pull/2713
[2765]: https://github.com/bevyengine/bevy/pull/2765
[2838]: https://github.com/bevyengine/bevy/pull/2838
[2889]: https://github.com/bevyengine/bevy/pull/2889
[2915]: https://github.com/bevyengine/bevy/pull/2915
[2923]: https://github.com/bevyengine/bevy/pull/2923
[2935]: https://github.com/bevyengine/bevy/pull/2935
[2947]: https://github.com/bevyengine/bevy/pull/2947
[2960]: https://github.com/bevyengine/bevy/pull/2960
[2969]: https://github.com/bevyengine/bevy/pull/2969
[2982]: https://github.com/bevyengine/bevy/pull/2982
[2996]: https://github.com/bevyengine/bevy/pull/2996
[3045]: https://github.com/bevyengine/bevy/pull/3045
[3048]: https://github.com/bevyengine/bevy/pull/3048
[3054]: https://github.com/bevyengine/bevy/pull/3054
[3065]: https://github.com/bevyengine/bevy/pull/3065
[3079]: https://github.com/bevyengine/bevy/pull/3079
[3090]: https://github.com/bevyengine/bevy/pull/3090
[3107]: https://github.com/bevyengine/bevy/pull/3107
[3302]: https://github.com/bevyengine/bevy/pull/3302
[3328]: https://github.com/bevyengine/bevy/pull/3328
[3412]: https://github.com/bevyengine/bevy/pull/3412
[3463]: https://github.com/bevyengine/bevy/pull/3463
[3535]: https://github.com/bevyengine/bevy/pull/3535
[3560]: https://github.com/bevyengine/bevy/pull/3560
[3565]: https://github.com/bevyengine/bevy/pull/3565
[3603]: https://github.com/bevyengine/bevy/pull/3603
[3617]: https://github.com/bevyengine/bevy/pull/3617
[3633]: https://github.com/bevyengine/bevy/pull/3633
[3635]: https://github.com/bevyengine/bevy/pull/3635
[3643]: https://github.com/bevyengine/bevy/pull/3643
[3656]: https://github.com/bevyengine/bevy/pull/3656
[3675]: https://github.com/bevyengine/bevy/pull/3675
[3685]: https://github.com/bevyengine/bevy/pull/3685
[3696]: https://github.com/bevyengine/bevy/pull/3696
[3697]: https://github.com/bevyengine/bevy/pull/3697
[3698]: https://github.com/bevyengine/bevy/pull/3698
[3711]: https://github.com/bevyengine/bevy/pull/3711
[3724]: https://github.com/bevyengine/bevy/pull/3724
[3739]: https://github.com/bevyengine/bevy/pull/3739
[3741]: https://github.com/bevyengine/bevy/pull/3741
[3751]: https://github.com/bevyengine/bevy/pull/3751
[3772]: https://github.com/bevyengine/bevy/pull/3772
[3785]: https://github.com/bevyengine/bevy/pull/3785
[3795]: https://github.com/bevyengine/bevy/pull/3795
[3803]: https://github.com/bevyengine/bevy/pull/3803
[3811]: https://github.com/bevyengine/bevy/pull/3811
[3812]: https://github.com/bevyengine/bevy/pull/3812
[3817]: https://github.com/bevyengine/bevy/pull/3817
[3849]: https://github.com/bevyengine/bevy/pull/3849
[3884]: https://github.com/bevyengine/bevy/pull/3884
[3885]: https://github.com/bevyengine/bevy/pull/3885
[3912]: https://github.com/bevyengine/bevy/pull/3912
[3916]: https://github.com/bevyengine/bevy/pull/3916
[3917]: https://github.com/bevyengine/bevy/pull/3917
[3923]: https://github.com/bevyengine/bevy/pull/3923
[3926]: https://github.com/bevyengine/bevy/pull/3926
[3930]: https://github.com/bevyengine/bevy/pull/3930
[3931]: https://github.com/bevyengine/bevy/pull/3931
[3941]: https://github.com/bevyengine/bevy/pull/3941
[3945]: https://github.com/bevyengine/bevy/pull/3945
[3948]: https://github.com/bevyengine/bevy/pull/3948
[3952]: https://github.com/bevyengine/bevy/pull/3952
[3958]: https://github.com/bevyengine/bevy/pull/3958
[3959]: https://github.com/bevyengine/bevy/pull/3959
[3963]: https://github.com/bevyengine/bevy/pull/3963
[3966]: https://github.com/bevyengine/bevy/pull/3966
[3968]: https://github.com/bevyengine/bevy/pull/3968
[3974]: https://github.com/bevyengine/bevy/pull/3974
[3976]: https://github.com/bevyengine/bevy/pull/3976
[3979]: https://github.com/bevyengine/bevy/pull/3979
[3981]: https://github.com/bevyengine/bevy/pull/3981
[3982]: https://github.com/bevyengine/bevy/pull/3982
[3984]: https://github.com/bevyengine/bevy/pull/3984
[3989]: https://github.com/bevyengine/bevy/pull/3989
[4006]: https://github.com/bevyengine/bevy/pull/4006
[4012]: https://github.com/bevyengine/bevy/pull/4012
[4015]: https://github.com/bevyengine/bevy/pull/4015
[4035]: https://github.com/bevyengine/bevy/pull/4035
[4047]: https://github.com/bevyengine/bevy/pull/4047
[4055]: https://github.com/bevyengine/bevy/pull/4055
[4056]: https://github.com/bevyengine/bevy/pull/4056
[4063]: https://github.com/bevyengine/bevy/pull/4063
[4071]: https://github.com/bevyengine/bevy/pull/4071
[4079]: https://github.com/bevyengine/bevy/pull/4079
[4086]: https://github.com/bevyengine/bevy/pull/4086
[4088]: https://github.com/bevyengine/bevy/pull/4088
[4092]: https://github.com/bevyengine/bevy/pull/4092
[4093]: https://github.com/bevyengine/bevy/pull/4093
[4096]: https://github.com/bevyengine/bevy/pull/4096
[4114]: https://github.com/bevyengine/bevy/pull/4114
[4115]: https://github.com/bevyengine/bevy/pull/4115
[4119]: https://github.com/bevyengine/bevy/pull/4119
[4126]: https://github.com/bevyengine/bevy/pull/4126
[4148]: https://github.com/bevyengine/bevy/pull/4148
[4168]: https://github.com/bevyengine/bevy/pull/4168
[4169]: https://github.com/bevyengine/bevy/pull/4169
[4170]: https://github.com/bevyengine/bevy/pull/4170
[4179]: https://github.com/bevyengine/bevy/pull/4179
[4180]: https://github.com/bevyengine/bevy/pull/4180
[4181]: https://github.com/bevyengine/bevy/pull/4181
[4182]: https://github.com/bevyengine/bevy/pull/4182
[4183]: https://github.com/bevyengine/bevy/pull/4183
[4194]: https://github.com/bevyengine/bevy/pull/4194
[4224]: https://github.com/bevyengine/bevy/pull/4224
[4225]: https://github.com/bevyengine/bevy/pull/4225
[4238]: https://github.com/bevyengine/bevy/pull/4238
[4243]: https://github.com/bevyengine/bevy/pull/4243
[4246]: https://github.com/bevyengine/bevy/pull/4246
[4250]: https://github.com/bevyengine/bevy/pull/4250
[4270]: https://github.com/bevyengine/bevy/pull/4270
[4298]: https://github.com/bevyengine/bevy/pull/4298
[4310]: https://github.com/bevyengine/bevy/pull/4310
[4328]: https://github.com/bevyengine/bevy/pull/4328
[4340]: https://github.com/bevyengine/bevy/pull/4340
[4347]: https://github.com/bevyengine/bevy/pull/4347
[4361]: https://github.com/bevyengine/bevy/pull/4361
[4367]: https://github.com/bevyengine/bevy/pull/4367
[4375]: https://github.com/bevyengine/bevy/pull/4375
[4376]: https://github.com/bevyengine/bevy/pull/4376
[4383]: https://github.com/bevyengine/bevy/pull/4383
[4396]: https://github.com/bevyengine/bevy/pull/4396
[4399]: https://github.com/bevyengine/bevy/pull/4399
[4400]: https://github.com/bevyengine/bevy/pull/4400
[4417]: https://github.com/bevyengine/bevy/pull/4417
[4427]: https://github.com/bevyengine/bevy/pull/4427
[4428]: https://github.com/bevyengine/bevy/pull/4428
[4433]: https://github.com/bevyengine/bevy/pull/4433
[4435]: https://github.com/bevyengine/bevy/pull/4435
## Version 0.6.0 (2022-01-08)
### Added
- [New Renderer][3175]
- [Clustered forward rendering][3153]
- [Frustum culling][2861]
- [Sprite Batching][3060]
- [Materials and MaterialPlugin][3428]
- [2D Meshes and Materials][3460]
- [WebGL2 support][3039]
- [Pipeline Specialization, Shader Assets, and Shader Preprocessing][3031]
- [Modular Rendering][2831]
- [Directional light and shadow][c6]
- [Directional light][2112]
- [Use the infinite reverse right-handed perspective projection][2543]
- [Implement and require `#[derive(Component)]` on all component structs][2254]
- [Shader Imports. Decouple Mesh logic from PBR][3137]
- [Add support for opaque, alpha mask, and alpha blend modes][3072]
- [bevy_gltf: Load light names from gltf][3553]
- [bevy_gltf: Add support for loading lights][3506]
- [Spherical Area Lights][1901]
- [Shader Processor: process imported shader][3290]
- [Add support for not casting/receiving shadows][2726]
- [Add support for configurable shadow map sizes][2700]
- [Implement the `Overflow::Hidden` style property for UI][3296]
- [SystemState][2283]
- [Add a method `iter_combinations` on query to iterate over combinations of query results][1763]
- [Add FromReflect trait to convert dynamic types to concrete types][1395]
- [More pipelined-rendering shader examples][3041]
- [Configurable wgpu features/limits priority][3452]
- [Cargo feature for bevy UI][3546]
- [Spherical area lights example][3498]
- [Implement ReflectValue serialization for Duration][3318]
- [bevy_ui: register Overflow type][3443]
- [Add Visibility component to UI][3426]
- [Implement non-indexed mesh rendering][3415]
- [add tracing spans for parallel executor and system overhead][3416]
- [RemoveChildren command][1925]
- [report shader processing errors in `RenderPipelineCache`][3289]
- [enable Webgl2 optimisation in pbr under feature][3291]
- [Implement Sub-App Labels][2695]
- [Added `set_cursor_icon(...)` to `Window`][3395]
- [Support topologies other than TriangleList][3349]
- [Add an example 'showcasing' using multiple windows][3367]
- [Add an example to draw a rectangle][2957]
- [Added set_scissor_rect to tracked render pass.][3320]
- [Add RenderWorld to Extract step][2555]
- [re-export ClearPassNode][3336]
- [add default standard material in PbrBundle][3325]
- [add methods to get reads and writes of `Access<T>`][3166]
- [Add despawn_children][2903]
- [More Bevy ECS schedule spans][3281]
- [Added transparency to window builder][3105]
- [Add Gamepads resource][3257]
- [Add support for #else for shader defs][3206]
- [Implement iter() for mutable Queries][2305]
- [add shadows in examples][3201]
- [Added missing wgpu image render resources.][3171]
- [Per-light toggleable shadow mapping][3126]
- [Support nested shader defs][3113]
- [use bytemuck crate instead of Byteable trait][2183]
- [`iter_mut()` for Assets type][3118]
- [EntityRenderCommand and PhaseItemRenderCommand][3111]
- [add position to WindowDescriptor][3070]
- [Add System Command apply and RenderGraph node spans][3069]
- [Support for normal maps including from glTF models][2741]
- [MSAA example][3049]
- [Add MSAA to new renderer][3042]
- [Add support for IndexFormat::Uint16][2990]
- [Apply labels to wgpu resources for improved debugging/profiling][2912]
- [Add tracing spans around render subapp and stages][2907]
- [Add set_stencil_reference to TrackedRenderPass][2885]
- [Add despawn_recursive to EntityMut][2855]
- [Add trace_tracy feature for Tracy profiling][2832]
- [Expose wgpu's StencilOperation with bevy][2819]
- [add get_single variant][2793]
- [Add builder methods to Transform][2778]
- [add get_history function to Diagnostic][2772]
- [Add convenience methods for checking a set of inputs][2760]
- [Add error messages for the spooky insertions][2581]
- [Add Deref implementation for ComputePipeline][2759]
- [Derive thiserror::Error for HexColorError][2740]
- [Spawn specific entities: spawn or insert operations, refactor spawn internals, world clearing][2673]
- [Add ClearColor Resource to Pipelined Renderer][2631]
- [remove_component for ReflectComponent][2682]
- [Added ComputePipelineDescriptor][2628]
- [Added StorageTextureAccess to the exposed wgpu API][2614]
- [Add sprite atlases into the new renderer.][2560]
- [Log adapter info on initialization][2542]
- [Add feature flag to enable wasm for bevy_audio][2397]
- [Allow `Option<NonSend<T>>` and `Option<NonSendMut<T>>` as SystemParam][2345]
- [Added helpful adders for systemsets][2366]
- [Derive Clone for Time][2360]
- [Implement Clone for Fetches][2641]
- [Implement IntoSystemDescriptor for SystemDescriptor][2718]
- [implement DetectChanges for NonSendMut][2326]
- [Log errors when loading textures from a gltf file][2260]
- [expose texture/image conversions as From/TryFrom][2175]
- [[ecs] implement is_empty for queries][2271]
- [Add audio to ios example][1007]
- [Example showing how to use AsyncComputeTaskPool and Tasks][2180]
- [Expose set_changed() on ResMut and Mut][2208]
- [Impl AsRef+AsMut for Res, ResMut, and Mut][2189]
- [Add exit_on_esc_system to examples with window][2121]
- [Implement rotation for Text2d][2084]
- [Mesh vertex attributes for skinning and animation][1831]
- [load zeroed UVs as fallback in gltf loader][1803]
- [Implement direct mutable dereferencing][2100]
- [add a span for frames][2053]
- [Add an alias mouse position -> cursor position][2038]
- [Adding `WorldQuery` for `WithBundle`][2024]
- [Automatic System Spans][2033]
- [Add system sets and run criteria example][1909]
- [EnumVariantMeta derive][1972]
- [Added TryFrom for VertexAttributeValues][1963]
- [add render_to_texture example][1927]
- [Added example of entity sorting by components][1817]
- [calculate flat normals for mesh if missing][1808]
- [Add animate shaders example][1765]
- [examples on how to tests systems][1714]
- [Add a UV sphere implementation][1887]
- [Add additional vertex formats][1878]
- [gltf-loader: support data url for images][1828]
- [glTF: added color attribute support][1775]
- [Add synonyms for transform relative vectors][1667]
### Changed
- [Relicense Bevy under the dual MIT or Apache-2.0 license][2509]
- [[ecs] Improve `Commands` performance][2332]
- [Merge AppBuilder into App][2531]
- [Use a special first depth slice for clustered forward rendering][3545]
- [Add a separate ClearPass][3209]
- [bevy_pbr2: Improve lighting units and documentation][2704]
- [gltf loader: do not use the taskpool for only one task][3577]
- [System Param Lifetime Split][2605]
- [Optional `.system`][2398]
- [Optional `.system()`, part 2][2403]
- [Optional `.system()`, part 3][2422]
- [Optional `.system()`, part 4 (run criteria)][2431]
- [Optional `.system()`, part 6 (chaining)][2494]
- [Make the `iter_combinators` examples prettier][3075]
- [Remove dead anchor.rs code][3551]
- [gltf: load textures asynchronously using io task pool][1767]
- [Use fully-qualified type names in Label derive.][3544]
- [Remove Bytes, FromBytes, Labels, EntityLabels][3521]
- [StorageType parameter removed from ComponentDescriptor::new_resource][3495]
- [remove dead code: ShaderDefs derive][3490]
- [Enable Msaa for webgl by default][3489]
- [Renamed Entity::new to Entity::from_raw][3465]
- [bevy::scene::Entity renamed to bevy::scene::DynamicEntity.][3448]
- [make `sub_app` return an `&App` and add `sub_app_mut() -> &mut App`][3309]
- [use ogg by default instead of mp3][3421]
- [enable `wasm-bindgen` feature on gilrs][3420]
- [Use EventWriter for gilrs_system][3413]
- [Add some of the missing methods to `TrackedRenderPass`][3401]
- [Only bevy_render depends directly on wgpu][3393]
- [Update wgpu to 0.12 and naga to 0.8][3375]
- [Improved bevymark: no bouncing offscreen and spawn waves from CLI][3364]
- [Rename render UiSystem to RenderUiSystem][3371]
- [Use updated window size in bevymark example][3335]
- [Enable trace feature for subfeatures using it][3337]
- [Schedule gilrs system before input systems][2989]
- [Rename fixed timestep state and add a test][3260]
- [Port bevy_ui to pipelined-rendering][2653]
- [update wireframe rendering to new renderer][3193]
- [Allow `String` and `&String` as `Id` for `AssetServer.get_handle(id)`][3280]
- [Ported WgpuOptions to new renderer][3282]
- [Down with the system!][2496]
- [Update dependencies `ron` `winit`& fix `cargo-deny` lists][3244]
- [Improve contributors example quality][3258]
- [Expose command encoders][3271]
- [Made Time::time_since_startup return from last tick.][3264]
- [Default image used in PipelinedSpriteBundle to be able to render without loading a texture][3270]
- [make texture from sprite pipeline filterable][3236]
- [iOS: replace cargo-lipo, and update for new macOS][3109]
- [increase light intensity in pbr example][3182]
- [Faster gltf loader][3189]
- [Use crevice std140_size_static everywhere][3168]
- [replace matrix swizzles in pbr shader with index accesses][3122]
- [Disable default features from `bevy_asset` and `bevy_ecs`][3097]
- [Update tracing-subscriber requirement from 0.2.22 to 0.3.1][3076]
- [Update vendored Crevice to 0.8.0 + PR for arrays][3059]
- [change texture atlas sprite indexing to usize][2887]
- [Update derive(DynamicPlugin) to edition 2021][3038]
- [Update to edition 2021 on master][3028]
- [Add entity ID to expect() message][2943]
- [Use RenderQueue in BufferVec][2847]
- [removed unused RenderResourceId and SwapChainFrame][2890]
- [Unique WorldId][2827]
- [add_texture returns index to texture][2864]
- [Update hexasphere requirement from 4.0.0 to 5.0.0][2880]
- [enable change detection for hierarchy maintenance][2411]
- [Make events reuse buffers][2850]
- [Replace `.insert_resource(T::default())` calls with `init_resource::<T>()`][2807]
- [Improve many sprites example][2785]
- [Update glam requirement from 0.17.3 to 0.18.0][2748]
- [update ndk-glue to 0.4][2684]
- [Remove Need for Sprite Size Sync System][2632]
- [Pipelined separate shadow vertex shader][2727]
- [Sub app label changes][2717]
- [Use Explicit Names for Flex Direction][2672]
- [Make default near plane more sensible at 0.1][2703]
- [Reduce visibility of various types and fields][2690]
- [Cleanup FromResources][2601]
- [Better error message for unsupported shader features Fixes #869][2598]
- [Change definition of `ScheduleRunnerPlugin`][2606]
- [Re-implement Automatic Sprite Sizing][2613]
- [Remove with bundle filter][2623]
- [Remove bevy_dynamic_plugin as a default][2578]
- [Port bevy_gltf to pipelined-rendering][2537]
- [Bump notify to 5.0.0-pre.11][2564]
- [Add 's (state) lifetime to `Fetch`][2515]
- [move bevy_core_pipeline to its own plugin][2552]
- [Refactor ECS to reduce the dependency on a 1-to-1 mapping between components and real rust types][2490]
- [Inline world get][2520]
- [Dedupe move logic in remove_bundle and remove_bundle_intersection][2521]
- [remove .system from pipelined code][2538]
- [Scale normal bias by texel size][c26]
- [Make Remove Command's fields public][2449]
- [bevy_utils: Re-introduce `with_capacity()`.][2393]
- [Update rodio requirement from 0.13 to 0.14][2244]
- [Optimize Events::extend and impl std::iter::Extend][2207]
- [Bump winit to 0.25][2186]
- [Improve legibility of RunOnce::run_unsafe param][2181]
- [Update gltf requirement from 0.15.2 to 0.16.0][2196]
- [Move to smallvec v1.6][2074]
- [Update rectangle-pack requirement from 0.3 to 0.4][2086]
- [Make Commands public?][2034]
- [Monomorphize various things][1914]
- [Detect camera projection changes][2015]
- [support assets of any size][1997]
- [Separate Query filter access from fetch access during initial evaluation][1977]
- [Provide better error message when missing a render backend][1965]
- [par_for_each: split batches when iterating on a sparse query][1945]
- [Allow deriving `SystemParam` on private types][1936]
- [Angle bracket annotated types to support generics][1919]
- [More detailed errors when resource not found][1864]
- [Moved events to ECS][1823]
- [Use a sorted Map for vertex buffer attributes][1796]
- [Error message improvements for shader compilation/gltf loading][1786]
- [Rename Light => PointLight and remove unused properties][1778]
- [Override size_hint for all Iterators and add ExactSizeIterator where applicable][1734]
- [Change breakout to use fixed timestamp][1541]
### Fixed
- [Fix shadows for non-TriangleLists][3581]
- [Fix error message for the `Component` macro's `component` `storage` attribute.][3534]
- [do not add plugin ExtractComponentPlugin twice for StandardMaterial][3502]
- [load spirv using correct API][3466]
- [fix shader compilation error reporting for non-wgsl shaders][3441]
- [bevy_ui: Check clip when handling interactions][3461]
- [crevice derive macro: fix path to render_resource when importing from bevy][3438]
- [fix parenting of scenes][2410]
- [Do not panic on failed setting of GameOver state in AlienCakeAddict][3411]
- [Fix minimization crash because of cluster updates.][3369]
- [Fix custom mesh pipelines][3381]
- [Fix hierarchy example panic][3378]
- [Fix double drop in BlobVec::replace_unchecked (#2597)][2848]
- [Remove vestigial derives][3343]
- [Fix crash with disabled winit][3330]
- [Fix clustering for orthographic projections][3316]
- [Run a clear pass on Windows without any Views][3304]
- [Remove some superfluous unsafe code][3297]
- [clearpass: also clear views without depth (2d)][3286]
- [Check for NaN in `Camera::world_to_screen()`][3268]
- [Fix sprite hot reloading in new renderer][3207]
- [Fix path used by macro not considering that we can use a sub-crate][3178]
- [Fix torus normals][3549]
- [enable alpha mode for textures materials that are transparent][3202]
- [fix calls to as_rgba_linear][3200]
- [Fix shadow logic][3186]
- [fix: as_rgba_linear used wrong variant][3192]
- [Fix MIME type support for glTF buffer Data URIs][3101]
- [Remove wasm audio feature flag for 2021][3000]
- [use correct size of pixel instead of 4][2977]
- [Fix custom_shader_pipelined example shader][2992]
- [Fix scale factor for cursor position][2932]
- [fix window resize after wgpu 0.11 upgrade][2953]
- [Fix unsound lifetime annotation on `Query::get_component`][2964]
- [Remove double Events::update in bevy-gilrs][2894]
- [Fix bevy_ecs::schedule::executor_parallel::system span management][2905]
- [Avoid some format! into immediate format!][2913]
- [Fix panic on is_resource_* calls (#2828)][2863]
- [Fix window size change panic][2858]
- [fix `Default` implementation of `Image` so that size and data match][2833]
- [Fix scale_factor_override in the winit backend][2784]
- [Fix breakout example scoreboard][2770]
- [Fix `Option<NonSend<T>>` and `Option<NonSendMut<T>>`][2757]
- [fix missing paths in ECS SystemParam derive macro v2][2550]
- [Add missing bytemuck feature][2625]
- [Update EntityMut's location in push_children() and insert_children()][2604]
- [Fixed issue with how texture arrays were uploaded with write_texture.][c24]
- [Don't update when suspended to avoid GPU use on iOS.][2482]
- [update archetypes for run criterias][2177]
- [Fix AssetServer::get_asset_loader deadlock][2395]
- [Fix unsetting RenderLayers bit in without fn][2409]
- [Fix view vector in pbr frag to work in ortho][2370]
- [Fixes Timer Precision Error Causing Panic][2362]
- [[assets] Fix `AssetServer::get_handle_path`][2310]
- [Fix bad bounds for NonSend SystemParams][2325]
- [Add minimum sizes to textures to prevent crash][2300]
- [[assets] set LoadState properly and more testing!][2226]
- [[assets] properly set `LoadState` with invalid asset extension][2318]
- [Fix Bevy crashing if no audio device is found][2269]
- [Fixes dropping empty BlobVec][2295]
- [[assets] fix Assets being set as 'changed' each frame][2280]
- [drop overwritten component data on double insert][2227]
- [Despawn with children doesn't need to remove entities from parents children when parents are also removed][2278]
- [reduce tricky unsafety and simplify table structure][2221]
- [Use bevy_reflect as path in case of no direct references][1875]
- [Fix Events::<drain/clear> bug][2206]
- [small ecs cleanup and remove_bundle drop bugfix][2172]
- [Fix PBR regression for unlit materials][2197]
- [prevent memory leak when dropping ParallelSystemContainer][2176]
- [fix diagnostic length for asset count][2165]
- [Fixes incorrect `PipelineCompiler::compile_pipeline()` step_mode][2126]
- [Asset re-loading while it's being deleted][2011]
- [Bevy derives handling generics in impl definitions.][2044]
- [Fix unsoundness in `Query::for_each_mut`][2045]
- [Fix mesh with no vertex attributes causing panic][2036]
- [Fix alien_cake_addict: cake should not be at height of player's location][1954]
- [fix memory size for PointLightBundle][1940]
- [Fix unsoundness in query component access][1929]
- [fixing compilation error on macos aarch64][1905]
- [Fix SystemParam handling of Commands][1899]
- [Fix IcoSphere UV coordinates][1871]
- [fix 'attempted to subtract with overflow' for State::inactives][1668]
[1007]: https://github.com/bevyengine/bevy/pull/1007
[1395]: https://github.com/bevyengine/bevy/pull/1395
[1541]: https://github.com/bevyengine/bevy/pull/1541
[1667]: https://github.com/bevyengine/bevy/pull/1667
[1668]: https://github.com/bevyengine/bevy/pull/1668
[1714]: https://github.com/bevyengine/bevy/pull/1714
[1734]: https://github.com/bevyengine/bevy/pull/1734
[1763]: https://github.com/bevyengine/bevy/pull/1763
[1765]: https://github.com/bevyengine/bevy/pull/1765
[1767]: https://github.com/bevyengine/bevy/pull/1767
[1775]: https://github.com/bevyengine/bevy/pull/1775
[1778]: https://github.com/bevyengine/bevy/pull/1778
[1786]: https://github.com/bevyengine/bevy/pull/1786
[1796]: https://github.com/bevyengine/bevy/pull/1796
[1803]: https://github.com/bevyengine/bevy/pull/1803
[1808]: https://github.com/bevyengine/bevy/pull/1808
[1817]: https://github.com/bevyengine/bevy/pull/1817
[1823]: https://github.com/bevyengine/bevy/pull/1823
[1828]: https://github.com/bevyengine/bevy/pull/1828
[1831]: https://github.com/bevyengine/bevy/pull/1831
[1864]: https://github.com/bevyengine/bevy/pull/1864
[1871]: https://github.com/bevyengine/bevy/pull/1871
[1875]: https://github.com/bevyengine/bevy/pull/1875
[1878]: https://github.com/bevyengine/bevy/pull/1878
[1887]: https://github.com/bevyengine/bevy/pull/1887
[1899]: https://github.com/bevyengine/bevy/pull/1899
[1901]: https://github.com/bevyengine/bevy/pull/1901
[1905]: https://github.com/bevyengine/bevy/pull/1905
[1909]: https://github.com/bevyengine/bevy/pull/1909
[1914]: https://github.com/bevyengine/bevy/pull/1914
[1919]: https://github.com/bevyengine/bevy/pull/1919
[1925]: https://github.com/bevyengine/bevy/pull/1925
[1927]: https://github.com/bevyengine/bevy/pull/1927
[1929]: https://github.com/bevyengine/bevy/pull/1929
[1936]: https://github.com/bevyengine/bevy/pull/1936
[1940]: https://github.com/bevyengine/bevy/pull/1940
[1945]: https://github.com/bevyengine/bevy/pull/1945
[1954]: https://github.com/bevyengine/bevy/pull/1954
[1963]: https://github.com/bevyengine/bevy/pull/1963
[1965]: https://github.com/bevyengine/bevy/pull/1965
[1972]: https://github.com/bevyengine/bevy/pull/1972
[1977]: https://github.com/bevyengine/bevy/pull/1977
[1997]: https://github.com/bevyengine/bevy/pull/1997
[2011]: https://github.com/bevyengine/bevy/pull/2011
[2015]: https://github.com/bevyengine/bevy/pull/2015
[2024]: https://github.com/bevyengine/bevy/pull/2024
[2033]: https://github.com/bevyengine/bevy/pull/2033
[2034]: https://github.com/bevyengine/bevy/pull/2034
[2036]: https://github.com/bevyengine/bevy/pull/2036
[2038]: https://github.com/bevyengine/bevy/pull/2038
[2044]: https://github.com/bevyengine/bevy/pull/2044
[2045]: https://github.com/bevyengine/bevy/pull/2045
[2053]: https://github.com/bevyengine/bevy/pull/2053
[2074]: https://github.com/bevyengine/bevy/pull/2074
[2084]: https://github.com/bevyengine/bevy/pull/2084
[2086]: https://github.com/bevyengine/bevy/pull/2086
[2100]: https://github.com/bevyengine/bevy/pull/2100
[2112]: https://github.com/bevyengine/bevy/pull/2112
[2121]: https://github.com/bevyengine/bevy/pull/2121
[2126]: https://github.com/bevyengine/bevy/pull/2126
[2165]: https://github.com/bevyengine/bevy/pull/2165
[2172]: https://github.com/bevyengine/bevy/pull/2172
[2175]: https://github.com/bevyengine/bevy/pull/2175
[2176]: https://github.com/bevyengine/bevy/pull/2176
[2177]: https://github.com/bevyengine/bevy/pull/2177
[2180]: https://github.com/bevyengine/bevy/pull/2180
[2181]: https://github.com/bevyengine/bevy/pull/2181
[2183]: https://github.com/bevyengine/bevy/pull/2183
[2186]: https://github.com/bevyengine/bevy/pull/2186
[2189]: https://github.com/bevyengine/bevy/pull/2189
[2196]: https://github.com/bevyengine/bevy/pull/2196
[2197]: https://github.com/bevyengine/bevy/pull/2197
[2206]: https://github.com/bevyengine/bevy/pull/2206
[2207]: https://github.com/bevyengine/bevy/pull/2207
[2208]: https://github.com/bevyengine/bevy/pull/2208
[2221]: https://github.com/bevyengine/bevy/pull/2221
[2226]: https://github.com/bevyengine/bevy/pull/2226
[2227]: https://github.com/bevyengine/bevy/pull/2227
[2244]: https://github.com/bevyengine/bevy/pull/2244
[2254]: https://github.com/bevyengine/bevy/pull/2254
[2260]: https://github.com/bevyengine/bevy/pull/2260
[2269]: https://github.com/bevyengine/bevy/pull/2269
[2271]: https://github.com/bevyengine/bevy/pull/2271
[2278]: https://github.com/bevyengine/bevy/pull/2278
[2280]: https://github.com/bevyengine/bevy/pull/2280
[2283]: https://github.com/bevyengine/bevy/pull/2283
[2295]: https://github.com/bevyengine/bevy/pull/2295
[2300]: https://github.com/bevyengine/bevy/pull/2300
[2305]: https://github.com/bevyengine/bevy/pull/2305
[2310]: https://github.com/bevyengine/bevy/pull/2310
[2318]: https://github.com/bevyengine/bevy/pull/2318
[2325]: https://github.com/bevyengine/bevy/pull/2325
[2326]: https://github.com/bevyengine/bevy/pull/2326
[2332]: https://github.com/bevyengine/bevy/pull/2332
[2345]: https://github.com/bevyengine/bevy/pull/2345
[2360]: https://github.com/bevyengine/bevy/pull/2360
[2362]: https://github.com/bevyengine/bevy/pull/2362
[2366]: https://github.com/bevyengine/bevy/pull/2366
[2370]: https://github.com/bevyengine/bevy/pull/2370
[2393]: https://github.com/bevyengine/bevy/pull/2393
[2395]: https://github.com/bevyengine/bevy/pull/2395
[2397]: https://github.com/bevyengine/bevy/pull/2397
[2398]: https://github.com/bevyengine/bevy/pull/2398
[2403]: https://github.com/bevyengine/bevy/pull/2403
[2409]: https://github.com/bevyengine/bevy/pull/2409
[2410]: https://github.com/bevyengine/bevy/pull/2410
[2411]: https://github.com/bevyengine/bevy/pull/2411
[2422]: https://github.com/bevyengine/bevy/pull/2422
[2431]: https://github.com/bevyengine/bevy/pull/2431
[2449]: https://github.com/bevyengine/bevy/pull/2449
[2482]: https://github.com/bevyengine/bevy/pull/2482
[2490]: https://github.com/bevyengine/bevy/pull/2490
[2494]: https://github.com/bevyengine/bevy/pull/2494
[2496]: https://github.com/bevyengine/bevy/pull/2496
[2509]: https://github.com/bevyengine/bevy/pull/2509
[2515]: https://github.com/bevyengine/bevy/pull/2515
[2520]: https://github.com/bevyengine/bevy/pull/2520
[2521]: https://github.com/bevyengine/bevy/pull/2521
[2531]: https://github.com/bevyengine/bevy/pull/2531
[2537]: https://github.com/bevyengine/bevy/pull/2537
[2538]: https://github.com/bevyengine/bevy/pull/2538
[2542]: https://github.com/bevyengine/bevy/pull/2542
[2543]: https://github.com/bevyengine/bevy/pull/2543
[2550]: https://github.com/bevyengine/bevy/pull/2550
[2552]: https://github.com/bevyengine/bevy/pull/2552
[2555]: https://github.com/bevyengine/bevy/pull/2555
[2560]: https://github.com/bevyengine/bevy/pull/2560
[2564]: https://github.com/bevyengine/bevy/pull/2564
[2578]: https://github.com/bevyengine/bevy/pull/2578
[2581]: https://github.com/bevyengine/bevy/pull/2581
[2598]: https://github.com/bevyengine/bevy/pull/2598
[2601]: https://github.com/bevyengine/bevy/pull/2601
[2604]: https://github.com/bevyengine/bevy/pull/2604
[2605]: https://github.com/bevyengine/bevy/pull/2605
[2606]: https://github.com/bevyengine/bevy/pull/2606
[2613]: https://github.com/bevyengine/bevy/pull/2613
[2614]: https://github.com/bevyengine/bevy/pull/2614
[2623]: https://github.com/bevyengine/bevy/pull/2623
[2625]: https://github.com/bevyengine/bevy/pull/2625
[2628]: https://github.com/bevyengine/bevy/pull/2628
[2631]: https://github.com/bevyengine/bevy/pull/2631
[2632]: https://github.com/bevyengine/bevy/pull/2632
[2641]: https://github.com/bevyengine/bevy/pull/2641
[2653]: https://github.com/bevyengine/bevy/pull/2653
[2672]: https://github.com/bevyengine/bevy/pull/2672
[2673]: https://github.com/bevyengine/bevy/pull/2673
[2682]: https://github.com/bevyengine/bevy/pull/2682
[2684]: https://github.com/bevyengine/bevy/pull/2684
[2690]: https://github.com/bevyengine/bevy/pull/2690
[2695]: https://github.com/bevyengine/bevy/pull/2695
[2700]: https://github.com/bevyengine/bevy/pull/2700
[2703]: https://github.com/bevyengine/bevy/pull/2703
[2704]: https://github.com/bevyengine/bevy/pull/2704
[2717]: https://github.com/bevyengine/bevy/pull/2717
[2718]: https://github.com/bevyengine/bevy/pull/2718
[2726]: https://github.com/bevyengine/bevy/pull/2726
[2727]: https://github.com/bevyengine/bevy/pull/2727
[2740]: https://github.com/bevyengine/bevy/pull/2740
[2741]: https://github.com/bevyengine/bevy/pull/2741
[2748]: https://github.com/bevyengine/bevy/pull/2748
[2757]: https://github.com/bevyengine/bevy/pull/2757
[2759]: https://github.com/bevyengine/bevy/pull/2759
[2760]: https://github.com/bevyengine/bevy/pull/2760
[2770]: https://github.com/bevyengine/bevy/pull/2770
[2772]: https://github.com/bevyengine/bevy/pull/2772
[2778]: https://github.com/bevyengine/bevy/pull/2778
[2784]: https://github.com/bevyengine/bevy/pull/2784
[2785]: https://github.com/bevyengine/bevy/pull/2785
[2793]: https://github.com/bevyengine/bevy/pull/2793
[2807]: https://github.com/bevyengine/bevy/pull/2807
[2819]: https://github.com/bevyengine/bevy/pull/2819
[2827]: https://github.com/bevyengine/bevy/pull/2827
[2831]: https://github.com/bevyengine/bevy/pull/2831
[2832]: https://github.com/bevyengine/bevy/pull/2832
[2833]: https://github.com/bevyengine/bevy/pull/2833
[2847]: https://github.com/bevyengine/bevy/pull/2847
[2848]: https://github.com/bevyengine/bevy/pull/2848
[2850]: https://github.com/bevyengine/bevy/pull/2850
[2855]: https://github.com/bevyengine/bevy/pull/2855
[2858]: https://github.com/bevyengine/bevy/pull/2858
[2861]: https://github.com/bevyengine/bevy/pull/2861
[2863]: https://github.com/bevyengine/bevy/pull/2863
[2864]: https://github.com/bevyengine/bevy/pull/2864
[2880]: https://github.com/bevyengine/bevy/pull/2880
[2885]: https://github.com/bevyengine/bevy/pull/2885
[2887]: https://github.com/bevyengine/bevy/pull/2887
[2890]: https://github.com/bevyengine/bevy/pull/2890
[2894]: https://github.com/bevyengine/bevy/pull/2894
[2903]: https://github.com/bevyengine/bevy/pull/2903
[2905]: https://github.com/bevyengine/bevy/pull/2905
[2907]: https://github.com/bevyengine/bevy/pull/2907
[2912]: https://github.com/bevyengine/bevy/pull/2912
[2913]: https://github.com/bevyengine/bevy/pull/2913
[2932]: https://github.com/bevyengine/bevy/pull/2932
[2943]: https://github.com/bevyengine/bevy/pull/2943
[2953]: https://github.com/bevyengine/bevy/pull/2953
[2957]: https://github.com/bevyengine/bevy/pull/2957
[2964]: https://github.com/bevyengine/bevy/pull/2964
[2977]: https://github.com/bevyengine/bevy/pull/2977
[2989]: https://github.com/bevyengine/bevy/pull/2989
[2990]: https://github.com/bevyengine/bevy/pull/2990
[2992]: https://github.com/bevyengine/bevy/pull/2992
[3000]: https://github.com/bevyengine/bevy/pull/3000
[3028]: https://github.com/bevyengine/bevy/pull/3028
[3031]: https://github.com/bevyengine/bevy/pull/3031
[3038]: https://github.com/bevyengine/bevy/pull/3038
[3039]: https://github.com/bevyengine/bevy/pull/3039
[3041]: https://github.com/bevyengine/bevy/pull/3041
[3042]: https://github.com/bevyengine/bevy/pull/3042
[3049]: https://github.com/bevyengine/bevy/pull/3049
[3059]: https://github.com/bevyengine/bevy/pull/3059
[3060]: https://github.com/bevyengine/bevy/pull/3060
[3069]: https://github.com/bevyengine/bevy/pull/3069
[3070]: https://github.com/bevyengine/bevy/pull/3070
[3072]: https://github.com/bevyengine/bevy/pull/3072
[3075]: https://github.com/bevyengine/bevy/pull/3075
[3076]: https://github.com/bevyengine/bevy/pull/3076
[3097]: https://github.com/bevyengine/bevy/pull/3097
[3101]: https://github.com/bevyengine/bevy/pull/3101
[3105]: https://github.com/bevyengine/bevy/pull/3105
[3109]: https://github.com/bevyengine/bevy/pull/3109
[3111]: https://github.com/bevyengine/bevy/pull/3111
[3113]: https://github.com/bevyengine/bevy/pull/3113
[3118]: https://github.com/bevyengine/bevy/pull/3118
[3122]: https://github.com/bevyengine/bevy/pull/3122
[3126]: https://github.com/bevyengine/bevy/pull/3126
[3137]: https://github.com/bevyengine/bevy/pull/3137
[3153]: https://github.com/bevyengine/bevy/pull/3153
[3166]: https://github.com/bevyengine/bevy/pull/3166
[3168]: https://github.com/bevyengine/bevy/pull/3168
[3171]: https://github.com/bevyengine/bevy/pull/3171
[3175]: https://github.com/bevyengine/bevy/pull/3175
[3178]: https://github.com/bevyengine/bevy/pull/3178
[3182]: https://github.com/bevyengine/bevy/pull/3182
[3186]: https://github.com/bevyengine/bevy/pull/3186
[3189]: https://github.com/bevyengine/bevy/pull/3189
[3192]: https://github.com/bevyengine/bevy/pull/3192
[3193]: https://github.com/bevyengine/bevy/pull/3193
[3200]: https://github.com/bevyengine/bevy/pull/3200
[3201]: https://github.com/bevyengine/bevy/pull/3201
[3202]: https://github.com/bevyengine/bevy/pull/3202
[3206]: https://github.com/bevyengine/bevy/pull/3206
[3207]: https://github.com/bevyengine/bevy/pull/3207
[3209]: https://github.com/bevyengine/bevy/pull/3209
[3236]: https://github.com/bevyengine/bevy/pull/3236
[3244]: https://github.com/bevyengine/bevy/pull/3244
[3257]: https://github.com/bevyengine/bevy/pull/3257
[3258]: https://github.com/bevyengine/bevy/pull/3258
[3260]: https://github.com/bevyengine/bevy/pull/3260
[3264]: https://github.com/bevyengine/bevy/pull/3264
[3268]: https://github.com/bevyengine/bevy/pull/3268
[3270]: https://github.com/bevyengine/bevy/pull/3270
[3271]: https://github.com/bevyengine/bevy/pull/3271
[3280]: https://github.com/bevyengine/bevy/pull/3280
[3281]: https://github.com/bevyengine/bevy/pull/3281
[3282]: https://github.com/bevyengine/bevy/pull/3282
[3286]: https://github.com/bevyengine/bevy/pull/3286
[3289]: https://github.com/bevyengine/bevy/pull/3289
[3290]: https://github.com/bevyengine/bevy/pull/3290
[3291]: https://github.com/bevyengine/bevy/pull/3291
[3296]: https://github.com/bevyengine/bevy/pull/3296
[3297]: https://github.com/bevyengine/bevy/pull/3297
[3304]: https://github.com/bevyengine/bevy/pull/3304
[3309]: https://github.com/bevyengine/bevy/pull/3309
[3316]: https://github.com/bevyengine/bevy/pull/3316
[3318]: https://github.com/bevyengine/bevy/pull/3318
[3320]: https://github.com/bevyengine/bevy/pull/3320
[3325]: https://github.com/bevyengine/bevy/pull/3325
[3330]: https://github.com/bevyengine/bevy/pull/3330
[3335]: https://github.com/bevyengine/bevy/pull/3335
[3336]: https://github.com/bevyengine/bevy/pull/3336
[3337]: https://github.com/bevyengine/bevy/pull/3337
[3343]: https://github.com/bevyengine/bevy/pull/3343
[3349]: https://github.com/bevyengine/bevy/pull/3349
[3364]: https://github.com/bevyengine/bevy/pull/3364
[3367]: https://github.com/bevyengine/bevy/pull/3367
[3369]: https://github.com/bevyengine/bevy/pull/3369
[3371]: https://github.com/bevyengine/bevy/pull/3371
[3375]: https://github.com/bevyengine/bevy/pull/3375
[3378]: https://github.com/bevyengine/bevy/pull/3378
[3381]: https://github.com/bevyengine/bevy/pull/3381
[3393]: https://github.com/bevyengine/bevy/pull/3393
[3395]: https://github.com/bevyengine/bevy/pull/3395
[3401]: https://github.com/bevyengine/bevy/pull/3401
[3411]: https://github.com/bevyengine/bevy/pull/3411
[3413]: https://github.com/bevyengine/bevy/pull/3413
[3415]: https://github.com/bevyengine/bevy/pull/3415
[3416]: https://github.com/bevyengine/bevy/pull/3416
[3420]: https://github.com/bevyengine/bevy/pull/3420
[3421]: https://github.com/bevyengine/bevy/pull/3421
[3426]: https://github.com/bevyengine/bevy/pull/3426
[3428]: https://github.com/bevyengine/bevy/pull/3428
[3438]: https://github.com/bevyengine/bevy/pull/3438
[3441]: https://github.com/bevyengine/bevy/pull/3441
[3443]: https://github.com/bevyengine/bevy/pull/3443
[3448]: https://github.com/bevyengine/bevy/pull/3448
[3452]: https://github.com/bevyengine/bevy/pull/3452
[3460]: https://github.com/bevyengine/bevy/pull/3460
[3461]: https://github.com/bevyengine/bevy/pull/3461
[3465]: https://github.com/bevyengine/bevy/pull/3465
[3466]: https://github.com/bevyengine/bevy/pull/3466
[3489]: https://github.com/bevyengine/bevy/pull/3489
[3490]: https://github.com/bevyengine/bevy/pull/3490
[3495]: https://github.com/bevyengine/bevy/pull/3495
[3498]: https://github.com/bevyengine/bevy/pull/3498
[3502]: https://github.com/bevyengine/bevy/pull/3502
[3506]: https://github.com/bevyengine/bevy/pull/3506
[3521]: https://github.com/bevyengine/bevy/pull/3521
[3534]: https://github.com/bevyengine/bevy/pull/3534
[3544]: https://github.com/bevyengine/bevy/pull/3544
[3545]: https://github.com/bevyengine/bevy/pull/3545
[3546]: https://github.com/bevyengine/bevy/pull/3546
[3549]: https://github.com/bevyengine/bevy/pull/3549
[3551]: https://github.com/bevyengine/bevy/pull/3551
[3553]: https://github.com/bevyengine/bevy/pull/3553
[3577]: https://github.com/bevyengine/bevy/pull/3577
[3581]: https://github.com/bevyengine/bevy/pull/3581
[c6]: https://github.com/cart/bevy/pull/6
[c24]: https://github.com/cart/bevy/pull/24
[c26]: https://github.com/cart/bevy/pull/26
## Version 0.5.0 (2021-04-06)
### Added
- [PBR Rendering][1554]
- [PBR Textures][1632]
- [HIDPI Text][1132]
- [Rich text][1245]
- [Wireframe Rendering Pipeline][562]
- [Render Layers][1209]
- [Add Sprite Flipping][1407]
- [OrthographicProjection scaling mode + camera bundle refactoring][400]
- [3D OrthographicProjection improvements + new example][1361]
- [Flexible camera bindings][1689]
- [Render text in 2D scenes][1122]
- [`Text2d` render quality][1171]
- [System sets and run criteria v2][1675]
- [System sets and parallel executor v2][1144]
- [Many-to-many system labels][1576]
- [Non-string labels (#1423 continued)][1473]
- [Make `EventReader` a `SystemParam`][1244]
- [Add `EventWriter`][1575]
- [Reliable change detection][1471]
- [Redo State architecture][1424]
- [`Query::get_unique`][1263]
- [gltf: load normal and occlusion as linear textures][1762]
- [Add separate brightness field to AmbientLight][1605]
- [world coords to screen space][1258]
- [Experimental Frustum Culling (for Sprites)][1492]
- [Enable wgpu device limits][1544]
- [bevy_render: add torus and capsule shape][1223]
- [New mesh attribute: color][1194]
- [Minimal change to support instanced rendering][1262]
- [Add support for reading from mapped buffers][1274]
- [Texture atlas format and conversion][1365]
- [enable wgpu device features][547]
- [Subpixel text positioning][1196]
- [make more information available from loaded GLTF model][1020]
- [use `Name` on node when loading a gltf file][1183]
- [GLTF loader: support mipmap filters][1639]
- [Add support for gltf::Material::unlit][1341]
- [Implement `Reflect` for tuples up to length 12][1218]
- [Process Asset File Extensions With Multiple Dots][1277]
- [Update Scene Example to Use scn.ron File][1339]
- [3d game example][1252]
- [Add keyboard modifier example (#1656)][1657]
- [Count number of times a repeating Timer wraps around in a tick][1112]
- [recycle `Timer` refactor to duration.sparkles Add `Stopwatch` struct.][1151]
- [add scene instance entity iteration][1058]
- [Make `Commands` and `World` apis consistent][1703]
- [Add `insert_children` and `push_children` to `EntityMut`][1728]
- [Extend `AppBuilder` api with `add_system_set` and similar methods][1453]
- [add labels and ordering for transform and parent systems in `POST_UPDATE` stage][1456]
- [Explicit execution order ambiguities API][1469]
- [Resolve (most) internal system ambiguities][1606]
- [Change 'components' to 'bundles' where it makes sense semantically][1257]
- [add `Flags<T>` as a query to get flags of component][1172]
- [Rename `add_resource` to `insert_resource`][1356]
- [Update `init_resource` to not overwrite][1349]
- [Enable dynamic mutable access to component data][1284]
- [Get rid of `ChangedRes`][1313]
- [impl `SystemParam` for `Option<Res<T>>` / `Option<ResMut<T>>`][1494]
- [Add Window Resize Constraints][1409]
- [Add basic file drag and drop support][1096]
- [Modify Derive to allow unit structs for `RenderResources`.][1089]
- [bevy_render: load .spv assets][1104]
- [Expose wgpu backend in WgpuOptions and allow it to be configured from the environment][1042]
- [updates on diagnostics (log + new diagnostics)][1085]
- [enable change detection for labels][1155]
- [Name component with fast comparisons][1109]
- [Support for `!Send` tasks][1216]
- [Add missing `spawn_local` method to `Scope` in the single threaded executor case][1266]
- [Add bmp as a supported texture format][1081]
- [Add an alternative winit runner that can be started when not on the main thread][1063]
- [Added `use_dpi` setting to `WindowDescriptor`][1131]
- [Implement `Copy` for `ElementState`][1154]
- [Mutable mesh accessors: `indices_mut` and `attribute_mut`][1164]
- [Add support for OTF fonts][1200]
- [Add `from_xyz` to `Transform`][1212]
- [Adding `copy_texture_to_buffer` and `copy_texture_to_texture`][1236]
- [Added `set_minimized` and `set_position` to `Window`][1292]
- [Example for 2D Frustum Culling][1503]
- [Add remove resource to commands][1478]
### Changed
- [Bevy ECS V2][1525]
- [Fix Reflect serialization of tuple structs][1366]
- [color spaces and representation][1572]
- [Make vertex buffers optional][1485]
- [add to lower case to make asset loading case insensitive][1427]
- [Replace right/up/forward and counter parts with `local_x`/`local_y` and `local_z`][1476]
- [Use valid keys to initialize `AHasher` in `FixedState`][1268]
- [Change `Name` to take `Into<String>` instead of `String`][1283]
- [Update to wgpu-rs 0.7][542]
- [Update glam to 0.13.0.][1550]
- [use std clamp instead of Bevy's][1644]
- [Make `Reflect` impls unsafe (`Reflect::any` must return `self`)][1679]
### Fixed
- [convert grayscale images to rgb][1524]
- [Glb textures should use bevy_render to load images][1454]
- [Don't panic on error when loading assets][1286]
- [Prevent ImageBundles from causing constant layout recalculations][1299]
- [do not check for focus until cursor position has been set][1070]
- [Fix lock order to remove the chance of deadlock][1121]
- [Prevent double panic in the Drop of TaksPoolInner][1064]
- [Ignore events when receiving unknown WindowId][1072]
- [Fix potential bug when using multiple lights.][1055]
- [remove panics when mixing UI and non UI entities in hierarchy][1180]
- [fix label to load gltf scene][1204]
- [fix repeated gamepad events][1221]
- [Fix iOS touch location][1224]
- [Don't panic if there's no index buffer and call draw][1229]
- [Fix Bug in Asset Server Error Message Formatter][1340]
- [add_stage now checks Stage existence][1346]
- [Fix Un-Renamed add_resource Compile Error][1357]
- [Fix Interaction not resetting to None sometimes][1315]
- [Fix regression causing "flipped" sprites to be invisible][1399]
- [revert default vsync mode to Fifo][1416]
- [Fix missing paths in ECS SystemParam derive macro][1434]
- [Fix staging buffer required size calculation (fixes #1056)][1509]
[400]: https://github.com/bevyengine/bevy/pull/400
[542]: https://github.com/bevyengine/bevy/pull/542
[547]: https://github.com/bevyengine/bevy/pull/547
[562]: https://github.com/bevyengine/bevy/pull/562
[1020]: https://github.com/bevyengine/bevy/pull/1020
[1042]: https://github.com/bevyengine/bevy/pull/1042
[1055]: https://github.com/bevyengine/bevy/pull/1055
[1058]: https://github.com/bevyengine/bevy/pull/1058
[1063]: https://github.com/bevyengine/bevy/pull/1063
[1064]: https://github.com/bevyengine/bevy/pull/1064
[1070]: https://github.com/bevyengine/bevy/pull/1070
[1072]: https://github.com/bevyengine/bevy/pull/1072
[1081]: https://github.com/bevyengine/bevy/pull/1081
[1085]: https://github.com/bevyengine/bevy/pull/1085
[1089]: https://github.com/bevyengine/bevy/pull/1089
[1096]: https://github.com/bevyengine/bevy/pull/1096
[1104]: https://github.com/bevyengine/bevy/pull/1104
[1109]: https://github.com/bevyengine/bevy/pull/1109
[1112]: https://github.com/bevyengine/bevy/pull/1112
[1121]: https://github.com/bevyengine/bevy/pull/1121
[1122]: https://github.com/bevyengine/bevy/pull/1122
[1131]: https://github.com/bevyengine/bevy/pull/1131
[1132]: https://github.com/bevyengine/bevy/pull/1132
[1144]: https://github.com/bevyengine/bevy/pull/1144
[1151]: https://github.com/bevyengine/bevy/pull/1151
[1154]: https://github.com/bevyengine/bevy/pull/1154
[1155]: https://github.com/bevyengine/bevy/pull/1155
[1164]: https://github.com/bevyengine/bevy/pull/1164
[1171]: https://github.com/bevyengine/bevy/pull/1171
[1172]: https://github.com/bevyengine/bevy/pull/1172
[1180]: https://github.com/bevyengine/bevy/pull/1180
[1183]: https://github.com/bevyengine/bevy/pull/1183
[1194]: https://github.com/bevyengine/bevy/pull/1194
[1196]: https://github.com/bevyengine/bevy/pull/1196
[1200]: https://github.com/bevyengine/bevy/pull/1200
[1204]: https://github.com/bevyengine/bevy/pull/1204
[1209]: https://github.com/bevyengine/bevy/pull/1209
[1212]: https://github.com/bevyengine/bevy/pull/1212
[1216]: https://github.com/bevyengine/bevy/pull/1216
[1218]: https://github.com/bevyengine/bevy/pull/1218
[1221]: https://github.com/bevyengine/bevy/pull/1221
[1223]: https://github.com/bevyengine/bevy/pull/1223
[1224]: https://github.com/bevyengine/bevy/pull/1224
[1229]: https://github.com/bevyengine/bevy/pull/1229
[1236]: https://github.com/bevyengine/bevy/pull/1236
[1244]: https://github.com/bevyengine/bevy/pull/1244
[1245]: https://github.com/bevyengine/bevy/pull/1245
[1252]: https://github.com/bevyengine/bevy/pull/1252
[1257]: https://github.com/bevyengine/bevy/pull/1257
[1258]: https://github.com/bevyengine/bevy/pull/1258
[1262]: https://github.com/bevyengine/bevy/pull/1262
[1263]: https://github.com/bevyengine/bevy/pull/1263
[1266]: https://github.com/bevyengine/bevy/pull/1266
[1268]: https://github.com/bevyengine/bevy/pull/1268
[1274]: https://github.com/bevyengine/bevy/pull/1274
[1277]: https://github.com/bevyengine/bevy/pull/1277
[1283]: https://github.com/bevyengine/bevy/pull/1283
[1284]: https://github.com/bevyengine/bevy/pull/1284
[1286]: https://github.com/bevyengine/bevy/pull/1286
[1292]: https://github.com/bevyengine/bevy/pull/1292
[1299]: https://github.com/bevyengine/bevy/pull/1299
[1313]: https://github.com/bevyengine/bevy/pull/1313
[1315]: https://github.com/bevyengine/bevy/pull/1315
[1339]: https://github.com/bevyengine/bevy/pull/1339
[1340]: https://github.com/bevyengine/bevy/pull/1340
[1341]: https://github.com/bevyengine/bevy/pull/1341
[1346]: https://github.com/bevyengine/bevy/pull/1346
[1349]: https://github.com/bevyengine/bevy/pull/1349
[1356]: https://github.com/bevyengine/bevy/pull/1356
[1357]: https://github.com/bevyengine/bevy/pull/1357
[1361]: https://github.com/bevyengine/bevy/pull/1361
[1365]: https://github.com/bevyengine/bevy/pull/1365
[1366]: https://github.com/bevyengine/bevy/pull/1366
[1399]: https://github.com/bevyengine/bevy/pull/1399
[1407]: https://github.com/bevyengine/bevy/pull/1407
[1409]: https://github.com/bevyengine/bevy/pull/1409
[1416]: https://github.com/bevyengine/bevy/pull/1416
[1424]: https://github.com/bevyengine/bevy/pull/1424
[1427]: https://github.com/bevyengine/bevy/pull/1427
[1434]: https://github.com/bevyengine/bevy/pull/1434
[1453]: https://github.com/bevyengine/bevy/pull/1453
[1454]: https://github.com/bevyengine/bevy/pull/1454
[1456]: https://github.com/bevyengine/bevy/pull/1456
[1469]: https://github.com/bevyengine/bevy/pull/1469
[1471]: https://github.com/bevyengine/bevy/pull/1471
[1473]: https://github.com/bevyengine/bevy/pull/1473
[1476]: https://github.com/bevyengine/bevy/pull/1476
[1478]: https://github.com/bevyengine/bevy/pull/1478
[1485]: https://github.com/bevyengine/bevy/pull/1485
[1492]: https://github.com/bevyengine/bevy/pull/1492
[1494]: https://github.com/bevyengine/bevy/pull/1494
[1503]: https://github.com/bevyengine/bevy/pull/1503
[1509]: https://github.com/bevyengine/bevy/pull/1509
[1524]: https://github.com/bevyengine/bevy/pull/1524
[1525]: https://github.com/bevyengine/bevy/pull/1525
[1544]: https://github.com/bevyengine/bevy/pull/1544
[1550]: https://github.com/bevyengine/bevy/pull/1550
[1554]: https://github.com/bevyengine/bevy/pull/1554
[1572]: https://github.com/bevyengine/bevy/pull/1572
[1575]: https://github.com/bevyengine/bevy/pull/1575
[1576]: https://github.com/bevyengine/bevy/pull/1576
[1605]: https://github.com/bevyengine/bevy/pull/1605
[1606]: https://github.com/bevyengine/bevy/pull/1606
[1632]: https://github.com/bevyengine/bevy/pull/1632
[1639]: https://github.com/bevyengine/bevy/pull/1639
[1644]: https://github.com/bevyengine/bevy/pull/1644
[1657]: https://github.com/bevyengine/bevy/pull/1657
[1675]: https://github.com/bevyengine/bevy/pull/1675
[1679]: https://github.com/bevyengine/bevy/pull/1679
[1689]: https://github.com/bevyengine/bevy/pull/1689
[1703]: https://github.com/bevyengine/bevy/pull/1703
[1728]: https://github.com/bevyengine/bevy/pull/1728
[1762]: https://github.com/bevyengine/bevy/pull/1762
## Version 0.4.0 (2020-12-19)
### Added
- [add bevymark benchmark example][273]
- [gltf: support camera and fix hierarchy][772]
- [Add tracing spans to schedules, stages, systems][789]
- [add example that represents contributors as bevy icons][801]
- [Add received character][805]
- [Add bevy_dylib to force dynamic linking of bevy][808]
- [Added RenderPass::set_scissor_rect][815]
- [`bevy_log`][836]
- Adds logging functionality as a Plugin.
- Changes internal logging to work with the new implementation.
- [cross-platform main function][847]
- [Controllable ambient light color][852]
- Added a resource to change the current ambient light color for PBR.
- [Added more basic color constants][859]
- [Add box shape][883]
- [Expose an EventId for events][894]
- [System Inputs, Outputs, and Chaining][876]
- [Expose an `EventId` for events][894]
- [Added `set_cursor_position` to `Window`][917]
- [Added new Bevy reflection system][926]
- Replaces the properties system
- [Add support for Apple Silicon][928]
- [Live reloading of shaders][937]
- [Store mouse cursor position in Window][940]
- [Add removal_detection example][945]
- [Additional vertex attribute value types][946]
- [Added WindowFocused event][956]
- [Tracing chrome span names][979]
- [Allow windows to be maximized][1004]
- [GLTF: load default material][1016]
- [can spawn a scene from a ChildBuilder, or directly set its parent when spawning it][1026]
- [add ability to load `.dds`, `.tga`, and `.jpeg` texture formats][1038]
- [add ability to provide custom a `AssetIo` implementation][1037]
### Changed
- [delegate layout reflection to RenderResourceContext][691]
- [Fall back to remove components one by one when failing to remove a bundle][719]
- [Port hecs derive macro improvements][761]
- [Use glyph_brush_layout and add text alignment support][765]
- [upgrade glam and hexasphere][791]
- [Flexible ECS Params][798]
- [Make Timer.tick return &Self][820]
- [FileAssetIo includes full path on error][821]
- [Removed ECS query APIs that could easily violate safety from the public interface][829]
- [Changed Query filter API to be easier to understand][834]
- [bevy_render: delegate buffer aligning to render_resource_context][842]
- [wasm32: non-spirv shader specialization][843]
- [Renamed XComponents to XBundle][863]
- [Check for conflicting system resource parameters][864]
- [Tweaks to TextureAtlasBuilder.finish()][887]
- [do not spend time drawing text with is_visible = false][893]
- [Extend the Texture asset type to support 3D data][903]
- [Breaking changes to timer API][914]
- Created getters and setters rather than exposing struct members.
- [Removed timer auto-ticking system][931]
- Added an example of how to tick timers manually.
- [When a task scope produces <= 1 task to run, run it on the calling thread immediately][932]
- [Breaking changes to Time API][934]
- Created getters to get `Time` state and made members private.
- Modifying `Time`'s values directly is no longer possible outside of bevy.
- [Use `mailbox` instead of `fifo` for vsync on supported systems][920]
- [switch winit size to logical to be dpi independent][947]
- [Change bevy_input::Touch API to match similar APIs][952]
- [Run parent-update and transform-propagation during the "post-startup" stage (instead of "startup")][955]
- [Renderer Optimization Round 1][958]
- [Change`TextureAtlasBuilder` into expected Builder conventions][969]
- [Optimize Text rendering / SharedBuffers][972]
- [hidpi swap chains][973]
- [optimize asset gpu data transfer][987]
- [naming coherence for cameras][995]
- [Schedule v2][1021]
- [Use shaderc for aarch64-apple-darwin][1027]
- [update `Window`'s `width` & `height` methods to return `f32`][1033]
- [Break out Visible component from Draw][1034]
- Users setting `Draw::is_visible` or `Draw::is_transparent` should now set `Visible::is_visible` and `Visible::is_transparent`
- [`winit` upgraded from version 0.23 to version 0.24][1043]
- [set is_transparent to true by default for UI bundles][1071]
### Fixed
- [Fixed typos in KeyCode identifiers][857]
- [Remove redundant texture copies in TextureCopyNode][871]
- [Fix a deadlock that can occur when using scope() on ComputeTaskPool from within a system][892]
- [Don't draw text that isn't visible][893]
- [Use `instant::Instant` for WASM compatibility][895]
- [Fix pixel format conversion in bevy_gltf][897]
- [Fixed duplicated children when spawning a Scene][904]
- [Corrected behaviour of the UI depth system][905]
- [Allow despawning of hierarchies in threadlocal systems][908]
- [Fix `RenderResources` index slicing][948]
- [Run parent-update and transform-propagation during the "post-startup" stage][955]
- [Fix collision detection by comparing abs() penetration depth][966]
- [deal with rounding issue when creating the swap chain][997]
- [only update components for entities in map][1023]
- [Don't panic when attempting to set shader defs from an asset that hasn't loaded yet][1035]
[273]: https://github.com/bevyengine/bevy/pull/273
[691]: https://github.com/bevyengine/bevy/pull/691
[719]: https://github.com/bevyengine/bevy/pull/719
[761]: https://github.com/bevyengine/bevy/pull/761
[765]: https://github.com/bevyengine/bevy/pull/765
[772]: https://github.com/bevyengine/bevy/pull/772
[789]: https://github.com/bevyengine/bevy/pull/789
[791]: https://github.com/bevyengine/bevy/pull/791
[798]: https://github.com/bevyengine/bevy/pull/798
[801]: https://github.com/bevyengine/bevy/pull/801
[805]: https://github.com/bevyengine/bevy/pull/805
[808]: https://github.com/bevyengine/bevy/pull/808
[815]: https://github.com/bevyengine/bevy/pull/815
[820]: https://github.com/bevyengine/bevy/pull/820
[821]: https://github.com/bevyengine/bevy/pull/821
[829]: https://github.com/bevyengine/bevy/pull/829
[834]: https://github.com/bevyengine/bevy/pull/834
[836]: https://github.com/bevyengine/bevy/pull/836
[842]: https://github.com/bevyengine/bevy/pull/842
[843]: https://github.com/bevyengine/bevy/pull/843
[847]: https://github.com/bevyengine/bevy/pull/847
[852]: https://github.com/bevyengine/bevy/pull/852
[857]: https://github.com/bevyengine/bevy/pull/857
[859]: https://github.com/bevyengine/bevy/pull/859
[863]: https://github.com/bevyengine/bevy/pull/863
[864]: https://github.com/bevyengine/bevy/pull/864
[871]: https://github.com/bevyengine/bevy/pull/871
[876]: https://github.com/bevyengine/bevy/pull/876
[883]: https://github.com/bevyengine/bevy/pull/883
[887]: https://github.com/bevyengine/bevy/pull/887
[892]: https://github.com/bevyengine/bevy/pull/892
[893]: https://github.com/bevyengine/bevy/pull/893
[894]: https://github.com/bevyengine/bevy/pull/894
[895]: https://github.com/bevyengine/bevy/pull/895
[897]: https://github.com/bevyengine/bevy/pull/897
[903]: https://github.com/bevyengine/bevy/pull/903
[904]: https://github.com/bevyengine/bevy/pull/904
[905]: https://github.com/bevyengine/bevy/pull/905
[908]: https://github.com/bevyengine/bevy/pull/908
[914]: https://github.com/bevyengine/bevy/pull/914
[917]: https://github.com/bevyengine/bevy/pull/917
[920]: https://github.com/bevyengine/bevy/pull/920
[926]: https://github.com/bevyengine/bevy/pull/926
[928]: https://github.com/bevyengine/bevy/pull/928
[931]: https://github.com/bevyengine/bevy/pull/931
[932]: https://github.com/bevyengine/bevy/pull/932
[934]: https://github.com/bevyengine/bevy/pull/934
[937]: https://github.com/bevyengine/bevy/pull/937
[940]: https://github.com/bevyengine/bevy/pull/940
[945]: https://github.com/bevyengine/bevy/pull/945
[946]: https://github.com/bevyengine/bevy/pull/946
[947]: https://github.com/bevyengine/bevy/pull/947
[948]: https://github.com/bevyengine/bevy/pull/948
[952]: https://github.com/bevyengine/bevy/pull/952
[955]: https://github.com/bevyengine/bevy/pull/955
[956]: https://github.com/bevyengine/bevy/pull/956
[958]: https://github.com/bevyengine/bevy/pull/958
[966]: https://github.com/bevyengine/bevy/pull/966
[969]: https://github.com/bevyengine/bevy/pull/969
[972]: https://github.com/bevyengine/bevy/pull/972
[973]: https://github.com/bevyengine/bevy/pull/973
[979]: https://github.com/bevyengine/bevy/pull/979
[987]: https://github.com/bevyengine/bevy/pull/987
[995]: https://github.com/bevyengine/bevy/pull/995
[997]: https://github.com/bevyengine/bevy/pull/997
[1004]: https://github.com/bevyengine/bevy/pull/1004
[1016]: https://github.com/bevyengine/bevy/pull/1016
[1021]: https://github.com/bevyengine/bevy/pull/1021
[1023]: https://github.com/bevyengine/bevy/pull/1023
[1026]: https://github.com/bevyengine/bevy/pull/1026
[1027]: https://github.com/bevyengine/bevy/pull/1027
[1033]: https://github.com/bevyengine/bevy/pull/1033
[1034]: https://github.com/bevyengine/bevy/pull/1034
[1035]: https://github.com/bevyengine/bevy/pull/1035
[1037]: https://github.com/bevyengine/bevy/pull/1037
[1038]: https://github.com/bevyengine/bevy/pull/1038
[1043]: https://github.com/bevyengine/bevy/pull/1043
[1071]: https://github.com/bevyengine/bevy/pull/1071
## Version 0.3.0 (2020-11-03)
### Added
- [Touch Input][696]
- [iOS XCode Project][539]
- [Android Example and use bevy-glsl-to-spirv 0.2.0][740]
- [Introduce Mouse capture API][679]
- [`bevy_input::touch`: implement touch input][696]
- [D-pad support on MacOS][653]
- [Support for Android file system][723]
- [app: PluginGroups and DefaultPlugins][744]
- `PluginGroup` is a collection of plugins where each plugin can be enabled or disabled.
- [Support to get gamepad button/trigger values using `Axis<GamepadButton>`][683]
- [Expose Winit decorations][627]
- [Enable changing window settings at runtime][644]
- [Expose a pointer of EventLoopProxy to process custom messages][674]
- [Add a way to specify padding/ margins between sprites in a TextureAtlas][460]
- [Add `bevy_ecs::Commands::remove` for bundles][579]
- [impl `Default` for `TextureFormat`][675]
- [Expose current_entity in ChildBuilder][595]
- [`AppBuilder::add_thread_local_resource`][671]
- [`Commands::write_world_boxed` takes a pre-boxed world writer to the ECS's command queue][661]
- [`FrameTimeDiagnosticsPlugin` now shows "frame count" in addition to "frame time" and "fps"][678]
- [Add hierarchy example][565]
- [`WgpuPowerOptions` for choosing between low power, high performance, and adaptive power][397]
- Derive `Debug` for more types: [#597][597], [#632][632]
- Index buffer specialization
- [Allows the use of U32 indices in Mesh index buffers in addition to the usual U16 indices][568]
- [Switch to u32 indices by default][572]
- More instructions for system dependencies
- [Add `systemd-devel` for Fedora Linux dependencies][528]
- [Add `libudev-dev` to Ubuntu dependencies][538]
- [Add Void Linux to linux dependencies file][645]
- [WSL2 instructions][727]
- [Suggest `-Zrun-dsymutil-no` for faster compilation on MacOS][552]
### Changed
- [ecs: ergonomic query.iter(), remove locks, add QuerySets][741]
- `query.iter()` is now a real iterator!
- `QuerySet` allows working with conflicting queries and is checked at compile-time.
- [Rename `query.entity()` and `query.get()`][752]
- `query.get::<Component>(entity)` is now `query.get_component::<Component>(entity)`
- `query.entity(entity)` is now `query.get(entity)`
- [Asset system rework and GLTF scene loading][693]
- [Introduces WASM implementation of `AssetIo`][703]
- [Move transform data out of Mat4][596]
- [Separate gamepad state code from gamepad event code and other customizations][700]
- [gamepad: expose raw and filtered gamepad events][711]
- [Do not depend on `spirv-reflect` on `wasm32` target][689]
- [Move dynamic plugin loading to its own optional crate][544]
- [Add field to `WindowDescriptor` on wasm32 targets to optionally provide an existing canvas element as winit window][515]
- [Adjust how `ArchetypeAccess` tracks mutable & immutable deps][660]
- [Use `FnOnce` in `Commands` and `ChildBuilder` where possible][535]
- [Runners explicitly call `App.initialize()`][690]
- [sRGB awareness for `Color`][616]
- Color is now assumed to be provided in the non-linear sRGB colorspace.
Constructors such as `Color::rgb` and `Color::rgba` will be converted to linear sRGB.
- New methods `Color::rgb_linear` and `Color::rgba_linear` will accept colors already in linear sRGB (the old behavior)
- Individual color-components must now be accessed through setters and getters.
- [`Mesh` overhaul with custom vertex attributes][599]
- Any vertex attribute can now be added over `mesh.attributes.insert()`.
- See `example/shader/mesh_custom_attribute.rs`
- Removed `VertexAttribute`, `Vertex`, `AsVertexBufferDescriptor`.
- For missing attributes (requested by shader, but not defined by mesh), Bevy will provide a zero-filled fallback buffer.
- Despawning an entity multiple times causes a debug-level log message to be emitted instead of a panic: [#649][649], [#651][651]
- [Migrated to Rodio 0.12][692]
- New method of playing audio can be found in the examples.
- Added support for inserting custom initial values for `Local<T>` system resources [#745][745]
### Fixed
- [Properly update bind group ids when setting dynamic bindings][560]
- [Properly exit the app on AppExit event][610]
- [Fix FloatOrd hash being different for different NaN values][618]
- [Fix Added behavior for QueryOne get][543]
- [Update camera_system to fix issue with late camera addition][488]
- [Register `IndexFormat` as a property][664]
- [Fix breakout example bug][685]
- [Fix PreviousParent lag by merging parent update systems][713]
- [Fix bug of connection event of gamepad at startup][730]
- [Fix wavy text][725]
[397]: https://github.com/bevyengine/bevy/pull/397
[460]: https://github.com/bevyengine/bevy/pull/460
[488]: https://github.com/bevyengine/bevy/pull/488
[515]: https://github.com/bevyengine/bevy/pull/515
[528]: https://github.com/bevyengine/bevy/pull/528
[535]: https://github.com/bevyengine/bevy/pull/535
[538]: https://github.com/bevyengine/bevy/pull/538
[539]: https://github.com/bevyengine/bevy/pull/539
[543]: https://github.com/bevyengine/bevy/pull/543
[544]: https://github.com/bevyengine/bevy/pull/544
[552]: https://github.com/bevyengine/bevy/pull/552
[560]: https://github.com/bevyengine/bevy/pull/560
[565]: https://github.com/bevyengine/bevy/pull/565
[568]: https://github.com/bevyengine/bevy/pull/568
[572]: https://github.com/bevyengine/bevy/pull/572
[579]: https://github.com/bevyengine/bevy/pull/579
[595]: https://github.com/bevyengine/bevy/pull/595
[596]: https://github.com/bevyengine/bevy/pull/596
[597]: https://github.com/bevyengine/bevy/pull/597
[599]: https://github.com/bevyengine/bevy/pull/599
[610]: https://github.com/bevyengine/bevy/pull/610
[616]: https://github.com/bevyengine/bevy/pull/616
[618]: https://github.com/bevyengine/bevy/pull/618
[627]: https://github.com/bevyengine/bevy/pull/627
[632]: https://github.com/bevyengine/bevy/pull/632
[644]: https://github.com/bevyengine/bevy/pull/644
[645]: https://github.com/bevyengine/bevy/pull/645
[649]: https://github.com/bevyengine/bevy/pull/649
[651]: https://github.com/bevyengine/bevy/pull/651
[653]: https://github.com/bevyengine/bevy/pull/653
[660]: https://github.com/bevyengine/bevy/pull/660
[661]: https://github.com/bevyengine/bevy/pull/661
[664]: https://github.com/bevyengine/bevy/pull/664
[671]: https://github.com/bevyengine/bevy/pull/671
[674]: https://github.com/bevyengine/bevy/pull/674
[675]: https://github.com/bevyengine/bevy/pull/675
[678]: https://github.com/bevyengine/bevy/pull/678
[679]: https://github.com/bevyengine/bevy/pull/679
[683]: https://github.com/bevyengine/bevy/pull/683
[685]: https://github.com/bevyengine/bevy/pull/685
[689]: https://github.com/bevyengine/bevy/pull/689
[690]: https://github.com/bevyengine/bevy/pull/690
[692]: https://github.com/bevyengine/bevy/pull/692
[693]: https://github.com/bevyengine/bevy/pull/693
[696]: https://github.com/bevyengine/bevy/pull/696
[700]: https://github.com/bevyengine/bevy/pull/700
[703]: https://github.com/bevyengine/bevy/pull/703
[711]: https://github.com/bevyengine/bevy/pull/711
[713]: https://github.com/bevyengine/bevy/pull/713
[723]: https://github.com/bevyengine/bevy/pull/723
[725]: https://github.com/bevyengine/bevy/pull/725
[727]: https://github.com/bevyengine/bevy/pull/727
[730]: https://github.com/bevyengine/bevy/pull/730
[740]: https://github.com/bevyengine/bevy/pull/740
[741]: https://github.com/bevyengine/bevy/pull/741
[744]: https://github.com/bevyengine/bevy/pull/744
[745]: https://github.com/bevyengine/bevy/pull/745
[752]: https://github.com/bevyengine/bevy/pull/752
## Version 0.2.1 (2020-9-20)
### Fixed
- [Remove UI queue print][521]
- [Use async executor 1.3.0][526]
[521]: https://github.com/bevyengine/bevy/pull/521
[526]: https://github.com/bevyengine/bevy/pull/526
## Version 0.2.0 (2020-9-19)
### Added
- [Task System for Bevy][384]
- Replaces rayon with a custom designed task system that consists of several "TaskPools".
- Exports `IOTaskPool`, `ComputePool`, and `AsyncComputePool` in `bevy_tasks` crate.
- [Parallel queries for distributing work over with the `ParallelIterator` trait.][292]
- e.g. `query.iter().par_iter(batch_size).for_each(/* ... */)`
- [Added gamepad support using Gilrs][280]
- [Implement WASM support for bevy_winit][503]
- [Create winit canvas under WebAssembly][506]
- [Implement single threaded task scheduler for WebAssembly][496]
- [Support for binary glTF (.glb).][271]
- [Support for `Or` in ECS queries.][358]
- [Added methods `unload()` and `unload_sync()` on `SceneSpawner` for unloading scenes.][339].
- [Custom rodio source for audio.][145]
- `AudioOuput` is now able to play anything `Decodable`.
- [`Color::hex`][362] for creating `Color` from string hex values.
- Accepts the forms RGB, RGBA, RRGGBB, and RRGGBBAA.
- [`Color::rgb_u8` and `Color::rgba_u8`.][381]
- [Added `bevy_render::pass::ClearColor` to prelude.][396]
- [`SpriteResizeMode` may choose how `Sprite` resizing should be handled. `Automatic` by default.][430]
- [Added methods on `Input<T>`][428] for iterator access to keys.
- `get_pressed()`, `get_just_pressed()`, `get_just_released()`
- [Derived `Copy` for `MouseScrollUnit`.][270]
- [Derived `Clone` for UI component bundles.][390]
- [Some examples of documentation][338]
- [Update docs for Updated, Changed and Mutated][451]
- Tips for faster builds on macOS: [#312][312], [#314][314], [#433][433]
- Added and documented cargo features
- [Created document `docs/cargo_features.md`.][249]
- [Added features for x11 and wayland display servers.][249]
- [and added a feature to disable libloading.][363] (helpful for WASM support)
- Added more instructions for Linux dependencies
- [Arch / Manjaro][275], [NixOS][290], [Ubuntu][463] and [Solus][331]
- [Provide shell.nix for easier compiling with nix-shell][491]
- [Add `AppBuilder::add_startup_stage_|before/after`][505]
### Changed
- [Transform rewrite][374]
- [Use generational entity ids and other optimizations][504]
- [Optimize transform systems to only run on changes.][417]
- [Send an AssetEvent when modifying using `get_id_mut`][323]
- [Rename `Assets::get_id_mut` -> `Assets::get_with_id_mut`][332]
- [Support multiline text in `DrawableText`][183]
- [iOS: use shaderc-rs for glsl to spirv compilation][324]
- [Changed the default node size to Auto instead of Undefined to match the Stretch implementation.][304]
- [Load assets from root path when loading directly][478]
- [Add `render` feature][485], which makes the entire render pipeline optional.
### Fixed
- [Properly track added and removed RenderResources in RenderResourcesNode.][361]
- Fixes issues where entities vanished or changed color when new entities were spawned/despawned.
- [Fixed sprite clipping at same depth][385]
- Transparent sprites should no longer clip.
- [Check asset path existence][345]
- [Fixed deadlock in hot asset reloading][376]
- [Fixed hot asset reloading on Windows][394]
- [Allow glTFs to be loaded that don't have uvs and normals][406]
- [Fixed archetypes_generation being incorrectly updated for systems][383]
- [Remove child from parent when it is despawned][386]
- [Initialize App.schedule systems when running the app][444]
- [Fix missing asset info path for synchronous loading][486]
- [fix font atlas overflow][495]
- [do not assume font handle is present in assets][490]
### Internal Improvements
- Many improvements to Bevy's CI [#325][325], [#349][349], [#357][357], [#373][373], [#423][423]
[145]: https://github.com/bevyengine/bevy/pull/145
[183]: https://github.com/bevyengine/bevy/pull/183
[249]: https://github.com/bevyengine/bevy/pull/249
[270]: https://github.com/bevyengine/bevy/pull/270
[271]: https://github.com/bevyengine/bevy/pull/271
[275]: https://github.com/bevyengine/bevy/pull/275
[280]: https://github.com/bevyengine/bevy/pull/280
[290]: https://github.com/bevyengine/bevy/pull/290
[292]: https://github.com/bevyengine/bevy/pull/292
[304]: https://github.com/bevyengine/bevy/pull/304
[312]: https://github.com/bevyengine/bevy/pull/312
[314]: https://github.com/bevyengine/bevy/pull/314
[323]: https://github.com/bevyengine/bevy/pull/323
[324]: https://github.com/bevyengine/bevy/pull/324
[325]: https://github.com/bevyengine/bevy/pull/325
[331]: https://github.com/bevyengine/bevy/pull/331
[332]: https://github.com/bevyengine/bevy/pull/332
[338]: https://github.com/bevyengine/bevy/pull/332
[345]: https://github.com/bevyengine/bevy/pull/345
[349]: https://github.com/bevyengine/bevy/pull/349
[357]: https://github.com/bevyengine/bevy/pull/357
[358]: https://github.com/bevyengine/bevy/pull/358
[361]: https://github.com/bevyengine/bevy/pull/361
[362]: https://github.com/bevyengine/bevy/pull/362
[363]: https://github.com/bevyengine/bevy/pull/363
[373]: https://github.com/bevyengine/bevy/pull/373
[374]: https://github.com/bevyengine/bevy/pull/374
[376]: https://github.com/bevyengine/bevy/pull/376
[381]: https://github.com/bevyengine/bevy/pull/381
[383]: https://github.com/bevyengine/bevy/pull/383
[384]: https://github.com/bevyengine/bevy/pull/384
[385]: https://github.com/bevyengine/bevy/pull/385
[386]: https://github.com/bevyengine/bevy/pull/386
[390]: https://github.com/bevyengine/bevy/pull/390
[394]: https://github.com/bevyengine/bevy/pull/394
[396]: https://github.com/bevyengine/bevy/pull/396
[339]: https://github.com/bevyengine/bevy/pull/339
[406]: https://github.com/bevyengine/bevy/pull/406
[417]: https://github.com/bevyengine/bevy/pull/417
[423]: https://github.com/bevyengine/bevy/pull/423
[428]: https://github.com/bevyengine/bevy/pull/428
[430]: https://github.com/bevyengine/bevy/pull/430
[433]: https://github.com/bevyengine/bevy/pull/433
[444]: https://github.com/bevyengine/bevy/pull/444
[451]: https://github.com/bevyengine/bevy/pull/451
[463]: https://github.com/bevyengine/bevy/pull/463
[478]: https://github.com/bevyengine/bevy/pull/478
[485]: https://github.com/bevyengine/bevy/pull/485
[486]: https://github.com/bevyengine/bevy/pull/486
[490]: https://github.com/bevyengine/bevy/pull/490
[491]: https://github.com/bevyengine/bevy/pull/491
[495]: https://github.com/bevyengine/bevy/pull/495
[496]: https://github.com/bevyengine/bevy/pull/496
[503]: https://github.com/bevyengine/bevy/pull/503
[504]: https://github.com/bevyengine/bevy/pull/504
[505]: https://github.com/bevyengine/bevy/pull/505
[506]: https://github.com/bevyengine/bevy/pull/506
## Version 0.1.3 (2020-8-22)
## Version 0.1.2 (2020-8-10)
## Version 0.1.1 (2020-8-10)
## Version 0.1.0 (2020-8-10)