From 369cfaa9465e2d670fe10de166c848b66b0eb963 Mon Sep 17 00:00:00 2001 From: iamanaws <78835633+Iamanaws@users.noreply.github.com> Date: Thu, 23 Oct 2025 00:00:46 -0700 Subject: [PATCH] chore(deps): bump iced from 0.12.0 to 0.13.1 --- Cargo.lock | 1928 ++++++++++++++++------------ Cargo.toml | 2 +- src/core/adb.rs | 1 + src/core/helpers.rs | 7 +- src/gui/mod.rs | 94 +- src/gui/style.rs | 1177 +++++++++-------- src/gui/views/about.rs | 14 +- src/gui/views/list.rs | 186 +-- src/gui/views/settings.rs | 74 +- src/gui/widgets/modal.rs | 4 +- src/gui/widgets/navigation_menu.rs | 8 +- src/gui/widgets/package_row.rs | 18 +- src/gui/widgets/text.rs | 13 +- 13 files changed, 1979 insertions(+), 1547 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a003694..38bebf9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "ab_glyph" -version = "0.2.30" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0f4f6fbdc5ee39f2ede9f5f3ec79477271a6d6a2baff22310d51736bda6cea" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -14,9 +14,9 @@ dependencies = [ [[package]] name = "ab_glyph_rasterizer" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2187590a23ab1e3df8681afdf0987c48504d80291f002fcdb651f0ef5e25169" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] name = "adler2" @@ -24,6 +24,17 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "version_check", +] + [[package]] name = "ahash" version = "0.8.12" @@ -31,7 +42,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "version_check", "zerocopy", @@ -45,12 +56,12 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-activity" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.9.1", + "bitflags 2.10.0", "cc", "cesu8", "jni", @@ -59,7 +70,7 @@ dependencies = [ "log", "ndk", "ndk-context", - "ndk-sys", + "ndk-sys 0.6.0+11769913", "num_enum", "thiserror 1.0.69", ] @@ -70,12 +81,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -136,7 +141,7 @@ dependencies = [ "serde", "serde_repr", "url", - "zbus", + "zbus 5.12.0", ] [[package]] @@ -150,12 +155,15 @@ dependencies = [ "enumflags2", "futures-channel", "futures-util", - "rand 0.9.1", + "rand 0.9.2", "raw-window-handle", "serde", "serde_repr", "url", - "zbus", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "zbus 5.12.0", ] [[package]] @@ -164,7 +172,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -183,9 +191,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c74e56284d2188cabb6ad99603d1ace887a5d7e7b695d01b728155ed9ed427" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -195,9 +203,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" dependencies = [ "async-task", "concurrent-queue", @@ -209,9 +217,9 @@ dependencies = [ [[package]] name = "async-fs" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" dependencies = [ "async-lock", "blocking", @@ -224,7 +232,7 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel 2.4.0", + "async-channel 2.5.0", "async-executor", "async-io", "async-lock", @@ -235,30 +243,29 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", "polling", - "rustix 1.0.7", + "rustix 1.1.2", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "async-lock" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "event-listener-strategy", "pin-project-lite", ] @@ -276,21 +283,20 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ - "async-channel 2.4.0", + "async-channel 2.5.0", "async-io", "async-lock", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener 5.4.0", + "event-listener 5.4.1", "futures-lite", - "rustix 1.0.7", - "tracing", + "rustix 1.1.2", ] [[package]] @@ -301,14 +307,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] name = "async-signal" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" dependencies = [ "async-io", "async-lock", @@ -316,17 +322,17 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.0.7", + "rustix 1.1.2", "signal-hook-registry", "slab", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "async-std" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" dependencies = [ "async-channel 1.9.0", "async-global-executor", @@ -356,13 +362,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -400,9 +406,9 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bit_field" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" [[package]] name = "bitflags" @@ -412,9 +418,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "block" @@ -423,22 +429,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] -name = "block-sys" -version = "0.2.1" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "objc-sys", -] - -[[package]] -name = "block2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" -dependencies = [ - "block-sys", - "objc2 0.4.1", + "generic-array", ] [[package]] @@ -452,20 +448,20 @@ dependencies = [ [[package]] name = "block2" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2 0.6.1", + "objc2 0.6.3", ] [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ - "async-channel 2.4.0", + "async-channel 2.5.0", "async-task", "futures-io", "futures-lite", @@ -486,22 +482,22 @@ checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.9.3" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -516,27 +512,13 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" -[[package]] -name = "calloop" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" -dependencies = [ - "bitflags 2.9.1", - "log", - "polling", - "rustix 0.38.44", - "slab", - "thiserror 1.0.69", -] - [[package]] name = "calloop" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "log", "polling", "rustix 0.38.44", @@ -544,25 +526,13 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "calloop-wayland-source" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" -dependencies = [ - "calloop 0.12.4", - "rustix 0.38.44", - "wayland-backend", - "wayland-client", -] - [[package]] name = "calloop-wayland-source" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ - "calloop 0.13.0", + "calloop", "rustix 0.38.44", "wayland-backend", "wayland-client", @@ -570,10 +540,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.29" +version = "1.2.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" +checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -587,9 +558,9 @@ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -605,11 +576,10 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "num-traits", "windows-link", @@ -617,9 +587,9 @@ dependencies = [ [[package]] name = "clipboard-win" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ "error-code", ] @@ -743,9 +713,9 @@ dependencies = [ [[package]] name = "cookie_store" -version = "0.21.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9" +checksum = "3fc4bff745c9b4c7fb1e97b25d13153da2bc7796260141df62378998d070207f" dependencies = [ "cookie", "document-features", @@ -804,7 +774,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-graphics-types 0.2.0", "foreign-types", @@ -828,26 +798,28 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.10.1", "libc", ] [[package]] name = "cosmic-text" -version = "0.10.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75acbfb314aeb4f5210d379af45ed1ec2c98c7f1790bf57b8a4c562ac0c51b71" +checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" dependencies = [ + "bitflags 2.10.0", "fontdb", - "libm", "log", "rangemap", - "rustc-hash", + "rayon", + "rustc-hash 1.1.0", "rustybuzz", "self_cell", "swash", "sys-locale", + "ttf-parser 0.21.1", "unicode-bidi", "unicode-linebreak", "unicode-script", @@ -855,10 +827,19 @@ dependencies = [ ] [[package]] -name = "crc32fast" -version = "1.4.2" +name = "cpufeatures" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -895,22 +876,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] -name = "csv" -version = "1.3.1" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "csv" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" dependencies = [ "csv-core", "itoa", "ryu", - "serde", + "serde_core", ] [[package]] name = "csv-core" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" dependencies = [ "memchr", ] @@ -933,11 +924,27 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" dependencies = [ - "bitflags 2.9.1", - "libloading 0.8.8", + "bitflags 2.10.0", + "libloading 0.8.9", "winapi", ] +[[package]] +name = "dark-light" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a76fa97167fa740dcdbfe18e8895601e1bc36525f09b044e00916e717c03a3c" +dependencies = [ + "dconf_rs", + "detect-desktop-environment", + "dirs 4.0.0", + "objc", + "rust-ini", + "web-sys", + "winreg 0.10.1", + "zbus 4.4.0", +] + [[package]] name = "dark-light" version = "2.0.0" @@ -953,21 +960,63 @@ dependencies = [ ] [[package]] -name = "deranged" -version = "0.4.0" +name = "dconf_rs" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b" + +[[package]] +name = "deranged" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", ] +[[package]] +name = "detect-desktop-environment" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21d8ad60dd5b13a4ee6bd8fa2d5d88965c597c67bce32b5fc49c94f55cb50810" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys 0.3.7", +] + [[package]] name = "dirs" version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "dirs-sys", + "dirs-sys 0.5.0", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users 0.4.6", + "winapi", ] [[package]] @@ -978,8 +1027,8 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users", - "windows-sys 0.60.2", + "redox_users 0.5.2", + "windows-sys 0.61.2", ] [[package]] @@ -988,26 +1037,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" -[[package]] -name = "dispatch2" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a0d569e003ff27784e0e14e4a594048698e0c0f0b66cabcb51511be55a7caa0" -dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", - "libc", - "objc2 0.6.1", -] - [[package]] name = "dispatch2" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", + "bitflags 2.10.0", + "block2 0.6.2", + "libc", + "objc2 0.6.3", ] [[package]] @@ -1018,7 +1057,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -1027,9 +1066,15 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.8", + "libloading 0.8.9", ] +[[package]] +name = "dlv-list" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" + [[package]] name = "document-features" version = "0.2.11" @@ -1045,13 +1090,19 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + [[package]] name = "drm" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98888c4bbd601524c11a7ed63f814b8825f420514f78e96f752c437ae9cbb5d1" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "bytemuck", "drm-ffi", "drm-fourcc", @@ -1092,9 +1143,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "embed-resource" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0963f530273dc3022ab2bdc3fcd6d488e850256f2284a82b7413cb9481ee85dd" +checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e" dependencies = [ "cc", "memchr", @@ -1128,7 +1179,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -1139,12 +1190,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1180,9 +1231,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -1195,7 +1246,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "pin-project-lite", ] @@ -1247,21 +1298,27 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] -name = "flate2" -version = "1.1.2" +name = "find-msvc-tools" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -1273,12 +1330,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - [[package]] name = "font-types" version = "0.7.3" @@ -1299,16 +1350,16 @@ dependencies = [ [[package]] name = "fontdb" -version = "0.15.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020e203f177c0fb250fb19455a252e838d2bbbce1f80f25ecc42402aafa8cd38" +checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" dependencies = [ "fontconfig-parser", "log", - "memmap2 0.8.0", + "memmap2", "slotmap", "tinyvec", - "ttf-parser 0.19.2", + "ttf-parser 0.20.0", ] [[package]] @@ -1329,7 +1380,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -1340,9 +1391,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -1398,9 +1449,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ "fastrand", "futures-core", @@ -1417,7 +1468,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -1451,13 +1502,23 @@ dependencies = [ ] [[package]] -name = "gethostname" -version = "0.4.3" +name = "generic-array" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ - "libc", - "windows-targets 0.48.5", + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix 1.1.2", + "windows-link", ] [[package]] @@ -1468,19 +1529,19 @@ checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasip2", ] [[package]] @@ -1543,25 +1604,13 @@ dependencies = [ "gl_generator", ] -[[package]] -name = "glyphon" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a62d0338e4056db6a73221c2fb2e30619452f6ea9651bac4110f51b0f7a7581" -dependencies = [ - "cosmic-text", - "etagere", - "lru", - "wgpu", -] - [[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", + "bitflags 2.10.0", "gpu-alloc-types", ] @@ -1571,7 +1620,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] @@ -1593,7 +1642,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "gpu-descriptor-types", "hashbrown 0.14.5", ] @@ -1604,7 +1653,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] @@ -1619,12 +1668,22 @@ dependencies = [ [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "zerocopy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", ] [[package]] @@ -1633,20 +1692,15 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash", + "ahash 0.8.12", "allocator-api2", ] [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" [[package]] name = "hassle-rs" @@ -1654,10 +1708,10 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "com", "libc", - "libloading 0.8.8", + "libloading 0.8.9", "thiserror 1.0.69", "widestring", "winapi", @@ -1700,9 +1754,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1710,7 +1764,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.2", + "windows-core 0.62.2", ] [[package]] @@ -1724,9 +1778,9 @@ dependencies = [ [[package]] name = "iced" -version = "0.12.1" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d4eb0fbbefb8c428b70680e77ed9013887b17c1d6be366b40f264f956d1a096" +checksum = "88acfabc84ec077eaf9ede3457ffa3a104626d79022a9bf7f296093b1d60c73f" dependencies = [ "iced_core", "iced_futures", @@ -1739,42 +1793,58 @@ dependencies = [ [[package]] name = "iced_core" -version = "0.12.3" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d7e6bbd197f311ed3d8b71651876b0ce01318fde52cda862a9a7a4373c9b930" +checksum = "0013a238275494641bf8f1732a23a808196540dc67b22ff97099c044ae4c8a1c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", + "bytes", + "dark-light 1.1.1", "glam", "log", "num-traits", + "once_cell", "palette", - "raw-window-handle", + "rustc-hash 2.1.1", "smol_str", "thiserror 1.0.69", "web-time", - "xxhash-rust", ] [[package]] name = "iced_futures" -version = "0.12.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370bad88fb3832cbeeb3fa6c486b4701fb7e8da32a753b3101d4ce81fc1d9497" +checksum = "0c04a6745ba2e80f32cf01e034fd00d853aa4f4cd8b91888099cb7aaee0d5d7c" dependencies = [ "futures", "iced_core", "log", + "rustc-hash 2.1.1", "wasm-bindgen-futures", "wasm-timer", ] [[package]] -name = "iced_graphics" -version = "0.12.1" +name = "iced_glyphon" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a044c193ef0840eacabfa05424717331d1fc5b3ecb9a89316200c75da2ba9a4" +checksum = "41c3bb56f1820ca252bc1d0994ece33d233a55657c0c263ea7cb16895adbde82" dependencies = [ - "bitflags 2.9.1", + "cosmic-text", + "etagere", + "lru", + "rustc-hash 2.1.1", + "wgpu", +] + +[[package]] +name = "iced_graphics" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba25a18cfa6d5cc160aca7e1b34f73ccdff21680fa8702168c09739767b6c66f" +dependencies = [ + "bitflags 2.10.0", "bytemuck", "cosmic-text", "half", @@ -1785,17 +1855,16 @@ dependencies = [ "log", "once_cell", "raw-window-handle", - "rustc-hash", + "rustc-hash 2.1.1", "thiserror 1.0.69", "unicode-segmentation", - "xxhash-rust", ] [[package]] name = "iced_renderer" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c281e03001d566058f53dec9325bbe61c62da715341206d2627f57a3ecc7f69" +checksum = "73558208059f9e622df2bf434e044ee2f838ce75201a023cf0ca3e1244f46c2a" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -1806,105 +1875,88 @@ dependencies = [ [[package]] name = "iced_runtime" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a79f852c01cc6d61663c94379cb3974ac3ad315a28c504e847d573e094f46822" +checksum = "348b5b2c61c934d88ca3b0ed1ed913291e923d086a66fa288ce9669da9ef62b5" dependencies = [ + "bytes", "iced_core", "iced_futures", "raw-window-handle", "thiserror 1.0.69", ] -[[package]] -name = "iced_style" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ea42a740915d2a5a9ff9c3aa0bca28b16e9fb660bc8f675eed71d186cadb579" -dependencies = [ - "iced_core", - "once_cell", - "palette", -] - [[package]] name = "iced_tiny_skia" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2228781f4d381a1cbbd7905a9f077351aa8d37269094021d5d9e779f130aff" +checksum = "c625d368284fcc43b0b36b176f76eff1abebe7959dd58bd8ce6897d641962a50" dependencies = [ "bytemuck", "cosmic-text", "iced_graphics", "kurbo", "log", - "rustc-hash", + "rustc-hash 2.1.1", "softbuffer", "tiny-skia", - "xxhash-rust", ] [[package]] name = "iced_wgpu" -version = "0.12.1" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c243b6700452886aac1ee1987e84d9fb43b56b53fea9a1eb67713fd0fde244" +checksum = "15708887133671d2bcc6c1d01d1f176f43a64d6cdc3b2bf893396c3ee498295f" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "bytemuck", "futures", "glam", - "glyphon", "guillotiere", + "iced_glyphon", "iced_graphics", "log", "once_cell", + "rustc-hash 2.1.1", + "thiserror 1.0.69", "wgpu", ] [[package]] name = "iced_widget" -version = "0.12.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e01b2212adecf1cb80e2267f302c0e0c263e55f97812056949199ccf9f0b908" +checksum = "81429e1b950b0e4bca65be4c4278fea6678ea782030a411778f26fa9f8983e1d" dependencies = [ "iced_renderer", "iced_runtime", - "iced_style", "num-traits", + "once_cell", + "rustc-hash 2.1.1", "thiserror 1.0.69", "unicode-segmentation", ] [[package]] name = "iced_winit" -version = "0.12.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63f66831d0e399b93f631739121a6171780d344b275d56808b9504d8ca75c7d2" +checksum = "f44cd4e1c594b6334f409282937bf972ba14d31fedf03c23aa595d982a2fda28" dependencies = [ + "iced_futures", "iced_graphics", "iced_runtime", - "iced_style", "log", + "rustc-hash 2.1.1", "thiserror 1.0.69", "tracing", + "wasm-bindgen-futures", "web-sys", "winapi", "window_clipboard", "winit", ] -[[package]] -name = "icrate" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" -dependencies = [ - "block2 0.3.0", - "dispatch", - "objc2 0.4.1", -] - [[package]] name = "icu_collections" version = "2.0.0" @@ -1993,9 +2045,9 @@ dependencies = [ [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -2032,12 +2084,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.15.4", + "hashbrown 0.16.0", ] [[package]] @@ -2079,11 +2131,11 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] @@ -2098,9 +2150,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -2122,7 +2174,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.8", + "libloading 0.8.9", "pkg-config", ] @@ -2159,15 +2211,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lebe" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" +checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" [[package]] name = "libc" -version = "0.2.174" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" @@ -2181,12 +2233,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.2", + "windows-link", ] [[package]] @@ -2197,13 +2249,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.4" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "libc", - "redox_syscall 0.5.13", + "redox_syscall 0.5.18", ] [[package]] @@ -2220,9 +2272,9 @@ checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" @@ -2232,25 +2284,24 @@ checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "litrs" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ "value-bag", ] @@ -2260,9 +2311,6 @@ name = "lru" version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown 0.15.4", -] [[package]] name = "malloc_buf" @@ -2275,24 +2323,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" -version = "0.8.0" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed" -dependencies = [ - "libc", -] - -[[package]] -name = "memmap2" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -2312,7 +2351,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block", "core-graphics-types 0.1.3", "foreign-types", @@ -2333,9 +2372,9 @@ dependencies = [ [[package]] name = "mutate_once" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" +checksum = "13d2233c9842d08cfe13f9eac96e207ca6a2ea10b80259ebe8ad0268be27d2af" [[package]] name = "naga" @@ -2344,13 +2383,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" dependencies = [ "bit-set", - "bitflags 2.9.1", + "bitflags 2.10.0", "codespan-reporting", "hexf-parse", "indexmap", "log", "num-traits", - "rustc-hash", + "rustc-hash 1.1.0", "spirv", "termcolor", "thiserror 1.0.69", @@ -2359,14 +2398,14 @@ dependencies = [ [[package]] name = "ndk" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "jni-sys", "log", - "ndk-sys", + "ndk-sys 0.6.0+11769913", "num_enum", "raw-window-handle", "thiserror 1.0.69", @@ -2387,13 +2426,35 @@ 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", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases 0.2.1", + "libc", + "memoffset", +] + [[package]] name = "nix" version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -2427,9 +2488,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -2437,14 +2498,14 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -2463,16 +2524,6 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" -[[package]] -name = "objc2" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" -dependencies = [ - "objc-sys", - "objc2-encode 3.0.0", -] - [[package]] name = "objc2" version = "0.5.2" @@ -2480,16 +2531,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ "objc-sys", - "objc2-encode 4.1.0", + "objc2-encode", ] [[package]] name = "objc2" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" dependencies = [ - "objc2-encode 4.1.0", + "objc2-encode", ] [[package]] @@ -2498,7 +2549,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -2510,14 +2561,38 @@ dependencies = [ [[package]] name = "objc2-app-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", + "bitflags 2.10.0", + "block2 0.6.2", + "objc2 0.6.3", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.10.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] @@ -2526,7 +2601,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2534,13 +2609,13 @@ dependencies = [ [[package]] name = "objc2-core-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.9.1", - "dispatch2 0.3.0", - "objc2 0.6.1", + "bitflags 2.10.0", + "dispatch2", + "objc2 0.6.3", ] [[package]] @@ -2556,10 +2631,16 @@ dependencies = [ ] [[package]] -name = "objc2-encode" -version = "3.0.0" +name = "objc2-core-location" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] [[package]] name = "objc2-encode" @@ -2573,30 +2654,43 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", + "dispatch", "libc", "objc2 0.5.2", ] [[package]] name = "objc2-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", + "bitflags 2.10.0", + "objc2 0.6.3", "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 0.5.1", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + [[package]] name = "objc2-metal" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2608,13 +2702,68 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", "objc2-metal", ] +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.10.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.10.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -2645,6 +2794,16 @@ dependencies = [ "libredox", ] +[[package]] +name = "ordered-multimap" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" +dependencies = [ + "dlv-list", + "hashbrown 0.12.3", +] + [[package]] name = "ordered-stream" version = "0.2.0" @@ -2657,9 +2816,9 @@ dependencies = [ [[package]] name = "owned_ttf_parser" -version = "0.25.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" dependencies = [ "ttf-parser 0.25.1", ] @@ -2685,7 +2844,7 @@ dependencies = [ "by_address", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -2707,12 +2866,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.11", + "parking_lot_core 0.9.12", ] [[package]] @@ -2731,15 +2890,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.13", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -2750,9 +2909,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "phf" @@ -2784,7 +2943,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -2796,6 +2955,26 @@ dependencies = [ "siphasher", ] +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -2840,17 +3019,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.8.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.0.7", - "tracing", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -2861,9 +3039,9 @@ checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -2891,18 +3069,18 @@ checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -2933,9 +3111,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] @@ -2959,9 +3137,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", @@ -3002,7 +3180,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", ] [[package]] @@ -3013,9 +3191,9 @@ checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" [[package]] name = "rangemap" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" +checksum = "f93e7e49bb0bf967717f7bd674458b3d6b0c5f48ec7e3038166026a69fc22223" [[package]] name = "raw-window-handle" @@ -3025,9 +3203,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -3035,9 +3213,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -3064,31 +3242,42 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_syscall" -version = "0.5.13" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] name = "redox_users" -version = "0.5.0" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.12", + "thiserror 1.0.69", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 2.0.17", ] [[package]] @@ -3103,24 +3292,24 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1e211f878258887b3e65dd3c8ff9f530fe109f441a117ee0cdc27f341355032" dependencies = [ - "rand 0.9.1", + "rand 0.9.2", ] [[package]] name = "rfd" -version = "0.15.3" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80c844748fdc82aae252ee4594a89b6e7ebef1063de7951545564cbc4e57075d" +checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" dependencies = [ "ashpd 0.11.0", - "block2 0.6.1", - "dispatch2 0.2.0", + "block2 0.6.2", + "dispatch2", "js-sys", "log", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "pollster", "raw-window-handle", "urlencoding", @@ -3150,12 +3339,28 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" +[[package]] +name = "rust-ini" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + [[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc_version" version = "0.4.1" @@ -3171,7 +3376,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3180,22 +3385,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.7" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.28" +version = "0.23.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" dependencies = [ "log", "once_cell", @@ -3226,9 +3431,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" dependencies = [ "ring", "rustls-pki-types", @@ -3237,21 +3442,21 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rustybuzz" -version = "0.11.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee8fe2a8461a0854a37101fe7a1b13998d0cfa987e43248e81d2a5f4570f6fa" +checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", "bytemuck", "libm", "smallvec", - "ttf-parser 0.20.0", + "ttf-parser 0.21.1", "unicode-bidi-mirroring", "unicode-ccc", "unicode-properties", @@ -3287,59 +3492,70 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.8.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ "ab_glyph", "log", - "memmap2 0.9.5", - "smithay-client-toolkit 0.18.1", + "memmap2", + "smithay-client-toolkit", "tiny-skia", ] [[package]] name = "self_cell" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" +checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +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 = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -3350,16 +3566,27 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] name = "serde_spanned" -version = "0.6.9" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" dependencies = [ - "serde", + "serde_core", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", ] [[package]] @@ -3370,9 +3597,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.5" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] @@ -3420,52 +3647,27 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" -[[package]] -name = "smithay-client-toolkit" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" -dependencies = [ - "bitflags 2.9.1", - "calloop 0.12.4", - "calloop-wayland-source 0.2.0", - "cursor-icon", - "libc", - "log", - "memmap2 0.9.5", - "rustix 0.38.44", - "thiserror 1.0.69", - "wayland-backend", - "wayland-client", - "wayland-csd-frame", - "wayland-cursor", - "wayland-protocols 0.31.2", - "wayland-protocols-wlr 0.2.0", - "wayland-scanner", - "xkeysym", -] - [[package]] name = "smithay-client-toolkit" version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.9.1", - "calloop 0.13.0", - "calloop-wayland-source 0.3.0", + "bitflags 2.10.0", + "calloop", + "calloop-wayland-source", "cursor-icon", "libc", "log", - "memmap2 0.9.5", + "memmap2", "rustix 0.38.44", "thiserror 1.0.69", "wayland-backend", "wayland-client", "wayland-csd-frame", "wayland-cursor", - "wayland-protocols 0.32.8", - "wayland-protocols-wlr 0.3.8", + "wayland-protocols", + "wayland-protocols-wlr", "wayland-scanner", "xkeysym", ] @@ -3477,7 +3679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" dependencies = [ "libc", - "smithay-client-toolkit 0.19.2", + "smithay-client-toolkit", "wayland-backend", ] @@ -3505,12 +3707,12 @@ dependencies = [ "foreign-types", "js-sys", "log", - "memmap2 0.9.5", + "memmap2", "objc2 0.5.2", "objc2-foundation 0.2.2", "objc2-quartz-core", "raw-window-handle", - "redox_syscall 0.5.13", + "redox_syscall 0.5.18", "rustix 0.38.44", "tiny-xlib", "wasm-bindgen", @@ -3528,14 +3730,14 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -3585,9 +3787,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" dependencies = [ "proc-macro2", "quote", @@ -3602,7 +3804,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -3627,15 +3829,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.20.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", - "rustix 1.0.7", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -3658,11 +3860,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -3673,18 +3875,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -3700,9 +3902,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -3715,15 +3917,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -3763,7 +3965,7 @@ checksum = "0324504befd01cab6e0c994f34b2ffa257849ee019d3fb3b64fb2c858887d89e" dependencies = [ "as-raw-xcb-connection", "ctor-lite", - "libloading 0.8.8", + "libloading 0.8.9", "pkg-config", "tracing", ] @@ -3780,9 +3982,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -3795,44 +3997,54 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" -version = "0.8.23" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" dependencies = [ "indexmap", - "serde", + "serde_core", "serde_spanned", "toml_datetime", - "toml_write", + "toml_parser", + "toml_writer", "winnow", ] [[package]] -name = "toml_write" -version = "0.1.2" +name = "toml_datetime" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" [[package]] name = "tracing" @@ -3853,7 +4065,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -3865,32 +4077,38 @@ dependencies = [ "once_cell", ] -[[package]] -name = "ttf-parser" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49d64318d8311fc2668e48b63969f4343e0a85c4a109aa8460d6672e364b8bd1" - [[package]] name = "ttf-parser" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" +[[package]] +name = "ttf-parser" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" + [[package]] name = "ttf-parser" version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + [[package]] name = "uad-ng" version = "1.1.2" dependencies = [ "chrono", "csv", - "dark-light", - "dirs", + "dark-light 2.0.0", + "dirs 6.0.0", "embed-resource", "fern", "flate2", @@ -3925,21 +4143,21 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-bidi-mirroring" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694" +checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" [[package]] name = "unicode-ccc" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" +checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" [[package]] name = "unicode-linebreak" @@ -3985,9 +4203,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "3.0.12" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f0fde9bc91026e381155f8c67cb354bcd35260b2f4a29bcc84639f762760c39" +checksum = "99ba1025f18a4a3fc3e9b48c868e9beb4f24f4b4b1a325bada26bd4119f46537" dependencies = [ "base64", "cookie_store", @@ -4001,14 +4219,14 @@ dependencies = [ "serde_json", "ureq-proto", "utf-8", - "webpki-roots 0.26.11", + "webpki-roots", ] [[package]] name = "ureq-proto" -version = "0.4.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59db78ad1923f2b1be62b6da81fe80b173605ca0d57f85da2e005382adf693f7" +checksum = "60b4531c118335662134346048ddb0e54cc86bd7e81866757873055f0e38f5d2" dependencies = [ "base64", "http", @@ -4018,9 +4236,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -4046,6 +4264,17 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "value-bag" version = "1.11.1" @@ -4095,57 +4324,59 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4153,22 +4384,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] @@ -4190,13 +4421,13 @@ dependencies = [ [[package]] name = "wayland-backend" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" +checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" dependencies = [ "cc", "downcast-rs", - "rustix 0.38.44", + "rustix 1.1.2", "scoped-tls", "smallvec", "wayland-sys", @@ -4204,12 +4435,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.10" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" +checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" dependencies = [ - "bitflags 2.9.1", - "rustix 0.38.44", + "bitflags 2.10.0", + "rustix 1.1.2", "wayland-backend", "wayland-scanner", ] @@ -4220,41 +4451,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.10" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65317158dec28d00416cb16705934070aef4f8393353d41126c54264ae0f182" +checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" dependencies = [ - "rustix 0.38.44", + "rustix 1.1.2", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.31.2" +version = "0.32.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" dependencies = [ - "bitflags 2.9.1", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols" -version = "0.32.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" -dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4262,48 +4481,35 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.2.0" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "wayland-backend", "wayland-client", - "wayland-protocols 0.31.2", + "wayland-protocols", "wayland-scanner", ] [[package]] name = "wayland-protocols-wlr" -version = "0.2.0" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "wayland-backend", "wayland-client", - "wayland-protocols 0.31.2", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-wlr" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" -dependencies = [ - "bitflags 2.9.1", - "wayland-backend", - "wayland-client", - "wayland-protocols 0.32.8", + "wayland-protocols", "wayland-scanner", ] [[package]] name = "wayland-scanner" -version = "0.31.6" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" +checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" dependencies = [ "proc-macro2", "quick-xml", @@ -4312,9 +4518,9 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.31.6" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" +checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" dependencies = [ "dlib", "log", @@ -4324,9 +4530,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.67" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -4334,9 +4540,9 @@ dependencies = [ [[package]] name = "web-time" -version = "0.2.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -4344,18 +4550,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.11" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.1", -] - -[[package]] -name = "webpki-roots" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ "rustls-pki-types", ] @@ -4378,7 +4575,7 @@ dependencies = [ "js-sys", "log", "naga", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "profiling", "raw-window-handle", "smallvec", @@ -4399,17 +4596,17 @@ checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg_aliases 0.1.1", "codespan-reporting", "indexmap", "log", "naga", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "profiling", "raw-window-handle", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", "thiserror 1.0.69", "web-sys", @@ -4427,7 +4624,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.9.1", + "bitflags 2.10.0", "block", "cfg_aliases 0.1.1", "core-graphics-types 0.1.3", @@ -4441,19 +4638,19 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.8", + "libloading 0.8.9", "log", "metal", "naga", - "ndk-sys", + "ndk-sys 0.5.0+25.2.9519653", "objc", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "profiling", "range-alloc", "raw-window-handle", "renderdoc-sys", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", "thiserror 1.0.69", "wasm-bindgen", @@ -4468,16 +4665,16 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "js-sys", "web-sys", ] [[package]] name = "widestring" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "win32console" @@ -4506,11 +4703,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4554,9 +4751,9 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.61.2" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", @@ -4567,46 +4764,46 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] name = "windows-link" -version = "0.1.3" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-result" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ "windows-link", ] @@ -4653,7 +4850,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", ] [[package]] @@ -4704,18 +4910,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -4738,9 +4945,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -4762,9 +4969,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -4786,9 +4993,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -4798,9 +5005,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -4822,9 +5029,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -4846,9 +5053,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -4870,9 +5077,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -4894,53 +5101,57 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" -version = "0.29.15" +version = "0.30.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" dependencies = [ - "ahash", + "ahash 0.8.12", "android-activity", "atomic-waker", - "bitflags 2.9.1", + "bitflags 2.10.0", + "block2 0.5.1", "bytemuck", - "calloop 0.12.4", - "cfg_aliases 0.1.1", + "calloop", + "cfg_aliases 0.2.1", + "concurrent-queue", "core-foundation 0.9.4", "core-graphics 0.23.2", "cursor-icon", - "icrate", + "dpi", "js-sys", "libc", - "log", - "memmap2 0.9.5", + "memmap2", "ndk", - "ndk-sys", - "objc2 0.4.1", - "once_cell", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", "orbclient", "percent-encoding", + "pin-project", "raw-window-handle", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "rustix 0.38.44", "sctk-adwaita", - "smithay-client-toolkit 0.18.1", + "smithay-client-toolkit", "smol_str", + "tracing", "unicode-segmentation", "wasm-bindgen", "wasm-bindgen-futures", "wayland-backend", "wayland-client", - "wayland-protocols 0.31.2", + "wayland-protocols", "wayland-protocols-plasma", "web-sys", "web-time", - "windows-sys 0.48.0", + "windows-sys 0.52.0", "x11-dl", "x11rb", "xkbcommon-dl", @@ -4948,13 +5159,22 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.11" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + [[package]] name = "winreg" version = "0.52.0" @@ -4976,13 +5196,10 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" @@ -5003,33 +5220,33 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.8.8", + "libloading 0.8.9", "once_cell", - "rustix 0.38.44", + "rustix 1.1.2", "x11rb-protocol", ] [[package]] name = "x11rb-protocol" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" [[package]] name = "xattr" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.0.7", + "rustix 1.1.2", ] [[package]] @@ -5038,13 +5255,23 @@ version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "xkbcommon-dl" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "dlib", "log", "once_cell", @@ -5059,15 +5286,9 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" - -[[package]] -name = "xxhash-rust" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] name = "yazi" @@ -5095,15 +5316,53 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", "synstructure", ] [[package]] name = "zbus" -version = "5.7.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a7c7cee313d044fca3f48fa782cb750c79e4ca76ba7bc7718cd4024cdf6f68" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener 5.4.1", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix 0.29.0", + "ordered-stream", + "rand 0.8.5", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros 4.4.0", + "zbus_names 3.0.0", + "zvariant 4.2.0", +] + +[[package]] +name = "zbus" +version = "5.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91" dependencies = [ "async-broadcast", "async-executor", @@ -5115,36 +5374,61 @@ dependencies = [ "async-trait", "blocking", "enumflags2", - "event-listener 5.4.0", + "event-listener 5.4.1", "futures-core", "futures-lite", "hex", - "nix", + "nix 0.30.1", "ordered-stream", "serde", "serde_repr", "tracing", "uds_windows", - "windows-sys 0.59.0", + "uuid", + "windows-sys 0.61.2", "winnow", - "zbus_macros", - "zbus_names", - "zvariant", + "zbus_macros 5.12.0", + "zbus_names 4.2.0", + "zvariant 5.8.0", ] [[package]] name = "zbus_macros" -version = "5.7.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17e7e5eec1550f747e71a058df81a9a83813ba0f6a95f39c4e218bdc7ba366a" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", - "zbus_names", - "zvariant", - "zvariant_utils", + "syn 2.0.108", + "zvariant_utils 2.1.0", +] + +[[package]] +name = "zbus_macros" +version = "5.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.108", + "zbus_names 4.2.0", + "zvariant 5.8.0", + "zvariant_utils 3.2.1", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant 4.2.0", ] [[package]] @@ -5156,7 +5440,7 @@ dependencies = [ "serde", "static_assertions", "winnow", - "zvariant", + "zvariant 5.8.0", ] [[package]] @@ -5167,22 +5451,22 @@ checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -5202,15 +5486,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] name = "zerotrie" @@ -5225,9 +5509,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -5242,7 +5526,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.108", ] [[package]] @@ -5256,42 +5540,78 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.5.3" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d30786f75e393ee63a21de4f9074d4c038d52c5b1bb4471f955db249f9dffb1" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive 4.2.0", +] + +[[package]] +name = "zvariant" +version = "5.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c" dependencies = [ "endi", "enumflags2", "serde", "url", "winnow", - "zvariant_derive", - "zvariant_utils", + "zvariant_derive 5.8.0", + "zvariant_utils 3.2.1", ] [[package]] name = "zvariant_derive" -version = "5.5.3" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75fda702cd42d735ccd48117b1630432219c0e9616bf6cb0f8350844ee4d9580" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", - "zvariant_utils", + "syn 2.0.108", + "zvariant_utils 2.1.0", +] + +[[package]] +name = "zvariant_derive" +version = "5.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.108", + "zvariant_utils 3.2.1", ] [[package]] name = "zvariant_utils" -version = "3.2.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "zvariant_utils" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599" dependencies = [ "proc-macro2", "quote", "serde", - "static_assertions", - "syn 2.0.104", + "syn 2.0.108", "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index 9fc33bb..9acd3ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ toml = "^0" dirs = "^6" ureq = { version = "3", features = ["json"] } retry = "^2.0.0" -iced = { version = "^0.12.0", features = ["advanced", "image"] } +iced = { version = "=0.13.1", features = ["advanced", "image"] } rfd = "^0.15" csv = "^1.3" diff --git a/src/core/adb.rs b/src/core/adb.rs index edc274a..4441a9c 100644 --- a/src/core/adb.rs +++ b/src/core/adb.rs @@ -431,6 +431,7 @@ impl UserInfo { /// Check if the user was logged-in /// at the time `pm list users` was invoked #[must_use] + #[allow(dead_code)] pub const fn was_running(&self) -> bool { self.running } diff --git a/src/core/helpers.rs b/src/core/helpers.rs index 01906e0..f216cc6 100644 --- a/src/core/helpers.rs +++ b/src/core/helpers.rs @@ -1,13 +1,12 @@ -use crate::core::theme::Theme; use crate::gui::style; +use iced::Element; use iced::widget::button; use iced::widget::button::Button; -use iced::{Element, Renderer}; /// Wrapper function for `iced::widget::button` with padding and style applied pub fn button_primary<'a, Message>( - content: impl Into>, -) -> Button<'a, Message, Theme, Renderer> { + content: impl Into>, +) -> Button<'a, Message, crate::core::theme::Theme> { button(content) .padding([5, 10]) .style(style::Button::Primary) diff --git a/src/gui/mod.rs b/src/gui/mod.rs index 44f59b2..9a11b56 100644 --- a/src/gui/mod.rs +++ b/src/gui/mod.rs @@ -18,10 +18,7 @@ use views::settings::{Message as SettingsMessage, Settings as SettingsView}; use widgets::navigation_menu::nav_menu; use iced::widget::column; -use iced::{ - Alignment, Application, Command, Element, Length, Renderer, Settings, - window::Settings as Window, -}; +use iced::{Alignment, Element, Length, Settings, Task, window::Settings as Window}; #[cfg(feature = "self-update")] use std::path::PathBuf; @@ -77,22 +74,17 @@ pub enum Message { ADBSatisfied(bool), } -impl Application for UadGui { - type Theme = Theme; - type Executor = iced::executor::Default; - type Message = Message; - type Flags = (); - - fn new(_flags: ()) -> (Self, Command) { +impl UadGui { + fn new() -> (Self, Task) { ( Self::default(), - Command::batch([ + Task::batch([ // Used in crate::gui::widgets::navigation_menu::ICONS. Name is `icomoon`. font::load(include_bytes!("../../resources/assets/icons.ttf").as_slice()) .map(Message::FontLoaded), - Command::perform(initial_load(), Message::ADBSatisfied), - Command::perform(get_devices_list(), Message::LoadDevices), - Command::perform( + Task::perform(initial_load(), Message::ADBSatisfied), + Task::perform(get_devices_list(), Message::LoadDevices), + Task::perform( async move { get_latest_release() }, Message::GetLatestRelease, ), @@ -100,15 +92,8 @@ impl Application for UadGui { ) } - fn theme(&self) -> Theme { - string_to_theme(&self.settings_view.general.theme) - } - - fn title(&self) -> String { - String::from("Universal Android Debloater Next Generation") - } #[allow(clippy::too_many_lines)] - fn update(&mut self, msg: Message) -> Command { + fn update(&mut self, msg: Message) -> Task { match msg { Message::LoadDevices(devices_list) => { self.selected_device = match &self.selected_device { @@ -132,19 +117,19 @@ impl Application for UadGui { } Message::AppsPress => { self.view = View::List; - Command::none() + Task::none() } Message::AboutPressed => { self.view = View::About; self.update_state.self_update = SelfUpdateState::default(); - Command::perform( + Task::perform( async move { get_latest_release() }, Message::GetLatestRelease, ) } Message::SettingsPressed => { self.view = View::Settings; - Command::none() + Task::none() } Message::RefreshButtonPressed => { self.apps_view = AppsView::default(); @@ -154,7 +139,7 @@ impl Application for UadGui { self.adb_satisfied, ))); } - Command::perform(get_devices_list(), Message::LoadDevices) + Task::perform(get_devices_list(), Message::LoadDevices) } Message::RebootButtonPressed => { self.apps_view = AppsView::default(); @@ -164,7 +149,7 @@ impl Application for UadGui { }; self.selected_device = None; self.devices_list = vec![]; - Command::perform( + Task::perform( async { adb::ACommand::new().shell(serial).reboot() }, |_| Message::Nothing, ) @@ -240,17 +225,17 @@ impl Application for UadGui { { self.update_state.self_update.status = SelfUpdateStatus::Updating; self.apps_view.loading_state = ListLoadingState::_UpdatingUad; - Command::perform( + Task::perform( download_update_to_temp_file(BIN_NAME, release.clone()), Message::_NewReleaseDownloaded, ) } else { - Command::none() + Task::none() } #[cfg(not(feature = "self-update"))] - Command::none() + Task::none() } - AboutMessage::UrlPressed(_) => Command::none(), + AboutMessage::UrlPressed(_) => Task::none(), } } Message::DeviceSelected(s_device) => { @@ -318,7 +303,7 @@ impl Application for UadGui { self.update_state.self_update.status = SelfUpdateStatus::Failed; } } - Command::none() + Task::none() } Message::GetLatestRelease(release) => { match release { @@ -328,14 +313,14 @@ impl Application for UadGui { } Err(()) => self.update_state.self_update.status = SelfUpdateStatus::Failed, } - Command::none() + Task::none() } Message::FontLoaded(result) => { if let Err(error) = result { error!("Couldn't load font: {error:?}"); } - Command::none() + Task::none() } Message::ADBSatisfied(result) => { self.adb_satisfied = result; @@ -343,11 +328,11 @@ impl Application for UadGui { self.adb_satisfied, ))) } - Message::Nothing => Command::none(), + Message::Nothing => Task::none(), } } - fn view(&self) -> Element<'_, Self::Message, Self::Theme, Renderer> { + fn view(&self) -> Element { let navigation_container = nav_menu( &self.devices_list, self.selected_device.clone(), @@ -373,9 +358,13 @@ impl Application for UadGui { column![navigation_container, main_container] .width(Length::Fill) - .align_items(Alignment::Center) + .align_x(Alignment::Center) .into() } + + fn theme(&self) -> Theme { + string_to_theme(&self.settings_view.general.theme) + } } impl UadGui { @@ -390,20 +379,27 @@ impl UadGui { } }; - Self::run(Settings { + iced::application( + "Universal Android Debloater Next Generation", + UadGui::update, + UadGui::view, + ) + .theme(UadGui::theme) + .settings(Settings { id: Some(String::from(NAME)), - window: Window { - size: iced::Size { - width: 950.0, - height: 700.0, - }, - resizable: true, - decorations: true, - icon: icon::from_file_data(logo, Some(ImageFormat::Png)).ok(), - ..iced::window::Settings::default() - }, default_text_size: iced::Pixels(16.0), ..Settings::default() }) + .window(Window { + size: iced::Size { + width: 950.0, + height: 700.0, + }, + resizable: true, + decorations: true, + icon: icon::from_file_data(logo, Some(ImageFormat::Png)).ok(), + ..iced::window::Settings::default() + }) + .run_with(UadGui::new) } } diff --git a/src/gui/style.rs b/src/gui/style.rs index 05ed2fc..5e6962a 100644 --- a/src/gui/style.rs +++ b/src/gui/style.rs @@ -1,21 +1,12 @@ use crate::core::theme::Theme; -use iced::overlay::menu; -use iced::widget::text_editor; use iced::widget::{ - button, checkbox, container, pick_list, radio, rule, scrollable, text, text_input, + button, checkbox, container, overlay, pick_list, radio, scrollable, text, text_editor, + text_input, }; use iced::{Background, Border, Color, Shadow, application}; -#[derive(Default, Debug, Clone, Copy)] -pub enum Application { - #[default] - Default, -} - -impl application::StyleSheet for Theme { - type Style = Application; - - fn appearance(&self, _style: &Self::Style) -> application::Appearance { +impl application::DefaultStyle for Theme { + fn default_style(&self) -> application::Appearance { let p = self.palette(); application::Appearance { background_color: p.base.background, @@ -24,111 +15,451 @@ impl application::StyleSheet for Theme { } } -#[derive(Default, Debug, Clone, Copy)] -pub enum Container { - #[default] - Invisible, - Frame, - BorderedFrame, - Tooltip, - Background, +// Implement theming catalogs for our custom `Theme` so generic widgets +// like `Button<'_, Message, Theme, Renderer>` compile under iced 0.13. + +impl button::Catalog for Theme { + type Class<'a> = button::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme, s: button::Status| Button::Primary(t, s)) + } + + fn style( + &self, + class: &::Class<'_>, + status: button::Status, + ) -> button::Style { + (class)(self, status) + } } -impl container::StyleSheet for Theme { - type Style = Container; +impl checkbox::Catalog for Theme { + type Class<'a> = checkbox::StyleFn<'a, Theme>; - fn appearance(&self, style: &Self::Style) -> container::Appearance { - let pal = self.palette(); - match style { - Container::Invisible => container::Appearance::default(), - Container::Frame => container::Appearance { - background: Some(Background::Color(pal.base.foreground)), - text_color: Some(pal.bright.surface), + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme, s: checkbox::Status| CheckBox::SettingsEnabled(t, s)) + } + + fn style( + &self, + class: &::Class<'_>, + status: checkbox::Status, + ) -> checkbox::Style { + (class)(self, status) + } +} + +impl container::Catalog for Theme { + type Class<'a> = container::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme| Container::Background(t)) + } + + fn style(&self, class: &::Class<'_>) -> container::Style { + (class)(self) + } +} + +impl scrollable::Catalog for Theme { + type Class<'a> = scrollable::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme, s: scrollable::Status| Scrollable::Description(t, s)) + } + + fn style( + &self, + class: &::Class<'_>, + status: scrollable::Status, + ) -> scrollable::Style { + (class)(self, status) + } +} + +impl text::Catalog for Theme { + type Class<'a> = text::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme| Text::Default(t)) + } + + fn style(&self, class: &::Class<'_>) -> text::Style { + (class)(self) + } +} + +// Additional catalogs required by Iced 0.13 generic theming + +impl text_input::Catalog for Theme { + type Class<'a> = text_input::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme, s: text_input::Status| { + let p = t.palette(); + + let active = text_input::Style { + background: Background::Color(p.base.foreground), border: Border { - color: Color::TRANSPARENT, + color: p.base.foreground, width: 0.0, radius: 5.0.into(), }, - ..container::Appearance::default() - }, - Container::BorderedFrame => container::Appearance { - background: Some(Background::Color(pal.base.foreground)), - text_color: Some(pal.bright.surface), - border: Border { - color: pal.normal.error, - width: 1.0, - radius: 5.0.into(), + icon: Color { + a: 0.5, + ..p.normal.primary }, - shadow: Shadow::default(), - }, - Container::Tooltip => container::Appearance { - background: Some(Background::Color(pal.base.foreground)), - text_color: Some(pal.bright.surface), - border: Border { - color: pal.normal.primary, - width: 1.0, - radius: 8.0.into(), - }, - shadow: Shadow::default(), - }, + placeholder: p.normal.surface, + value: p.bright.primary, + selection: p.normal.primary, + }; - Container::Background => container::Appearance { - background: Some(Background::Color(pal.base.background)), - text_color: Some(pal.bright.surface), + let focused = text_input::Style { + background: Background::Color(p.base.foreground), + border: Border { + color: Color { + a: 0.5, + ..p.normal.primary + }, + width: 1.0, + radius: 2.0.into(), + }, + icon: Color { + a: 0.5, + ..p.normal.primary + }, + placeholder: p.normal.surface, + value: p.bright.primary, + selection: p.normal.primary, + }; + + let disabled = text_input::Style { + background: Background::Color(p.base.background), + border: Border { + color: Color { + a: 0.5, + ..p.base.foreground + }, + width: 1.0, + radius: 2.0.into(), + }, + icon: Color { + a: 0.5, + ..p.base.foreground + }, + placeholder: p.normal.surface, + value: p.bright.primary, + selection: p.normal.primary, + }; + + match s { + text_input::Status::Active => active, + text_input::Status::Focused | text_input::Status::Hovered => focused, + text_input::Status::Disabled => disabled, + } + }) + } + + fn style( + &self, + class: &::Class<'_>, + status: text_input::Status, + ) -> text_input::Style { + (class)(self, status) + } +} + +impl pick_list::Catalog for Theme { + type Class<'a> = pick_list::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme, s: pick_list::Status| { + let p = t.palette(); + let border_color = match s { + pick_list::Status::Hovered => p.normal.primary, + _ => Color { + a: 0.5, + ..p.normal.primary + }, + }; + pick_list::Style { + text_color: p.bright.surface, + placeholder_color: p.bright.surface, + handle_color: p.bright.surface, + background: Background::Color(p.base.background.into()), + border: Border { + color: border_color, + width: 1.0, + radius: 2.0.into(), + }, + } + }) + } + + fn style( + &self, + class: &::Class<'_>, + status: pick_list::Status, + ) -> pick_list::Style { + (class)(self, status) + } +} + +impl overlay::menu::Catalog for Theme { + type Class<'a> = overlay::menu::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme| { + let p = t.palette(); + overlay::menu::Style { + text_color: p.bright.surface, + background: p.base.background.into(), + border: Border { + color: p.base.background, + width: 1.0, + radius: 2.0.into(), + }, + selected_text_color: p.bright.surface, + selected_background: p.normal.primary.into(), + } + }) + } + + fn style(&self, class: &::Class<'_>) -> overlay::menu::Style { + (class)(self) + } +} + +impl radio::Catalog for Theme { + type Class<'a> = radio::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme, s: radio::Status| { + let p = t.palette(); + let active = radio::Style { + background: Color::TRANSPARENT.into(), + dot_color: p.bright.primary, + border_width: 1.0, + border_color: p.bright.primary, + text_color: None, + }; + + match s { + radio::Status::Active { .. } => active, + radio::Status::Hovered { .. } => radio::Style { + border_width: 2.0, + ..active + }, + } + }) + } + + fn style( + &self, + class: &::Class<'_>, + status: radio::Status, + ) -> radio::Style { + (class)(self, status) + } +} + +impl text_editor::Catalog for Theme { + type Class<'a> = text_editor::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme, s: text_editor::Status| { + let p = t.palette(); + let active = text_editor::Style { + background: Background::Color(p.base.foreground), border: Border { color: Color::TRANSPARENT, width: 0.0, - radius: 5.0.into(), + radius: 0.0.into(), }, - ..container::Appearance::default() + icon: p.bright.surface, + placeholder: p.normal.surface, + value: p.bright.surface, + selection: Color { + a: 0.3, + ..p.normal.primary + }, + }; + match s { + text_editor::Status::Active + | text_editor::Status::Focused + | text_editor::Status::Hovered => active, + text_editor::Status::Disabled => active, + } + }) + } + + fn style( + &self, + class: &::Class<'_>, + status: text_editor::Status, + ) -> text_editor::Style { + (class)(self, status) + } +} + +// Rule styling for custom Theme (needed by vertical_rule) +impl iced::widget::rule::Catalog for Theme { + type Class<'a> = iced::widget::rule::StyleFn<'a, Theme>; + + fn default<'a>() -> ::Class<'a> { + Box::new(|t: &Theme| { + let p = t.palette(); + iced::widget::rule::Style { + color: p.bright.surface, + width: 2, + radius: 2.0.into(), + fill_mode: iced::widget::rule::FillMode::Full, + } + }) + } + + fn style( + &self, + class: &::Class<'_>, + ) -> iced::widget::rule::Style { + (class)(self) + } +} + +#[allow(non_snake_case)] +pub mod Container { + use super::*; + + #[allow(dead_code)] + pub fn Invisible(_: &Theme) -> container::Style { + container::Style::default() + } + + pub fn Frame(theme: &Theme) -> container::Style { + let p = theme.palette(); + container::Style { + background: Some(Background::Color(p.base.foreground)), + text_color: Some(p.bright.surface), + border: Border { + color: Color::TRANSPARENT, + width: 0.0, + radius: 5.0.into(), }, + shadow: Shadow::default(), + } + } + + pub fn BorderedFrame(theme: &Theme) -> container::Style { + let p = theme.palette(); + container::Style { + background: Some(Background::Color(p.base.foreground)), + text_color: Some(p.bright.surface), + border: Border { + color: p.normal.error, + width: 1.0, + radius: 5.0.into(), + }, + shadow: Shadow::default(), + } + } + + #[allow(dead_code)] + pub fn Tooltip(theme: &Theme) -> container::Style { + let p = theme.palette(); + container::Style { + background: Some(Background::Color(p.base.foreground)), + text_color: Some(p.bright.surface), + border: Border { + color: p.normal.primary, + width: 1.0, + radius: 8.0.into(), + }, + shadow: Shadow::default(), + } + } + + pub fn Background(theme: &Theme) -> container::Style { + let p = theme.palette(); + container::Style { + background: Some(Background::Color(p.base.background)), + text_color: Some(p.bright.surface), + border: Border { + color: Color::TRANSPARENT, + width: 0.0, + radius: 5.0.into(), + }, + shadow: Shadow::default(), } } } -#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)] -pub enum Button { - #[default] - Primary, - Unavailable, - SelfUpdate, - UninstallPackage, - RestorePackage, - NormalPackage, - SelectedPackage, - Hidden, -} +#[allow(non_snake_case)] +pub mod Button { + use super::*; -impl button::StyleSheet for Theme { - type Style = Button; - - fn active(&self, style: &Self::Style) -> button::Appearance { - let p = self.palette(); - - let appearance = button::Appearance { + #[allow(dead_code)] + fn base(border_color: Color) -> button::Style { + button::Style { + background: None, + text_color: Color::WHITE, border: Border { - color: p.normal.primary, + color: border_color, width: 1.0, radius: 2.0.into(), }, - ..button::Appearance::default() - }; + shadow: Shadow::default(), + } + } - let active_appearance = |bg: Option, mc| button::Appearance { - background: Some(Background::Color(bg.unwrap_or(p.base.foreground))), - border: Border { - color: Color { a: 0.5, ..mc }, - width: 1.0, - radius: 2.0.into(), - }, - text_color: mc, - ..appearance - }; + pub fn Primary(theme: &Theme, status: button::Status) -> button::Style { + let p = theme.palette(); + let mut style = style_active_hover_disabled(p.bright.primary, p.bright.primary, status); + if matches!(status, button::Status::Active | button::Status::Pressed) { + style.background = Some(Background::Color(p.base.foreground)); + } + style + } - match style { - Button::Primary | Button::SelfUpdate => active_appearance(None, p.bright.primary), - Button::RestorePackage => active_appearance(None, p.bright.secondary), - Button::NormalPackage => button::Appearance { + #[allow(dead_code)] + pub fn SelfUpdate(theme: &Theme, status: button::Status) -> button::Style { + Primary(theme, status) + } + + pub fn RestorePackage(theme: &Theme, status: button::Status) -> button::Style { + let p = theme.palette(); + let mut style = style_active_hover_disabled(p.bright.secondary, p.bright.secondary, status); + if matches!(status, button::Status::Active | button::Status::Pressed) { + style.background = Some(Background::Color(p.base.foreground)); + } + if matches!(status, button::Status::Disabled) { + style.background = Some(Background::Color(Color { + a: 0.05, + ..p.normal.primary + })); + style.text_color = p.bright.primary; + } + style + } + + pub fn UninstallPackage(theme: &Theme, status: button::Status) -> button::Style { + let p = theme.palette(); + let mut style = style_active_hover_disabled(p.bright.error, p.bright.error, status); + if matches!(status, button::Status::Active | button::Status::Pressed) { + style.background = Some(Background::Color(p.base.foreground)); + } + style + } + + #[allow(dead_code)] + pub fn Unavailable(theme: &Theme, status: button::Status) -> button::Style { + UninstallPackage(theme, status) + } + + pub fn NormalPackage(theme: &Theme, status: button::Status) -> button::Style { + let p = theme.palette(); + match status { + button::Status::Active | button::Status::Pressed => button::Style { background: Some(Background::Color(p.base.foreground)), text_color: p.bright.surface, border: Border { @@ -136,493 +467,251 @@ impl button::StyleSheet for Theme { width: 0.0, radius: 5.0.into(), }, - ..appearance + shadow: Shadow::default(), }, - Button::SelectedPackage => button::Appearance { + button::Status::Hovered => button::Style { background: Some(Background::Color(Color { a: 0.25, ..p.normal.primary })), - text_color: p.bright.primary, + text_color: p.bright.surface, border: Border { - color: p.normal.primary, + color: p.base.background, width: 0.0, radius: 5.0.into(), }, - ..appearance + shadow: Shadow::default(), }, - Button::Unavailable | Button::UninstallPackage => { - active_appearance(None, p.bright.error) - } - Button::Hidden => button::Appearance { - background: Some(Background::Color(Color::TRANSPARENT)), - text_color: Color::TRANSPARENT, + button::Status::Disabled => button::Style { + background: Some(Background::Color(p.base.foreground)), + text_color: p.bright.surface, border: Border { - color: Color::TRANSPARENT, + color: p.base.background, width: 0.0, radius: 5.0.into(), }, - ..appearance + shadow: Shadow::default(), }, } } - fn hovered(&self, style: &Self::Style) -> button::Appearance { - let active = self.active(style); - let p = self.palette(); - - let hover_appearance = |bg, tc: Option| button::Appearance { - background: Some(Background::Color(Color { a: 0.25, ..bg })), - text_color: tc.unwrap_or(bg), - ..active - }; - - match style { - Button::Primary | Button::SelfUpdate => hover_appearance(p.bright.primary, None), - Button::NormalPackage => hover_appearance(p.normal.primary, Some(p.bright.surface)), - Button::SelectedPackage => hover_appearance(p.normal.primary, None), - Button::RestorePackage => hover_appearance(p.bright.secondary, None), - Button::Unavailable | Button::UninstallPackage => { - hover_appearance(p.bright.error, None) - } - Button::Hidden => hover_appearance(Color::TRANSPARENT, None), - } - } - - fn pressed(&self, style: &Self::Style) -> button::Appearance { - self.active(style) - } - - fn disabled(&self, style: &Self::Style) -> button::Appearance { - let active = self.active(style); - let p = self.palette(); - - let disabled_appearance = |bg, tc: Option| button::Appearance { - background: Some(Background::Color(Color { a: 0.05, ..bg })), - text_color: Color { - a: 0.50, - ..tc.unwrap_or(bg) - }, - ..active - }; - - match style { - Button::RestorePackage => disabled_appearance(p.normal.primary, Some(p.bright.primary)), - Button::UninstallPackage => disabled_appearance(p.bright.error, None), - Button::Primary => disabled_appearance(p.bright.primary, Some(p.bright.primary)), - _ => active, - } - } -} - -#[derive(Default, Debug, Clone, Copy)] -pub enum Scrollable { - #[default] - Description, - Packages, -} - -impl scrollable::StyleSheet for Theme { - type Style = Scrollable; - - fn active(&self, style: &Self::Style) -> scrollable::Appearance { - let from_appearance = |c: Color| scrollable::Appearance { - container: container::Appearance::default(), - gap: Some(Background::Color(Color::TRANSPARENT)), - scrollbar: scrollable::Scrollbar { - background: Some(Background::Color(Color::TRANSPARENT)), - border: Border { - color: Color::TRANSPARENT, - width: 0.0, - radius: 5.0.into(), - }, - scroller: scrollable::Scroller { - color: c, - border: Border { - color: Color::TRANSPARENT, - width: 1.0, - radius: 5.0.into(), - }, - }, - }, - }; - let p = self.palette(); - match style { - Scrollable::Description => from_appearance(p.normal.surface), - Scrollable::Packages => from_appearance(p.base.foreground), - } - } - - fn hovered(&self, style: &Self::Style, _mouse_over_scrollbar: bool) -> scrollable::Appearance { - scrollable::Appearance { - scrollbar: self.active(style).scrollbar, - ..self.active(style) - } - } - - fn dragging(&self, style: &Self::Style) -> scrollable::Appearance { - let hovered = self.hovered(style, true); - scrollable::Appearance { - scrollbar: hovered.scrollbar, - ..hovered - } - } -} - -#[derive(Default, Debug, Clone, Copy)] -pub enum CheckBox { - #[default] - PackageEnabled, - PackageDisabled, - SettingsEnabled, - SettingsDisabled, -} - -impl checkbox::StyleSheet for Theme { - type Style = CheckBox; - - fn active(&self, style: &Self::Style, _is_checked: bool) -> checkbox::Appearance { - let pal = self.palette(); - match style { - CheckBox::PackageEnabled => checkbox::Appearance { - background: Background::Color(pal.base.background), - icon_color: pal.bright.primary, - border: Border { - color: pal.base.background, - width: 1.0, - radius: 5.0.into(), - }, - text_color: Some(pal.bright.surface), - }, - CheckBox::PackageDisabled => checkbox::Appearance { - background: Background::Color(Color { - a: 0.55, - ..pal.base.background - }), - - icon_color: pal.bright.primary, - border: Border { - color: pal.normal.primary, - width: 1.0, - radius: 5.0.into(), - }, - text_color: Some(pal.normal.primary), - }, - CheckBox::SettingsEnabled => checkbox::Appearance { - background: Background::Color(pal.base.background), - icon_color: pal.bright.primary, - border: Border { - color: pal.bright.primary, - width: 1.0, - radius: 5.0.into(), - }, - text_color: Some(pal.bright.surface), - }, - CheckBox::SettingsDisabled => checkbox::Appearance { - background: Background::Color(pal.base.foreground), - icon_color: pal.bright.primary, - border: Border { - color: pal.normal.primary, - width: 1.0, - radius: 5.0.into(), - }, - text_color: Some(pal.bright.surface), - }, - } - } - - fn hovered(&self, style: &Self::Style, is_checked: bool) -> checkbox::Appearance { - let p = self.palette(); - let from_appearance = || checkbox::Appearance { - background: Background::Color(p.base.foreground), - icon_color: p.bright.primary, + pub fn SelectedPackage(theme: &Theme, _status: button::Status) -> button::Style { + let p = theme.palette(); + button::Style { + background: Some(Background::Color(Color { + a: 0.25, + ..p.normal.primary + })), + text_color: p.bright.primary, border: Border { - color: p.bright.primary, - width: 2.0, - radius: 5.0.into(), - }, - text_color: Some(p.bright.surface), - }; - - match style { - CheckBox::PackageEnabled | CheckBox::SettingsEnabled => from_appearance(), - CheckBox::PackageDisabled | CheckBox::SettingsDisabled => { - self.active(style, is_checked) - } - } - } -} - -#[derive(Default, Debug, Clone, Copy)] -pub enum TextInput { - #[default] - Default, -} - -impl text_input::StyleSheet for Theme { - type Style = TextInput; - - fn active(&self, _style: &Self::Style) -> text_input::Appearance { - let p = self.palette(); - text_input::Appearance { - background: Background::Color(p.base.foreground), - border: Border { - color: p.base.foreground, + color: p.normal.primary, width: 0.0, radius: 5.0.into(), }, - icon_color: Color { - a: 0.5, - ..p.normal.primary - }, + shadow: Shadow::default(), } } - fn focused(&self, _style: &Self::Style) -> text_input::Appearance { - let p = self.palette(); - text_input::Appearance { - background: Background::Color(p.base.foreground), + #[allow(dead_code)] + pub fn Hidden(_: &Theme, _: button::Status) -> button::Style { + button::Style { + background: Some(Background::Color(Color::TRANSPARENT)), + text_color: Color::TRANSPARENT, border: Border { - color: Color { - a: 0.5, - ..p.normal.primary - }, - width: 1.0, - radius: 2.0.into(), - }, - icon_color: Color { - a: 0.5, - ..p.normal.primary - }, - } - } - - fn disabled_color( - &self, - _: &::Style, - ) -> iced::Color { - todo!() - } - - fn disabled(&self, _style: &Self::Style) -> text_input::Appearance { - let p = self.palette(); - text_input::Appearance { - background: Background::Color(p.base.background), - border: Border { - color: Color { - a: 0.5, - ..p.base.foreground - }, - width: 1.0, - radius: 2.0.into(), - }, - icon_color: Color { - a: 0.5, - ..p.base.foreground - }, - } - } - - fn placeholder_color(&self, _style: &Self::Style) -> Color { - self.palette().normal.surface - } - - fn value_color(&self, _style: &Self::Style) -> Color { - self.palette().bright.primary - } - - fn selection_color(&self, _style: &Self::Style) -> Color { - self.palette().normal.primary - } - - /// Produces the style of an hovered text input. - fn hovered(&self, style: &Self::Style) -> text_input::Appearance { - self.focused(style) - } -} - -impl menu::StyleSheet for Theme { - type Style = (); - - fn appearance(&self, _style: &Self::Style) -> menu::Appearance { - let p = self.palette(); - - menu::Appearance { - text_color: p.bright.surface, - background: p.base.background.into(), - border: Border { - color: p.base.background, - width: 1.0, - radius: 2.0.into(), - }, - selected_text_color: p.bright.surface, - selected_background: p.normal.primary.into(), - } - } -} - -impl pick_list::StyleSheet for Theme { - type Style = (); - - fn active(&self, _style: &()) -> pick_list::Appearance { - let p = self.palette(); - - pick_list::Appearance { - text_color: p.bright.surface, - background: p.base.background.into(), - border: Border { - color: Color { - a: 0.5, - ..p.normal.primary - }, - width: 1.0, - radius: 2.0.into(), - }, - handle_color: p.bright.surface, - placeholder_color: p.bright.surface, - } - } - - fn hovered(&self, style: &()) -> pick_list::Appearance { - let active = self.active(style); - pick_list::Appearance { - border: Border { - color: self.palette().normal.primary, - width: 1.0, - radius: 2.0.into(), - }, - ..active - } - } -} - -#[derive(Default, Clone, Copy)] -pub enum Text { - #[default] - Default, - Ok, - Danger, - Commentary, - Color(Color), -} - -impl From for Text { - fn from(color: Color) -> Self { - Self::Color(color) - } -} - -impl text::StyleSheet for Theme { - type Style = Text; - - fn appearance(&self, style: Self::Style) -> text::Appearance { - let p = self.palette(); - match style { - Text::Default => text::Appearance::default(), - Text::Ok => text::Appearance { - color: Some(p.bright.secondary), - }, - Text::Danger => text::Appearance { - color: Some(p.bright.error), - }, - Text::Commentary => text::Appearance { - color: Some(p.normal.surface), - }, - Text::Color(c) => text::Appearance { color: Some(c) }, - } - } -} - -impl radio::StyleSheet for Theme { - type Style = (); - - fn active(&self, _style: &Self::Style, _is_selected: bool) -> radio::Appearance { - let p = self.palette(); - radio::Appearance { - background: Color::TRANSPARENT.into(), - dot_color: p.bright.primary, - border_width: 1.0, - border_color: p.bright.primary, - text_color: None, - } - } - - fn hovered(&self, style: &Self::Style, _is_selected: bool) -> radio::Appearance { - let p = self.palette(); - let active = self.active(style, true); - - radio::Appearance { - dot_color: p.bright.primary, - border_color: p.bright.primary, - border_width: 2.0, - ..active - } - } -} - -impl text_editor::StyleSheet for Theme { - type Style = (); - - fn active(&self, _style: &Self::Style) -> text_editor::Appearance { - let p = self.palette(); - text_editor::Appearance { - background: Background::Color(p.base.foreground), - border: Border { - width: 0.0, - radius: 0.0.into(), color: Color::TRANSPARENT, + width: 0.0, + radius: 5.0.into(), + }, + shadow: Shadow::default(), + } + } + + fn style_active_hover_disabled( + main: Color, + text: Color, + status: button::Status, + ) -> button::Style { + match status { + button::Status::Active | button::Status::Pressed => button::Style { + background: Some(Background::Color(main)), + text_color: text, + border: Border { + color: Color { a: 0.5, ..main }, + width: 1.0, + radius: 2.0.into(), + }, + shadow: Shadow::default(), + }, + button::Status::Hovered => button::Style { + background: Some(Background::Color(Color { a: 0.25, ..main })), + text_color: text, + border: Border { + color: Color { a: 0.5, ..main }, + width: 1.0, + radius: 2.0.into(), + }, + shadow: Shadow::default(), + }, + button::Status::Disabled => button::Style { + background: Some(Background::Color(Color { a: 0.05, ..main })), + text_color: Color { a: 0.5, ..text }, + border: Border { + color: Color { a: 0.5, ..main }, + width: 1.0, + radius: 2.0.into(), + }, + shadow: Shadow::default(), }, } } - - fn focused(&self, style: &Self::Style) -> text_editor::Appearance { - self.active(style) - } - - fn placeholder_color(&self, _style: &Self::Style) -> Color { - self.palette().normal.surface - } - - fn value_color(&self, _style: &Self::Style) -> Color { - self.palette().bright.surface - } - - fn disabled_color(&self, _style: &Self::Style) -> Color { - self.palette().normal.surface - } - - fn selection_color(&self, _style: &Self::Style) -> Color { - let p = self.palette(); - Color { - a: 0.3, - ..p.normal.primary - } - } - - fn disabled(&self, style: &Self::Style) -> text_editor::Appearance { - self.active(style) - } } -#[derive(Default, Clone, Copy)] -pub enum Rule { - #[default] - Default, -} +#[allow(non_snake_case)] +pub mod Scrollable { + use super::*; -impl rule::StyleSheet for Theme { - type Style = Rule; - - fn appearance(&self, style: &Self::Style) -> rule::Appearance { - match style { - Rule::Default => rule::Appearance { - color: self.palette().bright.surface, - width: 2, - radius: 2.0.into(), - fill_mode: rule::FillMode::Full, + #[allow(dead_code)] + fn rails(scroller_color: Color) -> (scrollable::Rail, scrollable::Rail) { + let rail = scrollable::Rail { + background: Some(Background::Color(Color::TRANSPARENT)), + border: Border { + color: Color::TRANSPARENT, + width: 0.0, + radius: 5.0.into(), }, + scroller: scrollable::Scroller { + color: scroller_color, + border: Border { + color: Color::TRANSPARENT, + width: 1.0, + radius: 5.0.into(), + }, + }, + }; + (rail, rail) + } + + pub fn Description(theme: &Theme, _status: scrollable::Status) -> scrollable::Style { + let p = theme.palette(); + let (v, h) = rails(p.normal.surface); + scrollable::Style { + container: container::Style::default(), + vertical_rail: v, + horizontal_rail: h, + gap: Some(Background::Color(Color::TRANSPARENT)), } } + + pub fn Packages(theme: &Theme, _status: scrollable::Status) -> scrollable::Style { + let p = theme.palette(); + let (v, h) = rails(p.base.foreground); + scrollable::Style { + container: container::Style::default(), + vertical_rail: v, + horizontal_rail: h, + gap: Some(Background::Color(Color::TRANSPARENT)), + } + } +} + +#[allow(non_snake_case)] +pub mod CheckBox { + use super::*; + + pub fn PackageEnabled(theme: &Theme, _status: checkbox::Status) -> checkbox::Style { + let pal = theme.palette(); + checkbox::Style { + background: Background::Color(pal.base.background), + icon_color: pal.bright.primary, + border: Border { + color: pal.base.background, + width: 1.0, + radius: 5.0.into(), + }, + text_color: Some(pal.bright.surface), + } + } + + pub fn PackageDisabled(theme: &Theme, _status: checkbox::Status) -> checkbox::Style { + let pal = theme.palette(); + checkbox::Style { + background: Background::Color(Color { + a: 0.55, + ..pal.base.background + }), + icon_color: pal.bright.primary, + border: Border { + color: pal.normal.primary, + width: 1.0, + radius: 5.0.into(), + }, + text_color: Some(pal.normal.primary), + } + } + + pub fn SettingsEnabled(theme: &Theme, _status: checkbox::Status) -> checkbox::Style { + let pal = theme.palette(); + checkbox::Style { + background: Background::Color(pal.base.background), + icon_color: pal.bright.primary, + border: Border { + color: pal.bright.primary, + width: 1.0, + radius: 5.0.into(), + }, + text_color: Some(pal.bright.surface), + } + } + + pub fn SettingsDisabled(theme: &Theme, _status: checkbox::Status) -> checkbox::Style { + let pal = theme.palette(); + checkbox::Style { + background: Background::Color(pal.base.foreground), + icon_color: pal.bright.primary, + border: Border { + color: pal.normal.primary, + width: 1.0, + radius: 5.0.into(), + }, + text_color: Some(pal.bright.surface), + } + } +} + +#[allow(non_snake_case)] +pub mod Text { + use super::*; + + pub fn Default(theme: &Theme) -> text::Style { + let _ = theme; + text::Style::default() + } + + pub fn Ok(theme: &Theme) -> text::Style { + let p = theme.palette(); + text::Style { + color: Some(p.bright.secondary), + } + } + + pub fn Danger(theme: &Theme) -> text::Style { + let p = theme.palette(); + text::Style { + color: Some(p.bright.error), + } + } + + pub fn Commentary(theme: &Theme) -> text::Style { + let p = theme.palette(); + text::Style { + color: Some(p.normal.surface), + } + } + + #[allow(dead_code)] + pub fn Color(c: Color) -> impl Fn(&Theme) -> text::Style { + move |_t: &Theme| text::Style { color: Some(c) } + } } // Unit tests diff --git a/src/gui/views/about.rs b/src/gui/views/about.rs index f9b11a9..8e0b75f 100644 --- a/src/gui/views/about.rs +++ b/src/gui/views/about.rs @@ -76,13 +76,13 @@ impl About { let last_self_update_text = text(self_update_text).style(style::Text::Default); row![uad_version_text, self_update_btn, last_self_update_text,] - .align_items(Alignment::Center) + .align_y(Alignment::Center) .spacing(10) .width(550) }; let uad_list_row = row![uad_list_text, uad_lists_btn, last_update_text,] - .align_items(Alignment::Center) + .align_y(Alignment::Center) .spacing(10) .width(550); @@ -112,20 +112,18 @@ impl About { } }) .width(250); - let adb_version_row = row![adb_version_text] - .align_items(Alignment::Center) - .width(550); + let adb_version_row = row![adb_version_text].align_y(Alignment::Center).width(550); #[cfg(feature = "self-update")] let update_column = column![uad_list_row, self_update_row, adb_version_row]; #[cfg(not(feature = "self-update"))] let update_column = column![uad_list_row, adb_version_row]; - let update_column = update_column.align_items(Alignment::Center).spacing(10); + let update_column = update_column.align_x(Alignment::Center).spacing(10); let update_container = container(update_column) .width(Length::Fill) - .center_x() + .center_x(Length::Fill) .padding(10) .style(style::Container::Frame); @@ -156,7 +154,7 @@ impl About { ] .width(Length::Fill) .spacing(20) - .align_items(Alignment::Center); + .align_x(Alignment::Center); container(content) .width(Length::Fill) diff --git a/src/gui/views/list.rs b/src/gui/views/list.rs index c74b519..7b4295f 100644 --- a/src/gui/views/list.rs +++ b/src/gui/views/list.rs @@ -18,7 +18,7 @@ use iced::widget::{ Column, Space, button, checkbox, column, container, horizontal_space, pick_list, radio, row, scrollable, text_editor, text_input, tooltip, vertical_rule, }; -use iced::{Alignment, Command, Element, Length, Renderer, alignment}; +use iced::{Alignment, Element, Length, Renderer, Task, alignment}; #[derive(Debug, Default, Clone)] pub struct PackageInfo { @@ -120,14 +120,14 @@ impl List { selected_device: &mut Phone, list_update_state: &mut UadListState, message: Message, - ) -> Command { + ) -> Task { let i_user = self.selected_user.unwrap_or_default().index; match message { Message::ModalHide => { self.selection_modal = false; self.error_modal = None; self.export_modal = false; - Command::none() + Task::none() } Message::ModalValidate => { let mut commands = vec![]; @@ -142,7 +142,7 @@ impl List { )); } self.selection_modal = false; - Command::batch(commands) + Task::batch(commands) } Message::RestoringDevice(output) => { if let Ok(p) = output { @@ -152,7 +152,7 @@ impl List { } else { self.loading_state = LoadingState::RestoringDevice("Error [TODO]".to_string()); } - Command::none() + Task::none() } Message::LoadUadList(remote) => { info!("{:-^65}", "-"); @@ -162,7 +162,7 @@ impl List { ); info!("{:-^65}", "-"); self.loading_state = LoadingState::DownloadingList; - Command::perform( + Task::perform( Self::init_apps_view(remote, selected_device.clone()), Message::LoadPhonePackages, ) @@ -171,7 +171,7 @@ impl List { self.loading_state = LoadingState::LoadingPackages; self.uad_lists.clone_from(&uad_list); *list_update_state = list_state; - Command::perform( + Task::perform( Self::load_packages( uad_list, selected_device.adb_id.clone(), @@ -189,7 +189,7 @@ impl List { self.selected_user = Some(User::default()); Self::filter_package_lists(self); self.loading_state = LoadingState::Ready; - Command::none() + Task::none() } Message::ToggleAllSelected(selected) => { for i in self.filtered_packages.clone() { @@ -204,27 +204,27 @@ impl List { } } self.all_selected = selected; - Command::none() + Task::none() } Message::SearchInputChanged(letter) => { self.input_value = letter; Self::filter_package_lists(self); - Command::none() + Task::none() } Message::ListSelected(list) => { self.selected_list = Some(list); Self::filter_package_lists(self); - Command::none() + Task::none() } Message::PackageStateSelected(package_state) => { self.selected_package_state = Some(package_state); Self::filter_package_lists(self); - Command::none() + Task::none() } Message::RemovalSelected(removal) => { self.selected_removal = Some(removal); Self::filter_package_lists(self); - Command::none() + Task::none() } Message::List(i_package, row_message) => { #[expect(unused_must_use, reason = "side-effect")] @@ -240,7 +240,7 @@ impl List { RowMessage::ToggleSelection(toggle) => { if package.removal == Removal::Unsafe && !settings.general.expert_mode { package.selected = false; - return Command::none(); + return Task::none(); } if settings.device.multi_user_mode { @@ -272,11 +272,11 @@ impl List { .retain(|&x| x.1 != i_package || x.0 != i_user); } } - Command::none() + Task::none() } RowMessage::ActionPressed => { self.phone_packages[i_user][i_package].selected = true; - Command::batch(build_action_pkg_commands( + Task::batch(build_action_pkg_commands( &self.phone_packages, selected_device, &settings.device, @@ -292,19 +292,19 @@ impl List { self.phone_packages[i_user][self.current_package_index].current = false; } self.current_package_index = i_package; - Command::none() + Task::none() } } } Message::ApplyActionOnSelection => { self.selection_modal = true; - Command::none() + Task::none() } Message::UserSelected(user) => { self.selected_user = Some(user); self.filtered_packages = (0..self.phone_packages[user.index].len()).collect(); Self::filter_package_lists(self); - Command::none() + Task::none() } Message::ChangePackageState(res) => { match res { @@ -320,7 +320,7 @@ impl List { self.error_modal = Some(err); } } - Command::none() + Task::none() } Message::ModalUserSelected(user) => { self.selected_user = Some(user); @@ -333,21 +333,21 @@ impl List { } Message::ClearSelectedPackages => { self.selected_packages = Vec::new(); - Command::none() + Task::none() } Message::ADBSatisfied(result) => { self.is_adb_satisfied = result; - Command::none() + Task::none() } Message::UpdateFailed => { self.loading_state = LoadingState::FailedToUpdate; - Command::none() + Task::none() } Message::GoToUrl(url) => { open_url(url); - Command::none() + Task::none() } - Message::ExportSelection => Command::perform( + Message::ExportSelection => Task::perform( export_selection(self.phone_packages[i_user].clone()), Message::SelectionExported, ), @@ -356,9 +356,9 @@ impl List { Ok(_) => self.export_modal = true, Err(err) => error!("Failed to export current selection: {err:?}"), } - Command::none() + Task::none() } - Message::Nothing => Command::none(), + Message::Nothing => Task::none(), Message::DescriptionEdit(action) => { match action { text_editor::Action::Edit(_) => { @@ -370,13 +370,13 @@ impl List { self.description_content.perform(action); } } - Command::none() + Task::none() } Message::CopyError(err) => { self.copy_confirmation = true; - Command::batch(vec![ + Task::batch(vec![ iced::clipboard::write::(err), - Command::perform( + Task::perform( // intentional delay async { std::thread::sleep(std::time::Duration::from_secs(1)) }, |()| Message::HideCopyConfirmation, @@ -385,7 +385,7 @@ impl List { } Message::HideCopyConfirmation => { self.copy_confirmation = false; - Command::none() + Task::none() } } } @@ -448,6 +448,7 @@ impl List { let select_all_checkbox = checkbox("", self.all_selected) .on_toggle(Message::ToggleAllSelected) + .size(20) .style(style::CheckBox::SettingsEnabled) .spacing(0); // no label, so remove space entirely @@ -473,18 +474,21 @@ impl List { ) .width(85); - let list_picklist = pick_list(UadList::ALL, self.selected_list, Message::ListSelected); + let list_picklist = + pick_list(UadList::ALL, self.selected_list, Message::ListSelected).width(92); let package_state_picklist = pick_list( PackageState::ALL, self.selected_package_state, Message::PackageStateSelected, - ); + ) + .width(115); let removal_picklist = pick_list( Removal::ALL, self.selected_removal, Message::RemovalSelected, - ); + ) + .width(140); row![ col_sel_all, @@ -495,9 +499,14 @@ impl List { list_picklist, ] .width(Length::Fill) - .align_items(Alignment::Center) + .align_y(Alignment::Center) .spacing(6) - .padding([0, 16, 0, 0]) + .padding(iced::Padding { + top: 0.0, + right: 16.0, + bottom: 0.0, + left: 0.0, + }) .into() } @@ -564,7 +573,7 @@ impl List { ] .width(Length::Fill) .spacing(10) - .align_items(Alignment::Center); + .align_y(Alignment::Center); let unavailable = container( column![ @@ -572,13 +581,13 @@ impl List { .style(style::Text::Danger), text("The most likely reason is that it is the user of your work profile (also called Secure Folder on Samsung devices). There's really no solution, other than completely disabling your work profile in your device settings.") .style(style::Text::Commentary) - .horizontal_alignment(alignment::Horizontal::Center), + .align_x(alignment::Horizontal::Center), ] .spacing(6) - .align_items(Alignment::Center) + .align_x(Alignment::Center) ) .padding(10) - .center_x() + .center_x(Length::Shrink) .style(style::Container::BorderedFrame); let control_panel = self.control_panel(selected_device); @@ -601,12 +610,14 @@ impl List { } else { column![ control_panel, - container(unavailable).height(Length::Fill).center_y(), + container(unavailable) + .height(Length::Fill) + .center_y(Length::Fill), ] } .width(Length::Fill) .spacing(10) - .align_items(Alignment::Center); + .align_x(Alignment::Center); if self.selection_modal { return Modal::new( @@ -622,12 +633,12 @@ impl List { } if self.export_modal { - let title = container(row![text("Success").size(24)].align_items(Alignment::Center)) + let title = container(row![text("Success").size(24)].align_y(Alignment::Center)) .width(Length::Fill) .style(style::Container::Frame) - .padding([10, 0, 10, 0]) - .center_y() - .center_x(); + .padding([10, 0]) + .center_y(Length::Shrink) + .center_x(Length::Shrink); let text_box = row![ text(format!("Exported current selection into file.\nFile is exported in same directory where {NAME} is located.")).width(Length::Fill), @@ -696,16 +707,16 @@ impl List { ); let title_ctn = - container(row![text("Review your selection").size(24)].align_items(Alignment::Center)) + container(row![text("Review your selection").size(24)].align_y(Alignment::Center)) .width(Length::Fill) .style(style::Container::Frame) - .padding([10, 0, 10, 0]) - .center_y() - .center_x(); + .padding([10, 0]) + .center_y(Length::Shrink) + .center_x(Length::Shrink); let users_ctn = container(radio_btn_users) .padding(10) - .center_x() + .center_x(Length::Shrink) .style(style::Container::Frame); let explaination_ctn = container( @@ -716,7 +727,7 @@ impl List { text("\u{EA0C}") .font(ICONS) .width(22) - .horizontal_alignment(alignment::Horizontal::Center) + .align_x(alignment::Horizontal::Center) .style(style::Text::Commentary), "Let's say you choose user 0. If a selected package on user 0\n\ is set to be uninstalled and if this same package is disabled on user 10,\n\ @@ -729,7 +740,7 @@ impl List { ] .spacing(10), ) - .center_x() + .center_x(Length::Shrink) .padding(10) .style(style::Container::BorderedFrame); @@ -738,7 +749,12 @@ impl List { horizontal_space(), button(text("Apply")).on_press(Message::ModalValidate), ] - .padding([0, 15, 10, 10]); + .padding(iced::Padding { + top: 0.0, + right: 15.0, + bottom: 10.0, + left: 10.0, + }); let recap_view = summaries .iter() @@ -768,11 +784,13 @@ impl List { row![text( self.phone_packages[selection.0][selection.1] .removal + .to_string() )] .width(120), row![text( self.phone_packages[selection.0][selection.1] .uad_list + .to_string() )] .width(50), row![text( @@ -810,7 +828,7 @@ impl List { ) } else { column![text("No packages selected for this user")] - .align_items(Alignment::Center) + .align_x(Alignment::Center) .width(Length::Fill) }, ) @@ -824,7 +842,7 @@ impl List { ) .width(Length::Fill) .max_height(150) - .padding([0, 10, 0, 10]); + .padding([0, 10]); container( if device.user_list.iter().filter(|&u| !u.protected).count() > 1 @@ -833,13 +851,13 @@ impl List { column![ title_ctn, users_ctn, - row![explaination_ctn].padding([0, 10, 0, 10]), + row![explaination_ctn].padding([0, 10]), container(recap_view).padding(10), selected_pkgs_ctn, modal_btn_row, ] .spacing(10) - .align_items(Alignment::Center) + .align_x(Alignment::Center) } else if !settings.device.multi_user_mode { column![ title_ctn, @@ -849,7 +867,7 @@ impl List { modal_btn_row, ] .spacing(10) - .align_items(Alignment::Center) + .align_x(Alignment::Center) } else { column![ title_ctn, @@ -858,7 +876,7 @@ impl List { modal_btn_row, ] .spacing(10) - .align_items(Alignment::Center) + .align_x(Alignment::Center) }, ) .width(900) @@ -936,13 +954,13 @@ fn error_view<'a>( copy_confirmation: bool, ) -> Modal<'a, Message, Theme, Renderer> { let title_ctn = container( - row![text("Failed to perform ADB operation").size(24)].align_items(Alignment::Center), + row![text("Failed to perform ADB operation").size(24)].align_y(Alignment::Center), ) .width(Length::Fill) .style(style::Container::Frame) - .padding([10, 0, 10, 0]) - .center_y() - .center_x(); + .padding([10, 0]) + .center_y(Length::Shrink) + .center_x(Length::Shrink); let modal_btn_row = row![ button( @@ -952,7 +970,7 @@ fn error_view<'a>( "Copy error" }) .width(Length::Fill) - .horizontal_alignment(alignment::Horizontal::Center), + .align_x(alignment::Horizontal::Center), ) .width(Length::Fill) .on_press_maybe(if copy_confirmation { @@ -963,17 +981,22 @@ fn error_view<'a>( .style(if copy_confirmation { style::Button::Primary } else { - style::Button::default() + style::Button::Primary }), button( text("Close") .width(Length::Fill) - .horizontal_alignment(alignment::Horizontal::Center), + .align_x(alignment::Horizontal::Center), ) .width(Length::Fill) .on_press(Message::ModalHide) ] - .padding([10, 0, 0, 0]); + .padding(iced::Padding { + top: 10.0, + right: 0.0, + bottom: 0.0, + left: 0.0, + }); let text_box = scrollable(text(error).width(Length::Fill)).height(400); @@ -989,11 +1012,11 @@ fn error_view<'a>( fn waiting_view<'a>( displayed_text: &(impl ToString + ?Sized), btn: Option>, - text_style: style::Text, + text_style: impl Fn(&Theme) -> iced::widget::text::Style + 'a, ) -> Element<'a, Message, Theme, Renderer> { let col = column![] .spacing(10) - .align_items(Alignment::Center) + .align_x(Alignment::Center) .push(text(displayed_text.to_string()).style(text_style).size(20)); let col = match btn { @@ -1004,9 +1027,9 @@ fn waiting_view<'a>( container(col) .width(Length::Fill) .height(Length::Fill) - .center_y() - .center_x() - .style(style::Container::default()) + .center_y(Length::Fill) + .center_x(Length::Fill) + .style(style::Container::Frame) .into() } @@ -1015,7 +1038,7 @@ fn build_action_pkg_commands( device: &Phone, settings: &DeviceSettings, selection: (usize, usize), -) -> Vec> { +) -> Vec> { let pkg = &packages[selection.0][selection.1]; let wanted_state = pkg.state.opposite(settings.disable_mode); @@ -1043,7 +1066,7 @@ fn build_action_pkg_commands( }; // In the end there is only one package state change // even if we run multiple adb commands - commands.push(Command::perform( + commands.push(Task::perform( adb_shell_command( // this is typically small, // so it's fine. @@ -1065,7 +1088,9 @@ fn build_action_pkg_commands( fn recap<'a>(settings: &Settings, recap: &SummaryEntry) -> Element<'a, Message, Theme, Renderer> { container( row![ - text(recap.category).size(19).width(Length::FillPortion(1)), + text(recap.category.to_string()) + .size(19) + .width(Length::FillPortion(1)), vertical_rule(5), row![ if settings.device.disable_mode { @@ -1090,9 +1115,14 @@ fn recap<'a>(settings: &Settings, recap: &SummaryEntry) -> Element<'a, Message, .width(Length::FillPortion(1)) ] .spacing(20) - .padding([0, 10, 0, 0]) + .padding(iced::Padding { + top: 0.0, + right: 10.0, + bottom: 0.0, + left: 0.0, + }) .width(Length::Fill) - .align_items(Alignment::Center), + .align_y(Alignment::Center), ) .padding(10) .width(Length::Fill) diff --git a/src/gui/views/settings.rs b/src/gui/views/settings.rs index 22e1d3c..19a022c 100644 --- a/src/gui/views/settings.rs +++ b/src/gui/views/settings.rs @@ -18,7 +18,7 @@ use crate::gui::{ widgets::text, }; use iced::widget::{Space, button, checkbox, column, container, pick_list, radio, row, scrollable}; -use iced::{Alignment, Element, Length, Renderer, alignment}; +use iced::{Alignment, Element, Length, Renderer, Task, alignment}; use std::path::PathBuf; #[derive(Debug, Clone)] @@ -74,17 +74,17 @@ impl Settings { nb_running_async_adb_commands: &mut u32, msg: Message, selected_user: Option, - ) -> iced::Command { + ) -> Task { match msg { Message::ModalHide => { self.modal = None; - iced::Command::none() + Task::none() } Message::ExpertMode(toggled) => { self.general.expert_mode = toggled; debug!("Config change: {self:?}"); Config::save_changes(self, &phone.adb_id); - iced::Command::none() + Task::none() } Message::DisableMode(toggled) => { if phone.android_sdk >= 23 { @@ -92,23 +92,23 @@ impl Settings { debug!("Config change: {self:?}"); Config::save_changes(self, &phone.adb_id); } - iced::Command::none() + Task::none() } Message::MultiUserMode(toggled) => { self.device.multi_user_mode = toggled; debug!("Config change: {self:?}"); Config::save_changes(self, &phone.adb_id); - iced::Command::none() + Task::none() } Message::ApplyTheme(theme) => { self.general.theme = theme.to_string(); debug!("Config change: {self:?}"); Config::save_changes(self, &phone.adb_id); - iced::Command::none() + Task::none() } Message::UrlPressed(url) => { open_url(url); - iced::Command::none() + Task::none() } Message::LoadDeviceSettings => { let backups = @@ -138,14 +138,14 @@ impl Settings { } } } - iced::Command::none() + Task::none() } Message::BackupSelected(d_path) => { self.device.backup.selected = Some(d_path.clone()); self.device.backup.users = list_available_backup_user(d_path); - iced::Command::none() + Task::none() } - Message::BackupDevice => iced::Command::perform( + Message::BackupDevice => Task::perform( backup_phone( phone.user_list.clone(), self.device.device_id.clone(), @@ -166,7 +166,7 @@ impl Settings { error!("[BACKUP FAILED] Backup creation failed: {err:?}"); } } - iced::Command::none() + Task::none() } Message::RestoreDevice => match restore_backup(phone, packages, &self.device) { Ok(r_packages) => { @@ -180,7 +180,7 @@ impl Settings { }; for command in p.commands.clone() { *nb_running_async_adb_commands += 1; - commands.push(iced::Command::perform( + commands.push(Task::perform( // This is "safe" thanks to serde: // https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/issues/760 adb_shell_command(phone.adb_id.clone(), command, p_info.clone()), @@ -200,16 +200,16 @@ impl Settings { "[RESTORE] Restoring backup {}", self.device.backup.selected.as_ref().unwrap() ); - iced::Command::batch(commands) + Task::batch(commands) } Err(e) => { self.device.backup.backup_state.clone_from(&e); error!("{} - {}", self.device.backup.selected.as_ref().unwrap(), e); - iced::Command::none() + Task::none() } }, // Trigger an action in mod.rs (Message::SettingsAction(msg)) - Message::RestoringDevice(_) => iced::Command::none(), + Message::RestoringDevice(_) => Task::none(), Message::FolderChosen(result) => { self.is_loading = false; @@ -227,17 +227,17 @@ impl Settings { ); } } - iced::Command::none() + Task::none() } Message::ChooseBackUpFolder => { if self.is_loading { - iced::Command::none() + Task::none() } else { self.is_loading = true; - iced::Command::perform(open_folder(), Message::FolderChosen) + Task::perform(open_folder(), Message::FolderChosen) } } - Message::ExportPackages => iced::Command::perform( + Message::ExportPackages => Task::perform( export_packages(selected_user.unwrap_or_default(), packages.to_vec()), Message::PackagesExported, ), @@ -246,7 +246,7 @@ impl Settings { Ok(_) => self.modal = Some(PopUpModal::ExportUninstalled), Err(err) => error!("Failed to export list of uninstalled packages: {err:?}"), } - iced::Command::none() + Task::none() } } } @@ -281,6 +281,7 @@ impl Settings { self.general.expert_mode, ) .on_toggle(Message::ExpertMode) + .size(20) .style(style::CheckBox::SettingsEnabled); let expert_mode_descr = @@ -303,7 +304,7 @@ impl Settings { text(self.general.backup_folder.to_string_lossy()) ] .spacing(10) - .align_items(Alignment::Center); + .align_y(Alignment::Center); let general_ctn = container( column![ @@ -353,6 +354,7 @@ impl Settings { self.device.multi_user_mode, ) .on_toggle(Message::MultiUserMode) + .size(20) .style(style::CheckBox::SettingsEnabled); let disable_checkbox_style = if phone.android_sdk >= 23 { @@ -380,6 +382,7 @@ impl Settings { self.device.disable_mode, ) .on_toggle(Message::DisableMode) + .size(20) .style(disable_checkbox_style); let disable_setting_row = if phone.android_sdk >= 23 { @@ -418,22 +421,21 @@ impl Settings { ) .padding(6); - let backup_btn = - button_primary(text("Backup").horizontal_alignment(alignment::Horizontal::Center)) - .on_press(Message::BackupDevice) - .width(77); + let backup_btn = button_primary(text("Backup").align_x(alignment::Horizontal::Center)) + .on_press(Message::BackupDevice) + .width(77); let restore_btn = |enabled| { if enabled { - button(text("Restore").horizontal_alignment(alignment::Horizontal::Center)) + button(text("Restore").align_x(alignment::Horizontal::Center)) .padding([5, 10]) .on_press(Message::RestoreDevice) .width(77) } else { button( text("No backup") - .horizontal_alignment(alignment::Horizontal::Center) - .vertical_alignment(alignment::Vertical::Center), + .align_x(alignment::Horizontal::Center) + .align_y(alignment::Vertical::Center), ) .padding([5, 10]) .width(77) @@ -457,7 +459,7 @@ impl Settings { locate_backup_btn, ] .spacing(10) - .align_items(Alignment::Center); + .align_y(Alignment::Center); let restore_row = if self.device.backup.backups.is_empty() { row![] @@ -470,7 +472,7 @@ impl Settings { backup_pick_list, ] .spacing(10) - .align_items(Alignment::Center) + .align_y(Alignment::Center) }; let no_device_ctn = || { @@ -504,7 +506,7 @@ impl Settings { )), ] .spacing(10) - .align_items(Alignment::Center); + .align_y(Alignment::Center); let backup_restore_ctn = container(column![backup_row, restore_row, export_row].spacing(10)) @@ -529,12 +531,12 @@ impl Settings { }; if let Some(PopUpModal::ExportUninstalled) = self.modal { - let title = container(row![text("Success").size(24)].align_items(Alignment::Center)) + let title = container(row![text("Success").size(24)].align_y(Alignment::Center)) .width(Length::Fill) .style(style::Container::Frame) - .padding([10, 0, 10, 0]) - .center_y() - .center_x(); + .padding([10, 0]) + .center_y(Length::Shrink) + .center_x(Length::Shrink); let text_box = row![ text(format!("Exported uninstalled packages into file.\nFile is exported in same directory where {NAME} is located.")).width(Length::Fill), diff --git a/src/gui/widgets/modal.rs b/src/gui/widgets/modal.rs index b08a683..e208f65 100644 --- a/src/gui/widgets/modal.rs +++ b/src/gui/widgets/modal.rs @@ -144,7 +144,7 @@ where state: &mut Tree, layout: Layout<'_>, renderer: &Renderer, - operation: &mut dyn widget::Operation, + operation: &mut dyn widget::Operation, ) { self.base .as_widget() @@ -253,7 +253,7 @@ where &mut self, layout: Layout<'_>, renderer: &Renderer, - operation: &mut dyn widget::Operation, + operation: &mut dyn widget::Operation, ) { self.content.as_widget().operate( self.tree, diff --git a/src/gui/widgets/navigation_menu.rs b/src/gui/widgets/navigation_menu.rs index dd1a242..9b64a84 100644 --- a/src/gui/widgets/navigation_menu.rs +++ b/src/gui/widgets/navigation_menu.rs @@ -24,7 +24,7 @@ pub fn nav_menu<'a>( text("\u{E900}") .font(ICONS) .width(22) - .horizontal_alignment(alignment::Horizontal::Center), + .align_x(alignment::Horizontal::Center), ) .on_press(Message::RefreshButtonPressed); @@ -66,7 +66,7 @@ pub fn nav_menu<'a>( text("\u{E994}") .font(ICONS) .width(22) - .horizontal_alignment(alignment::Horizontal::Center), + .align_x(alignment::Horizontal::Center), ) .on_press(Message::SettingsPressed); @@ -88,7 +88,7 @@ pub fn nav_menu<'a>( settings_btn, ] .width(Length::Fill) - .align_items(Alignment::Center) + .align_y(Alignment::Center) .spacing(10), None => row![ reboot_btn, @@ -102,7 +102,7 @@ pub fn nav_menu<'a>( settings_btn, ] .width(Length::Fill) - .align_items(Alignment::Center) + .align_y(Alignment::Center) .spacing(10), }; diff --git a/src/gui/widgets/package_row.rs b/src/gui/widgets/package_row.rs index 539531d..72e8b4d 100644 --- a/src/gui/widgets/package_row.rs +++ b/src/gui/widgets/package_row.rs @@ -6,7 +6,7 @@ use crate::gui::views::settings::Settings; use crate::gui::widgets::text; use iced::widget::{Space, button, checkbox, row}; -use iced::{Alignment, Command, Element, Length, Renderer, alignment}; +use iced::{Alignment, Element, Length, Renderer, Task, alignment}; #[derive(Clone, Debug)] pub struct PackageRow { @@ -47,8 +47,8 @@ impl PackageRow { } } - pub fn update(&mut self, _message: &Message) -> Command { - Command::none() + pub fn update(&mut self, _message: &Message) -> Task { + Task::none() } pub fn view( @@ -58,7 +58,7 @@ impl PackageRow { ) -> Element<'_, Message, Theme, Renderer> { //let trash_svg = format!("{}/resources/assets/trash.svg", env!("CARGO_MANIFEST_DIR")); //let restore_svg = format!("{}/resources/assets/rotate.svg", env!("CARGO_MANIFEST_DIR")); - let button_style; + let button_style: fn(&Theme, iced::widget::button::Status) -> iced::widget::button::Style; let action_text; let action_btn; let selection_checkbox; @@ -93,22 +93,24 @@ impl PackageRow { { selection_checkbox = checkbox("", self.selected) .on_toggle(Message::ToggleSelection) + .size(20) .style(style::CheckBox::PackageEnabled); action_btn = button( text(action_text) - .horizontal_alignment(alignment::Horizontal::Center) + .align_x(alignment::Horizontal::Center) .width(100), ) .on_press(Message::ActionPressed); } else { selection_checkbox = checkbox("", self.selected) .on_toggle(Message::ToggleSelection) + .size(20) .style(style::CheckBox::PackageDisabled); action_btn = button( text(action_text) - .horizontal_alignment(alignment::Horizontal::Center) + .align_x(alignment::Horizontal::Center) .width(100), ); } @@ -120,7 +122,7 @@ impl PackageRow { text(&self.name).width(Length::FillPortion(8)), action_btn.style(button_style) ] - .align_items(Alignment::Center) + .align_y(Alignment::Center) ) .padding(8) .style(if self.current { @@ -132,7 +134,7 @@ impl PackageRow { .on_press(Message::PackagePressed), Space::with_width(15) ] - .align_items(Alignment::Center) + .align_y(Alignment::Center) .into() } } diff --git a/src/gui/widgets/text.rs b/src/gui/widgets/text.rs index 5e33a62..da6a3c2 100644 --- a/src/gui/widgets/text.rs +++ b/src/gui/widgets/text.rs @@ -3,15 +3,10 @@ reason = "this is the replacement that enforces advanced shaping for disallowed [`iced::widget::Text`]" )] -use std::borrow::Cow; - -use iced::widget::Text; +use iced::advanced::text::IntoFragment; +use iced::widget; // Creates a new Text widget with advanced shaping. -pub fn text<'a, Theme, Renderer>(text: impl Into>) -> Text<'a, Theme, Renderer> -where - Theme: iced::widget::text::StyleSheet, - Renderer: iced::advanced::text::Renderer, -{ - Text::new(text).shaping(iced::widget::text::Shaping::Advanced) +pub fn text<'a>(text: impl IntoFragment<'a>) -> widget::Text<'a, crate::core::theme::Theme> { + widget::Text::new(text).shaping(iced::widget::text::Shaping::Advanced) }