{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":234798675,"defaultBranch":"main","name":"bevy","ownerLogin":"bevyengine","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-01-18T21:13:55.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/60047606?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717955976.0","currentOid":""},"activityList":{"items":[{"before":"7ae3c94b0f756c3018da3ea8d0ef3c8e5583caff","after":"621cd23ffc350d057bf2788342be176e1c22a14c","ref":"refs/heads/release-0.14.0","pushedAt":"2024-06-09T18:52:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mockersf","name":"François Mockers","path":"/mockersf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8672791?s=80&v=4"},"commit":{"message":"Fix EntityCommands::despawn docs (#13774)\n\n# Objective\n\nThe `EntityCommands::despawn` method was previously changed from\npanicking behavior to a warning, but the docs continue to state that it\npanics.\n\n## Solution\n\n- Removed panic section, copied warning blurb from `World::despawn`\n- Adds a similar warning blurb to\n`DespawnRecursiveExt::despawn_recursive` and\n`DespawnRecursiveExt::despawn_descendants`","shortMessageHtmlLink":"Fix EntityCommands::despawn docs (#13774)"}},{"before":"7c9c6ff27f483d592a3591be4c80f7e0316496e5","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-13774-b9e67bc3c3f466d2f1e86b27cd6a937086aa0fdb","pushedAt":"2024-06-09T18:14:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"b9e67bc3c3f466d2f1e86b27cd6a937086aa0fdb","after":"7c9c6ff27f483d592a3591be4c80f7e0316496e5","ref":"refs/heads/main","pushedAt":"2024-06-09T18:14:33.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Fix EntityCommands::despawn docs (#13774)\n\n# Objective\n\nThe `EntityCommands::despawn` method was previously changed from\npanicking behavior to a warning, but the docs continue to state that it\npanics.\n\n## Solution\n\n- Removed panic section, copied warning blurb from `World::despawn`\n- Adds a similar warning blurb to\n`DespawnRecursiveExt::despawn_recursive` and\n`DespawnRecursiveExt::despawn_descendants`","shortMessageHtmlLink":"Fix EntityCommands::despawn docs (#13774)"}},{"before":null,"after":"7c9c6ff27f483d592a3591be4c80f7e0316496e5","ref":"refs/heads/gh-readonly-queue/main/pr-13774-b9e67bc3c3f466d2f1e86b27cd6a937086aa0fdb","pushedAt":"2024-06-09T17:59:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Fix EntityCommands::despawn docs (#13774)\n\n# Objective\n\nThe `EntityCommands::despawn` method was previously changed from\npanicking behavior to a warning, but the docs continue to state that it\npanics.\n\n## Solution\n\n- Removed panic section, copied warning blurb from `World::despawn`\n- Adds a similar warning blurb to\n`DespawnRecursiveExt::despawn_recursive` and\n`DespawnRecursiveExt::despawn_descendants`","shortMessageHtmlLink":"Fix EntityCommands::despawn docs (#13774)"}},{"before":"b14684ee12bbf85657b41018daf70bb50ba97655","after":"7ae3c94b0f756c3018da3ea8d0ef3c8e5583caff","ref":"refs/heads/release-0.14.0","pushedAt":"2024-06-09T14:55:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mockersf","name":"François Mockers","path":"/mockersf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8672791?s=80&v=4"},"commit":{"message":"view.inverse_clip_from_world should be world_from_clip (#13756)\n\nAs per the other changes in\nhttps://github.com/bevyengine/bevy/pull/13489\n`view.inverse_clip_from_world` should be `world_from_clip`.\n\n\n\n# Objective\n\nfixes #13749\n\n## Solution\n\nModified lines.wgsl to use the right name as the current name does not\nexist.\n\n## Testing\n\nI ran the 3d_gizmos example and pressed \"p\".\n\n![screenshot-2024-06-08-at-13 21\n22@2x](https://github.com/bevyengine/bevy/assets/551247/b8bfd3db-8273-4606-9dae-040764339883)\n\n![screenshot-2024-06-08-at-13 21\n26@2x](https://github.com/bevyengine/bevy/assets/551247/2619f1ae-ce83-44d7-a9fc-07e686950887)","shortMessageHtmlLink":"view.inverse_clip_from_world should be world_from_clip (#13756)"}},{"before":"b9e67bc3c3f466d2f1e86b27cd6a937086aa0fdb","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-13756-e9a3a0d694e04e5090a2c03ff312e654733434a7","pushedAt":"2024-06-09T14:54:25.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"e9a3a0d694e04e5090a2c03ff312e654733434a7","after":"b9e67bc3c3f466d2f1e86b27cd6a937086aa0fdb","ref":"refs/heads/main","pushedAt":"2024-06-09T14:54:24.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"view.inverse_clip_from_world should be world_from_clip (#13756)\n\nAs per the other changes in\nhttps://github.com/bevyengine/bevy/pull/13489\n`view.inverse_clip_from_world` should be `world_from_clip`.\n\n\n\n# Objective\n\nfixes #13749\n\n## Solution\n\nModified lines.wgsl to use the right name as the current name does not\nexist.\n\n## Testing\n\nI ran the 3d_gizmos example and pressed \"p\".\n\n![screenshot-2024-06-08-at-13 21\n22@2x](https://github.com/bevyengine/bevy/assets/551247/b8bfd3db-8273-4606-9dae-040764339883)\n\n![screenshot-2024-06-08-at-13 21\n26@2x](https://github.com/bevyengine/bevy/assets/551247/2619f1ae-ce83-44d7-a9fc-07e686950887)","shortMessageHtmlLink":"view.inverse_clip_from_world should be world_from_clip (#13756)"}},{"before":null,"after":"b9e67bc3c3f466d2f1e86b27cd6a937086aa0fdb","ref":"refs/heads/gh-readonly-queue/main/pr-13756-e9a3a0d694e04e5090a2c03ff312e654733434a7","pushedAt":"2024-06-09T14:40:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"view.inverse_clip_from_world should be world_from_clip (#13756)\n\nAs per the other changes in\nhttps://github.com/bevyengine/bevy/pull/13489\n`view.inverse_clip_from_world` should be `world_from_clip`.\n\n\n\n# Objective\n\nfixes #13749\n\n## Solution\n\nModified lines.wgsl to use the right name as the current name does not\nexist.\n\n## Testing\n\nI ran the 3d_gizmos example and pressed \"p\".\n\n![screenshot-2024-06-08-at-13 21\n22@2x](https://github.com/bevyengine/bevy/assets/551247/b8bfd3db-8273-4606-9dae-040764339883)\n\n![screenshot-2024-06-08-at-13 21\n26@2x](https://github.com/bevyengine/bevy/assets/551247/2619f1ae-ce83-44d7-a9fc-07e686950887)","shortMessageHtmlLink":"view.inverse_clip_from_world should be world_from_clip (#13756)"}},{"before":"971723e4b455044124ce3c5abc0291bd93683180","after":"b14684ee12bbf85657b41018daf70bb50ba97655","ref":"refs/heads/release-0.14.0","pushedAt":"2024-06-09T14:22:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mockersf","name":"François Mockers","path":"/mockersf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8672791?s=80&v=4"},"commit":{"message":"Clear messed up feature flag on AppExitStates impl (#13737)\n\n# Objective\n\n- In #13649 additional method had been added to AppExitStates, but there\nfeature gate left for method in implementation for App at refactoring\nstage.\n- Fixes #13733 .\n\n## Solution\n\n- Removed the feature gate.\n\n## Testing\n\n- Ran reproducing example from #13733 with no compilation errors","shortMessageHtmlLink":"Clear messed up feature flag on AppExitStates impl (#13737)"}},{"before":"e9a3a0d694e04e5090a2c03ff312e654733434a7","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-13737-7b14b8c01531c8a9997d5bcf3ff2ca40a5f26857","pushedAt":"2024-06-09T14:04:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"7b14b8c01531c8a9997d5bcf3ff2ca40a5f26857","after":"e9a3a0d694e04e5090a2c03ff312e654733434a7","ref":"refs/heads/main","pushedAt":"2024-06-09T14:04:30.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Clear messed up feature flag on AppExitStates impl (#13737)\n\n# Objective\n\n- In #13649 additional method had been added to AppExitStates, but there\nfeature gate left for method in implementation for App at refactoring\nstage.\n- Fixes #13733 .\n\n## Solution\n\n- Removed the feature gate.\n\n## Testing\n\n- Ran reproducing example from #13733 with no compilation errors","shortMessageHtmlLink":"Clear messed up feature flag on AppExitStates impl (#13737)"}},{"before":null,"after":"e9a3a0d694e04e5090a2c03ff312e654733434a7","ref":"refs/heads/gh-readonly-queue/main/pr-13737-7b14b8c01531c8a9997d5bcf3ff2ca40a5f26857","pushedAt":"2024-06-09T13:49:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Clear messed up feature flag on AppExitStates impl (#13737)\n\n# Objective\n\n- In #13649 additional method had been added to AppExitStates, but there\nfeature gate left for method in implementation for App at refactoring\nstage.\n- Fixes #13733 .\n\n## Solution\n\n- Removed the feature gate.\n\n## Testing\n\n- Ran reproducing example from #13733 with no compilation errors","shortMessageHtmlLink":"Clear messed up feature flag on AppExitStates impl (#13737)"}},{"before":"78ef32be87c0c1fa7c0482d18b508cbb4ff4da37","after":"971723e4b455044124ce3c5abc0291bd93683180","ref":"refs/heads/release-0.14.0","pushedAt":"2024-06-08T23:18:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mockersf","name":"François Mockers","path":"/mockersf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8672791?s=80&v=4"},"commit":{"message":"13743 app exit hang (#13744)\n\nFixes #13743.\n\n---------\n\nCo-authored-by: Brezak ","shortMessageHtmlLink":"13743 app exit hang (#13744)"}},{"before":"97a3cd92c3f00c933042c57e86fdfd9768ad7468","after":"78ef32be87c0c1fa7c0482d18b508cbb4ff4da37","ref":"refs/heads/release-0.14.0","pushedAt":"2024-06-08T23:17:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mockersf","name":"François Mockers","path":"/mockersf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8672791?s=80&v=4"},"commit":{"message":"13743 app exit hang (#13744)\n\nFixes #13743.\n\n---------\n\nCo-authored-by: Brezak ","shortMessageHtmlLink":"13743 app exit hang (#13744)"}},{"before":"7b14b8c01531c8a9997d5bcf3ff2ca40a5f26857","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-13744-3bfc42766621d12749c09eca3bfd9911dc0dc3f5","pushedAt":"2024-06-08T21:58:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"3bfc42766621d12749c09eca3bfd9911dc0dc3f5","after":"7b14b8c01531c8a9997d5bcf3ff2ca40a5f26857","ref":"refs/heads/main","pushedAt":"2024-06-08T21:58:38.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"13743 app exit hang (#13744)\n\nFixes #13743.\n\n---------\n\nCo-authored-by: Brezak ","shortMessageHtmlLink":"13743 app exit hang (#13744)"}},{"before":null,"after":"7b14b8c01531c8a9997d5bcf3ff2ca40a5f26857","ref":"refs/heads/gh-readonly-queue/main/pr-13744-3bfc42766621d12749c09eca3bfd9911dc0dc3f5","pushedAt":"2024-06-08T21:42:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"13743 app exit hang (#13744)\n\nFixes #13743.\n\n---------\n\nCo-authored-by: Brezak ","shortMessageHtmlLink":"13743 app exit hang (#13744)"}},{"before":"3bfc42766621d12749c09eca3bfd9911dc0dc3f5","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-13727-d38d8a148a65074ef6620046b2e9349105412fdd","pushedAt":"2024-06-08T13:07:34.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"d38d8a148a65074ef6620046b2e9349105412fdd","after":"3bfc42766621d12749c09eca3bfd9911dc0dc3f5","ref":"refs/heads/main","pushedAt":"2024-06-08T13:07:33.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Add `mappings` to `EntityMapper` (#13727)\n\n# Objective\n\n- Fixes #13703\n\n## Solution\n\n- Added `mappings` to the `EntityMapper` trait, which returns an\niterator over currently tracked `Entity` to `Entity` mappings.\n- Added `DynEntityMapper` as an [object\nsafe](https://doc.rust-lang.org/reference/items/traits.html#object-safety)\nalternative to `EntityMapper`.\n- Added `assert_object_safe` as a helper for ensuring traits are object\nsafe.\n\n## Testing\n\n- Added new unit test `entity_mapper_iteration` which tests the\n`SceneEntityMapper` implementation of `EntityMapper::mappings`.\n- Added unit tests to ensure `DynEntityMapper`, `DynEq` and `DynHash`\nare object safe.\n- Passed CI on my Windows 10 development environment\n\n---\n\n## Changelog\n\n- Added `mappings` to `EntityMapper` trait.\n\n## Migration Guide\n\n- If you are implementing `EntityMapper` yourself, you can use the below\nas a stub implementation:\n\n```rust\nfn mappings(&self) -> impl Iterator {\n unimplemented!()\n}\n```\n\n- If you were using `EntityMapper` as a trait object (`dyn\nEntityMapper`), instead use `dyn DynEntityMapper` and its associated\nmethods.\n\n## Notes\n\n- The original issue proposed returning a `Vec` from `EntityMapper`\ninstead of an `impl Iterator` to preserve its object safety. This is a\nsimpler option, but also forces an allocation where it isn't strictly\nneeded. I've opted for this split into `DynEntityMapper` and\n`EntityMapper` as it's been done several times across Bevy already, and\nprovides maximum flexibility to users.\n- `assert_object_safe` is an empty function, since the assertion\nactually happens once you try to use a `dyn T` for some trait `T`. I\nhave still added this function to clearly document what object safety is\nwithin Bevy, and to create a standard way to communicate that a given\ntrait must be object safe.\n- Other traits should have tests added to ensure object safety, but I've\nleft those off to avoid cluttering this PR further.\n\n---------\n\nCo-authored-by: Alice Cecile ","shortMessageHtmlLink":"Add mappings to EntityMapper (#13727)"}},{"before":null,"after":"3bfc42766621d12749c09eca3bfd9911dc0dc3f5","ref":"refs/heads/gh-readonly-queue/main/pr-13727-d38d8a148a65074ef6620046b2e9349105412fdd","pushedAt":"2024-06-08T12:52:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Add `mappings` to `EntityMapper` (#13727)\n\n# Objective\n\n- Fixes #13703\n\n## Solution\n\n- Added `mappings` to the `EntityMapper` trait, which returns an\niterator over currently tracked `Entity` to `Entity` mappings.\n- Added `DynEntityMapper` as an [object\nsafe](https://doc.rust-lang.org/reference/items/traits.html#object-safety)\nalternative to `EntityMapper`.\n- Added `assert_object_safe` as a helper for ensuring traits are object\nsafe.\n\n## Testing\n\n- Added new unit test `entity_mapper_iteration` which tests the\n`SceneEntityMapper` implementation of `EntityMapper::mappings`.\n- Added unit tests to ensure `DynEntityMapper`, `DynEq` and `DynHash`\nare object safe.\n- Passed CI on my Windows 10 development environment\n\n---\n\n## Changelog\n\n- Added `mappings` to `EntityMapper` trait.\n\n## Migration Guide\n\n- If you are implementing `EntityMapper` yourself, you can use the below\nas a stub implementation:\n\n```rust\nfn mappings(&self) -> impl Iterator {\n unimplemented!()\n}\n```\n\n- If you were using `EntityMapper` as a trait object (`dyn\nEntityMapper`), instead use `dyn DynEntityMapper` and its associated\nmethods.\n\n## Notes\n\n- The original issue proposed returning a `Vec` from `EntityMapper`\ninstead of an `impl Iterator` to preserve its object safety. This is a\nsimpler option, but also forces an allocation where it isn't strictly\nneeded. I've opted for this split into `DynEntityMapper` and\n`EntityMapper` as it's been done several times across Bevy already, and\nprovides maximum flexibility to users.\n- `assert_object_safe` is an empty function, since the assertion\nactually happens once you try to use a `dyn T` for some trait `T`. I\nhave still added this function to clearly document what object safety is\nwithin Bevy, and to create a standard way to communicate that a given\ntrait must be object safe.\n- Other traits should have tests added to ensure object safety, but I've\nleft those off to avoid cluttering this PR further.\n\n---------\n\nCo-authored-by: Alice Cecile ","shortMessageHtmlLink":"Add mappings to EntityMapper (#13727)"}},{"before":"d38d8a148a65074ef6620046b2e9349105412fdd","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-13717-651f3d08d75077c4b12f519d3b22ecc047a9670f","pushedAt":"2024-06-08T12:52:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"651f3d08d75077c4b12f519d3b22ecc047a9670f","after":"d38d8a148a65074ef6620046b2e9349105412fdd","ref":"refs/heads/main","pushedAt":"2024-06-08T12:51:59.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Uncouple `DynamicTextureAtlasBuilder` from assets (#13717)\n\n# Objective\n\nRemove some unnecessary coupling between `DynamicTextureAtlasBuilder`\nand `bevy_asset`.\n\n## Solution\n\nRemove the dependency of `DynamicTextureAtlasBuilder::add_texture` to\n`bevy_asset`, by directly passing the `Image` of the atlas to mutate,\ninstead of passing separate `Assets` and `Handle` for the\nfunction to do the lookup by itself. The lookup can be done from the\ncaller, and this allows using the builder in contexts where the `Image`\nis not stored inside `Assets`.\n\nClean-up a bit the font atlas files by introducing a `PlacedGlyph` type\nstoring the `GlyphId` and its `SubpixelOffset`, which were otherwise\nalways both passed as function parameters and the pair used as key in\nhash maps.\n\n## Testing\n\nThere's no change in behavior.\n\n---\n\n## Changelog\n\n- Added a `PlacedGlyph` type aggregating a `GlyphId` and a\n`SubpixelOffset`. That type is now used as parameter in a few text atlas\nAPIs, instead of passing individual values.\n\n## Migration Guide\n\n- Replace the `glyph_id` and `subpixel_offset` of a few text atlas APIs\nby a single `place_glyph: PlacedGlyph` parameter trivially combining the\ntwo.","shortMessageHtmlLink":"Uncouple DynamicTextureAtlasBuilder from assets (#13717)"}},{"before":null,"after":"d38d8a148a65074ef6620046b2e9349105412fdd","ref":"refs/heads/gh-readonly-queue/main/pr-13717-651f3d08d75077c4b12f519d3b22ecc047a9670f","pushedAt":"2024-06-08T12:38:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Uncouple `DynamicTextureAtlasBuilder` from assets (#13717)\n\n# Objective\n\nRemove some unnecessary coupling between `DynamicTextureAtlasBuilder`\nand `bevy_asset`.\n\n## Solution\n\nRemove the dependency of `DynamicTextureAtlasBuilder::add_texture` to\n`bevy_asset`, by directly passing the `Image` of the atlas to mutate,\ninstead of passing separate `Assets` and `Handle` for the\nfunction to do the lookup by itself. The lookup can be done from the\ncaller, and this allows using the builder in contexts where the `Image`\nis not stored inside `Assets`.\n\nClean-up a bit the font atlas files by introducing a `PlacedGlyph` type\nstoring the `GlyphId` and its `SubpixelOffset`, which were otherwise\nalways both passed as function parameters and the pair used as key in\nhash maps.\n\n## Testing\n\nThere's no change in behavior.\n\n---\n\n## Changelog\n\n- Added a `PlacedGlyph` type aggregating a `GlyphId` and a\n`SubpixelOffset`. That type is now used as parameter in a few text atlas\nAPIs, instead of passing individual values.\n\n## Migration Guide\n\n- Replace the `glyph_id` and `subpixel_offset` of a few text atlas APIs\nby a single `place_glyph: PlacedGlyph` parameter trivially combining the\ntwo.","shortMessageHtmlLink":"Uncouple DynamicTextureAtlasBuilder from assets (#13717)"}},{"before":"a2580fe42fbaf3d8e42f97c82114d1493b6739cd","after":"97a3cd92c3f00c933042c57e86fdfd9768ad7468","ref":"refs/heads/release-0.14.0","pushedAt":"2024-06-07T23:05:31.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mockersf","name":"François Mockers","path":"/mockersf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8672791?s=80&v=4"},"commit":{"message":"Make the component types of the new animation players clonable. (#13736)\n\n# Objective\n\nSome use cases might require holding onto the previous state of the\nanimation player for change detection.\n\n## Solution\n\nAdded `clone` and `copy` implementation to most animation types. \nAdded optimized `clone_from` implementations for the specific use case\nof holding a `PreviousAnimationPlayer` component.\n\n---------\n\nCo-authored-by: Alice Cecile ","shortMessageHtmlLink":"Make the component types of the new animation players clonable. (#13736)"}},{"before":"651f3d08d75077c4b12f519d3b22ecc047a9670f","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-13736-d45bcfd0434702c0b97de1727e5d5a9b2055dad3","pushedAt":"2024-06-07T22:13:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"d45bcfd0434702c0b97de1727e5d5a9b2055dad3","after":"651f3d08d75077c4b12f519d3b22ecc047a9670f","ref":"refs/heads/main","pushedAt":"2024-06-07T22:13:35.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Make the component types of the new animation players clonable. (#13736)\n\n# Objective\n\nSome use cases might require holding onto the previous state of the\nanimation player for change detection.\n\n## Solution\n\nAdded `clone` and `copy` implementation to most animation types. \nAdded optimized `clone_from` implementations for the specific use case\nof holding a `PreviousAnimationPlayer` component.\n\n---------\n\nCo-authored-by: Alice Cecile ","shortMessageHtmlLink":"Make the component types of the new animation players clonable. (#13736)"}},{"before":null,"after":"651f3d08d75077c4b12f519d3b22ecc047a9670f","ref":"refs/heads/gh-readonly-queue/main/pr-13736-d45bcfd0434702c0b97de1727e5d5a9b2055dad3","pushedAt":"2024-06-07T21:51:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Make the component types of the new animation players clonable. (#13736)\n\n# Objective\n\nSome use cases might require holding onto the previous state of the\nanimation player for change detection.\n\n## Solution\n\nAdded `clone` and `copy` implementation to most animation types. \nAdded optimized `clone_from` implementations for the specific use case\nof holding a `PreviousAnimationPlayer` component.\n\n---------\n\nCo-authored-by: Alice Cecile ","shortMessageHtmlLink":"Make the component types of the new animation players clonable. (#13736)"}},{"before":"d45bcfd0434702c0b97de1727e5d5a9b2055dad3","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-13706-b17292f9d11cf3d3fb4a2fb3e3324fb80afd8c88","pushedAt":"2024-06-07T21:11:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"b17292f9d11cf3d3fb4a2fb3e3324fb80afd8c88","after":"d45bcfd0434702c0b97de1727e5d5a9b2055dad3","ref":"refs/heads/main","pushedAt":"2024-06-07T21:11:38.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"improved the error message by insert_boxed (issue #13646) (again) (#13706)\n\npreviously I worked on fixing issue #13646, back when the error message\ndid not include the type at all.\nBut that error message had room for improvement, so I included the\nfeedback of @alice-i-cecile and @MrGVSV.\nThe error message will now read `the given key (of type\nbevy_reflect::tests::Foo) does not support hashing` or 'the given key\n(of type bevy_reflect::DynamicStruct) does not support hashing' in case\nof a dynamic struct that represents a hashable struct\n\ni also added a new unit test for this new behaviour\n(`reflect_map_no_hash_dynamic`).\nFixes #13646 (again)\n\n---------\n\nCo-authored-by: Alice Cecile \nCo-authored-by: Gino Valente <49806985+MrGVSV@users.noreply.github.com>","shortMessageHtmlLink":"improved the error message by insert_boxed (issue #13646) (again) (#1…"}},{"before":null,"after":"d45bcfd0434702c0b97de1727e5d5a9b2055dad3","ref":"refs/heads/gh-readonly-queue/main/pr-13706-b17292f9d11cf3d3fb4a2fb3e3324fb80afd8c88","pushedAt":"2024-06-07T20:56:31.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"improved the error message by insert_boxed (issue #13646) (again) (#13706)\n\npreviously I worked on fixing issue #13646, back when the error message\ndid not include the type at all.\nBut that error message had room for improvement, so I included the\nfeedback of @alice-i-cecile and @MrGVSV.\nThe error message will now read `the given key (of type\nbevy_reflect::tests::Foo) does not support hashing` or 'the given key\n(of type bevy_reflect::DynamicStruct) does not support hashing' in case\nof a dynamic struct that represents a hashable struct\n\ni also added a new unit test for this new behaviour\n(`reflect_map_no_hash_dynamic`).\nFixes #13646 (again)\n\n---------\n\nCo-authored-by: Alice Cecile \nCo-authored-by: Gino Valente <49806985+MrGVSV@users.noreply.github.com>","shortMessageHtmlLink":"improved the error message by insert_boxed (issue #13646) (again) (#1…"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEYH_Z6QA","startCursor":null,"endCursor":null}},"title":"Activity · bevyengine/bevy"}