From 6c81c157b8312f0a4cc24df9ae61b4b64d5ad6ed Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Sun, 29 Mar 2026 16:28:42 +0200 Subject: [PATCH 01/13] Update to egui 0.34 + small UI tweaks --- Cargo.lock | 1568 +++++++++++------ crates/maps/Cargo.toml | 12 +- crates/maps/src/app.rs | 20 +- crates/maps/src/app_impl/canvas_settings.rs | 23 +- crates/maps/src/app_impl/central_panel.rs | 16 +- crates/maps/src/app_impl/debug_window.rs | 3 +- .../maps/src/app_impl/file_dialog_builder.rs | 6 +- crates/maps/src/app_impl/footer_panel.rs | 19 +- crates/maps/src/app_impl/header_panel.rs | 41 +- crates/maps/src/app_impl/info_window.rs | 2 +- crates/maps/src/app_impl/keys.rs | 12 +- crates/maps/src/app_impl/load_delete.rs | 9 +- crates/maps/src/app_impl/menu_panel.rs | 28 +- crates/maps/src/app_impl/settings_panel.rs | 7 +- crates/maps/src/lens.rs | 11 +- .../tests/fixed_lens_background_kittest.rs | 2 +- crates/maps_io_ros/Cargo.toml | 2 +- crates/maps_rendering/Cargo.toml | 2 +- 18 files changed, 1133 insertions(+), 650 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b64a976..fe79be8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "ab_glyph" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -20,57 +20,58 @@ checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] name = "accesskit" -version = "0.19.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25ae84c0260bdf5df07796d7cc4882460de26a2b406ec0e6c42461a723b271b" +checksum = "5351dcebb14b579ccab05f288596b2ae097005be7ee50a7c3d4ca9d0d5a66f6a" dependencies = [ "enumn", "serde", + "uuid", ] [[package]] name = "accesskit_atspi_common" -version = "0.12.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bd41de2e54451a8ca0dd95ebf45b54d349d29ebceb7f20be264eee14e3d477" +checksum = "842fd8203e6dfcf531d24f5bac792088edfba7d6b35844fead191603fb32a260" dependencies = [ "accesskit", "accesskit_consumer", "atspi-common", + "phf", "serde", - "thiserror 1.0.69", "zvariant", ] [[package]] name = "accesskit_consumer" -version = "0.28.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bfae7c152994a31dc7d99b8eeac7784a919f71d1b306f4b83217e110fd3824c" +checksum = "53cf47daed85312e763fbf85ceca136e0d7abc68e0a7e12abe11f48172bc3b10" dependencies = [ "accesskit", - "hashbrown", + "hashbrown 0.16.1", ] [[package]] name = "accesskit_macos" -version = "0.20.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692dd318ff8a7a0ffda67271c4bd10cf32249656f4e49390db0b26ca92b095f2" +checksum = "534bc3fdc89a64a1db3c46b33c198fde2b7c3c7d094e5809c8c8bf2970c18243" dependencies = [ "accesskit", "accesskit_consumer", - "hashbrown", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "hashbrown 0.16.1", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", ] [[package]] name = "accesskit_unix" -version = "0.15.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f7474c36606d0fe4f438291d667bae7042ea2760f506650ad2366926358fc8" +checksum = "90e549dd7c6562b6a2ea807b44726e6241707db054a817dc4c7e2b8d3b39bfac" dependencies = [ "accesskit", "accesskit_atspi_common", @@ -86,23 +87,23 @@ dependencies = [ [[package]] name = "accesskit_windows" -version = "0.27.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a042b62c9c05bf7b616f015515c17d2813f3ba89978d6f4fc369735d60700a" +checksum = "eff7009f1a532e917d66970a1e80c965140c6cfbbabbdde3d64e5431e6c78e21" dependencies = [ "accesskit", "accesskit_consumer", - "hashbrown", + "hashbrown 0.16.1", "static_assertions", - "windows 0.61.1", - "windows-core 0.61.1", + "windows", + "windows-core", ] [[package]] name = "accesskit_winit" -version = "0.27.0" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1f0d3d13113d8857542a4f8d1a1c24d1dc1527b77aee8426127f4901588708" +checksum = "1fe9a94394896352cc4660ca2288bd4ef883d83238853c038b44070c8f134313" dependencies = [ "accesskit", "accesskit_macos", @@ -120,16 +121,16 @@ checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.3.4", "once_cell", "serde", "version_check", - "zerocopy", + "zerocopy 0.8.27", ] [[package]] @@ -147,6 +148,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android-activity" version = "0.6.0" @@ -154,16 +161,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.9.1", + "bitflags 2.11.0", "cc", "cesu8", - "jni", - "jni-sys", + "jni 0.21.1", + "jni-sys 0.3.0", "libc", "log", "ndk", "ndk-context", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", "thiserror 1.0.69", ] @@ -255,19 +262,21 @@ checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" [[package]] name = "arboard" -version = "3.4.1" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" dependencies = [ "clipboard-win", - "core-graphics", "image", "log", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", "parking_lot", - "windows-sys 0.48.0", + "percent-encoding", + "windows-sys 0.59.0", "x11rb", ] @@ -493,20 +502,19 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atspi" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c83247582e7508838caf5f316c00791eee0e15c0bf743e6880585b867e16815c" +checksum = "c77886257be21c9cd89a4ae7e64860c6f0eefca799bb79127913052bd0eefb3d" dependencies = [ "atspi-common", - "atspi-connection", "atspi-proxies", ] [[package]] name = "atspi-common" -version = "0.9.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33dfc05e7cdf90988a197803bf24f5788f94f7c94a69efa95683e8ffe76cfdfb" +checksum = "20c5617155740c98003016429ad13fe43ce7a77b007479350a9f8bf95a29f63d" dependencies = [ "enumflags2", "serde", @@ -518,23 +526,11 @@ dependencies = [ "zvariant", ] -[[package]] -name = "atspi-connection" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4193d51303d8332304056ae0004714256b46b6635a5c556109b319c0d3784938" -dependencies = [ - "atspi-common", - "atspi-proxies", - "futures-lite", - "zbus", -] - [[package]] name = "atspi-proxies" -version = "0.9.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2eebcb9e7e76f26d0bcfd6f0295e1cd1e6f33bedbc5698a971db8dc43d7751c" +checksum = "2230e48787ed3eb4088996eab66a32ca20c0b67bbd4fd6cdfe79f04f1f04c9fc" dependencies = [ "atspi-common", "serde", @@ -572,18 +568,18 @@ dependencies = [ [[package]] name = "bit-set" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51" [[package]] name = "bit_field" @@ -599,12 +595,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" -dependencies = [ - "serde", -] +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" [[package]] name = "bitstream-io" @@ -613,18 +606,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" [[package]] -name = "block" -version = "0.1.6" +name = "block2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] [[package]] name = "block2" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2", + "objc2 0.6.4", ] [[package]] @@ -657,18 +653,18 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", @@ -699,7 +695,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "log", "polling", "rustix 0.38.42", @@ -818,15 +814,24 @@ dependencies = [ [[package]] name = "codespan-reporting" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" dependencies = [ "serde", "termcolor", "unicode-width", ] +[[package]] +name = "color" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18ef4657441fb193b65f34dc39b3781f0dfec23d3bd94d0eeb4e88cde421edb" +dependencies = [ + "bytemuck", +] + [[package]] name = "color_quant" version = "1.1.0" @@ -887,7 +892,7 @@ dependencies = [ "directories 5.0.1", "serde", "thiserror 1.0.69", - "toml", + "toml 0.8.19", ] [[package]] @@ -998,9 +1003,9 @@ checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" [[package]] name = "dify" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11217d469eafa3b809ad84651eb9797ccbb440b4a916d5d85cb1b994e89787f6" +checksum = "90ce0fb972943b4e88cd03b8f92953df0c71bb05e0bde8e5b684895d808013cc" dependencies = [ "anyhow", "colored", @@ -1048,7 +1053,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.0", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1057,6 +1062,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -1106,9 +1121,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "ecolor" -version = "0.32.2" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebb57dec02e4cca6d70d02e29865f7e52dbd471383f4c3444dda7ee78d467360" +checksum = "137c0ce4ce4152ff7e223a7ce22ee1057cdff61fce0a45c32459c3ccec64868d" dependencies = [ "bytemuck", "emath", @@ -1117,9 +1132,9 @@ dependencies = [ [[package]] name = "eframe" -version = "0.32.2" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990e96866be6346eff496e4f450616f2a00e462742ad64d955454842dd7aa006" +checksum = "d6e995b8e434d65aefd12c4519221be3e8f38efd77804ef39ca10553f4ad7063" dependencies = [ "ahash", "bytemuck", @@ -1128,15 +1143,14 @@ dependencies = [ "egui-wgpu", "egui-winit", "egui_glow", - "glow", "glutin", "glutin-winit", "image", "js-sys", "log", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", "parking_lot", "percent-encoding", "pollster", @@ -1148,20 +1162,19 @@ dependencies = [ "web-sys", "web-time", "wgpu", - "winapi", - "windows-sys 0.59.0", + "windows-sys 0.61.2", "winit", ] [[package]] name = "egui" -version = "0.32.2" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40df1115b8b0f3d4f1f9134a26287fd3d0e067fc18f879b8c9641aedf3eecef7" +checksum = "f34aaf627da598dfadd64b0fee6101d22e9c451d1e5348157312720b7f459f0f" dependencies = [ "accesskit", "ahash", - "bitflags 2.9.1", + "bitflags 2.11.0", "emath", "epaint", "log", @@ -1174,9 +1187,9 @@ dependencies = [ [[package]] name = "egui-file-dialog" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ae40a3a02bb2f617dd0f6b41d9fe64713667684f68d52694362cad22828e74" +checksum = "b530b58f428bcffb58281ad1c3a59ee559ffd2354aa54d5bf1a2ef418fdcebb3" dependencies = [ "directories 6.0.0", "dunce", @@ -1187,9 +1200,9 @@ dependencies = [ [[package]] name = "egui-wgpu" -version = "0.32.2" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80b8ac3f985e46f485daa9c2c357311ac0d13098e08630ec55f3a6ad95192717" +checksum = "71033ff78b041c9c363450f4498ff95468ef3ecbcc71a62f67036a6207d98fa4" dependencies = [ "ahash", "bytemuck", @@ -1198,7 +1211,7 @@ dependencies = [ "epaint", "log", "profiling", - "thiserror 1.0.69", + "thiserror 2.0.18", "type-map", "web-time", "wgpu", @@ -1207,16 +1220,18 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.32.2" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1abd8326d2be6d0e945dcfe8acd2c07d64be4c977c5e1115f902dc9cd3ff7bf5" +checksum = "11a2881b2bf1a305e413e644af63f836737a33d85077705ff808e88f902ff742" dependencies = [ "accesskit_winit", - "ahash", "arboard", "bytemuck", "egui", "log", + "objc2 0.6.4", + "objc2-foundation 0.3.2", + "objc2-ui-kit 0.3.2", "profiling", "raw-window-handle", "smithay-clipboard", @@ -1227,9 +1242,9 @@ dependencies = [ [[package]] name = "egui_animation" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f413d1209497f01f09c2105bde6fe12528722440199ef3f8b8718f1de6dbe8d" +checksum = "dd9bc6d586df44e01b90715eec1eb8d73a61c3c3f554edffb01eb0894a8107ef" dependencies = [ "egui", "hello_egui_utils", @@ -1238,9 +1253,9 @@ dependencies = [ [[package]] name = "egui_dnd" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "921d16245580270bb2749d0ec6c07f20f760b1f7642e00d3a4d87f268e3100b9" +checksum = "51a348b3fdbc048c4241aaa2865255e1fdebbc0099324ded8c5b534e598e600c" dependencies = [ "egui", "egui_animation", @@ -1250,11 +1265,10 @@ dependencies = [ [[package]] name = "egui_glow" -version = "0.32.2" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7baca67871a8b808e2eb0849282f56149673b6842702306860916bf2dd83fca1" +checksum = "a3b28d39ab6c0cac238190e6cb1e8c9047d02cb470ab942a7a3302e4cb3a8e74" dependencies = [ - "ahash", "bytemuck", "egui", "glow", @@ -1268,9 +1282,9 @@ dependencies = [ [[package]] name = "egui_kittest" -version = "0.32.0" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dacd0e777f0557aebde97346a8c534e76607ce1e4f4a6e10a82d95ec5d5bca8" +checksum = "839cd66e1b2f1ee9c168eba9a1b33007d057575b2b943886a4da2a7f1f7509ee" dependencies = [ "dify", "eframe", @@ -1278,15 +1292,19 @@ dependencies = [ "egui-wgpu", "image", "kittest", + "open", "pollster", + "serde", + "tempfile", + "toml 1.1.0+spec-1.1.0", "wgpu", ] [[package]] name = "egui_plot" -version = "0.33.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524318041a8ea90c81c738e8985f8ad9e3f9bed636b03c2ff37b218113ed5121" +checksum = "d7bd66213736bf9a9a53dc4888570b9194fc0db906507517a7fcc787e888ac47" dependencies = [ "ahash", "egui", @@ -1295,9 +1313,9 @@ dependencies = [ [[package]] name = "egui_tiles" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1545ed157141c0fa3ef34e03104b53f68d720a37535a6f4ba252770aa6fb1f" +checksum = "08e570b77f6cce3292eba4aee9b9c08cf11dfc68430f4dc9613d939628498647" dependencies = [ "ahash", "egui", @@ -1314,9 +1332,9 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "emath" -version = "0.32.2" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c95b6d5571099bfa0ae9f4fdaef2c239bccb01d55339a082070259dc6f3b05" +checksum = "0a05cd8bdf3b598488c627ca97c7fe8909448ffa26278dd3c7e535cdb554d721" dependencies = [ "bytemuck", "serde", @@ -1385,28 +1403,32 @@ dependencies = [ [[package]] name = "epaint" -version = "0.32.2" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "695fd7b458f31fe515d6a308f46b2936cae9316dc40c960a7ee31ce3a97866b9" +checksum = "04f3017dd67f147a697ee0c8484fb568fd9553e2a0c114be5020dbbc11962841" dependencies = [ - "ab_glyph", "ahash", "bytemuck", "ecolor", "emath", "epaint_default_fonts", + "font-types", "log", "nohash-hasher", "parking_lot", "profiling", + "self_cell", "serde", + "skrifa", + "smallvec", + "vello_cpu", ] [[package]] name = "epaint_default_fonts" -version = "0.32.2" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbc9f86ce3eaf9b7fc7179a578af21a6a5cd2d4fd21965564e82a2d009a7dab0" +checksum = "8e3b85a2bb775a3ab02d077a65cc31575c11b2584581913253cc11ce49f48bba" [[package]] name = "equivalent" @@ -1430,6 +1452,15 @@ version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" +[[package]] +name = "euclid" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" +dependencies = [ + "num-traits", +] + [[package]] name = "event-listener" version = "5.3.1" @@ -1477,7 +1508,7 @@ dependencies = [ "document-features", "image", "num-traits", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] @@ -1515,6 +1546,15 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "fearless_simd" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb2907d1f08b2b316b9223ced5b0e89d87028ba8deae9764741dba8ff7f3903" +dependencies = [ + "bytemuck", +] + [[package]] name = "flate2" version = "1.0.35" @@ -1531,6 +1571,22 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "font-types" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73829a7b5c91198af28a99159b7ae4afbb252fb906159ff7f189f3a2ceaa3df2" +dependencies = [ + "bytemuck", + "serde", +] + [[package]] name = "foreign-types" version = "0.5.0" @@ -1664,6 +1720,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + [[package]] name = "gif" version = "0.13.1" @@ -1680,7 +1748,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "libc", "libgit2-sys", "log", @@ -1700,9 +1768,9 @@ dependencies = [ [[package]] name = "glow" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +checksum = "29038e1c483364cc6bb3cf78feee1816002e127c331a1eec55a4d202b9e1adb5" dependencies = [ "js-sys", "slotmap", @@ -1712,22 +1780,22 @@ dependencies = [ [[package]] name = "glutin" -version = "0.32.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec69412a0bf07ea7607e638b415447857a808846c2b685a43c8aa18bc6d5e499" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "cfg_aliases", "cgl", - "core-foundation 0.9.4", - "dispatch", + "dispatch2", "glutin_egl_sys", "glutin_glx_sys", "glutin_wgl_sys", "libloading", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", "once_cell", "raw-window-handle", "wayland-sys", @@ -1749,9 +1817,9 @@ dependencies = [ [[package]] name = "glutin_egl_sys" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae99fff4d2850dbe6fb8c1fa8e4fead5525bab715beaacfccf3fb994e01c827" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" dependencies = [ "gl_generator", "windows-sys 0.52.0", @@ -1759,9 +1827,9 @@ dependencies = [ [[package]] name = "glutin_glx_sys" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2b2d3918e76e18e08796b55eb64e8fe6ec67d5a6b2e2a7e2edce224ad24c63" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" dependencies = [ "gl_generator", "x11-dl", @@ -1769,42 +1837,25 @@ dependencies = [ [[package]] name = "glutin_wgl_sys" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e1951bbd9434a81aa496fe59ccc2235af3820d27b85f9314e279609211e2c" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" dependencies = [ "gl_generator", ] -[[package]] -name = "gpu-alloc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" -dependencies = [ - "bitflags 2.9.1", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" -dependencies = [ - "bitflags 2.9.1", -] - [[package]] name = "gpu-allocator" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" +checksum = "51255ea7cfaadb6c5f1528d43e92a82acb2b96c43365989a28b2d44ee38f8795" dependencies = [ + "ash", + "hashbrown 0.16.1", "log", "presser", - "thiserror 1.0.69", - "windows 0.58.0", + "thiserror 2.0.18", + "windows", ] [[package]] @@ -1813,9 +1864,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "gpu-descriptor-types", - "hashbrown", + "hashbrown 0.15.2", ] [[package]] @@ -1824,7 +1875,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", ] [[package]] @@ -1844,7 +1895,18 @@ version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ - "foldhash", + "foldhash 0.1.4", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", ] [[package]] @@ -1855,9 +1917,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hello_egui_utils" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea8d21d4cd2b323f7703a43fb72c0f58da649387538a96c67b02fc3967ed55dc" +checksum = "c34bfd8bff6f6df43b0b73ed7949a7aff0c98c2c1bd4c2f2771f5f2f6d98ced0" dependencies = [ "concat-idents", "egui", @@ -1881,15 +1943,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "humantime" version = "2.1.0" @@ -2077,7 +2130,7 @@ checksum = "2393fb7808960751a52e8a154f67e7dd3f8a2ef9bd80d1553078a7b4e8ed3f0d" dependencies = [ "ab_glyph", "approx", - "getrandom", + "getrandom 0.2.15", "image", "itertools 0.12.1", "nalgebra", @@ -2095,12 +2148,12 @@ checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" [[package]] name = "indexmap" -version = "2.10.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.16.1", ] [[package]] @@ -2114,6 +2167,25 @@ dependencies = [ "syn", ] +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -2153,19 +2225,68 @@ dependencies = [ "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-sys 0.3.0", "log", "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys 0.4.1", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn", +] + [[package]] name = "jni-sys" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] + [[package]] name = "jobserver" version = "0.1.32" @@ -2177,10 +2298,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "cc4c90f45aa2e6eacbe8645f77fdea542ac97a494bcd117a67df9ff4d611f995" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] @@ -2204,13 +2327,23 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "kittest" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c1bfc4cb16136b6f00fb85a281e4b53d026401cf5dff9a427c466bde5891f0b" +checksum = "90ceaa75eb0036a32b6b9833962eb18137449e9817e2e586006471925b727fd5" dependencies = [ "accesskit", "accesskit_consumer", - "parking_lot", +] + +[[package]] +name = "kurbo" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7564e90fe3c0d5771e1f0bc95322b21baaeaa0d9213fa6a0b61c99f8b17b3bfb" +dependencies = [ + "arrayvec", + "euclid", + "smallvec", ] [[package]] @@ -2227,9 +2360,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.174" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libfuzzer-sys" @@ -2275,7 +2408,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "libc", "redox_syscall 0.5.8", ] @@ -2292,6 +2425,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "linebender_resource_handle" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4" + [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -2300,9 +2439,9 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" @@ -2318,19 +2457,18 @@ checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.22" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "loop9" @@ -2341,15 +2479,6 @@ dependencies = [ "imgref", ] -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - [[package]] name = "maps" version = "1.9.4" @@ -2375,8 +2504,8 @@ dependencies = [ "serde", "strum", "strum_macros", - "thiserror 2.0.16", - "toml", + "thiserror 2.0.18", + "toml 0.8.19", "uuid", "wasm-bindgen-futures", "web-sys", @@ -2394,7 +2523,7 @@ dependencies = [ "serde_yaml_ng", "strum", "strum_macros", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] @@ -2408,7 +2537,7 @@ dependencies = [ "log", "maps_io_ros", "serde", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] @@ -2455,21 +2584,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "metal" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" -dependencies = [ - "bitflags 2.9.1", - "block", - "core-graphics-types", - "foreign-types", - "log", - "objc", - "paste", -] - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -2498,26 +2612,27 @@ dependencies = [ [[package]] name = "naga" -version = "25.0.1" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" +checksum = "aa2630921705b9b01dcdd0b6864b9562ca3c1951eecd0f0c4f5f04f61e412647" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.9.1", + "bitflags 2.11.0", + "cfg-if", "cfg_aliases", "codespan-reporting", "half", - "hashbrown", + "hashbrown 0.16.1", "hexf-parse", "indexmap", + "libm", "log", "num-traits", "once_cell", - "rustc-hash", + "rustc-hash 1.1.0", "spirv", - "strum", - "thiserror 2.0.16", + "thiserror 2.0.18", "unicode-ident", ] @@ -2542,10 +2657,10 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.9.1", - "jni-sys", + "bitflags 2.11.0", + "jni-sys 0.3.0", "log", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", "raw-window-handle", "thiserror 1.0.69", @@ -2559,20 +2674,11 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.5.0+25.2.9519653" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", -] - -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys", + "jni-sys 0.3.0", ] [[package]] @@ -2587,7 +2693,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "cfg-if", "cfg_aliases", "libc", @@ -2722,15 +2828,6 @@ dependencies = [ "syn", ] -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - [[package]] name = "objc-sys" version = "0.3.5" @@ -2747,20 +2844,42 @@ dependencies = [ "objc2-encode", ] +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", +] + [[package]] name = "objc2-app-kit" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.9.1", - "block2", + "bitflags 2.11.0", + "block2 0.5.1", "libc", - "objc2", + "objc2 0.5.2", "objc2-core-data", "objc2-core-image", - "objc2-foundation", - "objc2-quartz-core", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", ] [[package]] @@ -2769,11 +2888,11 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2", + "bitflags 2.11.0", + "block2 0.5.1", + "objc2 0.5.2", "objc2-core-location", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2782,9 +2901,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ - "block2", - "objc2", - "objc2-foundation", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] @@ -2793,19 +2912,34 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2", - "objc2-foundation", + "bitflags 2.11.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] name = "objc2-core-foundation" -version = "0.3.1" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.11.0", + "dispatch2", + "objc2 0.6.4", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", + "dispatch2", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-io-surface", ] [[package]] @@ -2814,10 +2948,10 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block2", - "objc2", - "objc2-foundation", - "objc2-metal", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal 0.2.2", ] [[package]] @@ -2826,17 +2960,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ - "block2", - "objc2", + "block2 0.5.1", + "objc2 0.5.2", "objc2-contacts", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] name = "objc2-encode" -version = "4.0.3" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" [[package]] name = "objc2-foundation" @@ -2844,33 +2978,56 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.9.1", - "block2", + "bitflags 2.11.0", + "block2 0.5.1", "dispatch", "libc", - "objc2", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.0", + "block2 0.6.2", + "objc2 0.6.4", + "objc2-core-foundation", ] [[package]] name = "objc2-io-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1c64d6120e51cd86033f67176b1cb66780c2efe34dec55176f77befd93c0a" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" dependencies = [ "libc", "objc2-core-foundation", ] +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", + "objc2-core-foundation", +] + [[package]] name = "objc2-link-presentation" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ - "block2", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", ] [[package]] @@ -2879,10 +3036,22 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2", - "objc2-foundation", + "bitflags 2.11.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" +dependencies = [ + "bitflags 2.11.0", + "block2 0.6.2", + "objc2 0.6.4", + "objc2-foundation 0.3.2", ] [[package]] @@ -2891,11 +3060,24 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2", - "objc2-foundation", - "objc2-metal", + "bitflags 2.11.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-metal 0.3.2", ] [[package]] @@ -2904,8 +3086,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "objc2", - "objc2-foundation", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] @@ -2914,30 +3096,42 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2", + "bitflags 2.11.0", + "block2 0.5.1", + "objc2 0.5.2", "objc2-cloud-kit", "objc2-core-data", "objc2-core-image", "objc2-core-location", - "objc2-foundation", + "objc2-foundation 0.2.2", "objc2-link-presentation", - "objc2-quartz-core", + "objc2-quartz-core 0.2.2", "objc2-symbols", "objc2-uniform-type-identifiers", "objc2-user-notifications", ] +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.11.0", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-uniform-type-identifiers" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" dependencies = [ - "block2", - "objc2", - "objc2-foundation", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] @@ -2946,11 +3140,11 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.9.1", - "block2", - "objc2", + "bitflags 2.11.0", + "block2 0.5.1", + "objc2 0.5.2", "objc2-core-location", - "objc2-foundation", + "objc2-foundation 0.2.2", ] [[package]] @@ -2959,6 +3153,17 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "open" +version = "5.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43bb73a7fa3799b198970490a51174027ba0d4ec504b03cd08caf513d40024bc" +dependencies = [ + "is-wsl", + "libc", + "pathdiff", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -3010,9 +3215,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -3020,15 +3225,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall 0.5.8", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -3037,11 +3242,73 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "peniko" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2b6aadb221872732e87d465213e9be5af2849b0e8cc5300a8ba98fffa2e00a" +dependencies = [ + "bytemuck", + "color", + "kurbo", + "linebender_resource_handle", + "smallvec", +] + [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros", + "phf_shared", + "serde", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] [[package]] name = "pin-project" @@ -3098,7 +3365,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "crc32fast", "fdeflate", "flate2", @@ -3132,13 +3399,22 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +[[package]] +name = "portable-atomic-util" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +dependencies = [ + "portable-atomic", +] + [[package]] name = "ppv-lite86" version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -3158,27 +3434,27 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" dependencies = [ "profiling-procmacros", ] [[package]] name = "profiling-procmacros" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" +checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" dependencies = [ "quote", "syn", @@ -3236,6 +3512,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" @@ -3263,7 +3545,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -3338,6 +3620,18 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" +[[package]] +name = "raw-window-metal" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135" +dependencies = [ + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", +] + [[package]] name = "rawpointer" version = "0.2.1" @@ -3364,6 +3658,16 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "read-fonts" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" +dependencies = [ + "bytemuck", + "font-types", +] + [[package]] name = "redox_syscall" version = "0.4.1" @@ -3379,7 +3683,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", ] [[package]] @@ -3388,7 +3692,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", "thiserror 1.0.69", ] @@ -3399,9 +3703,9 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", - "thiserror 2.0.16", + "thiserror 2.0.18", ] [[package]] @@ -3446,14 +3750,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a24763657bff09769a8ccf12c8b8a50416fb035fe199263b4c5071e4e3f006f" dependencies = [ "ashpd", - "block2", + "block2 0.5.1", "core-foundation 0.10.0", "core-foundation-sys", "js-sys", "log", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", "pollster", "raw-window-handle", "urlencoding", @@ -3475,13 +3779,28 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "errno", "libc", "linux-raw-sys 0.4.14", @@ -3490,15 +3809,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "linux-raw-sys 0.12.1", + "windows-sys 0.61.2", ] [[package]] @@ -3556,20 +3875,42 @@ dependencies = [ "tiny-skia", ] +[[package]] +name = "self_cell" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + [[package]] name = "serde" -version = "1.0.216" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -3596,6 +3937,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876ac351060d4f882bb1032b6369eb0aef79ad9df1ea8bc404874d8cc3d0cd98" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_yaml_ng" version = "0.10.0" @@ -3643,6 +3993,16 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + [[package]] name = "simd_helpers" version = "0.1.0" @@ -3652,12 +4012,34 @@ dependencies = [ "quote", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "simple-easing" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "832ddd7df0d98d6fd93b973c330b7c8e0742d5cb8f1afc7dea89dba4d2531aa1" +[[package]] +name = "siphasher" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" + +[[package]] +name = "skrifa" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" +dependencies = [ + "bytemuck", + "read-fonts", +] + [[package]] name = "slab" version = "0.4.9" @@ -3681,6 +4063,9 @@ name = "smallvec" version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] [[package]] name = "smithay-client-toolkit" @@ -3688,7 +4073,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "calloop", "calloop-wayland-source", "cursor-icon", @@ -3729,11 +4114,11 @@ dependencies = [ [[package]] name = "spirv" -version = "0.3.0+sdk-1.3.268.0" +version = "0.4.0+sdk-1.4.341.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", ] [[package]] @@ -3806,14 +4191,14 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.36.0" +version = "0.38.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab138f5c1bb35231de19049060a87977ad23e04f2303e953bc5c2947ac7dec4" +checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f" dependencies = [ "libc", "objc2-core-foundation", "objc2-io-kit", - "windows 0.61.1", + "windows", ] [[package]] @@ -3825,7 +4210,7 @@ dependencies = [ "cfg-expr", "heck", "pkg-config", - "toml", + "toml 0.8.19", "version-compare", ] @@ -3837,15 +4222,15 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.4", "once_cell", - "rustix 0.38.42", - "windows-sys 0.59.0", + "rustix 1.1.4", + "windows-sys 0.61.2", ] [[package]] @@ -3868,11 +4253,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.16", + "thiserror-impl 2.0.18", ] [[package]] @@ -3888,9 +4273,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", @@ -3953,11 +4338,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", - "serde_spanned", - "toml_datetime", + "serde_spanned 0.6.8", + "toml_datetime 0.6.8", "toml_edit", ] +[[package]] +name = "toml" +version = "1.1.0+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8195ca05e4eb728f4ba94f3e3291661320af739c4e43779cbdfae82ab239fcc" +dependencies = [ + "serde_core", + "serde_spanned 1.1.0", + "toml_datetime 1.1.0+spec-1.1.0", + "toml_parser", + "winnow 1.0.0", +] + [[package]] name = "toml_datetime" version = "0.6.8" @@ -3967,6 +4365,15 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "1.1.0+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97251a7c317e03ad83774a8752a7e81fb6067740609f75ea2b585b569a59198f" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.22.22" @@ -3975,11 +4382,20 @@ checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "serde", - "serde_spanned", - "toml_datetime", + "serde_spanned 0.6.8", + "toml_datetime 0.6.8", "winnow 0.6.20", ] +[[package]] +name = "toml_parser" +version = "1.1.0+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2334f11ee363607eb04df9b8fc8a13ca1715a72ba8662a26ac285c98aabb4011" +dependencies = [ + "winnow 1.0.0", +] + [[package]] name = "tracing" version = "0.1.41" @@ -4019,11 +4435,11 @@ checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" [[package]] name = "type-map" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rustc-hash", + "rustc-hash 2.1.2", ] [[package]] @@ -4109,7 +4525,8 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ - "getrandom", + "getrandom 0.2.15", + "serde", ] [[package]] @@ -4129,6 +4546,32 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "vello_common" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd1a4c633ce09e7d713df1a6e036644a125e15e0c169cfb5180ddf5836ca04b" +dependencies = [ + "bytemuck", + "fearless_simd", + "hashbrown 0.16.1", + "log", + "peniko", + "skrifa", + "smallvec", +] + +[[package]] +name = "vello_cpu" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0162bfe48aabf6a9fdcd401b628c7d9f260c2cbabb343c70a65feba6f7849edc" +dependencies = [ + "bytemuck", + "hashbrown 0.16.1", + "vello_common", +] + [[package]] name = "version-compare" version = "0.2.0" @@ -4158,48 +4601,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] -name = "wasm-bindgen" -version = "0.2.99" +name = "wasip2" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", + "wit-bindgen", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.99" +name = "wasm-bindgen" +version = "0.2.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "6523d69017b7633e396a89c5efab138161ed5aafcbc8d3e5c5a42ae38f50495a" dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "2d1faf851e778dfa54db7cd438b70758eba9755cb47403f3496edd7c8fc212f0" dependencies = [ - "cfg-if", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "4e3a6c758eb2f701ed3d052ff5737f5bfe6614326ea7f3bbac7156192dc32e67" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4207,22 +4644,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "921de2737904886b52bcbb237301552d05969a6f9c40d261eb0533c8b055fedf" dependencies = [ + "bumpalo", "proc-macro2", "quote", "syn", - "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "a93e946af942b58934c604527337bad9ae33ba1d5c6900bbb41c2c07c2364a93" +dependencies = [ + "unicode-ident", +] [[package]] name = "wayland-backend" @@ -4232,7 +4672,7 @@ checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" dependencies = [ "cc", "downcast-rs", - "rustix 1.0.8", + "rustix 1.1.4", "scoped-tls", "smallvec", "wayland-sys", @@ -4244,8 +4684,8 @@ version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" dependencies = [ - "bitflags 2.9.1", - "rustix 1.0.8", + "bitflags 2.11.0", + "rustix 1.1.4", "wayland-backend", "wayland-scanner", ] @@ -4256,7 +4696,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "cursor-icon", "wayland-backend", ] @@ -4278,7 +4718,7 @@ version = "0.32.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4290,7 +4730,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4303,7 +4743,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "782e12f6cd923c3c316130d56205ebab53f55d6666b7faddfad36cecaeeb4022" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4335,9 +4775,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "84cde8507f4d7cfcb1185b8cb5890c494ffea65edbe1ba82cfd63661c805ed94" dependencies = [ "js-sys", "wasm-bindgen", @@ -4355,18 +4795,16 @@ dependencies = [ [[package]] name = "webbrowser" -version = "1.0.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9fe1ebb156110ff855242c1101df158b822487e4957b0556d9ffce9db0f535" +checksum = "fe985f41e291eecef5e5c0770a18d28390addb03331c043964d9e916453d6f16" dependencies = [ - "block2", "core-foundation 0.10.0", - "home", - "jni", + "jni 0.22.4", "log", "ndk-context", - "objc2", - "objc2-foundation", + "objc2 0.6.4", + "objc2-foundation 0.3.2", "url", "web-sys", ] @@ -4379,15 +4817,17 @@ checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" [[package]] name = "wgpu" -version = "25.0.2" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8fb398f119472be4d80bc3647339f56eb63b2a331f6a3d16e25d8144197dd9" +checksum = "72c239a9a747bbd379590985bac952c2e53cb19873f7072b3370c6a6a8e06837" dependencies = [ "arrayvec", - "bitflags 2.9.1", + "bitflags 2.11.0", + "bytemuck", + "cfg-if", "cfg_aliases", "document-features", - "hashbrown", + "hashbrown 0.16.1", "js-sys", "log", "naga", @@ -4407,17 +4847,18 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "25.0.2" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b882196f8368511d613c6aeec80655160db6646aebddf8328879a88d54e500" +checksum = "1e80ac6cf1895df6342f87d975162108f9d98772a0d74bc404ab7304ac29469e" dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.9.1", + "bitflags 2.11.0", + "bytemuck", "cfg_aliases", "document-features", - "hashbrown", + "hashbrown 0.16.1", "indexmap", "log", "naga", @@ -4426,101 +4867,128 @@ dependencies = [ "portable-atomic", "profiling", "raw-window-handle", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.18", "wgpu-core-deps-apple", "wgpu-core-deps-emscripten", + "wgpu-core-deps-wasm", "wgpu-core-deps-windows-linux-android", "wgpu-hal", + "wgpu-naga-bridge", "wgpu-types", ] [[package]] name = "wgpu-core-deps-apple" -version = "25.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd488b3239b6b7b185c3b045c39ca6bf8af34467a4c5de4e0b1a564135d093d" +checksum = "43acd053312501689cd92a01a9638d37f3e41a5fd9534875efa8917ee2d11ac0" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-emscripten" -version = "25.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09ad7aceb3818e52539acc679f049d3475775586f3f4e311c30165cf2c00445" +checksum = "ef043bf135cc68b6f667c55ff4e345ce2b5924d75bad36a47921b0287ca4b24a" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-wasm" +version = "29.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f7b75e72f49035f000dd5262e4126242e92a090a4fd75931ecfe7e60784e6fa" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "25.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cba5fb5f7f9c98baa7c889d444f63ace25574833df56f5b817985f641af58e46" +checksum = "725d5c006a8c02967b6d93ef04f6537ec4593313e330cfe86d9d3f946eb90f28" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "25.0.2" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f968767fe4d3d33747bbd1473ccd55bf0f6451f55d733b5597e67b5deab4ad17" +checksum = "89a47aef47636562f3937285af4c44b4b5b404b46577471411cc5313a921da7e" dependencies = [ "android_system_properties", "arrayvec", "ash", "bit-set", - "bitflags 2.9.1", - "block", + "bitflags 2.11.0", + "block2 0.6.2", "bytemuck", "cfg-if", "cfg_aliases", - "core-graphics-types", "glow", "glutin_wgl_sys", - "gpu-alloc", "gpu-allocator", "gpu-descriptor", - "hashbrown", + "hashbrown 0.16.1", "js-sys", "khronos-egl", "libc", "libloading", "log", - "metal", "naga", - "ndk-sys 0.5.0+25.2.9519653", - "objc", + "ndk-sys", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-metal 0.3.2", + "objc2-quartz-core 0.3.2", + "once_cell", "ordered-float", "parking_lot", "portable-atomic", + "portable-atomic-util", "profiling", "range-alloc", "raw-window-handle", + "raw-window-metal", "renderdoc-sys", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.18", "wasm-bindgen", + "wayland-sys", "web-sys", + "wgpu-naga-bridge", + "wgpu-types", + "windows", + "windows-core", +] + +[[package]] +name = "wgpu-naga-bridge" +version = "29.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4684f4410da0cf95a4cb63bb5edaac022461dedb6adf0b64d0d9b5f6890d51" +dependencies = [ + "naga", "wgpu-types", - "windows 0.58.0", - "windows-core 0.58.0", ] [[package]] name = "wgpu-types" -version = "25.0.0" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aa49460c2a8ee8edba3fca54325540d904dd85b2e086ada762767e17d06e8bc" +checksum = "ec2675540fb1a5cfa5ef122d3d5f390e2c75711a0b946410f2d6ac3a0f77d1f6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "bytemuck", "js-sys", "log", - "thiserror 2.0.16", + "raw-window-handle", "web-sys", ] @@ -4567,89 +5035,54 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.61.1" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ "windows-collections", - "windows-core 0.61.1", + "windows-core", "windows-future", - "windows-link", "windows-numerics", ] [[package]] name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.1", -] - -[[package]] -name = "windows-core" -version = "0.58.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-core", ] [[package]] name = "windows-core" -version = "0.61.1" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46ec44dc15085cea82cf9c78f85a9114c463a369786585ad2882d1ff0b0acf40" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", + "windows-implement", + "windows-interface", "windows-link", - "windows-result 0.3.3", - "windows-strings 0.4.1", + "windows-result", + "windows-strings", ] [[package]] name = "windows-future" -version = "0.2.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "windows-core 0.61.1", + "windows-core", "windows-link", "windows-threading", ] [[package]] name = "windows-implement" -version = "0.58.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-implement" -version = "0.60.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", @@ -4658,20 +5091,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.58.0" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-interface" -version = "0.59.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", @@ -4680,53 +5102,34 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-core 0.61.1", + "windows-core", "windows-link", ] [[package]] name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.3.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b895b5356fc36103d0f64dd1e94dfa7ac5633f1c9dd6e80fe9ec4adef69e09d" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a7ab927b2637c19b3dbe0965e75d8f2d30bdd697a1516191cad2ec4df8fb28a" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ "windows-link", ] @@ -4767,6 +5170,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -4815,9 +5227,9 @@ dependencies = [ [[package]] name = "windows-threading" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" dependencies = [ "windows-link", ] @@ -4956,15 +5368,15 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winit" -version = "0.30.12" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" +checksum = "a6755fa58a9f8350bd1e472d4c3fcc25f824ec358933bba33306d0b63df5978d" dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.9.1", - "block2", + "bitflags 2.11.0", + "block2 0.5.1", "bytemuck", "calloop", "cfg_aliases", @@ -4977,10 +5389,10 @@ dependencies = [ "libc", "memmap2", "ndk", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "objc2-ui-kit", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit 0.2.2", "orbclient", "percent-encoding", "pin-project", @@ -5024,6 +5436,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" + [[package]] name = "write16" version = "1.0.0" @@ -5080,7 +5504,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.11.0", "dlib", "log", "once_cell", @@ -5227,7 +5651,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive 0.8.27", ] [[package]] @@ -5241,6 +5674,17 @@ dependencies = [ "syn", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zerofrom" version = "0.1.5" diff --git a/crates/maps/Cargo.toml b/crates/maps/Cargo.toml index 528c46f..8e347d3 100644 --- a/crates/maps/Cargo.toml +++ b/crates/maps/Cargo.toml @@ -24,18 +24,18 @@ default = ["kittest_snapshots"] built = { version = "0.7.5", features = ["git2"] } [dev-dependencies] -egui_kittest = { version = "0.32.0", features = ["wgpu", "snapshot", "eframe"] } +egui_kittest = { version = "0.34.0", features = ["wgpu", "snapshot", "eframe"] } # Dependencies of the main app crate. [dependencies] maps_io_ros = { workspace = true } maps_rendering = { workspace = true } confy = "0.6.1" -eframe = {version = "0.32.1", features = ["wgpu"]} -egui_dnd = "0.13.0" -egui-file-dialog = "0.11.0" -egui_plot = "0.33.0" -egui_tiles = "0.13.0" +eframe = {version = "0.34.0", features = ["wgpu"]} +egui_dnd = "0.15.0" +egui-file-dialog = "0.13.0" +egui_plot = "0.35.0" +egui_tiles = "0.15.0" image = { workspace = true } lazy_static = { workspace = true } log = { workspace = true } diff --git a/crates/maps/src/app.rs b/crates/maps/src/app.rs index c955f27..7d0a49a 100644 --- a/crates/maps/src/app.rs +++ b/crates/maps/src/app.rs @@ -265,14 +265,15 @@ impl AppState { } impl eframe::App for AppState { - fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame) { self.tracing.start(); - let mut central_rect = egui::Rect::ZERO; + ui.ctx() + .set_theme(self.options.canvas_settings.theme_preference); - egui::CentralPanel::default().show(ctx, |ui| { - ctx.set_theme(self.options.canvas_settings.theme_preference); + let mut central_rect = egui::Rect::ZERO; + egui::CentralPanel::no_frame().show_inside(ui, |ui| { self.error_modal(ui); self.quit_modal(ui); self.handle_key_shortcuts(ui); @@ -284,26 +285,27 @@ impl eframe::App for AppState { central_rect = self.central_panel(ui); self.info_window(ui); - self.debug_window(ctx, ui); + self.debug_window(ui); }); - self.handle_new_screenshot(ctx, ¢ral_rect); + self.handle_new_screenshot(ui.ctx(), ¢ral_rect); #[cfg(target_arch = "wasm32")] self.consume_wasm_io(); - if ctx.input(|i| i.viewport().close_requested()) + if ui.ctx().input(|i| i.viewport().close_requested()) && self.status.unsaved_changes && !self.data.maps.is_empty() { - ctx.send_viewport_cmd(egui::ViewportCommand::CancelClose); + ui.ctx() + .send_viewport_cmd(egui::ViewportCommand::CancelClose); self.status.quit_modal_active = true; } self.tracing.measure(); } - fn on_exit(&mut self, _gl: Option<&eframe::glow::Context>) { + fn on_exit(&mut self) { if !self.options.persistence.autosave { return; } diff --git a/crates/maps/src/app_impl/canvas_settings.rs b/crates/maps/src/app_impl/canvas_settings.rs index c6037c9..dab0287 100644 --- a/crates/maps/src/app_impl/canvas_settings.rs +++ b/crates/maps/src/app_impl/canvas_settings.rs @@ -13,7 +13,7 @@ const fn default_stack_scale_factor() -> f32 { #[derive(Debug, Serialize, Deserialize)] pub struct CanvasOptions { - pub background_color: egui::Color32, + pub background_color: Option, #[serde(default)] pub theme_preference: egui::ThemePreference, #[serde(skip, default = "default_stack_scale_factor")] @@ -23,13 +23,20 @@ pub struct CanvasOptions { impl Default for CanvasOptions { fn default() -> Self { Self { - background_color: egui::Visuals::default().faint_bg_color, + background_color: None, theme_preference: egui::ThemePreference::default(), stack_scale_factor: MIN_STACK_SCALE, } } } +impl CanvasOptions { + pub fn background_color_or_default(&self, ctx: &egui::Context) -> egui::Color32 { + self.background_color + .unwrap_or_else(|| ctx.global_style().visuals.window_fill) + } +} + impl AppState { pub(crate) fn canvas_settings(&mut self, ui: &mut egui::Ui) { section_heading(ui, "Canvas", &mut self.options.collapsed.canvas_settings); @@ -48,7 +55,17 @@ impl AppState { .radio_buttons(ui); ui.end_row(); ui.label("Background color"); - ui.color_edit_button_srgba(&mut self.options.canvas_settings.background_color); + if let Some(color) = &mut self.options.canvas_settings.background_color { + ui.color_edit_button_srgba(color); + } else { + if ui.button("Customize").clicked() { + self.options.canvas_settings.background_color = Some( + self.options + .canvas_settings + .background_color_or_default(ui.ctx()), + ); + } + } if self.options.view_mode == ViewMode::Stacked { ui.end_row(); diff --git a/crates/maps/src/app_impl/central_panel.rs b/crates/maps/src/app_impl/central_panel.rs index eb394d7..04ec50b 100644 --- a/crates/maps/src/app_impl/central_panel.rs +++ b/crates/maps/src/app_impl/central_panel.rs @@ -205,7 +205,11 @@ impl AppState { .with_texture_crop_threshold(0); // Always fill the lens window with a background rectangle. // Ensure that the lens uses the same background color as the main grid canvas. - mini_grid.draw_background(self.options.canvas_settings.background_color); + mini_grid.draw_background( + self.options + .canvas_settings + .background_color_or_default(ui.ctx()), + ); // Only show actual data if the center is set (can be None when hover lens loses focus). if center_pos.is_some() { mini_grid.show_maps(ui, &mut self.data.maps, options, &self.data.draw_order); @@ -308,8 +312,14 @@ impl AppState { let mut viewport_rect = egui::Rect::ZERO; egui::CentralPanel::default() - .frame(egui::Frame::default().fill(self.options.canvas_settings.background_color)) - .show(ui.ctx(), |ui| { + .frame( + egui::Frame::default().fill( + self.options + .canvas_settings + .background_color_or_default(ui.ctx()), + ), + ) + .show_inside(ui, |ui| { viewport_rect = ui.clip_rect(); if self.data.maps.is_empty() { diff --git a/crates/maps/src/app_impl/debug_window.rs b/crates/maps/src/app_impl/debug_window.rs index 4039d76..6a7216f 100644 --- a/crates/maps/src/app_impl/debug_window.rs +++ b/crates/maps/src/app_impl/debug_window.rs @@ -3,7 +3,7 @@ use eframe::egui; use crate::app::AppState; impl AppState { - pub(crate) fn debug_window(&mut self, ctx: &egui::Context, ui: &mut egui::Ui) { + pub(crate) fn debug_window(&mut self, ui: &mut egui::Ui) { if !self.status.debug_window_active { return; } @@ -11,6 +11,7 @@ impl AppState { .open(&mut self.status.debug_window_active) .frame(egui::Frame::canvas(ui.style()).multiply_with_opacity(0.75)) .show(ui.ctx(), |ui| { + let ctx = ui.ctx().clone(); egui::ScrollArea::both().show(ui, |ui| { ui.collapsing("Settings", |ui| { ctx.settings_ui(ui); diff --git a/crates/maps/src/app_impl/file_dialog_builder.rs b/crates/maps/src/app_impl/file_dialog_builder.rs index 285ef74..336e26c 100644 --- a/crates/maps/src/app_impl/file_dialog_builder.rs +++ b/crates/maps/src/app_impl/file_dialog_builder.rs @@ -1,9 +1,9 @@ //! Simple builders for creating file dialogs with some defaults used by this crate. -use std::{env::current_dir, path::PathBuf, sync::Arc}; +use std::{env::current_dir, path::Path, path::PathBuf}; use eframe::egui; -use egui_file_dialog::FileDialog; +use egui_file_dialog::{FileDialog, Filter}; /// Creates a file dialog for YAML files. pub fn yaml(initial_dir: Option<&PathBuf>) -> FileDialog { @@ -49,7 +49,7 @@ impl FileDialogBuilder { .dialog .add_file_filter( name, - Arc::new(move |path| { + Filter::new(move |path: &Path| { suffixes_vec.iter().any(|suffix| { path.extension() .unwrap_or_default() diff --git a/crates/maps/src/app_impl/footer_panel.rs b/crates/maps/src/app_impl/footer_panel.rs index 65de39b..05a234f 100644 --- a/crates/maps/src/app_impl/footer_panel.rs +++ b/crates/maps/src/app_impl/footer_panel.rs @@ -87,16 +87,13 @@ impl AppState { } pub(crate) fn footer_panel(&mut self, ui: &mut egui::Ui) { - egui::TopBottomPanel::new(egui::containers::panel::TopBottomSide::Bottom, "footer").show( - ui.ctx(), - |ui| { - ui.horizontal(|ui| { - // Hide non-essential things if the available width is too narrow. - let narrow = ui.available_width() < 750.; - self.footer_left(ui, narrow); - self.footer_right(ui, narrow); - }); - }, - ); + egui::Panel::bottom("footer").show_inside(ui, |ui| { + ui.horizontal(|ui| { + // Hide non-essential things if the available width is too narrow. + let narrow = ui.available_width() < 750.; + self.footer_left(ui, narrow); + self.footer_right(ui, narrow); + }); + }); } } diff --git a/crates/maps/src/app_impl/header_panel.rs b/crates/maps/src/app_impl/header_panel.rs index ef006d1..9cf85ed 100644 --- a/crates/maps/src/app_impl/header_panel.rs +++ b/crates/maps/src/app_impl/header_panel.rs @@ -67,31 +67,32 @@ impl AppState { let fullscreen = ui.ctx().input(|i| i.viewport().fullscreen.unwrap_or(false)); - egui::TopBottomPanel::new(egui::containers::panel::TopBottomSide::Top, "header").show( - ui.ctx(), - |ui| { - ui.horizontal(|ui| { - ui.with_layout(egui::Layout::left_to_right(egui::Align::TOP), |ui| { - if !fullscreen && self.options.custom_titlebar() { - ui.add_space(HEADER_PANEL_INDENT); - } - add_toggle_button(ui, "☰", "Show Menu", &mut self.options.menu_visible); - ui.add_space(ICON_SIZE); + egui::Panel::top("header").show_inside(ui, |ui| { + ui.horizontal(|ui| { + ui.with_layout(egui::Layout::left_to_right(egui::Align::TOP), |ui| { + if !fullscreen && self.options.custom_titlebar() { + ui.add_space(HEADER_PANEL_INDENT); + } + add_toggle_button(ui, "☰", "Show Menu", &mut self.options.menu_visible); + ui.add_space(ICON_SIZE); + ui.add_enabled_ui(!self.data.maps.is_empty(), |ui| { self.tool_buttons(ui); }); + }); - ui.with_layout(egui::Layout::right_to_left(egui::Align::TOP), |ui| { - add_toggle_button( - ui, - "⚙", - "Show app options.", - &mut self.options.settings_visible, - ); - ui.add_space(ICON_SIZE); + ui.with_layout(egui::Layout::right_to_left(egui::Align::TOP), |ui| { + add_toggle_button( + ui, + "⚙", + "Show app options.", + &mut self.options.settings_visible, + ); + ui.add_space(ICON_SIZE); + ui.add_enabled_ui(!self.data.maps.is_empty(), |ui| { self.view_buttons(ui); }); }); - }, - ); + }); + }); } } diff --git a/crates/maps/src/app_impl/info_window.rs b/crates/maps/src/app_impl/info_window.rs index 2fceb90..406ba62 100644 --- a/crates/maps/src/app_impl/info_window.rs +++ b/crates/maps/src/app_impl/info_window.rs @@ -109,7 +109,7 @@ impl AppState { egui::Window::new("Info") .open(&mut self.options.help_visible) .pivot(egui::Align2::CENTER_CENTER) - .default_pos(ui.ctx().used_rect().center()) + .default_pos(ui.ctx().globally_used_rect().center()) .fixed_size(egui::Vec2::splat(INFO_WINDOW_WIDTH)) .collapsible(false) .show(ui.ctx(), |ui| { diff --git a/crates/maps/src/app_impl/keys.rs b/crates/maps/src/app_impl/keys.rs index 1cb33fc..13d3aa1 100644 --- a/crates/maps/src/app_impl/keys.rs +++ b/crates/maps/src/app_impl/keys.rs @@ -7,12 +7,12 @@ use crate::movable::{DragDirection, Draggable, MovableAmounts, Rotatable}; impl AppState { fn dialogs_open(&self) -> bool { - self.load_meta_file_dialog.state() == DialogState::Open - || self.load_map_pose_file_dialog.state() == DialogState::Open - || self.save_map_pose_file_dialog.state() == DialogState::Open - || self.load_session_file_dialog.state() == DialogState::Open - || self.save_session_file_dialog.state() == DialogState::Open - || self.save_screenshot_dialog.state() == DialogState::Open + *self.load_meta_file_dialog.state() == DialogState::Open + || *self.load_map_pose_file_dialog.state() == DialogState::Open + || *self.save_map_pose_file_dialog.state() == DialogState::Open + || *self.load_session_file_dialog.state() == DialogState::Open + || *self.save_session_file_dialog.state() == DialogState::Open + || *self.save_screenshot_dialog.state() == DialogState::Open || self.status.quit_modal_active || !self.status.error.is_empty() } diff --git a/crates/maps/src/app_impl/load_delete.rs b/crates/maps/src/app_impl/load_delete.rs index eb8c6b2..d2b1e2e 100644 --- a/crates/maps/src/app_impl/load_delete.rs +++ b/crates/maps/src/app_impl/load_delete.rs @@ -305,10 +305,17 @@ impl AppState { } else { "💾 Save Session" }; + + let disabled_hover_text = if cfg!(target_arch = "wasm32") { + "Only supported in native builds." + } else { + "No maps to save." + }; + if ui .button(text.to_owned()) .on_hover_text("Save the current session to a file.") - .on_disabled_hover_text("Only supported in native builds.") + .on_disabled_hover_text(disabled_hover_text) .clicked() { self.save_session_file_dialog.save_file(); diff --git a/crates/maps/src/app_impl/menu_panel.rs b/crates/maps/src/app_impl/menu_panel.rs index a1a896e..9e30f26 100644 --- a/crates/maps/src/app_impl/menu_panel.rs +++ b/crates/maps/src/app_impl/menu_panel.rs @@ -43,7 +43,7 @@ impl AppState { if !self.options.menu_visible { return; } - egui::SidePanel::left("menu").show(ui.ctx(), |ui| { + egui::Panel::left("menu").show_inside(ui, |ui| { egui::ScrollArea::vertical().show(ui, |ui| { self.menu_content(ui); }); @@ -140,21 +140,23 @@ impl AppState { ui.horizontal(|ui| { self.load_meta_button(ui); ui.separator(); - #[cfg(not(target_arch = "wasm32"))] - self.load_session_button(ui); - #[cfg(target_arch = "wasm32")] - ui.add_enabled_ui(false, |ui| { + ui.add_enabled_ui(cfg!(not(target_arch = "wasm32")), |ui| { self.load_session_button(ui); }); - #[cfg(not(target_arch = "wasm32"))] - self.save_session_button(ui, false); - #[cfg(target_arch = "wasm32")] - ui.add_enabled_ui(false, |ui| { - self.save_session_button(ui, false); - }); + ui.add_enabled_ui( + cfg!(not(target_arch = "wasm32")) && !self.data.maps.is_empty(), + |ui| { + self.save_session_button(ui, false); + }, + ); }); ui.separator(); + if self.data.maps.is_empty() { + ui.label(egui::RichText::new("No maps loaded.").weak().italics()); + return; + } + // Allow to hide list to resize panel smaller, e.g. with long paths. egui::CollapsingHeader::new("List") .default_open(true) @@ -179,10 +181,6 @@ impl AppState { } }); - if self.data.maps.is_empty() { - return; - } - ui.separator(); ui.add_space(SPACE); ui.heading("Pose"); diff --git a/crates/maps/src/app_impl/settings_panel.rs b/crates/maps/src/app_impl/settings_panel.rs index ca7c94a..70e00bf 100644 --- a/crates/maps/src/app_impl/settings_panel.rs +++ b/crates/maps/src/app_impl/settings_panel.rs @@ -7,7 +7,7 @@ impl AppState { if !self.options.settings_visible { return; } - egui::SidePanel::right("settings").show(ui.ctx(), |ui| { + egui::Panel::right("settings").show_inside(ui, |ui| { egui::ScrollArea::vertical().show(ui, |ui| { egui::Grid::new("settings_grid") .num_columns(2) @@ -27,7 +27,10 @@ impl AppState { ui.end_row(); } - if self.options.view_mode != ViewMode::Aligned { + if !matches!( + self.options.view_mode, + ViewMode::Aligned | ViewMode::LoadScreen + ) { self.lens_settings(ui); ui.end_row(); ui.end_row(); diff --git a/crates/maps/src/lens.rs b/crates/maps/src/lens.rs index b8ba430..32ae11f 100644 --- a/crates/maps/src/lens.rs +++ b/crates/maps/src/lens.rs @@ -164,8 +164,11 @@ impl<'a> Lens<'a> { // Ensure that the lens has the same background color as the canvas. // (e.g. if color_to_alpha is used) - ui.painter() - .rect_filled(overlay_rect, 0., canvas_settings.background_color); + ui.painter().rect_filled( + overlay_rect, + 0., + canvas_settings.background_color_or_default(ui.ctx()), + ); // TODO: use TextureRequest to load the overlay image. ui.put( overlay_rect, @@ -191,8 +194,8 @@ impl<'a> Lens<'a> { fn bounce_pos(ui: &egui::Ui, pointer_pos: egui::Pos2, overlay_size: egui::Vec2) -> egui::Pos2 { let offset = overlay_size / 2. + egui::vec2(10., 10.); let window_uv = egui::vec2( - pointer_pos.x / ui.ctx().screen_rect().width(), - pointer_pos.y / ui.ctx().screen_rect().height(), + pointer_pos.x / ui.ctx().content_rect().width(), + pointer_pos.y / ui.ctx().content_rect().height(), ); if window_uv.x < 0.5 && window_uv.y < 0.5 { diff --git a/crates/maps/tests/fixed_lens_background_kittest.rs b/crates/maps/tests/fixed_lens_background_kittest.rs index ebd95fd..0197ab4 100644 --- a/crates/maps/tests/fixed_lens_background_kittest.rs +++ b/crates/maps/tests/fixed_lens_background_kittest.rs @@ -13,7 +13,7 @@ fn main() { vec![_load_meta_with_fake_path(TEST_META_0)], AppOptions { canvas_settings: CanvasOptions { - background_color: egui::Color32::from_rgba_premultiplied(0, 50, 60, 100), + background_color: Some(egui::Color32::from_rgba_premultiplied(0, 50, 60, 100)), ..Default::default() }, tint_settings: TintOptions { diff --git a/crates/maps_io_ros/Cargo.toml b/crates/maps_io_ros/Cargo.toml index 2137074..114f98a 100644 --- a/crates/maps_io_ros/Cargo.toml +++ b/crates/maps_io_ros/Cargo.toml @@ -12,7 +12,7 @@ rust-version = "1.88.0" readme = "README.md" [dependencies] -emath = { version = "0.32.1", features = ["serde"] } +emath = { version = "0.34.0", features = ["serde"] } image = { workspace = true } imageproc = { workspace = true } lazy_static = { workspace = true } diff --git a/crates/maps_rendering/Cargo.toml b/crates/maps_rendering/Cargo.toml index 0096fd5..6af45c2 100644 --- a/crates/maps_rendering/Cargo.toml +++ b/crates/maps_rendering/Cargo.toml @@ -12,7 +12,7 @@ rust-version = "1.88.0" readme = "README.md" [dependencies] -eframe = {version = "0.32.1", features = ["wgpu"]} +eframe = {version = "0.34.0", features = ["wgpu"]} fast_image_resize = { version = "5.3.0", features = ["image"] } image = { workspace = true } imageproc = { workspace = true } From 6840825d423662c62bd16ab7704876e82f9d8e9e Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Sun, 29 Mar 2026 16:40:48 +0200 Subject: [PATCH 02/13] make test work again --- crates/maps/tests/value_colormap_kittest.rs | 7 ++++--- crates/maps/tests/value_interpretation_kittest.rs | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/crates/maps/tests/value_colormap_kittest.rs b/crates/maps/tests/value_colormap_kittest.rs index e3128ec..b0675cf 100644 --- a/crates/maps/tests/value_colormap_kittest.rs +++ b/crates/maps/tests/value_colormap_kittest.rs @@ -10,12 +10,13 @@ use maps::app::{AppOptions, AppState, ColorMap, ViewMode}; const SESSION: &str = "tests/sessions/value_interpretations_map_server.toml"; #[test] -fn main() { - env_logger::init(); - +fn rviz_map_colormap() { // Snapshot with ROS map_server value interpretation + RViz "Map" colormap. run("value_colormap_rviz_map", ColorMap::RvizMap); +} +#[test] +fn rviz_costmap_colormap() { // Snapshot with map_server value interpretation + RViz "Costmap" colormap. run("value_colormap_rviz_costmap", ColorMap::RvizCostmap); } diff --git a/crates/maps/tests/value_interpretation_kittest.rs b/crates/maps/tests/value_interpretation_kittest.rs index 311067b..9b547f4 100644 --- a/crates/maps/tests/value_interpretation_kittest.rs +++ b/crates/maps/tests/value_interpretation_kittest.rs @@ -11,12 +11,13 @@ const WIKI_SESSION: &str = "tests/sessions/value_interpretations_ros1_wiki.toml" const MAP_SERVER_SESSION: &str = "tests/sessions/value_interpretations_map_server.toml"; #[test] -fn main() { - env_logger::init(); - +fn wiki_value_interpretation() { // Snapshot with ROS Wiki value interpretation. run("value_interpretations_wiki", WIKI_SESSION); +} +#[test] +fn map_server_value_interpretation() { // Snapshot with map_server implementation quirks. run("value_interpretations_map_server", MAP_SERVER_SESSION); } From 8c4f2f790df6be952e5fd5d6f44cab5ba9a1346d Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Sun, 29 Mar 2026 23:20:08 +0200 Subject: [PATCH 03/13] nicer alignment of trash bins to the right side + remove useless scroll bars --- crates/maps/src/app_impl/menu_panel.rs | 83 +++++++++++++++----------- crates/maps/src/app_impl/pose_edit.rs | 6 +- 2 files changed, 48 insertions(+), 41 deletions(-) diff --git a/crates/maps/src/app_impl/menu_panel.rs b/crates/maps/src/app_impl/menu_panel.rs index 9e30f26..5cd5adf 100644 --- a/crates/maps/src/app_impl/menu_panel.rs +++ b/crates/maps/src/app_impl/menu_panel.rs @@ -71,46 +71,60 @@ impl AppState { } } - fn maps_list(&mut self, ui: &mut egui::Ui) { - let mut to_delete: Vec = Vec::new(); - egui::Grid::new("maps_list") - .num_columns(3) - .striped(true) - .show(ui, |ui| { - for name in self.data.draw_order.keys() { - let Some(map) = self.data.maps.get_mut(name) else { - error!("Unknown draw order key: {name}"); - continue; - }; + fn map_entry(&mut self, ui: &mut egui::Ui, name: &str, to_delete: &mut Vec) { + let Some(map) = self.data.maps.get_mut(name) else { + error!("Attempted to show map entry for unknown map {name}."); + return; + }; + let warn_origin_rotation = map.meta.origin_theta.angle() != 0.; - if ui - .checkbox( - &mut map.visible, - display_path(name, self.options.display.show_full_paths), - ) - .on_hover_ui(|ui| { - map_tooltip(ui, name, map); - }) - .changed() - { - self.tile_manager.set_visible(name, map.visible); - } - if ui.button("🗑").on_hover_text("Delete Map").clicked() { - to_delete.push(name.clone()); - } - if map.meta.origin_theta.angle() != 0. { - ui.label( + egui::Sides::new().show( + ui, + |ui_left| { + if ui_left + .checkbox( + &mut map.visible, + display_path(name, self.options.display.show_full_paths), + ) + .on_hover_ui(|ui_left: &mut egui::Ui| { + map_tooltip(ui_left, name, map); + }) + .changed() + { + self.tile_manager.set_visible(name, map.visible); + } + }, + |ui_right| { + if ui_right.button("🗑").on_hover_text("Delete Map").clicked() { + to_delete.push(name.to_string()); + } + if warn_origin_rotation { + ui_right + .label( egui::RichText::new("⚠") .strong() .color(egui::Color32::ORANGE), ) .on_hover_text( "This map has a non-zero origin rotation component in its metadata.\n\ - maps uses it, but it's not supported by most ROS tools.\n\n\ - It's recommended to save alignment transformations separately,\n\ - e.g. using the Pose editor here.", + maps uses it, but it's not supported by most ROS tools.\n\n\ + It's recommended to save alignment transformations separately,\n\ + e.g. using the Pose editor here.", ); - } + } + }, + ); + } + + fn maps_list(&mut self, ui: &mut egui::Ui) { + let mut to_delete: Vec = Vec::new(); + let draw_order_keys = self.data.draw_order.keys().clone(); + egui::Grid::new("maps_list") + .num_columns(1) + .striped(true) + .show(ui, |ui| { + for name in &draw_order_keys { + self.map_entry(ui, name, &mut to_delete); ui.end_row(); } }); @@ -189,10 +203,7 @@ impl AppState { if !self.options.pose_edit.selected_map.is_empty() && self.data.maps.len() > 1 { ui.separator(); ui.add_space(SPACE); - egui::ScrollArea::horizontal().show(ui, |ui| { - // In scroll area to not take too much space for long paths. - self.apply_pose_to_other_maps(ui); - }); + self.apply_pose_to_other_maps(ui); } } } diff --git a/crates/maps/src/app_impl/pose_edit.rs b/crates/maps/src/app_impl/pose_edit.rs index 4198f31..5c72b9a 100644 --- a/crates/maps/src/app_impl/pose_edit.rs +++ b/crates/maps/src/app_impl/pose_edit.rs @@ -47,11 +47,7 @@ impl AppState { } pub(crate) fn pose_edit(&mut self, ui: &mut egui::Ui) { - // ComboBox is in a horizontal scroll to not take too much space for long paths. - // Waiting for: https://github.com/emilk/egui/discussions/1829 - egui::ScrollArea::horizontal().show(ui, |ui| { - self.pose_edit_combo_box(ui); - }); + self.pose_edit_combo_box(ui); let map_name = self.options.pose_edit.selected_map.clone(); let Some(map_pose) = self.data.maps.get_mut(&map_name).map(|m| &mut m.pose) else { From 779a7eff138f28a38dfb7881a28d174fecbd48e5 Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Mon, 30 Mar 2026 00:27:20 +0200 Subject: [PATCH 04/13] settings panel not resizable (it anyway doesn't resize) --- crates/maps/src/app_impl/settings_panel.rs | 64 +++++++++++----------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/crates/maps/src/app_impl/settings_panel.rs b/crates/maps/src/app_impl/settings_panel.rs index 70e00bf..8eeb0c4 100644 --- a/crates/maps/src/app_impl/settings_panel.rs +++ b/crates/maps/src/app_impl/settings_panel.rs @@ -7,43 +7,45 @@ impl AppState { if !self.options.settings_visible { return; } - egui::Panel::right("settings").show_inside(ui, |ui| { - egui::ScrollArea::vertical().show(ui, |ui| { - egui::Grid::new("settings_grid") - .num_columns(2) - .striped(false) - .show(ui, |ui| { - self.app_settings(ui); - ui.end_row(); - ui.end_row(); - - self.canvas_settings(ui); - ui.end_row(); - ui.end_row(); - - if !self.data.maps.is_empty() { - self.tint_settings(ui); + egui::Panel::right("settings") + .resizable(false) + .show_inside(ui, |ui| { + egui::ScrollArea::vertical().show(ui, |ui| { + egui::Grid::new("settings_grid") + .num_columns(2) + .striped(false) + .show(ui, |ui| { + self.app_settings(ui); ui.end_row(); ui.end_row(); - } - if !matches!( - self.options.view_mode, - ViewMode::Aligned | ViewMode::LoadScreen - ) { - self.lens_settings(ui); + self.canvas_settings(ui); ui.end_row(); ui.end_row(); - } - if self.options.view_mode == ViewMode::Aligned { - self.grid_settings(ui); - ui.end_row(); - ui.end_row(); - self.tool_settings(ui); - } - }); + if !self.data.maps.is_empty() { + self.tint_settings(ui); + ui.end_row(); + ui.end_row(); + } + + if !matches!( + self.options.view_mode, + ViewMode::Aligned | ViewMode::LoadScreen + ) { + self.lens_settings(ui); + ui.end_row(); + ui.end_row(); + } + + if self.options.view_mode == ViewMode::Aligned { + self.grid_settings(ui); + ui.end_row(); + ui.end_row(); + self.tool_settings(ui); + } + }); + }); }); - }); } } From 6eb197a96e00abbfc733e3930525927bbe407fb2 Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Mon, 30 Mar 2026 00:39:34 +0200 Subject: [PATCH 05/13] fix centering of info window --- crates/maps/src/app_impl/info_window.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/maps/src/app_impl/info_window.rs b/crates/maps/src/app_impl/info_window.rs index 406ba62..b4c3e8c 100644 --- a/crates/maps/src/app_impl/info_window.rs +++ b/crates/maps/src/app_impl/info_window.rs @@ -109,7 +109,7 @@ impl AppState { egui::Window::new("Info") .open(&mut self.options.help_visible) .pivot(egui::Align2::CENTER_CENTER) - .default_pos(ui.ctx().globally_used_rect().center()) + .default_pos(ui.ctx().content_rect().center()) .fixed_size(egui::Vec2::splat(INFO_WINDOW_WIDTH)) .collapsible(false) .show(ui.ctx(), |ui| { From e02c29cd758f905c003edb65c88fa4ee90c50d7b Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Mon, 30 Mar 2026 01:24:40 +0200 Subject: [PATCH 06/13] new snapshots (tmp) --- crates/maps/tests/snapshots/aligned_view.png | 4 ++-- crates/maps/tests/snapshots/dense_grid_precision.png | 4 ++-- crates/maps/tests/snapshots/empty_start.png | 4 ++-- crates/maps/tests/snapshots/fixed_lens.png | 4 ++-- crates/maps/tests/snapshots/fixed_lens_background.png | 4 ++-- crates/maps/tests/snapshots/google_cartographer_example.png | 4 ++-- crates/maps/tests/snapshots/measurement.png | 4 ++-- crates/maps/tests/snapshots/nav2_example.png | 4 ++-- crates/maps/tests/snapshots/pixel_test.png | 4 ++-- crates/maps/tests/snapshots/reload_session_config.png | 4 ++-- crates/maps/tests/snapshots/stacked_view.png | 4 ++-- crates/maps/tests/snapshots/tiles_view.png | 4 ++-- crates/maps/tests/snapshots/value_colormap_rviz_costmap.png | 4 ++-- crates/maps/tests/snapshots/value_colormap_rviz_map.png | 4 ++-- .../maps/tests/snapshots/value_interpretations_map_server.png | 4 ++-- crates/maps/tests/snapshots/value_interpretations_wiki.png | 4 ++-- 16 files changed, 32 insertions(+), 32 deletions(-) diff --git a/crates/maps/tests/snapshots/aligned_view.png b/crates/maps/tests/snapshots/aligned_view.png index 7bb6190..5ba0c4f 100644 --- a/crates/maps/tests/snapshots/aligned_view.png +++ b/crates/maps/tests/snapshots/aligned_view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdf8174a3ce3ca0c7bd365d3df7f74199e390507d57bc5693d86d6bf92ebe1d8 -size 73643 +oid sha256:b0dd4b72ceda4a98c544cf8d9ccf85e5ddc49333a4710cc11a7cb636a65cc2ba +size 132806 diff --git a/crates/maps/tests/snapshots/dense_grid_precision.png b/crates/maps/tests/snapshots/dense_grid_precision.png index cf1b7a7..cbf46a8 100644 --- a/crates/maps/tests/snapshots/dense_grid_precision.png +++ b/crates/maps/tests/snapshots/dense_grid_precision.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1792140b61e14d143336de1eca29036ab3e5c3502ca85efb39cacf60ca862ed -size 68824 +oid sha256:9f844243777d35bd50890e9ea7d23e8fc99549d500ec9d636836310bf49a2d5f +size 69113 diff --git a/crates/maps/tests/snapshots/empty_start.png b/crates/maps/tests/snapshots/empty_start.png index ef24eb4..1dd895e 100644 --- a/crates/maps/tests/snapshots/empty_start.png +++ b/crates/maps/tests/snapshots/empty_start.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58d50a7080aef5796746415d536cd719e7512083880cf92c8f0aaa571d341451 -size 27177 +oid sha256:52048d6a3bcff511c010209981fa2a708480e4672b7bc1b3e719268e2ae84d2c +size 26721 diff --git a/crates/maps/tests/snapshots/fixed_lens.png b/crates/maps/tests/snapshots/fixed_lens.png index c13ccf5..3c4d711 100644 --- a/crates/maps/tests/snapshots/fixed_lens.png +++ b/crates/maps/tests/snapshots/fixed_lens.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6406fc857ab286f3862c2de9c90e81ab27681c3cbf166772c1afccfa1e99da64 -size 123313 +oid sha256:ae8a510c37766a876fe1236fecf78110eb9b54e7e40dbb375d9015e7069eb7c6 +size 129312 diff --git a/crates/maps/tests/snapshots/fixed_lens_background.png b/crates/maps/tests/snapshots/fixed_lens_background.png index a16d37f..eeb0a7a 100644 --- a/crates/maps/tests/snapshots/fixed_lens_background.png +++ b/crates/maps/tests/snapshots/fixed_lens_background.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f29b54bbca4e539881c91ac10622aff6390f7f9a347fdf4fa04942ef859e4d1a -size 85023 +oid sha256:1115d145be78840f1c06c46f544e3486e93417c62f65ba2500f161887d392026 +size 93057 diff --git a/crates/maps/tests/snapshots/google_cartographer_example.png b/crates/maps/tests/snapshots/google_cartographer_example.png index b8c3619..8de2abb 100644 --- a/crates/maps/tests/snapshots/google_cartographer_example.png +++ b/crates/maps/tests/snapshots/google_cartographer_example.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1426f090e13c5ae41577995ea69b38b241151d8cbc3938f0c942067943d0df8b -size 276473 +oid sha256:48c02818559abee48af6c97fd5b615d0ab0c2844d040d17d48cc88f1279368d0 +size 278305 diff --git a/crates/maps/tests/snapshots/measurement.png b/crates/maps/tests/snapshots/measurement.png index 55a8483..103efc1 100644 --- a/crates/maps/tests/snapshots/measurement.png +++ b/crates/maps/tests/snapshots/measurement.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38fdefc4b0efb3726612c4ded2ac8e15afbe2d9e781bf627eb7aa568b675f912 -size 88323 +oid sha256:eeb441bd57a9e6ecdd1ce26feac0025217f09e1396505e1eb53dcc3726d28e5b +size 147342 diff --git a/crates/maps/tests/snapshots/nav2_example.png b/crates/maps/tests/snapshots/nav2_example.png index 13052dc..165c5ef 100644 --- a/crates/maps/tests/snapshots/nav2_example.png +++ b/crates/maps/tests/snapshots/nav2_example.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3027729ec54d8c35e1bce428707aff1164a4cd19218aaced4eddc06c611efebe -size 84730 +oid sha256:5c91d7a506e81e789d6219556073bbf6aad6f26102c1f8c5a514182d0adce853 +size 85156 diff --git a/crates/maps/tests/snapshots/pixel_test.png b/crates/maps/tests/snapshots/pixel_test.png index f3956e0..1bb7033 100644 --- a/crates/maps/tests/snapshots/pixel_test.png +++ b/crates/maps/tests/snapshots/pixel_test.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ec4cc1a0e029e51da14a48d6f6d744f189ce66479f855bff7d05a5ccb7ec650 -size 36775 +oid sha256:d62245b2535fe5d35ae2c256a19e247c0640da11c691bf432fdf35379149cd21 +size 204126 diff --git a/crates/maps/tests/snapshots/reload_session_config.png b/crates/maps/tests/snapshots/reload_session_config.png index eb85bb8..8e9ff56 100644 --- a/crates/maps/tests/snapshots/reload_session_config.png +++ b/crates/maps/tests/snapshots/reload_session_config.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:403e89e4b14069f77e034608c45a6b821563195b718c930f48c95f9814a4f8ea -size 261859 +oid sha256:0263396a2f35cb9f9263845d295948292d4d0e31a0ee991f8fe4572a2d6171e7 +size 291141 diff --git a/crates/maps/tests/snapshots/stacked_view.png b/crates/maps/tests/snapshots/stacked_view.png index e057f70..715d37c 100644 --- a/crates/maps/tests/snapshots/stacked_view.png +++ b/crates/maps/tests/snapshots/stacked_view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:afbe7d8e9de2f8d35bdf1ce037f153edf8640b1d799317030af786ed4ceb4c48 -size 110133 +oid sha256:863a128fb20d89e016322cab12336192c75455f814e90cd7d6db2406dad8dc99 +size 110201 diff --git a/crates/maps/tests/snapshots/tiles_view.png b/crates/maps/tests/snapshots/tiles_view.png index 96a65d3..4d01a92 100644 --- a/crates/maps/tests/snapshots/tiles_view.png +++ b/crates/maps/tests/snapshots/tiles_view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26e9f264e02d8bbe38c013d227fcaa87102ca74b01215a3b6212ca48053e35d2 -size 82577 +oid sha256:20696f789ca060846da33306d5431a5d5a92d0f21dca67b5e9cead5d3236dc82 +size 82228 diff --git a/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png b/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png index 1403361..601d063 100644 --- a/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png +++ b/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77f91072460a3d55272e22ac3d852d3fba47f276eb5226ff241ffd4c8a90fcf8 -size 75644 +oid sha256:0099b043f533861c927b8d06ba45c4907f08af07dbeb1d605ce65906ab73532f +size 75648 diff --git a/crates/maps/tests/snapshots/value_colormap_rviz_map.png b/crates/maps/tests/snapshots/value_colormap_rviz_map.png index dc21633..8f696cc 100644 --- a/crates/maps/tests/snapshots/value_colormap_rviz_map.png +++ b/crates/maps/tests/snapshots/value_colormap_rviz_map.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc99513993ad7895f0f68e0455a0056351a25a1043f674ea3b7c3512698b2fa4 -size 79313 +oid sha256:46506c719e299bfe43ec0418c8917ba7510e9cf45c750f4784a5ab50f6f0acaa +size 79445 diff --git a/crates/maps/tests/snapshots/value_interpretations_map_server.png b/crates/maps/tests/snapshots/value_interpretations_map_server.png index d57357a..6d985a6 100644 --- a/crates/maps/tests/snapshots/value_interpretations_map_server.png +++ b/crates/maps/tests/snapshots/value_interpretations_map_server.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8356b4ed151e56ed5d1d9ea69a407741b4af69495e2ea9a949146f8df9449e1e -size 81161 +oid sha256:54aab6637f123b336163a5495ff571a0559f5b2c62d23873e28ae8ffaa9fb996 +size 81386 diff --git a/crates/maps/tests/snapshots/value_interpretations_wiki.png b/crates/maps/tests/snapshots/value_interpretations_wiki.png index 830acd7..1a52a3f 100644 --- a/crates/maps/tests/snapshots/value_interpretations_wiki.png +++ b/crates/maps/tests/snapshots/value_interpretations_wiki.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a9e82e32d527d4bfc39e5f2d9f2c718870c64a74eaceeb34792ff15d6d16f6f -size 83566 +oid sha256:bd440a3cd00371d1e096d31714c9b05122b8acdf0cdc7dd2320c3d966c3e8ce4 +size 83803 From 54908bdad6a640015d7366b13943bf574ce16646 Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Mon, 30 Mar 2026 01:24:55 +0200 Subject: [PATCH 07/13] new snapshot test with panels and light mode --- crates/maps/tests/panels_visible_kittest.rs | 57 +++++++++++++++++++ .../maps/tests/snapshots/panels_visible.png | 3 + 2 files changed, 60 insertions(+) create mode 100644 crates/maps/tests/panels_visible_kittest.rs create mode 100644 crates/maps/tests/snapshots/panels_visible.png diff --git a/crates/maps/tests/panels_visible_kittest.rs b/crates/maps/tests/panels_visible_kittest.rs new file mode 100644 index 0000000..efe0f9c --- /dev/null +++ b/crates/maps/tests/panels_visible_kittest.rs @@ -0,0 +1,57 @@ +mod kittest_common; + +use std::path::PathBuf; + +use eframe::egui; + +use kittest_common::*; +use maps::app::{AppOptions, AppState, CanvasOptions, GridOptions, PoseEditOptions}; + +const DATA_DIR: &str = "data/google_cartographer_example/"; +const SESSION_FILENAME: &str = "session.toml"; + +#[test] +fn main() { + env_logger::init(); + + // File paths in session file are relative to the data directory. + let start_dir = std::env::current_dir().expect("Failed to get current directory"); + std::env::set_current_dir(DATA_DIR).expect("Failed to go to data directory"); + + let mut app_state = AppState::init( + Vec::new(), + AppOptions { + menu_visible: true, + settings_visible: true, + canvas_settings: CanvasOptions { + theme_preference: egui::ThemePreference::Light, + ..Default::default() + }, + pose_edit: PoseEditOptions { + selected_map: "map_1.yaml".to_string(), + ..Default::default() + }, + grid: GridOptions { + scale: 4., + offset: egui::vec2(-300., 100.), + line_spacing_meters: 25., + ..Default::default() + }, + ..Default::default() + }, + ) + .expect("Failed to initialize AppState"); + + app_state + .load_session(&PathBuf::from(SESSION_FILENAME)) + .expect("Failed to load session"); + + // egui_kittest expects us to be in the root directory for saving the snapshot. + std::env::set_current_dir(start_dir).expect("Failed to go back to start directory"); + + snapshot_full_app( + app_state, + "panels_visible", + egui::Vec2::new(1500., 1000.), + ); +} diff --git a/crates/maps/tests/snapshots/panels_visible.png b/crates/maps/tests/snapshots/panels_visible.png new file mode 100644 index 0000000..db6a24a --- /dev/null +++ b/crates/maps/tests/snapshots/panels_visible.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18385abf7691ddd555063fec68ba4987719f0ef9803d64cd3a331bb89a583723 +size 452439 From da18d9fe7c42e29b19bd195172ec5633955566f1 Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Mon, 30 Mar 2026 01:35:03 +0200 Subject: [PATCH 08/13] fmt --- crates/maps/src/app_impl/menu_panel.rs | 6 +++--- crates/maps/tests/panels_visible_kittest.rs | 6 +----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/crates/maps/src/app_impl/menu_panel.rs b/crates/maps/src/app_impl/menu_panel.rs index 5cd5adf..93badbc 100644 --- a/crates/maps/src/app_impl/menu_panel.rs +++ b/crates/maps/src/app_impl/menu_panel.rs @@ -107,9 +107,9 @@ impl AppState { ) .on_hover_text( "This map has a non-zero origin rotation component in its metadata.\n\ - maps uses it, but it's not supported by most ROS tools.\n\n\ - It's recommended to save alignment transformations separately,\n\ - e.g. using the Pose editor here.", + maps uses it, but it's not supported by most ROS tools.\n\n\ + It's recommended to save alignment transformations separately,\n\ + e.g. using the Pose editor here.", ); } }, diff --git a/crates/maps/tests/panels_visible_kittest.rs b/crates/maps/tests/panels_visible_kittest.rs index efe0f9c..693541d 100644 --- a/crates/maps/tests/panels_visible_kittest.rs +++ b/crates/maps/tests/panels_visible_kittest.rs @@ -49,9 +49,5 @@ fn main() { // egui_kittest expects us to be in the root directory for saving the snapshot. std::env::set_current_dir(start_dir).expect("Failed to go back to start directory"); - snapshot_full_app( - app_state, - "panels_visible", - egui::Vec2::new(1500., 1000.), - ); + snapshot_full_app(app_state, "panels_visible", egui::Vec2::new(1500., 1000.)); } From 8d0c3f0ae825c6619c6b9087d16c594202cc8c6b Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Mon, 30 Mar 2026 10:22:31 +0200 Subject: [PATCH 09/13] Better default bg colors --- crates/maps/src/app_impl/canvas_settings.rs | 8 +++++++- crates/maps/tests/snapshots/aligned_view.png | 4 ++-- crates/maps/tests/snapshots/dense_grid_precision.png | 4 ++-- crates/maps/tests/snapshots/empty_start.png | 4 ++-- crates/maps/tests/snapshots/fixed_lens.png | 4 ++-- .../maps/tests/snapshots/google_cartographer_example.png | 4 ++-- crates/maps/tests/snapshots/measurement.png | 4 ++-- crates/maps/tests/snapshots/nav2_example.png | 4 ++-- crates/maps/tests/snapshots/panels_visible.png | 4 ++-- crates/maps/tests/snapshots/pixel_test.png | 4 ++-- crates/maps/tests/snapshots/stacked_view.png | 4 ++-- crates/maps/tests/snapshots/tiles_view.png | 4 ++-- .../maps/tests/snapshots/value_colormap_rviz_costmap.png | 4 ++-- crates/maps/tests/snapshots/value_colormap_rviz_map.png | 4 ++-- .../tests/snapshots/value_interpretations_map_server.png | 4 ++-- .../maps/tests/snapshots/value_interpretations_wiki.png | 4 ++-- 16 files changed, 37 insertions(+), 31 deletions(-) diff --git a/crates/maps/src/app_impl/canvas_settings.rs b/crates/maps/src/app_impl/canvas_settings.rs index dab0287..364f31d 100644 --- a/crates/maps/src/app_impl/canvas_settings.rs +++ b/crates/maps/src/app_impl/canvas_settings.rs @@ -7,6 +7,9 @@ use crate::app_impl::ui_helpers::section_heading; const MIN_STACK_SCALE: f32 = 1.0; const MAX_STACK_SCALE: f32 = 10.0; +const DEFAULT_BG_COLOR_LIGHT: egui::Color32 = egui::Color32::from_rgb(240, 240, 240); +const DEFAULT_BG_COLOR_DARK: egui::Color32 = egui::Color32::from_rgb(30, 30, 30); + const fn default_stack_scale_factor() -> f32 { MIN_STACK_SCALE } @@ -33,7 +36,10 @@ impl Default for CanvasOptions { impl CanvasOptions { pub fn background_color_or_default(&self, ctx: &egui::Context) -> egui::Color32 { self.background_color - .unwrap_or_else(|| ctx.global_style().visuals.window_fill) + .unwrap_or_else(|| match ctx.global_style().visuals.dark_mode { + true => DEFAULT_BG_COLOR_DARK, + false => DEFAULT_BG_COLOR_LIGHT, + }) } } diff --git a/crates/maps/tests/snapshots/aligned_view.png b/crates/maps/tests/snapshots/aligned_view.png index 5ba0c4f..6b0c261 100644 --- a/crates/maps/tests/snapshots/aligned_view.png +++ b/crates/maps/tests/snapshots/aligned_view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b0dd4b72ceda4a98c544cf8d9ccf85e5ddc49333a4710cc11a7cb636a65cc2ba -size 132806 +oid sha256:65061e3582f96cf21e898043ccc92f52c0f534cda646ecbb6d151f9e5b13ef84 +size 132322 diff --git a/crates/maps/tests/snapshots/dense_grid_precision.png b/crates/maps/tests/snapshots/dense_grid_precision.png index cbf46a8..7d81a6b 100644 --- a/crates/maps/tests/snapshots/dense_grid_precision.png +++ b/crates/maps/tests/snapshots/dense_grid_precision.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f844243777d35bd50890e9ea7d23e8fc99549d500ec9d636836310bf49a2d5f -size 69113 +oid sha256:cb75ff08ed6a8db3df50445e535d6f75a3467b157910d864074003e8a7260ee0 +size 69071 diff --git a/crates/maps/tests/snapshots/empty_start.png b/crates/maps/tests/snapshots/empty_start.png index 1dd895e..eac62d3 100644 --- a/crates/maps/tests/snapshots/empty_start.png +++ b/crates/maps/tests/snapshots/empty_start.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52048d6a3bcff511c010209981fa2a708480e4672b7bc1b3e719268e2ae84d2c -size 26721 +oid sha256:0acccd948c94106ed5a5a002e89a75b26bf3fc484ad3f2bc682e0001ed417054 +size 26709 diff --git a/crates/maps/tests/snapshots/fixed_lens.png b/crates/maps/tests/snapshots/fixed_lens.png index 3c4d711..c460dd3 100644 --- a/crates/maps/tests/snapshots/fixed_lens.png +++ b/crates/maps/tests/snapshots/fixed_lens.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae8a510c37766a876fe1236fecf78110eb9b54e7e40dbb375d9015e7069eb7c6 -size 129312 +oid sha256:849d14048f349aa99d3974f23cb18674837ea41b4d037bbe577b6667288e4c6b +size 129074 diff --git a/crates/maps/tests/snapshots/google_cartographer_example.png b/crates/maps/tests/snapshots/google_cartographer_example.png index 8de2abb..a75c524 100644 --- a/crates/maps/tests/snapshots/google_cartographer_example.png +++ b/crates/maps/tests/snapshots/google_cartographer_example.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48c02818559abee48af6c97fd5b615d0ab0c2844d040d17d48cc88f1279368d0 -size 278305 +oid sha256:c771d73a38c2ee8b0f69eca3e2884e8f76dedf10be1e533ec65b881caee865a5 +size 279131 diff --git a/crates/maps/tests/snapshots/measurement.png b/crates/maps/tests/snapshots/measurement.png index 103efc1..44bbd65 100644 --- a/crates/maps/tests/snapshots/measurement.png +++ b/crates/maps/tests/snapshots/measurement.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eeb441bd57a9e6ecdd1ce26feac0025217f09e1396505e1eb53dcc3726d28e5b -size 147342 +oid sha256:0bf80af64edf64d54d2946974dfb508b2fa3b25a40bd970aa7611f45a9759547 +size 146855 diff --git a/crates/maps/tests/snapshots/nav2_example.png b/crates/maps/tests/snapshots/nav2_example.png index 165c5ef..fcdbeaa 100644 --- a/crates/maps/tests/snapshots/nav2_example.png +++ b/crates/maps/tests/snapshots/nav2_example.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c91d7a506e81e789d6219556073bbf6aad6f26102c1f8c5a514182d0adce853 -size 85156 +oid sha256:abfd92e267feab2274c5cbe856a067b2fd2ee2e90e3f13c9587b28832f9807d1 +size 85014 diff --git a/crates/maps/tests/snapshots/panels_visible.png b/crates/maps/tests/snapshots/panels_visible.png index db6a24a..1153815 100644 --- a/crates/maps/tests/snapshots/panels_visible.png +++ b/crates/maps/tests/snapshots/panels_visible.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18385abf7691ddd555063fec68ba4987719f0ef9803d64cd3a331bb89a583723 -size 452439 +oid sha256:142f0949ef62c0ba91f47ff79fdf836f96c0d8bd7f323b00c1034d1b61d4276e +size 448813 diff --git a/crates/maps/tests/snapshots/pixel_test.png b/crates/maps/tests/snapshots/pixel_test.png index 1bb7033..dc2a60b 100644 --- a/crates/maps/tests/snapshots/pixel_test.png +++ b/crates/maps/tests/snapshots/pixel_test.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d62245b2535fe5d35ae2c256a19e247c0640da11c691bf432fdf35379149cd21 -size 204126 +oid sha256:6a3fb9fa84d3457352e8e22593fb1e4e3d72308205b7f2aa389dd7ac1b0f70b1 +size 203984 diff --git a/crates/maps/tests/snapshots/stacked_view.png b/crates/maps/tests/snapshots/stacked_view.png index 715d37c..a06eff8 100644 --- a/crates/maps/tests/snapshots/stacked_view.png +++ b/crates/maps/tests/snapshots/stacked_view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:863a128fb20d89e016322cab12336192c75455f814e90cd7d6db2406dad8dc99 -size 110201 +oid sha256:a3fc9751b50b8a68718593c709c489d4298465f7db01adf905401c9992886dcd +size 110200 diff --git a/crates/maps/tests/snapshots/tiles_view.png b/crates/maps/tests/snapshots/tiles_view.png index 4d01a92..8b6e689 100644 --- a/crates/maps/tests/snapshots/tiles_view.png +++ b/crates/maps/tests/snapshots/tiles_view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20696f789ca060846da33306d5431a5d5a92d0f21dca67b5e9cead5d3236dc82 -size 82228 +oid sha256:8c82aea4eca5d45498366f817b12cf133336c7ee516925e50b100fed7d9a04c1 +size 82227 diff --git a/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png b/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png index 601d063..3cb8381 100644 --- a/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png +++ b/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0099b043f533861c927b8d06ba45c4907f08af07dbeb1d605ce65906ab73532f -size 75648 +oid sha256:ce223852c5d44fbd7775c4efd0a3a88105124280be518c296b6901b6a5823bdf +size 75742 diff --git a/crates/maps/tests/snapshots/value_colormap_rviz_map.png b/crates/maps/tests/snapshots/value_colormap_rviz_map.png index 8f696cc..ea6d990 100644 --- a/crates/maps/tests/snapshots/value_colormap_rviz_map.png +++ b/crates/maps/tests/snapshots/value_colormap_rviz_map.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46506c719e299bfe43ec0418c8917ba7510e9cf45c750f4784a5ab50f6f0acaa -size 79445 +oid sha256:e28bdc776df80dc577a58f654464a826cca8341a1e3861eec3aff49ae0203910 +size 79451 diff --git a/crates/maps/tests/snapshots/value_interpretations_map_server.png b/crates/maps/tests/snapshots/value_interpretations_map_server.png index 6d985a6..1a0e02e 100644 --- a/crates/maps/tests/snapshots/value_interpretations_map_server.png +++ b/crates/maps/tests/snapshots/value_interpretations_map_server.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54aab6637f123b336163a5495ff571a0559f5b2c62d23873e28ae8ffaa9fb996 -size 81386 +oid sha256:272480cd09ec0956624e7e81aa445dec2e5415b46e119ed146b04dcb99e5bb79 +size 81394 diff --git a/crates/maps/tests/snapshots/value_interpretations_wiki.png b/crates/maps/tests/snapshots/value_interpretations_wiki.png index 1a52a3f..e173e5b 100644 --- a/crates/maps/tests/snapshots/value_interpretations_wiki.png +++ b/crates/maps/tests/snapshots/value_interpretations_wiki.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd440a3cd00371d1e096d31714c9b05122b8acdf0cdc7dd2320c3d966c3e8ce4 -size 83803 +oid sha256:9333dc3b3f9132e136604323187bb24c813c5e04c4843c55d10e1067dcfa3493 +size 83813 From f7addbef264fdfaff813778f25e8b078f0f9808c Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Tue, 31 Mar 2026 02:30:18 +0200 Subject: [PATCH 10/13] use previous dark bg color --- crates/maps/src/app_impl/canvas_settings.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/maps/src/app_impl/canvas_settings.rs b/crates/maps/src/app_impl/canvas_settings.rs index 364f31d..c2c5a15 100644 --- a/crates/maps/src/app_impl/canvas_settings.rs +++ b/crates/maps/src/app_impl/canvas_settings.rs @@ -8,7 +8,7 @@ const MIN_STACK_SCALE: f32 = 1.0; const MAX_STACK_SCALE: f32 = 10.0; const DEFAULT_BG_COLOR_LIGHT: egui::Color32 = egui::Color32::from_rgb(240, 240, 240); -const DEFAULT_BG_COLOR_DARK: egui::Color32 = egui::Color32::from_rgb(30, 30, 30); +const DEFAULT_BG_COLOR_DARK: egui::Color32 = egui::Color32::from_rgb(32, 32, 32); const fn default_stack_scale_factor() -> f32 { MIN_STACK_SCALE From 05c5537cf36239ce2fd40ce6d09bff58723edaf1 Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Tue, 31 Mar 2026 02:31:20 +0200 Subject: [PATCH 11/13] snapshots --- crates/maps/tests/snapshots/aligned_view.png | 4 ++-- crates/maps/tests/snapshots/dense_grid_precision.png | 4 ++-- crates/maps/tests/snapshots/empty_start.png | 4 ++-- crates/maps/tests/snapshots/fixed_lens.png | 4 ++-- crates/maps/tests/snapshots/google_cartographer_example.png | 4 ++-- crates/maps/tests/snapshots/measurement.png | 4 ++-- crates/maps/tests/snapshots/nav2_example.png | 4 ++-- crates/maps/tests/snapshots/pixel_test.png | 4 ++-- crates/maps/tests/snapshots/stacked_view.png | 4 ++-- crates/maps/tests/snapshots/tiles_view.png | 4 ++-- crates/maps/tests/snapshots/value_colormap_rviz_costmap.png | 4 ++-- crates/maps/tests/snapshots/value_colormap_rviz_map.png | 4 ++-- .../maps/tests/snapshots/value_interpretations_map_server.png | 4 ++-- crates/maps/tests/snapshots/value_interpretations_wiki.png | 2 +- 14 files changed, 27 insertions(+), 27 deletions(-) diff --git a/crates/maps/tests/snapshots/aligned_view.png b/crates/maps/tests/snapshots/aligned_view.png index 6b0c261..4257b09 100644 --- a/crates/maps/tests/snapshots/aligned_view.png +++ b/crates/maps/tests/snapshots/aligned_view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65061e3582f96cf21e898043ccc92f52c0f534cda646ecbb6d151f9e5b13ef84 -size 132322 +oid sha256:fa79160eb9a3a410a938128b9926ad5b6f3d651a46621e8a1c6a6ef3d627caa7 +size 133243 diff --git a/crates/maps/tests/snapshots/dense_grid_precision.png b/crates/maps/tests/snapshots/dense_grid_precision.png index 7d81a6b..dc6b83c 100644 --- a/crates/maps/tests/snapshots/dense_grid_precision.png +++ b/crates/maps/tests/snapshots/dense_grid_precision.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb75ff08ed6a8db3df50445e535d6f75a3467b157910d864074003e8a7260ee0 -size 69071 +oid sha256:867c61c87aa624dff30b9c143a3d35e184f221bfd504de54995645dcce591309 +size 68902 diff --git a/crates/maps/tests/snapshots/empty_start.png b/crates/maps/tests/snapshots/empty_start.png index eac62d3..622c7e4 100644 --- a/crates/maps/tests/snapshots/empty_start.png +++ b/crates/maps/tests/snapshots/empty_start.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0acccd948c94106ed5a5a002e89a75b26bf3fc484ad3f2bc682e0001ed417054 -size 26709 +oid sha256:25c8e5d73f9b07502187950cf78a3cbfdc537f167f0b9ad0ddf2e3fecacf5589 +size 26692 diff --git a/crates/maps/tests/snapshots/fixed_lens.png b/crates/maps/tests/snapshots/fixed_lens.png index c460dd3..e0664e6 100644 --- a/crates/maps/tests/snapshots/fixed_lens.png +++ b/crates/maps/tests/snapshots/fixed_lens.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:849d14048f349aa99d3974f23cb18674837ea41b4d037bbe577b6667288e4c6b -size 129074 +oid sha256:41d336b75d1ca89f3ed8feac9fbd53096b994010f128b964de22b7e8197ca6cc +size 129305 diff --git a/crates/maps/tests/snapshots/google_cartographer_example.png b/crates/maps/tests/snapshots/google_cartographer_example.png index a75c524..c8beaeb 100644 --- a/crates/maps/tests/snapshots/google_cartographer_example.png +++ b/crates/maps/tests/snapshots/google_cartographer_example.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c771d73a38c2ee8b0f69eca3e2884e8f76dedf10be1e533ec65b881caee865a5 -size 279131 +oid sha256:548427b1182250c060bc7d80195b9b501709408cd0df4ab01da544ed079145cf +size 276714 diff --git a/crates/maps/tests/snapshots/measurement.png b/crates/maps/tests/snapshots/measurement.png index 44bbd65..b62ed21 100644 --- a/crates/maps/tests/snapshots/measurement.png +++ b/crates/maps/tests/snapshots/measurement.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0bf80af64edf64d54d2946974dfb508b2fa3b25a40bd970aa7611f45a9759547 -size 146855 +oid sha256:c1a7fae942c87c4df193f577d3db59ea19de895a54c386f0ecad326d8b7bae79 +size 147787 diff --git a/crates/maps/tests/snapshots/nav2_example.png b/crates/maps/tests/snapshots/nav2_example.png index fcdbeaa..5d1633e 100644 --- a/crates/maps/tests/snapshots/nav2_example.png +++ b/crates/maps/tests/snapshots/nav2_example.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abfd92e267feab2274c5cbe856a067b2fd2ee2e90e3f13c9587b28832f9807d1 -size 85014 +oid sha256:33cea4388bf5e893eb88b0a3ed2ef45ae89aa32e5fc1c516c2c0c926ef54bde9 +size 84941 diff --git a/crates/maps/tests/snapshots/pixel_test.png b/crates/maps/tests/snapshots/pixel_test.png index dc2a60b..dec2742 100644 --- a/crates/maps/tests/snapshots/pixel_test.png +++ b/crates/maps/tests/snapshots/pixel_test.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a3fb9fa84d3457352e8e22593fb1e4e3d72308205b7f2aa389dd7ac1b0f70b1 -size 203984 +oid sha256:3ff847a77482ad4734dec465b35500ff66cdd7fb4c0474bce494a6ee135dac66 +size 203915 diff --git a/crates/maps/tests/snapshots/stacked_view.png b/crates/maps/tests/snapshots/stacked_view.png index a06eff8..f299c37 100644 --- a/crates/maps/tests/snapshots/stacked_view.png +++ b/crates/maps/tests/snapshots/stacked_view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3fc9751b50b8a68718593c709c489d4298465f7db01adf905401c9992886dcd -size 110200 +oid sha256:6ab61019b28f42005d6eeee9a2f11fc4b16171a88659a5954b15c8282aa93933 +size 110201 diff --git a/crates/maps/tests/snapshots/tiles_view.png b/crates/maps/tests/snapshots/tiles_view.png index 8b6e689..5b561d1 100644 --- a/crates/maps/tests/snapshots/tiles_view.png +++ b/crates/maps/tests/snapshots/tiles_view.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c82aea4eca5d45498366f817b12cf133336c7ee516925e50b100fed7d9a04c1 -size 82227 +oid sha256:fc1616543b6c94c47b19cfb6a2551665ba0bdae2bb7b14c3115e61fb1dc2cd11 +size 82228 diff --git a/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png b/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png index 3cb8381..29a9680 100644 --- a/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png +++ b/crates/maps/tests/snapshots/value_colormap_rviz_costmap.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce223852c5d44fbd7775c4efd0a3a88105124280be518c296b6901b6a5823bdf -size 75742 +oid sha256:8ef27023a924774c4b7513c6cb66d5823743f67f90af0de22d5565e107d37371 +size 75815 diff --git a/crates/maps/tests/snapshots/value_colormap_rviz_map.png b/crates/maps/tests/snapshots/value_colormap_rviz_map.png index ea6d990..aecf70c 100644 --- a/crates/maps/tests/snapshots/value_colormap_rviz_map.png +++ b/crates/maps/tests/snapshots/value_colormap_rviz_map.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e28bdc776df80dc577a58f654464a826cca8341a1e3861eec3aff49ae0203910 -size 79451 +oid sha256:915167a5f49292cc0957925bc541875627a83eb901786ebfcb2915611859fd18 +size 79464 diff --git a/crates/maps/tests/snapshots/value_interpretations_map_server.png b/crates/maps/tests/snapshots/value_interpretations_map_server.png index 1a0e02e..b13aa22 100644 --- a/crates/maps/tests/snapshots/value_interpretations_map_server.png +++ b/crates/maps/tests/snapshots/value_interpretations_map_server.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:272480cd09ec0956624e7e81aa445dec2e5415b46e119ed146b04dcb99e5bb79 -size 81394 +oid sha256:9bbd30e36e05cb6869ae44699e5239d92d40b74726c8b0ffb26b9527c0db34c8 +size 81347 diff --git a/crates/maps/tests/snapshots/value_interpretations_wiki.png b/crates/maps/tests/snapshots/value_interpretations_wiki.png index e173e5b..82de8cf 100644 --- a/crates/maps/tests/snapshots/value_interpretations_wiki.png +++ b/crates/maps/tests/snapshots/value_interpretations_wiki.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9333dc3b3f9132e136604323187bb24c813c5e04c4843c55d10e1067dcfa3493 +oid sha256:dad8ac3648478e70796560a314f8f0ce2215eb749d96347e0fad8e55432300b4 size 83813 From 5533bac2abd21f6acf228bc26233ee5e1fcd2c4c Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Tue, 14 Apr 2026 18:46:31 +0200 Subject: [PATCH 12/13] Invalidate wasm page cache for rebuilds / version bumps --- Trunk.toml | 11 +++++++++++ crates/maps/.wasm/sw.js | 44 ++++++++++++++++++++++++++--------------- 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/Trunk.toml b/Trunk.toml index fcea464..214d5fa 100644 --- a/Trunk.toml +++ b/Trunk.toml @@ -1,2 +1,13 @@ [build] target = "crates/maps/index.html" +filehash = true + +# Replace __CACHE_VERSION__ in sw.js with the current git short hash, +# so the service worker cache is automatically busted on each new WASM build. +[[hooks]] +stage = "post_build" +command = "sh" +command_arguments = [ + "-c", + "sed -i'' -e \"s/__CACHE_VERSION__/$(git rev-parse --short HEAD)/\" dist/sw.js", +] diff --git a/crates/maps/.wasm/sw.js b/crates/maps/.wasm/sw.js index 05b7915..4b61d10 100644 --- a/crates/maps/.wasm/sw.js +++ b/crates/maps/.wasm/sw.js @@ -1,4 +1,4 @@ -var cacheName = 'maps-pwa'; +var cacheName = 'maps-pwa-__CACHE_VERSION__'; var filesToCache = [ './', './index.html', @@ -6,6 +6,7 @@ var filesToCache = [ /* Start the service worker and cache all of the app's content */ self.addEventListener('install', function (e) { + self.skipWaiting(); e.waitUntil( caches.open(cacheName).then(function (cache) { return cache.addAll(filesToCache); @@ -13,26 +14,37 @@ self.addEventListener('install', function (e) { ); }); -/* Serve cached content when offline */ +/* Delete old caches when a new service worker activates */ +self.addEventListener('activate', function (e) { + e.waitUntil( + caches.keys().then(function (cacheNames) { + return Promise.all( + cacheNames.map(function (name) { + if (name !== cacheName) { + return caches.delete(name); + } + }) + ); + }).then(function () { + return self.clients.claim(); + }) + ); +}); + +/* Network-first strategy: try network, fall back to cache for offline use */ self.addEventListener('fetch', function (e) { e.respondWith( - caches.match(e.request).then(function (response) { - if (response) { + fetch(e.request).then(function (response) { + if (!response || response.status !== 200 || response.type !== 'basic') { return response; } - // Fetch and cache the response for future use - return fetch(e.request).then(function(response) { - // Check if we received a valid response - if (!response || response.status !== 200 || response.type !== 'basic') { - return response; - } - // Clone the response as it can only be consumed once - var responseToCache = response.clone(); - caches.open(cacheName).then(function(cache) { - cache.put(e.request, responseToCache); - }); - return response; + var responseToCache = response.clone(); + caches.open(cacheName).then(function (cache) { + cache.put(e.request, responseToCache); }); + return response; + }).catch(function () { + return caches.match(e.request); }) ); }); From 6e245723229301ac31fd27dcbfabaab99718b14a Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Tue, 14 Apr 2026 18:48:51 +0200 Subject: [PATCH 13/13] consistent demo button sizes --- crates/maps/src/wasm/demo.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/maps/src/wasm/demo.rs b/crates/maps/src/wasm/demo.rs index a6477ed..de816a4 100644 --- a/crates/maps/src/wasm/demo.rs +++ b/crates/maps/src/wasm/demo.rs @@ -30,6 +30,7 @@ pub(crate) fn demo_button( egui::Button::image( egui::Image::new(button_handle.as_ref().expect("missing demo image")) .max_height(200.) + .max_width(300.) .alt_text(alt_text), ) .corner_radius(5.),