diff --git a/Cargo.lock b/Cargo.lock index cffbac5..c3288aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,16 +27,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "accesskit_consumer" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53cf47daed85312e763fbf85ceca136e0d7abc68e0a7e12abe11f48172bc3b10" -dependencies = [ - "accesskit", - "hashbrown 0.16.1", -] - [[package]] name = "accesskit_consumer" version = "0.38.0" @@ -47,6 +37,20 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "accesskit_ios" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "750c4e9f6ce888dfe8a10c0f1b5ceb646a7854fd46579d74919219d1bb314083" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.16.1", + "objc2 0.5.3", + "objc2-foundation 0.2.2", + "objc2-ui-kit", +] + [[package]] name = "accesskit_macos" version = "0.26.3" @@ -54,21 +58,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce02dc63b43f0c9296af9ac946312a2dc8814427d7a64d2d600971dac55b6076" dependencies = [ "accesskit", - "accesskit_consumer 0.38.0", + "accesskit_consumer", "hashbrown 0.16.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", ] [[package]] name = "accesskit_windows" -version = "0.32.1" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff7009f1a532e917d66970a1e80c965140c6cfbbabbdde3d64e5431e6c78e21" +checksum = "106c2b961215864d1c2e703ee63269c25c4e80a577ffb2c1017b9c17dcdf83a1" dependencies = [ "accesskit", - "accesskit_consumer 0.35.0", + "accesskit_consumer", "hashbrown 0.16.1", "static_assertions", "windows", @@ -77,11 +81,12 @@ dependencies = [ [[package]] name = "accesskit_winit" -version = "0.32.2" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fe9a94394896352cc4660ca2288bd4ef883d83238853c038b44070c8f134313" +checksum = "d5b41e63a69f36d9f1f41e70464c7e5f72eee485ef26aab19f0b4f86e6c0a84c" dependencies = [ "accesskit", + "accesskit_ios", "accesskit_macos", "accesskit_windows", "raw-window-handle", @@ -129,7 +134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812947049edcd670a82cd5c73c3661d2e58468577ba8489de58e1a73c04cbd5d" dependencies = [ "alsa-sys", - "bitflags 2.13.1", + "bitflags 2.13.2", "cfg-if", "libc", ] @@ -151,7 +156,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.13.1", + "bitflags 2.13.2", "cc", "jni 0.22.4", "libc", @@ -160,7 +165,7 @@ dependencies = [ "ndk-context", "ndk-sys", "num_enum", - "thiserror 2.0.20", + "thiserror 2.0.21", ] [[package]] @@ -184,6 +189,67 @@ dependencies = [ "libc", ] +[[package]] +name = "annotate-snippets" +version = "0.12.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a5b0a5ab8561c603f16c3b78c24a386b1f70e7fc1b1b1e8c15738828e4a176" +dependencies = [ + "anstyle", + "memchr", + "unicode-width", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + [[package]] name = "app_dirs2" version = "2.5.5" @@ -207,21 +273,21 @@ dependencies = [ [[package]] name = "arboard" -version = "3.6.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" +checksum = "aeb9553e62312c8756a5979254fc6d7da8bbeb5986a1e17037fab932f7037917" dependencies = [ "clipboard-win", "image", "log", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-core-graphics", "objc2-foundation 0.3.2", "parking_lot", "percent-encoding", - "windows-sys 0.60.2", + "windows-sys 0.61.2", "wl-clipboard-rs", "x11rb", ] @@ -326,7 +392,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.1.4", + "rustix 1.1.5", "slab", "windows-sys 0.61.2", ] @@ -378,24 +444,24 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base64" -version = "0.22.1" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" [[package]] name = "bevy" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bfadbebfc6599aa59289b754ac30023959854304f3d393da2cf62bb3cd5df8f" +checksum = "8bd0e4ea5ec677698955f9f285221eab78606d8c27b57b889def199c16ce36e6" dependencies = [ "bevy_internal", ] [[package]] name = "bevy-inspector-egui" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e425288304f5ec24cd026d39c813883225e670a88c94655272066d43d38078" +checksum = "98182a5a3df04578b66f1c33f60fbf261bf50e38eb10ec6efde7a289085792c6" dependencies = [ "bevy-inspector-egui-derive", "bevy_app", @@ -433,20 +499,20 @@ dependencies = [ [[package]] name = "bevy-inspector-egui-derive" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99bdb0f08cbcec82bf7909b880acd52d7a527e6d47156b99f8b60e4cb9765f3f" +checksum = "bc30a757090722e61daef7fa7cfc0ce13ae7cf5c0ccba08ed959d9bfa66388bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.9", ] [[package]] name = "bevy_a11y" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c02cd43f914ef7a0f5b16f8a3d88c378c07c92f1a8c32ac5ac4d4f73e55f9e2" +checksum = "f1070b9b7f087a5073be2da713367f29a831c85cd3391afcfc95bc0498125704" dependencies = [ "accesskit", "bevy_app", @@ -457,23 +523,24 @@ dependencies = [ [[package]] name = "bevy_android" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae5ea5245a845cefa8efb5ff7c2a8a36cdebfb99596068780f340f0b5aba6689" +checksum = "17fd56a4708085b36f8aa1a011e347f8bd9334f0343bb3d5d9c3742897968a55" dependencies = [ "android-activity", ] [[package]] name = "bevy_animation" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc513aac5cda673fb138236e969b4514e0a9b9f93fd33288111f147baa8af623" +checksum = "9409aa300e8b023281b78759b3aed4124ec745dc7e1c9f96cbb445110e4b32ad" dependencies = [ "bevy_animation_macros", "bevy_app", "bevy_asset", "bevy_color", + "bevy_curve", "bevy_derive", "bevy_ecs", "bevy_math", @@ -483,6 +550,7 @@ dependencies = [ "bevy_time", "bevy_transform", "bevy_utils", + "bitvec", "blake3", "derive_more", "downcast-rs 2.0.2", @@ -491,7 +559,7 @@ dependencies = [ "ron", "serde", "smallvec", - "thiserror 2.0.20", + "thiserror 2.0.21", "thread_local", "tracing", "uuid", @@ -499,9 +567,9 @@ dependencies = [ [[package]] name = "bevy_animation_macros" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed2910d9ca5c3b48968a54c4571789e4e81935cf3c823383fcac34ca28e2b0e" +checksum = "011144ef75ba95b665b1e6b03f3b7bbe9aa85d55472abb1d21e64813dac1c0a4" dependencies = [ "bevy_macro_utils", "quote", @@ -510,9 +578,9 @@ dependencies = [ [[package]] name = "bevy_anti_alias" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde973fc942cb596b03cae0dbece0a4d9dc2d2790bbc9852aa415affc1210d3a" +checksum = "f4df27fadf88e6ff72bf63a5e80e3921536eabfcde3196db347c31b6bbb39606" dependencies = [ "bevy_app", "bevy_asset", @@ -521,6 +589,7 @@ dependencies = [ "bevy_derive", "bevy_diagnostic", "bevy_ecs", + "bevy_extract", "bevy_image", "bevy_math", "bevy_reflect", @@ -532,9 +601,9 @@ dependencies = [ [[package]] name = "bevy_app" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd2aa472d43b4d081ef41d26300d17bd22cba6d68df2a223eb358782fa40bc6" +checksum = "a2489da2972d57cccd19060d7faa44c4c4cfb296a657c84ee6ab8bde2b1c0115" dependencies = [ "bevy_derive", "bevy_ecs", @@ -546,7 +615,7 @@ dependencies = [ "ctrlc", "downcast-rs 2.0.2", "log", - "thiserror 2.0.20", + "thiserror 2.0.21", "variadics_please", "wasm-bindgen", "web-sys", @@ -554,9 +623,9 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1624eddbf2293441b2158506aba75e523432b898d9da26eb6ed3e20af4c7fd38" +checksum = "b88b3767a2c3f5a017b2febca08a670819ea2acb46846e4d8cd02980aeb0ed3e" dependencies = [ "async-broadcast", "async-channel", @@ -573,7 +642,7 @@ dependencies = [ "bevy_reflect", "bevy_tasks", "bevy_utils", - "bitflags 2.13.1", + "bitflags 2.13.2", "blake3", "crossbeam-channel", "derive_more", @@ -587,7 +656,7 @@ dependencies = [ "ron", "serde", "stackfuture", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", "uuid", "wasm-bindgen", @@ -597,9 +666,9 @@ dependencies = [ [[package]] name = "bevy_asset_macros" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "735611c80e926e960d279cba2a6f6ab27a61291752ec3b26e76bf9a0957e11e1" +checksum = "875b4fd236612744dbd61fb0a77ffde0aee37b8b780cf8a89caa308511c70646" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -609,9 +678,9 @@ dependencies = [ [[package]] name = "bevy_audio" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "750809b7b007dd6de6e5c730e67973027a3d22392fa7fd6f5331f8cefb489a18" +checksum = "fd16f2ac779d6ce5fdcc951c314141d37deff54cef213197872054259fc3a031" dependencies = [ "bevy_app", "bevy_asset", @@ -625,9 +694,9 @@ dependencies = [ [[package]] name = "bevy_camera" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de20d0babfb51e3907eb4eb56f1e36096a6f8c77acd997f5de611df4ee067d" +checksum = "f32c0d8436fb9373dc3b64fa30c3dec51d6a7cfda61de3c70fd1f62f8a903887" dependencies = [ "bevy_app", "bevy_asset", @@ -638,6 +707,7 @@ dependencies = [ "bevy_math", "bevy_mesh", "bevy_reflect", + "bevy_shape", "bevy_transform", "bevy_utils", "bevy_window", @@ -645,15 +715,15 @@ dependencies = [ "downcast-rs 2.0.2", "serde", "smallvec", - "thiserror 2.0.20", + "thiserror 2.0.21", "wgpu-types", ] [[package]] name = "bevy_clipboard" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a9792c7f2e8b5b71b9572a6d98fca4ee88ed186c8a02e164540c461ae3a92e" +checksum = "f0267b0beafd7e587a1b25b5ce14b271577f5fc1d8fd7828b2b66f0cf5dd649b" dependencies = [ "arboard", "bevy_app", @@ -667,25 +737,26 @@ dependencies = [ [[package]] name = "bevy_color" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5370beae13bea2db64744f370bb33566aa770dff91c2beae245ce82217fbbc" +checksum = "c0e57bfc1a0da1c018235fb98bb0e15ab61f1d0253122020ab6e1450e6cfbcf9" dependencies = [ + "bevy_curve", "bevy_math", "bevy_reflect", "bytemuck", "derive_more", "encase", "serde", - "thiserror 2.0.20", + "thiserror 2.0.21", "wgpu-types", ] [[package]] name = "bevy_core_pipeline" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2564f1ba766532e8eeb20059133ff6703e8dd5c3864b92378d0d1c541096ef12" +checksum = "a4a077b301be4b373a4cb224c54988e1f8385ecf3ab9e60bd3727a65b3d6901a" dependencies = [ "bevy_app", "bevy_asset", @@ -694,6 +765,7 @@ dependencies = [ "bevy_derive", "bevy_diagnostic", "bevy_ecs", + "bevy_extract", "bevy_image", "bevy_light", "bevy_log", @@ -705,16 +777,31 @@ dependencies = [ "bevy_transform", "bevy_utils", "bevy_window", - "bitflags 2.13.1", + "bitflags 2.13.2", "indexmap", "nonmax", ] [[package]] -name = "bevy_derive" -version = "0.19.1" +name = "bevy_curve" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2a03321f3bd8016a041b3ae6afe83e636b3540fbc61d571bf069a21fda3231" +checksum = "21ae28ed95c1c8a1bfc8930471840ee5a4b99b6b31138b17598e7ee6f4291b64" +dependencies = [ + "approx", + "bevy_math", + "bevy_reflect", + "itertools 0.14.0", + "serde", + "thiserror 2.0.21", + "variadics_please", +] + +[[package]] +name = "bevy_derive" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd59e9e600d792e60df17b4d52719b28c288bf047884ac89ad29d9c7a6592d2c" dependencies = [ "bevy_macro_utils", "quote", @@ -723,41 +810,47 @@ dependencies = [ [[package]] name = "bevy_dev_tools" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee5887919325facb6142d98de3e3d156c1b86c2375ac569e2e3547601ab05eaf" +checksum = "c166963d672c45b34cf71f2cab3df627ec61f7ed06df451f008c9519f87e2e34" dependencies = [ + "bevy_animation", "bevy_app", "bevy_asset", + "bevy_audio", "bevy_camera", "bevy_color", - "bevy_core_pipeline", "bevy_diagnostic", "bevy_ecs", + "bevy_extract", "bevy_image", "bevy_input", + "bevy_light", "bevy_log", "bevy_math", - "bevy_pbr", + "bevy_mesh", "bevy_picking", + "bevy_platform", "bevy_reflect", "bevy_render", "bevy_shader", + "bevy_sprite", "bevy_state", "bevy_text", "bevy_time", "bevy_transform", "bevy_ui", - "bevy_ui_render", + "bevy_ui_widgets", "bevy_window", + "bevy_world_serialization", "tracing", ] [[package]] name = "bevy_diagnostic" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a3a736f15486650c4c6866798a78d625c7063c991a3cc7b13f1577d89c82ae" +checksum = "7f8851dc1b253b350bf941695457007e6e44ad4b8f075bf52a1ef202e6866b6a" dependencies = [ "atomic-waker", "bevy_app", @@ -773,9 +866,9 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a350b2e4c2e47f7903d688affb8a723b31bca63af9789f1da88703f1ba04e354" +checksum = "d5541a1658c5029b39e3ec59c6ecb47ad0a6d85fa083312a5ee2a95d6982a926" dependencies = [ "arrayvec", "bevy_ecs_macros", @@ -784,7 +877,7 @@ dependencies = [ "bevy_reflect", "bevy_tasks", "bevy_utils", - "bitflags 2.13.1", + "bitflags 2.13.2", "bumpalo", "concurrent-queue", "derive_more", @@ -792,18 +885,19 @@ dependencies = [ "indexmap", "log", "nonmax", + "rand", "serde", "slotmap", "smallvec", - "thiserror 2.0.20", + "thiserror 2.0.21", "variadics_please", ] [[package]] name = "bevy_ecs_macro_logic" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a10fef45a3e7dad717ba03e8b5f7ecdf3b3fd1cd1c5e425793525938e90d5f" +checksum = "5197fea7643d2733e8b6d81c3dfa99adad3a754cdfd159c00255cea157b795d7" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -813,9 +907,9 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3916d712264b6f3ec9c964ba10719450ea371e537e202a2ffcfa9f6a5e68169d" +checksum = "3dde5305169503c9101404bf8cf17e8351f56fccf5152b8e5d7d7c32dcf1c486" dependencies = [ "bevy_ecs_macro_logic", "bevy_macro_utils", @@ -826,9 +920,9 @@ dependencies = [ [[package]] name = "bevy_egui" -version = "0.40.1" +version = "0.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7466095822999850fc52074c0b65e9f8b42da100bf7bbd10e5dc87415c6b3401" +checksum = "cee91f48e697b0fd853713f81e95299a3f337f4623b1445df5e3da91284f30a3" dependencies = [ "arboard", "bevy_app", @@ -838,6 +932,7 @@ dependencies = [ "bevy_core_pipeline", "bevy_derive", "bevy_ecs", + "bevy_extract", "bevy_image", "bevy_input", "bevy_log", @@ -847,6 +942,7 @@ dependencies = [ "bevy_reflect", "bevy_render", "bevy_shader", + "bevy_shape", "bevy_time", "bevy_transform", "bevy_utils", @@ -858,7 +954,7 @@ dependencies = [ "encase", "getrandom 0.4.3", "image", - "itertools", + "itertools 0.15.0", "js-sys", "smithay-clipboard", "thread_local", @@ -871,19 +967,49 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be03820f64f2279ae9d826c882e4ef764516ff75ab7bdc39bb40801891533b89" +checksum = "d4e4c4183c39ae8d00e53afeeab66aa71c41b08d82638149f9d485a2a62df569" dependencies = [ "bevy_macro_utils", "encase_derive_impl", ] [[package]] -name = "bevy_feathers" -version = "0.19.1" +name = "bevy_extract" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2bb6cfa726defd90add3eb71dc8b1ab32ca441f2531130679bfa880af2fb1f1" +checksum = "08e27fc07ef8e3ab7c217fed1b171d42c90f3b6e4f7f526ffa28f9006ac49aa4" +dependencies = [ + "bevy_app", + "bevy_camera", + "bevy_derive", + "bevy_ecs", + "bevy_extract_macros", + "bevy_log", + "bevy_platform", + "bevy_reflect", + "bevy_time", + "bevy_utils", +] + +[[package]] +name = "bevy_extract_macros" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5c67e8c55ef35c65295e8cb614eda169780e21e2748f6df470d3bff21849a3" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "bevy_feathers" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c4566f226580b5d852e3fa4fdb821e45367f598c0c6090896d686e446fa91f4" dependencies = [ "accesskit", "bevy_a11y", @@ -913,9 +1039,9 @@ dependencies = [ [[package]] name = "bevy_gilrs" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8215d166d5c4a9f821713a1a549a57c5f8bdf404745c84f7a8b920b7b7d92b2" +checksum = "c7a8c6c22d01a7b2e949ac1be313fffca62a23ae0b802a884f009e6dc70a4cea" dependencies = [ "bevy_app", "bevy_ecs", @@ -923,20 +1049,21 @@ dependencies = [ "bevy_platform", "bevy_time", "gilrs", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", ] [[package]] name = "bevy_gizmos" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ac5bcad0b8d141ef64f4a89643f74f11827ea6ef48073192b39d69156ed1b92" +checksum = "dfc92f635ec5eaef5733afee45e6a0452e8c65de42d818dc7269dc5265087689" dependencies = [ "bevy_app", "bevy_asset", "bevy_camera", "bevy_color", + "bevy_curve", "bevy_ecs", "bevy_gizmos_macros", "bevy_input", @@ -944,6 +1071,7 @@ dependencies = [ "bevy_math", "bevy_mesh", "bevy_reflect", + "bevy_shape", "bevy_time", "bevy_transform", "bevy_utils", @@ -952,9 +1080,9 @@ dependencies = [ [[package]] name = "bevy_gizmos_macros" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b37bbaa6241480b119da406fc261c9cf85d435addad880ae564c9b0f54a89a28" +checksum = "501e72c4ac31caef17ef9e627dee212d2107b95402a891ec6f0fc4107dd0cdf4" dependencies = [ "bevy_macro_utils", "quote", @@ -963,9 +1091,9 @@ dependencies = [ [[package]] name = "bevy_gizmos_render" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ea2b6266d210bca0aa3bcba7e17204e437b4e86cecd4021ab7dcd32da576a02" +checksum = "42f5be0c9f114dc9b2c929076517d088e059b971edec5dfff4d5a225df6796df" dependencies = [ "bevy_app", "bevy_asset", @@ -973,6 +1101,7 @@ dependencies = [ "bevy_color", "bevy_core_pipeline", "bevy_ecs", + "bevy_extract", "bevy_gizmos", "bevy_image", "bevy_log", @@ -983,6 +1112,7 @@ dependencies = [ "bevy_reflect", "bevy_render", "bevy_shader", + "bevy_shape", "bevy_sprite_render", "bevy_transform", "bevy_utils", @@ -992,9 +1122,9 @@ dependencies = [ [[package]] name = "bevy_gltf" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d17df73b26adfb8be89f0716b8667c60660bdd2d589863b8901caca58c99841" +checksum = "2b5c4e1779a522f706853f75fc11107a032d4e4f92d26fbef4c36e825d00afdf" dependencies = [ "async-lock", "base64", @@ -1003,6 +1133,7 @@ dependencies = [ "bevy_asset", "bevy_camera", "bevy_color", + "bevy_curve", "bevy_ecs", "bevy_image", "bevy_light", @@ -1016,21 +1147,21 @@ dependencies = [ "bevy_world_serialization", "fixedbitset", "gltf", - "itertools", + "itertools 0.14.0", "percent-encoding", "serde", "serde_json", "smallvec", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", "wgpu-types", ] [[package]] name = "bevy_image" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca63218585b83f98831214431449e9344b363349dd5cab98dae0b8129f0a0e2f" +checksum = "bb818dd8d705809d54adea08e346edce81a51ddbf06406ddf12a72ee467a3855" dependencies = [ "bevy_app", "bevy_asset", @@ -1040,7 +1171,7 @@ dependencies = [ "bevy_platform", "bevy_reflect", "bevy_utils", - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "futures-lite", "guillotiere", @@ -1050,16 +1181,16 @@ dependencies = [ "rectangle-pack", "ruzstd", "serde", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", "wgpu-types", ] [[package]] name = "bevy_input" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22e8b1119ff5c0b551cc11b672d25732c4e3eda72aceabc380595bd0e7bbe88" +checksum = "261ca5cc8a0bf228bfe4e841570db18a3ab1d034ce089772b8ec49c163ae74ea" dependencies = [ "bevy_app", "bevy_ecs", @@ -1069,16 +1200,17 @@ dependencies = [ "derive_more", "log", "smol_str", - "thiserror 2.0.20", + "thiserror 2.0.21", ] [[package]] name = "bevy_input_focus" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4d5573eb503387f73d12acde3010d49c808c790d34691e2fb410fc54b8c72b9" +checksum = "83c81d369d0ab3ec17ba14bab1e07da7cacf3751a3104a93b1a3cd99d887887b" dependencies = [ "bevy_app", + "bevy_camera", "bevy_ecs", "bevy_input", "bevy_math", @@ -1086,14 +1218,14 @@ dependencies = [ "bevy_reflect", "bevy_window", "log", - "thiserror 2.0.20", + "thiserror 2.0.21", ] [[package]] name = "bevy_internal" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba99ca2e501f14f4af3322d66ae41b5c5b6ebd3aac4d00cda47dea4c00290ae" +checksum = "a4ed1cb58d1761426a077a8aff55e6a2e0cdfd19e411211d4b0217409330bb84" dependencies = [ "bevy_a11y", "bevy_android", @@ -1106,10 +1238,12 @@ dependencies = [ "bevy_clipboard", "bevy_color", "bevy_core_pipeline", + "bevy_curve", "bevy_derive", "bevy_dev_tools", "bevy_diagnostic", "bevy_ecs", + "bevy_extract", "bevy_feathers", "bevy_gilrs", "bevy_gizmos", @@ -1132,6 +1266,7 @@ dependencies = [ "bevy_render", "bevy_scene", "bevy_shader", + "bevy_shape", "bevy_sprite", "bevy_sprite_render", "bevy_state", @@ -1150,14 +1285,15 @@ dependencies = [ [[package]] name = "bevy_light" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f91fb900c2412c5cb7ff5083d428d8361a1d39b605df86eb259aff82f7ac45" +checksum = "529d5ec7db637bbce7d016b2bfd0798362ad67118de8e9d37aaac24ecb3337cd" dependencies = [ "bevy_app", "bevy_asset", "bevy_camera", "bevy_color", + "bevy_curve", "bevy_ecs", "bevy_gizmos", "bevy_image", @@ -1166,6 +1302,7 @@ dependencies = [ "bevy_mesh", "bevy_platform", "bevy_reflect", + "bevy_shape", "bevy_transform", "bevy_utils", "half", @@ -1176,9 +1313,9 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24488594832237c1e3abc823642823fa057b810c3a21e14e65bdbd15d1579d5" +checksum = "a87d5152292b0e581a589cffb6b7e83e0afe345279d4126545ce7b786bd8a47a" dependencies = [ "android_log-sys", "bevy_app", @@ -1194,9 +1331,9 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7164fe229422295bba15f1885048f34f4660db069aacb895208f996b0c7784fb" +checksum = "c0d03a948df65138e30917d91237797d7e38763135ebacd0f28c891e1a3b2b52" dependencies = [ "proc-macro2", "quote", @@ -1206,9 +1343,9 @@ dependencies = [ [[package]] name = "bevy_material" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3efcdb3ba04a57f6e05548884745684a2051e9692398915f57c5c276306b7f10" +checksum = "5be7ee4b2f4764e8d58a59afb47a3ba8bae36f955f409f08c658cace2808ef40" dependencies = [ "bevy_asset", "bevy_derive", @@ -1221,7 +1358,7 @@ dependencies = [ "bevy_utils", "encase", "smallvec", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", "variadics_please", "wgpu-types", @@ -1229,9 +1366,9 @@ dependencies = [ [[package]] name = "bevy_material_macros" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854f95c8f3374ef6242790de50b5cb8f5a601c698772d1447bf856067b53ee64" +checksum = "70551fa201e1416ab44968631b7ce6320c194acfdb652a1971ec6882af122333" dependencies = [ "bevy_macro_utils", "quote", @@ -1240,29 +1377,26 @@ dependencies = [ [[package]] name = "bevy_math" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ead494dcfaa9b4594eed7f09a27d868b7cc7fc9ebd655c5643322778f4a8a2" +checksum = "598cbdcec4d0f0d966905996240ac76f77a644c583f95fb612d4f59f5f649038" dependencies = [ "approx", - "arrayvec", "bevy_reflect", "derive_more", "glam", - "itertools", "libm", "rand", - "rand_distr", "serde", - "thiserror 2.0.20", + "thiserror 2.0.21", "variadics_please", ] [[package]] name = "bevy_mesh" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2adbf8e5a5817c345986756eb0377e18a510e1d7685ef62d6c7bafcd3bab85e" +checksum = "09358ac9a3ede5855568c10eaba6bcf126bf86639e786fb21b413457ebec5f26" dependencies = [ "bevy_app", "bevy_asset", @@ -1273,15 +1407,17 @@ dependencies = [ "bevy_mikktspace", "bevy_platform", "bevy_reflect", + "bevy_shape", "bevy_transform", - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "derive_more", "encase", "glam", "half", "hexasphere", - "thiserror 2.0.20", + "serde", + "thiserror 2.0.21", "tracing", "wgpu-types", ] @@ -1294,9 +1430,9 @@ checksum = "bff34eb29ff4b8a8688bc7299f14fb6b597461ca80fec03ed7d22939ab33e48f" [[package]] name = "bevy_pbr" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244ae7d618b51a59c913c36b0564a295cd85ea91a5e777b542bb7bdb846a23d6" +checksum = "fb760932d1e683e7c00011f5c99e4e1cc893646a3a7b7224da6daf9bfa94853d" dependencies = [ "arrayvec", "bevy_app", @@ -1307,6 +1443,7 @@ dependencies = [ "bevy_derive", "bevy_diagnostic", "bevy_ecs", + "bevy_extract", "bevy_gltf", "bevy_image", "bevy_light", @@ -1318,10 +1455,11 @@ dependencies = [ "bevy_reflect", "bevy_render", "bevy_shader", + "bevy_shape", "bevy_tasks", "bevy_transform", "bevy_utils", - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "derive_more", "fixedbitset", @@ -1330,16 +1468,16 @@ dependencies = [ "offset-allocator", "smallvec", "static_assertions", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", "wgpu-types", ] [[package]] name = "bevy_picking" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235d1ea0cd7d0ff2f37592f37b4d8504c597884296058ecadcb0d206d0258ab7" +checksum = "47a04fb644c62a57a4f338f5cd8b61519c569139742eafe87dccb523e4b7cf2e" dependencies = [ "bevy_app", "bevy_asset", @@ -1351,6 +1489,7 @@ dependencies = [ "bevy_mesh", "bevy_platform", "bevy_reflect", + "bevy_shape", "bevy_time", "bevy_transform", "bevy_window", @@ -1361,10 +1500,11 @@ dependencies = [ [[package]] name = "bevy_platform" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd610a417e7b4a3b9602cf11264d16cbbff8eabe689c5fed8be4e84c6a2680a3" +checksum = "000bc467d1b344b6609fcf217a9b08d349d49c8e85dc4179fb7656f2b6e3db47" dependencies = [ + "bytemuck", "critical-section", "foldhash 0.2.0", "futures-channel", @@ -1383,17 +1523,19 @@ dependencies = [ [[package]] name = "bevy_post_process" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb9340107f7a4292b3b1d138cffb2700f31cef580f5777f2e83f4f00eae4dc1" +checksum = "d684c2ac93e94d9b7ba767ce02ea435ef244677a24746241726de2aa552ba1a4" dependencies = [ "bevy_app", "bevy_asset", "bevy_camera", "bevy_color", "bevy_core_pipeline", + "bevy_curve", "bevy_derive", "bevy_ecs", + "bevy_extract", "bevy_image", "bevy_math", "bevy_platform", @@ -1402,21 +1544,21 @@ dependencies = [ "bevy_shader", "bevy_utils", "smallvec", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", ] [[package]] name = "bevy_ptr" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1974de4b140f102fded747229ff4a61921acec07f02f0d1dcdadfe9ce177d0ff" +checksum = "41935a00c02004753bd7ed5094754397800b3f673bf15553bb007b06216872d5" [[package]] name = "bevy_reflect" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76c3d056da3e299b84652ccf914c487b786857225d8ffbc8fc9509441a9e6b" +checksum = "46eecc733575b873deedcc37639e36290092388657091b3321fa6e073e7818e6" dependencies = [ "assert_type_match", "bevy_platform", @@ -1435,7 +1577,7 @@ dependencies = [ "serde", "smallvec", "smol_str", - "thiserror 2.0.20", + "thiserror 2.0.21", "uuid", "variadics_please", "wgpu-types", @@ -1443,9 +1585,9 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc5f820ee52afeca6d3bb83f15c1bf61ea6196c840a761a21a8bc266a3b166e" +checksum = "dfaa1e315676c625ed8d30ba8a671ebf917cad6355320295b9802a8cbc06853b" dependencies = [ "bevy_macro_utils", "indexmap", @@ -1457,9 +1599,9 @@ dependencies = [ [[package]] name = "bevy_render" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc86a32b2eef9859e1e7d323c6d1a9150fe77aa17c30fd05abebc12f645929dc" +checksum = "5f438a921fd3ef82cc09ccf5e0cd8f1214dcae6286890f9d4acba0409d9a61a8" dependencies = [ "async-channel", "bevy_app", @@ -1470,6 +1612,8 @@ dependencies = [ "bevy_diagnostic", "bevy_ecs", "bevy_encase_derive", + "bevy_extract", + "bevy_extract_macros", "bevy_image", "bevy_log", "bevy_material", @@ -1480,12 +1624,13 @@ dependencies = [ "bevy_reflect", "bevy_render_macros", "bevy_shader", + "bevy_shape", "bevy_tasks", "bevy_time", "bevy_transform", "bevy_utils", "bevy_window", - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "derive_more", "downcast-rs 2.0.2", @@ -1493,14 +1638,15 @@ dependencies = [ "glam", "image", "indexmap", - "itertools", + "itertools 0.14.0", "js-sys", - "naga", "nonmax", "offset-allocator", "send_wrapper", "smallvec", - "thiserror 2.0.20", + "static_assertions", + "thiserror 2.0.21", + "tracing", "variadics_please", "wasm-bindgen", "weak-table", @@ -1511,10 +1657,11 @@ dependencies = [ [[package]] name = "bevy_render_macros" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6be6eba0ce9770ae4576693804d6c605f8afd9c4769787414254efcf92196a90" +checksum = "119ca6d445eba5c9976c658f29bac854094b27c27624aa92c4d9668c319618d0" dependencies = [ + "bevy_extract_macros", "bevy_macro_utils", "proc-macro2", "quote", @@ -1523,9 +1670,9 @@ dependencies = [ [[package]] name = "bevy_scene" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33f6f4f24cd771c6fd67286a8f264a45a644dc798a36614252db220d4fbbd63b" +checksum = "98c4b1677c948e4c1453883f4441136003c53fd9caa44e0f7d78b37618bdb9ad" dependencies = [ "bevy_app", "bevy_asset", @@ -1537,16 +1684,16 @@ dependencies = [ "bevy_scene_macros", "bevy_utils", "smallvec", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", "variadics_please", ] [[package]] name = "bevy_scene_macros" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc7844c3410e228581200f73be123467c424f62fc40499c3e869b641b582748" +checksum = "d4da846d8418ca6e38943707c88075a4a0b8f6eea0fd286d33a024d0257439d0" dependencies = [ "bevy_ecs_macro_logic", "bevy_macro_utils", @@ -1557,28 +1704,42 @@ dependencies = [ [[package]] name = "bevy_shader" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ba4fa5c5102a9ad1b0508c5bf8a6d02a22d5dc13c23ba908ee6d3d16a357cd" +checksum = "c2becafd54079da13835d6a42fc743e305d6270c27a91de613afe6e3f4b5de19" dependencies = [ "bevy_asset", "bevy_platform", "bevy_reflect", "bevy_utils", - "naga", - "naga_oil", "serde", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", - "wgpu-naga-bridge", + "wesl", "wgpu-types", ] [[package]] -name = "bevy_sprite" -version = "0.19.1" +name = "bevy_shape" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e93e631436ff9c08613843d46521ee60f2fcb2eb5f4754eec59591ca817a2ba0" +checksum = "aa8b6096ad1ec7dfe1af8e51d7cfa7de1a9e0a3bd02be58a061092c5e1ff1eb1" +dependencies = [ + "arrayvec", + "bevy_math", + "bevy_reflect", + "derive_more", + "rand", + "rand_distr", + "serde", + "thiserror 2.0.21", +] + +[[package]] +name = "bevy_sprite" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24dc4f69160513952a1969a3df5b4a2c729acfe0caf773854acea4a8c71f0918" dependencies = [ "bevy_app", "bevy_asset", @@ -1602,9 +1763,9 @@ dependencies = [ [[package]] name = "bevy_sprite_render" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0a13c775880fe8fb3e7928921b2a1b549fd92c17571e7ca5e1250e53f0e56c" +checksum = "8918649806697740b61d3fd0559cb8c7de2ade5046aacf8abbef20e49ea1de0c" dependencies = [ "bevy_app", "bevy_asset", @@ -1613,6 +1774,7 @@ dependencies = [ "bevy_core_pipeline", "bevy_derive", "bevy_ecs", + "bevy_extract", "bevy_image", "bevy_material", "bevy_math", @@ -1621,23 +1783,26 @@ dependencies = [ "bevy_reflect", "bevy_render", "bevy_shader", + "bevy_shape", "bevy_sprite", "bevy_text", "bevy_transform", "bevy_utils", - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "derive_more", "fixedbitset", "nonmax", + "smallvec", + "static_assertions", "tracing", ] [[package]] name = "bevy_state" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f69ce6a0066eb4626165e2f8c85d3cf4808cfe4cb2027df8840d5cbfe8a3428d" +checksum = "09292e08e1eb34d2dd915630fb3c04ba75220c7819943c9f213d3a5f9a8be1e8" dependencies = [ "bevy_app", "bevy_ecs", @@ -1651,9 +1816,9 @@ dependencies = [ [[package]] name = "bevy_state_macros" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a36dd49049023a0abbd0bd1e2b99580ed83a18c5351c64caba4c06e3b584cf9c" +checksum = "fec1a8f6a253e39ddf7e447b1b9286caacb205ed8e619e6fb9a2e010d58dd04b" dependencies = [ "bevy_macro_utils", "quote", @@ -1662,9 +1827,9 @@ dependencies = [ [[package]] name = "bevy_tasks" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f787d4ba7237b64b30bd2d690a8cbae1ba775e0eec326711c446654cb720e7c" +checksum = "fbd8116f12dc50bde3758a72fba85e1f4c00e6c66d0ad58bdc46c0c0690829a8" dependencies = [ "async-channel", "async-executor", @@ -1681,9 +1846,9 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b275f50fb01b1e2d411326a7750ecc2fe629c48b89997cf2a3c93fe786e076" +checksum = "119d2b37ce3f5ea5a5b9092a7c9eec8d3734de62592d2869bd1d925976f34d05" dependencies = [ "bevy_app", "bevy_asset", @@ -1703,16 +1868,16 @@ dependencies = [ "smol_str", "swash", "sys-locale", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", "wgpu-types", ] [[package]] name = "bevy_time" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6896d83d7ed32a2f89da127b7aeddf01eb702e603897cf5ddac231480a1870e" +checksum = "13901174b792bb7848d8e088075f0009ea409b99179934c0d5bdd2b95622694e" dependencies = [ "bevy_app", "bevy_ecs", @@ -1725,9 +1890,9 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d94cc6065320ebeb58ae88a0863a4c4c2a642c6db698e283eb50be01a834ca5a" +checksum = "83379023d77a0739569a5bcb859eed652781a1b3271e94a86dfbb56fc5d067e0" dependencies = [ "bevy_app", "bevy_ecs", @@ -1737,14 +1902,14 @@ dependencies = [ "bevy_utils", "derive_more", "serde", - "thiserror 2.0.20", + "thiserror 2.0.21", ] [[package]] name = "bevy_ui" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a2f97c39dadfef97dbe295fc1ce212825bb9fda2becc8f558d1d7e7d7dbbedf" +checksum = "7926fba78f133376db0cba73a054db6931952379b5bfdc63f2fe9ba0c3b96c39" dependencies = [ "accesskit", "bevy_a11y", @@ -1773,17 +1938,18 @@ dependencies = [ "smallvec", "swash", "taffy", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", "uuid", ] [[package]] name = "bevy_ui_render" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a36be1c251417421ee070ecd1a393f0036631f7495564a8c9d4abb6042dc40" +checksum = "620b51b51eb8e7d8b2362ba96263142829560d9aa254e2f28032570667c6b0fb" dependencies = [ + "bevy_a11y", "bevy_app", "bevy_asset", "bevy_camera", @@ -1791,6 +1957,7 @@ dependencies = [ "bevy_core_pipeline", "bevy_derive", "bevy_ecs", + "bevy_extract", "bevy_image", "bevy_input_focus", "bevy_math", @@ -1808,14 +1975,15 @@ dependencies = [ "bytemuck", "derive_more", "indexmap", + "smallvec", "tracing", ] [[package]] name = "bevy_ui_widgets" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a71063099a056a010bdbbcc1f1daf2d50bff517d69d62e5334d4c32d7bf9e9e0" +checksum = "6442cd402df6a54f0e51ed8c1bd004c8f9c6715d0f8045e33c68ea9aebb1ce16" dependencies = [ "accesskit", "bevy_a11y", @@ -1827,19 +1995,22 @@ dependencies = [ "bevy_log", "bevy_math", "bevy_picking", + "bevy_platform", "bevy_reflect", "bevy_text", + "bevy_time", "bevy_ui", "bevy_window", "parley", "smol_str", + "web-sys", ] [[package]] name = "bevy_utils" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de51fa7ea2e95d4c2d1278c5629285d59eec951cc60c992964c03f30910ef5a1" +checksum = "5cbd58495039d4e63e6fcfef1242fecab33ffe62b4a5e010467e69e790879812" dependencies = [ "async-channel", "bevy_platform", @@ -1850,9 +2021,9 @@ dependencies = [ [[package]] name = "bevy_window" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38373ee93a9248c14afe41d2025f4aa5e68b004b06ae7702816b180e72b39ea3" +checksum = "dc9a83f3cbaa04155b5dc9b247819c0e215aee754451a4324b82ddeb80dc53f1" dependencies = [ "bevy_app", "bevy_asset", @@ -1869,9 +2040,9 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e9c615f4194b1e00ba536892a3d3d3300c2a1f8e66112fdebd7077bf2744c9" +checksum = "1ef0a5a55524e793ab13536ef244229fa66a4839fae6564df2aa4b3c13956a82" dependencies = [ "accesskit", "accesskit_winit", @@ -1902,9 +2073,9 @@ dependencies = [ [[package]] name = "bevy_world_serialization" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36855264b9b5d229bde74f01730eb6251c72dc052404ae144a9295cc0abdefc1" +checksum = "eef3a23ed3899c88467ce27a0420a1dadeb543981c2e1b9617f6ecf6e5fce1bf" dependencies = [ "bevy_app", "bevy_asset", @@ -1918,15 +2089,15 @@ dependencies = [ "derive_more", "ron", "serde", - "thiserror 2.0.20", + "thiserror 2.0.21", "uuid", ] [[package]] name = "bit-set" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd" +checksum = "09ec2f926cc3060f09db9ebc5b52823d85268d24bb917e472c0c4bea35780a7d" dependencies = [ "bit-vec", ] @@ -1945,21 +2116,32 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.13.1" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" +checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" dependencies = [ "bytemuck", "serde_core", ] [[package]] -name = "blake3" -version = "1.8.6" +name = "bitvec" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ae7bad254120e9e4c63bafc385310756f90c484eac0e36b8317cf09cb92a77" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9e454fc11f76977dc803893aff6304ed33d6a26efae8696573bea74baa27ae" dependencies = [ - "arrayref", "arrayvec", "cc", "cfg-if", @@ -1973,7 +2155,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2 0.5.2", + "objc2 0.5.3", ] [[package]] @@ -1982,14 +2164,14 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2 0.6.4", + "objc2 0.6.5", ] [[package]] name = "blocking" -version = "1.6.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +checksum = "a70e4329df6cb94385eed412ec92375c3cdd8a6e502493d1229b6414e4036dfa" dependencies = [ "async-channel", "async-task", @@ -1998,17 +2180,6 @@ dependencies = [ "piper", ] -[[package]] -name = "bstr" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb31b46c14244e20ee9984b11bf5c992b91fb6939fea616e3512c8baecdbe5f" -dependencies = [ - "memchr", - "regex-automata", - "serde_core", -] - [[package]] name = "bumpalo" version = "3.20.3" @@ -2026,13 +2197,13 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f" +checksum = "6a1f896587b6f2c069c73d2f0913e2d590c3990285cd2f0b6aa02b786b4c679c" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.9", ] [[package]] @@ -2059,7 +2230,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "log", "polling", "rustix 0.38.44", @@ -2069,14 +2240,13 @@ dependencies = [ [[package]] name = "calloop" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" +checksum = "43b32313e937c8721c9d17ee9bf60699a6402b4b7c2cb6ac1bee0ffcaa4b4e5e" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "polling", - "rustix 1.1.4", - "slab", + "rustix 1.1.5", "tracing", ] @@ -2098,17 +2268,17 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" dependencies = [ - "calloop 0.14.4", - "rustix 1.1.4", + "calloop 0.14.5", + "rustix 1.1.5", "wayland-backend", "wayland-client", ] [[package]] name = "cc" -version = "1.4.3" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "509591b7bcd67f4ef775afad7662703b4935daaa6ec0e5605cfb1090b32a2b6d" +checksum = "877bf67ac8e52449eb2f9e98a344ea163beb70dd1f9eebe3cc5357dcfeaee4df" dependencies = [ "find-msvc-tools", "jobserver", @@ -2124,9 +2294,9 @@ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cfg-if" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" [[package]] name = "cfg_aliases" @@ -2143,25 +2313,12 @@ dependencies = [ "error-code", ] -[[package]] -name = "codespan-reporting" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" -dependencies = [ - "serde", - "termcolor", - "unicode-width", -] - [[package]] name = "codespan-reporting" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" dependencies = [ - "serde", - "termcolor", "unicode-width", ] @@ -2175,10 +2332,16 @@ dependencies = [ ] [[package]] -name = "combine" -version = "4.6.7" +name = "colorchoice" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + +[[package]] +name = "combine" +version = "4.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4356eba6976435498d05a311ee9fc486da3bc81c200d3f0d7dd9703b41913f92" dependencies = [ "bytes", "memchr", @@ -2289,22 +2452,13 @@ dependencies = [ "libc", ] -[[package]] -name = "core_maths" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" -dependencies = [ - "libm", -] - [[package]] name = "coreaudio-rs" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d5d7dca3ebcf65a035582c9ad4385371a9d9ee6537474d2a278f4e1e475bb58" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "libc", "objc2-audio-toolbox", "objc2-core-audio", @@ -2329,7 +2483,7 @@ dependencies = [ "ndk-context", "num-derive", "num-traits", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-audio-toolbox", "objc2-avf-audio", "objc2-core-audio", @@ -2344,18 +2498,18 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +checksum = "0ba106e844045ddc02c20768ac4b0b7cb45f2cc2ecbd833ac9f5dacb183c2055" dependencies = [ "cfg-if", ] @@ -2368,27 +2522,27 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam-channel" -version = "0.5.16" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" +checksum = "98b0cc327b5bc766e7fda9c9260cc0fa81b43a8e240440422dff70788e3f9ef1" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-queue" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26" +checksum = "03e8bd762f7479489c70ed6c768ddca99d7296857de437a68dcb2a94365b3fae" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.22" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" +checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" [[package]] name = "crunchy" @@ -2419,17 +2573,11 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" -[[package]] -name = "data-encoding" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" - [[package]] name = "defmt" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +checksum = "e4a0795ac740cb54d7b3775c9c17345f6aaecf884c01733b39d6017738e0e3e1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -2437,23 +2585,23 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +checksum = "840bb056bd99c495c9188198a258ab787c79f306d864db3e6e8451442d6d8366" dependencies = [ "defmt-parser", "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.9", ] [[package]] name = "defmt-parser" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +checksum = "71958f69fb2de856c5dd51ac9377e986ca1aa5919f931bf5395a807277f889a0" dependencies = [ - "thiserror 2.0.20", + "thiserror 2.0.21", ] [[package]] @@ -2491,10 +2639,10 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.6.2", "libc", - "objc2 0.6.4", + "objc2 0.6.5", ] [[package]] @@ -2505,14 +2653,14 @@ checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.9", ] [[package]] name = "disqualified" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9c272297e804878a2a4b707cfcfc6d2328b5bb936944613b4fdf2b9269afdfd" +checksum = "e90a5dd66beeca277ae954f8055b02a712792b6b6b43f2bc2f92b0b7d8291614" [[package]] name = "dlib" @@ -2552,9 +2700,9 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "ecolor" -version = "0.34.3" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05fbfa222ffb51989d5ccf33e5f7aebfcf96c5023413856b0c3618a7f79896e" +checksum = "0656a7530b9e2841ee7a5f983965bdd9840c32f4012f759cfd44b912cced6b34" dependencies = [ "bytemuck", "emath", @@ -2562,33 +2710,35 @@ dependencies = [ [[package]] name = "egui" -version = "0.34.3" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42112be0ae157289312b92b3dfaf20e911b5a3c4c65d4aab0e7c47fbc0ce16e3" +checksum = "dc938cc27cd911415e1e4d151bc56ff9df063d8db081374e87aeb805ea74b2ba" dependencies = [ "accesskit", "ahash", - "bitflags 2.13.1", + "bitflags 2.13.2", "emath", "epaint", + "itertools 0.15.0", "log", "nohash-hasher", "profiling", "smallvec", "unicode-segmentation", + "web-sys", ] [[package]] name = "either" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" +checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be" [[package]] name = "emath" -version = "0.34.3" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53f0d33a479321da6b0caa71366c9f67e8a2c149762d90bdc0d16e601ee8ecb" +checksum = "52c8d4141cf0f60fb2f7aefaf352d3ffa5171ef0ab09731c64391801e95e48f1" dependencies = [ "bytemuck", ] @@ -2601,7 +2751,7 @@ checksum = "b1acbc46b960480c4959213714511e22f9a2e0d361520693bcf5057b5924f53e" dependencies = [ "const_panic", "encase_derive", - "thiserror 2.0.20", + "thiserror 2.0.21", ] [[package]] @@ -2626,37 +2776,40 @@ dependencies = [ [[package]] name = "epaint" -version = "0.34.3" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6675898a291ec212fc3df04f537d177fce8496120244590e6359dcaa4c25da79" +checksum = "a0ec0308dc23130fc1a7d4623a8534c2ed069c6dc84e258ee4f3de99615aa1a3" dependencies = [ "ahash", "bytemuck", "ecolor", "emath", "epaint_default_fonts", - "font-types 0.11.3", + "font-types", + "harfrust", "log", "nohash-hasher", "parking_lot", "profiling", "self_cell", - "skrifa 0.40.0", + "skrifa", "smallvec", + "unicode-general-category", + "unicode-segmentation", "vello_cpu", ] [[package]] name = "epaint_default_fonts" -version = "0.34.3" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8970033a4282a7bcf899b38b5ed3a58b732fe093d03785d58648515d8d309da" +checksum = "773fa9c96dd0dbef887e39d0ed6177f141cce4d68e6041df77570aa3702dfa13" [[package]] name = "equivalent" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +checksum = "00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826" [[package]] name = "erased-serde" @@ -2737,18 +2890,15 @@ dependencies = [ [[package]] name = "fearless_simd" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb2907d1f08b2b316b9223ced5b0e89d87028ba8deae9764741dba8ff7f3903" -dependencies = [ - "bytemuck", -] +checksum = "b97b65636e5b9ef369943878ac74335ba1c55c1cb6adbf1e2c293c624248d693" [[package]] name = "find-msvc-tools" -version = "0.1.11" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" +checksum = "1c66915cc5391097de7a2b0b972e8505aa33c0df401fd3a6811dbdb32881ba48" [[package]] name = "fixedbitset" @@ -2758,12 +2908,13 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.9.1", + "zlib-rs", ] [[package]] @@ -2786,33 +2937,24 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "font-types" -version = "0.11.3" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "font-types" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75382bc7392ef10aad10935f92fc3db36d2d4dad0e5d96d8d65e04f89a07ec39" +checksum = "835ae9d781464a79026cde387f9cbc650c9a4909d7cf7e658b127e3c35d2f35d" dependencies = [ "bytemuck", ] [[package]] name = "fontique" -version = "0.9.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c20b425addb8661e97fe1d51c4d8bcec3ec29ed6ad0db983976a7521276b8f7" +checksum = "6688bc1294fe7117d788937b6c53480169b29c566954af490830d4c09da9516a" dependencies = [ "hashbrown 0.17.1", "linebender_resource_handle", "memmap2", "parlance", - "read-fonts 0.39.2", + "read-fonts", "smallvec", ] @@ -2834,7 +2976,7 @@ checksum = "ea5190182e6915eb873ddbc16e23b711b6eb1f9c00a0d0a3a91b5f6228475225" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.9", ] [[package]] @@ -2843,6 +2985,21 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures-channel" version = "0.3.34" @@ -2885,7 +3042,7 @@ checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.9", ] [[package]] @@ -2922,7 +3079,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.1.4", + "rustix 1.1.5", "windows-link", ] @@ -2998,10 +3155,11 @@ dependencies = [ [[package]] name = "glam" -version = "0.32.1" +version = "0.33.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f70749695b063ecbf6b62949ccccde2e733ec3ecbbd71d467dca4e5c6c97cca0" +checksum = "37bfe73dc8ec21f54d181e5a60554327ec3f1c600c455a75ccbfc65d2106a6c4" dependencies = [ + "approx", "bytemuck", "encase", "libm", @@ -3009,6 +3167,28 @@ dependencies = [ "serde_core", ] +[[package]] +name = "glifo" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed4a1bb24121291d27230c1b1b44e07d6a9b28cefdb32fe1581dfb84e14f940a" +dependencies = [ + "bytemuck", + "foldhash 0.2.0", + "hashbrown 0.17.1", + "log", + "peniko", + "skrifa", + "smallvec", + "vello_common", +] + +[[package]] +name = "glob" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" + [[package]] name = "glow" version = "0.17.0" @@ -3076,44 +3256,17 @@ dependencies = [ "hashbrown 0.16.1", "log", "presser", - "thiserror 2.0.20", + "thiserror 2.0.21", "windows", ] -[[package]] -name = "gpu-descriptor" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" -dependencies = [ - "bitflags 2.13.1", - "gpu-descriptor-types", - "hashbrown 0.15.5", -] - -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" -dependencies = [ - "bitflags 2.13.1", -] - -[[package]] -name = "grid" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40ca9252762c466af32d0b1002e91e4e1bc5398f77455e55474deb466355ff5" - [[package]] name = "guillotiere" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +checksum = "6b17e70c989c36bad147b27a58d148c0741c51448aa5653436547323e524d0ab" dependencies = [ "euclid", - "svg_fmt", ] [[package]] @@ -3126,19 +3279,19 @@ dependencies = [ "cfg-if", "crunchy", "num-traits", + "serde", "zerocopy", ] [[package]] name = "harfrust" -version = "0.6.2" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551ed25397e4b444e89686602877d5cf3a7f6e3d548dcac37a8357d1e195f4df" +checksum = "c03d949a14aa089bbb282f7dd76a498a7f684428e4257202efc119ec010376f9" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", - "core_maths", - "read-fonts 0.39.2", + "read-fonts", "smallvec", ] @@ -3195,27 +3348,21 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" +checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" [[package]] name = "hexasphere" -version = "18.0.0" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177ea6330876de4ef08e184f827b98acc037614a4ce409902c5b0d53a9c2e951" +checksum = "163385eff5a0cf606ebe2c10b3a44ab02f4306e83fbd068a64f5e1d72a3049ac" dependencies = [ "constgebra", "glam", "tinyvec", ] -[[package]] -name = "hexf-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" - [[package]] name = "icu_collections" version = "2.3.0" @@ -3307,9 +3454,9 @@ checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" [[package]] name = "icu_provider" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92a7ed671a6aad807a8651a2e1782a6598fda9ce5185dd8158549e95a91c6428" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" dependencies = [ "displaydoc", "icu_locale_core", @@ -3344,6 +3491,27 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae293c039020f9ec10710af98d29ce6aa2051486638b49c9a6409f3b4a9e98ad" +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + [[package]] name = "image" version = "0.25.10" @@ -3360,9 +3528,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.14.0" +version = "2.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" dependencies = [ "equivalent", "hashbrown 0.17.1", @@ -3382,7 +3550,7 @@ version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cc00ea907cab49550b7da656f80ebb97be1b997d931fbcd28d39734e17ce592" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "inotify-sys", "libc", ] @@ -3398,13 +3566,19 @@ dependencies = [ [[package]] name = "inventory" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" +checksum = "6928282826c822ad91bf1c9a1cb90a30ba1c26770749929b4656cd6be829cd7c" dependencies = [ "rustversion", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + [[package]] name = "itertools" version = "0.14.0" @@ -3414,6 +3588,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.18" @@ -3422,9 +3605,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.35" +version = "0.2.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc" +checksum = "b2b005715dcbeb0089a3c0dab99f2ff1cc3b2525323552703d648585d342a383" dependencies = [ "defmt", "jiff-core", @@ -3439,18 +3622,19 @@ dependencies = [ [[package]] name = "jiff-core" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09" +checksum = "5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c" dependencies = [ "defmt", + "log", ] [[package]] name = "jiff-static" -version = "0.2.35" +version = "0.2.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204" +checksum = "2cc9817253cf7c7ee4684451bd327e88d6f3658014e54a29198625590650695c" dependencies = [ "jiff-core", "proc-macro2", @@ -3460,9 +3644,9 @@ dependencies = [ [[package]] name = "jiff-tzdb" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" +checksum = "fa8377070c6bae868759445e5a77f66d84f0b72f3a054bfb00e6d038b8282da7" [[package]] name = "jiff-tzdb-platform" @@ -3501,7 +3685,7 @@ dependencies = [ "jni-sys 0.4.1", "log", "simd_cesu8", - "thiserror 2.0.20", + "thiserror 2.0.21", "walkdir", "windows-link", ] @@ -3559,9 +3743,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.104" +version = "0.3.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" +checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" dependencies = [ "cfg-if", "futures-util", @@ -3591,7 +3775,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d50be8a24c37debdf3170be6ca396d5b5b165f37f94837891adac735ca416b8" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", ] [[package]] @@ -3607,10 +3791,19 @@ dependencies = [ ] [[package]] -name = "lazy_static" -version = "1.5.0" +name = "lalrpop-util" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "364b49d1c98c07972e16fe1346463becc08bcd663da04e6e37ab1bea068dce6a" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "lazy_static" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb" [[package]] name = "lewton" @@ -3624,10 +3817,76 @@ dependencies = [ ] [[package]] -name = "libc" -version = "0.2.189" +name = "lexical" +version = "7.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" +checksum = "1bc8a009b2ff1f419ccc62706f04fe0ca6e67b37460513964a3dfdb919bb37d6" +dependencies = [ + "lexical-core", +] + +[[package]] +name = "lexical-core" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8d125a277f807e55a77304455eb7b1cb52f2b18c143b60e766c120bd64a594" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a9f232fbd6f550bc0137dcb5f99ab674071ac2d690ac69704593cb4abbea56" +dependencies = [ + "lexical-parse-integer", + "lexical-util", +] + +[[package]] +name = "lexical-parse-integer" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a7a039f8fb9c19c996cd7b2fcce303c1b2874fe1aca544edc85c4a5f8489b34" +dependencies = [ + "lexical-util", +] + +[[package]] +name = "lexical-util" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2604dd126bb14f13fb5d1bd6a66155079cb9fa655b37f875b3a742c705dbed17" + +[[package]] +name = "lexical-write-float" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50c438c87c013188d415fbabbb1dceb44249ab81664efbd31b14ae55dabb6361" +dependencies = [ + "lexical-util", + "lexical-write-integer", +] + +[[package]] +name = "lexical-write-integer" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "409851a618475d2d5796377cad353802345cba92c867d9fbcde9cf4eac4e14df" +dependencies = [ + "lexical-util", +] + +[[package]] +name = "libc" +version = "0.2.191" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a" [[package]] name = "libloading" @@ -3647,14 +3906,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.20" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d0a00925a9f930d679b6789b721e3a7f9ed110f41b86d2497caa780c3a070a" +checksum = "61ff90caf6077a803a240f62fdbe88645a890bbca49ef8174c3cb0404362171d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "libc", "plain", - "redox_syscall 0.9.2", + "redox_syscall 0.9.5", ] [[package]] @@ -3693,9 +3952,9 @@ checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" [[package]] name = "litrs" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" +checksum = "4744e383959f0db86ede514b809b1c53251889093803c05267acc7d4e7030d70" [[package]] name = "lock_api" @@ -3708,9 +3967,41 @@ dependencies = [ [[package]] name = "log" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" + +[[package]] +name = "logos" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2c55a318a87600ea870ff8c2012148b44bf18b74fad48d0f835c38c7d07c5f" +dependencies = [ + "logos-derive", +] + +[[package]] +name = "logos-codegen" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b3ffaa284e1350d017a57d04ada118c4583cf260c8fb01e0fe28a2e9cf8970" +dependencies = [ + "fnv", + "proc-macro2", + "quote", + "regex-automata", + "regex-syntax", + "syn 2.0.119", +] + +[[package]] +name = "logos-derive" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52d3a9855747c17eaf4383823f135220716ab49bea5fbea7dd42cc9a92f8aa31" +dependencies = [ + "logos-codegen", +] [[package]] name = "mach2" @@ -3755,6 +4046,16 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", + "simd-adler32", +] + [[package]] name = "moxcms" version = "0.8.1" @@ -3766,47 +4067,48 @@ dependencies = [ ] [[package]] -name = "naga" -version = "29.0.4" +name = "mutants" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bf919621e7975acb27d881bae2fb993e0d45c8e0446e85e6272971e00dc8df" +checksum = "bc0287524726960e07b119cebd01678f852f147742ae0d925e6a520dca956126" + +[[package]] +name = "naga" +version = "30.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a616d2fb8c89516ac2723a581f69d6c18576046bed761bd6b305e5618e6ae130" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.13.1", + "bitflags 2.13.2", "cfg-if", "cfg_aliases", - "codespan-reporting 0.13.1", + "codespan-reporting", "half", - "hashbrown 0.16.1", - "hexf-parse", + "hashbrown 0.17.1", "indexmap", "libm", "log", + "naga-types", "num-traits", "once_cell", - "pp-rs", - "rustc-hash", + "rustc-hash 1.1.0", "spirv", - "thiserror 2.0.20", + "thiserror 2.0.21", "unicode-ident", ] [[package]] -name = "naga_oil" -version = "0.22.0" +name = "naga-types" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "319f03062940ed85c03da020042618356bb8ca5263020322930883b05e30208e" +checksum = "590afbf58a6f4f62873cd5cff4468061844bafa1cdf399cc954537c22d768d49" dependencies = [ - "codespan-reporting 0.12.0", - "data-encoding", + "hashbrown 0.17.1", "indexmap", - "naga", - "regex", - "rustc-hash", - "thiserror 2.0.20", - "tracing", - "unicode-ident", + "rustc-hash 1.1.0", + "serde", + "thiserror 2.0.21", ] [[package]] @@ -3815,7 +4117,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "jni-sys 0.3.1", "log", "ndk-sys", @@ -3845,7 +4147,7 @@ version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cfg-if", "cfg_aliases", "libc", @@ -3874,9 +4176,9 @@ checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" [[package]] name = "normpath" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9985ef7269fa99f3b12437bb698381da2428743ab90f20393f399fa14cab21a" +checksum = "b11ce00d2594068e8a27c9146fdc5cf9f3ac38eb42c7cd34d05fea618873ac9f" dependencies = [ "windows-sys 0.61.2", ] @@ -3980,9 +4282,9 @@ checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] name = "objc2" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +checksum = "19d5490aaf8f1d7cf7688dfa9b0ce07900e168852c45cd2c03f534dfd27cfd0b" dependencies = [ "objc-sys", "objc2-encode", @@ -3990,9 +4292,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +checksum = "08849bbd4767dfae9457696856ae1c84fe4e0281bbe4a7abff2d0e06fb7981f8" dependencies = [ "objc2-encode", ] @@ -4003,10 +4305,10 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", "libc", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-core-data", "objc2-core-image", "objc2-foundation 0.2.2", @@ -4019,8 +4321,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.4", + "bitflags 2.13.2", + "objc2 0.6.5", "objc2-core-graphics", "objc2-foundation 0.3.2", ] @@ -4031,9 +4333,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6948501a91121d6399b79abaa33a8aa4ea7857fe019f341b8c23ad6e81b79b08" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "libc", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-audio", "objc2-core-audio-types", "objc2-core-foundation", @@ -4046,7 +4348,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13a380031deed8e99db00065c45937da434ca987c034e13b87e4441f9e4090be" dependencies = [ - "objc2 0.6.4", + "objc2 0.6.5", "objc2-foundation 0.3.2", ] @@ -4056,9 +4358,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-core-location", "objc2-foundation 0.2.2", ] @@ -4070,7 +4372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -4081,7 +4383,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2" dependencies = [ "dispatch2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-audio-types", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -4093,8 +4395,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.4", + "bitflags 2.13.2", + "objc2 0.6.5", ] [[package]] @@ -4103,9 +4405,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -4115,11 +4417,11 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.6.2", "dispatch2", "libc", - "objc2 0.6.4", + "objc2 0.6.5", ] [[package]] @@ -4128,9 +4430,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "dispatch2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", "objc2-io-surface", ] @@ -4142,7 +4444,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", "objc2-metal 0.2.2", ] @@ -4154,7 +4456,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-contacts", "objc2-foundation 0.2.2", ] @@ -4171,11 +4473,11 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", "dispatch", "libc", - "objc2 0.5.2", + "objc2 0.5.3", ] [[package]] @@ -4184,10 +4486,10 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.6.2", "libc", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", ] @@ -4197,7 +4499,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "libc", "objc2-core-foundation", ] @@ -4208,8 +4510,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.4", + "bitflags 2.13.2", + "objc2 0.6.5", "objc2-core-foundation", ] @@ -4220,7 +4522,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", ] @@ -4231,9 +4533,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -4243,9 +4545,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.6.2", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-foundation 0.3.2", ] @@ -4255,9 +4557,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", "objc2-metal 0.2.2", ] @@ -4268,9 +4570,10 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.4", + "bitflags 2.13.2", + "objc2 0.6.5", "objc2-core-foundation", + "objc2-core-graphics", "objc2-foundation 0.3.2", "objc2-metal 0.3.2", ] @@ -4281,7 +4584,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -4291,9 +4594,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-cloud-kit", "objc2-core-data", "objc2-core-image", @@ -4313,7 +4616,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -4323,9 +4626,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-core-location", "objc2-foundation 0.2.2", ] @@ -4356,13 +4659,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] -name = "opener" -version = "0.8.5" +name = "once_cell_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b03ff07a220d0d0ec9a1f0f238951b7967a5a2e96aefcd21a117b1083415e9" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "opener" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c826edd923022c3907477383fc77708fa68807170754fe7be1fd3496c57a1f1c" dependencies = [ - "bstr", "normpath", + "url", "windows-sys 0.61.2", ] @@ -4378,9 +4687,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "5.3.0" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e" +checksum = "8c7c9e0d9b23589f26070720bac724174bfec1083e82f7854cdd0267518343c0" dependencies = [ "num-traits", ] @@ -4435,15 +4744,15 @@ dependencies = [ [[package]] name = "parlance" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6937eda350acc1a5d05872c3cbf99fe78619c269096e2be3d4a350058639d5" +checksum = "73072a9470554c8e794778acece2312661218aaabb635600957d952cf01c716e" [[package]] name = "parley" -version = "0.9.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fad031076f48f0d4d85ce1aea9b94b4e715a4d636a030a123038f8f5b5e4343" +checksum = "22d2ff88bd3f7d68d1d9b09c7e6209f9a8e8c05088295140a2bcf2e9b17038c5" dependencies = [ "fontique", "harfrust", @@ -4454,14 +4763,14 @@ dependencies = [ "linebender_resource_handle", "parlance", "parley_data", - "skrifa 0.42.1", + "skrifa", ] [[package]] name = "parley_data" -version = "0.9.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ab9ace3fad1b9ed603ddac5b595e69931fc50263d7e04e4055015b77b02da5" +checksum = "1567535334d6ba2d3cde19221ba9a7bd0fabb3cbd99046ddfb10ae061cfcc889" dependencies = [ "icu_properties", ] @@ -4553,11 +4862,11 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] @@ -4570,7 +4879,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.4", + "rustix 1.1.5", "windows-sys 0.61.2", ] @@ -4591,9 +4900,9 @@ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" [[package]] name = "portable-atomic-util" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715" dependencies = [ "portable-atomic", ] @@ -4609,15 +4918,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "pp-rs" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" -dependencies = [ - "unicode-xid", -] - [[package]] name = "presser" version = "0.3.1" @@ -4690,6 +4990,12 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "radsort" version = "0.1.1" @@ -4698,9 +5004,9 @@ checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" [[package]] name = "rand" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" dependencies = [ "getrandom 0.4.3", "rand_core", @@ -4740,32 +5046,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135" dependencies = [ - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", "objc2-foundation 0.3.2", "objc2-quartz-core 0.3.2", ] -[[package]] -name = "read-fonts" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" -dependencies = [ - "bytemuck", - "font-types 0.11.3", -] - -[[package]] -name = "read-fonts" -version = "0.39.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" -dependencies = [ - "bytemuck", - "font-types 0.11.3", -] - [[package]] name = "read-fonts" version = "0.41.0" @@ -4773,7 +5059,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046a7d674daf459825b32f5062056d6882db0d2f5a479fbd76ccfc870ac18709" dependencies = [ "bytemuck", - "font-types 0.12.3", + "font-types", "once_cell", ] @@ -4798,28 +5084,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", ] [[package]] name = "redox_syscall" -version = "0.9.2" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c93da5bb2c5d4e6c0ef7abeead62c89169a0a4882bfb83ac892f2423aea2fe" +checksum = "580c875845b41ecb1564ad1ae4703044cef774145e3d7a94dc2b3fa7c97868fd" dependencies = [ - "bitflags 2.13.1", -] - -[[package]] -name = "regex" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", + "bitflags 2.13.2", ] [[package]] @@ -4855,7 +5129,7 @@ dependencies = [ "dasp_sample", "lewton", "num-rational", - "thiserror 2.0.20", + "thiserror 2.0.21", "tracing", ] @@ -4865,7 +5139,7 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81116b9531d61eabc41aeb228e4b6b2435bcca3233b98cf3b3077d4e6e9debb3" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "once_cell", "serde", "serde_derive", @@ -4879,6 +5153,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + [[package]] name = "rustc_version" version = "0.4.1" @@ -4894,7 +5174,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "errno", "libc", "linux-raw-sys 0.4.15", @@ -4903,11 +5183,11 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "errno", "libc", "linux-raw-sys 0.12.1", @@ -5008,14 +5288,14 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.9", ] [[package]] name = "serde_json" -version = "1.0.151" +version = "1.0.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6" dependencies = [ "itoa", "memchr", @@ -5024,6 +5304,15 @@ dependencies = [ "zmij", ] +[[package]] +name = "serde_spanned" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7523beb55eece201a2356bee0bbca0d1ab466c14c07703b2e0ee6d42cb0c2c" +dependencies = [ + "serde_core", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -5061,26 +5350,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" -[[package]] -name = "skrifa" -version = "0.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" -dependencies = [ - "bytemuck", - "read-fonts 0.37.0", -] - -[[package]] -name = "skrifa" -version = "0.42.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564" -dependencies = [ - "bytemuck", - "read-fonts 0.39.2", -] - [[package]] name = "skrifa" version = "0.44.0" @@ -5088,7 +5357,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "819ab7d62b1d3e72d9d9dea5650bac30424f9111364bb94928dbf5ecad1baa68" dependencies = [ "bytemuck", - "read-fonts 0.41.0", + "read-fonts", ] [[package]] @@ -5108,9 +5377,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.2" +version = "1.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" +checksum = "5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b" [[package]] name = "smithay-client-toolkit" @@ -5118,7 +5387,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "calloop 0.13.0", "calloop-wayland-source 0.3.0", "cursor-icon", @@ -5143,15 +5412,15 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.13.1", - "calloop 0.14.4", + "bitflags 2.13.2", + "calloop 0.14.5", "calloop-wayland-source 0.4.1", "cursor-icon", "libc", "log", "memmap2", - "rustix 1.1.4", - "thiserror 2.0.20", + "rustix 1.1.5", + "thiserror 2.0.21", "wayland-backend", "wayland-client", "wayland-csd-frame", @@ -5186,9 +5455,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.10.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" +checksum = "0134f9043ed38b087ac4f7d4af44c79e2c9e5094421fe3164f435ce585953b10" dependencies = [ "portable-atomic", ] @@ -5199,7 +5468,7 @@ version = "0.4.0+sdk-1.4.341.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", ] [[package]] @@ -5229,19 +5498,13 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" -[[package]] -name = "svg_fmt" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" - [[package]] name = "swash" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c2499c2d826531388872b2268718aed907a39bd785ab0dcfe57fab26283f92e" dependencies = [ - "skrifa 0.44.0", + "skrifa", "yazi", "zeno", ] @@ -5259,9 +5522,9 @@ dependencies = [ [[package]] name = "syn" -version = "3.0.3" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" dependencies = [ "proc-macro2", "quote", @@ -5270,13 +5533,13 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.9", ] [[package]] @@ -5290,9 +5553,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.38.4" +version = "0.39.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f" +checksum = "d2071df9448915b71c4fe6d25deaf1c22f12bd234f01540b77312bb8e41361e6" dependencies = [ "libc", "memchr", @@ -5304,24 +5567,21 @@ dependencies = [ [[package]] name = "taffy" -version = "0.10.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aea22054047c16c3f34d3ac473a2170be1424b1115b2a3adcf28cfb067c88859" +checksum = "639627c87f43b9181c811f40a6296409e093a17bc761214cba3c15df74f86b99" dependencies = [ "arrayvec", - "grid", "serde", "slotmap", + "smallvec", ] [[package]] -name = "termcolor" -version = "1.4.1" +name = "tap" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "thiserror" @@ -5334,11 +5594,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.20" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" +checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" dependencies = [ - "thiserror-impl 2.0.20", + "thiserror-impl 2.0.21", ] [[package]] @@ -5354,13 +5614,13 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.20" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" +checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.9", ] [[package]] @@ -5424,33 +5684,48 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" +checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" + +[[package]] +name = "tokio" +version = "1.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c168a474b95bfecfe908a65d4bdffc523144b649a74c09c286afb35d53e0bc" dependencies = [ - "tinyvec_macros", + "pin-project-lite", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "toml" +version = "1.1.8+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "20489e00e4d8741d6be680764cc12e270655e375a20d1011e844a9c3379e678d" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] [[package]] name = "toml_datetime" -version = "1.1.1+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +checksum = "2b86d767906c6c42421dcba507eb9d203e779497710a47782a224bb871653053" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.25.13+spec-1.1.0" +version = "0.25.17+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" +checksum = "e3641d5bbb5349a79e1020a242d251efbc546ad8048d133958323ce9c40a9c9c" dependencies = [ "indexmap", "toml_datetime", @@ -5460,13 +5735,19 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.1.3+spec-1.1.0" +version = "1.1.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" +checksum = "baa693a8032d7e1cada7d0041e96126df243179ff061456783ac7f12bda4744c" dependencies = [ "winnow", ] +[[package]] +name = "toml_writer" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06bdbd8cfc056b8d2e2e85f29b56a3bdbecb527cef81eb39e3e7b98af4652770" + [[package]] name = "tracing" version = "0.1.44" @@ -5585,9 +5866,9 @@ checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" [[package]] name = "twox-hash" -version = "2.1.3" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8464ec13c3691491391d9fce00f6416c9a48e46972f72d7865688be2080192c9" +checksum = "86a801b3cea342a06d468c8710662aa29e5e05e4f5c0d62f00bbb7f2ad7941c2" [[package]] name = "typeid" @@ -5602,10 +5883,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "214ca0b2191785cbc06209b9ca1861e048e39b5ba33574b3cedd58363d5bb5f6" [[package]] -name = "unicode-ident" -version = "1.0.24" +name = "unicode-general-category" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f" + +[[package]] +name = "unicode-ident" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563" [[package]] name = "unicode-segmentation" @@ -5625,6 +5912,29 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unsynn" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501a7adf1a4bd9951501e5c66621e972ef8874d787628b7f90e64f936ef7ec0a" +dependencies = [ + "mutants", + "proc-macro2", + "rustc-hash 2.1.3", +] + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + [[package]] name = "utf8_iter" version = "1.0.4" @@ -5632,10 +5942,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] -name = "uuid" -version = "1.24.1" +name = "utf8parse" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cefc03fd367c0c6d4305de1b312cf00248c4114f4a0418ce6a6af769e3b0bd9" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cc1186384beb7dd8eedea376413fd654937285ea6c9cfbb928dc3043ea4b606" dependencies = [ "getrandom 0.4.3", "js-sys", @@ -5651,13 +5967,12 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "variadics_please" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b6d82be61465f97d42bd1d15bf20f3b0a3a0905018f38f9d6f6962055b0b5c" +checksum = "b53d0f7f2d0182759a549f1f313ce16b07d8f9ba93098157b5fa10ee3e61117f" dependencies = [ - "proc-macro2", "quote", - "syn 2.0.119", + "unsynn", ] [[package]] @@ -5668,27 +5983,28 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "vello_common" -version = "0.0.6" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bd1a4c633ce09e7d713df1a6e036644a125e15e0c169cfb5180ddf5836ca04b" +checksum = "b2e9aed918117e8152c9eddfd8362d73c465c23f26c44786aa331707b8a64fa2" dependencies = [ "bytemuck", "fearless_simd", - "hashbrown 0.16.1", + "guillotiere", "log", "peniko", - "skrifa 0.40.0", "smallvec", + "thiserror 2.0.21", ] [[package]] name = "vello_cpu" -version = "0.0.6" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162bfe48aabf6a9fdcd401b628c7d9f260c2cbabb343c70a65feba6f7849edc" +checksum = "ac7349e1f55f6b801c7c277958df4ea53e7f20f21e8014910ad888b2ecda93ea" dependencies = [ "bytemuck", - "hashbrown 0.16.1", + "glifo", + "hashbrown 0.17.1", "vello_common", ] @@ -5719,9 +6035,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.127" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" +checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" dependencies = [ "cfg-if", "once_cell", @@ -5732,19 +6048,20 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.77" +version = "0.4.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950" +checksum = "3cbab34de2d982e9b48e18d216d04c4a6f641066ff19ffb699980f591ee3610e" dependencies = [ "js-sys", + "tokio", "wasm-bindgen", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.127" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" +checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5752,22 +6069,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.127" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" +checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.9", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.127" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" +checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" dependencies = [ "unicode-ident", ] @@ -5780,7 +6097,7 @@ checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" dependencies = [ "cc", "downcast-rs 1.2.1", - "rustix 1.1.4", + "rustix 1.1.5", "scoped-tls", "smallvec", "wayland-sys", @@ -5792,8 +6109,8 @@ version = "0.31.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" dependencies = [ - "bitflags 2.13.1", - "rustix 1.1.4", + "bitflags 2.13.2", + "rustix 1.1.5", "wayland-backend", "wayland-scanner", ] @@ -5804,7 +6121,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cursor-icon", "wayland-backend", ] @@ -5815,7 +6132,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" dependencies = [ - "rustix 1.1.4", + "rustix 1.1.5", "wayland-client", "xcursor", ] @@ -5826,7 +6143,7 @@ version = "0.32.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "wayland-backend", "wayland-client", "wayland-scanner", @@ -5838,7 +6155,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "wayland-backend", "wayland-client", "wayland-protocols", @@ -5851,7 +6168,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "wayland-backend", "wayland-client", "wayland-protocols", @@ -5864,7 +6181,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "wayland-backend", "wayland-client", "wayland-protocols", @@ -5877,7 +6194,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "wayland-backend", "wayland-client", "wayland-protocols", @@ -5909,15 +6226,19 @@ dependencies = [ [[package]] name = "weak-table" -version = "0.3.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "323f4da9523e9a669e1eaf9c6e763892769b1d38c623913647bfdc1532fe4549" +checksum = "5eba2ec791141b0bf4db542f6b038a8f9310cee33e076cb181245780b09a24ff" +dependencies = [ + "cfg-if", + "hashbrown 0.16.1", +] [[package]] name = "web-sys" -version = "0.3.104" +version = "0.3.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30" +checksum = "88261b9deccee56594c11a3460c462c41f58d148598fe70ad77070126a68aba4" dependencies = [ "js-sys", "wasm-bindgen", @@ -5952,21 +6273,60 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] -name = "wgpu" -version = "29.0.4" +name = "wesl" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76e8840e1ba2881d4cbb18d2147627a56af426ff064c0401eb0c8410c6325d07" +checksum = "fdd8f9619baa4c7bde4df0899d6f626b70ee92d6e9c18c5f74473419b5bb6fa6" +dependencies = [ + "annotate-snippets", + "anstream", + "derive_more", + "glob", + "half", + "itertools 0.15.0", + "num-traits", + "serde", + "thiserror 2.0.21", + "toml", + "wesl-core", + "wesl-macros", + "wgsl-parse", + "wgsl-types", +] + +[[package]] +name = "wesl-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84dd3e600497eda0b47afcd21bd84c8953a9dfce7e93ed27a38ba97ac0747e03" + +[[package]] +name = "wesl-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac8767ec26e75262a8e581d5f188b1f63a288baaf885bb33c9f4f73a693e06fc" +dependencies = [ + "itertools 0.15.0", + "proc-macro2", + "quote", + "syn 3.0.9", +] + +[[package]] +name = "wgpu" +version = "30.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527ccdf43dd5b2e8676eed9984ce00e2bbb0a1b85b70c1969dcb6cd2eb55ab9e" dependencies = [ "arrayvec", - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "cfg-if", "cfg_aliases", "document-features", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "js-sys", "log", - "naga", "portable-atomic", "profiling", "raw-window-handle", @@ -5981,29 +6341,30 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "29.0.4" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f519832254e56965a9940c4af57dcb75f702b6f6fa4a0b172f685395843a4d7" +checksum = "14c018fce9b6270aa203c2fdd56f3cce996713534bd757e4ea58c8560b121f14" dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "cfg_aliases", "document-features", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "indexmap", "log", "naga", + "naga-types", "once_cell", "parking_lot", "portable-atomic", "profiling", "raw-window-handle", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.20", + "thiserror 2.0.21", "wgpu-core-deps-apple", "wgpu-core-deps-wasm", "wgpu-core-deps-windows-linux-android", @@ -6014,42 +6375,42 @@ dependencies = [ [[package]] name = "wgpu-core-deps-apple" -version = "29.0.4" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e39e26c4c0e07589e67d18546cf79ff45383659fc72fca4dd293358a0347f3" +checksum = "061f3d319a40d39d00b1ecc2c33b89fe21d4e6fe01859df3500a3a8ecccd6b68" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-wasm" -version = "29.0.4" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1fb1798be2a912497d4c224f72d39bb0cb34af50e8bcc29865bc339c943059" +checksum = "d260ca2ca8adc654f513a869bf3cac0b47f5b8d3f87803d6942015f8de597aae" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "29.0.4" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e592c1bbef6ad047647ae6e666ebd8cee7a32bb4544d9700ec96cbf73230257" +checksum = "7586165fd5f6d881cb9ce4bb71f40d6caab2c0f1837e3fc1d9788a197fb6004f" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "29.0.4" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ace1c17727311c22a46e4e3faf56ea6de81af99dcc839bdfb54857b94d448d" +checksum = "b6b7fb58561a792bc237628ba0792e332de418fefe145f13b5ed8201e6d52f58" dependencies = [ "android_system_properties", "arrayvec", "ash", "bit-set", - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.6.2", "bytemuck", "cfg-if", @@ -6057,17 +6418,18 @@ dependencies = [ "glow", "glutin_wgl_sys", "gpu-allocator", - "gpu-descriptor", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "js-sys", "khronos-egl", "libc", "libloading", "log", "naga", + "naga-types", "ndk-sys", - "objc2 0.6.4", + "objc2 0.6.5", "objc2-core-foundation", + "objc2-core-graphics", "objc2-foundation 0.3.2", "objc2-metal 0.3.2", "objc2-quartz-core 0.3.2", @@ -6082,7 +6444,8 @@ dependencies = [ "raw-window-metal", "renderdoc-sys", "smallvec", - "thiserror 2.0.20", + "static_assertions", + "thiserror 2.0.21", "wasm-bindgen", "wayland-sys", "web-sys", @@ -6095,9 +6458,9 @@ dependencies = [ [[package]] name = "wgpu-naga-bridge" -version = "29.0.4" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95226013f547544b223281cd16a4fb549aa9dcb562adbda0faae4c73ffbbc161" +checksum = "d2f62e73117bb7a62bfd9c5a5841438a823f6566c6442a808ee269d2d055c081" dependencies = [ "naga", "wgpu-types", @@ -6105,19 +6468,48 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "29.0.4" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84bf84cd9ca8ca45e2b223a3868f1adf9bfc0c66aeac212e76ee7e40fdadf8f5" +checksum = "99dad6f1fbdbbdb4c278a6508b059d44688f5cebddf78d005a46a31340269286" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "js-sys", "log", + "naga-types", "raw-window-handle", "serde", + "static_assertions", "web-sys", ] +[[package]] +name = "wgsl-parse" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37cee524ba5cfabfd65d10a316b646f8a4c50f3663e7e787471f21b783261f47" +dependencies = [ + "annotate-snippets", + "derive_more", + "itertools 0.15.0", + "lalrpop-util", + "lexical", + "logos", + "thiserror 2.0.21", + "wgsl-types", +] + +[[package]] +name = "wgsl-types" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e119dd12e57d937397535201959ddddb5dbf26505402db5ef305ebb1ca9a7e5f" +dependencies = [ + "half", + "itertools 0.15.0", + "num-traits", +] + [[package]] name = "winapi" version = "0.3.9" @@ -6277,15 +6669,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - [[package]] name = "windows-sys" version = "0.61.2" @@ -6319,30 +6702,13 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", + "windows_i686_gnullvm", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - [[package]] name = "windows-threading" version = "0.2.1" @@ -6364,12 +6730,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -6382,12 +6742,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -6400,24 +6754,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -6430,12 +6772,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -6448,12 +6784,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -6466,12 +6796,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -6484,12 +6808,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - [[package]] name = "winit" version = "0.30.13" @@ -6499,7 +6817,7 @@ dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", "bytemuck", "calloop 0.13.0", @@ -6513,7 +6831,7 @@ dependencies = [ "libc", "memmap2", "ndk", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", "objc2-ui-kit", @@ -6559,15 +6877,15 @@ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "wl-clipboard-rs" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9651471a32e87d96ef3a127715382b2d11cc7c8bb9822ded8a7cc94072eb0a3" +checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" dependencies = [ "libc", "log", "os_pipe", - "rustix 1.1.4", - "thiserror 2.0.20", + "rustix 1.1.5", + "thiserror 2.0.21", "tree_magic_mini", "wayland-backend", "wayland-client", @@ -6581,6 +6899,15 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "x11-dl" version = "2.21.0" @@ -6603,7 +6930,7 @@ dependencies = [ "libc", "libloading", "once_cell", - "rustix 1.1.4", + "rustix 1.1.5", "x11rb-protocol", ] @@ -6631,7 +6958,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "dlib", "log", "once_cell", @@ -6652,9 +6979,9 @@ checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" [[package]] name = "xxhash-rust" -version = "0.8.18" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aee1b19627c7c60102ab80d3a9cbe18de90bfe03bfa6c3715447681f0e8c8af6" +checksum = "550a2b930b62486a393c52d5c3b84bff264b28aa437ed64694d31e93b1757af7" [[package]] name = "yazi" @@ -6675,13 +7002,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.9", "synstructure", ] @@ -6693,18 +7020,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.56" +version = "0.8.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" +checksum = "e5fe1f8f1b06191a00962174c61aa5005e0bb391a6d80d07e24d115c01a92ed8" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.56" +version = "0.8.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" +checksum = "863ad3ac83293fb4d740aedbfdc9240dd8d1a50c1099acd76ce80ce7c7230c7f" dependencies = [ "proc-macro2", "quote", @@ -6722,13 +7049,13 @@ dependencies = [ [[package]] name = "zerofrom-derive" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.9", "synstructure", ] @@ -6758,15 +7085,21 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f212a141d820099d57ffafb9569be9617a6f27d3dc881fbee8fb56642f917a9" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.9", ] +[[package]] +name = "zlib-rs" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" + [[package]] name = "zmij" version = "1.0.23" diff --git a/Cargo.toml b/Cargo.toml index 92cf712..311a8d4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,14 +4,14 @@ version = "0.1.0" edition = "2024" [dependencies] -app_dirs2 = "2.5.5" -bevy = { version = "0.19", features = ["system_clipboard", "debug"] } -bevy-inspector-egui = "0.37" -derive_more = { version = "2.1.1", features = ["deref", "deref_mut"] } -jiff = { version = "0.2.35", features = ["serde"] } -ron = "0.12.2" -serde = { version = "1.0.229", features = ["derive"] } -xxhash-rust = { version = "0.8.18", features = ["xxh3", "std"] } +app_dirs2 = "2.5" +bevy = { version = "0.20", features = ["system_clipboard", "debug"] } +bevy-inspector-egui = "0.38" +derive_more = { version = "2.1", features = ["deref", "deref_mut"] } +jiff = { version = "0.2", features = ["serde"] } +ron = "0.12" +serde = { version = "1.0", features = ["derive"] } +xxhash-rust = { version = "0.8", features = ["xxh3", "std"] } [profile.dev] opt-level = 1 diff --git a/src/debug.rs b/src/debug.rs index 734a339..79a24a1 100644 --- a/src/debug.rs +++ b/src/debug.rs @@ -1,7 +1,11 @@ -use bevy::prelude::*; -use bevy_inspector_egui::{bevy_egui::EguiPlugin, quick::ResourceInspectorPlugin}; - use crate::lobby::LobbyUiState; +use bevy::prelude::*; +use bevy_inspector_egui::{ + bevy_egui::EguiPlugin, + quick::{ResourceInspectorPlugin, WorldInspectorPlugin}, +}; + +// TODO: compile these in only if debug build /// Whether the debug inspector is currently shown. #[derive(Resource, Debug, Default)] @@ -13,20 +17,45 @@ impl Plugin for DebugInspectorPlugin { fn build(&self, app: &mut App) { app.init_resource::() .add_plugins(EguiPlugin::default()) + .add_plugins(WorldInspectorPlugin::new()) .add_plugins( ResourceInspectorPlugin::::new() .run_if(|enabled: Res| enabled.0), ) - .add_systems(Update, toggle_inspector); + .add_systems(Update, (toggle_inspector, toggle_ui_layout_debug)); } } fn toggle_inspector(keys: Res>, mut enabled: ResMut) { - if keys.just_pressed(KeyCode::F1) { - enabled.0 = !enabled.0; - info!( - "lobby ui inspector toggled {}", - if enabled.0 { "on" } else { "off" } - ); + if !keys.just_pressed(KeyCode::F1) { + return; } + + enabled.0 = !enabled.0; + info!( + "lobby ui inspector toggled {}", + if enabled.0 { "on" } else { "off" } + ); +} + +fn toggle_ui_layout_debug( + keys: Res>, + mut debug_options: ResMut, +) { + if !keys.just_pressed(KeyCode::F2) { + return; + } + + if debug_options.enabled { + debug_options.enabled = false; + } else { + debug_options.enabled = true; + debug_options.outline_border_box = true; + debug_options.outline_padding_box = true; + debug_options.outline_content_box = true; + } + info!( + "ui layout debug toggled {}", + if debug_options.enabled { "on" } else { "off" } + ); } diff --git a/src/focus_navigation.rs b/src/focus_navigation.rs index f3a5990..e1638f8 100644 --- a/src/focus_navigation.rs +++ b/src/focus_navigation.rs @@ -1,9 +1,8 @@ -use crate::main_menu::InteractionColors; use bevy::{ input::gamepad::GamepadButton, input_focus::{ - InputFocus, InputFocusSystems, InputFocusVisible, - directional_navigation::DirectionalNavigationPlugin, tab_navigation::TabNavigationPlugin, + InputFocusSystems, InputFocusVisible, directional_navigation::DirectionalNavigationPlugin, + tab_navigation::TabNavigationPlugin, }, math::{CompassOctant, Dir2}, prelude::*, @@ -46,7 +45,7 @@ impl Plugin for FocusNavigationPlugin { PreUpdate, navigate_directionally.in_set(NavigationSystems::Navigate), ) - .add_systems(Update, style_focus_outlines) + // .add_systems(Update, style_focus_outlines) .add_observer(show_focus_after_activation); } } @@ -106,137 +105,21 @@ fn show_focus_after_activation(_: On, mut focus_visible: ResMut, - mut outlines: Query<(Entity, &InteractionColors, &mut BorderColor)>, -) { - let focused_entity = input_focus.get(); +// fn style_focus_outlines( +// input_focus: Res, +// mut outlines: Query<(Entity, &InteractionColors, &mut BorderColor)>, +// ) { +// let focused_entity = input_focus.get(); - for (entity, colors, mut border_color) in &mut outlines { - let color = if focused_entity == Some(entity) { - colors.focused_outline - } else { - colors.default_outline - }; - let new_border_color = BorderColor::all(color); - if *border_color != new_border_color { - *border_color = new_border_color; - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use bevy::{ - camera::NormalizedRenderTarget, - input_focus::{ - InputFocus, InputFocusPlugin, - directional_navigation::{DirectionalNavigationMap, DirectionalNavigationPlugin}, - tab_navigation::TabIndex, - }, - picking::{ - backend::HitData, - events::{Pointer, Press}, - pointer::{Location, PointerButton, PointerId}, - }, - window::PrimaryWindow, - }; - - #[test] - fn clicking_the_window_clears_focus_via_tab_navigation_plugin() { - let mut app = App::new(); - app.add_plugins((InputFocusPlugin, TabNavigationPlugin)); - let field = app.world_mut().spawn(TabIndex(0)).id(); - let window = app - .world_mut() - .spawn((Window::default(), PrimaryWindow)) - .id(); - app.world_mut() - .insert_resource(InputFocus::from_entity(field)); - app.update(); - - app.world_mut().trigger(Pointer::new( - PointerId::Mouse, - Location { - target: NormalizedRenderTarget::None { - width: 0, - height: 0, - }, - position: Vec2::ZERO, - }, - Press { - button: PointerButton::Primary, - hit: HitData { - camera: Entity::PLACEHOLDER, - depth: 0.0, - position: None, - normal: None, - extra: None, - }, - count: 1, - }, - window, - )); - app.update(); - - assert_eq!(app.world().resource::().get(), None); - } - - #[test] - fn arrow_key_moves_focus_with_directional_navigation() { - let mut app = App::new(); - app.add_plugins(DirectionalNavigationPlugin); - let current = app.world_mut().spawn_empty().id(); - let next = app.world_mut().spawn_empty().id(); - app.world_mut() - .insert_resource(InputFocus::from_entity(current)); - app.world_mut().insert_resource(InputFocusVisible(false)); - app.world_mut().init_resource::(); - app.world_mut().init_resource::>(); - app.world_mut() - .resource_mut::>() - .press(KeyCode::ArrowRight); - app.world_mut() - .resource_mut::() - .add_edge(current, next, CompassOctant::East); - app.add_systems(PreUpdate, navigate_directionally); - - app.update(); - - assert_eq!(app.world().resource::().get(), Some(next)); - assert!(app.world().resource::().0); - } - - #[test] - fn white_outline_tracks_focus_not_hover() { - let mut app = App::new(); - let colors = InteractionColors::DEFAULT; - let focused = app - .world_mut() - .spawn((colors.clone(), BorderColor::all(colors.default_outline))) - .id(); - let hovered = app - .world_mut() - .spawn(( - colors.clone(), - BorderColor::all(colors.default_outline), - Interaction::Hovered, - )) - .id(); - app.world_mut() - .insert_resource(InputFocus::from_entity(focused)); - app.add_systems(Update, style_focus_outlines); - - app.update(); - - assert_eq!( - app.world().get::(focused).unwrap(), - &BorderColor::all(Color::WHITE) - ); - assert_eq!( - app.world().get::(hovered).unwrap(), - &BorderColor::all(Color::BLACK) - ); - } -} +// for (entity, colors, mut border_color) in &mut outlines { +// let color = if focused_entity == Some(entity) { +// colors.focused_outline +// } else { +// colors.default_outline +// }; +// let new_border_color = BorderColor::all(color); +// if *border_color != new_border_color { +// *border_color = new_border_color; +// } +// } +// } diff --git a/src/lobby.rs b/src/lobby.rs index ffcdd2b..a073fe0 100644 --- a/src/lobby.rs +++ b/src/lobby.rs @@ -4,10 +4,11 @@ use bevy::{ AutoFocus, InputFocus, tab_navigation::{TabGroup, TabIndex}, }, + picking::hover::Hovered, prelude::*, text::{EditableText, EditableTextFilter, TextCursorStyle}, - ui::{Checked, auto_directional_navigation::AutoDirectionalNavigation}, - ui_widgets::{Activate, Button, RadioButton, RadioGroup, ValueChange}, + ui::{Checked, Pressed, auto_directional_navigation::AutoDirectionalNavigation}, + ui_widgets::{Activate, Button, RadioButton, RadioGroup, TextInput, ValueChange}, }; use crate::AppState; @@ -130,104 +131,65 @@ fn build_lobby_ui(mut commands: Commands, root_ui: Single, mut fields: Query<&mut EditableText, With>| { - if let Ok(mut field) = fields.single_mut() { - field.editor_mut().set_text("5599"); - } - }) - ), - ] - ), - (field_label("Password")), - (password_field()), - ( - Node { - flex_grow: 1., - } - ), - ( + Text("Server Settings") + Node { + align_self: AlignSelf::Center, + } + TextFont { + font_size: px(76.), + } + TextColor(TEXT_COLOR) + TextShadow + -- + Text("Session Visibility") + Node { + margin: UiRect::top(px(24)), + } + TextFont { + font_size: px(38.), + } + TextColor(TEXT_COLOR) + -- + RadioGroup + AutoFocus + AutoDirectionalNavigation::default() + Node { + display: Display::Flex, + flex_direction: FlexDirection::Row, + width: percent(100), + height: px(90), + } + TabIndex(0) + Children [ + @privacy_option( + "Public", + LobbyPrivacy::Public, + BorderRadius::px(16., 0., 0., 16.), + ) + -- + @privacy_option("Friends Only", LobbyPrivacy::FriendsOnly, BorderRadius::ZERO) + -- + @privacy_option( + "Invite Only", + LobbyPrivacy::InviteOnly, + BorderRadius::px(0., 16., 16., 0.), + ) + ] + -- + @field_label("Port") + -- + Node { + flex_direction: FlexDirection::Row, + column_gap: px(12), + align_items: AlignItems::Center, + } + Children [ + @port_field() + -- Button + ResetPortButton + AutoDirectionalNavigation::default() + TabIndex(2) Node { width: px(600), height: px(130), @@ -237,24 +199,58 @@ fn build_lobby_ui(mut commands: Commands, root_ui: Single, mut lobby: ResMut| { - info!("Session clicked!"); - lobby.session_active = !lobby.session_active; - }) - Children [( - Text("Start Session") - SessionStatusLabel + InteractionColors::DEFAULT + Hovered + Children [ + Text("Reset") TextFont { font_size: px(66.), } TextColor(TEXT_COLOR) TextShadow - )] - ), + ] + on(|_event: On, mut fields: Query<&mut EditableText, With>| { + if let Ok(mut field) = fields.single_mut() { + field.editor_mut().set_text("5599"); + } + }) + ] + -- + @field_label("Password") + -- + @password_field() + -- + Node { + flex_grow: 1., + } + -- + Button + Node { + width: px(600), + height: px(130), + border: px(6), + justify_content: JustifyContent::Center, + align_items: AlignItems::Center, + margin: UiRect::all(px(4)), + } + BorderColor::from(Color::BLACK) + InteractionColors::GOOD + Hovered + AutoDirectionalNavigation::default() + TabIndex(4) + on(|_event: On, mut lobby: ResMut| { + info!("Session clicked!"); + lobby.session_active = !lobby.session_active; + }) + Children [ + Text("Start Session") + SessionStatusLabel + TextFont { + font_size: px(66.), + } + TextColor(TEXT_COLOR) + TextShadow + ] ] }); @@ -269,21 +265,23 @@ fn build_lobby_ui(mut commands: Commands, root_ui: Single impl Scene { border_radius: BorderRadius::all(px(12)), } BorderColor::from(SLATE_900) + InteractionColors::DEFAULT + TextInput EditableText::new("5599") EditableText { cursor_width: 0.05, @@ -339,6 +339,8 @@ fn password_field() -> impl Scene { border_radius: BorderRadius::all(px(12)), } BorderColor::from(SLATE_900) + InteractionColors::DEFAULT + TextInput EditableText { cursor_width: 0.05, max_characters: Option::Some(32), @@ -370,22 +372,19 @@ fn player_row(name: &'static str) -> impl Scene { } BackgroundColor(OPTION_BACKGROUND) Children [ - ( - Node { - width: px(96), - height: px(96), - border_radius: BorderRadius::MAX, - } - BackgroundColor(OPTION_SELECTED_BACKGROUND) - ), - ( - Text(name) - TextFont { - font_size: px(50.), - } - TextColor(TEXT_COLOR) - TextShadow - ), + Node { + width: px(96), + height: px(96), + border_radius: BorderRadius::MAX, + } + BackgroundColor(OPTION_SELECTED_BACKGROUND) + -- + Text(name) + TextFont { + font_size: px(50.), + } + TextColor(TEXT_COLOR) + TextShadow ] } } @@ -414,6 +413,7 @@ fn session_visuals( return; }; + // Set color to danger if on stop session let new_text = match lobby_ui.session_active { true => "Stop Session", false => "Start Session", @@ -429,7 +429,7 @@ fn privacy_option( bsn! { RadioButton LobbyPrivacyOption(privacy) - Interaction + Hovered Node { display: Display::Flex, flex_grow: 1., @@ -440,13 +440,13 @@ fn privacy_option( } BorderColor::all(OPTION_BORDER_COLOR) BackgroundColor(OPTION_BACKGROUND) - Children [( + Children [ Text(label) TextFont { font_size: px(38.0), } TextColor(OPTION_TEXT_COLOR) - )] + ] } } @@ -454,13 +454,13 @@ fn privacy_option( fn update_privacy_controls( lobby_ui: Res, mut commands: Commands, - options: Query<(Entity, &LobbyPrivacyOption, &Interaction, Has), With>, + options: Query<(Entity, &LobbyPrivacyOption, &Hovered, Has), With>, ) { if !lobby_ui.is_changed() { return; } - for (entity, option, interaction, checked) in &options { + for (entity, option, hovered, checked) in &options { let should_be_checked = option.0 == lobby_ui.privacy; if should_be_checked && !checked { commands.entity(entity).insert(Checked); @@ -468,8 +468,8 @@ fn update_privacy_controls( commands .entity(entity) .remove::() - // Reinserting the interaction will trigger the visual redraw - .insert(*interaction); + // Reinserting hovered will trigger the visual redraw + .insert(*hovered); } } } @@ -488,31 +488,29 @@ fn on_privacy_changed( /// Styles the UI options according to their interactions. fn style_privacy_options( mut options: Query< - (&Interaction, Has, &mut BackgroundColor), + (&Hovered, Has, Has, &mut BackgroundColor), ( With, - Or<(Changed, Changed)>, + Or<(Changed, Changed)>, ), >, ) { - for (interaction, checked, mut bg) in options.iter_mut() { - bg.0 = match (checked, *interaction) { + for (hovered, pressed, checked, mut bg) in options.iter_mut() { + bg.0 = match (checked, pressed, hovered.get()) { // Hovering a selected radio is a no-op (pressing it changes // nothing), so it keeps its selected color; pressing it darkens. - (true, Interaction::Pressed) => OPTION_SELECTED_PRESSED_BACKGROUND, - (true, _) => OPTION_SELECTED_BACKGROUND, - (false, Interaction::Hovered) => OPTION_HOVERED_BACKGROUND, - (false, _) => OPTION_BACKGROUND, + (true, true, _) => OPTION_SELECTED_PRESSED_BACKGROUND, + (true, _, _) => OPTION_SELECTED_BACKGROUND, + (false, true, _) => OPTION_SELECTED_PRESSED_BACKGROUND, // TODO: <<<< this is not right + (false, false, true) => OPTION_HOVERED_BACKGROUND, + (false, false, false) => OPTION_BACKGROUND, }; } } fn style_lobby_focus( input_focus: Res, - mut options: Query< - (&ChildOf, &mut BorderColor), - (With, Without), - >, + mut options: Query<(&ChildOf, &mut BorderColor), With>, ) { let focused_entity = input_focus.get(); @@ -528,138 +526,3 @@ fn style_lobby_focus( } } } - -#[cfg(test)] -mod tests { - use super::*; - - fn option(privacy: LobbyPrivacy) -> impl Bundle { - ( - RadioButton, - LobbyPrivacyOption(privacy), - BackgroundColor(OPTION_BACKGROUND), - ) - } - - #[test] - fn autofocus_claims_initial_lobby_focus() { - let mut world = World::new(); - world.insert_resource(InputFocus::default()); - - let radio_group = world.spawn((RadioGroup, AutoFocus)).id(); - - assert_eq!(world.resource::().get(), Some(radio_group)); - } - - #[test] - fn checked_option_is_styled() { - let mut world = World::new(); - world.insert_resource(LobbyUiState::default()); - - let checked = world - .spawn(( - option(LobbyPrivacy::Public), - Interaction::default(), - Checked, - )) - .id(); - let unchecked = world - .spawn((option(LobbyPrivacy::FriendsOnly), Interaction::default())) - .id(); - // Regression: without `Interaction` the style system can never match the - // option, so the background stays at the spawn-time color. - let missing_interaction = world.spawn(option(LobbyPrivacy::Public)).id(); - - let mut schedule = Schedule::default(); - schedule.add_systems((update_privacy_controls, style_privacy_options).chain()); - schedule.run(&mut world); - - let checked_bg = *world.get::(checked).unwrap(); - assert_eq!( - checked_bg.0, OPTION_SELECTED_BACKGROUND, - "checked option must be restyled" - ); - - let unchecked_bg = *world.get::(unchecked).unwrap(); - assert_eq!( - unchecked_bg.0, OPTION_BACKGROUND, - "unchecked option must keep its base color" - ); - - let untouched_bg = *world.get::(missing_interaction).unwrap(); - assert_eq!( - untouched_bg.0, OPTION_BACKGROUND, - "option without Interaction is never styled" - ); - } - - #[test] - fn selected_option_interactions() { - let mut world = World::new(); - world.insert_resource(LobbyUiState::default()); - - let hovered = world - .spawn((option(LobbyPrivacy::Public), Interaction::Hovered, Checked)) - .id(); - let pressed = world - .spawn((option(LobbyPrivacy::Public), Interaction::Pressed, Checked)) - .id(); - - let mut schedule = Schedule::default(); - schedule.add_systems(style_privacy_options); - schedule.run(&mut world); - - assert_eq!( - world.get::(hovered).unwrap().0, - OPTION_SELECTED_BACKGROUND, - "selected option must not change on hover" - ); - assert_eq!( - world.get::(pressed).unwrap().0, - OPTION_SELECTED_PRESSED_BACKGROUND, - "selected option must darken when pressed" - ); - } - - #[test] - fn deselected_option_is_restyled() { - let mut world = World::new(); - world.insert_resource(LobbyUiState::default()); - - let first = world - .spawn(( - option(LobbyPrivacy::Public), - Interaction::default(), - Checked, - )) - .id(); - let second = world - .spawn((option(LobbyPrivacy::FriendsOnly), Interaction::default())) - .id(); - - let mut schedule = Schedule::default(); - schedule.add_systems((update_privacy_controls, style_privacy_options).chain()); - schedule.run(&mut world); - assert_eq!( - world.get::(first).unwrap().0, - OPTION_SELECTED_BACKGROUND, - "first option must be styled as checked" - ); - - // Selecting the other option moves the resource; `sync_privacy_options` - // must then move `Checked` and the style system must react to the move. - world.resource_mut::().privacy = LobbyPrivacy::FriendsOnly; - schedule.run(&mut world); - - assert_eq!( - world.get::(first).unwrap().0, - OPTION_BACKGROUND, - "deselected option must be restyled to base color" - ); - assert_eq!( - world.get::(second).unwrap().0, - OPTION_SELECTED_BACKGROUND, - "newly checked option must be styled as checked" - ); - } -} diff --git a/src/main.rs b/src/main.rs index 558b592..ee85495 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,9 @@ +use crate::focus_navigation::FocusNavigationPlugin; +use crate::{debug::DebugInspectorPlugin, lobby::LobbyPlugin, save::SavePlugin}; use bevy::{camera::ScalingMode, color::palettes::css::GREEN, prelude::*}; use main_menu::MainMenuPlugin; use networking::NetworkingPlugin; -use crate::focus_navigation::FocusNavigationPlugin; -use crate::{debug::DebugInspectorPlugin, lobby::LobbyPlugin, save::SavePlugin}; - mod debug; mod focus_navigation; mod lobby; diff --git a/src/main_menu.rs b/src/main_menu.rs index 76f3f64..bc90626 100644 --- a/src/main_menu.rs +++ b/src/main_menu.rs @@ -7,9 +7,11 @@ use bevy::input_focus::{ AutoFocus, FocusCause, InputFocus, InputFocusVisible, tab_navigation::{TabGroup, TabIndex}, }; +use bevy::picking::hover::Hovered; use bevy::text::{EditableText, EditableTextFilter, TextCursorStyle}; +use bevy::ui::Pressed; use bevy::ui::auto_directional_navigation::AutoDirectionalNavigation; -use bevy::ui_widgets::Button; +use bevy::ui_widgets::{Button, TextInput}; use bevy::{prelude::*, ui_widgets::Activate}; use derive_more::{Deref, DerefMut}; @@ -19,7 +21,6 @@ impl Plugin for MainMenuPlugin { fn build(&self, app: &mut App) { app.add_systems(OnEnter(AppState::Menu), setup_menu) .add_systems(OnExit(AppState::Menu), cleanup_menu) - // .add_systems(Startup, enable_ui_debug) .add_systems(Update, (menu_redraw).run_if(in_state(AppState::Menu))) .add_observer(button_activate_observer) .add_systems(Update, (scale_ui, style_ui_elements)) @@ -45,15 +46,15 @@ struct Selected; /// Defines colors that a UI object should turn when interactions occur. #[derive(Component, Clone, PartialEq, Default, Debug)] -pub(crate) struct InteractionColors { - default: Color, - hovered: Color, - pressed: Color, - selected: Color, - selected_hovered: Color, - selected_pressed: Color, - pub(crate) default_outline: Color, - pub(crate) focused_outline: Color, +pub struct InteractionColors { + pub default: Color, + pub hovered: Color, + pub pressed: Color, + pub selected: Color, + pub selected_hovered: Color, + pub selected_pressed: Color, + pub default_outline: Color, + pub focused_outline: Color, } impl InteractionColors { pub const DEFAULT: InteractionColors = InteractionColors { @@ -122,25 +123,27 @@ impl MenuLayer { fn render(&self, layer: usize, menu_root: Entity) -> Box { match self { MenuLayer::Root => Box::new(bsn! { - menu_layer(layer) + @menu_layer(layer) ChildOf(menu_root) Children [ - menu_button("Play", Some(MenuLayer::Play)), - menu_button("Settings", Some(MenuLayer::Settings)), - ( - menu_button("Quit", None) + @menu_button("Play", Some(MenuLayer::Play)) + -- + @menu_button("Settings", Some(MenuLayer::Settings)) + -- + @menu_button("Quit", None) on(|_event: On, mut exit: MessageWriter| { exit.write(AppExit::Success); } ) InteractionColors::DANGER - ), ] }), MenuLayer::Play => Box::new(bsn! { - menu_layer(layer) + @menu_layer(layer) ChildOf(menu_root) Children [ - menu_button("Load Save", Some(MenuLayer::LoadSave)), - menu_button("Browse Games", Some(MenuLayer::Browse)), - menu_button("Direct Connect", Some(MenuLayer::DirectConnect)), + @menu_button("Load Save", Some(MenuLayer::LoadSave)) + -- + @menu_button("Browse Games", Some(MenuLayer::Browse)) + -- + @menu_button("Direct Connect", Some(MenuLayer::DirectConnect)) ] }), MenuLayer::LoadSave => { @@ -155,40 +158,39 @@ impl MenuLayer { // TODO: get rid of row gap when many saves are present. Box::new(bsn! { - menu_layer(layer) + @menu_layer(layer) ChildOf(menu_root) Children [ - {entries}, - ( - menu_button("New Game", Some(MenuLayer::NewGame)) - InteractionColors::GOOD - ), + {entries} + -- + @menu_button("New Game", Some(MenuLayer::NewGame)) + InteractionColors::GOOD ] }) } MenuLayer::NewGame => Box::new(bsn! { - full_menu_layer(layer) + @full_menu_layer(layer) ChildOf(menu_root) Children [ {new_game_menu()} ] }), MenuLayer::GameInfo(game) => Box::new(bsn! { - full_menu_layer(layer) + @full_menu_layer(layer) ChildOf(menu_root) Children [ {game_info_menu(game)} ] }), MenuLayer::Browse => Box::new(bsn! { - full_menu_layer(layer) + @full_menu_layer(layer) ChildOf(menu_root) Children [ - menu_button("Game 1", None) + @menu_button("Game 1", None) ] }), MenuLayer::DirectConnect => Box::new(bsn! { - full_menu_layer(layer) + @full_menu_layer(layer) ChildOf(menu_root) Children [ // TODO: have IP addr text box here @@ -196,22 +198,23 @@ impl MenuLayer { ] }), MenuLayer::Settings => Box::new(bsn! { - menu_layer(layer) + @menu_layer(layer) ChildOf(menu_root) Children [ - menu_button("Controls", Some(MenuLayer::Controls)), - menu_button("Graphics", Some(MenuLayer::Graphics)), + @menu_button("Controls", Some(MenuLayer::Controls)) + -- + @menu_button("Graphics", Some(MenuLayer::Graphics)) ] }), MenuLayer::Controls => Box::new(bsn! { - full_menu_layer(layer) + @full_menu_layer(layer) ChildOf(menu_root) Children [ Text("Controls..") ] }), MenuLayer::Graphics => Box::new(bsn! { - full_menu_layer(layer) + @full_menu_layer(layer) ChildOf(menu_root) Children [ Text("Graphics..") @@ -228,13 +231,6 @@ struct LastMenu(Vec); #[derive(Resource, Debug, Clone, PartialEq, Eq, Hash, Deref, DerefMut)] struct CurrentMenu(Vec); -// fn enable_ui_debug(mut debug_options: ResMut) { -// debug_options.enabled = true; -// debug_options.outline_border_box = true; -// debug_options.outline_padding_box = true; -// debug_options.outline_content_box = true; -// } - fn setup_menu(mut commands: Commands) { commands.insert_resource(CurrentMenu(vec![MenuLayer::Root])); commands.insert_resource(LastMenu(vec![])); @@ -297,172 +293,163 @@ fn menu_redraw( } fn new_game_menu() -> impl SceneList { - bsn_list![ - ( - Text("New Game") + bsn_list! { + Text("New Game") + Node { + align_self: AlignSelf::Center, + } + TextFont { + // font: FontSourceTemplate::Handle("fonts/FiraSans-Bold.ttf"), + font_size: px(100.0), + } + TextColor(Color::srgb(0.9, 0.9, 0.9)) + TextShadow + -- + Text("Save Name") + Node { + margin: UiRect::axes(px(12), px(0)), + } + TextFont { + // font: FontSourceTemplate::Handle("fonts/FiraSans-Bold.ttf"), + font_size: px(66.0), + } + TextColor(Color::srgb(0.9, 0.9, 0.9)) + TextShadow + -- + #NewGameTextField + GameNameTextField + Node { + border: Val::all(px(6)), + padding: Val::all(px(12)), + border_radius: BorderRadius::all(px(12)), + } + BorderColor::from(SLATE_900) + InteractionColors::DEFAULT + TextInput + EditableText { + cursor_width: 0.05, + max_characters: Option::Some(14), + } + EditableTextFilter::new(|c| c == ' ' || c.is_ascii_alphanumeric()) + TextLayout::no_wrap() + TextFont { + font_size: FontSize::Px(66.), + } + TextCursorStyle { + color: Color::BLACK, + } + AutoDirectionalNavigation::default() + AutoFocus + TabIndex(0) + BackgroundColor(Color::srgb(0.48, 0.84, 0.87)) + -- + Node { + margin: UiRect::top(px(48)), + } + Children [ + @menu_button("Create", None) + InteractionColors::GOOD Node { - align_self: AlignSelf::Center, + margin: UiRect::left(Val::Auto), } - TextFont { - // font: FontSourceTemplate::Handle("fonts/FiraSans-Bold.ttf"), - font_size: px(100.0), - } - TextColor(Color::srgb(0.9, 0.9, 0.9)) - TextShadow - ), - ( - Text("Save Name") - Node { - margin: UiRect::axes(px(12), px(0)), - } - TextFont { - // font: FontSourceTemplate::Handle("fonts/FiraSans-Bold.ttf"), - font_size: px(66.0), - } - TextColor(Color::srgb(0.9, 0.9, 0.9)) - TextShadow - ), - ( - #NewGameTextField - GameNameTextField - Node { - border: Val::all(px(6)), - padding: Val::all(px(12)), - border_radius: BorderRadius::all(px(12)), - } - BorderColor::from(SLATE_900) - EditableText { - cursor_width: 0.05, - max_characters: Option::Some(14), - } - EditableTextFilter::new(|c| c == ' ' || c.is_ascii_alphanumeric()) - TextLayout::no_wrap() - TextFont { - font_size: FontSize::Px(66.), - } - TextCursorStyle { - color: Color::BLACK, - } - AutoDirectionalNavigation::default() - AutoFocus - TabIndex(0) - BackgroundColor(Color::srgb(0.48, 0.84, 0.87)) - ), - ( - Node { - margin: UiRect::top(px(48)), - } - Children [ - menu_button("Create", None) - InteractionColors::GOOD - Node { - margin: UiRect::left(Val::Auto), - } - on(|_event: On, text_field: Single<&EditableText, With>| { - let value = text_field.value(); - info!("Create triggered for: {}", value); - create_game_save(value.to_string()).unwrap(); - // TODO: refresh listing - }) - ] - ), - ] + on(|_event: On, text_field: Single<&EditableText, With>| { + let value = text_field.value(); + info!("Create triggered for: {}", value); + create_game_save(value.to_string()).unwrap(); + // TODO: refresh listing + }) + ] + } } fn game_info_menu(name: impl Into) -> impl SceneList { let name = name.into(); - bsn_list![ - ( - #GameInfoTitle - Text("Load Save") + bsn_list! { + #GameInfoTitle + Text("Load Save") + Node { + align_self: AlignSelf::Center, + } + TextFont { + // font: FontSourceTemplate::Handle("fonts/FiraSans-Bold.ttf"), + font_size: px(100.0), + } + TextColor(Color::srgb(0.9, 0.9, 0.9)) + TextShadow + -- + Text("Save Name") + Node { + margin: UiRect::axes(px(12), px(0)), + } + TextFont { + // font: FontSourceTemplate::Handle("fonts/FiraSans-Bold.ttf"), + font_size: px(66.0), + } + TextColor(Color::srgb(0.9, 0.9, 0.9)) + TextShadow + -- + #SaveNameTextField + GameNameTextField + Node { + border: Val::all(px(6)), + padding: Val::all(px(12)), + border_radius: BorderRadius::all(px(12)), + } + BorderColor::from(SLATE_900) + InteractionColors::DEFAULT + TextInput + EditableText::new(name) + EditableText { + cursor_width: 0.05, + max_characters: Option::Some(14), + } + EditableTextFilter::new(|c| c == ' ' || c.is_ascii_alphanumeric()) + TextLayout::no_wrap() + TextFont { + font_size: FontSize::Px(66.), + } + TextCursorStyle { + color: Color::BLACK, + } + AutoDirectionalNavigation::default() + AutoFocus + TabIndex(0) + BackgroundColor(Color::srgb(0.48, 0.84, 0.87)) + -- + Node { + margin: UiRect::top(px(48)), + } + Children [ + @menu_button("Delete", None) + InteractionColors::DANGER Node { - align_self: AlignSelf::Center, + margin: UiRect::right(Val::Auto), } - TextFont { - // font: FontSourceTemplate::Handle("fonts/FiraSans-Bold.ttf"), - font_size: px(100.0), - } - TextColor(Color::srgb(0.9, 0.9, 0.9)) - TextShadow - ), - ( - Text("Save Name") + on(|_event: On, text_field: Single<&EditableText, With>| { + let value = text_field.value(); + info!("Delete triggered for: {}", value); + delete_game_save(value.to_string()).unwrap(); + // TODO: refresh listing + }) + -- + // TODO: when the user changed the name of the game, change this to a "rename" button + @menu_button("Play", None) + InteractionColors::GOOD Node { - margin: UiRect::axes(px(12), px(0)), + margin: UiRect::left(Val::Auto), } - TextFont { - // font: FontSourceTemplate::Handle("fonts/FiraSans-Bold.ttf"), - font_size: px(66.0), - } - TextColor(Color::srgb(0.9, 0.9, 0.9)) - TextShadow - ), - ( - #SaveNameTextField - GameNameTextField - Node { - border: Val::all(px(6)), - padding: Val::all(px(12)), - border_radius: BorderRadius::all(px(12)), - } - BorderColor::from(SLATE_900) - EditableText::new(name) - EditableText { - cursor_width: 0.05, - max_characters: Option::Some(14), - } - EditableTextFilter::new(|c| c == ' ' || c.is_ascii_alphanumeric()) - TextLayout::no_wrap() - TextFont { - font_size: FontSize::Px(66.), - } - TextCursorStyle { - color: Color::BLACK, - } - AutoDirectionalNavigation::default() - AutoFocus - TabIndex(0) - BackgroundColor(Color::srgb(0.48, 0.84, 0.87)) - ), - ( - Node { - margin: UiRect::top(px(48)), - } - Children [ - ( - menu_button("Delete", None) - InteractionColors::DANGER - Node { - margin: UiRect::right(Val::Auto), - } - on(|_event: On, text_field: Single<&EditableText, With>| { - let value = text_field.value(); - info!("Delete triggered for: {}", value); - delete_game_save(value.to_string()).unwrap(); - // TODO: refresh listing - }) - ), - ( - // TODO: when the user changed the name of the game, change this to a "rename" button - menu_button("Play", None) - InteractionColors::GOOD - Node { - margin: UiRect::left(Val::Auto), - } - on(|_event: On, text_field: Single<&EditableText, With>, mut commands: Commands, mut app_state: ResMut>| { - // TODO: we should definately get this value from an added - // resource. Call it something like `SelectedGameSave` - let value = text_field.value().to_string(); - info!("Play triggered for: {}", value); - commands.insert_resource(ActiveGameSave::new(value)); - app_state.set(AppState::Lobby); + on(|_event: On, text_field: Single<&EditableText, With>, mut commands: Commands, mut app_state: ResMut>| { + // TODO: we should definately get this value from an added + // resource. Call it something like `SelectedGameSave` + let value = text_field.value().to_string(); + info!("Play triggered for: {}", value); + commands.insert_resource(ActiveGameSave::new(value)); + app_state.set(AppState::Lobby); - // TODO: refresh listing - }) - ), - ] - ), - ] + // TODO: refresh listing + }) + ] + } } fn menu_layer(layer: usize) -> impl Scene { @@ -500,6 +487,14 @@ fn full_menu_layer(layer: usize) -> impl Scene { fn menu_button(label: impl Into, next_layer: Option) -> Box { let label = label.into(); + let next_layer: Box = if let Some(next_layer) = next_layer { + Box::new(bsn! { + NextLayer(next_layer) + }) + } else { + Box::new(bsn! {}) + }; + Box::new(bsn! { Button AutoDirectionalNavigation::default() @@ -513,11 +508,12 @@ fn menu_button(label: impl Into, next_layer: Option) -> Box, next_layer: Option) -> Box, - mut elements: Query<( - Entity, - &Interaction, - &mut BackgroundColor, - &InteractionColors, - Has, - )>, + mut q_elements: Query< + ( + Entity, + Option<&Hovered>, + Has, + Option<&mut BackgroundColor>, + Option<&mut BorderColor>, + &InteractionColors, + Has, + ), + Or<(With, With)>, + >, ) { let focused_entity = input_focus.get(); - for (entity, interaction, mut bg, colors, selected) in &mut elements { - let new_color = match (selected, *interaction) { - (true, Interaction::Pressed) => colors.selected_pressed, - (true, Interaction::Hovered) => colors.selected_hovered, - (true, Interaction::None) => colors.selected, - (false, Interaction::Pressed) => colors.pressed, - (false, Interaction::Hovered) => colors.hovered, - (false, Interaction::None) if focused_entity == Some(entity) => colors.hovered, - (false, Interaction::None) => colors.default, + for (entity, hovered, pressed, bg, border, colors, selected) in &mut q_elements { + let is_focused = focused_entity == Some(entity); + // if the entity is focused, its similar to it being hovered. + let hovered = hovered.is_some_and(|h| h.get()) || is_focused; + + let new_color = match (selected, pressed, hovered) { + (true, true, _) => colors.selected_pressed, + (true, false, true) => colors.selected_hovered, + (true, false, false) => colors.selected, + (false, true, _) => colors.pressed, + (false, false, true) => colors.hovered, + (false, false, false) => colors.default, }; - if bg.0 != new_color { - bg.0 = new_color; + + if let Some(mut border) = border { + if is_focused { + if border.top != colors.focused_outline { + border.set_all(colors.focused_outline); + } + } else { + if border.top != colors.default_outline { + border.set_all(colors.default_outline); + } + } + } + if let Some(mut bg) = bg { + if bg.0 != new_color { + bg.0 = new_color; + } } } } @@ -602,6 +620,7 @@ fn scale_ui(mut ui_scale: ResMut, window: Single<&Window>) { ui_scale.0 = scale_factor; } +// TODO: generify the inputing of the nav inputs that are in here fn focus_rightmost_layer_on_navigation( keyboard: Res>, gamepads: Query<&Gamepad>, @@ -671,94 +690,3 @@ fn first_focusable_in_layer( .iter() .find_map(|child| first_focusable_in_layer(child, children, focusable_entities)) } - -#[cfg(test)] -mod tests { - use super::*; - use crate::focus_navigation::navigate_directionally; - use bevy::{ - input_focus::directional_navigation::{ - DirectionalNavigationMap, DirectionalNavigationPlugin, - }, - math::CompassOctant, - }; - - #[test] - fn focus_uses_hover_color_while_selected_keeps_selected_color() { - let mut app = App::new(); - let colors = InteractionColors::DEFAULT; - let focused = app - .world_mut() - .spawn(( - Interaction::None, - BackgroundColor(colors.default), - colors.clone(), - )) - .id(); - let selected = app - .world_mut() - .spawn(( - Interaction::None, - BackgroundColor(colors.default), - colors.clone(), - Selected, - )) - .id(); - app.world_mut() - .insert_resource(InputFocus::from_entity(focused)); - app.add_systems(Update, style_ui_elements); - - app.update(); - - assert_eq!( - app.world().get::(focused).unwrap().0, - colors.hovered - ); - assert_eq!( - app.world().get::(selected).unwrap().0, - colors.selected - ); - } - - #[test] - fn first_directional_input_only_focuses_first_item_in_rightmost_layer() { - let mut app = App::new(); - app.add_plugins(DirectionalNavigationPlugin); - let left_layer = app.world_mut().spawn(Layer(0)).id(); - app.world_mut() - .spawn((AutoDirectionalNavigation::default(), ChildOf(left_layer))); - - let right_layer = app.world_mut().spawn(Layer(1)).id(); - let first_right_item = app - .world_mut() - .spawn((AutoDirectionalNavigation::default(), ChildOf(right_layer))) - .id(); - let next_right_item = app - .world_mut() - .spawn((AutoDirectionalNavigation::default(), ChildOf(right_layer))) - .id(); - - app.world_mut().insert_resource(InputFocus::default()); - app.world_mut().insert_resource(InputFocusVisible(false)); - app.world_mut().init_resource::(); - app.world_mut().init_resource::>(); - app.world_mut() - .resource_mut::>() - .press(KeyCode::ArrowRight); - app.world_mut() - .resource_mut::() - .add_edge(first_right_item, next_right_item, CompassOctant::East); - app.add_systems( - PreUpdate, - (focus_rightmost_layer_on_navigation, navigate_directionally).chain(), - ); - - app.update(); - - assert_eq!( - app.world().resource::().get(), - Some(first_right_item) - ); - assert!(app.world().resource::().0); - } -}