From 21d0c289b52644484087a7dac73e8b1747f5737f Mon Sep 17 00:00:00 2001 From: funman300 Date: Tue, 28 Apr 2026 13:48:41 -0700 Subject: [PATCH] chore(deps): migrate to Bevy 0.18 - BorderRadius is no longer a Component; moved into Node.border_radius field at all 15 spawn sites across 6 plugin files - Events renamed to Messages in test code (12 files) - KeyboardEvents SystemParam renamed to KeyboardMessages to match the MessageWriter rename done in the 0.17 hop - WindowResolution::from((f32,f32)) removed; use (u32,u32) tuple in main.rs Co-Authored-By: Claude Sonnet 4.6 --- ...9702689518bd3a796c374f932aba0434a4c94.json | 12 + Cargo.lock | 564 +++++++++++------- Cargo.toml | 2 +- solitaire_engine/src/achievement_plugin.rs | 12 +- solitaire_engine/src/auto_complete_plugin.rs | 2 +- solitaire_engine/src/challenge_plugin.rs | 14 +- .../src/daily_challenge_plugin.rs | 10 +- solitaire_engine/src/game_plugin.rs | 22 +- solitaire_engine/src/input_plugin.rs | 4 +- solitaire_engine/src/leaderboard_plugin.rs | 6 +- solitaire_engine/src/pause_plugin.rs | 4 +- solitaire_engine/src/progress_plugin.rs | 8 +- solitaire_engine/src/settings_plugin.rs | 18 +- solitaire_engine/src/stats_plugin.rs | 4 +- solitaire_engine/src/time_attack_plugin.rs | 10 +- solitaire_engine/src/weekly_goals_plugin.rs | 4 +- solitaire_engine/src/win_summary_plugin.rs | 4 +- 17 files changed, 421 insertions(+), 279 deletions(-) create mode 100644 .sqlx/query-36bab3ca8f126c66a6f4865d2699702689518bd3a796c374f932aba0434a4c94.json diff --git a/.sqlx/query-36bab3ca8f126c66a6f4865d2699702689518bd3a796c374f932aba0434a4c94.json b/.sqlx/query-36bab3ca8f126c66a6f4865d2699702689518bd3a796c374f932aba0434a4c94.json new file mode 100644 index 0000000..0f824be --- /dev/null +++ b/.sqlx/query-36bab3ca8f126c66a6f4865d2699702689518bd3a796c374f932aba0434a4c94.json @@ -0,0 +1,12 @@ +{ + "db_name": "SQLite", + "query": "UPDATE users SET leaderboard_opt_in = 0 WHERE id = ?", + "describe": { + "columns": [], + "parameters": { + "Right": 1 + }, + "nullable": [] + }, + "hash": "36bab3ca8f126c66a6f4865d2699702689518bd3a796c374f932aba0434a4c94" +} diff --git a/Cargo.lock b/Cargo.lock index 9c2efe8..226da6e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -572,18 +572,18 @@ dependencies = [ [[package]] name = "bevy" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3ee8652fe0577fd8a99054e147740850140d530be8e044a9be4e23a3e8a24" +checksum = "1fd310426290cec560221f9750c2f4484be4a8eeea7de3483c423329b465c40e" dependencies = [ "bevy_internal", ] [[package]] name = "bevy_a11y" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6702a82db1b383641fc7c503451847cdafb57076c203cd3bfe549d3eeef474c3" +checksum = "e887b25c84f384ffe3278a17cf0e4b405eaa3c8fbc3db24d05d560a11780676d" dependencies = [ "accesskit", "bevy_app", @@ -594,18 +594,18 @@ dependencies = [ [[package]] name = "bevy_android" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b2d9435e9fe8d7107bb795a6140277872ad5b992cb3934f8d28cfd11040f6f" +checksum = "a8c58de772ac1148884112e8a456c4f127a94b95a0e42ab5b160b7a11895a241" dependencies = [ "android-activity", ] [[package]] name = "bevy_animation" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfaf3ea6d435f4736b3deb60958270443501f5795c7964b1b504abd3be970b4f" +checksum = "be5bf5b285f0d3fab983b4505e62e195e06930a29007ffc95bdabde834e163a2" dependencies = [ "bevy_animation_macros", "bevy_app", @@ -636,9 +636,9 @@ dependencies = [ [[package]] name = "bevy_animation_macros" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d577eae7246a1cda461df1b63188619fc6a3c619adba2a8e5a79e9aa51f64671" +checksum = "7cf35516d0e7ac9ec25df533be1bf8cbaa20596a8e65f36838a3f7803a267d6d" dependencies = [ "bevy_macro_utils", "quote", @@ -647,9 +647,9 @@ dependencies = [ [[package]] name = "bevy_anti_alias" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15820535cc88bc280f55635eb3ea58df2703a434a0cc2343472eaa7e607fb27b" +checksum = "726cc494eb7d6a84ce6291c23636fd451fa4846604dc059fa93febca4e60a928" dependencies = [ "bevy_app", "bevy_asset", @@ -669,9 +669,9 @@ dependencies = [ [[package]] name = "bevy_app" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e4fc5dfe9d1d9b8233e1878353b5e66a3f5910c2131d3abf68f9a4116b2d433" +checksum = "def9f41aa5bf9b9dec8beda307a332798609cffb9d44f71005e0cfb45164f2f6" dependencies = [ "bevy_derive", "bevy_ecs", @@ -692,17 +692,20 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357787dbfaba3f73fd185e15d6df70605bddaa774f2ebbcab1aaa031f21fb6c2" +checksum = "29f86fed15972b9fb1a3f7b092cf0390e67131caaedab15a2707c043e3a3c886" dependencies = [ "async-broadcast 0.7.2", + "async-channel", "async-fs 2.2.0", + "async-io 2.6.0", "async-lock 3.4.2", "atomicow", "bevy_android", "bevy_app", "bevy_asset_macros", + "bevy_diagnostic", "bevy_ecs", "bevy_platform", "bevy_reflect", @@ -717,8 +720,8 @@ dependencies = [ "either", "futures-io", "futures-lite 2.6.1", + "futures-util", "js-sys", - "parking_lot", "ron", "serde", "stackfuture", @@ -732,9 +735,9 @@ dependencies = [ [[package]] name = "bevy_asset_macros" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa09271d4ca0bf31fda3a9ad57273775d448a05c4046d9367f71d29968d85b4" +checksum = "12cb8d948365b06561b43b7d709282e62a6abb756baac5d8e295206d5e156168" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -744,9 +747,9 @@ dependencies = [ [[package]] name = "bevy_audio" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d79e56e072001524100b00e38cfdea302d9fdabbff48109fc67b528b27a237bb" +checksum = "9d68da32468ce7f4bb2863b71326acfaaa88e9aef8da8306257cd487d40cede4" dependencies = [ "bevy_app", "bevy_asset", @@ -762,9 +765,9 @@ dependencies = [ [[package]] name = "bevy_camera" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8af1d5a57fde6e577e7b1db58996afb381618294be75a37b3070a20d309678b0" +checksum = "37ed9eed054e14341852236d06a7244597b1ace39ff9ae023fbd188ffde88619" dependencies = [ "bevy_app", "bevy_asset", @@ -788,9 +791,9 @@ dependencies = [ [[package]] name = "bevy_color" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49504fac6b9897f03b4bdc0189c04ef1ba0a9b37926343aa520a71619e90e116" +checksum = "2eb41e8310a85811d14a4e75cfc2d6c07ac70661d6a4883509fc960f622970a8" dependencies = [ "bevy_math", "bevy_reflect", @@ -804,15 +807,16 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af7e735685a652a8dba41b886f1330faeb57d4c61398917b7e49b09a7a1c3c1" +checksum = "4d0810e85c2436e50c67448d48a83bf0bb1b5849899619ae2c7ea817221e9172" dependencies = [ "bevy_app", "bevy_asset", "bevy_camera", "bevy_color", "bevy_derive", + "bevy_diagnostic", "bevy_ecs", "bevy_image", "bevy_math", @@ -833,9 +837,9 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9396b256b366a43d7f61d1f230cdab0a512fb4712cbf7d688f3d6fce4c5ea8a" +checksum = "318ee0532c3da93749859d18f89a889c638fbc56aabac4d866583df7b951d103" dependencies = [ "bevy_macro_utils", "quote", @@ -843,10 +847,39 @@ dependencies = [ ] [[package]] -name = "bevy_diagnostic" -version = "0.17.3" +name = "bevy_dev_tools" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cdb0ed0c8423570fbbb7c4fc2719a203dd40928fefff45f76ef0889685a446" +checksum = "a4f1464a3f5ef5c23d917987714ee89881f9f791e9ff97ecf6600ee846b9569e" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_diagnostic", + "bevy_ecs", + "bevy_image", + "bevy_input", + "bevy_math", + "bevy_picking", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_state", + "bevy_text", + "bevy_time", + "bevy_transform", + "bevy_ui", + "bevy_ui_render", + "bevy_window", + "tracing", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8543a0f7afd56d3499ba80ffab6ef0bad12f93c2d2ca9aa7b1f1b8816c3980" dependencies = [ "atomic-waker", "bevy_app", @@ -862,9 +895,9 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7dd5229dd00d00e70ac6b2fc0a139961252f6ce07d3d268cfcac0da86d5bde4" +checksum = "c9cf7a3ee41342dd7b5a5d82e200d0e8efb933169247fce853b4ad633d51e87d" dependencies = [ "arrayvec", "bevy_ecs_macros", @@ -890,9 +923,9 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4d83bdd2285af4867e76c691406e0a4b55611b583d0c45b6ac7bcec1b45fd48" +checksum = "908baf585e2ea16bd53ef0da57b69580478af0059d2dbdb4369991ac9794b618" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -902,19 +935,49 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7179e985f3f1b99265cb87fe194db3b00aee8e2914888d621ff9826e1417ee19" +checksum = "d4fee46eeddcbc00a805ae00ffa973f224671fc5cf0fe1a796963804faeade90" dependencies = [ "bevy_macro_utils", "encase_derive_impl", ] [[package]] -name = "bevy_gilrs" -version = "0.17.3" +name = "bevy_feathers" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a39dd8fdfe93314d47355ab3c58da40b648908a368bc536872f75fad4e8f3755" +checksum = "1cb29be8f8443c5cc44e1c4710bbe02877e73703c60228ca043f20529a5496c6" +dependencies = [ + "accesskit", + "bevy_a11y", + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_input_focus", + "bevy_log", + "bevy_math", + "bevy_picking", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_text", + "bevy_ui", + "bevy_ui_render", + "bevy_ui_widgets", + "bevy_window", + "smol_str", +] + +[[package]] +name = "bevy_gilrs" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611827ab0ce43b88c0a695e6603901b5f34687efecaf526c861456c9d8e6fedb" dependencies = [ "bevy_app", "bevy_ecs", @@ -928,38 +991,29 @@ dependencies = [ [[package]] name = "bevy_gizmos" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebb9e3ca4938b48e5111151ce4b08f0e6fc207b854db08fa2d8de15ecabe8f8" +checksum = "6aaff0dd5f405c83d290c5cd591835f1ae8009894947ab19dadcb323062bd7e7" dependencies = [ "bevy_app", "bevy_asset", "bevy_camera", "bevy_color", - "bevy_core_pipeline", "bevy_ecs", "bevy_gizmos_macros", - "bevy_image", "bevy_light", "bevy_math", - "bevy_mesh", - "bevy_pbr", "bevy_reflect", - "bevy_render", - "bevy_shader", - "bevy_sprite_render", "bevy_time", "bevy_transform", "bevy_utils", - "bytemuck", - "tracing", ] [[package]] name = "bevy_gizmos_macros" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c4b3c3aac86f0db85d4f708883ebdc735c3f88ac5b84c033874fcdd3540a9d" +checksum = "6960ea308d7e94adcac5c712553ff86614bba6b663511f3f3812f6bec028b51e" dependencies = [ "bevy_macro_utils", "quote", @@ -967,11 +1021,37 @@ dependencies = [ ] [[package]] -name = "bevy_gltf" -version = "0.17.3" +name = "bevy_gizmos_render" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3479fbaf897320a3ee30c1626b4a1bee0be874ca27699c3b2f3494891d103d9b" +checksum = "4a8d18c089102de4c5e9326023ad96ba618a6961029f8102a33640b966883237" dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_gizmos", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_pbr", + "bevy_render", + "bevy_shader", + "bevy_sprite_render", + "bevy_transform", + "bevy_utils", + "bytemuck", + "tracing", +] + +[[package]] +name = "bevy_gltf" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f37fb52655d0439656ca0a1db027d46926e463c81d893d4b1639668e5d7f1c1" +dependencies = [ + "async-lock 3.4.2", "base64", "bevy_animation", "bevy_app", @@ -1003,9 +1083,9 @@ dependencies = [ [[package]] name = "bevy_image" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d546bbe2486bfa14971517e7ef427a9384749817c201d3afc60de0325cf52f11" +checksum = "a71daf9b2afdd032c2b1122d1d501f99126218cb3e9983b3604ec381daa35f22" dependencies = [ "bevy_app", "bevy_asset", @@ -1032,9 +1112,9 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca955b99f4dc2059e9c8574f8d95a5dd5002809fda80d062a94a553c571a467" +checksum = "dbc8ffbd02df34dfc52faf420a5263985973765e228043adf542fd0d790a6b21" dependencies = [ "bevy_app", "bevy_ecs", @@ -1049,9 +1129,9 @@ dependencies = [ [[package]] name = "bevy_input_focus" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de4d1d0e833e31beba1f28a77152b35f946e8c45df364ec4969d58788ab9de7f" +checksum = "08d48a5bceccb9157549a39ab3de4017f5368b65db6471605e9a3f1c19d91bbc" dependencies = [ "bevy_app", "bevy_ecs", @@ -1066,9 +1146,9 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f5e645f9e1a24c9667c768b6233beaf4e241739d8ca4fbba59435cc27aabad5" +checksum = "6a11df62e49897def470471551c02f13c6fb488e55dddb5ab7ef098132e07754" dependencies = [ "bevy_a11y", "bevy_android", @@ -1081,10 +1161,13 @@ dependencies = [ "bevy_color", "bevy_core_pipeline", "bevy_derive", + "bevy_dev_tools", "bevy_diagnostic", "bevy_ecs", + "bevy_feathers", "bevy_gilrs", "bevy_gizmos", + "bevy_gizmos_render", "bevy_gltf", "bevy_image", "bevy_input", @@ -1118,9 +1201,9 @@ dependencies = [ [[package]] name = "bevy_light" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47093733280976ebd595f6e25f76603d5067ca4eb7544e59ecb0dd2fc5147810" +checksum = "4d9d2ac64390a9baacb3c0fa0f5456ac1553959d5a387874c102a09aab8b92cc" dependencies = [ "bevy_app", "bevy_asset", @@ -1139,9 +1222,9 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a2d4ea086ac4663ab9dfb056c7b85eee39e18f7e3e9a4ae6e39897eaa155c5" +checksum = "c2aac1187f83a1ab2eae887564f7fb14b4abb3fbe8b2267a6426663463923120" dependencies = [ "android_log-sys", "bevy_app", @@ -1157,11 +1240,10 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d984f9f8bd0f0d9fb020492a955e641e30e7a425f3588bf346cb3e61fec3c3" +checksum = "3b147843b81a7ec548876ff97fa7bfdc646ef2567cb465566259237b39664438" dependencies = [ - "parking_lot", "proc-macro2", "quote", "syn 2.0.117", @@ -1170,11 +1252,12 @@ dependencies = [ [[package]] name = "bevy_math" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fa74ae5d968749cc073da991757d3c7e3504ac6dbaac5f8c2a54b9d19b0b7ed" +checksum = "e931fa969f89c83498b22c97432383afe90e90fd1a5e04fa07be8da4d3bcac84" dependencies = [ "approx", + "arrayvec", "bevy_reflect", "derive_more", "glam 0.30.10", @@ -1183,16 +1266,15 @@ dependencies = [ "rand 0.9.4", "rand_distr", "serde", - "smallvec", "thiserror 2.0.18", "variadics_please", ] [[package]] name = "bevy_mesh" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9a0ea86abbd17655bc6f9f8d94461dfcd0322431f752fc03748df8b335eff2" +checksum = "288f590c8173d4cca3cae5f2ba579accd5ed1a35dd3fab338f427eb39d55f05e" dependencies = [ "bevy_app", "bevy_asset", @@ -1221,9 +1303,9 @@ checksum = "7ef8e4b7e61dfe7719bb03c884dc270cd46a82efb40f93e9933b990c5c190c59" [[package]] name = "bevy_pbr" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c514b950cda849aa64e9b076a235913577370275125a34a478758505a19d776" +checksum = "a5ab6944ffc6fd71604c0fbca68cc3e2a3654edfcdbfd232f9d8b88e3d20fdc0" dependencies = [ "bevy_app", "bevy_asset", @@ -1235,6 +1317,7 @@ dependencies = [ "bevy_ecs", "bevy_image", "bevy_light", + "bevy_log", "bevy_math", "bevy_mesh", "bevy_platform", @@ -1257,9 +1340,9 @@ dependencies = [ [[package]] name = "bevy_picking" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b371779713b40dea83b24cdb95054fe999fe8372351a317c4fb768859ac5f010" +checksum = "b7d524dbc8f2c9e73f7ab70c148c8f7886f3c24b8aa8c252a38ba68ed06cbf10" dependencies = [ "bevy_app", "bevy_asset", @@ -1281,14 +1364,13 @@ dependencies = [ [[package]] name = "bevy_platform" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4691af6d7cfd1b5deb2fc926a43a180a546cdc3fe1e5a013fcee60db9bb2c81f" +checksum = "ec6b36504169b644acd26a5469fd8d371aa6f1d73ee5c01b1b1181ae1cefbf9b" dependencies = [ "critical-section", "foldhash 0.2.0", "futures-channel", - "getrandom 0.3.4", "hashbrown 0.16.1", "js-sys", "portable-atomic", @@ -1302,9 +1384,9 @@ dependencies = [ [[package]] name = "bevy_post_process" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b857972f5d56b43b0dce2c843b75b64d5fbbd0f6177f6ecccd75e7e41f72deb" +checksum = "8f77a4e894aea992e3d6938f1d5898a1cdbb87dba6eebfb95cb4038d0a2600e9" dependencies = [ "bevy_app", "bevy_asset", @@ -1332,15 +1414,15 @@ dependencies = [ [[package]] name = "bevy_ptr" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d24d7906c7de556033168b3485de36c59049fbaef0c2c44c715a23e0329b10" +checksum = "c7a9329e8dc4e01ced480eeec4902e6d7cb56e56ec37f6fbc4323e5c937290a7" [[package]] name = "bevy_reflect" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5472b91928c0f3e4e3988c0d036b00719f19520f53a0c3f8c2af72f00e693c5" +checksum = "d1dfeb67a9fe4f59003a84f5f99ba6302141c70e926601cbc6abfd4a1eea9ca9" dependencies = [ "assert_type_match", "bevy_platform", @@ -1353,6 +1435,7 @@ dependencies = [ "erased-serde", "foldhash 0.2.0", "glam 0.30.10", + "indexmap", "inventory", "petgraph", "serde", @@ -1366,9 +1449,9 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "083784255162fa39960aa3cf3c23af0e515db2daa7f2e796ae34df993f4d3f6c" +checksum = "475f68c93e9cd5f17e9167635c8533a4f388f12d38245a202359e4c2721d87ba" dependencies = [ "bevy_macro_utils", "indexmap", @@ -1380,9 +1463,9 @@ dependencies = [ [[package]] name = "bevy_render" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44117cbc9448b5a3118eb9c65bd9ec4c574be996148793be2443257daae6eb05" +checksum = "243523e33fe5dfcebc4240b1eb2fc16e855c5d4c0ea6a8393910740956770f44" dependencies = [ "async-channel", "bevy_app", @@ -1411,6 +1494,7 @@ dependencies = [ "downcast-rs 2.0.2", "encase", "fixedbitset", + "glam 0.30.10", "image", "indexmap", "js-sys", @@ -1429,9 +1513,9 @@ dependencies = [ [[package]] name = "bevy_render_macros" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9557b7b6b06b1b70c147581f4f410c2de73b6f6f0e82915887020f953bacb5a" +checksum = "66b6325e9c495a71270446784611e8d7f446f927eac8506c4c099fd10cb4c3ed" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -1441,9 +1525,9 @@ dependencies = [ [[package]] name = "bevy_scene" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf6efd31fdd1e05724c95900bb1055716c8e3633b05fa731ee75db4241c17d" +checksum = "34cc1047d85ec8048261b63ef675c12f1e6b5782dc0b422fbcee0c140d026bd4" dependencies = [ "bevy_app", "bevy_asset", @@ -1455,6 +1539,7 @@ dependencies = [ "bevy_transform", "bevy_utils", "derive_more", + "ron", "serde", "thiserror 2.0.18", "uuid", @@ -1462,9 +1547,9 @@ dependencies = [ [[package]] name = "bevy_shader" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a655de9f64e113a6e37be76401fb0d6cb84ed7cc4f891e70af4e39d26e9080c3" +checksum = "9eea95f0273c32be13d6a0b799a93bc256ad7830759ede595c404d5234302da2" dependencies = [ "bevy_asset", "bevy_platform", @@ -1479,9 +1564,9 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52b9a80aadf102ef0b012ceba5326253638c891994c303479e9973092e4e1c8b" +checksum = "96ec5bc0cbdee551b610a46f41d30374bbe42b8951ffc676253c6243ab2b9395" dependencies = [ "bevy_app", "bevy_asset", @@ -1504,9 +1589,9 @@ dependencies = [ [[package]] name = "bevy_sprite_render" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eec49a2a9185526f9828559a40b6f66d4c2dbae2df8ea2936d88ba449a5e86a" +checksum = "b82cb08905e7ddcea2694a95f757ae7f1fd01e6a7304076bad595d2158e4bfe0" dependencies = [ "bevy_app", "bevy_asset", @@ -1536,9 +1621,9 @@ dependencies = [ [[package]] name = "bevy_state" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e8556a55d548844fc067fac6657b62f8073c94bd7e13c86aa7573f4c2a67b3" +checksum = "0ae0682968e97d29c1eccc8c6bb6283f2678d362779bc03f1bb990967059473b" dependencies = [ "bevy_app", "bevy_ecs", @@ -1552,9 +1637,9 @@ dependencies = [ [[package]] name = "bevy_state_macros" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda45913b1d6470c6b751656e72fb3f25ca6b5b7b2ee055b294aaed1eb7e5ba" +checksum = "73d32f90f9cfcef5a44401db7ce206770daaa1707b0fb95eb7a96a6933f54f1b" dependencies = [ "bevy_macro_utils", "quote", @@ -1563,9 +1648,9 @@ dependencies = [ [[package]] name = "bevy_tasks" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcbbfa5a58a16c4228434d3018c23fde3d78dcd76ec5f5b2b482a21f4b158dd3" +checksum = "384eb04d80aa38664d69988fd30cbbe03e937ecb65c66aa6abe60ce0bca826aa" dependencies = [ "async-channel", "async-executor", @@ -1582,9 +1667,9 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc144cc6a30ed44a88e342c22d9e3a66a0993a74f792ae07ba79318efb41a86d" +checksum = "fdc5233291dfc22e584de2535f2e37ae9766d37cb5a01652de2133ba202dcb9b" dependencies = [ "bevy_app", "bevy_asset", @@ -1608,9 +1693,9 @@ dependencies = [ [[package]] name = "bevy_time" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32835c3dbe082fbbe7d4f2f37f655073421f2882d4320ac2d59f922474260de4" +checksum = "b5ef9af4e523195e561074cf60fbfad0f4cb8d1db504855fee3c4ce8896c7244" dependencies = [ "bevy_app", "bevy_ecs", @@ -1623,9 +1708,9 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41fabfeaa53f51ff5ccf4d87e66836293159d50d21f6d3e16c93efb7c30f969" +checksum = "3c3bb3de7842fef699344beb03f22bdbff16599d788fe0f47fbb3b1e6fa320eb" dependencies = [ "bevy_app", "bevy_ecs", @@ -1641,9 +1726,9 @@ dependencies = [ [[package]] name = "bevy_ui" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa0fe27b8c641c2537480774dfd9198d56779371b04dd76618db39da4e7c7483" +checksum = "1691a411014085e0d35f8bb8208e5f973edd7ace061a4b1c41c83de21579dc70" dependencies = [ "accesskit", "bevy_a11y", @@ -1655,6 +1740,7 @@ dependencies = [ "bevy_ecs", "bevy_image", "bevy_input", + "bevy_input_focus", "bevy_math", "bevy_picking", "bevy_platform", @@ -1674,9 +1760,9 @@ dependencies = [ [[package]] name = "bevy_ui_render" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d2e783bb5f0b748e6360a0055421d5c934b43830b205a84996a75e54330cd7" +checksum = "c2c35402d8a052f512e3fec1f36b26e83eee713fcca57f965c244ee795e1fcb0" dependencies = [ "bevy_app", "bevy_asset", @@ -1704,10 +1790,30 @@ dependencies = [ ] [[package]] -name = "bevy_utils" -version = "0.17.3" +name = "bevy_ui_widgets" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789d04f88c764877a4552e07745b402dbc45f5d0545e6d102558f2f1752a1d89" +checksum = "b6a63cb818b0de41bdb14990e0ce1aaaa347f871750ab280f80c427e83d72712" +dependencies = [ + "accesskit", + "bevy_a11y", + "bevy_app", + "bevy_camera", + "bevy_ecs", + "bevy_input", + "bevy_input_focus", + "bevy_log", + "bevy_math", + "bevy_picking", + "bevy_reflect", + "bevy_ui", +] + +[[package]] +name = "bevy_utils" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2111910cd7a4b1e6ce07eaaeb6f68a2c0ea0ca609ed0d0d506e3eb161101435b" dependencies = [ "bevy_platform", "disqualified", @@ -1716,9 +1822,9 @@ dependencies = [ [[package]] name = "bevy_window" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae54ec7a0fc344278592a688a01b57b32182abc3ca7d47040773c4cbc2e15e0" +checksum = "6df06e6993a0896bae2fe7644ae6def29a1a92b45dfb1bcebbd92af782be3638" dependencies = [ "bevy_app", "bevy_asset", @@ -1735,9 +1841,9 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feeaa46d3c4480323e690de8a4ca7f914c074af1f5f70ee3246392992dbf4a0c" +checksum = "f2de1c13d32ab8528435b58eca7ab874a1068184c6d6f266ee11433ae99d4069" dependencies = [ "accesskit", "accesskit_winit", @@ -2210,6 +2316,15 @@ 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.11.3" @@ -2232,21 +2347,22 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.14.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" +checksum = "c4cadaea21e24c49c0c82116f2b465ae6a49d63c90e428b0f8d9ae1f638ac91f" dependencies = [ "bitflags 2.11.1", "fontdb", + "harfrust", + "linebender_resource_handle", "log", "rangemap", "rustc-hash 1.1.0", - "rustybuzz", "self_cell", + "skrifa 0.39.0", "smol_str", "swash", "sys-locale", - "ttf-parser 0.21.1", "unicode-bidi", "unicode-linebreak", "unicode-script", @@ -2677,30 +2793,29 @@ dependencies = [ [[package]] name = "encase" -version = "0.11.2" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02ba239319a4f60905966390f5e52799d868103a533bb7e27822792332504ddd" +checksum = "6e3e0ff2ee0b7aa97428308dd9e1e42369cb22f5fb8dc1c55546637443a60f1e" dependencies = [ "const_panic", "encase_derive", - "glam 0.30.10", "thiserror 2.0.18", ] [[package]] name = "encase_derive" -version = "0.11.2" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5223d6c647f09870553224f6e37261fe5567bc5a4f4cf13ed337476e79990f2f" +checksum = "a4d90c5d7d527c6cb8a3b114efd26a6304d9ab772656e73d8f4e32b1f3d601a2" dependencies = [ "encase_derive_impl", ] [[package]] name = "encase_derive_impl" -version = "0.11.2" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1796db3d892515842ca2dfb11124c4bb4a9e58d9f2c5c1072e5bca1b2334507b" +checksum = "c8bad72d8308f7a382de2391ec978ddd736e0103846b965d7e2a63a75768af30" dependencies = [ "proc-macro2", "quote", @@ -2919,6 +3034,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "font-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" +dependencies = [ + "bytemuck", +] + [[package]] name = "font-types" version = "0.11.3" @@ -2939,16 +3063,16 @@ dependencies = [ [[package]] name = "fontdb" -version = "0.16.2" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" +checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" dependencies = [ "fontconfig-parser", "log", "memmap2", "slotmap", "tinyvec", - "ttf-parser 0.20.0", + "ttf-parser", ] [[package]] @@ -3242,6 +3366,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19fc433e8437a212d1b6f1e68c7824af3aed907da60afa994e7f542d18d12aa9" dependencies = [ "bytemuck", + "encase", "libm", "rand 0.9.4", "serde_core", @@ -3386,9 +3511,9 @@ dependencies = [ [[package]] name = "grid" -version = "0.15.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36119f3a540b086b4e436bb2b588cf98a68863470e0e880f4d0842f112a3183a" +checksum = "b40ca9252762c466af32d0b1002e91e4e1bc5398f77455e55474deb466355ff5" [[package]] name = "group" @@ -3442,6 +3567,19 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "harfrust" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0caaee032384c10dd597af4579c67dee16650d862a9ccbe1233ff1a379abc07" +dependencies = [ + "bitflags 2.11.1", + "bytemuck", + "core_maths", + "read-fonts 0.36.0", + "smallvec", +] + [[package]] name = "hash32" version = "0.3.1" @@ -3498,9 +3636,9 @@ dependencies = [ [[package]] name = "heapless" -version = "0.8.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" dependencies = [ "hash32", "portable-atomic", @@ -4210,6 +4348,12 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "linebender_resource_handle" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4" + [[package]] name = "linux-keyutils" version = "0.2.5" @@ -4413,9 +4557,9 @@ dependencies = [ [[package]] name = "naga" -version = "26.0.0" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916cbc7cb27db60be930a4e2da243cf4bc39569195f22fd8ee419cd31d5b662c" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", @@ -4424,7 +4568,7 @@ dependencies = [ "cfg_aliases", "codespan-reporting", "half", - "hashbrown 0.15.5", + "hashbrown 0.16.1", "hexf-parse", "indexmap", "libm", @@ -4440,9 +4584,9 @@ dependencies = [ [[package]] name = "naga_oil" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b586d3cf5c9b7e13fe2af6e114406ff70773fd80881960378933b63e76f37dd" +checksum = "310c347db1b30e69581f3b84dc9a5c311ed583f67851b39b77953cb7a066c97f" dependencies = [ "codespan-reporting", "data-encoding", @@ -5049,7 +5193,7 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" dependencies = [ - "ttf-parser 0.25.1", + "ttf-parser", ] [[package]] @@ -5562,6 +5706,17 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" +[[package]] +name = "read-fonts" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eaa2941a4c05443ee3a7b26ab076a553c343ad5995230cc2b1d3e993bdc6345" +dependencies = [ + "bytemuck", + "core_maths", + "font-types 0.10.1", +] + [[package]] name = "read-fonts" version = "0.37.0" @@ -5569,7 +5724,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" dependencies = [ "bytemuck", - "font-types", + "font-types 0.11.3", ] [[package]] @@ -5734,14 +5889,15 @@ dependencies = [ [[package]] name = "ron" -version = "0.10.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" +checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" dependencies = [ - "base64", "bitflags 2.11.1", + "once_cell", "serde", "serde_derive", + "typeid", "unicode-ident", ] @@ -5914,23 +6070,6 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" -[[package]] -name = "rustybuzz" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" -dependencies = [ - "bitflags 2.11.1", - "bytemuck", - "libm", - "smallvec", - "ttf-parser 0.21.1", - "unicode-bidi-mirroring", - "unicode-ccc", - "unicode-properties", - "unicode-script", -] - [[package]] name = "ruzstd" version = "0.8.2" @@ -6232,6 +6371,16 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +[[package]] +name = "skrifa" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9eb0b904a04d09bd68c65d946617b8ff733009999050f3b851c32fb3cfb60e" +dependencies = [ + "bytemuck", + "read-fonts 0.36.0", +] + [[package]] name = "skrifa" version = "0.40.0" @@ -6239,7 +6388,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" dependencies = [ "bytemuck", - "read-fonts", + "read-fonts 0.37.0", ] [[package]] @@ -6709,7 +6858,7 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "842f3cd369c2ba38966204f983eaa5e54a8e84a7d7159ed36ade2b6c335aae64" dependencies = [ - "skrifa", + "skrifa 0.40.0", "yazi", "zeno", ] @@ -6902,9 +7051,9 @@ dependencies = [ [[package]] name = "taffy" -version = "0.7.7" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4f4d046dd956a47a7e1a2947083d7ac3e6aa3cfaaead36173ceaa5ab11878c" +checksum = "41ba83ebaf2954d31d05d67340fd46cebe99da2b7133b0dd68d70c65473a437b" dependencies = [ "arrayvec", "grid", @@ -7358,23 +7507,14 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "ttf-parser" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" - -[[package]] -name = "ttf-parser" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" - [[package]] name = "ttf-parser" version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" +dependencies = [ + "core_maths", +] [[package]] name = "twox-hash" @@ -7417,18 +7557,6 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" -[[package]] -name = "unicode-bidi-mirroring" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" - -[[package]] -name = "unicode-ccc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" - [[package]] name = "unicode-ident" version = "1.0.24" @@ -7852,16 +7980,16 @@ dependencies = [ [[package]] name = "wgpu" -version = "26.0.1" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b6ff82bbf6e9206828e1a3178e851f8c20f1c9028e74dd3a8090741ccd5798" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", "bitflags 2.11.1", "cfg-if", "cfg_aliases", "document-features", - "hashbrown 0.15.5", + "hashbrown 0.16.1", "js-sys", "log", "naga", @@ -7879,17 +8007,18 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "26.0.1" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f62f1053bd28c2268f42916f31588f81f64796e2ff91b81293515017ca8bd9" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" dependencies = [ "arrayvec", "bit-set", "bit-vec", "bitflags 2.11.1", + "bytemuck", "cfg_aliases", "document-features", - "hashbrown 0.15.5", + "hashbrown 0.16.1", "indexmap", "log", "naga", @@ -7910,36 +8039,36 @@ dependencies = [ [[package]] name = "wgpu-core-deps-apple" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18ae5fbde6a4cbebae38358aa73fcd6e0f15c6144b67ef5dc91ded0db125dbdf" +checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-wasm" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03b9f9e1a50686d315fc6debe4980cc45cd37b0e919351917df494e8fdc8885" +checksum = "9b1027dcf3b027a877e44819df7ceb0e2e98578830f8cd34cd6c3c7c2a7a50b7" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "720a5cb9d12b3d337c15ff0e24d3e97ed11490ff3f7506e7f3d98c68fa5d6f14" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "26.0.6" +version = "27.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d0e67224cc7305b3b4eb2cc57ca4c4c3afc665c1d1bee162ea806e19c47bdd" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ "android_system_properties", "arrayvec", @@ -7956,7 +8085,7 @@ dependencies = [ "gpu-alloc", "gpu-allocator", "gpu-descriptor", - "hashbrown 0.15.5", + "hashbrown 0.16.1", "js-sys", "khronos-egl", "libc", @@ -7966,6 +8095,7 @@ dependencies = [ "naga", "ndk-sys 0.6.0+11769913", "objc", + "once_cell", "ordered-float", "parking_lot", "portable-atomic", @@ -7985,9 +8115,9 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "26.0.0" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca7a8d8af57c18f57d393601a1fb159ace8b2328f1b6b5f80893f7d672c9ae2" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ "bitflags 2.11.1", "bytemuck", diff --git a/Cargo.toml b/Cargo.toml index 07041c9..6ad9e89 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ solitaire_sync = { path = "solitaire_sync" } solitaire_data = { path = "solitaire_data" } solitaire_engine = { path = "solitaire_engine" } -bevy = "0.17" +bevy = "0.18" kira = "0.9" axum = "0.8" diff --git a/solitaire_engine/src/achievement_plugin.rs b/solitaire_engine/src/achievement_plugin.rs index 999a06f..90c6542 100644 --- a/solitaire_engine/src/achievement_plugin.rs +++ b/solitaire_engine/src/achievement_plugin.rs @@ -248,10 +248,10 @@ fn spawn_achievements_screen(commands: &mut Commands, records: &[AchievementReco min_width: Val::Px(380.0), max_height: Val::Percent(80.0), overflow: Overflow::clip_y(), + border_radius: BorderRadius::all(Val::Px(8.0)), ..default() }, BackgroundColor(Color::srgb(0.09, 0.09, 0.12)), - BorderRadius::all(Val::Px(8.0)), )) .with_children(|card| { // Header @@ -415,7 +415,7 @@ mod tests { assert!(unlocked_first_win); // Verify the event was emitted. - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec = cursor.read(events).map(|e| e.0.id.clone()).collect(); assert!(fired.contains(&"first_win".to_string())); @@ -433,7 +433,7 @@ mod tests { // Clear events from first win. app.world_mut() - .resource_mut::>() + .resource_mut::>() .clear(); app.world_mut().write_message(GameWonEvent { @@ -442,7 +442,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec = cursor.read(events).map(|e| e.0.id.clone()).collect(); assert!( @@ -468,7 +468,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let xp_events: Vec = cursor.read(events).map(|e| e.amount).collect(); // The no_undo achievement (BonusXp 25) must have fired an XpAwardedEvent. @@ -494,7 +494,7 @@ mod tests { app.update(); // "no_undo" awards BonusXp(25). If undo was used it must NOT fire. - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let xp_events: Vec = cursor.read(events).map(|e| e.amount).collect(); assert!( diff --git a/solitaire_engine/src/auto_complete_plugin.rs b/solitaire_engine/src/auto_complete_plugin.rs index af152e6..39e550d 100644 --- a/solitaire_engine/src/auto_complete_plugin.rs +++ b/solitaire_engine/src/auto_complete_plugin.rs @@ -190,7 +190,7 @@ mod tests { app.update(); // detect runs, sets active app.update(); // drive fires the move - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).collect(); // At least one MoveRequestEvent should have been fired. diff --git a/solitaire_engine/src/challenge_plugin.rs b/solitaire_engine/src/challenge_plugin.rs index e285c04..e0c6392 100644 --- a/solitaire_engine/src/challenge_plugin.rs +++ b/solitaire_engine/src/challenge_plugin.rs @@ -133,7 +133,7 @@ mod tests { let p = &app.world().resource::().0; assert_eq!(p.challenge_index, 1); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1); @@ -154,7 +154,7 @@ mod tests { let p = &app.world().resource::().0; assert_eq!(p.challenge_index, 0); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert!(cursor.read(events).next().is_none()); } @@ -168,7 +168,7 @@ mod tests { .press(KeyCode::KeyX); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert!(cursor.read(events).next().is_none()); } @@ -188,7 +188,7 @@ mod tests { .press(KeyCode::KeyX); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1); @@ -217,7 +217,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).collect(); assert_eq!(fired.len(), 1, "exactly one toast must fire on challenge win"); @@ -237,7 +237,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert!( cursor.read(events).next().is_none(), @@ -254,7 +254,7 @@ mod tests { .press(KeyCode::KeyX); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).collect(); assert_eq!(fired.len(), 1, "must show a toast explaining the lock"); diff --git a/solitaire_engine/src/daily_challenge_plugin.rs b/solitaire_engine/src/daily_challenge_plugin.rs index 5c9ae15..876186e 100644 --- a/solitaire_engine/src/daily_challenge_plugin.rs +++ b/solitaire_engine/src/daily_challenge_plugin.rs @@ -255,7 +255,7 @@ mod tests { // +100 from the daily bonus assert!(progress.total_xp >= DAILY_BONUS_XP); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1); @@ -279,7 +279,7 @@ mod tests { let progress = &app.world().resource::().0; assert_eq!(progress.daily_challenge_streak, 0); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert!(cursor.read(events).next().is_none()); } @@ -317,7 +317,7 @@ mod tests { .press(KeyCode::KeyC); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1); @@ -337,7 +337,7 @@ mod tests { .press(KeyCode::KeyC); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).cloned().collect(); assert_eq!(fired.len(), 1); @@ -355,7 +355,7 @@ mod tests { .press(KeyCode::KeyC); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).cloned().collect(); assert_eq!(fired.len(), 1); diff --git a/solitaire_engine/src/game_plugin.rs b/solitaire_engine/src/game_plugin.rs index 512b4bc..1dc4ab2 100644 --- a/solitaire_engine/src/game_plugin.rs +++ b/solitaire_engine/src/game_plugin.rs @@ -238,10 +238,10 @@ fn spawn_confirm_dialog(commands: &mut Commands, original_request: NewGameReques row_gap: Val::Px(20.0), min_width: Val::Px(360.0), align_items: AlignItems::Center, + border_radius: BorderRadius::all(Val::Px(12.0)), ..default() }, BackgroundColor(Color::srgb(0.10, 0.12, 0.15)), - BorderRadius::all(Val::Px(12.0)), )) .with_children(|card| { // Heading @@ -574,10 +574,10 @@ fn spawn_game_over_screen(commands: &mut Commands, score: i32) { row_gap: Val::Px(16.0), min_width: Val::Px(340.0), align_items: AlignItems::Center, + border_radius: BorderRadius::all(Val::Px(12.0)), ..default() }, BackgroundColor(Color::srgb(0.10, 0.08, 0.08)), - BorderRadius::all(Val::Px(12.0)), )) .with_children(|card| { // Header — explains why the overlay appeared. @@ -765,7 +765,7 @@ mod tests { let mut app = test_app(42); app.world_mut().write_message(DrawRequestEvent); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut reader = events.get_cursor(); assert!(reader.read(events).next().is_some()); } @@ -864,7 +864,7 @@ mod tests { count: 1, }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut reader = events.get_cursor(); assert!(reader.read(events).next().is_none()); } @@ -956,7 +956,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).collect(); assert_eq!(fired.len(), 1, "CardFlippedEvent must fire when a face-down card is exposed"); @@ -1042,7 +1042,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).collect(); assert!(fired.is_empty(), "no flip event when exposed card was already face-up"); @@ -1309,7 +1309,7 @@ mod tests { ); // Clear the NewGameRequestEvent queue so we start with a clean slate. - app.world_mut().resource_mut::>().clear(); + app.world_mut().resource_mut::>().clear(); // Simulate Escape press. { @@ -1320,7 +1320,7 @@ mod tests { app.update(); // NewGameRequestEvent must have been fired. - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut reader = events.get_cursor(); assert!( reader.read(events).next().is_some(), @@ -1341,7 +1341,7 @@ mod tests { app.world_mut().write_message(UndoRequestEvent); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut reader = events.get_cursor(); let fired: Vec<_> = reader.read(events).collect(); assert_eq!(fired.len(), 1, "exactly one InfoToastEvent must fire on empty-stack undo"); @@ -1360,12 +1360,12 @@ mod tests { app.world_mut().write_message(DrawRequestEvent); app.update(); // Clear events from the draw so we start with a clean slate. - app.world_mut().resource_mut::>().clear(); + app.world_mut().resource_mut::>().clear(); app.world_mut().write_message(UndoRequestEvent); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut reader = events.get_cursor(); let fired: Vec<_> = reader.read(events).collect(); assert!( diff --git a/solitaire_engine/src/input_plugin.rs b/solitaire_engine/src/input_plugin.rs index 620e277..5340fd0 100644 --- a/solitaire_engine/src/input_plugin.rs +++ b/solitaire_engine/src/input_plugin.rs @@ -88,7 +88,7 @@ const FORFEIT_CONFIRM_WINDOW: f32 = 3.0; /// Bundles all event writers used by `handle_keyboard` so the system stays /// within Bevy's 16-parameter limit. #[derive(SystemParam)] -struct KeyboardEvents<'w> { +struct KeyboardMessages<'w> { undo: MessageWriter<'w, UndoRequestEvent>, new_game: MessageWriter<'w, NewGameRequestEvent>, confirm_event: MessageWriter<'w, NewGameConfirmEvent>, @@ -108,7 +108,7 @@ fn handle_keyboard( mut confirm_countdown: Local, mut confirm_pending: Local, mut forfeit_countdown: Local, - mut ev: KeyboardEvents, + mut ev: KeyboardMessages<'_>, mut commands: Commands, card_entities: Query<(Entity, &CardEntity, &Sprite)>, layout: Option>, diff --git a/solitaire_engine/src/leaderboard_plugin.rs b/solitaire_engine/src/leaderboard_plugin.rs index 0c9fd6f..76cb66c 100644 --- a/solitaire_engine/src/leaderboard_plugin.rs +++ b/solitaire_engine/src/leaderboard_plugin.rs @@ -305,10 +305,10 @@ fn spawn_leaderboard_screen(commands: &mut Commands, entries: Option<&[Leaderboa min_width: Val::Px(420.0), max_height: Val::Percent(80.0), overflow: Overflow::clip_y(), + border_radius: BorderRadius::all(Val::Px(8.0)), ..default() }, BackgroundColor(Color::srgb(0.09, 0.09, 0.12)), - BorderRadius::all(Val::Px(8.0)), )) .with_children(|card| { // Header @@ -347,10 +347,10 @@ fn spawn_leaderboard_screen(commands: &mut Commands, entries: Option<&[Leaderboa Node { padding: UiRect::axes(Val::Px(14.0), Val::Px(6.0)), justify_content: JustifyContent::Center, + border_radius: BorderRadius::all(Val::Px(4.0)), ..default() }, BackgroundColor(Color::srgb(0.18, 0.35, 0.50)), - BorderRadius::all(Val::Px(4.0)), )) .with_children(|b| { b.spawn(( @@ -366,10 +366,10 @@ fn spawn_leaderboard_screen(commands: &mut Commands, entries: Option<&[Leaderboa Node { padding: UiRect::axes(Val::Px(14.0), Val::Px(6.0)), justify_content: JustifyContent::Center, + border_radius: BorderRadius::all(Val::Px(4.0)), ..default() }, BackgroundColor(Color::srgb(0.42, 0.15, 0.15)), - BorderRadius::all(Val::Px(4.0)), )) .with_children(|b| { b.spawn(( diff --git a/solitaire_engine/src/pause_plugin.rs b/solitaire_engine/src/pause_plugin.rs index 6e2bbd9..a563570 100644 --- a/solitaire_engine/src/pause_plugin.rs +++ b/solitaire_engine/src/pause_plugin.rs @@ -224,10 +224,10 @@ fn spawn_pause_screen( padding: UiRect::axes(Val::Px(14.0), Val::Px(6.0)), justify_content: JustifyContent::Center, align_items: AlignItems::Center, + border_radius: BorderRadius::all(Val::Px(4.0)), ..default() }, BackgroundColor(Color::srgb(0.20, 0.30, 0.45)), - BorderRadius::all(Val::Px(4.0)), )) .with_children(|btn| { btn.spawn(( @@ -496,7 +496,7 @@ mod tests { ); // Verify a SettingsChangedEvent was fired. - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let count = cursor.read(events).count(); assert!(count >= 1, "SettingsChangedEvent must be fired on toggle"); diff --git a/solitaire_engine/src/progress_plugin.rs b/solitaire_engine/src/progress_plugin.rs index 134adb3..87bbfb6 100644 --- a/solitaire_engine/src/progress_plugin.rs +++ b/solitaire_engine/src/progress_plugin.rs @@ -187,7 +187,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1, "exactly one level-up"); @@ -204,7 +204,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert!(cursor.read(events).next().is_none()); } @@ -219,7 +219,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1); @@ -238,7 +238,7 @@ mod tests { app.update(); let total_xp = app.world().resource::().0.total_xp; - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1); diff --git a/solitaire_engine/src/settings_plugin.rs b/solitaire_engine/src/settings_plugin.rs index bdbdb6b..f9b5dbb 100644 --- a/solitaire_engine/src/settings_plugin.rs +++ b/solitaire_engine/src/settings_plugin.rs @@ -603,10 +603,10 @@ fn spawn_settings_panel( min_width: Val::Px(340.0), max_height: Val::Percent(88.0), overflow: Overflow::scroll_y(), + border_radius: BorderRadius::all(Val::Px(8.0)), ..default() }, BackgroundColor(Color::srgb(0.11, 0.11, 0.14)), - BorderRadius::all(Val::Px(8.0)), )) .with_children(|card| { // Title @@ -755,10 +755,10 @@ fn spawn_settings_panel( height: Val::Px(40.0), justify_content: JustifyContent::Center, align_items: AlignItems::Center, + border_radius: BorderRadius::all(Val::Px(4.0)), ..default() }, BackgroundColor(bg_color), - BorderRadius::all(Val::Px(4.0)), )) .with_children(|b| { b.spawn(( @@ -801,10 +801,10 @@ fn spawn_settings_panel( height: Val::Px(40.0), justify_content: JustifyContent::Center, align_items: AlignItems::Center, + border_radius: BorderRadius::all(Val::Px(4.0)), ..default() }, BackgroundColor(bg_color), - BorderRadius::all(Val::Px(4.0)), )) .with_children(|b| { b.spawn(( @@ -839,10 +839,10 @@ fn spawn_settings_panel( Node { padding: UiRect::axes(Val::Px(10.0), Val::Px(4.0)), justify_content: JustifyContent::Center, + border_radius: BorderRadius::all(Val::Px(4.0)), ..default() }, BackgroundColor(Color::srgb(0.20, 0.30, 0.45)), - BorderRadius::all(Val::Px(4.0)), )) .with_children(|b| { b.spawn(( @@ -861,10 +861,10 @@ fn spawn_settings_panel( padding: UiRect::axes(Val::Px(20.0), Val::Px(8.0)), justify_content: JustifyContent::Center, margin: UiRect::top(Val::Px(6.0)), + border_radius: BorderRadius::all(Val::Px(4.0)), ..default() }, BackgroundColor(Color::srgb(0.22, 0.45, 0.22)), - BorderRadius::all(Val::Px(4.0)), )) .with_children(|b| { b.spawn(( @@ -934,10 +934,10 @@ fn icon_button(parent: &mut ChildSpawnerCommands, label: &str, action: SettingsB height: Val::Px(28.0), justify_content: JustifyContent::Center, align_items: AlignItems::Center, + border_radius: BorderRadius::all(Val::Px(4.0)), ..default() }, BackgroundColor(Color::srgb(0.25, 0.25, 0.30)), - BorderRadius::all(Val::Px(4.0)), )) .with_children(|b| { b.spawn(( @@ -995,7 +995,7 @@ mod tests { let after = app.world().resource::().0.sfx_volume; assert!(after < before); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert_eq!(cursor.read(events).count(), 1); } @@ -1020,7 +1020,7 @@ mod tests { press(&mut app, KeyCode::BracketRight); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert_eq!(cursor.read(events).count(), 0); } @@ -1036,7 +1036,7 @@ mod tests { let after = app.world().resource::().0.sfx_volume; assert!(after >= 0.0, "volume must not go below zero"); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert_eq!(cursor.read(events).count(), 0, "no event when clamped at floor"); } diff --git a/solitaire_engine/src/stats_plugin.rs b/solitaire_engine/src/stats_plugin.rs index 686544d..0febcf5 100644 --- a/solitaire_engine/src/stats_plugin.rs +++ b/solitaire_engine/src/stats_plugin.rs @@ -784,7 +784,7 @@ mod tests { app.world_mut().write_message(ForfeitEvent); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut reader = events.get_cursor(); let messages: Vec<&str> = reader .read(events) @@ -813,7 +813,7 @@ mod tests { app.world_mut().write_message(ForfeitEvent); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut reader = events.get_cursor(); let messages: Vec<&str> = reader .read(events) diff --git a/solitaire_engine/src/time_attack_plugin.rs b/solitaire_engine/src/time_attack_plugin.rs index f7628f2..dd24c68 100644 --- a/solitaire_engine/src/time_attack_plugin.rs +++ b/solitaire_engine/src/time_attack_plugin.rs @@ -151,7 +151,7 @@ mod tests { let session = app.world().resource::(); assert!(!session.active); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert!(cursor.read(events).next().is_none()); } @@ -169,7 +169,7 @@ mod tests { assert_eq!(session.wins, 0); assert!((session.remaining_secs - TIME_ATTACK_DURATION_SECS).abs() < 1.0); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1); @@ -193,7 +193,7 @@ mod tests { assert!(!session.active); assert_eq!(session.remaining_secs, 0.0); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1); @@ -222,7 +222,7 @@ mod tests { let session = app.world().resource::(); assert_eq!(session.wins, 1); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert_eq!(fired.len(), 1); @@ -286,7 +286,7 @@ mod tests { assert!(session.remaining_secs < 0.0, "remaining_secs must not change while paused"); // No ended event must have been emitted. - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); assert!( cursor.read(events).next().is_none(), diff --git a/solitaire_engine/src/weekly_goals_plugin.rs b/solitaire_engine/src/weekly_goals_plugin.rs index d4762f8..43f61ef 100644 --- a/solitaire_engine/src/weekly_goals_plugin.rs +++ b/solitaire_engine/src/weekly_goals_plugin.rs @@ -228,7 +228,7 @@ mod tests { let base_win_xp = solitaire_data::xp_for_win(60, false); assert_eq!(p.total_xp - xp_before, base_win_xp + WEEKLY_GOAL_XP); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).cloned().collect(); assert!(fired.iter().any(|e| e.goal_id == "weekly_3_fast")); @@ -286,7 +286,7 @@ mod tests { }); app.update(); - let events = app.world().resource::>(); + let events = app.world().resource::>(); let mut cursor = events.get_cursor(); let fired: Vec<_> = cursor.read(events).copied().collect(); assert!(!fired.is_empty(), "LevelUpEvent must fire when weekly bonus pushes past a level threshold"); diff --git a/solitaire_engine/src/win_summary_plugin.rs b/solitaire_engine/src/win_summary_plugin.rs index ffbac10..9a343b8 100644 --- a/solitaire_engine/src/win_summary_plugin.rs +++ b/solitaire_engine/src/win_summary_plugin.rs @@ -442,10 +442,10 @@ fn spawn_overlay( row_gap: Val::Px(18.0), min_width: Val::Px(320.0), align_items: AlignItems::Center, + border_radius: BorderRadius::all(Val::Px(12.0)), ..default() }, BackgroundColor(Color::srgb(0.10, 0.12, 0.10)), - BorderRadius::all(Val::Px(12.0)), )) .with_children(|card| { // Heading @@ -518,10 +518,10 @@ fn spawn_overlay( padding: UiRect::axes(Val::Px(28.0), Val::Px(12.0)), justify_content: JustifyContent::Center, margin: UiRect::top(Val::Px(8.0)), + border_radius: BorderRadius::all(Val::Px(6.0)), ..default() }, BackgroundColor(Color::srgb(0.22, 0.45, 0.22)), - BorderRadius::all(Val::Px(6.0)), )) .with_children(|b| { b.spawn((