From e346cf65927d8d8cc1e4cf55dbd678e7995f799a Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sat, 6 Apr 2024 22:38:15 +0200 Subject: [PATCH 01/42] cargo update --- Cargo.lock | 593 +++++++++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 3 +- src/main.rs | 10 +- src/settings.rs | 46 +++- 4 files changed, 642 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2c22b13..3699ae9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,6 +33,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + [[package]] name = "ahash" version = "0.8.11" @@ -181,6 +192,150 @@ dependencies = [ "libloading 0.7.4", ] +[[package]] +name = "async-broadcast" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" +dependencies = [ + "event-listener 5.3.0", + "event-listener-strategy 0.5.1", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +dependencies = [ + "concurrent-queue", + "event-listener 5.3.0", + "event-listener-strategy 0.5.1", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10b3e585719c2358d2660232671ca8ca4ddb4be4ce8a1842d6c2dc8685303316" +dependencies = [ + "async-lock 3.3.0", + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1" +dependencies = [ + "async-lock 3.3.0", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d999d925640d51b662b7b4e404224dd81de70f4aa4a199383c2c5e5b86885fa3" +dependencies = [ + "async-channel", + "async-io", + "async-lock 3.3.0", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener 5.3.0", + "futures-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-recursion" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", +] + +[[package]] +name = "async-signal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +dependencies = [ + "async-io", + "async-lock 2.8.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-task" +version = "4.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" + [[package]] name = "async-trait" version = "0.1.79" @@ -339,6 +494,22 @@ dependencies = [ "objc2", ] +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel", + "async-lock 3.3.0", + "async-task", + "fastrand", + "futures-io", + "futures-lite", + "piper", + "tracing", +] + [[package]] name = "brotli-decompressor" version = "2.5.1" @@ -706,6 +877,15 @@ dependencies = [ "windows 0.54.0", ] +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.4.0" @@ -783,12 +963,34 @@ dependencies = [ "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", + "objc", + "rust-ini", + "web-sys", + "winreg 0.10.1", + "zbus", +] + [[package]] name = "dasp_sample" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" +[[package]] +name = "dconf_rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b" + [[package]] name = "deranged" version = "0.3.11" @@ -798,6 +1000,23 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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" @@ -865,6 +1084,12 @@ dependencies = [ "libloading 0.8.3", ] +[[package]] +name = "dlv-list" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" + [[package]] name = "dmg" version = "0.1.2" @@ -935,6 +1160,33 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -963,6 +1215,7 @@ version = "0.9.4" dependencies = [ "anyhow", "bitar", + "dark-light", "dmg", "espim", "flate2", @@ -1024,6 +1277,54 @@ dependencies = [ "num-traits", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +dependencies = [ + "event-listener 5.3.0", + "pin-project-lite", +] + [[package]] name = "exr" version = "1.72.0" @@ -1224,6 +1525,19 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.30" @@ -1408,7 +1722,7 @@ checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ "bitflags 2.5.0", "gpu-descriptor-types", - "hashbrown", + "hashbrown 0.14.3", ] [[package]] @@ -1459,13 +1773,22 @@ dependencies = [ "crunchy", ] +[[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]] name = "hashbrown" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash", + "ahash 0.8.11", "allocator-api2", ] @@ -1505,6 +1828,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "hexf-parse" version = "0.2.1" @@ -1822,7 +2151,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.3", ] [[package]] @@ -2091,7 +2420,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" dependencies = [ - "hashbrown", + "hashbrown 0.14.3", ] [[package]] @@ -2136,6 +2465,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + [[package]] name = "metal" version = "0.27.0" @@ -2246,6 +2584,19 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "nix" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "cfg_aliases 0.1.1", + "libc", + "memoffset", +] + [[package]] name = "nom" version = "7.1.3" @@ -2450,6 +2801,26 @@ dependencies = [ "libredox 0.0.2", ] +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "ouroboros" version = "0.18.3" @@ -2507,6 +2878,12 @@ dependencies = [ "syn 2.0.55", ] +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" version = "0.11.2" @@ -2648,6 +3025,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + [[package]] name = "pkg-config" version = "0.3.30" @@ -2710,6 +3098,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + [[package]] name = "presser" version = "0.3.1" @@ -2845,6 +3239,18 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", "rand_core", ] @@ -2853,6 +3259,9 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] [[package]] name = "range-alloc" @@ -3014,7 +3423,7 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots 0.25.4", - "winreg", + "winreg 0.50.0", ] [[package]] @@ -3048,6 +3457,16 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" +[[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-demangle" version = "0.1.23" @@ -3251,6 +3670,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -3263,12 +3693,32 @@ dependencies = [ "serde", ] +[[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]] name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + [[package]] name = "simd-adler32" version = "0.3.7" @@ -3789,6 +4239,17 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -4596,7 +5057,7 @@ version = "0.29.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" dependencies = [ - "ahash", + "ahash 0.8.11", "android-activity", "atomic-waker", "bitflags 2.5.0", @@ -4647,6 +5108,15 @@ 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.50.0" @@ -4715,6 +5185,16 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" +[[package]] +name = "xdg-home" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "xkbcommon-dl" version = "0.4.2" @@ -4758,6 +5238,70 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" +[[package]] +name = "zbus" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock 3.3.0", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "derivative", + "enumflags2", + "event-listener 5.3.0", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[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", +] + [[package]] name = "zeno" version = "0.2.3" @@ -4821,3 +5365,40 @@ checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" dependencies = [ "simd-adler32", ] + +[[package]] +name = "zvariant" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/Cargo.toml b/Cargo.toml index b399a12..5d78a56 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ osx_minimum_system_version = "10.7" [dependencies] anyhow = "1.0" bitar = { version = "0.10", features=["rustls-tls"] } -time = "0.3" +dark-light = "1.0" dmg = "0.1.2" espim = "0.2" flate2 = "1.0" @@ -37,6 +37,7 @@ serde_json = "1.0" serde-xml-rs = "0.6" simplelog = "0.12.2" tar = "0.4" +time = "0.3" tokio = { version="1", default-features = false, features=["fs"] } ureq = { version = "2.9", default-features = false, features = ["json", "tls"] } version = "3" diff --git a/src/main.rs b/src/main.rs index ea4c087..93e117d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -28,7 +28,7 @@ use crate::install_frame::InstallFrameMessage; use crate::instance::{Instance, InstanceMessage, InstanceState, Progress}; use crate::music::{MusicCommand, MusicState}; use crate::plugins_frame::PluginMessage; -use crate::settings::Settings; +use crate::settings::{Settings, SettingsMessage}; use crate::style::{icon_button, log_container, tab_bar}; mod archive; @@ -85,6 +85,7 @@ struct ESLauncher { pub enum Tab { Instances, Plugins, + Settings, } #[derive(Debug, Clone)] @@ -92,6 +93,7 @@ pub enum Message { InstallFrameMessage(InstallFrameMessage), InstanceMessage(String, InstanceMessage), PluginMessage(String, PluginMessage), + SettingsMessage(SettingsMessage), AddInstance(Box), RemoveInstance(Option), Dummy(()), @@ -172,6 +174,7 @@ impl Application for ESLauncher { } } } + Message::SettingsMessage(msg) => self.settings.update(msg), Message::AddInstance(instance) => { let is_ready = instance.state.is_ready(); self.instances_frame @@ -253,6 +256,11 @@ impl Application for ESLauncher { self.plugins_frame.view().into(), ]), ) + .push( + Tab::Settings, + TabLabel::Text("Settings".into()), + self.settings.view(), + ) .set_active_tab(&self.active_tab) .tab_bar_style(tab_bar()); diff --git a/src/settings.rs b/src/settings.rs index abc5086..46efdc5 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -1,15 +1,30 @@ -use crate::get_data_dir; use crate::music::MusicState; +use crate::{get_data_dir, Message}; use anyhow::{Context, Result}; +use iced::widget::{Checkbox, Column, Container, Row, Space, Text}; +use iced::Length; use serde::{Deserialize, Serialize}; use std::fs::File; -#[derive(Clone, Debug, Default, Serialize, Deserialize)] +#[derive(Clone, Debug, Serialize, Deserialize)] pub struct Settings { pub music_state: MusicState, + pub dark_theme: bool, +} + +#[derive(Debug, Clone)] +pub enum SettingsMessage { + DarkTheme(bool), } impl Settings { + fn default() -> Self { + Self { + music_state: MusicState::default(), + dark_theme: dark_light::detect().eq(&dark_light::Mode::Dark), + } + } + pub fn save(&self) -> Result<()> { let mut settings_file = get_data_dir().ok_or_else(|| anyhow!("Failed to get app save dir"))?; @@ -42,4 +57,31 @@ impl Settings { } } } + + pub fn view(&self) -> Container { + let settings_row = |label, content| { + Row::new() + .push(Text::new(label)) + .push(Space::with_width(Length::Fill)) + .push(content) + }; + + Container::new( + Column::new().push(settings_row( + "Dark Theme", + Checkbox::new("", self.dark_theme) + .on_toggle(|v| Message::SettingsMessage(SettingsMessage::DarkTheme(v))), + )), + ) + .padding(100.) + } + + pub fn update(&mut self, message: SettingsMessage) { + match message { + SettingsMessage::DarkTheme(bool) => self.dark_theme = bool, + }; + if let Err(e) = self.save() { + error!("Failed to save settings.json: {:#?}", e) + }; + } } From 39565e5218cd09da53f27279ad2d58ac4320e192 Mon Sep 17 00:00:00 2001 From: Koranir <101683475+Koranir@users.noreply.github.com> Date: Sat, 6 Jul 2024 20:08:56 +1000 Subject: [PATCH 02/42] Initial Commit --- Cargo.lock | 485 +++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 23 +- src/install_frame.rs | 64 +++++- src/main.rs | 22 +- src/settings.rs | 23 +- 5 files changed, 595 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e04f75..ab18ede 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -175,6 +175,133 @@ dependencies = [ "libloading 0.7.4", ] +[[package]] +name = "ashpd" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" +dependencies = [ + "enumflags2", + "futures-channel", + "futures-util", + "rand", + "serde", + "serde_repr", + "tokio", + "url", + "zbus", +] + +[[package]] +name = "async-broadcast" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f2776ead772134d55b62dd45e59a79e21612d85d0af729b8b7d3967d601a62a" +dependencies = [ + "concurrent-queue", + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-io" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", +] + +[[package]] +name = "async-signal" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + [[package]] name = "async-trait" version = "0.1.79" @@ -339,6 +466,19 @@ dependencies = [ "objc2", ] +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + [[package]] name = "brotli-decompressor" version = "4.0.1" @@ -706,6 +846,15 @@ dependencies = [ "windows 0.54.0", ] +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.4.0" @@ -798,6 +947,17 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "digest" version = "0.10.7" @@ -926,6 +1086,33 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -968,6 +1155,7 @@ dependencies = [ "platform-dirs", "progress-streams", "regex", + "rfd", "rodio", "serde", "serde-xml-rs", @@ -1015,6 +1203,27 @@ dependencies = [ "num-traits", ] +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "exr" version = "1.72.0" @@ -1215,6 +1424,19 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.30" @@ -1468,6 +1690,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "hexf-parse" version = "0.2.1" @@ -2114,6 +2342,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + [[package]] name = "metal" version = "0.27.0" @@ -2224,6 +2461,19 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "nix" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "cfg_aliases 0.1.1", + "libc", + "memoffset", +] + [[package]] name = "nom" version = "7.1.3" @@ -2428,6 +2678,16 @@ dependencies = [ "libredox 0.0.2", ] +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "owned_ttf_parser" version = "0.20.0" @@ -2460,6 +2720,12 @@ dependencies = [ "syn 2.0.55", ] +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" version = "0.11.2" @@ -2621,6 +2887,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + [[package]] name = "pkg-config" version = "0.3.30" @@ -2677,12 +2954,24 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "pollster" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" + [[package]] name = "powerfmt" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + [[package]] name = "presser" version = "0.3.1" @@ -2815,6 +3104,18 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", "rand_core", ] @@ -2823,6 +3124,9 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] [[package]] name = "range-alloc" @@ -2987,6 +3291,29 @@ dependencies = [ "winreg", ] +[[package]] +name = "rfd" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" +dependencies = [ + "ashpd", + "block", + "dispatch", + "js-sys", + "log", + "objc", + "objc-foundation", + "objc_id", + "pollster", + "raw-window-handle", + "urlencoding", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.48.0", +] + [[package]] name = "ring" version = "0.17.8" @@ -3191,6 +3518,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -3203,12 +3541,32 @@ dependencies = [ "serde", ] +[[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]] name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + [[package]] name = "simd-adler32" version = "0.3.7" @@ -3593,7 +3951,9 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", + "signal-hook-registry", "socket2", + "tracing", "windows-sys 0.48.0", ] @@ -3730,6 +4090,17 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -3832,8 +4203,15 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "version" version = "3.0.0" @@ -4638,6 +5016,16 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" +[[package]] +name = "xdg-home" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "xkbcommon-dl" version = "0.4.2" @@ -4675,6 +5063,65 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" +[[package]] +name = "zbus" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9" +dependencies = [ + "async-broadcast", + "async-process", + "async-recursion", + "async-trait", + "derivative", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tokio", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[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", +] + [[package]] name = "zeno" version = "0.2.3" @@ -4738,3 +5185,41 @@ checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" dependencies = [ "simd-adler32", ] + +[[package]] +name = "zvariant" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "url", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/Cargo.toml b/Cargo.toml index d6b3ff5..9e073e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,10 @@ espim = "0.2" flate2 = "1.0" fs_extra = "1.3.0" futures = "0.3" -iced_aw = { git = "https://github.com/iced-rs/iced_aw.git", rev = "9ed46bffd0d819f22e07db6c282fbef733007df5", default-features = false, features = ["tabs", "icons"] } +iced_aw = { git = "https://github.com/iced-rs/iced_aw.git", rev = "9ed46bffd0d819f22e07db6c282fbef733007df5", default-features = false, features = [ + "tabs", + "icons", +] } lazy_static = "1.5" log = { version = "0.4.22", features = ["std"] } open = "5" @@ -40,17 +43,29 @@ tar = "0.4" tokio = { version = "1", default-features = false, features = ["fs"] } ureq = { version = "2.9", default-features = false, features = ["json", "tls"] } version = "3" -zip-extract = { version = "0.1.3", default-features = false, features = ["deflate"] } +zip-extract = { version = "0.1.3", default-features = false, features = [ + "deflate", +] } +rfd = { version = "0.14.1", default-features = false, features = [ + "tokio", + "xdg-portal", +] } [dependencies.iced] version = "0.12.1" default-features = false -features = ["web-colors", "advanced", "image", "tokio"] +features = [ + "web-colors", + "advanced", + "image", + "tokio", + "wgpu", # tiny-skia backend panics with small text boxes, fixed in latest master. +] [target.'cfg(windows)'.build-dependencies] winres = "0.1" [profile.release] strip = true -opt-level = 'z' # Optimize for size. +opt-level = 'z' # Optimize for size. lto = true diff --git a/src/install_frame.rs b/src/install_frame.rs index 7926e29..dffdee2 100644 --- a/src/install_frame.rs +++ b/src/install_frame.rs @@ -1,10 +1,15 @@ use crate::instance::{get_instances_dir, InstanceType}; -use crate::style::text_button; +use crate::settings::Settings; +use crate::style::{self, text_button}; use crate::{instance, Message}; use core::fmt; -use iced::widget::{Button, Column, Container, Radio, Scrollable, Text, TextInput}; +use iced::widget::{ + button, checkbox, text, text_input, Button, Column, Container, Radio, Row, Scrollable, Text, + TextInput, +}; use iced::{alignment, Alignment, Command, Element, Length}; use serde::{Deserialize, Serialize}; +use std::path::PathBuf; // Characters that shall not be allowed to enter. This does not cover all cases! // One should expect the install process to fail on particularly exotic characters. @@ -22,6 +27,8 @@ pub enum InstallFrameMessage { NameChanged(String), SourceIdentifierChanged(String), StartInstallation(InstanceType), + CustomInstallSet(bool), + CustomInstallRequest, } #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] @@ -57,10 +64,18 @@ impl fmt::Display for InstanceSourceType { } impl InstallFrame { - pub fn update(&mut self, message: InstallFrameMessage) -> Command { + pub fn update( + &mut self, + message: InstallFrameMessage, + settings: &mut Settings, + ) -> Command { match message { InstallFrameMessage::StartInstallation(instance_type) => { - if let Some(mut destination) = get_instances_dir() { + if let Some(mut destination) = settings + .use_custom_install_dir + .then_some(settings.custom_install_dir.clone()) + .unwrap_or(get_instances_dir()) + { destination.push(&self.name); return Command::perform( instance::perform_install( @@ -86,11 +101,25 @@ impl InstallFrame { InstallFrameMessage::SourceIdentifierChanged(identifier) => { self.source.identifier = identifier; } + InstallFrameMessage::CustomInstallRequest => { + return Command::perform(rfd::AsyncFileDialog::new().pick_folder(), |f| match f { + Some(handle) => Message::CustomInstallPath(handle.path().to_path_buf()), + None => Message::Dummy(()), + }) + } + InstallFrameMessage::CustomInstallSet(f) => { + settings.use_custom_install_dir = f; + settings.save(); + } } Command::none() } - pub fn view(&self) -> Element { + pub fn view( + &self, + custom_install_path: Option, + custom_install_enabled: bool, + ) -> Element { let mut controls = InstanceSourceType::ALL.iter().fold( Column::new().spacing(10).push(Text::new("Choose a Type:")), |column, source_type| { @@ -122,6 +151,30 @@ impl InstallFrame { })); } + let custom_install_dir = Row::new() + .push(button(style::folder_icon()).on_press(InstallFrameMessage::CustomInstallRequest)) + .push( + Column::new() + .push( + checkbox("Use custom install directory", custom_install_enabled) + .on_toggle(|f| InstallFrameMessage::CustomInstallSet(f)), + ) + .push( + text(format!( + "Installing to {}", + custom_install_enabled + .then_some(custom_install_path) + .flatten() + .unwrap_or_else(|| get_instances_dir().unwrap_or_default()) + .to_string_lossy() + .as_ref() + )) + .size(10.0), + ), + ) + .align_items(Alignment::Center) + .spacing(10.0); + Container::new(Scrollable::new( Column::new() .padding(20) @@ -136,6 +189,7 @@ impl InstallFrame { .on_input(InstallFrameMessage::NameChanged) .padding(10), ) + .push(custom_install_dir) .push(controls) .push(install_button) .spacing(20) diff --git a/src/main.rs b/src/main.rs index ea4c087..0dd3609 100644 --- a/src/main.rs +++ b/src/main.rs @@ -100,6 +100,7 @@ pub enum Message { TabSelected(Tab), PluginFrameLoaded(Vec), Log(String), + CustomInstallPath(PathBuf), } impl Application for ESLauncher { @@ -155,7 +156,9 @@ impl Application for ESLauncher { fn update(&mut self, message: Self::Message) -> Command { match message { - Message::InstallFrameMessage(msg) => return self.install_frame.update(msg), + Message::InstallFrameMessage(msg) => { + return self.install_frame.update(msg, &mut self.settings) + } Message::InstanceMessage(name, msg) => { match self.instances_frame.instances.get_mut(&name) { None => error!("Failed to find internal Instance with name {}", &name), @@ -194,9 +197,7 @@ impl Application for ESLauncher { MusicCommand::Play => MusicState::Playing, _ => self.settings.music_state, }; - if let Err(e) = self.settings.save() { - error!("Failed to save settings.json: {:#?}", e); - }; + self.settings.save(); } Message::TabSelected(active_tab) => self.active_tab = active_tab, Message::PluginFrameLoaded(plugins) => { @@ -205,6 +206,10 @@ impl Application for ESLauncher { Message::Log(line) => self.log_buffer.push(line), Message::Dummy(()) => (), Message::FontLoaded(_) => (), + Message::CustomInstallPath(p) => { + self.settings.custom_install_dir = Some(p); + self.settings.save(); + } } Command::none() } @@ -233,7 +238,14 @@ impl Application for ESLauncher { Row::new() .push(self.instances_frame.view()) .push(iced::widget::vertical_rule(2)) - .push(self.install_frame.view().map(Message::InstallFrameMessage)) + .push( + self.install_frame + .view( + self.settings.custom_install_dir.clone(), + self.settings.use_custom_install_dir, + ) + .map(Message::InstallFrameMessage), + ) .spacing(10) .padding(iced::Padding { top: 0.0, diff --git a/src/settings.rs b/src/settings.rs index abc5086..69c85a3 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -2,22 +2,29 @@ use crate::get_data_dir; use crate::music::MusicState; use anyhow::{Context, Result}; use serde::{Deserialize, Serialize}; -use std::fs::File; +use std::{fs::File, path::PathBuf}; #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Settings { pub music_state: MusicState, + pub custom_install_dir: Option, + pub use_custom_install_dir: bool, } impl Settings { - pub fn save(&self) -> Result<()> { - let mut settings_file = - get_data_dir().ok_or_else(|| anyhow!("Failed to get app save dir"))?; - settings_file.push("settings.json"); + pub fn save(&self) { + let save = || -> Result<()> { + let mut settings_file = + get_data_dir().ok_or_else(|| anyhow!("Failed to get app save dir"))?; + settings_file.push("settings.json"); - let file = File::create(settings_file)?; - serde_json::to_writer_pretty(file, self)?; - Ok(()) + let file = File::create(settings_file)?; + serde_json::to_writer_pretty(file, self)?; + Ok(()) + }; + if let Err(e) = save() { + error!("Failed to save settings.json: {:#?}", e); + } } pub fn load() -> Self { From 421c80f072b3c8340079052496080cf4ea4c9b44 Mon Sep 17 00:00:00 2001 From: Koranir <101683475+Koranir@users.noreply.github.com> Date: Sat, 6 Jul 2024 21:30:55 +1000 Subject: [PATCH 03/42] show actual path + icon style --- src/install_frame.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/install_frame.rs b/src/install_frame.rs index dffdee2..d3b6c82 100644 --- a/src/install_frame.rs +++ b/src/install_frame.rs @@ -1,6 +1,6 @@ use crate::instance::{get_instances_dir, InstanceType}; use crate::settings::Settings; -use crate::style::{self, text_button}; +use crate::style::{self, icon_button, text_button}; use crate::{instance, Message}; use core::fmt; use iced::widget::{ @@ -152,7 +152,11 @@ impl InstallFrame { } let custom_install_dir = Row::new() - .push(button(style::folder_icon()).on_press(InstallFrameMessage::CustomInstallRequest)) + .push( + button(style::folder_icon()) + .style(icon_button()) + .on_press(InstallFrameMessage::CustomInstallRequest), + ) .push( Column::new() .push( @@ -166,6 +170,7 @@ impl InstallFrame { .then_some(custom_install_path) .flatten() .unwrap_or_else(|| get_instances_dir().unwrap_or_default()) + .join(&self.name) .to_string_lossy() .as_ref() )) @@ -173,6 +178,7 @@ impl InstallFrame { ), ) .align_items(Alignment::Center) + .width(Length::Fill) .spacing(10.0); Container::new(Scrollable::new( From 8d4e71f5ded406e0a0b63b1b83e9c90f82092c92 Mon Sep 17 00:00:00 2001 From: Koranir <101683475+Koranir@users.noreply.github.com> Date: Sun, 7 Jul 2024 15:04:39 +1000 Subject: [PATCH 04/42] Move thing to settings tab --- src/install_frame.rs | 67 +++----------------- src/main.rs | 23 +++---- src/settings.rs | 144 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 161 insertions(+), 73 deletions(-) diff --git a/src/install_frame.rs b/src/install_frame.rs index d3b6c82..6fd0516 100644 --- a/src/install_frame.rs +++ b/src/install_frame.rs @@ -1,15 +1,11 @@ use crate::instance::{get_instances_dir, InstanceType}; use crate::settings::Settings; -use crate::style::{self, icon_button, text_button}; +use crate::style::text_button; use crate::{instance, Message}; use core::fmt; -use iced::widget::{ - button, checkbox, text, text_input, Button, Column, Container, Radio, Row, Scrollable, Text, - TextInput, -}; +use iced::widget::{Button, Column, Container, Radio, Scrollable, Text, TextInput}; use iced::{alignment, Alignment, Command, Element, Length}; use serde::{Deserialize, Serialize}; -use std::path::PathBuf; // Characters that shall not be allowed to enter. This does not cover all cases! // One should expect the install process to fail on particularly exotic characters. @@ -27,8 +23,6 @@ pub enum InstallFrameMessage { NameChanged(String), SourceIdentifierChanged(String), StartInstallation(InstanceType), - CustomInstallSet(bool), - CustomInstallRequest, } #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] @@ -71,11 +65,11 @@ impl InstallFrame { ) -> Command { match message { InstallFrameMessage::StartInstallation(instance_type) => { - if let Some(mut destination) = settings - .use_custom_install_dir - .then_some(settings.custom_install_dir.clone()) - .unwrap_or(get_instances_dir()) - { + if let Some(mut destination) = if settings.use_custom_install_dir { + settings.custom_install_dir.clone() + } else { + get_instances_dir() + } { destination.push(&self.name); return Command::perform( instance::perform_install( @@ -101,25 +95,11 @@ impl InstallFrame { InstallFrameMessage::SourceIdentifierChanged(identifier) => { self.source.identifier = identifier; } - InstallFrameMessage::CustomInstallRequest => { - return Command::perform(rfd::AsyncFileDialog::new().pick_folder(), |f| match f { - Some(handle) => Message::CustomInstallPath(handle.path().to_path_buf()), - None => Message::Dummy(()), - }) - } - InstallFrameMessage::CustomInstallSet(f) => { - settings.use_custom_install_dir = f; - settings.save(); - } } Command::none() } - pub fn view( - &self, - custom_install_path: Option, - custom_install_enabled: bool, - ) -> Element { + pub fn view(&self) -> Element { let mut controls = InstanceSourceType::ALL.iter().fold( Column::new().spacing(10).push(Text::new("Choose a Type:")), |column, source_type| { @@ -151,36 +131,6 @@ impl InstallFrame { })); } - let custom_install_dir = Row::new() - .push( - button(style::folder_icon()) - .style(icon_button()) - .on_press(InstallFrameMessage::CustomInstallRequest), - ) - .push( - Column::new() - .push( - checkbox("Use custom install directory", custom_install_enabled) - .on_toggle(|f| InstallFrameMessage::CustomInstallSet(f)), - ) - .push( - text(format!( - "Installing to {}", - custom_install_enabled - .then_some(custom_install_path) - .flatten() - .unwrap_or_else(|| get_instances_dir().unwrap_or_default()) - .join(&self.name) - .to_string_lossy() - .as_ref() - )) - .size(10.0), - ), - ) - .align_items(Alignment::Center) - .width(Length::Fill) - .spacing(10.0); - Container::new(Scrollable::new( Column::new() .padding(20) @@ -195,7 +145,6 @@ impl InstallFrame { .on_input(InstallFrameMessage::NameChanged) .padding(10), ) - .push(custom_install_dir) .push(controls) .push(install_button) .spacing(20) diff --git a/src/main.rs b/src/main.rs index 0dd3609..0cd21ef 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,6 +21,7 @@ use iced::{ alignment, font, Alignment, Application, Command, Element, Font, Length, Subscription, Theme, }; use iced_aw::{TabLabel, Tabs}; +use settings::SettingsMessage; use std::collections::VecDeque; use std::sync::Mutex; @@ -85,6 +86,7 @@ struct ESLauncher { pub enum Tab { Instances, Plugins, + Settings, } #[derive(Debug, Clone)] @@ -92,6 +94,7 @@ pub enum Message { InstallFrameMessage(InstallFrameMessage), InstanceMessage(String, InstanceMessage), PluginMessage(String, PluginMessage), + SettingsMessage(SettingsMessage), AddInstance(Box), RemoveInstance(Option), Dummy(()), @@ -100,7 +103,6 @@ pub enum Message { TabSelected(Tab), PluginFrameLoaded(Vec), Log(String), - CustomInstallPath(PathBuf), } impl Application for ESLauncher { @@ -175,6 +177,7 @@ impl Application for ESLauncher { } } } + Message::SettingsMessage(msg) => return self.settings.update(msg), Message::AddInstance(instance) => { let is_ready = instance.state.is_ready(); self.instances_frame @@ -206,10 +209,6 @@ impl Application for ESLauncher { Message::Log(line) => self.log_buffer.push(line), Message::Dummy(()) => (), Message::FontLoaded(_) => (), - Message::CustomInstallPath(p) => { - self.settings.custom_install_dir = Some(p); - self.settings.save(); - } } Command::none() } @@ -238,14 +237,7 @@ impl Application for ESLauncher { Row::new() .push(self.instances_frame.view()) .push(iced::widget::vertical_rule(2)) - .push( - self.install_frame - .view( - self.settings.custom_install_dir.clone(), - self.settings.use_custom_install_dir, - ) - .map(Message::InstallFrameMessage), - ) + .push(self.install_frame.view().map(Message::InstallFrameMessage)) .spacing(10) .padding(iced::Padding { top: 0.0, @@ -265,6 +257,11 @@ impl Application for ESLauncher { self.plugins_frame.view().into(), ]), ) + .push( + Tab::Settings, + TabLabel::Text("Settings".into()), + self.settings.view(), + ) .set_active_tab(&self.active_tab) .tab_bar_style(tab_bar()); diff --git a/src/settings.rs b/src/settings.rs index 69c85a3..9e9d618 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -1,9 +1,29 @@ -use crate::get_data_dir; use crate::music::MusicState; +use crate::{get_data_dir, style, Message}; use anyhow::{Context, Result}; +use iced::advanced::graphics::core::Element; +use iced::widget::text_input::StyleSheet; +use iced::widget::{checkbox, container, row, text, Text}; +use iced::{ + widget::{button, Column, Container, Row}, + Length, +}; +use iced::{Alignment, Command, Padding, Renderer}; use serde::{Deserialize, Serialize}; use std::{fs::File, path::PathBuf}; +#[derive(Clone, Debug)] +pub enum SettingsMessage { + CustomInstallPath(CustomInstallPath), +} + +#[derive(Clone, Debug)] +pub enum CustomInstallPath { + SetEnabled(bool), + RequestPath, + SetPath(PathBuf), +} + #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct Settings { pub music_state: MusicState, @@ -49,4 +69,126 @@ impl Settings { } } } + + pub fn view(&self) -> Container { + fn settings_row<'a>( + label: &'a str, + content: impl Into>, + enabled: bool, + ) -> impl Into> { + let setting_spacer = || { + iced::widget::horizontal_rule(2).style(iced::theme::Rule::from( + |theme: &iced::Theme| { + let mut appearance = + iced::widget::rule::StyleSheet::appearance(theme, &Default::default()); + appearance.color.a *= 0.75; + appearance + }, + )) + }; + let container = container( + Column::new() + .push(setting_spacer()) + .push( + Row::new() + .push(Text::new(label)) + .push( + container(content) + .align_x(iced::alignment::Horizontal::Right) + .width(Length::Fill), + ) + .align_items(Alignment::Center), + ) + .spacing(10.0), + ); + if enabled { + container + } else { + container.style(iced::theme::Container::Custom(Box::new( + |theme: &iced::Theme| container::Appearance { + text_color: Some( + theme.disabled(&iced::theme::TextInput::Default).icon_color, + ), + ..Default::default() + }, + ))) + } + } + let btn = button(style::folder_icon().size(12.0)) + .on_press_maybe( + self.use_custom_install_dir + .then_some(Message::SettingsMessage( + SettingsMessage::CustomInstallPath(CustomInstallPath::RequestPath), + )), + ) + // .style(icon_button()) + .padding(Padding::from([2, 0])); + Container::new( + Column::new() + .push(settings_row( + "Use custom install directory", + checkbox("", self.use_custom_install_dir).on_toggle(|f| { + Message::SettingsMessage(SettingsMessage::CustomInstallPath( + CustomInstallPath::SetEnabled(f), + )) + }), + true, + )) + .push(settings_row( + "Custom install directory", + row!( + text(format!( + "Installing to {}", + self.custom_install_dir + .clone() + .unwrap_or_default() + .to_string_lossy() + .as_ref() + )) + .size(12.0), + btn, + ) + .align_items(Alignment::Center) + .spacing(10.0) + .padding(Padding { + top: 0.0, + right: 10.0, + bottom: 0.0, + left: 0.0, + }), + self.use_custom_install_dir, + )) + .spacing(10.0), + ) + .padding(100.0) + } + + pub fn update(&mut self, message: SettingsMessage) -> Command { + match message { + SettingsMessage::CustomInstallPath(custom_install_path) => match custom_install_path { + CustomInstallPath::RequestPath => { + return Command::perform( + rfd::AsyncFileDialog::new().pick_folder(), + |f| match f { + Some(handle) => { + Message::SettingsMessage(SettingsMessage::CustomInstallPath( + CustomInstallPath::SetPath(handle.path().to_path_buf()), + )) + } + None => Message::Dummy(()), + }, + ) + } + CustomInstallPath::SetEnabled(f) => { + self.use_custom_install_dir = f; + } + CustomInstallPath::SetPath(p) => { + self.custom_install_dir = Some(p); + } + }, + }; + self.save(); + + Command::none() + } } From cad8666de4f434f9e2f542a4a60ad30c7f1c5082 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 7 Jul 2024 15:12:46 +0200 Subject: [PATCH 05/42] Fix wonkiness from merge conflicts --- Cargo.lock | 291 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 2 +- 2 files changed, 143 insertions(+), 150 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ac4d1e7..d8d09f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -188,36 +188,34 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" dependencies = [ - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener", + "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "async-channel" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.9.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10b3e585719c2358d2660232671ca8ca4ddb4be4ce8a1842d6c2dc8685303316" +checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" dependencies = [ - "async-lock 3.3.0", "async-task", "concurrent-queue", "fastrand", @@ -227,22 +225,22 @@ dependencies = [ [[package]] name = "async-fs" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" dependencies = [ - "async-lock 3.3.0", + "async-lock", "blocking", "futures-lite", ] [[package]] name = "async-io" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ - "async-lock 3.3.0", + "async-lock", "cfg-if", "concurrent-queue", "futures-io", @@ -257,38 +255,29 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener 2.5.3", -] - -[[package]] -name = "async-lock" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", + "event-listener", + "event-listener-strategy", "pin-project-lite", ] [[package]] name = "async-process" -version = "2.2.0" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d999d925640d51b662b7b4e404224dd81de70f4aa4a199383c2c5e5b86885fa3" +checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" dependencies = [ "async-channel", "async-io", - "async-lock 3.3.0", + "async-lock", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener 5.3.0", + "event-listener", "futures-lite", "rustix", "tracing", @@ -297,23 +286,23 @@ dependencies = [ [[package]] name = "async-recursion" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] name = "async-signal" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" dependencies = [ "async-io", - "async-lock 2.8.0", + "async-lock", "atomic-waker", "cfg-if", "futures-core", @@ -321,24 +310,24 @@ dependencies = [ "rustix", "signal-hook-registry", "slab", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.79" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -397,7 +386,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -496,18 +485,15 @@ dependencies = [ [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock 3.3.0", "async-task", - "fastrand", "futures-io", "futures-lite", "piper", - "tracing", ] [[package]] @@ -543,7 +529,7 @@ checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -766,9 +752,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -943,7 +929,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c" dependencies = [ "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -1000,17 +986,6 @@ dependencies = [ "powerfmt", ] -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "detect-desktop-environment" version = "0.2.0" @@ -1151,6 +1126,33 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.69", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -1243,26 +1245,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -1271,21 +1256,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.0", + "event-listener", "pin-project-lite", ] @@ -1416,7 +1391,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -1510,7 +1485,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -2572,7 +2547,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -2612,7 +2587,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -2752,6 +2727,26 @@ dependencies = [ "libredox 0.0.2", ] +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "owned_ttf_parser" version = "0.20.0" @@ -2781,7 +2776,7 @@ checksum = "e8890702dbec0bad9116041ae586f84805b13eecd1d8b1df27c29998a9969d6d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -2907,7 +2902,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -2936,7 +2931,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -2953,9 +2948,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" dependencies = [ "atomic-waker", "fastrand", @@ -3043,7 +3038,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" dependencies = [ "proc-macro2", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -3057,9 +3052,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -3103,7 +3098,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.55", + "syn 2.0.69", "tempfile", ] @@ -3117,7 +3112,7 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -3149,9 +3144,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -3346,7 +3341,7 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots", - "winreg 0.50.0", + "winreg 0.52.0", ] [[package]] @@ -3549,7 +3544,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -3565,13 +3560,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -3605,9 +3600,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -3811,9 +3806,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.55" +version = "2.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" +checksum = "201fcda3845c23e8212cd466bfebf0bd20694490fc0356ae8e428e0824a915a6" dependencies = [ "proc-macro2", "quote", @@ -3884,7 +3879,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -4097,7 +4092,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -4306,7 +4301,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", "wasm-bindgen-shared", ] @@ -4340,7 +4335,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5063,12 +5058,12 @@ checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" [[package]] name = "xdg-home" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -5110,23 +5105,22 @@ checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" [[package]] name = "zbus" -version = "4.1.2" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9" +checksum = "23915fcb26e7a9a9dc05fd93a9870d336d6d032cd7e8cebf1c5c37666489fdd5" dependencies = [ "async-broadcast", "async-executor", "async-fs", "async-io", - "async-lock 3.3.0", + "async-lock", "async-process", "async-recursion", "async-task", "async-trait", "blocking", - "derivative", "enumflags2", - "event-listener 5.3.0", + "event-listener", "futures-core", "futures-sink", "futures-util", @@ -5149,15 +5143,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.1.2" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0" +checksum = "02bcca0b586d2f8589da32347b4784ba424c4891ed86aa5b50d5e88f6b2c4f5d" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "regex", - "syn 1.0.109", + "syn 2.0.69", "zvariant_utils", ] @@ -5195,7 +5188,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -5238,9 +5231,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "4.0.2" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a" +checksum = "1724a2b330760dc7d2a8402d841119dc869ef120b139d29862d6980e9c75bfc9" dependencies = [ "endi", "enumflags2", @@ -5251,24 +5244,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "4.0.2" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc" +checksum = "55025a7a518ad14518fb243559c058a2e5b848b015e31f1d90414f36e3317859" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.69", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" +checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.69", ] diff --git a/Cargo.toml b/Cargo.toml index 910693d..d214287 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ osx_minimum_system_version = "10.7" [dependencies] anyhow = "1.0" bitar = { version = "0.12", features = ["rustls-tls"] } -time = "0.3" +dark-light = "1.0" dmg = "0.1.2" espim = "0.2" flate2 = "1.0" From 694d3be4daac1a3b097d001087b109cab4e7ee2e Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 7 Jul 2024 15:32:18 +0200 Subject: [PATCH 06/42] actually make it work post-merge --- Cargo.lock | 45 +++++++++++++++++++++++++++------------------ src/main.rs | 1 - src/settings.rs | 13 +++++++++++++ 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a820039..c5d9e5c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -228,6 +228,30 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-executor" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + [[package]] name = "async-io" version = "2.3.3" @@ -286,7 +310,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.69", ] [[package]] @@ -980,17 +1004,6 @@ dependencies = [ "powerfmt", ] -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "detect-desktop-environment" version = "0.2.0" @@ -2791,12 +2804,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" -[[package]] -name = "parking" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" - [[package]] name = "parking_lot" version = "0.11.2" @@ -5182,6 +5189,7 @@ dependencies = [ "serde_repr", "sha1", "static_assertions", + "tokio", "tracing", "uds_windows", "windows-sys 0.52.0", @@ -5289,6 +5297,7 @@ dependencies = [ "enumflags2", "serde", "static_assertions", + "url", "zvariant_derive", ] diff --git a/src/main.rs b/src/main.rs index f0605a1..236f40c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,7 +21,6 @@ use iced::{ alignment, font, Alignment, Application, Command, Element, Font, Length, Subscription, Theme, }; use iced_aw::{TabLabel, Tabs}; -use settings::SettingsMessage; use std::collections::VecDeque; use std::sync::Mutex; diff --git a/src/settings.rs b/src/settings.rs index f46d4f9..6c2f035 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -24,6 +24,7 @@ pub struct Settings { pub music_state: MusicState, pub dark_theme: bool, pub custom_install_dir: Option, + #[serde(default)] pub use_custom_install_dir: bool, } @@ -33,6 +34,17 @@ pub enum SettingsMessage { CustomInstallPath(CustomInstallPath), } +impl Default for Settings { + fn default() -> Self { + Self { + music_state: Default::default(), + dark_theme: dark_light::detect().eq(&dark_light::Mode::Dark), + custom_install_dir: Default::default(), + use_custom_install_dir: Default::default(), + } + } +} + impl Settings { pub fn save(&self) { let save = || -> Result<()> { @@ -188,6 +200,7 @@ impl Settings { self.custom_install_dir = Some(p); } }, + SettingsMessage::DarkTheme(dark) => self.dark_theme = dark, }; self.save(); From 2039f6a36b743989cab6a1799e301b0f203edbe1 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Tue, 24 Jun 2025 20:08:10 +0200 Subject: [PATCH 07/42] use one install_dir setting rather than a bespoke setting for custom dirs --- src/install_frame.rs | 29 ++++------ src/instance.rs | 12 +--- src/settings.rs | 128 ++++++++++++++++++------------------------- src/style.rs | 4 ++ 4 files changed, 69 insertions(+), 104 deletions(-) diff --git a/src/install_frame.rs b/src/install_frame.rs index 6fd0516..6f619ef 100644 --- a/src/install_frame.rs +++ b/src/install_frame.rs @@ -1,4 +1,4 @@ -use crate::instance::{get_instances_dir, InstanceType}; +use crate::instance::InstanceType; use crate::settings::Settings; use crate::style::text_button; use crate::{instance, Message}; @@ -65,24 +65,15 @@ impl InstallFrame { ) -> Command { match message { InstallFrameMessage::StartInstallation(instance_type) => { - if let Some(mut destination) = if settings.use_custom_install_dir { - settings.custom_install_dir.clone() - } else { - get_instances_dir() - } { - destination.push(&self.name); - return Command::perform( - instance::perform_install( - destination, - self.name.clone(), - instance_type, - self.source.clone(), - ), - Message::Dummy, - ); - } else { - error!("Could not get instances directory from AppDirs"); - } + return Command::perform( + instance::perform_install( + settings.install_dir.join(&self.name), + self.name.clone(), + instance_type, + self.source.clone(), + ), + Message::Dummy, + ); } InstallFrameMessage::SourceTypeChanged(source_type) => self.source.r#type = source_type, InstallFrameMessage::NameChanged(name) => { diff --git a/src/instance.rs b/src/instance.rs index bdb56f2..b31042d 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -209,7 +209,7 @@ impl Instance { let mut debug_button = Button::new(style::debug_icon()).style(icon_button()); let mut play_button = Button::new(style::play_icon()).style(icon_button()); let mut update_button = Button::new(style::update_icon()).style(icon_button()); - let folder_button = Button::new(style::folder_icon()) + let folder_button = Button::new(style::reset_icon()) .style(icon_button()) .on_press(InstanceMessage::Folder); let mut delete_button = Button::new(style::delete_icon()).style(theme::Button::Destructive); @@ -400,12 +400,6 @@ pub async fn play(path: PathBuf, executable: PathBuf, name: String, do_debug: bo Ok(()) } -pub fn get_instances_dir() -> Option { - let mut dir = get_data_dir()?; - dir.push("instances"); - Some(dir) -} - #[derive(Serialize, Deserialize)] struct InstancesContainer(Vec); @@ -417,7 +411,7 @@ pub fn perform_save_instances(instances: BTreeMap) { fn save_instances(instances: BTreeMap) -> Result<()> { let mut instances_file = - get_instances_dir().ok_or_else(|| anyhow!("Failed to get Instances dir"))?; + get_data_dir().ok_or_else(|| anyhow!("Failed to get Instances dir"))?; instances_file.push("instances.json"); debug!("Saving to {}", instances_file.to_string_lossy()); @@ -432,7 +426,7 @@ fn save_instances(instances: BTreeMap) -> Result<()> { pub fn load_instances() -> Result> { let mut instances_file = - get_instances_dir().ok_or_else(|| anyhow!("Failed to get Instances dir"))?; + get_data_dir().ok_or_else(|| anyhow!("Failed to get Instances dir"))?; instances_file.push("instances.json"); debug!("Loading from {}", instances_file.to_string_lossy()); diff --git a/src/settings.rs b/src/settings.rs index 6c2f035..bcac72a 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -3,7 +3,7 @@ use crate::{get_data_dir, style, Message}; use anyhow::{Context, Result}; use iced::advanced::graphics::core::Element; use iced::widget::text_input::StyleSheet; -use iced::widget::{checkbox, container, row, text, Text}; +use iced::widget::{container, row, text, Checkbox, Text}; use iced::{ widget::{button, Column, Container, Row}, Length, @@ -12,26 +12,22 @@ use iced::{Alignment, Command, Padding, Renderer}; use serde::{Deserialize, Serialize}; use std::{fs::File, path::PathBuf}; -#[derive(Clone, Debug)] -pub enum CustomInstallPath { - SetEnabled(bool), - RequestPath, - SetPath(PathBuf), -} - #[derive(Clone, Debug, Serialize, Deserialize)] pub struct Settings { pub music_state: MusicState, pub dark_theme: bool, - pub custom_install_dir: Option, - #[serde(default)] - pub use_custom_install_dir: bool, + #[serde(default = "default_install_dir")] + pub install_dir: PathBuf, +} +fn default_install_dir() -> PathBuf { + get_data_dir().unwrap().join("instances") } #[derive(Debug, Clone)] pub enum SettingsMessage { DarkTheme(bool), - CustomInstallPath(CustomInstallPath), + RequestInstallPath, + SetInstallPath(PathBuf), } impl Default for Settings { @@ -39,8 +35,7 @@ impl Default for Settings { Self { music_state: Default::default(), dark_theme: dark_light::detect().eq(&dark_light::Mode::Dark), - custom_install_dir: Default::default(), - use_custom_install_dir: Default::default(), + install_dir: default_install_dir(), } } } @@ -71,17 +66,15 @@ impl Settings { return Self::default(); } - match File::open(settings_file) + File::open(settings_file) .with_context(|| "Failed to open settings.json") .and_then(|f| { serde_json::from_reader(f).with_context(|| "Failed to deserialize settings.json") - }) { - Ok(s) => s, - Err(e) => { + }) + .unwrap_or_else(|e| { warn!("{:#?}", e); Self::default() - } - } + }) } pub fn view(&self) -> Container { @@ -90,19 +83,8 @@ impl Settings { content: impl Into>, enabled: bool, ) -> impl Into> { - let setting_spacer = || { - iced::widget::horizontal_rule(2).style(iced::theme::Rule::from( - |theme: &iced::Theme| { - let mut appearance = - iced::widget::rule::StyleSheet::appearance(theme, &Default::default()); - appearance.color.a *= 0.75; - appearance - }, - )) - }; let container = container( Column::new() - .push(setting_spacer()) .push( Row::new() .push(Text::new(label)) @@ -128,40 +110,38 @@ impl Settings { ))) } } - let btn = button(style::folder_icon().size(12.0)) - .on_press_maybe( - self.use_custom_install_dir - .then_some(Message::SettingsMessage( - SettingsMessage::CustomInstallPath(CustomInstallPath::RequestPath), - )), - ) + + let install_dir_picker = button(style::folder_icon().size(12.0)) + .on_press(Message::SettingsMessage( + SettingsMessage::RequestInstallPath, + )) // .style(icon_button()) .padding(Padding::from([2, 0])); + let install_dir_reset_btn = if self.install_dir.eq(&default_install_dir()) { + None + } else { + Some( + button(style::reset_icon().size(12.0)) + .on_press(Message::SettingsMessage(SettingsMessage::SetInstallPath( + default_install_dir(), + ))) + .padding(Padding::from([2, 0])), + ) + }; + Container::new( Column::new() .push(settings_row( - "Use custom install directory", - checkbox("", self.use_custom_install_dir).on_toggle(|f| { - Message::SettingsMessage(SettingsMessage::CustomInstallPath( - CustomInstallPath::SetEnabled(f), - )) - }), - true, - )) - .push(settings_row( - "Custom install directory", + "Install directory", row!( text(format!( "Installing to {}", - self.custom_install_dir - .clone() - .unwrap_or_default() - .to_string_lossy() - .as_ref() + self.install_dir.to_string_lossy(), )) .size(12.0), - btn, + install_dir_picker ) + .push_maybe(install_dir_reset_btn) .align_items(Alignment::Center) .spacing(10.0) .padding(Padding { @@ -170,7 +150,13 @@ impl Settings { bottom: 0.0, left: 0.0, }), - self.use_custom_install_dir, + true, + )) + .push(settings_row( + "Dark Theme", + Checkbox::new("", self.dark_theme) + .on_toggle(|v| Message::SettingsMessage(SettingsMessage::DarkTheme(v))), + true, )) .spacing(10.0), ) @@ -179,27 +165,17 @@ impl Settings { pub fn update(&mut self, message: SettingsMessage) -> Command { match message { - SettingsMessage::CustomInstallPath(custom_install_path) => match custom_install_path { - CustomInstallPath::RequestPath => { - return Command::perform( - rfd::AsyncFileDialog::new().pick_folder(), - |f| match f { - Some(handle) => { - Message::SettingsMessage(SettingsMessage::CustomInstallPath( - CustomInstallPath::SetPath(handle.path().to_path_buf()), - )) - } - None => Message::Dummy(()), - }, - ) - } - CustomInstallPath::SetEnabled(f) => { - self.use_custom_install_dir = f; - } - CustomInstallPath::SetPath(p) => { - self.custom_install_dir = Some(p); - } - }, + SettingsMessage::RequestInstallPath => { + return Command::perform(rfd::AsyncFileDialog::new().pick_folder(), |f| match f { + Some(handle) => Message::SettingsMessage(SettingsMessage::SetInstallPath( + handle.path().to_path_buf(), + )), + None => Message::Dummy(()), + }) + } + SettingsMessage::SetInstallPath(p) => { + self.install_dir = p; + } SettingsMessage::DarkTheme(dark) => self.dark_theme = dark, }; self.save(); diff --git a/src/style.rs b/src/style.rs index 7ad09e2..25ab58d 100644 --- a/src/style.rs +++ b/src/style.rs @@ -39,6 +39,10 @@ pub fn folder_icon() -> Text<'static> { icon('\u{E930}') } +pub fn reset_icon() -> Text<'static> { + icon('\u{E965}') +} + pub fn icon_button() -> iced::theme::Button { iced::theme::Button::Custom(Box::new(ButtonStyle::Icon)) } From d05d6f5fc93ad1406137a04ad460ce91abfac272 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Tue, 24 Jun 2025 20:23:20 +0200 Subject: [PATCH 08/42] fix instances.json loading --- src/instance.rs | 19 ++++++++----------- src/instances_frame.rs | 10 +++++----- src/main.rs | 12 +++++++++--- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/instance.rs b/src/instance.rs index 3227647..dbef07b 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -1,7 +1,8 @@ use crate::install_frame::InstanceSource; use crate::music::MusicCommand; +use crate::settings::Settings; use crate::style::icon_button; -use crate::{get_data_dir, install, send_message, style, update, Message}; +use crate::{install, send_message, style, update, Message}; use anyhow::Result; use iced::widget::{Button, Column, ProgressBar, Row, Space, Text}; use iced::{alignment, theme, Alignment, Element, Length}; @@ -403,16 +404,14 @@ pub async fn play(path: PathBuf, executable: PathBuf, name: String, do_debug: bo #[derive(Serialize, Deserialize)] struct InstancesContainer(Vec); -pub fn perform_save_instances(instances: BTreeMap) { - if let Err(e) = save_instances(instances) { +pub fn perform_save_instances(instances: BTreeMap, settings: &Settings) { + if let Err(e) = save_instances(instances, settings) { error!("Failed to save instances: {:#}", e); }; } -fn save_instances(instances: BTreeMap) -> Result<()> { - let mut instances_file = - get_data_dir().ok_or_else(|| anyhow!("Failed to get Instances dir"))?; - instances_file.push("instances.json"); +fn save_instances(instances: BTreeMap, settings: &Settings) -> Result<()> { + let instances_file = settings.install_dir.join("instances.json"); debug!("Saving to {}", instances_file.to_string_lossy()); let file = File::create(instances_file)?; @@ -424,10 +423,8 @@ fn save_instances(instances: BTreeMap) -> Result<()> { Ok(()) } -pub fn load_instances() -> Result> { - let mut instances_file = - get_data_dir().ok_or_else(|| anyhow!("Failed to get Instances dir"))?; - instances_file.push("instances.json"); +pub fn load_instances(settings: &Settings) -> Result> { + let instances_file = settings.install_dir.join("instances.json"); debug!("Loading from {}", instances_file.to_string_lossy()); if instances_file.exists() { diff --git a/src/instances_frame.rs b/src/instances_frame.rs index 4b949c9..436dec6 100644 --- a/src/instances_frame.rs +++ b/src/instances_frame.rs @@ -1,4 +1,5 @@ use crate::instance::{load_instances, Instance}; +use crate::settings::Settings; use crate::Message; use iced::widget::{Column, Container, Scrollable, Text}; use iced::{alignment, theme, Alignment, Color, Element, Length}; @@ -9,9 +10,9 @@ pub struct InstancesFrame { pub instances: BTreeMap, } -impl Default for InstancesFrame { - fn default() -> Self { - let instances = match load_instances() { +impl InstancesFrame { + pub fn new(settings: &Settings) -> Self { + let instances = match load_instances(settings) { Ok(vec) => { let mut map = BTreeMap::new(); for i in vec { @@ -26,8 +27,7 @@ impl Default for InstancesFrame { }; Self { instances } } -} -impl InstancesFrame { + pub fn view(&self) -> Element { let instances_column = Column::new() .padding(20) diff --git a/src/main.rs b/src/main.rs index 236f40c..c981a24 100644 --- a/src/main.rs +++ b/src/main.rs @@ -132,7 +132,7 @@ impl Application for ESLauncher { Self { music_sender, install_frame: install_frame::InstallFrame::default(), - instances_frame: instances_frame::InstancesFrame::default(), + instances_frame: instances_frame::InstancesFrame::new(&settings), plugins_frame: plugins_frame_state, message_receiver: MessageReceiver {}, log_buffer: vec![], @@ -183,13 +183,19 @@ impl Application for ESLauncher { .instances .insert(instance.name.clone(), *instance); if is_ready { - instance::perform_save_instances(self.instances_frame.instances.clone()); + instance::perform_save_instances( + self.instances_frame.instances.clone(), + &self.settings, + ); }; } Message::RemoveInstance(option) => { if let Some(name) = option { self.instances_frame.instances.remove(&name); - instance::perform_save_instances(self.instances_frame.instances.clone()); + instance::perform_save_instances( + self.instances_frame.instances.clone(), + &self.settings, + ); } } Message::MusicMessage(cmd) => { From ca40844884e3d9e07c14c89bdab26fd563d2aa0c Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Tue, 24 Jun 2025 20:36:04 +0200 Subject: [PATCH 09/42] mark the tiny-skia issue as TODO --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 33ce686..787a791 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,7 +60,7 @@ features = [ "advanced", "image", "tokio", - "wgpu", # tiny-skia backend panics with small text boxes, fixed in latest master. + # "wgpu", # TODO: tiny-skia backend panics with small text boxes, fixed in latest master. ] [target.'cfg(windows)'.build-dependencies] From b620267ae8237fdca8ec72975e3593fe98b4633d Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Tue, 24 Jun 2025 20:40:13 +0200 Subject: [PATCH 10/42] Restore missing horizontal bar below tab bar --- src/main.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index c981a24..8ad696b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,11 @@ #![forbid(unsafe_code)] #![windows_subsystem = "windows"] // Don't show console on windows -#[macro_use] -extern crate log; #[macro_use] extern crate anyhow; #[macro_use] +extern crate log; +#[macro_use] extern crate version; use std::hash::Hash; @@ -265,7 +265,10 @@ impl Application for ESLauncher { .push( Tab::Settings, TabLabel::Text("Settings".into()), - self.settings.view(), + iced::widget::column([ + iced::widget::horizontal_rule(2).into(), + self.settings.view().into(), + ]), ) .set_active_tab(&self.active_tab) .tab_bar_style(tab_bar()); From 9b394ce4a27d5d6f72b92f5a799af7d2ecae1718 Mon Sep 17 00:00:00 2001 From: Daniel <101683475+koranir@users.noreply.github.com> Date: Thu, 11 Jul 2024 06:42:51 +0200 Subject: [PATCH 11/42] Link issue in comment --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 787a791..2ca9f40 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,7 +60,7 @@ features = [ "advanced", "image", "tokio", - # "wgpu", # TODO: tiny-skia backend panics with small text boxes, fixed in latest master. + # "wgpu", # TODO: tiny-skia backend panics with text in rows: https://github.com/iced-rs/iced/issues/2332 ] [target.'cfg(windows)'.build-dependencies] From a34e8e28b84fd6c4f491ac2b226bd683a47e350e Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sat, 28 Jun 2025 12:37:38 +0200 Subject: [PATCH 12/42] Correct comment & button --- Cargo.toml | 2 +- src/instance.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2ca9f40..12f5a51 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,7 +60,7 @@ features = [ "advanced", "image", "tokio", - # "wgpu", # TODO: tiny-skia backend panics with text in rows: https://github.com/iced-rs/iced/issues/2332 + # "wgpu", # TODO: tiny-skia backend panics when elements are resized to 0 width: https://github.com/iced-rs/iced/pull/2977 ] [target.'cfg(windows)'.build-dependencies] diff --git a/src/instance.rs b/src/instance.rs index dbef07b..60d88b0 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -210,7 +210,7 @@ impl Instance { let mut debug_button = Button::new(style::debug_icon()).style(icon_button()); let mut play_button = Button::new(style::play_icon()).style(icon_button()); let mut update_button = Button::new(style::update_icon()).style(icon_button()); - let folder_button = Button::new(style::reset_icon()) + let folder_button = Button::new(style::folder_icon()) .style(icon_button()) .on_press(InstanceMessage::Folder); let mut delete_button = Button::new(style::delete_icon()).style(theme::Button::Destructive); From a58efe3114450db9e3edb41d9b714d68e4ba804b Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sat, 28 Jun 2025 13:01:10 +0200 Subject: [PATCH 13/42] Update iced (61 compile errors) --- Cargo.lock | 521 +++++++++++++++++++++++++++++++++-------------------- Cargo.toml | 5 +- 2 files changed, 332 insertions(+), 194 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bf12c45..ef55af6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,7 +39,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom", + "getrandom 0.2.12", "once_cell", "version_check", ] @@ -51,7 +51,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.12", "once_cell", "version_check", "zerocopy", @@ -110,9 +110,9 @@ dependencies = [ [[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.5.0", @@ -122,9 +122,9 @@ dependencies = [ "jni-sys", "libc", "log", - "ndk", + "ndk 0.9.0", "ndk-context", - "ndk-sys", + "ndk-sys 0.6.0+11769913", "num_enum", "thiserror", ] @@ -402,7 +402,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash", + "rustc-hash 1.1.0", "shlex", "syn 2.0.69", ] @@ -482,22 +482,12 @@ dependencies = [ "generic-array", ] -[[package]] -name = "block-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" -dependencies = [ - "objc-sys", -] - [[package]] name = "block2" -version = "0.3.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "block-sys", "objc2", ] @@ -839,19 +829,21 @@ dependencies = [ [[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.5.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", @@ -872,7 +864,7 @@ dependencies = [ "js-sys", "libc", "mach2", - "ndk", + "ndk 0.8.0", "ndk-context", "oboe", "wasm-bindgen", @@ -1099,6 +1091,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + [[package]] name = "drm" version = "0.11.1" @@ -1365,9 +1363,12 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "font-types" -version = "0.4.3" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b7f6040d337bd44434ab21fc6509154edf2cece88b23758d9d64654c4e7730b" +checksum = "b3971f9a5ca983419cdc386941ba3b9e1feba01a0ab888adf78739feb2798492" +dependencies = [ + "bytemuck", +] [[package]] name = "fontconfig-parser" @@ -1380,16 +1381,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]] @@ -1565,7 +1566,19 @@ checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -1628,18 +1641,6 @@ 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" @@ -1868,9 +1869,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", @@ -1883,50 +1884,78 @@ dependencies = [ [[package]] name = "iced_aw" -version = "0.8.0" -source = "git+https://github.com/iced-rs/iced_aw.git?rev=9ed46bffd0d819f22e07db6c282fbef733007df5#9ed46bffd0d819f22e07db6c282fbef733007df5" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "582c517a94ce3205da98e9c10b26bb71aa36b7d7d084441d826dc912711d1bac" dependencies = [ "cfg-if", + "getrandom 0.3.3", "iced", + "iced_fonts", + "web-time", ] [[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.5.0", + "bytes", "glam", "log", "num-traits", + "once_cell", "palette", - "raw-window-handle", + "rustc-hash 2.1.1", "smol_str", "thiserror", "web-time", - "xxhash-rust", +] + +[[package]] +name = "iced_fonts" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df7deb0800a850ee25c8a42559f72c0f249e577feb3aad37b9b65dc1e517e52a" +dependencies = [ + "iced_core", ] [[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", "tokio", "wasm-bindgen-futures", "wasm-timer", ] +[[package]] +name = "iced_glyphon" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c3bb56f1820ca252bc1d0994ece33d233a55657c0c263ea7cb16895adbde82" +dependencies = [ + "cosmic-text", + "etagere", + "lru", + "rustc-hash 2.1.1", + "wgpu", +] + [[package]] name = "iced_graphics" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a044c193ef0840eacabfa05424717331d1fc5b3ecb9a89316200c75da2ba9a4" +checksum = "ba25a18cfa6d5cc160aca7e1b34f73ccdff21680fa8702168c09739767b6c66f" dependencies = [ "bitflags 2.5.0", "bytemuck", @@ -1939,17 +1968,16 @@ dependencies = [ "log", "once_cell", "raw-window-handle", - "rustc-hash", + "rustc-hash 2.1.1", "thiserror", "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", @@ -1960,105 +1988,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", ] -[[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.5.0", "bytemuck", "futures", "glam", - "glyphon", "guillotiere", + "iced_glyphon", "iced_graphics", "log", "once_cell", + "rustc-hash 2.1.1", + "thiserror", "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", "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", "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", - "dispatch", - "objc2", -] - [[package]] name = "idna" version = "0.5.0" @@ -2188,10 +2199,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -2262,9 +2274,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libloading" @@ -2353,9 +2365,6 @@ name = "lru" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" -dependencies = [ - "hashbrown 0.14.3", -] [[package]] name = "mach2" @@ -2381,15 +2390,6 @@ version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" -[[package]] -name = "memmap2" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed" -dependencies = [ - "libc", -] - [[package]] name = "memmap2" version = "0.9.4" @@ -2453,7 +2453,7 @@ checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -2482,7 +2482,7 @@ dependencies = [ "indexmap", "log", "num-traits", - "rustc-hash", + "rustc-hash 1.1.0", "spirv", "termcolor", "thiserror", @@ -2498,7 +2498,21 @@ dependencies = [ "bitflags 2.5.0", "jni-sys", "log", - "ndk-sys", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.5.0", + "jni-sys", + "log", + "ndk-sys 0.6.0+11769913", "num_enum", "raw-window-handle", "thiserror", @@ -2519,6 +2533,15 @@ 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.28.0" @@ -2631,25 +2654,103 @@ dependencies = [ [[package]] name = "objc-sys" -version = "0.3.2" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] name = "objc2" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ "objc-sys", "objc2-encode", ] +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.5.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + [[package]] name = "objc2-encode" -version = "3.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.5.0", + "block2", + "dispatch", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] [[package]] name = "objc_exception" @@ -2685,7 +2786,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" dependencies = [ "jni", - "ndk", + "ndk 0.8.0", "ndk-context", "num-derive", "num-traits", @@ -3166,6 +3267,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" @@ -3193,7 +3300,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.12", ] [[package]] @@ -3236,10 +3343,11 @@ dependencies = [ [[package]] name = "read-fonts" -version = "0.16.0" +version = "0.22.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81c524658d3b77930a391f559756d91dbe829ab6cf4687083f615d395df99722" +checksum = "69aacb76b5c29acfb7f90155d39759a29496aebb49395830e928a9703d2eec2f" dependencies = [ + "bytemuck", "font-types", ] @@ -3252,15 +3360,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.4.1" @@ -3276,7 +3375,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "getrandom", + "getrandom 0.2.12", "libredox 0.0.1", "thiserror", ] @@ -3390,7 +3489,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.12", "libc", "spin", "untrusted", @@ -3436,6 +3535,12 @@ 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 = "rustix" version = "0.38.32" @@ -3505,17 +3610,23 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + [[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.5.0", "bytemuck", "libm", "smallvec", - "ttf-parser 0.20.0", + "ttf-parser 0.21.1", "unicode-bidi-mirroring", "unicode-ccc", "unicode-properties", @@ -3551,13 +3662,13 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" +checksum = "7555fcb4f753d095d734fdefebb0ad8c98478a21db500492d87c55913d3b0086" dependencies = [ "ab_glyph", "log", - "memmap2 0.9.4", + "memmap2", "smithay-client-toolkit", "tiny-skia", ] @@ -3684,6 +3795,16 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +[[package]] +name = "skrifa" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" +dependencies = [ + "bytemuck", + "read-fonts", +] + [[package]] name = "slab" version = "0.4.9" @@ -3720,7 +3841,7 @@ dependencies = [ "cursor-icon", "libc", "log", - "memmap2 0.9.4", + "memmap2", "rustix", "thiserror", "wayland-backend", @@ -3779,7 +3900,7 @@ dependencies = [ "foreign-types", "js-sys", "log", - "memmap2 0.9.4", + "memmap2", "objc", "raw-window-handle", "redox_syscall 0.4.1", @@ -3838,11 +3959,11 @@ checksum = "f83ba502a3265efb76efb89b0a2f7782ad6f2675015d4ce37e4b547dda42b499" [[package]] name = "swash" -version = "0.1.13" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9af636fb90d39858650cae1088a37e2862dab4e874a0bb49d6dfb5b2dacf0e24" +checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" dependencies = [ - "read-fonts", + "skrifa", "yazi", "zeno", ] @@ -4167,15 +4288,15 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "ttf-parser" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49d64318d8311fc2668e48b63969f4343e0a85c4a109aa8460d6672e364b8bd1" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" [[package]] name = "ttf-parser" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" +checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" [[package]] name = "typenum" @@ -4202,15 +4323,15 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[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" @@ -4341,25 +4462,35 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn 2.0.69", @@ -4380,9 +4511,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4390,9 +4521,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -4403,9 +4534,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" @@ -4546,9 +4680,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.67" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -4556,9 +4690,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", @@ -4622,7 +4756,7 @@ dependencies = [ "parking_lot 0.12.1", "profiling", "raw-window-handle", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", "thiserror", "web-sys", @@ -4658,7 +4792,7 @@ dependencies = [ "log", "metal", "naga", - "ndk-sys", + "ndk-sys 0.5.0+25.2.9519653", "objc", "once_cell", "parking_lot 0.12.1", @@ -4666,7 +4800,7 @@ dependencies = [ "range-alloc", "raw-window-handle", "renderdoc-sys", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", "thiserror", "wasm-bindgen", @@ -4985,9 +5119,9 @@ checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "winit" -version = "0.29.15" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" +checksum = "ea9e6d5d66cbf702e0dd820302144f51b69a95acdc495dd98ca280ff206562b1" dependencies = [ "ahash 0.8.11", "android-activity", @@ -4995,27 +5129,29 @@ dependencies = [ "bitflags 2.5.0", "bytemuck", "calloop", - "cfg_aliases 0.1.1", + "cfg_aliases 0.2.0", + "concurrent-queue", "core-foundation", "core-graphics", "cursor-icon", - "icrate", + "dpi", "js-sys", "libc", - "log", - "memmap2 0.9.4", - "ndk", - "ndk-sys", + "memmap2", + "ndk 0.9.0", "objc2", - "once_cell", + "objc2-app-kit", + "objc2-foundation", "orbclient", "percent-encoding", + "pin-project", "raw-window-handle", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "rustix", "sctk-adwaita", "smithay-client-toolkit", "smol_str", + "tracing", "unicode-segmentation", "wasm-bindgen", "wasm-bindgen-futures", @@ -5025,7 +5161,7 @@ dependencies = [ "wayland-protocols-plasma", "web-sys", "web-time", - "windows-sys 0.48.0", + "windows-sys 0.52.0", "x11-dl", "x11rb", "xkbcommon-dl", @@ -5068,6 +5204,15 @@ dependencies = [ "toml", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.5.0", +] + [[package]] name = "x11-dl" version = "2.21.0" @@ -5152,12 +5297,6 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" -[[package]] -name = "xxhash-rust" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" - [[package]] name = "yazi" version = "0.1.6" diff --git a/Cargo.toml b/Cargo.toml index 12f5a51..b97c535 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,9 +23,8 @@ espim = "0.2" flate2 = "1.0" fs_extra = "1.3.0" futures = "0.3" -iced_aw = { git = "https://github.com/iced-rs/iced_aw.git", rev = "9ed46bffd0d819f22e07db6c282fbef733007df5", default-features = false, features = [ +iced_aw = { version = "0.12.2", default-features = false, features = [ "tabs", - "icons", ] } lazy_static = "1.5" log = { version = "0.4.22", features = ["std"] } @@ -53,7 +52,7 @@ rfd = { version = "0.14.1", default-features = false, features = [ ] } [dependencies.iced] -version = "0.12.1" +version = "0.13.1" default-features = false features = [ "web-colors", From cf7f78a69ff7c3e5a02e27ccd281cc2a2c559e9f Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sat, 28 Jun 2025 13:03:18 +0200 Subject: [PATCH 14/42] Use new Row::align_y api (60 compile errors) --- src/settings.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/settings.rs b/src/settings.rs index bcac72a..7fdb907 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -93,7 +93,7 @@ impl Settings { .align_x(iced::alignment::Horizontal::Right) .width(Length::Fill), ) - .align_items(Alignment::Center), + .align_y(Alignment::Center), ) .spacing(10.0), ); @@ -142,7 +142,7 @@ impl Settings { install_dir_picker ) .push_maybe(install_dir_reset_btn) - .align_items(Alignment::Center) + .align_y(Alignment::Center) .spacing(10.0) .padding(Padding { top: 0.0, From cc9b1bc659475f8173e6fdcecd07ab68c6a22885 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sat, 28 Jun 2025 13:16:46 +0200 Subject: [PATCH 15/42] Use new Program api (61 compile errors) --- src/main.rs | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8ad696b..71bff70 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,7 +18,7 @@ use iced::advanced::subscription::EventStream; use iced::advanced::Hasher; use iced::widget::{Button, Column, Container, Row, Scrollable, Space, Text}; use iced::{ - alignment, font, Alignment, Application, Command, Element, Font, Length, Subscription, Theme, + alignment, font, Alignment, Application, Element, Font, Length, Subscription, Task, Theme, }; use iced_aw::{TabLabel, Tabs}; use std::collections::VecDeque; @@ -66,7 +66,14 @@ mod update; static MESSAGE_QUEUE: Mutex> = Mutex::new(VecDeque::new()); pub fn main() -> iced::Result { - ESLauncher::run(iced::Settings::default()) + iced::application( + format!("ESLauncher2 v{}", version!()), + ESLauncher::update, + ESLauncher::view, + ) + .subscription(ESLauncher::subscription) + .theme(ESLauncher::theme) + .run_with(|| ESLauncher::new()) } #[derive(Debug)] @@ -104,12 +111,8 @@ pub enum Message { Log(String), } -impl Application for ESLauncher { - type Executor = iced::executor::Default; - type Message = Message; - type Flags = (); - - fn new(_flag: ()) -> (Self, Command) { +impl ESLauncher { + fn new() -> (Self, Task) { logger::init(); info!("Starting ESLauncher2 v{}", version!()); if cfg!(target_os = "macos") { @@ -149,13 +152,7 @@ impl Application for ESLauncher { ) } - fn title(&self) -> String { - format!("ESLauncher2 v{}", version!()) - } - - type Theme = Theme; - - fn update(&mut self, message: Self::Message) -> Command { + fn update(&mut self, message: Message) -> Command { match message { Message::InstallFrameMessage(msg) => { return self.install_frame.update(msg, &mut self.settings) @@ -232,7 +229,7 @@ impl Application for ESLauncher { Subscription::from_recipe(self.message_receiver.clone()) } - fn view(&self) -> Element<'_, Self::Message> { + fn view(&self) -> Element<'_, Message> { let tabs = Tabs::new(Message::TabSelected) .push::>( Tab::Instances, @@ -346,8 +343,8 @@ impl Application for ESLauncher { .into() } - fn theme(&self) -> Self::Theme { - iced::Theme::custom("LightModified".into(), { + fn theme(&self) -> Theme { + Theme::custom("LightModified".into(), { let mut palette = iced::theme::Palette::LIGHT; palette.primary = iced::Color::from_rgb(0.2, 0.2, 0.2); palette From 92a03b9484561dba9ccf3aba7aadf1e3b3a8c009 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sat, 28 Jun 2025 13:24:02 +0200 Subject: [PATCH 16/42] Use new Task api (61 compile errors) --- src/install_frame.rs | 8 ++++---- src/instance.rs | 20 ++++++++++---------- src/main.rs | 8 +++++--- src/plugins_frame.rs | 12 ++++++------ src/settings.rs | 8 ++++---- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/install_frame.rs b/src/install_frame.rs index 6f619ef..f56934e 100644 --- a/src/install_frame.rs +++ b/src/install_frame.rs @@ -4,7 +4,7 @@ use crate::style::text_button; use crate::{instance, Message}; use core::fmt; use iced::widget::{Button, Column, Container, Radio, Scrollable, Text, TextInput}; -use iced::{alignment, Alignment, Command, Element, Length}; +use iced::{alignment, Alignment, Element, Length, Task}; use serde::{Deserialize, Serialize}; // Characters that shall not be allowed to enter. This does not cover all cases! @@ -62,10 +62,10 @@ impl InstallFrame { &mut self, message: InstallFrameMessage, settings: &mut Settings, - ) -> Command { + ) -> Task { match message { InstallFrameMessage::StartInstallation(instance_type) => { - return Command::perform( + return Task::perform( instance::perform_install( settings.install_dir.join(&self.name), self.name.clone(), @@ -87,7 +87,7 @@ impl InstallFrame { self.source.identifier = identifier; } } - Command::none() + Task::none() } pub fn view(&self) -> Element { diff --git a/src/instance.rs b/src/instance.rs index 60d88b0..582c5b8 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -146,20 +146,20 @@ impl Instance { } } - pub fn update(&mut self, message: InstanceMessage) -> iced::Command { + pub fn update(&mut self, message: InstanceMessage) -> iced::Task { match message { InstanceMessage::Play(do_debug) => { let name1 = self.name.clone(); // (Jett voice) let name2 = self.name.clone(); // "Yikes!" - iced::Command::batch(vec![ - iced::Command::perform(dummy(), move |()| { + iced::Task::batch(vec![ + iced::Task::perform(dummy(), move |()| { Message::InstanceMessage( name1, InstanceMessage::StateChanged(InstanceState::Playing), ) }), - iced::Command::perform( + iced::Task::perform( perform_play( self.path.clone(), self.executable.clone(), @@ -177,8 +177,8 @@ impl Instance { } InstanceMessage::Update => { let name = self.name.clone(); - iced::Command::batch(vec![ - iced::Command::perform(dummy(), move |()| { + iced::Task::batch(vec![ + iced::Task::perform(dummy(), move |()| { Message::InstanceMessage( name, InstanceMessage::StateChanged(InstanceState::Working( @@ -186,21 +186,21 @@ impl Instance { )), ) }), - iced::Command::perform(perform_update(self.clone()), Message::Dummy), + iced::Task::perform(perform_update(self.clone()), Message::Dummy), ]) } InstanceMessage::Folder => { - iced::Command::perform(open_folder(self.path.clone()), Message::Dummy) + iced::Task::perform(open_folder(self.path.clone()), Message::Dummy) } InstanceMessage::Delete => { let name = self.name.clone(); - iced::Command::perform(delete(self.path.clone()), move |_| { + iced::Task::perform(delete(self.path.clone()), move |_| { Message::RemoveInstance(Some(name)) }) } InstanceMessage::StateChanged(state) => { self.state = state; - iced::Command::none() + iced::Task::none() } } } diff --git a/src/main.rs b/src/main.rs index 71bff70..ebe1af2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,6 +45,8 @@ mod settings; mod style; mod update; +// TODO: investigate use cases for Task::then + // Yes, this is terrible abuse of globals. // I spent hours and hours trying to find a better solution: // - async_channel @@ -142,7 +144,7 @@ impl ESLauncher { active_tab: Tab::Instances, settings, }, - Command::batch(vec![ + Task::batch(vec![ plugins_frame_cmd, font::load(include_bytes!("../assets/IcoMoon-Free.ttf").as_slice()) .map(Message::FontLoaded), @@ -152,7 +154,7 @@ impl ESLauncher { ) } - fn update(&mut self, message: Message) -> Command { + fn update(&mut self, message: Message) -> Task { match message { Message::InstallFrameMessage(msg) => { return self.install_frame.update(msg, &mut self.settings) @@ -212,7 +214,7 @@ impl ESLauncher { Message::Dummy(()) => (), Message::FontLoaded(_) => (), } - Command::none() + Task::none() } /// Subscriptions are created from Recipes. diff --git a/src/plugins_frame.rs b/src/plugins_frame.rs index 5ab8a3f..405b28e 100644 --- a/src/plugins_frame.rs +++ b/src/plugins_frame.rs @@ -4,7 +4,7 @@ use anyhow::Context; use anyhow::Result; use espim::Plugin as EspimPlugin; use iced::widget::{button, image, Column, Container, Image, Row, Scrollable, Space, Text}; -use iced::{alignment, theme, Alignment, Color, Command, Element, Length}; +use iced::{alignment, theme, Alignment, Color, Element, Length, Task}; use lazy_static::lazy_static; use regex::Regex; use std::fs::File; @@ -22,10 +22,10 @@ pub enum PluginsFrameState { } impl PluginsFrameState { - pub fn new() -> (Self, Command) { + pub fn new() -> (Self, Task) { ( Self::Loading, - Command::perform(load_plugins(), Message::PluginFrameLoaded), + Task::perform(load_plugins(), Message::PluginFrameLoaded), ) } @@ -110,14 +110,14 @@ pub struct Plugin { } impl Plugin { - pub fn update(&mut self, message: PluginMessage) -> Command { + pub fn update(&mut self, message: PluginMessage) -> Task { match message { PluginMessage::Install => { if let PluginState::Idle { espim_plugin } = &mut self.state { let name = self.name.clone(); let plugin = espim_plugin.clone(); self.state = PluginState::Working; - return Command::perform(perform_install(*plugin), move |p| { + return Task::perform(perform_install(*plugin), move |p| { Message::PluginMessage(name, PluginMessage::WorkFinished(Box::new(p))) }); } @@ -151,7 +151,7 @@ impl Plugin { }; } } - Command::none() + Task::none() } fn view(&self) -> Element { diff --git a/src/settings.rs b/src/settings.rs index 7fdb907..62d4516 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -8,7 +8,7 @@ use iced::{ widget::{button, Column, Container, Row}, Length, }; -use iced::{Alignment, Command, Padding, Renderer}; +use iced::{Alignment, Padding, Renderer, Task}; use serde::{Deserialize, Serialize}; use std::{fs::File, path::PathBuf}; @@ -163,10 +163,10 @@ impl Settings { .padding(100.0) } - pub fn update(&mut self, message: SettingsMessage) -> Command { + pub fn update(&mut self, message: SettingsMessage) -> Task { match message { SettingsMessage::RequestInstallPath => { - return Command::perform(rfd::AsyncFileDialog::new().pick_folder(), |f| match f { + return Task::perform(rfd::AsyncFileDialog::new().pick_folder(), |f| match f { Some(handle) => Message::SettingsMessage(SettingsMessage::SetInstallPath( handle.path().to_path_buf(), )), @@ -180,6 +180,6 @@ impl Settings { }; self.save(); - Command::none() + Task::none() } } From 08081cc5e7666b9a12beba0fe148fe05892aa5da Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 11:40:43 +0200 Subject: [PATCH 17/42] Start migrating stylesheets to new API (61 compile errors) --- src/instance.rs | 2 +- src/settings.rs | 1 - src/style.rs | 177 +++++++++++++++++++++++++----------------------- 3 files changed, 95 insertions(+), 85 deletions(-) diff --git a/src/instance.rs b/src/instance.rs index 582c5b8..b50d81c 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -208,7 +208,7 @@ impl Instance { pub fn view(&self) -> Element { // Buttons let mut debug_button = Button::new(style::debug_icon()).style(icon_button()); - let mut play_button = Button::new(style::play_icon()).style(icon_button()); + let mut play_button = Button::new(style::play_icon()); let mut update_button = Button::new(style::update_icon()).style(icon_button()); let folder_button = Button::new(style::folder_icon()) .style(icon_button()) diff --git a/src/settings.rs b/src/settings.rs index 62d4516..d1f7717 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -2,7 +2,6 @@ use crate::music::MusicState; use crate::{get_data_dir, style, Message}; use anyhow::{Context, Result}; use iced::advanced::graphics::core::Element; -use iced::widget::text_input::StyleSheet; use iced::widget::{container, row, text, Checkbox, Text}; use iced::{ widget::{button, Column, Container, Row}, diff --git a/src/style.rs b/src/style.rs index 25ab58d..1f34809 100644 --- a/src/style.rs +++ b/src/style.rs @@ -1,14 +1,14 @@ use iced::border::Radius; use iced::widget::{button, container, Text}; -use iced::{alignment, Background, Border, Color, Font, Length, Theme, Vector}; -use std::rc::Rc; +use iced::{alignment, Background, Border, Color, Font, Length, Shadow, Vector}; +use iced_aw::tab_bar; fn icon(unicode: char) -> Text<'static> { Text::new(unicode.to_string()) .font(Font::with_name("IcoMoon-Free")) .width(Length::Fixed(20.)) - .horizontal_alignment(alignment::Horizontal::Center) - .vertical_alignment(alignment::Vertical::Center) + .align_x(alignment::Horizontal::Center) + .align_y(alignment::Vertical::Center) .size(20) } @@ -43,19 +43,24 @@ pub fn reset_icon() -> Text<'static> { icon('\u{E965}') } -pub fn icon_button() -> iced::theme::Button { - iced::theme::Button::Custom(Box::new(ButtonStyle::Icon)) +// TODO: This is whack. Status is hardcoded, and generally this doesn't feel like intended +pub fn icon_button() -> button::Style { + use button::Catalog; + ButtonStyle::Icon.style(&ButtonStyle::Icon, button::Status::Active) } -pub fn text_button() -> iced::theme::Button { - iced::theme::Button::Custom(Box::new(ButtonStyle::Text)) +pub fn text_button() -> button::Style { + use button::Catalog; + ButtonStyle::Text.style(&ButtonStyle::Text, button::Status::Active) } -pub fn tab_bar() -> iced_aw::style::tab_bar::TabBarStyles { - iced_aw::style::tab_bar::TabBarStyles::Custom(Rc::new(CustomTabBar)) +pub fn tab_bar() -> tab_bar::Style { + use tab_bar::Catalog; + CustomTabBar::default().style(&CustomTabBar::default(), tab_bar::Status::Active) } -pub fn log_container(log: &str) -> iced::theme::Container { - iced::theme::Container::Custom(Box::new(LogContainer::from(log))) +pub fn log_container(log: &str) -> container::Style { + use container::Catalog; + LogContainer::from(log).style(&LogContainer::default()) } /// graphic design is my passion @@ -64,56 +69,64 @@ pub enum ButtonStyle { Text, } -impl button::StyleSheet for ButtonStyle { - type Style = Theme; +impl button::Catalog for ButtonStyle { + type Class<'a> = ButtonStyle; - fn active(&self, _: &Self::Style) -> button::Appearance { - match self { - Self::Icon => button::Appearance { - text_color: Color::from_rgb(0.5, 0.5, 0.5), - ..Default::default() - }, - Self::Text => button::Appearance { - background: Some(Background::Color(Color::WHITE)), - border: Border { - color: Color::from_rgb(0.8, 0.8, 0.8), - width: 0.3, - radius: Radius::from(2.0), - }, - shadow_offset: Vector::new(0.3, 0.3), - ..Default::default() - }, - } + fn default<'a>() -> Self::Class<'a> { + ButtonStyle::Text } - fn hovered(&self, style: &Self::Style) -> button::Appearance { - let active = self.active(style); - - match self { - Self::Icon => button::Appearance { - text_color: Color::from_rgb(0.3, 0.3, 0.3), - shadow_offset: active.shadow_offset + Vector::new(0.0, 1.0), - ..active - }, - Self::Text => button::Appearance { - border: Border { - color: Color::from_rgb(0.4, 0.4, 0.4), + fn style(&self, class: &Self::Class<'_>, status: button::Status) -> button::Style { + let active = self.style(class, button::Status::Active); + match status { + button::Status::Active => match self { + Self::Icon => button::Style { + text_color: Color::from_rgb(0.5, 0.5, 0.5), + ..Default::default() + }, + Self::Text => button::Style { + background: Some(Background::Color(Color::WHITE)), + border: Border { + color: Color::from_rgb(0.8, 0.8, 0.8), + width: 0.3, + radius: Radius::from(2.0), + }, + shadow: Shadow { + offset: Vector::new(0.3, 0.3), + ..Default::default() + }, ..Default::default() }, - shadow_offset: active.shadow_offset + Vector::new(0.1, 0.3), - ..active }, - } - } - - fn disabled(&self, style: &Self::Style) -> button::Appearance { - let active = self.active(style); - match self { - Self::Text => button::Appearance { - text_color: Color::from_rgb(0.5, 0.5, 0.5), - ..active + button::Status::Hovered => match self { + Self::Icon => button::Style { + text_color: Color::from_rgb(0.3, 0.3, 0.3), + shadow: Shadow { + offset: active.shadow.offset + Vector::new(0.0, 1.0), + ..Default::default() + }, + ..active + }, + Self::Text => button::Style { + border: Border { + color: Color::from_rgb(0.4, 0.4, 0.4), + ..Default::default() + }, + shadow: Shadow { + offset: active.shadow.offset + Vector::new(0.1, 0.3), + ..Default::default() + }, + ..active + }, + }, + button::Status::Pressed => Default::default(), + button::Status::Disabled => match self { + Self::Text => button::Style { + text_color: Color::from_rgb(0.5, 0.5, 0.5), + ..active + }, + _ => active, }, - _ => active, } } } @@ -136,11 +149,15 @@ impl From<&str> for LogContainer { } } -impl container::StyleSheet for LogContainer { - type Style = Theme; +impl container::Catalog for LogContainer { + type Class<'a> = LogContainer; - fn appearance(&self, _: &Self::Style) -> container::Appearance { - container::Appearance { + fn default<'a>() -> Self::Class<'a> { + LogContainer::default() + } + + fn style(&self, _: &Self::Class<'_>) -> container::Style { + container::Style { text_color: Some(Color::from_rgb(0.6, 0.6, 0.6)), background: self.background.map(Background::Color), ..Default::default() @@ -150,32 +167,26 @@ impl container::StyleSheet for LogContainer { pub struct CustomTabBar; -impl iced_aw::style::tab_bar::StyleSheet for CustomTabBar { - type Style = Theme; - - fn active(&self, _: &Self::Style, is_active: bool) -> iced_aw::style::tab_bar::Appearance { - let tab_label_background = Background::Color(if is_active { - Color::WHITE - } else { - Color::from_rgb(0.87, 0.87, 0.87) - }); - iced_aw::style::tab_bar::Appearance { - tab_label_background, - tab_label_border_width: 0., - ..Default::default() - } +impl tab_bar::Catalog for CustomTabBar { + type Class<'a> = CustomTabBar; + + fn default<'a>() -> Self::Class<'a> { + CustomTabBar::default() } - fn hovered(&self, _: &Self::Style, is_active: bool) -> iced_aw::style::tab_bar::Appearance { - let tab_label_background = Background::Color(if is_active { - Color::WHITE - } else { - Color::from_rgb(0.94, 0.94, 0.94) - }); - iced_aw::style::tab_bar::Appearance { - tab_label_background, - tab_label_border_width: 0., - ..Default::default() + fn style(&self, class: &Self::Class<'_>, status: tab_bar::Status) -> tab_bar::Style { + match status { + tab_bar::Status::Active => tab_bar::Style { + tab_label_background: Background::Color(Color::from_rgb(0.87, 0.87, 0.87)), + tab_label_border_width: 0., + ..Default::default() + }, + tab_bar::Status::Hovered => tab_bar::Style { + tab_label_background: Background::Color(Color::from_rgb(0.94, 0.94, 0.94)), + tab_label_border_width: 0., + ..Default::default() + }, + _ => Default::default(), } } } From 490e2323c302c060a003a0afa878d759a776ab33 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 11:49:38 +0200 Subject: [PATCH 18/42] Fully patch up generic stylesheets (51 compile errors) --- src/install_frame.rs | 2 +- src/instance.rs | 6 +++--- src/main.rs | 4 ++-- src/plugins_frame.rs | 4 ++-- src/settings.rs | 2 +- src/style.rs | 20 ++++++++++---------- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/install_frame.rs b/src/install_frame.rs index f56934e..fad102c 100644 --- a/src/install_frame.rs +++ b/src/install_frame.rs @@ -110,7 +110,7 @@ impl InstallFrame { ); } - let mut install_button = Button::new(Text::new("Install")).style(text_button()); + let mut install_button = Button::new(Text::new("Install")).style(text_button); if !self.name.trim().is_empty() { install_button = install_button.on_press(InstallFrameMessage::StartInstallation(if cfg!(windows) { diff --git a/src/instance.rs b/src/instance.rs index b50d81c..b60b175 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -207,11 +207,11 @@ impl Instance { pub fn view(&self) -> Element { // Buttons - let mut debug_button = Button::new(style::debug_icon()).style(icon_button()); + let mut debug_button = Button::new(style::debug_icon()).style(icon_button); let mut play_button = Button::new(style::play_icon()); - let mut update_button = Button::new(style::update_icon()).style(icon_button()); + let mut update_button = Button::new(style::update_icon()).style(icon_button); let folder_button = Button::new(style::folder_icon()) - .style(icon_button()) + .style(icon_button) .on_press(InstanceMessage::Folder); let mut delete_button = Button::new(style::delete_icon()).style(theme::Button::Destructive); diff --git a/src/main.rs b/src/main.rs index ebe1af2..0194109 100644 --- a/src/main.rs +++ b/src/main.rs @@ -270,7 +270,7 @@ impl ESLauncher { ]), ) .set_active_tab(&self.active_tab) - .tab_bar_style(tab_bar()); + .tab_bar_style(tab_bar); let logbox = self.log_buffer.iter().fold( Column::new() @@ -318,7 +318,7 @@ impl ESLauncher { MusicState::Playing => style::pause_icon(), MusicState::Paused => style::play_icon(), }) - .style(icon_button()) + .style(icon_button) .on_press(Message::MusicMessage( match self.settings.music_state { MusicState::Playing => MusicCommand::Pause, diff --git a/src/plugins_frame.rs b/src/plugins_frame.rs index 405b28e..e56dc29 100644 --- a/src/plugins_frame.rs +++ b/src/plugins_frame.rs @@ -207,7 +207,7 @@ impl Plugin { ); let mut install_button = - button::Button::new(style::update_icon()).style(icon_button()); // TODO: Use other icon here? + button::Button::new(style::update_icon()).style(icon_button); // TODO: Use other icon here? if espim_plugin.is_available() { install_button = install_button.on_press(PluginMessage::Install); } @@ -218,7 +218,7 @@ impl Plugin { remove_button = remove_button.on_press(PluginMessage::Remove); } - let mut href_button = button::Button::new(style::href_icon()).style(icon_button()); // TODO: Use other icon here? + let mut href_button = button::Button::new(style::href_icon()).style(icon_button); // TODO: Use other icon here? if espim_plugin.is_available() { href_button = href_button.on_press(PluginMessage::OpenHREF); } diff --git a/src/settings.rs b/src/settings.rs index d1f7717..7ea5e77 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -114,7 +114,7 @@ impl Settings { .on_press(Message::SettingsMessage( SettingsMessage::RequestInstallPath, )) - // .style(icon_button()) + // .style(icon_button) .padding(Padding::from([2, 0])); let install_dir_reset_btn = if self.install_dir.eq(&default_install_dir()) { None diff --git a/src/style.rs b/src/style.rs index 1f34809..b9437c1 100644 --- a/src/style.rs +++ b/src/style.rs @@ -1,6 +1,6 @@ use iced::border::Radius; use iced::widget::{button, container, Text}; -use iced::{alignment, Background, Border, Color, Font, Length, Shadow, Vector}; +use iced::{alignment, Background, Border, Color, Font, Length, Shadow, Theme, Vector}; use iced_aw::tab_bar; fn icon(unicode: char) -> Text<'static> { @@ -43,24 +43,24 @@ pub fn reset_icon() -> Text<'static> { icon('\u{E965}') } -// TODO: This is whack. Status is hardcoded, and generally this doesn't feel like intended -pub fn icon_button() -> button::Style { +// TODO: This is whack. doesn't feel like intended => rethink +pub fn icon_button(_theme: &Theme, status: button::Status) -> button::Style { use button::Catalog; - ButtonStyle::Icon.style(&ButtonStyle::Icon, button::Status::Active) + ButtonStyle::Icon.style(&ButtonStyle::Icon, status) } -pub fn text_button() -> button::Style { +pub fn text_button(_theme: &Theme, status: button::Status) -> button::Style { use button::Catalog; - ButtonStyle::Text.style(&ButtonStyle::Text, button::Status::Active) + ButtonStyle::Text.style(&ButtonStyle::Text, status) } -pub fn tab_bar() -> tab_bar::Style { +pub fn tab_bar(_theme: &Theme, status: tab_bar::Status) -> tab_bar::Style { use tab_bar::Catalog; - CustomTabBar::default().style(&CustomTabBar::default(), tab_bar::Status::Active) + CustomTabBar::default().style(&CustomTabBar::default(), status) } -pub fn log_container(log: &str) -> container::Style { +pub fn log_container(log: &str) -> container::StyleFn { use container::Catalog; - LogContainer::from(log).style(&LogContainer::default()) + Box::new(move |_| LogContainer::from(log).style(&LogContainer::default())) } /// graphic design is my passion From d23b3650d58a11740efe9261858c0075905ec53f Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 11:54:57 +0200 Subject: [PATCH 19/42] Fix Program and subscription initialization (47 compile errors) --- src/main.rs | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/main.rs b/src/main.rs index 0194109..f3a66e3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,22 +14,19 @@ use std::sync::mpsc::Sender; use std::thread; use std::time::Duration; -use iced::advanced::subscription::EventStream; -use iced::advanced::Hasher; -use iced::widget::{Button, Column, Container, Row, Scrollable, Space, Text}; -use iced::{ - alignment, font, Alignment, Application, Element, Font, Length, Subscription, Task, Theme, -}; -use iced_aw::{TabLabel, Tabs}; -use std::collections::VecDeque; -use std::sync::Mutex; - use crate::install_frame::InstallFrameMessage; use crate::instance::{Instance, InstanceMessage, InstanceState, Progress}; use crate::music::{MusicCommand, MusicState}; use crate::plugins_frame::PluginMessage; use crate::settings::{Settings, SettingsMessage}; use crate::style::{icon_button, log_container, tab_bar}; +use iced::advanced::subscription; +use iced::advanced::subscription::{EventStream, Hasher}; +use iced::widget::{Button, Column, Container, Row, Scrollable, Space, Text}; +use iced::{alignment, font, Alignment, Element, Font, Length, Subscription, Task, Theme}; +use iced_aw::{TabLabel, Tabs}; +use std::collections::VecDeque; +use std::sync::Mutex; mod archive; mod github; @@ -68,14 +65,10 @@ mod update; static MESSAGE_QUEUE: Mutex> = Mutex::new(VecDeque::new()); pub fn main() -> iced::Result { - iced::application( - format!("ESLauncher2 v{}", version!()), - ESLauncher::update, - ESLauncher::view, - ) - .subscription(ESLauncher::subscription) - .theme(ESLauncher::theme) - .run_with(|| ESLauncher::new()) + iced::application(ESLauncher::title, ESLauncher::update, ESLauncher::view) + .subscription(ESLauncher::subscription) + .theme(ESLauncher::theme) + .run_with(|| ESLauncher::new()) } #[derive(Debug)] @@ -228,7 +221,7 @@ impl ESLauncher { /// the first the Subscription never stops returning values (unless something catastrophic happens), /// so the cloned Recipe just gets dropped without being turned into a Subscription. fn subscription(&self) -> Subscription { - Subscription::from_recipe(self.message_receiver.clone()) + subscription::from_recipe(self.message_receiver.clone()) } fn view(&self) -> Element<'_, Message> { @@ -345,6 +338,10 @@ impl ESLauncher { .into() } + fn title(&self) -> String { + format!("ESLauncher2 v{}", version!()) + } + fn theme(&self) -> Theme { Theme::custom("LightModified".into(), { let mut palette = iced::theme::Palette::LIGHT; @@ -372,7 +369,7 @@ fn get_data_dir() -> Option { #[derive(Debug, Clone)] pub struct MessageReceiver {} -impl iced::advanced::subscription::Recipe for MessageReceiver { +impl subscription::Recipe for MessageReceiver { type Output = Message; fn hash(&self, state: &mut Hasher) { From d1b4fae705e20f3f38df6c6e9f37a7bcc00d470d Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 11:57:42 +0200 Subject: [PATCH 20/42] Switch to new x/y alignment methods (25 compile errors) --- src/install_frame.rs | 4 ++-- src/instance.rs | 8 ++++---- src/instances_frame.rs | 8 ++++---- src/main.rs | 10 +++++----- src/plugins_frame.rs | 12 ++++++------ 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/install_frame.rs b/src/install_frame.rs index fad102c..c0a8931 100644 --- a/src/install_frame.rs +++ b/src/install_frame.rs @@ -127,7 +127,7 @@ impl InstallFrame { .padding(20) .push( Text::new("Install") - .horizontal_alignment(alignment::Horizontal::Center) + .align_x(alignment::Horizontal::Center) .width(Length::Fill) .size(26), ) @@ -139,7 +139,7 @@ impl InstallFrame { .push(controls) .push(install_button) .spacing(20) - .align_items(Alignment::End), + .align_x(Alignment::End), )) .width(Length::FillPortion(2)) .into() diff --git a/src/instance.rs b/src/instance.rs index b60b175..8151c57 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -226,7 +226,7 @@ impl Instance { Row::new() .spacing(10) .padding(10) - .align_items(Alignment::Start) + .align_y(Alignment::Start) .width(Length::Fill) .push( Column::new() @@ -243,10 +243,10 @@ impl Instance { .push(Space::new(Length::Fill, Length::Shrink)) .push({ if let InstanceState::Working(progress) = &self.state { - let mut status_field = Column::new().align_items(Alignment::Center).push( + let mut status_field = Column::new().align_x(Alignment::Center).push( Text::new(&progress.status) .size(16) - .horizontal_alignment(alignment::Horizontal::Center), + .align_x(alignment::Horizontal::Center), ); if let (Some(done), Some(total)) = (progress.done, progress.total) { status_field = status_field.push( @@ -264,7 +264,7 @@ impl Instance { progress.units.as_ref().unwrap_or(&String::new()) )) .size(12) - .horizontal_alignment(alignment::Horizontal::Center), + .align_x(alignment::Horizontal::Center), ); } Row::new() diff --git a/src/instances_frame.rs b/src/instances_frame.rs index 436dec6..111e937 100644 --- a/src/instances_frame.rs +++ b/src/instances_frame.rs @@ -32,20 +32,20 @@ impl InstancesFrame { let instances_column = Column::new() .padding(20) .spacing(5) - .align_items(Alignment::Center); + .align_x(Alignment::Center); let instances_list: Element<_> = if self.instances.is_empty() { instances_column .push( Text::new("No Instances yet") .style(theme::Text::Color(Color::from_rgb8(150, 150, 150))) - .horizontal_alignment(alignment::Horizontal::Center) + .align_x(alignment::Horizontal::Center) .width(Length::Fill), ) .push( Text::new("ESLauncher allows you to install multiple instances of Endless Sky. Instances are installations which ESLauncher automatically updates. Install your first instance by typing a name like 'newest' in the box to the right and choosing which version of the game to install.") .size(16) .style(theme::Text::Color(Color::from_rgb8(150, 150, 150))) - .horizontal_alignment(alignment::Horizontal::Center) + .align_x(alignment::Horizontal::Center) .width(Length::Fill), ) .into() @@ -77,7 +77,7 @@ impl InstancesFrame { .push( Text::new("Instances") .size(26) - .horizontal_alignment(alignment::Horizontal::Center) + .align_x(alignment::Horizontal::Center) .width(Length::Fill), ) .push(instances_list) diff --git a/src/main.rs b/src/main.rs index f3a66e3..6c03082 100644 --- a/src/main.rs +++ b/src/main.rs @@ -269,14 +269,14 @@ impl ESLauncher { Column::new() .spacing(1) .padding(15) - .align_items(Alignment::Start), + .align_x(Alignment::Start), |column, log| { column.push( Container::new( Text::new(log) .size(11) .font(Font::with_name("DejaVu Sans Mono")) - .horizontal_alignment(alignment::Horizontal::Left), + .align_x(alignment::Horizontal::Left), ) .style(log_container(log)) .width(Length::Fill), @@ -285,7 +285,7 @@ impl ESLauncher { ); let content = Column::new() - .align_items(Alignment::Center) + .align_x(Alignment::Center) .push(tabs.height(Length::FillPortion(3))) .push( iced::widget::container(iced::widget::horizontal_rule(2)).padding(iced::Padding { @@ -303,7 +303,7 @@ impl ESLauncher { let music_controls = Row::new() .width(Length::Fill) - .align_items(Alignment::Center) + .align_y(Alignment::Center) .padding(8) .push(Space::new(Length::Fill, Length::Shrink)) .push( @@ -323,7 +323,7 @@ impl ESLauncher { Container::new( Column::new() - .align_items(Alignment::Start) + .align_x(Alignment::Start) .push( Container::new(content) .width(Length::Fill) diff --git a/src/plugins_frame.rs b/src/plugins_frame.rs index e56dc29..92fbcc9 100644 --- a/src/plugins_frame.rs +++ b/src/plugins_frame.rs @@ -36,11 +36,11 @@ impl PluginsFrameState { pub fn view(&self) -> Container { match self { Self::Loading => Container::new( - Column::new().align_items(Alignment::Center).push( + Column::new().align_x(Alignment::Center).push( Text::new("Loading...") .width(Length::Fill) .style(theme::Text::Color(Color::from_rgb(0.7, 0.7, 0.7))) - .horizontal_alignment(alignment::Horizontal::Center), + .align_x(alignment::Horizontal::Center), ), ), Self::Ready { plugins } => { @@ -50,7 +50,7 @@ impl PluginsFrameState { .padding(20) .spacing(5) .width(Length::Fill) - .align_items(Alignment::Center), + .align_x(Alignment::Center), |column, plugin| { column .push(iced::widget::horizontal_rule(2).style( @@ -159,7 +159,7 @@ impl Plugin { const ICON_DIMENSION: f32 = 64.; let mut icon_container = Row::new() .width(Length::Fixed(ICON_DIMENSION)) - .align_items(Alignment::Center); + .align_y(Alignment::Center); if let Some(icon) = &self.icon { icon_container = icon_container.push( Image::new(icon.clone()) @@ -168,8 +168,8 @@ impl Plugin { ); } let mut textbox = Column::new().width(Length::Fill); - let mut titlebox = Column::new() - .push(Text::new(&self.name).vertical_alignment(alignment::Vertical::Center)); + let mut titlebox = + Column::new().push(Text::new(&self.name).align_y(alignment::Vertical::Center)); let mut infos = Column::new(); let mut controls = Row::new().spacing(10); From fb154bba8ead5771ab5094b2b03aeadd7da2379f Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 12:02:15 +0200 Subject: [PATCH 21/42] Fix the simple style errors (18 compile errors) --- src/instances_frame.rs | 4 ++-- src/plugins_frame.rs | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/instances_frame.rs b/src/instances_frame.rs index 111e937..8eb3340 100644 --- a/src/instances_frame.rs +++ b/src/instances_frame.rs @@ -37,14 +37,14 @@ impl InstancesFrame { instances_column .push( Text::new("No Instances yet") - .style(theme::Text::Color(Color::from_rgb8(150, 150, 150))) + .color(Color::from_rgb8(150, 150, 150)) .align_x(alignment::Horizontal::Center) .width(Length::Fill), ) .push( Text::new("ESLauncher allows you to install multiple instances of Endless Sky. Instances are installations which ESLauncher automatically updates. Install your first instance by typing a name like 'newest' in the box to the right and choosing which version of the game to install.") .size(16) - .style(theme::Text::Color(Color::from_rgb8(150, 150, 150))) + .color(Color::from_rgb8(150, 150, 150)) .align_x(alignment::Horizontal::Center) .width(Length::Fill), ) diff --git a/src/plugins_frame.rs b/src/plugins_frame.rs index 92fbcc9..0c34ac7 100644 --- a/src/plugins_frame.rs +++ b/src/plugins_frame.rs @@ -39,7 +39,7 @@ impl PluginsFrameState { Column::new().align_x(Alignment::Center).push( Text::new("Loading...") .width(Length::Fill) - .style(theme::Text::Color(Color::from_rgb(0.7, 0.7, 0.7))) + .color(Color::from_rgb(0.7, 0.7, 0.7)) .align_x(alignment::Horizontal::Center), ), ), @@ -185,7 +185,7 @@ impl Plugin { String::from("Not installed") }) .size(14) - .style(theme::Text::Color(Color::from_rgb(0.6, 0.6, 0.6))), + .color(Color::from_rgb(0.6, 0.6, 0.6)), ) .push( Text::new(if espim_plugin.is_available() { @@ -194,7 +194,7 @@ impl Plugin { String::from("Unavailable") }) .size(14) - .style(theme::Text::Color(Color::from_rgb(0.6, 0.6, 0.6))), + .color(Color::from_rgb(0.6, 0.6, 0.6)), ); infos = infos.push(Space::with_height(5)).push( Text::new( @@ -203,7 +203,7 @@ impl Plugin { .unwrap_or("Not available".to_string()), ) .size(14) - .style(theme::Text::Color(Color::from_rgb(0.6, 0.6, 0.6))), + .color(Color::from_rgb(0.6, 0.6, 0.6)), ); let mut install_button = @@ -212,8 +212,8 @@ impl Plugin { install_button = install_button.on_press(PluginMessage::Install); } - let mut remove_button = - button::Button::new(style::delete_icon()).style(theme::Button::Destructive); + let mut remove_button = button::Button::new(style::delete_icon()); + // TODO .style(theme::Button::Destructive); if espim_plugin.is_installed() { remove_button = remove_button.on_press(PluginMessage::Remove); } @@ -232,7 +232,7 @@ impl Plugin { infos = infos.push( Text::new("Working...") .size(14) - .style(theme::Text::Color(Color::from_rgb(0.6, 0.6, 0.6))), + .color(Color::from_rgb(0.6, 0.6, 0.6)), ); } }; From 7caf141f94688403295c80c5eb3a32d3a9faaacf Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 12:03:19 +0200 Subject: [PATCH 22/42] use new Container::center API (15 compile errors) --- src/main.rs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6c03082..7114fda 100644 --- a/src/main.rs +++ b/src/main.rs @@ -324,13 +324,7 @@ impl ESLauncher { Container::new( Column::new() .align_x(Alignment::Start) - .push( - Container::new(content) - .width(Length::Fill) - .height(Length::Fill) - .center_x() - .center_y(), - ) + .push(Container::new(content).center(Length::Fill)) .push(music_controls.height(Length::Shrink)), ) .width(Length::Fill) From e9685812a429f61b277785c8b7429a6e49fdf2f2 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 12:20:01 +0200 Subject: [PATCH 23/42] Patch up remaining style errors (6 compile errors) --- src/instance.rs | 3 ++- src/instances_frame.rs | 17 ++++++----------- src/plugins_frame.rs | 16 ++++++---------- src/settings.rs | 19 ++----------------- 4 files changed, 16 insertions(+), 39 deletions(-) diff --git a/src/instance.rs b/src/instance.rs index 8151c57..b763520 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -213,7 +213,8 @@ impl Instance { let folder_button = Button::new(style::folder_icon()) .style(icon_button) .on_press(InstanceMessage::Folder); - let mut delete_button = Button::new(style::delete_icon()).style(theme::Button::Destructive); + let mut delete_button = Button::new(style::delete_icon()); + // TODO: .style(theme::Button::Destructive); if self.state.is_ready() { debug_button = debug_button.on_press(InstanceMessage::Play(true)); diff --git a/src/instances_frame.rs b/src/instances_frame.rs index 8eb3340..010b9b2 100644 --- a/src/instances_frame.rs +++ b/src/instances_frame.rs @@ -1,7 +1,7 @@ use crate::instance::{load_instances, Instance}; use crate::settings::Settings; use crate::Message; -use iced::widget::{Column, Container, Scrollable, Text}; +use iced::widget::{container, rule, Column, Container, Scrollable, Text}; use iced::{alignment, theme, Alignment, Color, Element, Length}; use std::collections::BTreeMap; @@ -55,16 +55,11 @@ impl InstancesFrame { .fold(instances_column, |column, instance| { column .push( - iced::widget::horizontal_rule(2).style(iced::theme::Rule::from( - |theme: &iced::Theme| { - let mut appearance = iced::widget::rule::StyleSheet::appearance( - theme, - &Default::default(), - ); - appearance.color.a *= 0.75; - appearance - }, - )), + iced::widget::horizontal_rule(2).style(|theme: &iced::Theme| { + let mut style = rule::default(theme); + style.color.a *= 0.75; + style + }), ) .push(instance.view().map(move |message| { Message::InstanceMessage(instance.name.clone(), message) diff --git a/src/plugins_frame.rs b/src/plugins_frame.rs index 0c34ac7..868dbb9 100644 --- a/src/plugins_frame.rs +++ b/src/plugins_frame.rs @@ -3,7 +3,7 @@ use crate::{get_data_dir, style, Message}; use anyhow::Context; use anyhow::Result; use espim::Plugin as EspimPlugin; -use iced::widget::{button, image, Column, Container, Image, Row, Scrollable, Space, Text}; +use iced::widget::{button, image, rule, Column, Container, Image, Row, Scrollable, Space, Text}; use iced::{alignment, theme, Alignment, Color, Element, Length, Task}; use lazy_static::lazy_static; use regex::Regex; @@ -54,15 +54,11 @@ impl PluginsFrameState { |column, plugin| { column .push(iced::widget::horizontal_rule(2).style( - iced::theme::Rule::from(|theme: &iced::Theme| { - let mut appearance = - iced::widget::rule::StyleSheet::appearance( - theme, - &Default::default(), - ); - appearance.color.a *= 0.75; - appearance - }), + |theme: &iced::Theme| { + let mut style = rule::default(theme); + style.color.a *= 0.75; + style + }, )) .push(plugin.view().map(move |msg| { Message::PluginMessage(plugin.name.clone(), msg) diff --git a/src/settings.rs b/src/settings.rs index 7ea5e77..812b884 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -80,9 +80,8 @@ impl Settings { fn settings_row<'a>( label: &'a str, content: impl Into>, - enabled: bool, ) -> impl Into> { - let container = container( + container( Column::new() .push( Row::new() @@ -95,19 +94,7 @@ impl Settings { .align_y(Alignment::Center), ) .spacing(10.0), - ); - if enabled { - container - } else { - container.style(iced::theme::Container::Custom(Box::new( - |theme: &iced::Theme| container::Appearance { - text_color: Some( - theme.disabled(&iced::theme::TextInput::Default).icon_color, - ), - ..Default::default() - }, - ))) - } + ) } let install_dir_picker = button(style::folder_icon().size(12.0)) @@ -149,13 +136,11 @@ impl Settings { bottom: 0.0, left: 0.0, }), - true, )) .push(settings_row( "Dark Theme", Checkbox::new("", self.dark_theme) .on_toggle(|v| Message::SettingsMessage(SettingsMessage::DarkTheme(v))), - true, )) .spacing(10.0), ) From 028714d4ddf83299972b9845dfa417316d375594 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 12:23:14 +0200 Subject: [PATCH 24/42] Switch to new image::Handle API (5 compile errors) --- src/plugins_frame.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins_frame.rs b/src/plugins_frame.rs index 868dbb9..efa392b 100644 --- a/src/plugins_frame.rs +++ b/src/plugins_frame.rs @@ -249,7 +249,7 @@ pub async fn load_plugins() -> Vec { for p in retrieved { let name = String::from(p.name()); let icon = load_icon_cached(&p) - .map(image::Handle::from_memory) + .map(image::Handle::from_bytes) .map_err(|e| debug!("failed to fetch icon: {}", e)) .ok(); plugins.push(Plugin { From 83dd1132306d2c06f88d8ebd359e0be012f9c26f Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 12:49:32 +0200 Subject: [PATCH 25/42] Fix the last few lifetime errors (0 compile errors) The new Task API takes an Fn, can't really capture Strings, since it could run several times... Will be fixed in the next iced release by using an FnOnce instead --- src/instance.rs | 58 ++++++++++++++++++-------------------------- src/plugins_frame.rs | 6 +++-- 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/src/instance.rs b/src/instance.rs index b763520..3b69338 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -13,6 +13,7 @@ use std::fs::File; use std::io::Write; use std::path::PathBuf; use std::process::Command; +use std::sync::Arc; use time::{format_description, OffsetDateTime}; #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)] @@ -150,15 +151,13 @@ impl Instance { match message { InstanceMessage::Play(do_debug) => { let name1 = self.name.clone(); // (Jett voice) - let name2 = self.name.clone(); // "Yikes!" + let name2 = Arc::new(self.name.clone()); // "Yikes!" iced::Task::batch(vec![ - iced::Task::perform(dummy(), move |()| { - Message::InstanceMessage( - name1, - InstanceMessage::StateChanged(InstanceState::Playing), - ) - }), + iced::Task::done(Message::InstanceMessage( + name1, + InstanceMessage::StateChanged(InstanceState::Playing), + )), iced::Task::perform( perform_play( self.path.clone(), @@ -168,7 +167,7 @@ impl Instance { ), move |()| { Message::InstanceMessage( - name2, + name2.to_string(), InstanceMessage::StateChanged(InstanceState::Ready), ) }, @@ -178,26 +177,19 @@ impl Instance { InstanceMessage::Update => { let name = self.name.clone(); iced::Task::batch(vec![ - iced::Task::perform(dummy(), move |()| { - Message::InstanceMessage( - name, - InstanceMessage::StateChanged(InstanceState::Working( - "Updating".into(), - )), - ) - }), + iced::Task::done(Message::InstanceMessage( + name, + InstanceMessage::StateChanged(InstanceState::Working("Updating".into())), + )), iced::Task::perform(perform_update(self.clone()), Message::Dummy), ]) } InstanceMessage::Folder => { iced::Task::perform(open_folder(self.path.clone()), Message::Dummy) } - InstanceMessage::Delete => { - let name = self.name.clone(); - iced::Task::perform(delete(self.path.clone()), move |_| { - Message::RemoveInstance(Some(name)) - }) - } + InstanceMessage::Delete => iced::Task::perform(self.clone().delete(), move |name| { + Message::RemoveInstance(name) + }), InstanceMessage::StateChanged(state) => { self.state = state; iced::Task::none() @@ -283,9 +275,17 @@ impl Instance { }) .into() } -} -async fn dummy() {} + pub async fn delete(self) -> Option { + if fs::remove_dir_all(&self.path).is_ok() { + info!("Removed {}", self.path.to_string_lossy()); + Some(self.name.clone()) + } else { + error!("Failed to remove {}", self.path.to_string_lossy()); + None + } + } +} pub async fn perform_install( path: PathBuf, @@ -320,16 +320,6 @@ pub async fn open_folder(path: PathBuf) { } } -pub async fn delete(path: PathBuf) -> Option { - if fs::remove_dir_all(&path).is_ok() { - info!("Removed {}", path.to_string_lossy()); - Some(path) - } else { - error!("Failed to remove {}", path.to_string_lossy()); - None - } -} - pub async fn perform_update(instance: Instance) { let name = instance.name.clone(); match update::update_instance(instance).await { diff --git a/src/plugins_frame.rs b/src/plugins_frame.rs index efa392b..f36b4d4 100644 --- a/src/plugins_frame.rs +++ b/src/plugins_frame.rs @@ -110,11 +110,13 @@ impl Plugin { match message { PluginMessage::Install => { if let PluginState::Idle { espim_plugin } = &mut self.state { - let name = self.name.clone(); let plugin = espim_plugin.clone(); self.state = PluginState::Working; return Task::perform(perform_install(*plugin), move |p| { - Message::PluginMessage(name, PluginMessage::WorkFinished(Box::new(p))) + Message::PluginMessage( + p.name().into(), + PluginMessage::WorkFinished(Box::new(p)), + ) }); } } From 0a505eac7a2affeb499c56128a7f155a3fc87bc3 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 13:02:19 +0200 Subject: [PATCH 26/42] Fix recursive style implementations --- src/style.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/style.rs b/src/style.rs index b9437c1..6855db7 100644 --- a/src/style.rs +++ b/src/style.rs @@ -77,7 +77,13 @@ impl button::Catalog for ButtonStyle { } fn style(&self, class: &Self::Class<'_>, status: button::Status) -> button::Style { - let active = self.style(class, button::Status::Active); + let active = if button::Status::Active == status { + // Avoid Stack overflow + button::Style::default() + } else { + self.style(class, button::Status::Active) + }; + match status { button::Status::Active => match self { Self::Icon => button::Style { @@ -153,7 +159,7 @@ impl container::Catalog for LogContainer { type Class<'a> = LogContainer; fn default<'a>() -> Self::Class<'a> { - LogContainer::default() + LogContainer { background: None } } fn style(&self, _: &Self::Class<'_>) -> container::Style { @@ -171,7 +177,7 @@ impl tab_bar::Catalog for CustomTabBar { type Class<'a> = CustomTabBar; fn default<'a>() -> Self::Class<'a> { - CustomTabBar::default() + CustomTabBar {} } fn style(&self, class: &Self::Class<'_>, status: tab_bar::Status) -> tab_bar::Style { From 749d4a0387a446721b289ae9f55d12d05428031e Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 29 Jun 2025 13:21:56 +0200 Subject: [PATCH 27/42] Fix missing renderer & tab bar style --- Cargo.toml | 3 ++- src/style.rs | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b97c535..0f400d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,7 +59,8 @@ features = [ "advanced", "image", "tokio", - # "wgpu", # TODO: tiny-skia backend panics when elements are resized to 0 width: https://github.com/iced-rs/iced/pull/2977 + "tiny-skia" + #"wgpu", # TODO: tiny-skia backend panics when elements are resized to 0 width: https://github.com/iced-rs/iced/pull/2977 ] [target.'cfg(windows)'.build-dependencies] diff --git a/src/style.rs b/src/style.rs index 6855db7..f68493b 100644 --- a/src/style.rs +++ b/src/style.rs @@ -183,12 +183,17 @@ impl tab_bar::Catalog for CustomTabBar { fn style(&self, class: &Self::Class<'_>, status: tab_bar::Status) -> tab_bar::Style { match status { tab_bar::Status::Active => tab_bar::Style { + tab_label_background: Background::Color(Color::from_rgb(1., 1., 1.)), + tab_label_border_width: 0., + ..Default::default() + }, + tab_bar::Status::Disabled => tab_bar::Style { tab_label_background: Background::Color(Color::from_rgb(0.87, 0.87, 0.87)), tab_label_border_width: 0., ..Default::default() }, tab_bar::Status::Hovered => tab_bar::Style { - tab_label_background: Background::Color(Color::from_rgb(0.94, 0.94, 0.94)), + tab_label_background: Background::Color(Color::from_rgb(0.97, 0.97, 0.97)), tab_label_border_width: 0., ..Default::default() }, From 552548616b1dc00e4d529d6770cd096778f8e1b1 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Mon, 14 Jul 2025 19:03:30 +0200 Subject: [PATCH 28/42] Implement dialogs for user interactions, start on the "move install dir" modal --- Cargo.lock | 11 +++++++ Cargo.toml | 5 ++-- src/main.rs | 43 ++++++++++++++++++++++++---- src/settings.rs | 76 +++++++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 123 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef55af6..fa5c619 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1205,6 +1205,7 @@ dependencies = [ "futures", "iced", "iced_aw", + "iced_dialog", "lazy_static", "log", "open", @@ -1914,6 +1915,16 @@ dependencies = [ "web-time", ] +[[package]] +name = "iced_dialog" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6971903dccd5d5602d128b3bcedf59bddb304014ad133893aba813ec813da80" +dependencies = [ + "iced_core", + "iced_widget", +] + [[package]] name = "iced_fonts" version = "0.1.1" diff --git a/Cargo.toml b/Cargo.toml index 0f400d3..198c38a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ futures = "0.3" iced_aw = { version = "0.12.2", default-features = false, features = [ "tabs", ] } +iced_dialog = "0.13.0" lazy_static = "1.5" log = { version = "0.4.22", features = ["std"] } open = "5" @@ -59,8 +60,8 @@ features = [ "advanced", "image", "tokio", - "tiny-skia" - #"wgpu", # TODO: tiny-skia backend panics when elements are resized to 0 width: https://github.com/iced-rs/iced/pull/2977 + #"tiny-skia" + "wgpu", # TODO: tiny-skia backend panics when elements are resized to 0 width: https://github.com/iced-rs/iced/pull/2977 ] [target.'cfg(windows)'.build-dependencies] diff --git a/src/main.rs b/src/main.rs index 7114fda..587d1ce 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,10 +22,12 @@ use crate::settings::{Settings, SettingsMessage}; use crate::style::{icon_button, log_container, tab_bar}; use iced::advanced::subscription; use iced::advanced::subscription::{EventStream, Hasher}; -use iced::widget::{Button, Column, Container, Row, Scrollable, Space, Text}; +use iced::widget::{text, Button, Column, Container, Row, Scrollable, Space, Text}; use iced::{alignment, font, Alignment, Element, Font, Length, Subscription, Task, Theme}; use iced_aw::{TabLabel, Tabs}; +use iced_dialog::dialog; use std::collections::VecDeque; +use std::fmt::Debug; use std::sync::Mutex; mod archive; @@ -81,6 +83,7 @@ struct ESLauncher { log_buffer: Vec, active_tab: Tab, settings: Settings, + dialog: Option, } #[derive(Debug, Clone, PartialEq, Eq)] @@ -104,6 +107,15 @@ pub enum Message { TabSelected(Tab), PluginFrameLoaded(Vec), Log(String), + OpenDialog(DialogSpec), + DialogClosed(Box), // boxed to avoid recursive size calculation +} + +#[derive(Debug, Clone)] +pub struct DialogSpec { + title: Option, + content: String, + buttons: Vec<(String, Message)>, } impl ESLauncher { @@ -136,6 +148,7 @@ impl ESLauncher { log_buffer: vec![], active_tab: Tab::Instances, settings, + dialog: None, }, Task::batch(vec![ plugins_frame_cmd, @@ -206,6 +219,11 @@ impl ESLauncher { Message::Log(line) => self.log_buffer.push(line), Message::Dummy(()) => (), Message::FontLoaded(_) => (), + Message::OpenDialog(spec) => self.dialog = Some(spec), + Message::DialogClosed(msg) => { + self.dialog = None; + return Task::done(*msg); + } } Task::none() } @@ -218,7 +236,7 @@ impl ESLauncher { /// the old Subscription will keep running, otherwise a new one will be created. /// /// Having to clone the receiver is unfortunate, but there aren't actually multiple receivers being used: - /// the first the Subscription never stops returning values (unless something catastrophic happens), + /// the first Subscription never stops returning values (unless something catastrophic happens), /// so the cloned Recipe just gets dropped without being turned into a Subscription. fn subscription(&self) -> Subscription { subscription::from_recipe(self.message_receiver.clone()) @@ -321,15 +339,30 @@ impl ESLauncher { ) .push(Text::new("Endless Sky Prototype by JimmyZenith").size(13)); - Container::new( + let base = Container::new( Column::new() .align_x(Alignment::Start) .push(Container::new(content).center(Length::Fill)) .push(music_controls.height(Length::Shrink)), ) .width(Length::Fill) - .height(Length::Fill) - .into() + .height(Length::Fill); + + if let Some(spec) = &self.dialog { + let mut dialog = dialog(true, base, &*spec.content).height(300); + if let Some(title) = &spec.title { + dialog = dialog.title(title); + } + for (content, msg) in &spec.buttons { + dialog = dialog.push_button(iced_dialog::button( + content, + Message::DialogClosed(Box::new(msg.clone())), + )); + } + dialog.into() + } else { + dialog(false, base, text("")).into() + } } fn title(&self) -> String { diff --git a/src/settings.rs b/src/settings.rs index 812b884..2ad6231 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -1,5 +1,5 @@ use crate::music::MusicState; -use crate::{get_data_dir, style, Message}; +use crate::{get_data_dir, style, DialogSpec, Message}; use anyhow::{Context, Result}; use iced::advanced::graphics::core::Element; use iced::widget::{container, row, text, Checkbox, Text}; @@ -9,6 +9,7 @@ use iced::{ }; use iced::{Alignment, Padding, Renderer, Task}; use serde::{Deserialize, Serialize}; +use std::time::Duration; use std::{fs::File, path::PathBuf}; #[derive(Clone, Debug, Serialize, Deserialize)] @@ -27,6 +28,7 @@ pub enum SettingsMessage { DarkTheme(bool), RequestInstallPath, SetInstallPath(PathBuf), + MoveInstallPath(PathBuf), } impl Default for Settings { @@ -108,7 +110,7 @@ impl Settings { } else { Some( button(style::reset_icon().size(12.0)) - .on_press(Message::SettingsMessage(SettingsMessage::SetInstallPath( + .on_press(Message::OpenDialog(move_dir_dialog_spec( default_install_dir(), ))) .padding(Padding::from([2, 0])), @@ -151,14 +153,25 @@ impl Settings { match message { SettingsMessage::RequestInstallPath => { return Task::perform(rfd::AsyncFileDialog::new().pick_folder(), |f| match f { - Some(handle) => Message::SettingsMessage(SettingsMessage::SetInstallPath( - handle.path().to_path_buf(), - )), + Some(handle) => { + Message::OpenDialog(move_dir_dialog_spec(handle.path().to_path_buf())) + } None => Message::Dummy(()), }) } SettingsMessage::SetInstallPath(p) => { self.install_dir = p; + // TODO: reload instances + } + SettingsMessage::MoveInstallPath(new) => { + let move_dir = move_install_dir(self.install_dir.clone(), new.clone()); + let message_when_done = move |_| { + Message::DialogClosed(Box::new(Message::SettingsMessage( + SettingsMessage::SetInstallPath(new.clone()), + ))) + }; + return Task::done(Message::OpenDialog(move_in_progress_dialog_spec())) + .chain(Task::perform(move_dir, message_when_done)); } SettingsMessage::DarkTheme(dark) => self.dark_theme = dark, }; @@ -167,3 +180,56 @@ impl Settings { Task::none() } } + +async fn move_install_dir(source: PathBuf, dest: PathBuf) { + info!("STUB: Moving install dir"); + tokio::time::sleep(Duration::from_secs(3)).await; +} + +fn move_dir_dialog_spec(new_dir: PathBuf) -> DialogSpec { + let mut warning = "".into(); + match std::fs::read_dir(&new_dir) { + Ok(r) => { + let count = r.count(); + if count > 0 { + warning = format!( + "\nWARNING: Found {count} existing items in the directory.\n\ + If you select Yes, these will be deleted!\n\ + If you select No, ESLauncher2 might run into problems later." + ); + } + } + Err(e) => { + warning = format!( + "\nWARNING: Failed to read the output directory ({e}), it might not be readable.\n\ + If you select Yes, the program will try to wipe the folder!\n\ + Regardless of what you select, errors may follow." + ) + } + }; + + let buttons = vec![ + ( + "Yes".into(), + Message::SettingsMessage(SettingsMessage::MoveInstallPath(new_dir.clone())), + ), + ( + "No".into(), + Message::SettingsMessage(SettingsMessage::SetInstallPath(new_dir)), + ), + ("Cancel".into(), Message::Dummy(())), + ]; + DialogSpec { + title: None, + content: format!("Should ESLauncher move your instances to the new folder?{warning}"), + buttons, + } +} + +fn move_in_progress_dialog_spec() -> DialogSpec { + DialogSpec { + title: None, + content: "Moving install dir, please be patient...".into(), + buttons: vec![], + } +} From 1d5c83cc05b5234e3fba7cc444e55c0a19c0e55d Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Tue, 15 Jul 2025 12:26:21 +0200 Subject: [PATCH 29/42] Implement migrating instances (it's broken due to the racey messaging system) --- Cargo.lock | 10 ++++ Cargo.toml | 5 +- src/instance.rs | 17 +++---- src/instances_frame.rs | 2 +- src/main.rs | 5 ++ src/settings.rs | 108 ++++++++++++++++++++++++++++++----------- 6 files changed, 106 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fa5c619..b291eaa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -850,6 +850,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cp_r" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "837ca07dfd27a2663ac7c4701bb35856b534c2a61dd47af06ccf65d3bec79ebc" +dependencies = [ + "filetime", +] + [[package]] name = "cpal" version = "0.15.3" @@ -1197,6 +1206,7 @@ version = "0.9.7" dependencies = [ "anyhow", "bitar", + "cp_r", "dark-light", "dmg", "espim", diff --git a/Cargo.toml b/Cargo.toml index 198c38a..6263a7a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ osx_minimum_system_version = "10.7" [dependencies] anyhow = "1.0" bitar = { version = "0.12", features = ["rustls-tls"] } +cp_r = "0.5" dark-light = "1.0" dmg = "0.1.2" espim = "0.2" @@ -60,8 +61,8 @@ features = [ "advanced", "image", "tokio", - #"tiny-skia" - "wgpu", # TODO: tiny-skia backend panics when elements are resized to 0 width: https://github.com/iced-rs/iced/pull/2977 + "tiny-skia" + # "wgpu", # TODO: tiny-skia backend panics when elements are resized to 0 width: https://github.com/iced-rs/iced/pull/2977 ] [target.'cfg(windows)'.build-dependencies] diff --git a/src/instance.rs b/src/instance.rs index 3b69338..56b2703 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -11,7 +11,7 @@ use std::collections::BTreeMap; use std::fs; use std::fs::File; use std::io::Write; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use std::process::Command; use std::sync::Arc; use time::{format_description, OffsetDateTime}; @@ -396,26 +396,23 @@ pub async fn play(path: PathBuf, executable: PathBuf, name: String, do_debug: bo struct InstancesContainer(Vec); pub fn perform_save_instances(instances: BTreeMap, settings: &Settings) { - if let Err(e) = save_instances(instances, settings) { + if let Err(e) = save_instances(instances.values().cloned().collect(), &settings.install_dir) { error!("Failed to save instances: {:#}", e); }; } -fn save_instances(instances: BTreeMap, settings: &Settings) -> Result<()> { - let instances_file = settings.install_dir.join("instances.json"); +pub fn save_instances(instances: Vec, install_dir: &Path) -> Result<()> { + let instances_file = install_dir.join("instances.json"); debug!("Saving to {}", instances_file.to_string_lossy()); let file = File::create(instances_file)?; - serde_json::to_writer_pretty( - file, - &InstancesContainer(instances.values().cloned().collect()), - )?; + serde_json::to_writer_pretty(file, &InstancesContainer(instances))?; Ok(()) } -pub fn load_instances(settings: &Settings) -> Result> { - let instances_file = settings.install_dir.join("instances.json"); +pub fn load_instances(install_dir: &Path) -> Result> { + let instances_file = install_dir.join("instances.json"); debug!("Loading from {}", instances_file.to_string_lossy()); if instances_file.exists() { diff --git a/src/instances_frame.rs b/src/instances_frame.rs index 010b9b2..5b2e07e 100644 --- a/src/instances_frame.rs +++ b/src/instances_frame.rs @@ -12,7 +12,7 @@ pub struct InstancesFrame { impl InstancesFrame { pub fn new(settings: &Settings) -> Self { - let instances = match load_instances(settings) { + let instances = match load_instances(&settings.install_dir) { Ok(vec) => { let mut map = BTreeMap::new(); for i in vec { diff --git a/src/main.rs b/src/main.rs index 587d1ce..7332357 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,6 +16,7 @@ use std::time::Duration; use crate::install_frame::InstallFrameMessage; use crate::instance::{Instance, InstanceMessage, InstanceState, Progress}; +use crate::instances_frame::InstancesFrame; use crate::music::{MusicCommand, MusicState}; use crate::plugins_frame::PluginMessage; use crate::settings::{Settings, SettingsMessage}; @@ -101,6 +102,7 @@ pub enum Message { SettingsMessage(SettingsMessage), AddInstance(Box), RemoveInstance(Option), + ReloadInstances(), Dummy(()), FontLoaded(Result<(), font::Error>), MusicMessage(MusicCommand), @@ -203,6 +205,9 @@ impl ESLauncher { ); } } + Message::ReloadInstances() => { + self.instances_frame = InstancesFrame::new(&self.settings); + } Message::MusicMessage(cmd) => { self.music_sender.send(cmd).ok(); self.settings.music_state = match cmd { diff --git a/src/settings.rs b/src/settings.rs index 2ad6231..374054d 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -1,6 +1,8 @@ +use crate::instance::{load_instances, save_instances}; use crate::music::MusicState; -use crate::{get_data_dir, style, DialogSpec, Message}; +use crate::{get_data_dir, send_message, style, DialogSpec, Message}; use anyhow::{Context, Result}; +use cp_r::CopyStats; use iced::advanced::graphics::core::Element; use iced::widget::{container, row, text, Checkbox, Text}; use iced::{ @@ -161,17 +163,17 @@ impl Settings { } SettingsMessage::SetInstallPath(p) => { self.install_dir = p; - // TODO: reload instances + return Task::done(Message::ReloadInstances()); } SettingsMessage::MoveInstallPath(new) => { - let move_dir = move_install_dir(self.install_dir.clone(), new.clone()); + let move_install_dir = move_install_dir(self.install_dir.clone(), new.clone()); let message_when_done = move |_| { Message::DialogClosed(Box::new(Message::SettingsMessage( SettingsMessage::SetInstallPath(new.clone()), ))) }; - return Task::done(Message::OpenDialog(move_in_progress_dialog_spec())) - .chain(Task::perform(move_dir, message_when_done)); + return Task::done(Message::OpenDialog(move_in_progress_dialog_spec(None))) + .chain(Task::perform(move_install_dir, message_when_done)); } SettingsMessage::DarkTheme(dark) => self.dark_theme = dark, }; @@ -182,30 +184,74 @@ impl Settings { } async fn move_install_dir(source: PathBuf, dest: PathBuf) { - info!("STUB: Moving install dir"); - tokio::time::sleep(Duration::from_secs(3)).await; + if let Err(e) = try_move_install_dir(source, dest).await { + error!("Error while moving install dir: {e:#?}") + } +} + +async fn try_move_install_dir(source: PathBuf, dest: PathBuf) -> Result<()> { + // Users can't choose empty directories, but the reset button can + if tokio::fs::try_exists(&dest).await? { + tokio::fs::remove_dir_all(&dest) + .await + .with_context(|| "Failed to remove destination directory")?; + } + + let source_clone = source.clone(); + let dest_clone = dest.clone(); + let stats = tokio::task::spawn_blocking(move || { + cp_r::CopyOptions::new() + .create_destination(true) + .after_entry_copied(|_, _, s| { + send_message(Message::OpenDialog(move_in_progress_dialog_spec(Some(s)))); + Ok(()) + }) + .copy_tree(source_clone, dest_clone) + }) + .await + .with_context(|| "Copy task failed")? + .with_context(|| "Failed to copy files")?; + + info!("Patching instance paths"); + let mut instances = load_instances(&dest)?; + for i in &mut instances { + let name = i.path.file_name().unwrap(); + i.executable = dest.join(i.executable.strip_prefix(&i.path)?); + i.path = dest.join(name); + } + save_instances(instances, &dest)?; + + info!("Removing old directory"); + tokio::fs::remove_dir_all(&source) + .await + .with_context(|| "Failed to remove former install dir")?; + + info!("Install dir moved successfully"); + send_message(Message::OpenDialog(DialogSpec { + title: None, + content: format!( + "Success!\n Moved {} files, {} folders", + stats.files, stats.dirs + ), + buttons: vec![], + })); + tokio::time::sleep(Duration::from_secs(2)).await; + + Ok(()) } fn move_dir_dialog_spec(new_dir: PathBuf) -> DialogSpec { - let mut warning = "".into(); - match std::fs::read_dir(&new_dir) { - Ok(r) => { - let count = r.count(); - if count > 0 { - warning = format!( - "\nWARNING: Found {count} existing items in the directory.\n\ - If you select Yes, these will be deleted!\n\ - If you select No, ESLauncher2 might run into problems later." - ); - } - } - Err(e) => { - warning = format!( - "\nWARNING: Failed to read the output directory ({e}), it might not be readable.\n\ - If you select Yes, the program will try to wipe the folder!\n\ - Regardless of what you select, errors may follow." - ) - } + let items = std::fs::read_dir(&new_dir) + .map(|r| r.count()) + .unwrap_or_default(); + let warning = if items > 0 { + format!( + "\nWARNING: Found {items} existing items in the directory.\n\ + If you select Yes, these will be deleted!\n\ + If you select No, ESLauncher2 might run into problems later." + ) + } else { + String::default() }; let buttons = vec![ @@ -226,10 +272,16 @@ fn move_dir_dialog_spec(new_dir: PathBuf) -> DialogSpec { } } -fn move_in_progress_dialog_spec() -> DialogSpec { +fn move_in_progress_dialog_spec(stats: Option<&CopyStats>) -> DialogSpec { + let items = if let Some(stats) = stats { + stats.dirs + stats.files + stats.symlinks + } else { + 0 + }; + let content = format!("Moving install dir, please be patient...\n{items} items"); DialogSpec { title: None, - content: "Moving install dir, please be patient...".into(), + content, buttons: vec![], } } From 2683c664efbdd6cca30529778d4effa525cc9565 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Tue, 15 Jul 2025 12:26:38 +0200 Subject: [PATCH 30/42] Exclude spammy cosmic_text::buffer debug logs --- src/logger.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/logger.rs b/src/logger.rs index 35e4e32..cd3826c 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -101,6 +101,7 @@ pub fn init() { .add_filter_ignore_str("iced_wgpu::renderer") // STOP .add_filter_ignore_str("wgpu_native::device") // SPAMMING .add_filter_ignore_str("wgpu_native::command") // AAAAAH + .add_filter_ignore_str("cosmic_text::buffer") .add_filter_ignore_str("gfx_backend_metal::device") // spammy thing on mac .add_filter_ignore_str("hyper::proto") .build(); From d7366e5d86a26c1ae6691ec5b9454b0068e214b0 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sat, 19 Jul 2025 14:22:38 +0200 Subject: [PATCH 31/42] Separate Settings and SettingsFrame, use Arc> to get it everywhere --- Cargo.lock | 1 + Cargo.toml | 1 + src/install_frame.rs | 7 +++--- src/instance.rs | 10 ++++---- src/instances_frame.rs | 7 +++--- src/main.rs | 54 +++++++++++++++++++----------------------- src/settings.rs | 42 +++++++++++++++++++------------- 7 files changed, 64 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b291eaa..69e728f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1219,6 +1219,7 @@ dependencies = [ "lazy_static", "log", "open", + "parking_lot 0.12.1", "parse_link_header", "platform-dirs", "progress-streams", diff --git a/Cargo.toml b/Cargo.toml index 6263a7a..37aac07 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,7 @@ iced_dialog = "0.13.0" lazy_static = "1.5" log = { version = "0.4.22", features = ["std"] } open = "5" +parking_lot = "0.12" parse_link_header = "0.4" platform-dirs = "0.3.0" progress-streams = "1.1.0" diff --git a/src/install_frame.rs b/src/install_frame.rs index c0a8931..5a8ce2d 100644 --- a/src/install_frame.rs +++ b/src/install_frame.rs @@ -1,7 +1,6 @@ use crate::instance::InstanceType; -use crate::settings::Settings; use crate::style::text_button; -use crate::{instance, Message}; +use crate::{instance, Message, SharedSettings}; use core::fmt; use iced::widget::{Button, Column, Container, Radio, Scrollable, Text, TextInput}; use iced::{alignment, Alignment, Element, Length, Task}; @@ -61,13 +60,13 @@ impl InstallFrame { pub fn update( &mut self, message: InstallFrameMessage, - settings: &mut Settings, + settings: SharedSettings, ) -> Task { match message { InstallFrameMessage::StartInstallation(instance_type) => { return Task::perform( instance::perform_install( - settings.install_dir.join(&self.name), + settings.read().install_dir.join(&self.name), self.name.clone(), instance_type, self.source.clone(), diff --git a/src/instance.rs b/src/instance.rs index 56b2703..d60e53b 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -1,8 +1,7 @@ use crate::install_frame::InstanceSource; use crate::music::MusicCommand; -use crate::settings::Settings; use crate::style::icon_button; -use crate::{install, send_message, style, update, Message}; +use crate::{install, send_message, style, update, Message, SharedSettings}; use anyhow::Result; use iced::widget::{Button, Column, ProgressBar, Row, Space, Text}; use iced::{alignment, theme, Alignment, Element, Length}; @@ -395,8 +394,11 @@ pub async fn play(path: PathBuf, executable: PathBuf, name: String, do_debug: bo #[derive(Serialize, Deserialize)] struct InstancesContainer(Vec); -pub fn perform_save_instances(instances: BTreeMap, settings: &Settings) { - if let Err(e) = save_instances(instances.values().cloned().collect(), &settings.install_dir) { +pub fn perform_save_instances(instances: BTreeMap, settings: &SharedSettings) { + if let Err(e) = save_instances( + instances.values().cloned().collect(), + &settings.read().install_dir, + ) { error!("Failed to save instances: {:#}", e); }; } diff --git a/src/instances_frame.rs b/src/instances_frame.rs index 5b2e07e..6e0dc1b 100644 --- a/src/instances_frame.rs +++ b/src/instances_frame.rs @@ -1,6 +1,5 @@ use crate::instance::{load_instances, Instance}; -use crate::settings::Settings; -use crate::Message; +use crate::{Message, SharedSettings}; use iced::widget::{container, rule, Column, Container, Scrollable, Text}; use iced::{alignment, theme, Alignment, Color, Element, Length}; use std::collections::BTreeMap; @@ -11,8 +10,8 @@ pub struct InstancesFrame { } impl InstancesFrame { - pub fn new(settings: &Settings) -> Self { - let instances = match load_instances(&settings.install_dir) { + pub fn new(settings: SharedSettings) -> Self { + let instances = match load_instances(&settings.read().install_dir) { Ok(vec) => { let mut map = BTreeMap::new(); for i in vec { diff --git a/src/main.rs b/src/main.rs index 7332357..823a8bf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,7 @@ extern crate log; #[macro_use] extern crate version; +use parking_lot::{Mutex, RwLock}; use std::hash::Hash; use std::path::PathBuf; use std::sync::mpsc::Sender; @@ -19,7 +20,7 @@ use crate::instance::{Instance, InstanceMessage, InstanceState, Progress}; use crate::instances_frame::InstancesFrame; use crate::music::{MusicCommand, MusicState}; use crate::plugins_frame::PluginMessage; -use crate::settings::{Settings, SettingsMessage}; +use crate::settings::{Settings, SettingsFrame, SettingsMessage}; use crate::style::{icon_button, log_container, tab_bar}; use iced::advanced::subscription; use iced::advanced::subscription::{EventStream, Hasher}; @@ -29,7 +30,7 @@ use iced_aw::{TabLabel, Tabs}; use iced_dialog::dialog; use std::collections::VecDeque; use std::fmt::Debug; -use std::sync::Mutex; +use std::sync::Arc; mod archive; mod github; @@ -74,16 +75,19 @@ pub fn main() -> iced::Result { .run_with(|| ESLauncher::new()) } +type SharedSettings = Arc>; + #[derive(Debug)] struct ESLauncher { music_sender: Sender, install_frame: install_frame::InstallFrame, - instances_frame: instances_frame::InstancesFrame, + instances_frame: InstancesFrame, plugins_frame: plugins_frame::PluginsFrameState, message_receiver: MessageReceiver, log_buffer: Vec, active_tab: Tab, - settings: Settings, + settings: SharedSettings, + settings_frame: SettingsFrame, dialog: Option, } @@ -134,8 +138,8 @@ impl ESLauncher { info!(" running on target environment other"); } - let settings = Settings::load(); - let music_sender = music::spawn(settings.music_state); + let settings = Arc::new(RwLock::new(Settings::load())); + let music_sender = music::spawn(settings.read().music_state); check_for_update(); @@ -144,11 +148,12 @@ impl ESLauncher { Self { music_sender, install_frame: install_frame::InstallFrame::default(), - instances_frame: instances_frame::InstancesFrame::new(&settings), + instances_frame: InstancesFrame::new(settings.clone()), plugins_frame: plugins_frame_state, message_receiver: MessageReceiver {}, log_buffer: vec![], active_tab: Tab::Instances, + settings_frame: SettingsFrame::new(settings.clone()), settings, dialog: None, }, @@ -165,7 +170,7 @@ impl ESLauncher { fn update(&mut self, message: Message) -> Task { match message { Message::InstallFrameMessage(msg) => { - return self.install_frame.update(msg, &mut self.settings) + return self.install_frame.update(msg, self.settings.clone()) } Message::InstanceMessage(name, msg) => { match self.instances_frame.instances.get_mut(&name) { @@ -183,7 +188,7 @@ impl ESLauncher { } } } - Message::SettingsMessage(msg) => return self.settings.update(msg), + Message::SettingsMessage(msg) => return self.settings_frame.update(msg), Message::AddInstance(instance) => { let is_ready = instance.state.is_ready(); self.instances_frame @@ -206,16 +211,17 @@ impl ESLauncher { } } Message::ReloadInstances() => { - self.instances_frame = InstancesFrame::new(&self.settings); + self.instances_frame = InstancesFrame::new(self.settings.clone()); } Message::MusicMessage(cmd) => { self.music_sender.send(cmd).ok(); - self.settings.music_state = match cmd { + let mut guard = self.settings.write(); + guard.music_state = match cmd { MusicCommand::Pause => MusicState::Paused, MusicCommand::Play => MusicState::Playing, - _ => self.settings.music_state, + _ => guard.music_state, }; - self.settings.save(); + guard.save(); } Message::TabSelected(active_tab) => self.active_tab = active_tab, Message::PluginFrameLoaded(plugins) => { @@ -282,7 +288,7 @@ impl ESLauncher { TabLabel::Text("Settings".into()), iced::widget::column([ iced::widget::horizontal_rule(2).into(), - self.settings.view().into(), + self.settings_frame.view().into(), ]), ) .set_active_tab(&self.active_tab) @@ -330,13 +336,13 @@ impl ESLauncher { .padding(8) .push(Space::new(Length::Fill, Length::Shrink)) .push( - Button::new(match self.settings.music_state { + Button::new(match self.settings.read().music_state { MusicState::Playing => style::pause_icon(), MusicState::Paused => style::play_icon(), }) .style(icon_button) .on_press(Message::MusicMessage( - match self.settings.music_state { + match self.settings.read().music_state { MusicState::Playing => MusicCommand::Pause, MusicState::Paused => MusicCommand::Play, }, @@ -416,11 +422,7 @@ impl subscription::Recipe for MessageReceiver { let mut interval = tokio::time::interval(Duration::from_millis(10)); loop { interval.tick().await; - if let Some(msg) = MESSAGE_QUEUE - .try_lock() - .ok() - .and_then(|mut q| q.pop_front()) - { + if let Some(msg) = MESSAGE_QUEUE.try_lock().and_then(|mut q| q.pop_front()) { return Some((msg, state)); } } @@ -429,15 +431,7 @@ impl subscription::Recipe for MessageReceiver { } pub fn send_message(message: Message) { - match crate::MESSAGE_QUEUE.lock() { - Ok(mut queue) => queue.push_back(message), - Err(e) => { - // Don't use an error log here because that may cause an endless loop of logs - eprintln!( - "Failed to lock message queue:\n{e}\nThe message was as follows:\n{message:#?}" - ); - } - } + MESSAGE_QUEUE.lock().push_back(message); } pub fn send_progress_message(instance_name: &str, progress: Progress) { diff --git a/src/settings.rs b/src/settings.rs index 374054d..4707a69 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -1,6 +1,6 @@ use crate::instance::{load_instances, save_instances}; use crate::music::MusicState; -use crate::{get_data_dir, send_message, style, DialogSpec, Message}; +use crate::{get_data_dir, send_message, style, DialogSpec, Message, SharedSettings}; use anyhow::{Context, Result}; use cp_r::CopyStats; use iced::advanced::graphics::core::Element; @@ -25,14 +25,6 @@ fn default_install_dir() -> PathBuf { get_data_dir().unwrap().join("instances") } -#[derive(Debug, Clone)] -pub enum SettingsMessage { - DarkTheme(bool), - RequestInstallPath, - SetInstallPath(PathBuf), - MoveInstallPath(PathBuf), -} - impl Default for Settings { fn default() -> Self { Self { @@ -79,7 +71,24 @@ impl Settings { Self::default() }) } +} +#[derive(Debug)] +pub struct SettingsFrame { + settings: SharedSettings, +} + +#[derive(Debug, Clone)] +pub enum SettingsMessage { + DarkTheme(bool), + RequestInstallPath, + SetInstallPath(PathBuf), + MoveInstallPath(PathBuf), +} +impl SettingsFrame { + pub fn new(settings: SharedSettings) -> Self { + Self { settings } + } pub fn view(&self) -> Container { fn settings_row<'a>( label: &'a str, @@ -107,7 +116,7 @@ impl Settings { )) // .style(icon_button) .padding(Padding::from([2, 0])); - let install_dir_reset_btn = if self.install_dir.eq(&default_install_dir()) { + let install_dir_reset_btn = if self.settings.read().install_dir.eq(&default_install_dir()) { None } else { Some( @@ -126,7 +135,7 @@ impl Settings { row!( text(format!( "Installing to {}", - self.install_dir.to_string_lossy(), + self.settings.read().install_dir.to_string_lossy(), )) .size(12.0), install_dir_picker @@ -143,7 +152,7 @@ impl Settings { )) .push(settings_row( "Dark Theme", - Checkbox::new("", self.dark_theme) + Checkbox::new("", self.settings.read().dark_theme) .on_toggle(|v| Message::SettingsMessage(SettingsMessage::DarkTheme(v))), )) .spacing(10.0), @@ -162,11 +171,12 @@ impl Settings { }) } SettingsMessage::SetInstallPath(p) => { - self.install_dir = p; + self.settings.write().install_dir = p; return Task::done(Message::ReloadInstances()); } SettingsMessage::MoveInstallPath(new) => { - let move_install_dir = move_install_dir(self.install_dir.clone(), new.clone()); + let move_install_dir = + move_install_dir(self.settings.read().install_dir.clone(), new.clone()); let message_when_done = move |_| { Message::DialogClosed(Box::new(Message::SettingsMessage( SettingsMessage::SetInstallPath(new.clone()), @@ -175,9 +185,9 @@ impl Settings { return Task::done(Message::OpenDialog(move_in_progress_dialog_spec(None))) .chain(Task::perform(move_install_dir, message_when_done)); } - SettingsMessage::DarkTheme(dark) => self.dark_theme = dark, + SettingsMessage::DarkTheme(dark) => self.settings.write().dark_theme = dark, }; - self.save(); + self.settings.read().save(); Task::none() } From b47a62eec1f338521da6aec6ae49ca8a6b6dc9c9 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sat, 19 Jul 2025 16:25:27 +0200 Subject: [PATCH 32/42] Implement theme selector, yes it interferes with the custom themes --- Cargo.lock | 1 + Cargo.toml | 1 + src/main.rs | 7 +--- src/settings.rs | 99 +++++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 91 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 69e728f..dbd5c18 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1915,6 +1915,7 @@ checksum = "0013a238275494641bf8f1732a23a808196540dc67b22ff97099c044ae4c8a1c" dependencies = [ "bitflags 2.5.0", "bytes", + "dark-light", "glam", "log", "num-traits", diff --git a/Cargo.toml b/Cargo.toml index 37aac07..e524667 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,6 +59,7 @@ version = "0.13.1" default-features = false features = [ "web-colors", + "auto-detect-theme", "advanced", "image", "tokio", diff --git a/src/main.rs b/src/main.rs index 823a8bf..625b5c4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -381,11 +381,8 @@ impl ESLauncher { } fn theme(&self) -> Theme { - Theme::custom("LightModified".into(), { - let mut palette = iced::theme::Palette::LIGHT; - palette.primary = iced::Color::from_rgb(0.2, 0.2, 0.2); - palette - }) + let theme = &self.settings.read().theme; + theme.into() } } diff --git a/src/settings.rs b/src/settings.rs index 4707a69..9939ed8 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -4,20 +4,24 @@ use crate::{get_data_dir, send_message, style, DialogSpec, Message, SharedSettin use anyhow::{Context, Result}; use cp_r::CopyStats; use iced::advanced::graphics::core::Element; -use iced::widget::{container, row, text, Checkbox, Text}; +use iced::widget::{combo_box, container, row, text, Text}; use iced::{ widget::{button, Column, Container, Row}, - Length, + Length, Theme, }; use iced::{Alignment, Padding, Renderer, Task}; use serde::{Deserialize, Serialize}; +use std::fmt::{Debug, Display, Formatter}; +use std::iter::Iterator; +use std::sync::LazyLock; use std::time::Duration; use std::{fs::File, path::PathBuf}; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct Settings { pub music_state: MusicState, - pub dark_theme: bool, + #[serde(default)] + pub theme: SelectableTheme, #[serde(default = "default_install_dir")] pub install_dir: PathBuf, } @@ -29,7 +33,7 @@ impl Default for Settings { fn default() -> Self { Self { music_state: Default::default(), - dark_theme: dark_light::detect().eq(&dark_light::Mode::Dark), + theme: SelectableTheme::default(), install_dir: default_install_dir(), } } @@ -73,27 +77,94 @@ impl Settings { } } +#[derive(Default, Debug, Clone, Deserialize, Serialize)] +#[serde(from = "Option", into = "Option")] +pub enum SelectableTheme { + #[default] + Autodetect, + Preset(Theme), +} + +impl From> for SelectableTheme { + fn from(value: Option) -> Self { + value + .map(|s| { + Theme::ALL + .iter() + .find(|t| t.to_string() == s) + .cloned() + .unwrap_or_else(|| { + warn!("Got unknown theme {s} from config, falling back to default"); + Theme::default() + }) + }) + .map(|t| Self::Preset(t.clone())) + .unwrap_or_default() + } +} + +impl From for Option { + fn from(st: SelectableTheme) -> Option { + match st { + SelectableTheme::Autodetect => None, + SelectableTheme::Preset(t) => Some(t.to_string()), + } + } +} + +impl Display for SelectableTheme { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + match self { + SelectableTheme::Autodetect => write!(f, "Detect from System"), + SelectableTheme::Preset(t) => Display::fmt(&t, f), + } + } +} + +impl From<&SelectableTheme> for Theme { + fn from(st: &SelectableTheme) -> Theme { + match st { + SelectableTheme::Autodetect => Theme::default(), + SelectableTheme::Preset(t) => t.clone(), + } + } +} +pub static ALL_SELECTABLE_THEMES: LazyLock> = LazyLock::new(|| { + let mut vec = vec![SelectableTheme::Autodetect]; + vec.extend( + Theme::ALL + .iter() + .map(|t| SelectableTheme::Preset(t.clone())), + ); + vec +}); + #[derive(Debug)] pub struct SettingsFrame { settings: SharedSettings, + theme_selector_state: combo_box::State, } #[derive(Debug, Clone)] pub enum SettingsMessage { - DarkTheme(bool), + ThemeSelected(SelectableTheme), RequestInstallPath, SetInstallPath(PathBuf), MoveInstallPath(PathBuf), } impl SettingsFrame { pub fn new(settings: SharedSettings) -> Self { - Self { settings } + let theme_selector_state = combo_box::State::new(ALL_SELECTABLE_THEMES.to_vec()); + Self { + settings, + theme_selector_state, + } } pub fn view(&self) -> Container { fn settings_row<'a>( label: &'a str, - content: impl Into>, - ) -> impl Into> { + content: impl Into>, + ) -> impl Into> { container( Column::new() .push( @@ -151,9 +222,13 @@ impl SettingsFrame { }), )) .push(settings_row( - "Dark Theme", - Checkbox::new("", self.settings.read().dark_theme) - .on_toggle(|v| Message::SettingsMessage(SettingsMessage::DarkTheme(v))), + "Theme", + combo_box( + &self.theme_selector_state, + "Please select a theme", + Some(&self.settings.read().theme), + |st| Message::SettingsMessage(SettingsMessage::ThemeSelected(st)), + ), )) .spacing(10.0), ) @@ -185,7 +260,7 @@ impl SettingsFrame { return Task::done(Message::OpenDialog(move_in_progress_dialog_spec(None))) .chain(Task::perform(move_install_dir, message_when_done)); } - SettingsMessage::DarkTheme(dark) => self.settings.write().dark_theme = dark, + SettingsMessage::ThemeSelected(st) => self.settings.write().theme = st, }; self.settings.read().save(); From 67abf82b32553c47890750e639d9b8d262ed6053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20Puk=C5=A1ta?= <54238857+yjhn@users.noreply.github.com> Date: Sat, 19 Jul 2025 17:29:42 +0300 Subject: [PATCH 33/42] use LazyLock instead of lazy_static (#453) Co-authored-by: M*C*O --- Cargo.lock | 1 - Cargo.toml | 1 - src/plugins_frame.rs | 6 ++---- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c7c6545..c92a0b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1216,7 +1216,6 @@ dependencies = [ "iced", "iced_aw", "iced_dialog", - "lazy_static", "log", "open", "parking_lot 0.12.1", diff --git a/Cargo.toml b/Cargo.toml index 6fc1ba3..ee94146 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,6 @@ iced_aw = { version = "0.12.2", default-features = false, features = [ "tabs", ] } iced_dialog = "0.13.0" -lazy_static = "1.5" log = { version = "0.4.22", features = ["std"] } open = "5" parking_lot = "0.12" diff --git a/src/plugins_frame.rs b/src/plugins_frame.rs index f36b4d4..1401a7e 100644 --- a/src/plugins_frame.rs +++ b/src/plugins_frame.rs @@ -5,15 +5,13 @@ use anyhow::Result; use espim::Plugin as EspimPlugin; use iced::widget::{button, image, rule, Column, Container, Image, Row, Scrollable, Space, Text}; use iced::{alignment, theme, Alignment, Color, Element, Length, Task}; -use lazy_static::lazy_static; use regex::Regex; use std::fs::File; use std::io::{Read, Write}; use std::path::PathBuf; +use std::sync::LazyLock; -lazy_static! { - static ref CACHE_FILENAME_REGEX: Regex = Regex::new(r"[^\w.-]").unwrap(); -} +static CACHE_FILENAME_REGEX: LazyLock = LazyLock::new(|| Regex::new(r"[^\w.-]").unwrap()); #[derive(Debug, Clone)] pub enum PluginsFrameState { From fcff94cc159200a7997063e16a62e750c07e897e Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sat, 19 Jul 2025 17:45:18 +0200 Subject: [PATCH 34/42] Adapt TabBar to dynamic themes --- src/main.rs | 37 +++++++++++----------------- src/style.rs | 68 +++++++++++++++++++++++++--------------------------- 2 files changed, 47 insertions(+), 58 deletions(-) diff --git a/src/main.rs b/src/main.rs index 625b5c4..f09c4e9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -258,38 +258,29 @@ impl ESLauncher { .push::>( Tab::Instances, TabLabel::Text("Instances".into()), - iced::widget::column([ - iced::widget::horizontal_rule(2).into(), - Row::new() - .push(self.instances_frame.view()) - .push(iced::widget::vertical_rule(2)) - .push(self.install_frame.view().map(Message::InstallFrameMessage)) - .spacing(10) - .padding(iced::Padding { - top: 0.0, - right: 15.0, - bottom: 0.0, - left: 15.0, - }) - .into(), - ]) + iced::widget::column([Row::new() + .push(self.instances_frame.view()) + .push(iced::widget::vertical_rule(2)) + .push(self.install_frame.view().map(Message::InstallFrameMessage)) + .spacing(10) + .padding(iced::Padding { + top: 0.0, + right: 15.0, + bottom: 0.0, + left: 15.0, + }) + .into()]) .into(), ) .push( Tab::Plugins, TabLabel::Text("Plugins".into()), - iced::widget::column([ - iced::widget::horizontal_rule(2).into(), - self.plugins_frame.view().into(), - ]), + iced::widget::column([self.plugins_frame.view().into()]), ) .push( Tab::Settings, TabLabel::Text("Settings".into()), - iced::widget::column([ - iced::widget::horizontal_rule(2).into(), - self.settings_frame.view().into(), - ]), + iced::widget::column([self.settings_frame.view().into()]), ) .set_active_tab(&self.active_tab) .tab_bar_style(tab_bar); diff --git a/src/style.rs b/src/style.rs index f68493b..f69aa88 100644 --- a/src/style.rs +++ b/src/style.rs @@ -1,6 +1,6 @@ use iced::border::Radius; use iced::widget::{button, container, Text}; -use iced::{alignment, Background, Border, Color, Font, Length, Shadow, Theme, Vector}; +use iced::{alignment, color, Background, Border, Color, Font, Length, Shadow, Theme, Vector}; use iced_aw::tab_bar; fn icon(unicode: char) -> Text<'static> { @@ -53,9 +53,38 @@ pub fn text_button(_theme: &Theme, status: button::Status) -> button::Style { ButtonStyle::Text.style(&ButtonStyle::Text, status) } -pub fn tab_bar(_theme: &Theme, status: tab_bar::Status) -> tab_bar::Style { - use tab_bar::Catalog; - CustomTabBar::default().style(&CustomTabBar::default(), status) +pub fn tab_bar(theme: &Theme, status: tab_bar::Status) -> tab_bar::Style { + use iced_aw::tab_bar::*; + let background = theme.palette().background; + let primary = theme.extended_palette().primary; + let secondary = theme.extended_palette().secondary; + + let default = Style { + tab_label_background: background.into(), + tab_label_border_color: secondary.weak.color, + text_color: theme.palette().text, + ..Default::default() + }; + + match status { + Status::Active => Style { + tab_label_background: primary.base.color.into(), + text_color: primary.base.text, + ..default + }, + Status::Hovered => Style { + tab_label_background: primary.weak.color.into(), + text_color: primary.weak.text, + ..default + }, + Status::Disabled => Style { ..default }, + _ => Style { + // We don't use these - make it jarring, so if we ever do, it's noticeable + tab_label_background: color!(0xff0000).into(), + text_color: color!(0x00ff00), + ..default + }, + } } pub fn log_container(log: &str) -> container::StyleFn { @@ -170,34 +199,3 @@ impl container::Catalog for LogContainer { } } } - -pub struct CustomTabBar; - -impl tab_bar::Catalog for CustomTabBar { - type Class<'a> = CustomTabBar; - - fn default<'a>() -> Self::Class<'a> { - CustomTabBar {} - } - - fn style(&self, class: &Self::Class<'_>, status: tab_bar::Status) -> tab_bar::Style { - match status { - tab_bar::Status::Active => tab_bar::Style { - tab_label_background: Background::Color(Color::from_rgb(1., 1., 1.)), - tab_label_border_width: 0., - ..Default::default() - }, - tab_bar::Status::Disabled => tab_bar::Style { - tab_label_background: Background::Color(Color::from_rgb(0.87, 0.87, 0.87)), - tab_label_border_width: 0., - ..Default::default() - }, - tab_bar::Status::Hovered => tab_bar::Style { - tab_label_background: Background::Color(Color::from_rgb(0.97, 0.97, 0.97)), - tab_label_border_width: 0., - ..Default::default() - }, - _ => Default::default(), - } - } -} From 25b8f69b3e6800f150bef0c9a834ae3c00488ba9 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 20 Jul 2025 15:30:25 +0200 Subject: [PATCH 35/42] Use wgpu by default, fall back to tiny-skia tiny-skia still has various issues, it's a decent enough fallback but prefer wgpu --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ee94146..7ec15f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,8 +62,8 @@ features = [ "advanced", "image", "tokio", - "tiny-skia" - # "wgpu", # TODO: tiny-skia backend panics when elements are resized to 0 width: https://github.com/iced-rs/iced/pull/2977 + "wgpu", # iced will use wgpu by default and fall back to tiny-skia + "tiny-skia", ] [target.'cfg(windows)'.build-dependencies] From 5d88fb47951062e2617652acbc28e5545ad4017a Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 20 Jul 2025 15:44:05 +0200 Subject: [PATCH 36/42] make settings row less cramped --- src/settings.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/settings.rs b/src/settings.rs index 9939ed8..07fe7dc 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -4,7 +4,7 @@ use crate::{get_data_dir, send_message, style, DialogSpec, Message, SharedSettin use anyhow::{Context, Result}; use cp_r::CopyStats; use iced::advanced::graphics::core::Element; -use iced::widget::{combo_box, container, row, text, Text}; +use iced::widget::{combo_box, container, horizontal_space, row, text, Text}; use iced::{ widget::{button, Column, Container, Row}, Length, Theme, @@ -170,10 +170,9 @@ impl SettingsFrame { .push( Row::new() .push(Text::new(label)) + .push(horizontal_space()) .push( - container(content) - .align_x(iced::alignment::Horizontal::Right) - .width(Length::Fill), + container(content).align_x(iced::alignment::Horizontal::Right), // .width(Length::Fill), ) .align_y(Alignment::Center), ) From 40bd303db3b5660b8baaa168de7b961c696113b1 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 20 Jul 2025 16:00:57 +0200 Subject: [PATCH 37/42] preview themes when hovered --- src/main.rs | 3 ++- src/settings.rs | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index f09c4e9..1c2de1e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -372,7 +372,8 @@ impl ESLauncher { } fn theme(&self) -> Theme { - let theme = &self.settings.read().theme; + let guard = &self.settings.read(); + let theme = guard.theme_preview.as_ref().unwrap_or_else(|| &guard.theme); theme.into() } } diff --git a/src/settings.rs b/src/settings.rs index 07fe7dc..72fe068 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -22,6 +22,8 @@ pub struct Settings { pub music_state: MusicState, #[serde(default)] pub theme: SelectableTheme, + #[serde(skip)] + pub theme_preview: Option, #[serde(default = "default_install_dir")] pub install_dir: PathBuf, } @@ -34,6 +36,7 @@ impl Default for Settings { Self { music_state: Default::default(), theme: SelectableTheme::default(), + theme_preview: None, install_dir: default_install_dir(), } } @@ -148,6 +151,7 @@ pub struct SettingsFrame { #[derive(Debug, Clone)] pub enum SettingsMessage { ThemeSelected(SelectableTheme), + ThemePreviewed(Option), RequestInstallPath, SetInstallPath(PathBuf), MoveInstallPath(PathBuf), @@ -227,7 +231,13 @@ impl SettingsFrame { "Please select a theme", Some(&self.settings.read().theme), |st| Message::SettingsMessage(SettingsMessage::ThemeSelected(st)), - ), + ) + .on_option_hovered(|st| { + Message::SettingsMessage(SettingsMessage::ThemePreviewed(Some(st))) + }) + .on_close(Message::SettingsMessage( + SettingsMessage::ThemePreviewed(None), + )), )) .spacing(10.0), ) @@ -259,7 +269,14 @@ impl SettingsFrame { return Task::done(Message::OpenDialog(move_in_progress_dialog_spec(None))) .chain(Task::perform(move_install_dir, message_when_done)); } - SettingsMessage::ThemeSelected(st) => self.settings.write().theme = st, + SettingsMessage::ThemeSelected(theme) => { + let mut guard = self.settings.write(); + guard.theme_preview = None; + guard.theme = theme; + } + SettingsMessage::ThemePreviewed(theme_maybe) => { + self.settings.write().theme_preview = theme_maybe + } }; self.settings.read().save(); From cdee35eac0b2c98c9c0e1b6322514a8d20a305a5 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Tue, 15 Jul 2025 14:32:16 +0200 Subject: [PATCH 38/42] Start updating to iced 0.14.0-dev (iced_aw is not ready) --- Cargo.lock | 3422 +++++++++++++++++++++++++++++++---------------- Cargo.toml | 16 +- src/instance.rs | 2 +- src/main.rs | 9 +- src/style.rs | 4 +- 5 files changed, 2302 insertions(+), 1151 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c92a0b9..d5ef3c0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "ab_glyph" -version = "0.2.23" +version = "0.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" +checksum = "1e0f4f6fbdc5ee39f2ede9f5f3ec79477271a6d6a2baff22310d51736bda6cea" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -14,24 +14,24 @@ dependencies = [ [[package]] name = "ab_glyph_rasterizer" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" +checksum = "b2187590a23ab1e3df8681afdf0987c48504d80291f002fcdb651f0ef5e25169" [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "ahash" @@ -39,19 +39,19 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.16", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.2.12", + "getrandom 0.3.3", "once_cell", "version_check", "zerocopy", @@ -66,6 +66,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + [[package]] name = "alloc-no-stdlib" version = "2.0.4" @@ -81,20 +90,15 @@ dependencies = [ "alloc-no-stdlib", ] -[[package]] -name = "allocator-api2" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" - [[package]] name = "alsa" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37fe60779335388a88c01ac6c3be40304d1e349de3ada3b15f7808bb90fa9dce" +checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" dependencies = [ "alsa-sys", - "bitflags 2.5.0", + "bitflags 2.9.1", + "cfg-if", "libc", ] @@ -115,7 +119,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.5.0", + "bitflags 2.9.1", "cc", "cesu8", "jni", @@ -126,7 +130,7 @@ dependencies = [ "ndk-context", "ndk-sys 0.6.0+11769913", "num_enum", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -146,9 +150,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "approx" @@ -159,17 +163,34 @@ dependencies = [ "num-traits", ] +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "as-raw-xcb-connection" @@ -179,11 +200,11 @@ checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" [[package]] name = "ash" -version = "0.37.3+1.3.251" +version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "libloading 0.7.4", + "libloading", ] [[package]] @@ -195,7 +216,7 @@ dependencies = [ "enumflags2", "futures-channel", "futures-util", - "rand", + "rand 0.8.5", "serde", "serde_repr", "tokio", @@ -205,9 +226,9 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ "event-listener", "event-listener-strategy", @@ -217,12 +238,11 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f2776ead772134d55b62dd45e59a79e21612d85d0af729b8b7d3967d601a62a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", - "event-listener", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -230,14 +250,15 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" dependencies = [ "async-task", "concurrent-queue", "fastrand", "futures-lite", + "pin-project-lite", "slab", ] @@ -254,9 +275,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" dependencies = [ "async-lock", "cfg-if", @@ -265,10 +286,10 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix", + "rustix 1.0.7", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -284,9 +305,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.2.3" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" +checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" dependencies = [ "async-channel", "async-io", @@ -297,9 +318,8 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix", + "rustix 1.0.7", "tracing", - "windows-sys 0.52.0", ] [[package]] @@ -310,14 +330,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] name = "async-signal" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" dependencies = [ "async-io", "async-lock", @@ -325,10 +345,10 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix", + "rustix 1.0.7", "signal-hook-registry", "slab", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -339,13 +359,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] @@ -356,71 +376,86 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "av1-grain" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ea8ef51aced2b9191c08197f55450d830876d9933f8f48a429b354f1d496b42" +dependencies = [ + "arrayvec", +] [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bindgen" -version = "0.69.4" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "4f72209734318d0b619a5e0f5129918b848c416e122a3c4ce054e03cb87b726f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "cexpr", "clang-sys", - "itertools", - "lazy_static", - "lazycell", + "itertools 0.13.0", "proc-macro2", "quote", "regex", - "rustc-hash 1.1.0", + "rustc-hash 2.1.1", "shlex", - "syn 2.0.69", + "syn", ] [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bit_field" @@ -454,9 +489,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] + +[[package]] +name = "bitstream-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" [[package]] name = "blake2" @@ -493,9 +537,9 @@ dependencies = [ [[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", "async-task", @@ -506,38 +550,50 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", ] +[[package]] +name = "built" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" + [[package]] name = "bumpalo" -version = "3.15.4" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "by_address" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.6.0" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" +checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] @@ -546,46 +602,53 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + [[package]] name = "bytes" -version = "1.6.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "calloop" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "log", "polling", - "rustix", + "rustix 0.38.44", "slab", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "calloop-wayland-source" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ "calloop", - "rustix", + "rustix 0.38.44", "wayland-backend", "wayland-client", ] [[package]] name = "cc" -version = "1.0.90" +version = "1.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -604,52 +667,56 @@ dependencies = [ ] [[package]] -name = "cfg-if" -version = "1.0.0" +name = "cfg-expr" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] [[package]] -name = "cfg_aliases" -version = "0.1.1" +name = "cfg-if" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e53693616d3075149f4ead59bdeecd204ac6b8192d8969757601b74bddf00f" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.3", + "libloading", ] [[package]] name = "clipboard-win" -version = "5.3.0" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d517d4b86184dbb111d3556a10f1c8a04da7428d2987bf1081602bf11c3aa9ee" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" dependencies = [ "error-code", ] [[package]] name = "clipboard_macos" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145a7f9e9b89453bc0a5e32d166456405d389cea5b578f57f1274b1397588a95" +checksum = "9b7f4aaa047ba3c3630b080bb9860894732ff23e2aee290a418909aa6d5df38f" dependencies = [ - "objc", - "objc-foundation", - "objc_id", + "objc2", + "objc2-app-kit", + "objc2-foundation", ] [[package]] @@ -667,40 +734,10 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4274ea815e013e0f9f04a2633423e14194e408a0576c943ce3d14ca56c50031c" dependencies = [ - "thiserror", + "thiserror 1.0.69", "x11rb", ] -[[package]] -name = "cocoa" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" -dependencies = [ - "bitflags 1.3.2", - "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "cocoa-foundation" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" -dependencies = [ - "bitflags 1.3.2", - "block", - "core-foundation", - "core-graphics-types", - "libc", - "objc", -] - [[package]] name = "codespan-reporting" version = "0.11.1" @@ -717,42 +754,11 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" -[[package]] -name = "com" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" -dependencies = [ - "com_macros", -] - -[[package]] -name = "com_macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" -dependencies = [ - "com_macros_support", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "com_macros_support" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", @@ -777,21 +783,44 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" -version = "0.23.1" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", + "core-graphics-types 0.2.0", "foreign-types", "libc", ] @@ -803,7 +832,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", "libc", ] @@ -820,9 +860,9 @@ dependencies = [ [[package]] name = "coreaudio-sys" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9" +checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" dependencies = [ "bindgen", ] @@ -833,7 +873,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "fontdb", "log", "rangemap", @@ -841,7 +881,30 @@ dependencies = [ "rustc-hash 1.1.0", "rustybuzz", "self_cell", - "swash", + "swash 0.1.19", + "sys-locale", + "ttf-parser 0.21.1", + "unicode-bidi", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", +] + +[[package]] +name = "cosmic-text" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" +dependencies = [ + "bitflags 2.9.1", + "fontdb", + "log", + "rangemap", + "rustc-hash 1.1.0", + "rustybuzz", + "self_cell", + "smol_str", + "swash 0.2.5", "sys-locale", "ttf-parser 0.21.1", "unicode-bidi", @@ -884,27 +947,27 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -921,15 +984,27 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "cryoglyph" +version = "0.1.0" +source = "git+https://github.com/iced-rs/cryoglyph.git?rev=a456d1c17bbcf33afcca41d9e5e299f9f1193819#a456d1c17bbcf33afcca41d9e5e299f9f1193819" +dependencies = [ + "cosmic-text 0.14.2", + "etagere", + "lru", + "rustc-hash 2.1.1", + "wgpu", +] [[package]] name = "crypto-common" @@ -942,31 +1017,16 @@ dependencies = [ ] [[package]] -name = "ctor" -version = "0.2.7" +name = "ctor-lite" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c" -dependencies = [ - "quote", - "syn 2.0.69", -] +checksum = "1f791803201ab277ace03903de1594460708d2d54df6053f2d9e82f592b19e3b" [[package]] name = "cursor-icon" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" - -[[package]] -name = "d3d12" -version = "0.19.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" -dependencies = [ - "bitflags 2.5.0", - "libloading 0.8.3", - "winapi", -] +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" [[package]] name = "dark-light" @@ -980,7 +1040,7 @@ dependencies = [ "objc", "rust-ini", "web-sys", - "winreg 0.10.1", + "winreg", "zbus", ] @@ -998,9 +1058,9 @@ checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b" [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] @@ -1069,13 +1129,24 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "dlib" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.3", + "libloading", ] [[package]] @@ -1094,39 +1165,47 @@ dependencies = [ "plist", ] +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + [[package]] name = "downcast-rs" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dpi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +version = "0.1.1" +source = "git+https://github.com/iced-rs/winit.git?rev=11414b6aa45699f038114e61b4ddf5102b2d3b4b#11414b6aa45699f038114e61b4ddf5102b2d3b4b" [[package]] name = "drm" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" +checksum = "98888c4bbd601524c11a7ed63f814b8825f420514f78e96f752c437ae9cbb5d1" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "bytemuck", "drm-ffi", "drm-fourcc", - "rustix", + "rustix 0.38.44", ] [[package]] name = "drm-ffi" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" +checksum = "97c98727e48b7ccb4f4aea8cfe881e5b07f702d17b7875991881b41af7278d53" dependencies = [ "drm-sys", - "rustix", + "rustix 0.38.44", ] [[package]] @@ -1137,19 +1216,19 @@ checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" [[package]] name = "drm-sys" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" +checksum = "fd39dde40b6e196c2e8763f23d119ddb1a8714534bf7d77fa97a65b0feda3986" dependencies = [ "libc", - "linux-raw-sys 0.6.4", + "linux-raw-sys 0.6.5", ] [[package]] name = "either" -version = "1.10.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "endi" @@ -1159,9 +1238,9 @@ checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" [[package]] name = "enumflags2" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" dependencies = [ "enumflags2_derive", "serde", @@ -1169,36 +1248,56 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.10" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "error-code" -version = "3.2.0" +version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "eslauncher2" @@ -1213,7 +1312,7 @@ dependencies = [ "flate2", "fs_extra", "futures", - "iced", + "iced 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", "iced_aw", "iced_dialog", "log", @@ -1254,9 +1353,9 @@ dependencies = [ [[package]] name = "etagere" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306960881d6c46bd0dd6b7f07442a441418c08d0d3e63d8d080b0f64c6343e4e" +checksum = "fc89bf99e5dc15954a60f707c1e09d7540e5cd9af85fa75caa0b510bc08c5342" dependencies = [ "euclid", "svg_fmt", @@ -1264,18 +1363,18 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.9" +version = "0.22.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" dependencies = [ "num-traits", ] [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", @@ -1284,9 +1383,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ "event-listener", "pin-project-lite", @@ -1294,12 +1393,11 @@ dependencies = [ [[package]] name = "exr" -version = "1.72.0" +version = "1.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" +checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" dependencies = [ "bit_field", - "flume", "half", "lebe", "miniz_oxide", @@ -1316,29 +1414,29 @@ checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" [[package]] name = "fastrand" -version = "2.0.2" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ "simd-adler32", ] [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] [[package]] @@ -1349,29 +1447,26 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", ] -[[package]] -name = "flume" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" -dependencies = [ - "spin", -] - [[package]] name = "fnv" 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" @@ -1381,11 +1476,20 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "font-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02a596f5713680923a2080d86de50fe472fb290693cf0f701187a1c8b36996b7" +dependencies = [ + "bytemuck", +] + [[package]] name = "fontconfig-parser" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a595cb550439a117696039dfc69830492058211b771a2a165379f2a1a53d84d" +checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" dependencies = [ "roxmltree", ] @@ -1422,7 +1526,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] @@ -1448,9 +1552,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1463,9 +1567,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1473,15 +1577,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1491,15 +1595,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" dependencies = [ "fastrand", "futures-core", @@ -1510,32 +1614,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1571,13 +1675,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -1587,16 +1693,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] name = "gif" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" dependencies = [ "color_quant", "weezl", @@ -1604,9 +1712,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gl_generator" @@ -1627,15 +1735,15 @@ checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "glow" -version = "0.13.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" dependencies = [ "js-sys", "slotmap", @@ -1645,9 +1753,9 @@ dependencies = [ [[package]] name = "glutin_wgl_sys" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" dependencies = [ "gl_generator", ] @@ -1658,7 +1766,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "gpu-alloc-types", ] @@ -1668,40 +1776,39 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", ] [[package]] name = "gpu-allocator" -version = "0.25.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" dependencies = [ "log", "presser", - "thiserror", - "winapi", - "windows 0.52.0", + "thiserror 1.0.69", + "windows 0.58.0", ] [[package]] name = "gpu-descriptor" -version = "0.2.4" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "gpu-descriptor-types", - "hashbrown 0.14.3", + "hashbrown 0.15.4", ] [[package]] name = "gpu-descriptor-types" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", ] [[package]] @@ -1716,9 +1823,9 @@ dependencies = [ [[package]] name = "half" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", @@ -1735,27 +1842,11 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" -dependencies = [ - "ahash 0.8.11", - "allocator-api2", -] - -[[package]] -name = "hassle-rs" -version = "0.11.0" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ - "bitflags 2.5.0", - "com", - "libc", - "libloading 0.8.3", - "thiserror", - "widestring", - "winapi", + "foldhash", ] [[package]] @@ -1766,9 +1857,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -1784,9 +1875,9 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1795,9 +1886,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", @@ -1805,9 +1896,9 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", @@ -1818,15 +1909,15 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.3.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -1843,193 +1934,280 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.26.0" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", - "rustls 0.22.4", + "rustls", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", + "webpki-roots 1.0.1", ] [[package]] name = "hyper-util" -version = "0.1.4" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d8d52be92d09acc2e01dddb7fde3ad983fc6489c7db4837e605bc3fca4cb63e" +checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" dependencies = [ + "base64", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iced" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88acfabc84ec077eaf9ede3457ffa3a104626d79022a9bf7f296093b1d60c73f" -dependencies = [ - "iced_core", - "iced_futures", - "iced_renderer", - "iced_widget", - "iced_winit", +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +dependencies = [ + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_debug", + "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_renderer 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_widget 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_winit 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", "image", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "iced" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" +dependencies = [ + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_renderer 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_widget 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_winit 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "thiserror 1.0.69", ] [[package]] name = "iced_aw" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "582c517a94ce3205da98e9c10b26bb71aa36b7d7d084441d826dc912711d1bac" +version = "0.11.0" +source = "git+https://github.com/C-Entropy/iced_aw/?rev=87b8176#87b81766c7a2ae8ead136fddac799f378d35129f" dependencies = [ "cfg-if", "getrandom 0.3.3", - "iced", + "iced 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", "iced_fonts", "web-time", ] [[package]] name = "iced_core" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0013a238275494641bf8f1732a23a808196540dc67b22ff97099c044ae4c8a1c" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "bytes", "dark-light", "glam", + "lilt", + "log", + "num-traits", + "rustc-hash 2.1.1", + "smol_str", + "thiserror 1.0.69", + "web-time", +] + +[[package]] +name = "iced_core" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "glam", + "lilt", "log", "num-traits", - "once_cell", "palette", "rustc-hash 2.1.1", "smol_str", - "thiserror", + "thiserror 1.0.69", "web-time", ] +[[package]] +name = "iced_debug" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +dependencies = [ + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "log", +] + [[package]] name = "iced_dialog" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6971903dccd5d5602d128b3bcedf59bddb304014ad133893aba813ec813da80" +version = "0.14.0-dev" +source = "git+https://github.com/pml68/iced_dialog?branch=master#d2770a2e277c32e62fb3d79989d224dce332e237" dependencies = [ - "iced_core", - "iced_widget", + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_widget 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", ] [[package]] name = "iced_fonts" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df7deb0800a850ee25c8a42559f72c0f249e577feb3aad37b9b65dc1e517e52a" +version = "0.2.0" +source = "git+https://github.com/Redhawk18/iced_fonts?rev=f919b05#f919b05015289a72eef2304c80687a3390e44492" dependencies = [ - "iced_core", + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_widget 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", ] [[package]] name = "iced_futures" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c04a6745ba2e80f32cf01e034fd00d853aa4f4cd8b91888099cb7aaee0d5d7c" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ "futures", - "iced_core", + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", "log", "rustc-hash 2.1.1", "tokio", "wasm-bindgen-futures", - "wasm-timer", + "wasmtimer", ] [[package]] -name = "iced_glyphon" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c3bb56f1820ca252bc1d0994ece33d233a55657c0c263ea7cb16895adbde82" +name = "iced_futures" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" dependencies = [ - "cosmic-text", - "etagere", - "lru", + "futures", + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "log", "rustc-hash 2.1.1", - "wgpu", + "wasm-bindgen-futures", + "wasm-timer", ] [[package]] name = "iced_graphics" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba25a18cfa6d5cc160aca7e1b34f73ccdff21680fa8702168c09739767b6c66f" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "bytemuck", - "cosmic-text", + "cosmic-text 0.14.2", "half", - "iced_core", - "iced_futures", + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", "image", "kamadak-exif", "log", - "once_cell", "raw-window-handle", "rustc-hash 2.1.1", - "thiserror", + "thiserror 1.0.69", + "unicode-segmentation", +] + +[[package]] +name = "iced_graphics" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "cosmic-text 0.12.1", + "half", + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "log", + "raw-window-handle", + "rustc-hash 2.1.1", + "thiserror 1.0.69", "unicode-segmentation", ] +[[package]] +name = "iced_program" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +dependencies = [ + "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", +] + [[package]] name = "iced_renderer" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73558208059f9e622df2bf434e044ee2f838ce75201a023cf0ca3e1244f46c2a" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "iced_graphics", + "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", "iced_tiny_skia", "iced_wgpu", "log", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "iced_renderer" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" +dependencies = [ + "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "log", + "thiserror 1.0.69", ] [[package]] name = "iced_runtime" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348b5b2c61c934d88ca3b0ed1ed913291e923d086a66fa288ce9669da9ef62b5" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +dependencies = [ + "bytes", + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_debug", + "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "iced_runtime" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" dependencies = [ "bytes", - "iced_core", - "iced_futures", + "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", "raw-window-handle", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "iced_tiny_skia" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c625d368284fcc43b0b36b176f76eff1abebe7959dd58bd8ce6897d641962a50" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ "bytemuck", - "cosmic-text", - "iced_graphics", + "cosmic-text 0.14.2", + "iced_debug", + "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", "kurbo", "log", "rustc-hash 2.1.1", @@ -2039,148 +2217,334 @@ dependencies = [ [[package]] name = "iced_wgpu" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15708887133671d2bcc6c1d01d1f176f43a64d6cdc3b2bf893396c3ee498295f" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "bytemuck", + "cryoglyph", "futures", "glam", "guillotiere", - "iced_glyphon", - "iced_graphics", + "iced_debug", + "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", "log", - "once_cell", "rustc-hash 2.1.1", - "thiserror", + "thiserror 1.0.69", "wgpu", ] [[package]] name = "iced_widget" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81429e1b950b0e4bca65be4c4278fea6678ea782030a411778f26fa9f8983e1d" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "iced_renderer", - "iced_runtime", + "iced_renderer 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "log", + "num-traits", + "rustc-hash 2.1.1", + "thiserror 1.0.69", + "unicode-segmentation", +] + +[[package]] +name = "iced_widget" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" +dependencies = [ + "iced_renderer 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "log", "num-traits", - "once_cell", "rustc-hash 2.1.1", - "thiserror", + "thiserror 1.0.69", "unicode-segmentation", ] [[package]] name = "iced_winit" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f44cd4e1c594b6334f409282937bf972ba14d31fedf03c23aa595d982a2fda28" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "iced_futures", - "iced_graphics", - "iced_runtime", + "iced_debug", + "iced_program", "log", "rustc-hash 2.1.1", - "thiserror", + "thiserror 1.0.69", "tracing", "wasm-bindgen-futures", "web-sys", - "winapi", "window_clipboard", "winit", ] [[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +name = "iced_winit" +version = "0.14.0-dev" +source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "log", + "rustc-hash 2.1.1", + "thiserror 1.0.69", + "tracing", + "wasm-bindgen-futures", + "web-sys", + "window_clipboard", + "winit", ] [[package]] -name = "image" -version = "0.24.9" +name = "icu_collections" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "exr", - "gif", - "jpeg-decoder", - "num-traits", - "png", - "qoi", - "tiff", + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", ] [[package]] -name = "indexmap" -version = "2.2.6" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ - "equivalent", - "hashbrown 0.14.3", + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", ] [[package]] -name = "instant" -version = "0.1.12" +name = "icu_normalizer" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ - "cfg-if", + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", ] [[package]] -name = "ipnet" -version = "2.9.0" +name = "icu_normalizer_data" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] -name = "is-docker" -version = "0.2.0" +name = "icu_properties" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ - "once_cell", + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", ] [[package]] -name = "is-wsl" -version = "0.4.0" +name = "icu_properties_data" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ - "is-docker", - "once_cell", + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", ] [[package]] -name = "itertools" -version = "0.12.1" +name = "idna" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "either", + "idna_adapter", + "smallvec", + "utf8_iter", ] [[package]] -name = "itoa" -version = "1.0.11" +name = "idna_adapter" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] [[package]] -name = "jni" +name = "image" +version = "0.25.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +dependencies = [ + "bytemuck", + "byteorder-lite", + "color_quant", + "exr", + "gif", + "image-webp", + "num-traits", + "png", + "qoi", + "ravif", + "rayon", + "rgb", + "tiff", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "image-webp" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6970fe7a5300b4b42e62c52efa0187540a5bef546c60edaf554ef595d2e6f0b" +dependencies = [ + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imgref" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" + +[[package]] +name = "indexmap" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +dependencies = [ + "equivalent", + "hashbrown 0.15.4", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "io-uring" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jni" version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" @@ -2190,7 +2554,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -2203,21 +2567,19 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.28" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ + "getrandom 0.3.3", "libc", ] [[package]] name = "jpeg-decoder" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" -dependencies = [ - "rayon", -] +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" [[package]] name = "js-sys" @@ -2245,7 +2607,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.3", + "libloading", "pkg-config", ] @@ -2271,12 +2633,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "lebe" version = "0.5.2" @@ -2301,76 +2657,86 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] -name = "libloading" -version = "0.7.4" +name = "libfuzzer-sys" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404" dependencies = [ - "cfg-if", - "winapi", + "arbitrary", + "cc", ] [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "windows-targets 0.53.2", ] [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.13", ] [[package]] -name = "libredox" -version = "0.0.2" +name = "lilt" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +checksum = "f67562e5eff6b20553fa9be1c503356768420994e28f67e3eafe6f41910e57ad" dependencies = [ - "bitflags 2.5.0", - "libc", - "redox_syscall 0.4.1", + "web-time", ] [[package]] -name = "line-wrap" -version = "0.2.0" +name = "linux-raw-sys" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" [[package]] name = "linux-raw-sys" -version = "0.6.4" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b5399f6804fbab912acbd8878ed3532d506b7c951b8f9f164ef90fef39e3f4" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -2378,21 +2744,36 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] [[package]] name = "lru" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "mach2" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" dependencies = [ "libc", ] @@ -2406,17 +2787,27 @@ dependencies = [ "libc", ] +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" dependencies = [ "libc", ] @@ -2432,25 +2823,19 @@ dependencies = [ [[package]] name = "metal" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "block", - "core-graphics-types", + "core-graphics-types 0.1.3", "foreign-types", "log", "objc", "paste", ] -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -2459,31 +2844,30 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ - "adler", + "adler2", "simd-adler32", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ - "hermit-abi", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] name = "multimap" -version = "0.8.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" [[package]] name = "mutate_once" @@ -2493,21 +2877,23 @@ checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" [[package]] name = "naga" -version = "0.19.2" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" +checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" dependencies = [ + "arrayvec", "bit-set", - "bitflags 2.5.0", + "bitflags 2.9.1", + "cfg_aliases", "codespan-reporting", "hexf-parse", "indexmap", "log", - "num-traits", "rustc-hash 1.1.0", "spirv", + "strum", "termcolor", - "thiserror", + "thiserror 2.0.12", "unicode-xid", ] @@ -2517,12 +2903,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "jni-sys", "log", "ndk-sys 0.5.0+25.2.9519653", "num_enum", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2531,13 +2917,13 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "jni-sys", "log", "ndk-sys 0.6.0+11769913", "num_enum", "raw-window-handle", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2564,15 +2950,21 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nix" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "cfg-if", - "cfg_aliases 0.1.1", + "cfg_aliases", "libc", "memoffset", ] @@ -2587,6 +2979,22 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -2601,23 +3009,43 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", ] [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -2625,23 +3053,24 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] @@ -2660,7 +3089,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", - "objc_exception", ] [[package]] @@ -2696,7 +3124,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "block2", "libc", "objc2", @@ -2706,13 +3134,37 @@ dependencies = [ "objc2-quartz-core", ] +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + [[package]] name = "objc2-core-data" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "block2", "objc2", "objc2-foundation", @@ -2730,6 +3182,18 @@ dependencies = [ "objc2-metal", ] +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2", + "objc2-contacts", + "objc2-foundation", +] + [[package]] name = "objc2-encode" version = "4.1.0" @@ -2742,20 +3206,32 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "block2", "dispatch", "libc", "objc2", ] +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + [[package]] name = "objc2-metal" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "block2", "objc2", "objc2-foundation", @@ -2767,7 +3243,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "block2", "objc2", "objc2-foundation", @@ -2775,12 +3251,58 @@ dependencies = [ ] [[package]] -name = "objc_exception" -version = "0.1.2" +name = "objc2-symbols" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "cc", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "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", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", ] [[package]] @@ -2794,9 +3316,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -2835,15 +3357,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "open" -version = "5.1.4" +version = "5.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ca541f22b1c46d4bb9801014f234758ab4297e7870b904b6a8415b980a7388" +checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" dependencies = [ "is-wsl", "libc", @@ -2852,11 +3374,20 @@ dependencies = [ [[package]] name = "orbclient" -version = "0.3.47" +version = "0.3.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-float" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" dependencies = [ - "libredox 0.0.2", + "num-traits", ] [[package]] @@ -2881,18 +3412,18 @@ dependencies = [ [[package]] name = "owned_ttf_parser" -version = "0.20.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" +checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" dependencies = [ - "ttf-parser 0.20.0", + "ttf-parser 0.25.1", ] [[package]] name = "palette" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebfc23a4b76642983d57e4ad00bb4504eb30a8ce3c70f4aee1f725610e36d97a" +checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" dependencies = [ "approx", "fast-srgb8", @@ -2902,20 +3433,21 @@ dependencies = [ [[package]] name = "palette_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8890702dbec0bad9116041ae586f84805b13eecd1d8b1df27c29998a9969d6d" +checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" dependencies = [ + "by_address", "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -2930,12 +3462,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.11", ] [[package]] @@ -2954,15 +3486,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.13", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -2978,15 +3510,15 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "percent-encoding" @@ -2996,9 +3528,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", "indexmap", @@ -3006,9 +3538,9 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", "phf_shared", @@ -3016,61 +3548,61 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", - "rand", + "rand 0.8.5", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", "phf_shared", "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -3080,9 +3612,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", "fastrand", @@ -3091,9 +3623,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "platform-dirs" @@ -3106,22 +3638,21 @@ dependencies = [ [[package]] name = "plist" -version = "1.6.1" +version = "1.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9" +checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1" dependencies = [ - "base64 0.21.7", + "base64", "indexmap", - "line-wrap", - "quick-xml", + "quick-xml 0.38.0", "time", ] [[package]] name = "png" -version = "0.17.13" +version = "0.17.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -3132,17 +3663,17 @@ dependencies = [ [[package]] name = "polling" -version = "3.6.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" +checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix", + "rustix 1.0.7", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3151,6 +3682,15 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -3159,9 +3699,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] name = "presser" @@ -3171,37 +3714,50 @@ checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" [[package]] name = "prettyplease" -version = "0.2.17" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" +checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" dependencies = [ "proc-macro2", - "syn 2.0.69", + "syn", ] [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.15" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" +checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" +dependencies = [ + "quote", + "syn", +] [[package]] name = "progress-streams" @@ -3227,7 +3783,7 @@ checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", "heck", - "itertools", + "itertools 0.12.1", "log", "multimap", "once_cell", @@ -3236,7 +3792,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.69", + "syn", "tempfile", ] @@ -3247,10 +3803,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", - "itertools", + "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] @@ -3271,20 +3827,90 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + [[package]] name = "quick-xml" -version = "0.31.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b" dependencies = [ "memchr", ] +[[package]] +name = "quinn" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls", + "socket2", + "thiserror 2.0.12", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +dependencies = [ + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", + "ring", + "rustc-hash 2.1.1", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.12", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "quote" -version = "1.0.36" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -3302,8 +3928,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -3313,35 +3949,104 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "range-alloc" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" + +[[package]] +name = "rangemap" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" + +[[package]] +name = "rav1e" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +dependencies = [ + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.12.1", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "once_cell", + "paste", + "profiling", + "rand 0.8.5", + "rand_chacha 0.3.1", + "simd_helpers", + "system-deps", + "thiserror 1.0.69", + "v_frame", + "wasm-bindgen", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "ravif" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b" dependencies = [ - "getrandom 0.2.12", + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", ] -[[package]] -name = "range-alloc" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" - -[[package]] -name = "rangemap" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" - [[package]] name = "raw-window-handle" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" @@ -3370,7 +4075,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69aacb76b5c29acfb7f90155d39759a29496aebb49395830e928a9703d2eec2f" dependencies = [ "bytemuck", - "font-types", + "font-types 0.7.3", +] + +[[package]] +name = "read-fonts" +version = "0.29.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ca636dac446b5664bd16c069c00a9621806895b8bb02c2dc68542b23b8f25d" +dependencies = [ + "bytemuck", + "font-types 0.9.0", ] [[package]] @@ -3391,22 +4106,31 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags 2.9.1", +] + [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.12", - "libredox 0.0.1", - "thiserror", + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3416,9 +4140,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -3427,9 +4151,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "renderdoc-sys" @@ -3439,11 +4163,11 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "reqwest" -version = "0.12.4" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ - "base64 0.22.0", + "base64", "bytes", "futures-core", "futures-util", @@ -3453,15 +4177,12 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", - "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.22.4", - "rustls-pemfile", + "quinn", + "rustls", "rustls-pki-types", "serde", "serde_json", @@ -3470,14 +4191,15 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots", - "winreg 0.52.0", + "webpki-roots 1.0.1", ] [[package]] @@ -3503,17 +4225,22 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "rgb" +version = "0.8.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" + [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.12", + "getrandom 0.2.16", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -3526,14 +4253,14 @@ checksum = "6006a627c1a38d37f3d3a85c6575418cfe34a5392d60a686d0071e1c8d427acb" dependencies = [ "cpal", "lewton", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "roxmltree" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rust-ini" @@ -3547,9 +4274,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -3565,36 +4292,35 @@ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "errno", "libc", - "linux-raw-sys 0.4.13", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", ] [[package]] -name = "rustls" -version = "0.22.4" +name = "rustix" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "log", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.7" +version = "0.23.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebbbdb961df0ad3f2652da8f3fdc4b36122f568f968f45ad3316f26c025c677b" +checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" dependencies = [ "log", "once_cell", @@ -3606,26 +4332,20 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "2.1.2" +name = "rustls-pki-types" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "base64 0.22.0", - "rustls-pki-types", + "web-time", + "zeroize", ] -[[package]] -name = "rustls-pki-types" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" - [[package]] name = "rustls-webpki" -version = "0.102.2" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", "rustls-pki-types", @@ -3644,7 +4364,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "bytemuck", "libm", "smallvec", @@ -3657,9 +4377,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -3684,9 +4404,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7555fcb4f753d095d734fdefebb0ad8c98478a21db500492d87c55913d3b0086" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ "ab_glyph", "log", @@ -3697,15 +4417,15 @@ dependencies = [ [[package]] name = "self_cell" -version = "1.0.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" +checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" [[package]] name = "serde" -version = "1.0.208" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -3718,26 +4438,26 @@ checksum = "fb3aa78ecda1ebc9ec9847d5d3aba7d618823446a049ba2491940506da6e2782" dependencies = [ "log", "serde", - "thiserror", + "thiserror 1.0.69", "xml-rs", ] [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -3747,13 +4467,22 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", ] [[package]] @@ -3787,9 +4516,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -3800,6 +4529,15 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + [[package]] name = "simplelog" version = "0.12.2" @@ -3813,9 +4551,9 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "skrifa" @@ -3824,18 +4562,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" dependencies = [ "bytemuck", - "read-fonts", + "read-fonts 0.22.7", ] [[package]] -name = "slab" -version = "0.4.9" +name = "skrifa" +version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "dbeb4ca4399663735553a09dd17ce7e49a0a0203f03b706b39628c4d913a8607" dependencies = [ - "autocfg", + "bytemuck", + "read-fonts 0.29.3", ] +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + [[package]] name = "slotmap" version = "1.0.7" @@ -3847,25 +4592,25 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smithay-client-toolkit" -version = "0.18.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "calloop", "calloop-wayland-source", "cursor-icon", "libc", "log", "memmap2", - "rustix", - "thiserror", + "rustix 0.38.44", + "thiserror 1.0.69", "wayland-backend", "wayland-client", "wayland-csd-frame", @@ -3878,9 +4623,9 @@ dependencies = [ [[package]] name = "smithay-clipboard" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d" +checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" dependencies = [ "libc", "smithay-client-toolkit", @@ -3889,18 +4634,18 @@ dependencies = [ [[package]] name = "smol_str" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" dependencies = [ "serde", ] [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3908,53 +4653,51 @@ dependencies = [ [[package]] name = "softbuffer" -version = "0.4.1" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071916a85d1db274b4ed57af3a14afb66bd836ae7f82ebb6f1fd3455107830d9" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" dependencies = [ "as-raw-xcb-connection", "bytemuck", - "cfg_aliases 0.2.0", - "cocoa", - "core-graphics", + "cfg_aliases", + "core-graphics 0.24.0", "drm", "fastrand", "foreign-types", "js-sys", "log", "memmap2", - "objc", + "objc2", + "objc2-foundation", + "objc2-quartz-core", "raw-window-handle", - "redox_syscall 0.4.1", - "rustix", + "redox_syscall 0.5.13", + "rustix 0.38.44", "tiny-xlib", "wasm-bindgen", "wayland-backend", "wayland-client", "wayland-sys", "web-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", "x11rb", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] - [[package]] name = "spirv" version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -3967,17 +4710,39 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "svg_fmt" -version = "0.4.2" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83ba502a3265efb76efb89b0a2f7782ad6f2675015d4ce37e4b547dda42b499" +checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" [[package]] name = "swash" @@ -3985,27 +4750,27 @@ version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" dependencies = [ - "skrifa", - "yazi", - "zeno", + "skrifa 0.22.3", + "yazi 0.1.6", + "zeno 0.2.3", ] [[package]] -name = "syn" -version = "1.0.109" +name = "swash" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "f745de914febc7c9ab4388dfaf94bbc87e69f57bb41133a9b0c84d4be49856f3" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "skrifa 0.31.3", + "yazi 0.2.1", + "zeno 0.3.3", ] [[package]] name = "syn" -version = "2.0.69" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201fcda3845c23e8212cd466bfebf0bd20694490fc0356ae8e428e0824a915a6" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -4014,40 +4779,74 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "sys-locale" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801cf239ecd6ccd71f03d270d67dd53d13e90aab208bf4b8fe4ad957ea949b0" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" dependencies = [ "libc", ] +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml 0.8.23", + "version-compare", +] + [[package]] name = "tar" -version = "0.4.41" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" dependencies = [ "filetime", "libc", "xattr", ] +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + [[package]] name = "tempfile" -version = "3.10.1" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", - "rustix", - "windows-sys 0.52.0", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.7", + "windows-sys 0.59.0", ] [[package]] @@ -4061,22 +4860,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] @@ -4092,9 +4911,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -4109,15 +4928,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -4151,21 +4970,32 @@ dependencies = [ [[package]] name = "tiny-xlib" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4098d49269baa034a8d1eae9bd63e9fa532148d772121dace3bcd6a6c98eb6d" +checksum = "0324504befd01cab6e0c994f34b2ffa257849ee019d3fb3b64fb2c858887d89e" dependencies = [ "as-raw-xcb-connection", - "ctor", - "libloading 0.8.3", + "ctor-lite", + "libloading", + "pkg-config", "tracing", ] +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -4178,16 +5008,18 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", "signal-hook-registry", + "slab", "socket2", "tracing", "windows-sys 0.52.0", @@ -4195,27 +5027,25 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.25.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.22.4", - "rustls-pki-types", + "rustls", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -4227,55 +5057,90 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.8.23" +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.5" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", + "serde", + "serde_spanned", "toml_datetime", "winnow", ] [[package]] name = "tower" -version = "0.4.13" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "pin-project", "pin-project-lite", + "sync_wrapper", "tokio", "tower-layer", "tower-service", ] +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -4284,20 +5149,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", ] @@ -4320,11 +5185,17 @@ 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.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "uds_windows" @@ -4339,9 +5210,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-bidi-mirroring" @@ -4357,54 +5228,45 @@ checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-linebreak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-properties" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" [[package]] name = "unicode-script" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "untrusted" @@ -4414,26 +5276,26 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.10.1" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" dependencies = [ - "base64 0.22.0", + "base64", "log", "once_cell", - "rustls 0.23.7", + "rustls", "rustls-pki-types", "serde", "serde_json", "url", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] name = "url" -version = "2.5.0" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -4447,17 +5309,40 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "v_frame" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + [[package]] name = "version" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a449064fee414fcc201356a3e6c1510f6c8829ed28bb06b91c54ebe208ce065" +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" @@ -4480,9 +5365,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -4515,18 +5400,19 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.69", + "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] @@ -4549,7 +5435,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4565,9 +5451,9 @@ dependencies = [ [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -4591,15 +5477,29 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmtimer" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d49b5d6c64e8558d9b1b065014426f35c18de636895d24893dbbd329743446" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.12.4", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "wayland-backend" -version = "0.3.3" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" +checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" dependencies = [ "cc", "downcast-rs", - "rustix", + "rustix 0.38.44", "scoped-tls", "smallvec", "wayland-sys", @@ -4607,12 +5507,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.2" +version = "0.31.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" +checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" dependencies = [ - "bitflags 2.5.0", - "rustix", + "bitflags 2.9.1", + "rustix 0.38.44", "wayland-backend", "wayland-scanner", ] @@ -4623,29 +5523,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.1" +version = "0.31.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" +checksum = "a65317158dec28d00416cb16705934070aef4f8393353d41126c54264ae0f182" dependencies = [ - "rustix", + "rustix 0.38.44", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.31.2" +version = "0.32.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4653,11 +5553,11 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.2.0" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +checksum = "4fd38cdad69b56ace413c6bcc1fbf5acc5e2ef4af9d5f8f1f9570c0c83eae175" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4666,11 +5566,11 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.2.0" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4679,20 +5579,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.1" +version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" dependencies = [ "proc-macro2", - "quick-xml", + "quick-xml 0.37.5", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.1" +version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" dependencies = [ "dlib", "log", @@ -4722,32 +5622,42 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.26.11" +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 = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" dependencies = [ "rustls-pki-types", ] [[package]] name = "weezl" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" +checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" [[package]] name = "wgpu" -version = "0.19.3" +version = "24.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b1213b52478a7631d6e387543ed8f642bc02c578ef4e3b49aca2a29a7df0cb" +checksum = "6b0b3436f0729f6cdf2e6e9201f3d39dc95813fad61d826c1ed07918b4539353" dependencies = [ "arrayvec", - "cfg-if", - "cfg_aliases 0.1.1", + "bitflags 2.9.1", + "cfg_aliases", + "document-features", "js-sys", "log", "naga", - "parking_lot 0.12.1", + "parking_lot 0.12.4", "profiling", "raw-window-handle", "smallvec", @@ -4762,92 +5672,87 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.19.3" +version = "24.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f6b033c2f00ae0bc8ea872c5989777c60bc241aac4e58b24774faa8b391f78" +checksum = "7f0aa306497a238d169b9dc70659105b4a096859a34894544ca81719242e1499" dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.5.0", - "cfg_aliases 0.1.1", - "codespan-reporting", + "bitflags 2.9.1", + "cfg_aliases", + "document-features", "indexmap", "log", "naga", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.4", "profiling", "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror", - "web-sys", + "thiserror 2.0.12", "wgpu-hal", "wgpu-types", ] [[package]] name = "wgpu-hal" -version = "0.19.3" +version = "24.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f972c280505ab52ffe17e94a7413d9d54b58af0114ab226b9fc4999a47082e" +checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" dependencies = [ "android_system_properties", "arrayvec", "ash", "bit-set", - "bitflags 2.5.0", + "bitflags 2.9.1", "block", - "cfg_aliases 0.1.1", - "core-graphics-types", - "d3d12", + "bytemuck", + "cfg_aliases", + "core-graphics-types 0.1.3", "glow", "glutin_wgl_sys", "gpu-alloc", "gpu-allocator", "gpu-descriptor", - "hassle-rs", "js-sys", "khronos-egl", "libc", - "libloading 0.8.3", + "libloading", "log", "metal", "naga", "ndk-sys 0.5.0+25.2.9519653", "objc", "once_cell", - "parking_lot 0.12.1", + "ordered-float", + "parking_lot 0.12.4", "profiling", "range-alloc", "raw-window-handle", "renderdoc-sys", "rustc-hash 1.1.0", "smallvec", - "thiserror", + "thiserror 2.0.12", "wasm-bindgen", "web-sys", "wgpu-types", - "winapi", + "windows 0.58.0", + "windows-core 0.58.0", ] [[package]] name = "wgpu-types" -version = "0.19.2" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" +checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "js-sys", + "log", "web-sys", ] -[[package]] -name = "widestring" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" - [[package]] name = "winapi" version = "0.3.9" @@ -4866,11 +5771,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -4890,55 +5795,100 @@ dependencies = [ "clipboard_wayland", "clipboard_x11", "raw-window-handle", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "windows" -version = "0.52.0" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" dependencies = [ - "windows-core 0.52.0", - "windows-targets 0.52.4", + "windows-core 0.54.0", + "windows-targets 0.52.6", ] [[package]] name = "windows" -version = "0.54.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core 0.54.0", - "windows-targets 0.52.4", + "windows-core 0.58.0", + "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.52.0" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ - "windows-targets 0.52.4", + "windows-result 0.1.2", + "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.54.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ - "windows-result", - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-targets 0.52.4", + "windows-result 0.2.0", + "windows-targets 0.52.6", ] [[package]] @@ -4965,7 +5915,25 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", ] [[package]] @@ -5000,17 +5968,34 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "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", ] [[package]] @@ -5027,9 +6012,15 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" [[package]] name = "windows_aarch64_msvc" @@ -5045,9 +6036,15 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" [[package]] name = "windows_i686_gnu" @@ -5063,9 +6060,27 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" [[package]] name = "windows_i686_msvc" @@ -5081,9 +6096,15 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" [[package]] name = "windows_x86_64_gnu" @@ -5099,9 +6120,15 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" [[package]] name = "windows_x86_64_gnullvm" @@ -5117,9 +6144,15 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" [[package]] name = "windows_x86_64_msvc" @@ -5135,26 +6168,32 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "winit" -version = "0.30.0" +name = "windows_x86_64_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9e6d5d66cbf702e0dd820302144f51b69a95acdc495dd98ca280ff206562b1" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winit" +version = "0.30.8" +source = "git+https://github.com/iced-rs/winit.git?rev=11414b6aa45699f038114e61b4ddf5102b2d3b4b#11414b6aa45699f038114e61b4ddf5102b2d3b4b" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "android-activity", "atomic-waker", - "bitflags 2.5.0", + "bitflags 2.9.1", + "block2", "bytemuck", "calloop", - "cfg_aliases 0.2.0", + "cfg_aliases", "concurrent-queue", - "core-foundation", - "core-graphics", + "core-foundation 0.9.4", + "core-graphics 0.23.2", "cursor-icon", "dpi", "js-sys", @@ -5164,12 +6203,13 @@ dependencies = [ "objc2", "objc2-app-kit", "objc2-foundation", + "objc2-ui-kit", "orbclient", "percent-encoding", "pin-project", "raw-window-handle", "redox_syscall 0.4.1", - "rustix", + "rustix 0.38.44", "sctk-adwaita", "smithay-client-toolkit", "smol_str", @@ -5191,9 +6231,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.40" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ "memchr", ] @@ -5207,23 +6247,13 @@ dependencies = [ "winapi", ] -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winres" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" dependencies = [ - "toml", + "toml 0.5.11", ] [[package]] @@ -5232,9 +6262,15 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", ] +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + [[package]] name = "x11-dl" version = "2.21.0" @@ -5248,50 +6284,49 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.8.3", + "libloading", "once_cell", - "rustix", + "rustix 0.38.44", "x11rb-protocol", ] [[package]] name = "x11rb-protocol" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" [[package]] name = "xattr" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", - "linux-raw-sys 0.4.13", - "rustix", + "rustix 1.0.7", ] [[package]] name = "xcursor" -version = "0.3.5" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" [[package]] name = "xdg-home" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5300,7 +6335,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.1", "dlib", "log", "once_cell", @@ -5309,15 +6344,15 @@ dependencies = [ [[package]] name = "xkeysym" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.19" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] name = "yazi" @@ -5325,11 +6360,41 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" +[[package]] +name = "yazi" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "zbus" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23915fcb26e7a9a9dc05fd93a9870d336d6d032cd7e8cebf1c5c37666489fdd5" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" dependencies = [ "async-broadcast", "async-executor", @@ -5349,7 +6414,7 @@ dependencies = [ "hex", "nix", "ordered-stream", - "rand", + "rand 0.8.5", "serde", "serde_repr", "sha1", @@ -5366,14 +6431,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bcca0b586d2f8589da32347b4784ba424c4891ed86aa5b50d5e88f6b2c4f5d" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.69", + "syn", "zvariant_utils", ] @@ -5394,31 +6459,91 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" +[[package]] +name = "zeno" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" + [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", + "synstructure", ] [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "zip" @@ -5439,10 +6564,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e109e5a291403b4c1e514d39f8a22d3f98d257e691a52bb1f16051bb1ffed63e" dependencies = [ "log", - "thiserror", + "thiserror 1.0.69", "zip", ] +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + [[package]] name = "zune-inflate" version = "0.2.54" @@ -5452,11 +6583,20 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "zune-jpeg" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9e525af0a6a658e031e95f14b7f889976b74a11ba0eca5a5fc9ac8a1c43a6a" +dependencies = [ + "zune-core", +] + [[package]] name = "zvariant" -version = "4.1.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1724a2b330760dc7d2a8402d841119dc869ef120b139d29862d6980e9c75bfc9" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" dependencies = [ "endi", "enumflags2", @@ -5468,24 +6608,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "4.1.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55025a7a518ad14518fb243559c058a2e5b848b015e31f1d90414f36e3317859" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.69", + "syn", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn", ] diff --git a/Cargo.toml b/Cargo.toml index 7ec15f3..58c6826 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,10 +24,10 @@ espim = "0.2" flate2 = "1.0" fs_extra = "1.3.0" futures = "0.3" -iced_aw = { version = "0.12.2", default-features = false, features = [ +iced_aw = { version = "0.11.0", default-features = false, features = [ "tabs", ] } -iced_dialog = "0.13.0" +iced_dialog = "0.14.0-dev" log = { version = "0.4.22", features = ["std"] } open = "5" parking_lot = "0.12" @@ -54,7 +54,7 @@ rfd = { version = "0.14.1", default-features = false, features = [ ] } [dependencies.iced] -version = "0.13.1" +version = "0.14.0-dev" default-features = false features = [ "web-colors", @@ -73,3 +73,13 @@ winres = "0.1" strip = true opt-level = 'z' # Optimize for size. lto = true + +[patch.crates-io] +iced_widget = { git = "https://github.com/iced-rs/iced", branch = "master" } +iced_core = { git = "https://github.com/iced-rs/iced", branch = "master" } +iced = { git = "https://github.com/iced-rs/iced", branch = "master" } +iced_dialog = { git = "https://github.com/pml68/iced_dialog", branch = "master" } +iced_aw = { git = "https://github.com/C-Entropy/iced_aw/", rev = "87b8176" } + +[patch."https://github.com/C-Entropy/iced_aw/"] +iced_fonts = { git = "https://github.com/Redhawk18/iced_fonts", rev = "f919b05" } \ No newline at end of file diff --git a/src/instance.rs b/src/instance.rs index 32dfb81..e6189ca 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -243,7 +243,7 @@ impl Instance { if let (Some(done), Some(total)) = (progress.done, progress.total) { status_field = status_field.push( ProgressBar::new(0.0..=total as f32, done as f32) - .height(Length::Fixed(5.)), + .girth(Length::Fixed(5.)), ); } if let Some(done) = progress.done { diff --git a/src/main.rs b/src/main.rs index 1c2de1e..2d35b05 100644 --- a/src/main.rs +++ b/src/main.rs @@ -69,10 +69,11 @@ mod update; static MESSAGE_QUEUE: Mutex> = Mutex::new(VecDeque::new()); pub fn main() -> iced::Result { - iced::application(ESLauncher::title, ESLauncher::update, ESLauncher::view) + iced::application(ESLauncher::new, ESLauncher::update, ESLauncher::view) + .title(ESLauncher::title) .subscription(ESLauncher::subscription) .theme(ESLauncher::theme) - .run_with(|| ESLauncher::new()) + .run() } type SharedSettings = Arc>; @@ -168,7 +169,7 @@ impl ESLauncher { } fn update(&mut self, message: Message) -> Task { - match message { + match dbg!(message) { Message::InstallFrameMessage(msg) => { return self.install_frame.update(msg, self.settings.clone()) } @@ -351,7 +352,7 @@ impl ESLauncher { .height(Length::Fill); if let Some(spec) = &self.dialog { - let mut dialog = dialog(true, base, &*spec.content).height(300); + let mut dialog = dialog(true, base, &*spec.content); if let Some(title) = &spec.title { dialog = dialog.title(title); } diff --git a/src/style.rs b/src/style.rs index f69aa88..082da02 100644 --- a/src/style.rs +++ b/src/style.rs @@ -174,9 +174,9 @@ impl From<&str> for LogContainer { fn from(log: &str) -> Self { Self { background: if log.starts_with("WARN") { - Some(Color::new(1., 1., 0.5, 0.5)) + Some(Color::from_rgba(1.0, 1.0, 0.5, 0.5)) } else if log.starts_with("ERROR") { - Some(Color::new(1., 0.5, 0.5, 0.5)) + Some(Color::from_rgba(1.0, 0.5, 0.5, 0.5)) } else { None }, From 81305f6ca47b6eebbb916f5b6458341ef59b102f Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Sun, 20 Jul 2025 20:14:00 +0200 Subject: [PATCH 39/42] replace tab bar with a dummy implementation, so we can use the iced dev branch --- Cargo.lock | 753 ++++++++++++++++++++++----------------------------- Cargo.toml | 6 +- src/main.rs | 99 ++++--- src/style.rs | 68 ++--- 4 files changed, 424 insertions(+), 502 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d5ef3c0..9e7122e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -154,15 +154,6 @@ version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - [[package]] name = "arbitrary" version = "1.4.1" @@ -221,7 +212,25 @@ dependencies = [ "serde_repr", "tokio", "url", - "zbus", + "zbus 4.4.0", +] + +[[package]] +name = "ashpd" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3d60bee1a1d38c2077030f4788e1b4e31058d2e79a8cfc8f2b440bd44db290" +dependencies = [ + "async-fs", + "async-net", + "enumflags2", + "futures-channel", + "futures-util", + "rand 0.8.5", + "serde", + "serde_repr", + "url", + "zbus 5.9.0", ] [[package]] @@ -230,12 +239,23 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ - "event-listener", + "event-listener 5.4.0", "event-listener-strategy", "futures-core", "pin-project-lite", ] +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + [[package]] name = "async-channel" version = "2.5.0" @@ -273,6 +293,21 @@ dependencies = [ "futures-lite", ] +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + [[package]] name = "async-io" version = "2.4.1" @@ -298,25 +333,36 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener", + "event-listener 5.4.0", "event-listener-strategy", "pin-project-lite", ] +[[package]] +name = "async-net" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" +dependencies = [ + "async-io", + "blocking", + "futures-lite", +] + [[package]] name = "async-process" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" dependencies = [ - "async-channel", + "async-channel 2.5.0", "async-io", "async-lock", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener", + "event-listener 5.4.0", "futures-lite", "rustix 1.0.7", "tracing", @@ -351,6 +397,32 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "async-std" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + [[package]] name = "async-task" version = "4.7.1" @@ -541,7 +613,7 @@ version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ - "async-channel", + "async-channel 2.5.0", "async-task", "futures-io", "futures-lite", @@ -570,12 +642,6 @@ version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" -[[package]] -name = "by_address" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" - [[package]] name = "bytemuck" version = "1.23.1" @@ -867,29 +933,6 @@ dependencies = [ "bindgen", ] -[[package]] -name = "cosmic-text" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" -dependencies = [ - "bitflags 2.9.1", - "fontdb", - "log", - "rangemap", - "rayon", - "rustc-hash 1.1.0", - "rustybuzz", - "self_cell", - "swash 0.1.19", - "sys-locale", - "ttf-parser 0.21.1", - "unicode-bidi", - "unicode-linebreak", - "unicode-script", - "unicode-segmentation", -] - [[package]] name = "cosmic-text" version = "0.14.2" @@ -904,7 +947,7 @@ dependencies = [ "rustybuzz", "self_cell", "smol_str", - "swash 0.2.5", + "swash", "sys-locale", "ttf-parser 0.21.1", "unicode-bidi", @@ -999,7 +1042,7 @@ name = "cryoglyph" version = "0.1.0" source = "git+https://github.com/iced-rs/cryoglyph.git?rev=a456d1c17bbcf33afcca41d9e5e299f9f1193819#a456d1c17bbcf33afcca41d9e5e299f9f1193819" dependencies = [ - "cosmic-text 0.14.2", + "cosmic-text", "etagere", "lru", "rustc-hash 2.1.1", @@ -1040,8 +1083,22 @@ dependencies = [ "objc", "rust-ini", "web-sys", - "winreg", - "zbus", + "winreg 0.10.1", + "zbus 4.4.0", +] + +[[package]] +name = "dark-light" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e1a09f280e29a8b00bc7e81eca5ac87dca0575639c9422a5fa25a07bb884b8" +dependencies = [ + "ashpd 0.10.3", + "async-std", + "objc2", + "objc2-foundation", + "web-sys", + "winreg 0.52.0", ] [[package]] @@ -1306,18 +1363,17 @@ dependencies = [ "anyhow", "bitar", "cp_r", - "dark-light", + "dark-light 1.1.1", "dmg", "espim", "flate2", "fs_extra", "futures", - "iced 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_aw", + "iced", "iced_dialog", "log", "open", - "parking_lot 0.12.1", + "parking_lot", "parse_link_header", "platform-dirs", "progress-streams", @@ -1370,6 +1426,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "event-listener" version = "5.4.0" @@ -1387,7 +1449,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener", + "event-listener 5.4.0", "pin-project-lite", ] @@ -1406,12 +1468,6 @@ dependencies = [ "zune-inflate", ] -[[package]] -name = "fast-srgb8" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" - [[package]] name = "fastrand" version = "2.3.0" @@ -1467,15 +1523,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" -[[package]] -name = "font-types" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3971f9a5ca983419cdc386941ba3b9e1feba01a0ab888adf78739feb2798492" -dependencies = [ - "bytemuck", -] - [[package]] name = "font-types" version = "0.9.0" @@ -1590,7 +1637,6 @@ dependencies = [ "futures-core", "futures-task", "futures-util", - "num_cpus", ] [[package]] @@ -1739,6 +1785,18 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "glow" version = "0.16.0" @@ -1978,42 +2036,17 @@ name = "iced" version = "0.14.0-dev" source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_core", "iced_debug", - "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_renderer 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_widget 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_winit 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_futures", + "iced_renderer", + "iced_runtime", + "iced_widget", + "iced_winit", "image", "thiserror 1.0.69", ] -[[package]] -name = "iced" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" -dependencies = [ - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_renderer 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_widget 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_winit 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "thiserror 1.0.69", -] - -[[package]] -name = "iced_aw" -version = "0.11.0" -source = "git+https://github.com/C-Entropy/iced_aw/?rev=87b8176#87b81766c7a2ae8ead136fddac799f378d35129f" -dependencies = [ - "cfg-if", - "getrandom 0.3.3", - "iced 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_fonts", - "web-time", -] - [[package]] name = "iced_core" version = "0.14.0-dev" @@ -2021,29 +2054,11 @@ source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da dependencies = [ "bitflags 2.9.1", "bytes", - "dark-light", - "glam", - "lilt", - "log", - "num-traits", - "rustc-hash 2.1.1", - "smol_str", - "thiserror 1.0.69", - "web-time", -] - -[[package]] -name = "iced_core" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" -dependencies = [ - "bitflags 2.9.1", - "bytes", + "dark-light 2.0.0", "glam", "lilt", "log", "num-traits", - "palette", "rustc-hash 2.1.1", "smol_str", "thiserror 1.0.69", @@ -2055,8 +2070,8 @@ name = "iced_debug" version = "0.14.0-dev" source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_core", + "iced_futures", "log", ] @@ -2065,17 +2080,8 @@ name = "iced_dialog" version = "0.14.0-dev" source = "git+https://github.com/pml68/iced_dialog?branch=master#d2770a2e277c32e62fb3d79989d224dce332e237" dependencies = [ - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_widget 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", -] - -[[package]] -name = "iced_fonts" -version = "0.2.0" -source = "git+https://github.com/Redhawk18/iced_fonts?rev=f919b05#f919b05015289a72eef2304c80687a3390e44492" -dependencies = [ - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_widget 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_core", + "iced_widget", ] [[package]] @@ -2084,7 +2090,7 @@ version = "0.14.0-dev" source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ "futures", - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_core", "log", "rustc-hash 2.1.1", "tokio", @@ -2092,19 +2098,6 @@ dependencies = [ "wasmtimer", ] -[[package]] -name = "iced_futures" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" -dependencies = [ - "futures", - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "log", - "rustc-hash 2.1.1", - "wasm-bindgen-futures", - "wasm-timer", -] - [[package]] name = "iced_graphics" version = "0.14.0-dev" @@ -2112,10 +2105,10 @@ source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da dependencies = [ "bitflags 2.9.1", "bytemuck", - "cosmic-text 0.14.2", + "cosmic-text", "half", - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_core", + "iced_futures", "image", "kamadak-exif", "log", @@ -2125,31 +2118,13 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "iced_graphics" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" -dependencies = [ - "bitflags 2.9.1", - "bytemuck", - "cosmic-text 0.12.1", - "half", - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "log", - "raw-window-handle", - "rustc-hash 2.1.1", - "thiserror 1.0.69", - "unicode-segmentation", -] - [[package]] name = "iced_program" version = "0.14.0-dev" source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_graphics", + "iced_runtime", ] [[package]] @@ -2157,44 +2132,22 @@ name = "iced_renderer" version = "0.14.0-dev" source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_graphics", "iced_tiny_skia", "iced_wgpu", "log", "thiserror 1.0.69", ] -[[package]] -name = "iced_renderer" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" -dependencies = [ - "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "log", - "thiserror 1.0.69", -] - [[package]] name = "iced_runtime" version = "0.14.0-dev" source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ "bytes", - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_core", "iced_debug", - "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "raw-window-handle", - "thiserror 1.0.69", -] - -[[package]] -name = "iced_runtime" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" -dependencies = [ - "bytes", - "iced_core 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_futures", "raw-window-handle", "thiserror 1.0.69", ] @@ -2205,9 +2158,9 @@ version = "0.14.0-dev" source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ "bytemuck", - "cosmic-text 0.14.2", + "cosmic-text", "iced_debug", - "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_graphics", "kurbo", "log", "rustc-hash 2.1.1", @@ -2227,7 +2180,7 @@ dependencies = [ "glam", "guillotiere", "iced_debug", - "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", + "iced_graphics", "log", "rustc-hash 2.1.1", "thiserror 1.0.69", @@ -2239,22 +2192,8 @@ name = "iced_widget" version = "0.14.0-dev" source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" dependencies = [ - "iced_renderer 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced?branch=master)", - "log", - "num-traits", - "rustc-hash 2.1.1", - "thiserror 1.0.69", - "unicode-segmentation", -] - -[[package]] -name = "iced_widget" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" -dependencies = [ - "iced_renderer 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", + "iced_renderer", + "iced_runtime", "log", "num-traits", "rustc-hash 2.1.1", @@ -2279,24 +2218,6 @@ dependencies = [ "winit", ] -[[package]] -name = "iced_winit" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9#940a079d83f904bef0eb9514fce50cd0109219c9" -dependencies = [ - "iced_futures 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_graphics 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "iced_runtime 0.14.0-dev (git+https://github.com/iced-rs/iced.git?rev=940a079d83f904bef0eb9514fce50cd0109219c9)", - "log", - "rustc-hash 2.1.1", - "thiserror 1.0.69", - "tracing", - "wasm-bindgen-futures", - "web-sys", - "window_clipboard", - "winit", -] - [[package]] name = "icu_collections" version = "2.0.0" @@ -2453,15 +2374,6 @@ dependencies = [ "hashbrown 0.15.4", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - [[package]] name = "interpolate_name" version = "0.2.4" @@ -2627,6 +2539,15 @@ dependencies = [ "smallvec", ] +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -2747,6 +2668,9 @@ name = "log" version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +dependencies = [ + "value-bag", +] [[package]] name = "loop9" @@ -2969,6 +2893,19 @@ dependencies = [ "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", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + [[package]] name = "nom" version = "7.1.3" @@ -3041,16 +2978,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" version = "0.7.4" @@ -3419,47 +3346,12 @@ dependencies = [ "ttf-parser 0.25.1", ] -[[package]] -name = "palette" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" -dependencies = [ - "approx", - "fast-srgb8", - "palette_derive", - "phf", -] - -[[package]] -name = "palette_derive" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" -dependencies = [ - "by_address", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "parking" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - [[package]] name = "parking_lot" version = "0.12.4" @@ -3467,21 +3359,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", - "parking_lot_core 0.9.11", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -3536,48 +3414,6 @@ dependencies = [ "indexmap", ] -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared", - "rand 0.8.5", -] - -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] - [[package]] name = "pin-project" version = "1.1.10" @@ -4068,16 +3904,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "read-fonts" -version = "0.22.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69aacb76b5c29acfb7f90155d39759a29496aebb49395830e928a9703d2eec2f" -dependencies = [ - "bytemuck", - "font-types 0.7.3", -] - [[package]] name = "read-fonts" version = "0.29.3" @@ -4085,16 +3911,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04ca636dac446b5664bd16c069c00a9621806895b8bb02c2dc68542b23b8f25d" dependencies = [ "bytemuck", - "font-types 0.9.0", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", + "font-types", ] [[package]] @@ -4208,7 +4025,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" dependencies = [ - "ashpd", + "ashpd 0.8.1", "block", "dispatch", "js-sys", @@ -4549,22 +4366,6 @@ dependencies = [ "time", ] -[[package]] -name = "siphasher" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" - -[[package]] -name = "skrifa" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" -dependencies = [ - "bytemuck", - "read-fonts 0.22.7", -] - [[package]] name = "skrifa" version = "0.31.3" @@ -4572,7 +4373,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbeb4ca4399663735553a09dd17ce7e49a0a0203f03b706b39628c4d913a8607" dependencies = [ "bytemuck", - "read-fonts 0.29.3", + "read-fonts", ] [[package]] @@ -4744,26 +4545,15 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" -[[package]] -name = "swash" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" -dependencies = [ - "skrifa 0.22.3", - "yazi 0.1.6", - "zeno 0.2.3", -] - [[package]] name = "swash" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f745de914febc7c9ab4388dfaf94bbc87e69f57bb41133a9b0c84d4be49856f3" dependencies = [ - "skrifa 0.31.3", - "yazi 0.2.1", - "zeno 0.3.3", + "skrifa", + "yazi", + "zeno", ] [[package]] @@ -5326,6 +5116,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + [[package]] name = "version" version = "3.0.0" @@ -5462,21 +5258,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasm-timer" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" -dependencies = [ - "futures", - "js-sys", - "parking_lot 0.11.2", - "pin-utils", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "wasmtimer" version = "0.4.2" @@ -5485,7 +5266,7 @@ checksum = "d8d49b5d6c64e8558d9b1b065014426f35c18de636895d24893dbbd329743446" dependencies = [ "futures", "js-sys", - "parking_lot 0.12.4", + "parking_lot", "pin-utils", "slab", "wasm-bindgen", @@ -5657,7 +5438,7 @@ dependencies = [ "js-sys", "log", "naga", - "parking_lot 0.12.4", + "parking_lot", "profiling", "raw-window-handle", "smallvec", @@ -5685,7 +5466,7 @@ dependencies = [ "log", "naga", "once_cell", - "parking_lot 0.12.4", + "parking_lot", "profiling", "raw-window-handle", "rustc-hash 1.1.0", @@ -5726,7 +5507,7 @@ dependencies = [ "objc", "once_cell", "ordered-float", - "parking_lot 0.12.4", + "parking_lot", "profiling", "range-alloc", "raw-window-handle", @@ -6247,6 +6028,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "winres" version = "0.1.12" @@ -6354,12 +6145,6 @@ version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" -[[package]] -name = "yazi" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" - [[package]] name = "yazi" version = "0.2.1" @@ -6407,12 +6192,12 @@ dependencies = [ "async-trait", "blocking", "enumflags2", - "event-listener", + "event-listener 5.4.0", "futures-core", "futures-sink", "futures-util", "hex", - "nix", + "nix 0.29.0", "ordered-stream", "rand 0.8.5", "serde", @@ -6424,9 +6209,42 @@ dependencies = [ "uds_windows", "windows-sys 0.52.0", "xdg-home", - "zbus_macros", - "zbus_names", - "zvariant", + "zbus_macros 4.4.0", + "zbus_names 3.0.0", + "zvariant 4.2.0", +] + +[[package]] +name = "zbus" +version = "5.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb4f9a464286d42851d18a605f7193b8febaf5b0919d71c6399b7b26e5b0aad" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener 5.4.0", + "futures-core", + "futures-lite", + "hex", + "nix 0.30.1", + "ordered-stream", + "serde", + "serde_repr", + "tracing", + "uds_windows", + "windows-sys 0.59.0", + "winnow", + "zbus_macros 5.9.0", + "zbus_names 4.2.0", + "zvariant 5.6.0", ] [[package]] @@ -6439,7 +6257,22 @@ dependencies = [ "proc-macro2", "quote", "syn", - "zvariant_utils", + "zvariant_utils 2.1.0", +] + +[[package]] +name = "zbus_macros" +version = "5.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef9859f68ee0c4ee2e8cde84737c78e3f4c54f946f2a38645d0d4c7a95327659" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zbus_names 4.2.0", + "zvariant 5.6.0", + "zvariant_utils 3.2.0", ] [[package]] @@ -6450,14 +6283,20 @@ checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" dependencies = [ "serde", "static_assertions", - "zvariant", + "zvariant 4.2.0", ] [[package]] -name = "zeno" -version = "0.2.3" +name = "zbus_names" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" +checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +dependencies = [ + "serde", + "static_assertions", + "winnow", + "zvariant 5.6.0", +] [[package]] name = "zeno" @@ -6603,7 +6442,22 @@ dependencies = [ "serde", "static_assertions", "url", - "zvariant_derive", + "zvariant_derive 4.2.0", +] + +[[package]] +name = "zvariant" +version = "5.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f" +dependencies = [ + "endi", + "enumflags2", + "serde", + "url", + "winnow", + "zvariant_derive 5.6.0", + "zvariant_utils 3.2.0", ] [[package]] @@ -6616,7 +6470,20 @@ dependencies = [ "proc-macro2", "quote", "syn", - "zvariant_utils", + "zvariant_utils 2.1.0", +] + +[[package]] +name = "zvariant_derive" +version = "5.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils 3.2.0", ] [[package]] @@ -6629,3 +6496,27 @@ dependencies = [ "quote", "syn", ] + +[[package]] +name = "zvariant_utils" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "static_assertions", + "syn", + "winnow", +] + +[[patch.unused]] +name = "iced_aw" +version = "0.11.0" +source = "git+https://github.com/C-Entropy/iced_aw/?rev=87b8176#87b81766c7a2ae8ead136fddac799f378d35129f" + +[[patch.unused]] +name = "iced_fonts" +version = "0.2.0" +source = "git+https://github.com/Redhawk18/iced_fonts?rev=f919b05#f919b05015289a72eef2304c80687a3390e44492" diff --git a/Cargo.toml b/Cargo.toml index 58c6826..f5e2c02 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,9 +24,9 @@ espim = "0.2" flate2 = "1.0" fs_extra = "1.3.0" futures = "0.3" -iced_aw = { version = "0.11.0", default-features = false, features = [ - "tabs", -] } +#iced_aw = { version = "0.11.0", default-features = false, features = [ +# "tabs", +#] } iced_dialog = "0.14.0-dev" log = { version = "0.4.22", features = ["std"] } open = "5" diff --git a/src/main.rs b/src/main.rs index 2d35b05..cf234e2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,13 +21,13 @@ use crate::instances_frame::InstancesFrame; use crate::music::{MusicCommand, MusicState}; use crate::plugins_frame::PluginMessage; use crate::settings::{Settings, SettingsFrame, SettingsMessage}; -use crate::style::{icon_button, log_container, tab_bar}; +use crate::style::{icon_button, log_container}; use iced::advanced::subscription; use iced::advanced::subscription::{EventStream, Hasher}; -use iced::widget::{text, Button, Column, Container, Row, Scrollable, Space, Text}; +use iced::widget::{column, row, text, Button, Column, Container, Row, Scrollable, Space, Text}; use iced::{alignment, font, Alignment, Element, Font, Length, Subscription, Task, Theme}; -use iced_aw::{TabLabel, Tabs}; -use iced_dialog::dialog; +// use iced_aw::{TabLabel, Tabs}; +use iced_dialog::{button, dialog}; use std::collections::VecDeque; use std::fmt::Debug; use std::sync::Arc; @@ -255,36 +255,67 @@ impl ESLauncher { } fn view(&self) -> Element<'_, Message> { - let tabs = Tabs::new(Message::TabSelected) - .push::>( - Tab::Instances, - TabLabel::Text("Instances".into()), - iced::widget::column([Row::new() - .push(self.instances_frame.view()) - .push(iced::widget::vertical_rule(2)) - .push(self.install_frame.view().map(Message::InstallFrameMessage)) - .spacing(10) - .padding(iced::Padding { - top: 0.0, - right: 15.0, - bottom: 0.0, - left: 15.0, - }) - .into()]) - .into(), - ) - .push( - Tab::Plugins, - TabLabel::Text("Plugins".into()), - iced::widget::column([self.plugins_frame.view().into()]), - ) - .push( - Tab::Settings, - TabLabel::Text("Settings".into()), - iced::widget::column([self.settings_frame.view().into()]), - ) - .set_active_tab(&self.active_tab) - .tab_bar_style(tab_bar); + // let tabs = Tabs::new(Message::TabSelected) + // .push::>( + // Tab::Instances, + // TabLabel::Text("Instances".into()), + // iced::widget::column([ + // Row::new() + // .push(self.instances_frame.view()) + // .push(iced::widget::vertical_rule(2)) + // .push(self.install_frame.view().map(Message::InstallFrameMessage)) + // .spacing(10) + // .padding(iced::Padding { + // top: 0.0, + // right: 15.0, + // bottom: 0.0, + // left: 15.0, + // }) + // .into(), + // ]) + // .into(), + // ) + // .push( + // Tab::Plugins, + // TabLabel::Text("Plugins".into()), + // iced::widget::column([ + // self.plugins_frame.view().into(), + // ]), + // ) + // .push( + // Tab::Settings, + // TabLabel::Text("Settings".into()), + // iced::widget::column([ + // self.settings.view().into(), + // ]), + // ) + // .set_active_tab(&self.active_tab) + // .tab_bar_style(tab_bar); + let show_tab = match self.active_tab { + Tab::Instances => iced::widget::column([Row::new() + .push(self.instances_frame.view()) + .push(iced::widget::vertical_rule(2)) + .push(self.install_frame.view().map(Message::InstallFrameMessage)) + .spacing(10) + .padding(iced::Padding { + top: 0.0, + right: 15.0, + bottom: 0.0, + left: 15.0, + }) + .into()]), + Tab::Plugins => iced::widget::column([self.plugins_frame.view().into()]), + Tab::Settings => iced::widget::column([self.settings_frame.view().into()]), + }; + let tab_buttons = row![ + button("Instances", Message::TabSelected(Tab::Instances)), + button("Plugins", Message::TabSelected(Tab::Plugins)), + button("Settings", Message::TabSelected(Tab::Settings)) + ] + .width(Length::Fill); + let tabs = column![tab_buttons, show_tab]; + // all of the above is a workaround, since iced_aw doesn't track the iced development branch + // TODO: return to TabBar when possible; consider if we need iced_aw at all let logbox = self.log_buffer.iter().fold( Column::new() diff --git a/src/style.rs b/src/style.rs index 082da02..2fdbe02 100644 --- a/src/style.rs +++ b/src/style.rs @@ -1,7 +1,7 @@ use iced::border::Radius; use iced::widget::{button, container, Text}; use iced::{alignment, color, Background, Border, Color, Font, Length, Shadow, Theme, Vector}; -use iced_aw::tab_bar; +// use iced_aw::tab_bar; fn icon(unicode: char) -> Text<'static> { Text::new(unicode.to_string()) @@ -53,39 +53,39 @@ pub fn text_button(_theme: &Theme, status: button::Status) -> button::Style { ButtonStyle::Text.style(&ButtonStyle::Text, status) } -pub fn tab_bar(theme: &Theme, status: tab_bar::Status) -> tab_bar::Style { - use iced_aw::tab_bar::*; - let background = theme.palette().background; - let primary = theme.extended_palette().primary; - let secondary = theme.extended_palette().secondary; - - let default = Style { - tab_label_background: background.into(), - tab_label_border_color: secondary.weak.color, - text_color: theme.palette().text, - ..Default::default() - }; - - match status { - Status::Active => Style { - tab_label_background: primary.base.color.into(), - text_color: primary.base.text, - ..default - }, - Status::Hovered => Style { - tab_label_background: primary.weak.color.into(), - text_color: primary.weak.text, - ..default - }, - Status::Disabled => Style { ..default }, - _ => Style { - // We don't use these - make it jarring, so if we ever do, it's noticeable - tab_label_background: color!(0xff0000).into(), - text_color: color!(0x00ff00), - ..default - }, - } -} +// pub fn tab_bar(theme: &Theme, status: tab_bar::Status) -> tab_bar::Style { +// use iced_aw::tab_bar::*; +// let background = theme.palette().background; +// let primary = theme.extended_palette().primary; +// let secondary = theme.extended_palette().secondary; +// +// let default = Style { +// tab_label_background: background.into(), +// tab_label_border_color: secondary.weak.color, +// text_color: theme.palette().text, +// ..Default::default() +// }; +// +// match status { +// Status::Active => Style { +// tab_label_background: primary.base.color.into(), +// text_color: primary.base.text, +// ..default +// }, +// Status::Hovered => Style { +// tab_label_background: primary.weak.color.into(), +// text_color: primary.weak.text, +// ..default +// }, +// Status::Disabled => Style { ..default }, +// _ => Style { +// // We don't use these - make it jarring, so if we ever do, it's noticeable +// tab_label_background: color!(0xff0000).into(), +// text_color: color!(0x00ff00), +// ..default +// }, +// } +// } pub fn log_container(log: &str) -> container::StyleFn { use container::Catalog; From 535c0d6cb6fe130b33a7a00d2113031c55474cf7 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Fri, 5 Sep 2025 15:57:47 +0200 Subject: [PATCH 40/42] migrate installdir move modal to sipper (no more race conditions) --- Cargo.lock | 12 +++++++++ Cargo.toml | 2 ++ src/settings.rs | 72 +++++++++++++++++++++++++++++++------------------ 3 files changed, 60 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e7122e..edea9ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1384,6 +1384,7 @@ dependencies = [ "serde-xml-rs", "serde_json", "simplelog", + "sipper", "tar", "time", "tokio", @@ -2149,6 +2150,7 @@ dependencies = [ "iced_debug", "iced_futures", "raw-window-handle", + "sipper", "thiserror 1.0.69", ] @@ -4366,6 +4368,16 @@ dependencies = [ "time", ] +[[package]] +name = "sipper" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bccb4192828b3d9a08e0b5a73f17795080dfb278b50190216e3ae2132cf4f95" +dependencies = [ + "futures", + "pin-project-lite", +] + [[package]] name = "skrifa" version = "0.31.3" diff --git a/Cargo.toml b/Cargo.toml index f5e2c02..e970a01 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,6 +40,7 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde-xml-rs = "0.6" simplelog = "0.12.2" +sipper = "0.1" tar = "0.4" time = "0.3" tokio = { version = "1", default-features = false, features = ["fs"] } @@ -61,6 +62,7 @@ features = [ "auto-detect-theme", "advanced", "image", + "sipper", "tokio", "wgpu", # iced will use wgpu by default and fall back to tiny-skia "tiny-skia", diff --git a/src/settings.rs b/src/settings.rs index 72fe068..802ab43 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -3,7 +3,9 @@ use crate::music::MusicState; use crate::{get_data_dir, send_message, style, DialogSpec, Message, SharedSettings}; use anyhow::{Context, Result}; use cp_r::CopyStats; +use futures::join; use iced::advanced::graphics::core::Element; +use iced::task::{sipper, Sipper}; use iced::widget::{combo_box, container, horizontal_space, row, text, Text}; use iced::{ widget::{button, Column, Container, Row}, @@ -11,6 +13,7 @@ use iced::{ }; use iced::{Alignment, Padding, Renderer, Task}; use serde::{Deserialize, Serialize}; +use sipper::Sender; use std::fmt::{Debug, Display, Formatter}; use std::iter::Iterator; use std::sync::LazyLock; @@ -259,15 +262,8 @@ impl SettingsFrame { return Task::done(Message::ReloadInstances()); } SettingsMessage::MoveInstallPath(new) => { - let move_install_dir = - move_install_dir(self.settings.read().install_dir.clone(), new.clone()); - let message_when_done = move |_| { - Message::DialogClosed(Box::new(Message::SettingsMessage( - SettingsMessage::SetInstallPath(new.clone()), - ))) - }; - return Task::done(Message::OpenDialog(move_in_progress_dialog_spec(None))) - .chain(Task::perform(move_install_dir, message_when_done)); + let sipper = move_install_dir(self.settings.clone(), new.clone()); + return Task::sip(sipper, Message::OpenDialog, Message::OpenDialog); } SettingsMessage::ThemeSelected(theme) => { let mut guard = self.settings.write(); @@ -284,13 +280,28 @@ impl SettingsFrame { } } -async fn move_install_dir(source: PathBuf, dest: PathBuf) { - if let Err(e) = try_move_install_dir(source, dest).await { - error!("Error while moving install dir: {e:#?}") - } +fn move_install_dir( + settings: SharedSettings, + dest: PathBuf, +) -> impl Sipper { + sipper(move |sender| async move { + let res = try_move_install_dir(sender, settings, dest).await; + res.unwrap_or_else(|e| { + error!("Error while moving install dir: {e:#?}"); + DialogSpec { + title: Some("Error".into()), + content: format!("An error occured during the operation:\n{e:#?}"), + buttons: vec![("Close".into(), Message::Dummy(()))], + } + }) + }) } -async fn try_move_install_dir(source: PathBuf, dest: PathBuf) -> Result<()> { +async fn try_move_install_dir( + mut sender: Sender, + settings: SharedSettings, + dest: PathBuf, +) -> Result { // Users can't choose empty directories, but the reset button can if tokio::fs::try_exists(&dest).await? { tokio::fs::remove_dir_all(&dest) @@ -298,20 +309,31 @@ async fn try_move_install_dir(source: PathBuf, dest: PathBuf) -> Result<()> { .with_context(|| "Failed to remove destination directory")?; } + let source = settings.read().install_dir.clone(); let source_clone = source.clone(); let dest_clone = dest.clone(); - let stats = tokio::task::spawn_blocking(move || { + + let (tokio_tx, mut tokio_rx) = tokio::sync::mpsc::channel(1024); + let cp_r_fut = tokio::task::spawn_blocking(move || { cp_r::CopyOptions::new() .create_destination(true) .after_entry_copied(|_, _, s| { - send_message(Message::OpenDialog(move_in_progress_dialog_spec(Some(s)))); + tokio_tx + .blocking_send(move_in_progress_dialog_spec(Some(s))) + .expect("cp_r thread tried to send updates to closed channel"); Ok(()) }) .copy_tree(source_clone, dest_clone) - }) - .await - .with_context(|| "Copy task failed")? - .with_context(|| "Failed to copy files")?; + }); + let read_updates_fut = async { + while let Some(s) = tokio_rx.recv().await { + sender.send(s).await + } + }; + let (stats_result, _) = join!(cp_r_fut, read_updates_fut); + let stats = stats_result + .with_context(|| "Copy task failed")? + .with_context(|| "Failed to copy files")?; info!("Patching instance paths"); let mut instances = load_instances(&dest)?; @@ -327,18 +349,16 @@ async fn try_move_install_dir(source: PathBuf, dest: PathBuf) -> Result<()> { .await .with_context(|| "Failed to remove former install dir")?; + settings.write().install_dir = dest; info!("Install dir moved successfully"); - send_message(Message::OpenDialog(DialogSpec { + Ok(DialogSpec { title: None, content: format!( "Success!\n Moved {} files, {} folders", stats.files, stats.dirs ), - buttons: vec![], - })); - tokio::time::sleep(Duration::from_secs(2)).await; - - Ok(()) + buttons: vec![("Close".into(), Message::ReloadInstances())], + }) } fn move_dir_dialog_spec(new_dir: PathBuf) -> DialogSpec { From 17beb8a5858e44b0e861848cf7a1ce153b238d10 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Fri, 5 Sep 2025 15:58:19 +0200 Subject: [PATCH 41/42] Proceed with moving the install dir even when executable paths are broken --- src/settings.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/settings.rs b/src/settings.rs index 802ab43..3075284 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -339,7 +339,11 @@ async fn try_move_install_dir( let mut instances = load_instances(&dest)?; for i in &mut instances { let name = i.path.file_name().unwrap(); - i.executable = dest.join(i.executable.strip_prefix(&i.path)?); + i.executable = i.executable.strip_prefix(&i.path) + .map(|exe| dest.join(exe)) + .inspect_err(|e| { + warn!("Failed to patch instance paths for instance '{}', you might have to re-install it", name.to_string_lossy()) + }).unwrap_or_else(|_| i.executable.clone()); i.path = dest.join(name); } save_instances(instances, &dest)?; From ca732dda1f85f9e322398275b9610ac71e4031a2 Mon Sep 17 00:00:00 2001 From: MCOfficer Date: Thu, 18 Dec 2025 17:59:35 +0100 Subject: [PATCH 42/42] update iced & friends to 0.14 --- Cargo.lock | 1144 +++++++++++----------------------------- Cargo.toml | 23 +- src/instance.rs | 6 +- src/instances_frame.rs | 2 +- src/main.rs | 12 +- src/plugins_frame.rs | 8 +- src/settings.rs | 19 +- 7 files changed, 330 insertions(+), 884 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index edea9ee..fd6d442 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,22 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "ab_glyph" -version = "0.2.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0f4f6fbdc5ee39f2ede9f5f3ec79477271a6d6a2baff22310d51736bda6cea" -dependencies = [ - "ab_glyph_rasterizer", - "owned_ttf_parser", -] - -[[package]] -name = "ab_glyph_rasterizer" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2187590a23ab1e3df8681afdf0987c48504d80291f002fcdb651f0ef5e25169" - [[package]] name = "addr2line" version = "0.24.2" @@ -44,19 +28,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "getrandom 0.3.3", - "once_cell", - "version_check", - "zerocopy", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -183,12 +154,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "as-raw-xcb-connection" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" - [[package]] name = "ash" version = "0.38.0+1.3.281" @@ -212,25 +177,7 @@ dependencies = [ "serde_repr", "tokio", "url", - "zbus 4.4.0", -] - -[[package]] -name = "ashpd" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3d60bee1a1d38c2077030f4788e1b4e31058d2e79a8cfc8f2b440bd44db290" -dependencies = [ - "async-fs", - "async-net", - "enumflags2", - "futures-channel", - "futures-util", - "rand 0.8.5", - "serde", - "serde_repr", - "url", - "zbus 5.9.0", + "zbus", ] [[package]] @@ -239,23 +186,12 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ - "event-listener 5.4.0", + "event-listener", "event-listener-strategy", "futures-core", "pin-project-lite", ] -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener 2.5.3", - "futures-core", -] - [[package]] name = "async-channel" version = "2.5.0" @@ -293,21 +229,6 @@ dependencies = [ "futures-lite", ] -[[package]] -name = "async-global-executor" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" -dependencies = [ - "async-channel 2.5.0", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", -] - [[package]] name = "async-io" version = "2.4.1" @@ -333,36 +254,25 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.4.0", + "event-listener", "event-listener-strategy", "pin-project-lite", ] -[[package]] -name = "async-net" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" -dependencies = [ - "async-io", - "blocking", - "futures-lite", -] - [[package]] name = "async-process" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" dependencies = [ - "async-channel 2.5.0", + "async-channel", "async-io", "async-lock", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener 5.4.0", + "event-listener", "futures-lite", "rustix 1.0.7", "tracing", @@ -397,32 +307,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "async-std" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" -dependencies = [ - "async-channel 1.9.0", - "async-global-executor", - "async-io", - "async-lock", - "crossbeam-utils", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", -] - [[package]] name = "async-task" version = "4.7.1" @@ -564,9 +448,6 @@ name = "bitflags" version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" -dependencies = [ - "serde", -] [[package]] name = "bitstream-io" @@ -613,7 +494,7 @@ version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ - "async-channel 2.5.0", + "async-channel", "async-task", "futures-io", "futures-lite", @@ -694,18 +575,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "calloop-wayland-source" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" -dependencies = [ - "calloop", - "rustix 0.38.44", - "wayland-backend", - "wayland-client", -] - [[package]] name = "cc" version = "1.2.29" @@ -785,31 +654,13 @@ dependencies = [ "objc2-foundation", ] -[[package]] -name = "clipboard_wayland" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003f886bc4e2987729d10c1db3424e7f80809f3fc22dbc16c685738887cb37b8" -dependencies = [ - "smithay-clipboard", -] - -[[package]] -name = "clipboard_x11" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4274ea815e013e0f9f04a2633423e14194e408a0576c943ce3d14ca56c50031c" -dependencies = [ - "thiserror 1.0.69", - "x11rb", -] - [[package]] name = "codespan-reporting" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ + "serde", "termcolor", "unicode-width", ] @@ -913,6 +764,15 @@ dependencies = [ "libc", ] +[[package]] +name = "core_maths" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" +dependencies = [ + "libm", +] + [[package]] name = "coreaudio-rs" version = "0.11.3" @@ -935,21 +795,22 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" +checksum = "173852283a9a57a3cbe365d86e74dc428a09c50421477d5ad6fe9d9509e37737" dependencies = [ "bitflags 2.9.1", "fontdb", + "harfrust", + "linebender_resource_handle", "log", "rangemap", "rustc-hash 1.1.0", - "rustybuzz", "self_cell", + "skrifa 0.37.0", "smol_str", "swash", "sys-locale", - "ttf-parser 0.21.1", "unicode-bidi", "unicode-linebreak", "unicode-script", @@ -1040,7 +901,8 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "cryoglyph" version = "0.1.0" -source = "git+https://github.com/iced-rs/cryoglyph.git?rev=a456d1c17bbcf33afcca41d9e5e299f9f1193819#a456d1c17bbcf33afcca41d9e5e299f9f1193819" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc795bdbccdbd461736fb163930a009da6597b226d6f6fce33e7a8eb6ec519" dependencies = [ "cosmic-text", "etagere", @@ -1059,12 +921,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "ctor-lite" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f791803201ab277ace03903de1594460708d2d54df6053f2d9e82f592b19e3b" - [[package]] name = "cursor-icon" version = "1.2.0" @@ -1083,22 +939,8 @@ dependencies = [ "objc", "rust-ini", "web-sys", - "winreg 0.10.1", - "zbus 4.4.0", -] - -[[package]] -name = "dark-light" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e1a09f280e29a8b00bc7e81eca5ac87dca0575639c9422a5fa25a07bb884b8" -dependencies = [ - "ashpd 0.10.3", - "async-std", - "objc2", - "objc2-foundation", - "web-sys", - "winreg 0.52.0", + "winreg", + "zbus", ] [[package]] @@ -1231,55 +1073,11 @@ dependencies = [ "litrs", ] -[[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - [[package]] name = "dpi" -version = "0.1.1" -source = "git+https://github.com/iced-rs/winit.git?rev=11414b6aa45699f038114e61b4ddf5102b2d3b4b#11414b6aa45699f038114e61b4ddf5102b2d3b4b" - -[[package]] -name = "drm" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98888c4bbd601524c11a7ed63f814b8825f420514f78e96f752c437ae9cbb5d1" -dependencies = [ - "bitflags 2.9.1", - "bytemuck", - "drm-ffi", - "drm-fourcc", - "rustix 0.38.44", -] - -[[package]] -name = "drm-ffi" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97c98727e48b7ccb4f4aea8cfe881e5b07f702d17b7875991881b41af7278d53" -dependencies = [ - "drm-sys", - "rustix 0.38.44", -] - -[[package]] -name = "drm-fourcc" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" - -[[package]] -name = "drm-sys" -version = "0.7.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd39dde40b6e196c2e8763f23d119ddb1a8714534bf7d77fa97a65b0feda3986" -dependencies = [ - "libc", - "linux-raw-sys 0.6.5", -] +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "either" @@ -1363,13 +1161,14 @@ dependencies = [ "anyhow", "bitar", "cp_r", - "dark-light 1.1.1", + "dark-light", "dmg", "espim", "flate2", "fs_extra", "futures", "iced", + "iced_aw", "iced_dialog", "log", "open", @@ -1427,12 +1226,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "event-listener" version = "5.4.0" @@ -1450,7 +1243,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", "pin-project-lite", ] @@ -1524,6 +1317,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "font-types" version = "0.9.0" @@ -1533,6 +1332,15 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "font-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" +dependencies = [ + "bytemuck", +] + [[package]] name = "fontconfig-parser" version = "0.5.8" @@ -1544,16 +1352,16 @@ dependencies = [ [[package]] name = "fontdb" -version = "0.16.2" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" +checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" dependencies = [ "fontconfig-parser", "log", "memmap2", "slotmap", "tinyvec", - "ttf-parser 0.20.0", + "ttf-parser", ] [[package]] @@ -1710,16 +1518,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "gethostname" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" -dependencies = [ - "libc", - "windows-targets 0.48.5", -] - [[package]] name = "getrandom" version = "0.2.16" @@ -1786,18 +1584,6 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" -[[package]] -name = "gloo-timers" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - [[package]] name = "glow" version = "0.16.0" @@ -1888,6 +1674,20 @@ checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", + "num-traits", +] + +[[package]] +name = "harfrust" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c020db12c71d8a12a3fe7607873cade3a01a6287e29d540c8723276221b9d8" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "core_maths", + "read-fonts 0.35.0", + "smallvec", ] [[package]] @@ -1896,7 +1696,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.8", + "ahash", ] [[package]] @@ -1905,7 +1705,16 @@ version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ - "foldhash", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "foldhash 0.2.0", ] [[package]] @@ -2034,8 +1843,9 @@ dependencies = [ [[package]] name = "iced" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000e01026c93ba643f8357a3db3ada0e6555265a377f6f9291c472f6dd701fb3" dependencies = [ "iced_core", "iced_debug", @@ -2045,31 +1855,45 @@ dependencies = [ "iced_widget", "iced_winit", "image", - "thiserror 1.0.69", + "thiserror 2.0.12", +] + +[[package]] +name = "iced_aw" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cc84cc77dcb1c384c60792de025fb4a72e23c3d8c65c4a34691684875fc5403" +dependencies = [ + "cfg-if", + "iced_core", + "iced_fonts", + "iced_widget", + "web-time", ] [[package]] name = "iced_core" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ab1937d699403e7e69252ae743a902bcee9f4ab2052cc4c9a46fcf34729d85" dependencies = [ "bitflags 2.9.1", "bytes", - "dark-light 2.0.0", "glam", "lilt", "log", "num-traits", "rustc-hash 2.1.1", "smol_str", - "thiserror 1.0.69", + "thiserror 2.0.12", "web-time", ] [[package]] name = "iced_debug" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25035ab0215a620e53f4103e36fc4e59a1fb2817e4bfc38a30ad27b4202ea0be" dependencies = [ "iced_core", "iced_futures", @@ -2078,31 +1902,57 @@ dependencies = [ [[package]] name = "iced_dialog" -version = "0.14.0-dev" -source = "git+https://github.com/pml68/iced_dialog?branch=master#d2770a2e277c32e62fb3d79989d224dce332e237" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac1ce8766cca5304019c4af79352c3fadc5b8ed37b8b614657c33f2146acc35" dependencies = [ "iced_core", "iced_widget", ] [[package]] -name = "iced_futures" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +name = "iced_fonts" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "214cff7c8499e328774216690e58e315a1a5f8f6fdd1035aed6298e62ffc4c1d" dependencies = [ - "futures", "iced_core", - "log", - "rustc-hash 2.1.1", - "tokio", - "wasm-bindgen-futures", - "wasmtimer", + "iced_fonts_macros", + "iced_widget", ] [[package]] -name = "iced_graphics" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +name = "iced_fonts_macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef5125e110cb19cd1910a28298661c98c5d9ab02eef43594968352940e8752e" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "ttf-parser", +] + +[[package]] +name = "iced_futures" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c0c85ccad42dfbec7293c36c018af0ea0dbcc52d137a4a9a0b0f6822a3fdf0a" +dependencies = [ + "futures", + "iced_core", + "log", + "rustc-hash 2.1.1", + "tokio", + "wasm-bindgen-futures", + "wasmtimer", +] + +[[package]] +name = "iced_graphics" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234ca1c2cec4155055f68fa5fad1b5242c496ac8238d80a259bca382fb44a102" dependencies = [ "bitflags 2.9.1", "bytemuck", @@ -2115,14 +1965,15 @@ dependencies = [ "log", "raw-window-handle", "rustc-hash 2.1.1", - "thiserror 1.0.69", + "thiserror 2.0.12", "unicode-segmentation", ] [[package]] name = "iced_program" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dfafec2947cda688d8eb00dac337ba11aa60f9ef6335aed343e189d26e4a673" dependencies = [ "iced_graphics", "iced_runtime", @@ -2130,34 +1981,36 @@ dependencies = [ [[package]] name = "iced_renderer" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250cc0802408e8c077986ec56c7d07c65f423ee658a4b9fd795a1f2aae5dac05" dependencies = [ "iced_graphics", "iced_tiny_skia", "iced_wgpu", "log", - "thiserror 1.0.69", + "thiserror 2.0.12", ] [[package]] name = "iced_runtime" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1889b819ce4c06674183242e336c8d49465665441396914dc07cc86f44fa8d4" dependencies = [ "bytes", "iced_core", - "iced_debug", "iced_futures", "raw-window-handle", "sipper", - "thiserror 1.0.69", + "thiserror 2.0.12", ] [[package]] name = "iced_tiny_skia" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe0acf8b75a3bc914aff5f2329fdffc1b36eeaea29dda0e4bd232f1c62e9cc3d" dependencies = [ "bytemuck", "cosmic-text", @@ -2172,8 +2025,9 @@ dependencies = [ [[package]] name = "iced_wgpu" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff144a999b0ca0f8a10257934500060240825c42e950ec0ebee9c8ae30561c13" dependencies = [ "bitflags 2.9.1", "bytemuck", @@ -2185,34 +2039,35 @@ dependencies = [ "iced_graphics", "log", "rustc-hash 2.1.1", - "thiserror 1.0.69", + "thiserror 2.0.12", "wgpu", ] [[package]] name = "iced_widget" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1596afa0d3109c2618e8bc12bae6c11d3064df8f95c42dfce570397dbe957ab" dependencies = [ "iced_renderer", - "iced_runtime", "log", "num-traits", "rustc-hash 2.1.1", - "thiserror 1.0.69", + "thiserror 2.0.12", "unicode-segmentation", ] [[package]] name = "iced_winit" -version = "0.14.0-dev" -source = "git+https://github.com/iced-rs/iced?branch=master#283d0e74a8050ea625da25e0b9180b65f11d1843" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7dbedc47562d1de3b9707d939f678b88c382004b7ab5a18f7a7dd723162d75" dependencies = [ "iced_debug", "iced_program", "log", "rustc-hash 2.1.1", - "thiserror 1.0.69", + "thiserror 2.0.12", "tracing", "wasm-bindgen-futures", "web-sys", @@ -2507,9 +2362,9 @@ dependencies = [ [[package]] name = "kamadak-exif" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" +checksum = "1130d80c7374efad55a117d715a3af9368f0fa7a2c54573afc15a188cd984837" dependencies = [ "mutate_once", ] @@ -2541,15 +2396,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -2626,16 +2472,16 @@ dependencies = [ ] [[package]] -name = "linux-raw-sys" -version = "0.4.15" +name = "linebender_resource_handle" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4" [[package]] name = "linux-raw-sys" -version = "0.6.5" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" @@ -2670,9 +2516,6 @@ name = "log" version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" -dependencies = [ - "value-bag", -] [[package]] name = "loop9" @@ -2685,9 +2528,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.5" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f" [[package]] name = "lru-slab" @@ -2749,13 +2592,13 @@ dependencies = [ [[package]] name = "metal" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ "bitflags 2.9.1", "block", - "core-graphics-types 0.1.3", + "core-graphics-types 0.2.0", "foreign-types", "log", "objc", @@ -2803,24 +2646,28 @@ checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" [[package]] name = "naga" -version = "24.0.0" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", "bitflags 2.9.1", + "cfg-if", "cfg_aliases", "codespan-reporting", + "half", + "hashbrown 0.16.1", "hexf-parse", "indexmap", + "libm", "log", + "num-traits", + "once_cell", "rustc-hash 1.1.0", "spirv", - "strum", - "termcolor", "thiserror 2.0.12", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -2895,19 +2742,6 @@ dependencies = [ "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", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset", -] - [[package]] name = "nom" version = "7.1.3" @@ -2978,6 +2812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -3339,15 +3174,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "owned_ttf_parser" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" -dependencies = [ - "ttf-parser 0.25.1", -] - [[package]] name = "parking" version = "2.2.1" @@ -3482,7 +3308,7 @@ checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1" dependencies = [ "base64", "indexmap", - "quick-xml 0.38.0", + "quick-xml", "time", ] @@ -3520,6 +3346,21 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "potential_utf" version = "0.1.2" @@ -3671,15 +3512,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" -[[package]] -name = "quick-xml" -version = "0.37.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" -dependencies = [ - "memchr", -] - [[package]] name = "quick-xml" version = "0.38.0" @@ -3913,7 +3745,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04ca636dac446b5664bd16c069c00a9621806895b8bb02c2dc68542b23b8f25d" dependencies = [ "bytemuck", - "font-types", + "font-types 0.9.0", +] + +[[package]] +name = "read-fonts" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" +dependencies = [ + "bytemuck", + "core_maths", + "font-types 0.10.1", ] [[package]] @@ -4027,7 +3870,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" dependencies = [ - "ashpd 0.8.1", + "ashpd", "block", "dispatch", "js-sys", @@ -4177,23 +4020,6 @@ version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" -[[package]] -name = "rustybuzz" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" -dependencies = [ - "bitflags 2.9.1", - "bytemuck", - "libm", - "smallvec", - "ttf-parser 0.21.1", - "unicode-bidi-mirroring", - "unicode-ccc", - "unicode-properties", - "unicode-script", -] - [[package]] name = "ryu" version = "1.0.20" @@ -4209,31 +4035,12 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sctk-adwaita" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" -dependencies = [ - "ab_glyph", - "log", - "memmap2", - "smithay-client-toolkit", - "tiny-skia", -] - [[package]] name = "self_cell" version = "1.2.0" @@ -4385,7 +4192,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbeb4ca4399663735553a09dd17ce7e49a0a0203f03b706b39628c4d913a8607" dependencies = [ "bytemuck", - "read-fonts", + "read-fonts 0.29.3", +] + +[[package]] +name = "skrifa" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" +dependencies = [ + "bytemuck", + "read-fonts 0.35.0", ] [[package]] @@ -4409,42 +4226,6 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" -[[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", - "calloop-wayland-source", - "cursor-icon", - "libc", - "log", - "memmap2", - "rustix 0.38.44", - "thiserror 1.0.69", - "wayland-backend", - "wayland-client", - "wayland-csd-frame", - "wayland-cursor", - "wayland-protocols", - "wayland-protocols-wlr", - "wayland-scanner", - "xkeysym", -] - -[[package]] -name = "smithay-clipboard" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" -dependencies = [ - "libc", - "smithay-client-toolkit", - "wayland-backend", -] - [[package]] name = "smol_str" version = "0.2.2" @@ -4470,30 +4251,20 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" dependencies = [ - "as-raw-xcb-connection", "bytemuck", "cfg_aliases", "core-graphics 0.24.0", - "drm", - "fastrand", "foreign-types", "js-sys", "log", - "memmap2", "objc2", "objc2-foundation", "objc2-quartz-core", "raw-window-handle", "redox_syscall 0.5.13", - "rustix 0.38.44", - "tiny-xlib", "wasm-bindgen", - "wayland-backend", - "wayland-client", - "wayland-sys", "web-sys", "windows-sys 0.59.0", - "x11rb", ] [[package]] @@ -4523,28 +4294,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn", -] - [[package]] name = "subtle" version = "2.6.1" @@ -4563,7 +4312,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f745de914febc7c9ab4388dfaf94bbc87e69f57bb41133a9b0c84d4be49856f3" dependencies = [ - "skrifa", + "skrifa 0.31.3", "yazi", "zeno", ] @@ -4755,7 +4504,6 @@ dependencies = [ "bytemuck", "cfg-if", "log", - "png", "tiny-skia-path", ] @@ -4770,19 +4518,6 @@ dependencies = [ "strict-num", ] -[[package]] -name = "tiny-xlib" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0324504befd01cab6e0c994f34b2ffa257849ee019d3fb3b64fb2c858887d89e" -dependencies = [ - "as-raw-xcb-connection", - "ctor-lite", - "libloading", - "pkg-config", - "tracing", -] - [[package]] name = "tinystr" version = "0.8.1" @@ -4975,23 +4710,14 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "ttf-parser" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" - -[[package]] -name = "ttf-parser" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" - [[package]] name = "ttf-parser" version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" +dependencies = [ + "core_maths", +] [[package]] name = "typenum" @@ -5016,18 +4742,6 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" -[[package]] -name = "unicode-bidi-mirroring" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" - -[[package]] -name = "unicode-ccc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" - [[package]] name = "unicode-ident" version = "1.0.18" @@ -5040,12 +4754,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" -[[package]] -name = "unicode-properties" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" - [[package]] name = "unicode-script" version = "0.5.7" @@ -5064,12 +4772,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "untrusted" version = "0.9.0" @@ -5128,12 +4830,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "value-bag" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" - [[package]] name = "version" version = "3.0.0" @@ -5284,115 +4980,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "wayland-backend" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" -dependencies = [ - "cc", - "downcast-rs", - "rustix 0.38.44", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" -dependencies = [ - "bitflags 2.9.1", - "rustix 0.38.44", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-csd-frame" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" -dependencies = [ - "bitflags 2.9.1", - "cursor-icon", - "wayland-backend", -] - -[[package]] -name = "wayland-cursor" -version = "0.31.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65317158dec28d00416cb16705934070aef4f8393353d41126c54264ae0f182" -dependencies = [ - "rustix 0.38.44", - "wayland-client", - "xcursor", -] - -[[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", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-plasma" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd38cdad69b56ace413c6bcc1fbf5acc5e2ef4af9d5f8f1f9570c0c83eae175" -dependencies = [ - "bitflags 2.9.1", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "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", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" -dependencies = [ - "proc-macro2", - "quick-xml 0.37.5", - "quote", -] - -[[package]] -name = "wayland-sys" -version = "0.31.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" -dependencies = [ - "dlib", - "log", - "once_cell", - "pkg-config", -] - [[package]] name = "web-sys" version = "0.3.77" @@ -5439,18 +5026,21 @@ checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" [[package]] name = "wgpu" -version = "24.0.5" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b0b3436f0729f6cdf2e6e9201f3d39dc95813fad61d826c1ed07918b4539353" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", "bitflags 2.9.1", + "cfg-if", "cfg_aliases", "document-features", + "hashbrown 0.16.1", "js-sys", "log", "naga", "parking_lot", + "portable-atomic", "profiling", "raw-window-handle", "smallvec", @@ -5465,34 +5055,68 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "24.0.5" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0aa306497a238d169b9dc70659105b4a096859a34894544ca81719242e1499" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" dependencies = [ "arrayvec", + "bit-set", "bit-vec", "bitflags 2.9.1", + "bytemuck", "cfg_aliases", "document-features", + "hashbrown 0.16.1", "indexmap", "log", "naga", "once_cell", "parking_lot", + "portable-atomic", "profiling", "raw-window-handle", "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.12", + "wgpu-core-deps-apple", + "wgpu-core-deps-emscripten", + "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-types", ] +[[package]] +name = "wgpu-core-deps-apple" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" +dependencies = [ + "wgpu-hal", +] + [[package]] name = "wgpu-hal" -version = "24.0.4" +version = "27.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ "android_system_properties", "arrayvec", @@ -5501,13 +5125,15 @@ dependencies = [ "bitflags 2.9.1", "block", "bytemuck", + "cfg-if", "cfg_aliases", - "core-graphics-types 0.1.3", + "core-graphics-types 0.2.0", "glow", "glutin_wgl_sys", "gpu-alloc", "gpu-allocator", "gpu-descriptor", + "hashbrown 0.16.1", "js-sys", "khronos-egl", "libc", @@ -5515,16 +5141,17 @@ dependencies = [ "log", "metal", "naga", - "ndk-sys 0.5.0+25.2.9519653", + "ndk-sys 0.6.0+11769913", "objc", "once_cell", "ordered-float", "parking_lot", + "portable-atomic", + "portable-atomic-util", "profiling", "range-alloc", "raw-window-handle", "renderdoc-sys", - "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.12", "wasm-bindgen", @@ -5536,13 +5163,15 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "24.0.0" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ "bitflags 2.9.1", + "bytemuck", "js-sys", "log", + "thiserror 2.0.12", "web-sys", ] @@ -5579,16 +5208,14 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window_clipboard" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6d692d46038c433f9daee7ad8757e002a4248c20b0a3fbc991d99521d3bcb6d" +checksum = "d5654226305eaf2dde8853fb482861d28e5dcecbbd40cb88e8393d94bb80d733" dependencies = [ "clipboard-win", "clipboard_macos", - "clipboard_wayland", - "clipboard_x11", "raw-window-handle", - "thiserror 1.0.69", + "thiserror 2.0.12", ] [[package]] @@ -5973,15 +5600,14 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winit" -version = "0.30.8" -source = "git+https://github.com/iced-rs/winit.git?rev=11414b6aa45699f038114e61b4ddf5102b2d3b4b#11414b6aa45699f038114e61b4ddf5102b2d3b4b" +version = "0.30.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" dependencies = [ - "ahash 0.8.12", "android-activity", "atomic-waker", "bitflags 2.9.1", "block2", - "bytemuck", "calloop", "cfg_aliases", "concurrent-queue", @@ -5991,34 +5617,24 @@ dependencies = [ "dpi", "js-sys", "libc", - "memmap2", "ndk 0.9.0", "objc2", "objc2-app-kit", "objc2-foundation", "objc2-ui-kit", "orbclient", - "percent-encoding", "pin-project", "raw-window-handle", "redox_syscall 0.4.1", "rustix 0.38.44", - "sctk-adwaita", - "smithay-client-toolkit", "smol_str", "tracing", "unicode-segmentation", "wasm-bindgen", "wasm-bindgen-futures", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-plasma", "web-sys", "web-time", "windows-sys 0.52.0", - "x11-dl", - "x11rb", "xkbcommon-dl", ] @@ -6040,16 +5656,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winres" version = "0.1.12" @@ -6074,38 +5680,6 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "x11rb" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" -dependencies = [ - "as-raw-xcb-connection", - "gethostname", - "libc", - "libloading", - "once_cell", - "rustix 0.38.44", - "x11rb-protocol", -] - -[[package]] -name = "x11rb-protocol" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" - [[package]] name = "xattr" version = "1.5.1" @@ -6116,12 +5690,6 @@ dependencies = [ "rustix 1.0.7", ] -[[package]] -name = "xcursor" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" - [[package]] name = "xdg-home" version = "1.3.0" @@ -6204,12 +5772,12 @@ dependencies = [ "async-trait", "blocking", "enumflags2", - "event-listener 5.4.0", + "event-listener", "futures-core", "futures-sink", "futures-util", "hex", - "nix 0.29.0", + "nix", "ordered-stream", "rand 0.8.5", "serde", @@ -6221,42 +5789,9 @@ dependencies = [ "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.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb4f9a464286d42851d18a605f7193b8febaf5b0919d71c6399b7b26e5b0aad" -dependencies = [ - "async-broadcast", - "async-executor", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener 5.4.0", - "futures-core", - "futures-lite", - "hex", - "nix 0.30.1", - "ordered-stream", - "serde", - "serde_repr", - "tracing", - "uds_windows", - "windows-sys 0.59.0", - "winnow", - "zbus_macros 5.9.0", - "zbus_names 4.2.0", - "zvariant 5.6.0", + "zbus_macros", + "zbus_names", + "zvariant", ] [[package]] @@ -6269,22 +5804,7 @@ dependencies = [ "proc-macro2", "quote", "syn", - "zvariant_utils 2.1.0", -] - -[[package]] -name = "zbus_macros" -version = "5.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef9859f68ee0c4ee2e8cde84737c78e3f4c54f946f2a38645d0d4c7a95327659" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zbus_names 4.2.0", - "zvariant 5.6.0", - "zvariant_utils 3.2.0", + "zvariant_utils", ] [[package]] @@ -6295,19 +5815,7 @@ checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" dependencies = [ "serde", "static_assertions", - "zvariant 4.2.0", -] - -[[package]] -name = "zbus_names" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" -dependencies = [ - "serde", - "static_assertions", - "winnow", - "zvariant 5.6.0", + "zvariant", ] [[package]] @@ -6454,22 +5962,7 @@ dependencies = [ "serde", "static_assertions", "url", - "zvariant_derive 4.2.0", -] - -[[package]] -name = "zvariant" -version = "5.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f" -dependencies = [ - "endi", - "enumflags2", - "serde", - "url", - "winnow", - "zvariant_derive 5.6.0", - "zvariant_utils 3.2.0", + "zvariant_derive", ] [[package]] @@ -6482,20 +5975,7 @@ dependencies = [ "proc-macro2", "quote", "syn", - "zvariant_utils 2.1.0", -] - -[[package]] -name = "zvariant_derive" -version = "5.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils 3.2.0", + "zvariant_utils", ] [[package]] @@ -6508,27 +5988,3 @@ dependencies = [ "quote", "syn", ] - -[[package]] -name = "zvariant_utils" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "static_assertions", - "syn", - "winnow", -] - -[[patch.unused]] -name = "iced_aw" -version = "0.11.0" -source = "git+https://github.com/C-Entropy/iced_aw/?rev=87b8176#87b81766c7a2ae8ead136fddac799f378d35129f" - -[[patch.unused]] -name = "iced_fonts" -version = "0.2.0" -source = "git+https://github.com/Redhawk18/iced_fonts?rev=f919b05#f919b05015289a72eef2304c80687a3390e44492" diff --git a/Cargo.toml b/Cargo.toml index e970a01..37c06fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,10 +24,10 @@ espim = "0.2" flate2 = "1.0" fs_extra = "1.3.0" futures = "0.3" -#iced_aw = { version = "0.11.0", default-features = false, features = [ -# "tabs", -#] } -iced_dialog = "0.14.0-dev" +iced_aw = { version = "0.13.0", default-features = false, features = [ + "tabs", +] } +iced_dialog = "0.14.0" log = { version = "0.4.22", features = ["std"] } open = "5" parking_lot = "0.12" @@ -55,11 +55,10 @@ rfd = { version = "0.14.1", default-features = false, features = [ ] } [dependencies.iced] -version = "0.14.0-dev" +version = "0.14" default-features = false features = [ "web-colors", - "auto-detect-theme", "advanced", "image", "sipper", @@ -74,14 +73,4 @@ winres = "0.1" [profile.release] strip = true opt-level = 'z' # Optimize for size. -lto = true - -[patch.crates-io] -iced_widget = { git = "https://github.com/iced-rs/iced", branch = "master" } -iced_core = { git = "https://github.com/iced-rs/iced", branch = "master" } -iced = { git = "https://github.com/iced-rs/iced", branch = "master" } -iced_dialog = { git = "https://github.com/pml68/iced_dialog", branch = "master" } -iced_aw = { git = "https://github.com/C-Entropy/iced_aw/", rev = "87b8176" } - -[patch."https://github.com/C-Entropy/iced_aw/"] -iced_fonts = { git = "https://github.com/Redhawk18/iced_fonts", rev = "f919b05" } \ No newline at end of file +lto = true \ No newline at end of file diff --git a/src/instance.rs b/src/instance.rs index e6189ca..14ac03c 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -3,7 +3,7 @@ use crate::music::MusicCommand; use crate::style::icon_button; use crate::{install, send_message, style, update, Message, SharedSettings}; use anyhow::Result; -use iced::widget::{Button, Column, ProgressBar, Row, Space, Text}; +use iced::widget::{space, Button, Column, ProgressBar, Row, Text}; use iced::{alignment, theme, Alignment, Element, Length}; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; @@ -232,7 +232,7 @@ impl Instance { .size(10), ), ) - .push(Space::new(Length::Fill, Length::Shrink)) + .push(space().width(Length::Fill).height(Length::Shrink)) .push({ if let InstanceState::Working(progress) = &self.state { let mut status_field = Column::new().align_x(Alignment::Center).push( @@ -260,7 +260,7 @@ impl Instance { ); } Row::new() - .push(Space::with_width(Length::FillPortion(1))) + .push(space().width(Length::FillPortion(1))) .push(status_field.width(Length::FillPortion(2))) } else { Row::new() diff --git a/src/instances_frame.rs b/src/instances_frame.rs index 6e0dc1b..c3a3b53 100644 --- a/src/instances_frame.rs +++ b/src/instances_frame.rs @@ -54,7 +54,7 @@ impl InstancesFrame { .fold(instances_column, |column, instance| { column .push( - iced::widget::horizontal_rule(2).style(|theme: &iced::Theme| { + iced::widget::rule::horizontal(2).style(|theme: &iced::Theme| { let mut style = rule::default(theme); style.color.a *= 0.75; style diff --git a/src/main.rs b/src/main.rs index cf234e2..2070228 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,7 +24,7 @@ use crate::settings::{Settings, SettingsFrame, SettingsMessage}; use crate::style::{icon_button, log_container}; use iced::advanced::subscription; use iced::advanced::subscription::{EventStream, Hasher}; -use iced::widget::{column, row, text, Button, Column, Container, Row, Scrollable, Space, Text}; +use iced::widget::{column, row, space, text, Button, Column, Container, Row, Scrollable, Text}; use iced::{alignment, font, Alignment, Element, Font, Length, Subscription, Task, Theme}; // use iced_aw::{TabLabel, Tabs}; use iced_dialog::{button, dialog}; @@ -169,7 +169,7 @@ impl ESLauncher { } fn update(&mut self, message: Message) -> Task { - match dbg!(message) { + match message { Message::InstallFrameMessage(msg) => { return self.install_frame.update(msg, self.settings.clone()) } @@ -294,7 +294,7 @@ impl ESLauncher { let show_tab = match self.active_tab { Tab::Instances => iced::widget::column([Row::new() .push(self.instances_frame.view()) - .push(iced::widget::vertical_rule(2)) + .push(iced::widget::rule::vertical(2)) .push(self.install_frame.view().map(Message::InstallFrameMessage)) .spacing(10) .padding(iced::Padding { @@ -340,7 +340,7 @@ impl ESLauncher { .align_x(Alignment::Center) .push(tabs.height(Length::FillPortion(3))) .push( - iced::widget::container(iced::widget::horizontal_rule(2)).padding(iced::Padding { + iced::widget::container(iced::widget::rule::vertical(2)).padding(iced::Padding { top: 0.0, right: 10.0, bottom: 0.0, @@ -357,7 +357,7 @@ impl ESLauncher { .width(Length::Fill) .align_y(Alignment::Center) .padding(8) - .push(Space::new(Length::Fill, Length::Shrink)) + .push(space().width(Length::Fill).height(Length::Shrink)) .push( Button::new(match self.settings.read().music_state { MusicState::Playing => style::pause_icon(), @@ -403,7 +403,7 @@ impl ESLauncher { format!("ESLauncher2 v{}", version!()) } - fn theme(&self) -> Theme { + fn theme(&self) -> Option { let guard = &self.settings.read(); let theme = guard.theme_preview.as_ref().unwrap_or_else(|| &guard.theme); theme.into() diff --git a/src/plugins_frame.rs b/src/plugins_frame.rs index 1401a7e..f965447 100644 --- a/src/plugins_frame.rs +++ b/src/plugins_frame.rs @@ -3,7 +3,7 @@ use crate::{get_data_dir, style, Message}; use anyhow::Context; use anyhow::Result; use espim::Plugin as EspimPlugin; -use iced::widget::{button, image, rule, Column, Container, Image, Row, Scrollable, Space, Text}; +use iced::widget::{button, image, rule, space, Column, Container, Image, Row, Scrollable, Text}; use iced::{alignment, theme, Alignment, Color, Element, Length, Task}; use regex::Regex; use std::fs::File; @@ -51,7 +51,7 @@ impl PluginsFrameState { .align_x(Alignment::Center), |column, plugin| { column - .push(iced::widget::horizontal_rule(2).style( + .push(iced::widget::rule::horizontal(2).style( |theme: &iced::Theme| { let mut style = rule::default(theme); style.color.a *= 0.75; @@ -192,7 +192,7 @@ impl Plugin { .size(14) .color(Color::from_rgb(0.6, 0.6, 0.6)), ); - infos = infos.push(Space::with_height(5)).push( + infos = infos.push(space().height(5)).push( Text::new( espim_plugin .description() @@ -234,7 +234,7 @@ impl Plugin { }; let header = Row::new() .push(titlebox) - .push(Space::new(Length::Fill, Length::Shrink)) + .push(space().width(Length::Fill).height(Length::Shrink)) .push(controls); textbox = textbox.push(header).push(infos); diff --git a/src/settings.rs b/src/settings.rs index 3075284..786ee10 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -6,10 +6,10 @@ use cp_r::CopyStats; use futures::join; use iced::advanced::graphics::core::Element; use iced::task::{sipper, Sipper}; -use iced::widget::{combo_box, container, horizontal_space, row, text, Text}; +use iced::widget::{combo_box, container, row, space, text, Text}; use iced::{ widget::{button, Column, Container, Row}, - Length, Theme, + Theme, }; use iced::{Alignment, Padding, Renderer, Task}; use serde::{Deserialize, Serialize}; @@ -83,6 +83,7 @@ impl Settings { } } +// TODO: do we need this? or can we live with autodetect = None ? #[derive(Default, Debug, Clone, Deserialize, Serialize)] #[serde(from = "Option", into = "Option")] pub enum SelectableTheme { @@ -101,7 +102,7 @@ impl From> for SelectableTheme { .cloned() .unwrap_or_else(|| { warn!("Got unknown theme {s} from config, falling back to default"); - Theme::default() + Theme::Light }) }) .map(|t| Self::Preset(t.clone())) @@ -127,11 +128,11 @@ impl Display for SelectableTheme { } } -impl From<&SelectableTheme> for Theme { - fn from(st: &SelectableTheme) -> Theme { +impl From<&SelectableTheme> for Option { + fn from(st: &SelectableTheme) -> Option { match st { - SelectableTheme::Autodetect => Theme::default(), - SelectableTheme::Preset(t) => t.clone(), + SelectableTheme::Autodetect => None, + SelectableTheme::Preset(t) => Some(t.clone()), } } } @@ -177,7 +178,7 @@ impl SettingsFrame { .push( Row::new() .push(Text::new(label)) - .push(horizontal_space()) + .push(space::horizontal()) .push( container(content).align_x(iced::alignment::Horizontal::Right), // .width(Length::Fill), ) @@ -217,7 +218,7 @@ impl SettingsFrame { .size(12.0), install_dir_picker ) - .push_maybe(install_dir_reset_btn) + .push(install_dir_reset_btn) .align_y(Alignment::Center) .spacing(10.0) .padding(Padding {