From d8eb29ee6cba980aa3d08f0abf031d4d2538331b Mon Sep 17 00:00:00 2001 From: Rusty Pickle Date: Sun, 3 Aug 2025 19:32:33 +0600 Subject: [PATCH 1/7] Update deps --- Cargo.lock | 789 +++++++++++++++++++---------------------------------- Cargo.toml | 24 +- 2 files changed, 289 insertions(+), 524 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e51f73..b944951 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,15 +20,15 @@ checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] name = "accesskit" -version = "0.17.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d3b8f9bae46a948369bc4a03e815d4ed6d616bd00de4051133a5019dc31c5a" +checksum = "e25ae84c0260bdf5df07796d7cc4882460de26a2b406ec0e6c42461a723b271b" [[package]] name = "accesskit_atspi_common" -version = "0.10.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5dd55e6e94949498698daf4d48fb5659e824d7abec0d394089656ceaf99d4f" +checksum = "29bd41de2e54451a8ca0dd95ebf45b54d349d29ebceb7f20be264eee14e3d477" dependencies = [ "accesskit", "accesskit_consumer", @@ -40,20 +40,19 @@ dependencies = [ [[package]] name = "accesskit_consumer" -version = "0.26.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" +checksum = "8bfae7c152994a31dc7d99b8eeac7784a919f71d1b306f4b83217e110fd3824c" dependencies = [ "accesskit", "hashbrown", - "immutable-chunkmap", ] [[package]] name = "accesskit_macos" -version = "0.18.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" +checksum = "692dd318ff8a7a0ffda67271c4bd10cf32249656f4e49390db0b26ca92b095f2" dependencies = [ "accesskit", "accesskit_consumer", @@ -65,9 +64,9 @@ dependencies = [ [[package]] name = "accesskit_unix" -version = "0.13.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcee751cc20d88678c33edaf9c07e8b693cd02819fe89053776f5313492273f5" +checksum = "c5f7474c36606d0fe4f438291d667bae7042ea2760f506650ad2366926358fc8" dependencies = [ "accesskit", "accesskit_atspi_common", @@ -83,24 +82,23 @@ dependencies = [ [[package]] name = "accesskit_windows" -version = "0.24.1" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" +checksum = "70a042b62c9c05bf7b616f015515c17d2813f3ba89978d6f4fc369735d60700a" dependencies = [ "accesskit", "accesskit_consumer", "hashbrown", - "paste", "static_assertions", "windows", - "windows-core 0.58.0", + "windows-core", ] [[package]] name = "accesskit_winit" -version = "0.23.1" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6a48dad5530b6deb9fc7a52cc6c3bf72cdd9eb8157ac9d32d69f2427a5e879" +checksum = "5c1f0d3d13113d8857542a4f8d1a1c24d1dc1527b77aee8426127f4901588708" dependencies = [ "accesskit", "accesskit_macos", @@ -146,7 +144,7 @@ dependencies = [ "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -174,7 +172,7 @@ dependencies = [ "log", "ndk", "ndk-context", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", "thiserror 1.0.69", ] @@ -238,15 +236,6 @@ 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" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" -dependencies = [ - "libloading", -] - [[package]] name = "async-broadcast" version = "0.7.2" @@ -284,17 +273,6 @@ dependencies = [ "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.4.0" @@ -398,9 +376,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atspi" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be534b16650e35237bb1ed189ba2aab86ce65e88cc84c66f4935ba38575cecbf" +checksum = "c83247582e7508838caf5f316c00791eee0e15c0bf743e6880585b867e16815c" dependencies = [ "atspi-common", "atspi-connection", @@ -409,9 +387,9 @@ dependencies = [ [[package]] name = "atspi-common" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1909ed2dc01d0a17505d89311d192518507e8a056a48148e3598fef5e7bb6ba7" +checksum = "33dfc05e7cdf90988a197803bf24f5788f94f7c94a69efa95683e8ffe76cfdfb" dependencies = [ "enumflags2", "serde", @@ -425,9 +403,9 @@ dependencies = [ [[package]] name = "atspi-connection" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "430c5960624a4baaa511c9c0fcc2218e3b58f5dbcc47e6190cafee344b873333" +checksum = "4193d51303d8332304056ae0004714256b46b6635a5c556109b319c0d3784938" dependencies = [ "atspi-common", "atspi-proxies", @@ -437,14 +415,13 @@ dependencies = [ [[package]] name = "atspi-proxies" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e6c5de3e524cf967569722446bcd458d5032348554d9a17d7d72b041ab7496" +checksum = "d2eebcb9e7e76f26d0bcfd6f0295e1cd1e6f33bedbc5698a971db8dc43d7751c" dependencies = [ "atspi-common", "serde", "zbus", - "zvariant", ] [[package]] @@ -504,12 +481,6 @@ dependencies = [ "serde", ] -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - [[package]] name = "block-buffer" version = "0.10.4" @@ -645,9 +616,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", @@ -679,10 +650,11 @@ dependencies = [ [[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", ] @@ -808,6 +780,12 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + [[package]] name = "crypto-common" version = "0.1.6" @@ -926,9 +904,9 @@ checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" [[package]] name = "ecolor" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" +checksum = "4a631732d995184114016fab22fc7e3faf73d6841c2d7650395fe251fbcd9285" dependencies = [ "bytemuck", "emath", @@ -936,9 +914,9 @@ dependencies = [ [[package]] name = "eframe" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0dfe0859f3fb1bc6424c57d41e10e9093fe938f426b691e42272c2f336d915c" +checksum = "0c790ccfbb3dd556588342463454b2b2b13909e5fdce5bc2a1432a8aa69c8b7a" dependencies = [ "ahash", "bytemuck", @@ -972,9 +950,9 @@ dependencies = [ [[package]] name = "egui" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" +checksum = "8470210c95a42cc985d9ffebfd5067eea55bdb1c3f7611484907db9639675e28" dependencies = [ "accesskit", "ahash", @@ -984,22 +962,15 @@ dependencies = [ "log", "nohash-hasher", "profiling", -] - -[[package]] -name = "egui-dropdown" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d277c6c1f49e4e227344e920132d2d22a51810296b5c78f90e6aef4eed63ea" -dependencies = [ - "egui", + "smallvec", + "unicode-segmentation", ] [[package]] name = "egui-selectable-table" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e1c3a9e76039dbc10408e2be3c7cdbf957bb16c6a6a5c16079a5f51fe474ee" +checksum = "b9e60f9b77832c217b08eb0f1a12f5e39d5a3bc93d6c7db49498ded94a51beb5" dependencies = [ "egui", "egui_extras", @@ -1008,18 +979,18 @@ dependencies = [ [[package]] name = "egui-theme-lerp" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb93fd457766bebecbe74b58a0f0e57bd926acfe73a102e5a67984b48dfb9ce" +checksum = "a80b131214aeaff2d6dee8cf7065e9cf93c3d9e559cc72ac8d02a91efc4adf6e" dependencies = [ "egui", ] [[package]] name = "egui-wgpu" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d319dfef570f699b6e9114e235e862a2ddcf75f0d1a061de9e1328d92146d820" +checksum = "14de9942d8b9e99e2d830403c208ab1a6e052e925a7456a4f6f66d567d90de1d" dependencies = [ "ahash", "bytemuck", @@ -1037,9 +1008,9 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d9dfbb78fe4eb9c3a39ad528b90ee5915c252e77bbab9d4ebc576541ab67e13" +checksum = "c490804a035cec9c826082894a3e1ecf4198accd3817deb10f7919108ebafab0" dependencies = [ "accesskit_winit", "ahash", @@ -1057,9 +1028,9 @@ dependencies = [ [[package]] name = "egui_extras" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624659a2e972a46f4d5f646557906c55f1cd5a0836eddbe610fdf1afba1b4226" +checksum = "0f791a5937f518249016b276b3639ad2aa3824048b6f2161ec2b431ab325880a" dependencies = [ "ahash", "chrono", @@ -1071,9 +1042,9 @@ dependencies = [ [[package]] name = "egui_glow" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910906e3f042ea6d2378ec12a6fd07698e14ddae68aed2d819ffe944a73aab9e" +checksum = "d44f3fd4fdc5f960c9e9ef7327c26647edc3141abf96102980647129d49358e6" dependencies = [ "ahash", "bytemuck", @@ -1089,9 +1060,9 @@ dependencies = [ [[package]] name = "egui_plot" -version = "0.31.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1794c66fb727dac28dffed2e4b548e5118d1cccc331d368a35411d68725dde71" +checksum = "524318041a8ea90c81c738e8985f8ad9e3f9bed636b03c2ff37b218113ed5121" dependencies = [ "ahash", "egui", @@ -1106,9 +1077,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "emath" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e4cadcff7a5353ba72b7fea76bf2122b5ebdbc68e8155aa56dfdea90083fe1b" +checksum = "45f057b141e7e46340c321400be74b793543b1b213036f0f989c35d35957c32e" dependencies = [ "bytemuck", ] @@ -1135,7 +1106,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" dependencies = [ "enum-map-derive", - "serde", ] [[package]] @@ -1185,9 +1155,9 @@ dependencies = [ [[package]] name = "epaint" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fcc0f5a7c613afd2dee5e4b30c3e6acafb8ad6f0edb06068811f708a67c562" +checksum = "94cca02195f0552c17cabdc02f39aa9ab6fbd815dac60ab1cd3d5b0aa6f9551c" dependencies = [ "ab_glyph", "ahash", @@ -1204,9 +1174,9 @@ dependencies = [ [[package]] name = "epaint_default_fonts" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7e7a64c02cf7a5b51e745a9e45f60660a286f151c238b9d397b3e923f5082f" +checksum = "e8495e11ed527dff39663b8c36b6c2b2799d7e4287fb90556e455d72eca0b4d3" [[package]] name = "equivalent" @@ -1403,11 +1373,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", - "futures-io", "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1565,45 +1532,6 @@ dependencies = [ "gl_generator", ] -[[package]] -name = "gpu-alloc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" -dependencies = [ - "bitflags 2.9.0", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" -dependencies = [ - "bitflags 2.9.0", -] - -[[package]] -name = "gpu-descriptor" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" -dependencies = [ - "bitflags 2.9.0", - "gpu-descriptor-types", - "hashbrown", -] - -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" -dependencies = [ - "bitflags 2.9.0", -] - [[package]] name = "grammers-client" version = "0.7.0" @@ -1735,6 +1663,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", + "num-traits", +] + [[package]] name = "hashbrown" version = "0.15.2" @@ -1893,22 +1832,28 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.11" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ + "base64", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", "libc", + "percent-encoding", "pin-project-lite", "socket2", + "system-configuration", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] @@ -1923,7 +1868,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.0", + "windows-core", ] [[package]] @@ -2087,15 +2032,6 @@ dependencies = [ "tiff", ] -[[package]] -name = "immutable-chunkmap" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" -dependencies = [ - "arrayvec", -] - [[package]] name = "indexmap" version = "2.9.0" @@ -2115,12 +2051,33 @@ dependencies = [ "generic-array", ] +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.0", + "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" @@ -2205,17 +2162,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "khronos-egl" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" -dependencies = [ - "libc", - "libloading", - "pkg-config", -] - [[package]] name = "khronos_api" version = "3.1.0" @@ -2238,6 +2184,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + [[package]] name = "libredox" version = "0.1.3" @@ -2298,15 +2250,6 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - [[package]] name = "md5" version = "0.7.0" @@ -2337,21 +2280,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "metal" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" -dependencies = [ - "bitflags 2.9.0", - "block", - "core-graphics-types", - "foreign-types 0.5.0", - "log", - "objc", - "paste", -] - [[package]] name = "mime" version = "0.3.17" @@ -2391,24 +2319,26 @@ dependencies = [ [[package]] name = "naga" -version = "24.0.0" +version = "25.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" +checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" dependencies = [ "arrayvec", "bit-set", "bitflags 2.9.0", "cfg_aliases", "codespan-reporting", + "half", + "hashbrown", "hexf-parse", "indexmap", "log", + "num-traits", + "once_cell", "rustc-hash", - "spirv", "strum 0.26.3", - "termcolor", "thiserror 2.0.12", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -2437,7 +2367,7 @@ dependencies = [ "bitflags 2.9.0", "jni-sys", "log", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", "raw-window-handle", "thiserror 1.0.69", @@ -2449,15 +2379,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" -[[package]] -name = "ndk-sys" -version = "0.5.0+25.2.9519653" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" -dependencies = [ - "jni-sys", -] - [[package]] name = "ndk-sys" version = "0.6.0+11769913" @@ -2469,9 +2390,9 @@ dependencies = [ [[package]] name = "nix" -version = "0.29.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ "bitflags 2.9.0", "cfg-if", @@ -2486,6 +2407,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" +[[package]] +name = "nucleo-matcher" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf33f538733d1a5a3494b836ba913207f14d9d4a1d3cd67030c5061bdd2cac85" +dependencies = [ + "memchr", + "unicode-segmentation", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -2513,6 +2444,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -2536,15 +2468,6 @@ dependencies = [ "syn", ] -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - [[package]] name = "objc-sys" version = "0.3.5" @@ -2898,15 +2821,6 @@ dependencies = [ "libredox", ] -[[package]] -name = "ordered-float" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" -dependencies = [ - "num-traits", -] - [[package]] name = "ordered-stream" version = "0.2.0" @@ -2965,12 +2879,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - [[package]] name = "pathdiff" version = "0.2.3" @@ -3071,13 +2979,10 @@ dependencies = [ ] [[package]] -name = "ppv-lite86" -version = "0.2.21" +name = "portable-atomic" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy 0.8.24", -] +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "pretty_env_logger" @@ -3115,9 +3020,9 @@ checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" [[package]] name = "quick-xml" -version = "0.30.0" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" dependencies = [ "memchr", "serde", @@ -3153,18 +3058,6 @@ 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", ] @@ -3269,15 +3162,14 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "reqwest" -version = "0.12.15" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ "base64", "bytes", "encoding_rs", "futures-core", - "futures-util", "h2", "http", "http-body", @@ -3286,29 +3178,26 @@ dependencies = [ "hyper-rustls", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-native-tls", "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-registry", ] [[package]] @@ -3376,15 +3265,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "rustls-pki-types" version = "1.11.0" @@ -3508,9 +3388,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.141" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3" dependencies = [ "itoa", "memchr", @@ -3655,21 +3535,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.9" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ "libc", - "windows-sys 0.52.0", -] - -[[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.9.0", + "windows-sys 0.59.0", ] [[package]] @@ -3701,9 +3572,9 @@ dependencies = [ [[package]] name = "strum" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" [[package]] name = "strum_macros" @@ -3720,14 +3591,13 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ "heck", "proc-macro2", "quote", - "rustversion", "syn", ] @@ -3797,7 +3667,6 @@ dependencies = [ "csv", "dirs", "eframe", - "egui-dropdown", "egui-selectable-table", "egui-theme-lerp", "egui_extras", @@ -3810,6 +3679,7 @@ dependencies = [ "grammers-tl-gen", "grammers-tl-types", "log", + "nucleo-matcher", "open", "pretty_env_logger", "rayon", @@ -3817,8 +3687,8 @@ dependencies = [ "semver", "serde", "serde_json", - "strum 0.27.1", - "strum_macros 0.27.1", + "strum 0.27.2", + "strum_macros 0.27.2", "tokio", ] @@ -3932,17 +3802,19 @@ dependencies = [ [[package]] name = "tokio" -version = "1.44.2" +version = "1.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", + "slab", "socket2", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4010,6 +3882,24 @@ dependencies = [ "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.0", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -4115,12 +4005,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" @@ -4421,23 +4305,24 @@ checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "wgpu" -version = "24.0.3" +version = "25.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35904fb00ba2d2e0a4d002fcbbb6e1b89b574d272a50e5fc95f6e81cf281c245" +checksum = "ec8fb398f119472be4d80bc3647339f56eb63b2a331f6a3d16e25d8144197dd9" dependencies = [ "arrayvec", "bitflags 2.9.0", "cfg_aliases", "document-features", + "hashbrown", "js-sys", "log", "parking_lot", + "portable-atomic", "profiling", "raw-window-handle", "smallvec", "static_assertions", "wasm-bindgen", - "wasm-bindgen-futures", "web-sys", "wgpu-core", "wgpu-hal", @@ -4446,79 +4331,72 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "24.0.2" +version = "25.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c25545d479b47d3f0a8e373aceb2060b67c6eb841b24ac8c32348151c7a0c" +checksum = "f7b882196f8368511d613c6aeec80655160db6646aebddf8328879a88d54e500" dependencies = [ "arrayvec", + "bit-set", "bit-vec", "bitflags 2.9.0", "cfg_aliases", "document-features", + "hashbrown", "indexmap", "log", "naga", "once_cell", "parking_lot", + "portable-atomic", "profiling", "raw-window-handle", "rustc-hash", "smallvec", "thiserror 2.0.12", + "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-types", ] +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "25.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cba5fb5f7f9c98baa7c889d444f63ace25574833df56f5b817985f641af58e46" +dependencies = [ + "wgpu-hal", +] + [[package]] name = "wgpu-hal" -version = "24.0.4" +version = "25.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" +checksum = "f968767fe4d3d33747bbd1473ccd55bf0f6451f55d733b5597e67b5deab4ad17" dependencies = [ - "android_system_properties", - "arrayvec", - "ash", "bitflags 2.9.0", - "bytemuck", "cfg_aliases", - "core-graphics-types", - "glow", - "glutin_wgl_sys", - "gpu-alloc", - "gpu-descriptor", - "js-sys", - "khronos-egl", - "libc", "libloading", "log", - "metal", "naga", - "ndk-sys 0.5.0+25.2.9519653", - "objc", - "once_cell", - "ordered-float", "parking_lot", - "profiling", + "portable-atomic", "raw-window-handle", "renderdoc-sys", - "rustc-hash", - "smallvec", "thiserror 2.0.12", - "wasm-bindgen", - "web-sys", "wgpu-types", - "windows", ] [[package]] name = "wgpu-types" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" +checksum = "2aa49460c2a8ee8edba3fca54325540d904dd85b2e086ada762767e17d06e8bc" dependencies = [ "bitflags 2.9.0", + "bytemuck", "js-sys", "log", + "thiserror 2.0.12", "web-sys", ] @@ -4555,49 +4433,48 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.58.0" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", + "windows-collections", + "windows-core", + "windows-future", + "windows-link", + "windows-numerics", ] [[package]] -name = "windows-core" -version = "0.58.0" +name = "windows-collections" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-core", ] [[package]] name = "windows-core" -version = "0.61.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", + "windows-implement", + "windows-interface", "windows-link", - "windows-result 0.3.2", - "windows-strings 0.4.0", + "windows-result", + "windows-strings", ] [[package]] -name = "windows-implement" -version = "0.58.0" +name = "windows-future" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "proc-macro2", - "quote", - "syn", + "windows-core", + "windows-link", + "windows-threading", ] [[package]] @@ -4611,17 +4488,6 @@ dependencies = [ "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-interface" version = "0.59.1" @@ -4635,63 +4501,45 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" - -[[package]] -name = "windows-registry" -version = "0.4.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" -dependencies = [ - "windows-result 0.3.2", - "windows-strings 0.3.1", - "windows-targets 0.53.0", -] +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] -name = "windows-result" +name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ + "windows-core", "windows-link", ] [[package]] -name = "windows-strings" -version = "0.1.0" +name = "windows-registry" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "windows-strings" -version = "0.3.1" +name = "windows-result" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ "windows-link", ] @@ -4762,7 +4610,7 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", + "windows_i686_gnullvm", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", @@ -4770,19 +4618,12 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.53.0" +name = "windows-threading" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link", ] [[package]] @@ -4803,12 +4644,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -4827,12 +4662,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -4851,24 +4680,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.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 = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -4887,12 +4704,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -4911,12 +4722,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -4935,12 +4740,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -4959,12 +4758,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - [[package]] name = "winit" version = "0.30.9" @@ -5085,16 +4878,6 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" -[[package]] -name = "xdg-home" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - [[package]] name = "xkbcommon-dl" version = "0.4.2" @@ -5146,13 +4929,12 @@ dependencies = [ [[package]] name = "zbus" -version = "4.4.0" +version = "5.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" +checksum = "4bb4f9a464286d42851d18a605f7193b8febaf5b0919d71c6399b7b26e5b0aad" dependencies = [ "async-broadcast", "async-executor", - "async-fs", "async-io", "async-lock", "async-process", @@ -5163,20 +4945,16 @@ dependencies = [ "enumflags2", "event-listener", "futures-core", - "futures-sink", - "futures-util", + "futures-lite", "hex", "nix", "ordered-stream", - "rand", "serde", "serde_repr", - "sha1", - "static_assertions", "tracing", "uds_windows", - "windows-sys 0.52.0", - "xdg-home", + "windows-sys 0.59.0", + "winnow", "zbus_macros", "zbus_names", "zvariant", @@ -5184,9 +4962,9 @@ dependencies = [ [[package]] name = "zbus-lockstep" -version = "0.4.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca2c5dceb099bddaade154055c926bb8ae507a18756ba1d8963fd7b51d8ed1d" +checksum = "29e96e38ded30eeab90b6ba88cb888d70aef4e7489b6cd212c5e5b5ec38045b6" dependencies = [ "zbus_xml", "zvariant", @@ -5194,9 +4972,9 @@ dependencies = [ [[package]] name = "zbus-lockstep-macros" -version = "0.4.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" +checksum = "dc6821851fa840b708b4cbbaf6241868cabc85a2dc22f426361b0292bfc0b836" dependencies = [ "proc-macro2", "quote", @@ -5208,35 +4986,38 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.4.0" +version = "5.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" +checksum = "ef9859f68ee0c4ee2e8cde84737c78e3f4c54f946f2a38645d0d4c7a95327659" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", "syn", + "zbus_names", + "zvariant", "zvariant_utils", ] [[package]] name = "zbus_names" -version = "3.0.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" dependencies = [ "serde", "static_assertions", + "winnow", "zvariant", ] [[package]] name = "zbus_xml" -version = "4.0.0" +version = "5.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3f374552b954f6abb4bd6ce979e6c9b38fb9d0cd7cc68a7d796e70c9f3a233" +checksum = "589e9a02bfafb9754bb2340a9e3b38f389772684c63d9637e76b1870377bec29" dependencies = [ - "quick-xml 0.30.0", + "quick-xml 0.36.2", "serde", "static_assertions", "zbus_names", @@ -5249,16 +5030,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" -dependencies = [ - "zerocopy-derive 0.8.24", + "zerocopy-derive", ] [[package]] @@ -5272,17 +5044,6 @@ dependencies = [ "syn", ] -[[package]] -name = "zerocopy-derive" -version = "0.8.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "zerofrom" version = "0.1.6" @@ -5334,22 +5095,23 @@ dependencies = [ [[package]] name = "zvariant" -version = "4.2.0" +version = "5.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" +checksum = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f" dependencies = [ "endi", "enumflags2", "serde", - "static_assertions", + "winnow", "zvariant_derive", + "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "4.2.0" +version = "5.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" +checksum = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5360,11 +5122,14 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "2.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" dependencies = [ "proc-macro2", "quote", + "serde", + "static_assertions", "syn", + "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index 04030e8..8a0ddb1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,26 +28,26 @@ grammers-crypto = "=0.7.0" grammers-tl-gen = "=0.7.0" grammers-tl-types = "=0.7.0" grammers-mtsender = "=0.7.0" -tokio = { version = "1.44.2", features = ["rt-multi-thread"] } +tokio = { version = "1.47.0", features = ["rt-multi-thread"] } log = "0.4.27" pretty_env_logger = "0.5.0" serde = { version = "1.0.219", features = ["derive"] } -serde_json = "1.0.140" +serde_json = "1.0.141" dirs = "6.0.0" open = "5.3.2" -reqwest = { version = "0.12.15", features = ["json"] } -eframe = "0.31.1" -egui_extras = { version = "0.31.1", default-features = false, features = ["datepicker"] } -egui_plot = "0.31.0" -egui-dropdown = "0.13.0" -egui-theme-lerp = "0.2.0" -chrono = { version = "0.4.40", features = ["serde"] } +reqwest = { version = "0.12.22", features = ["json"] } +eframe = "0.32.0" +egui_extras = { version = "0.32.0", default-features = false, features = ["datepicker"] } +egui_plot = "0.33.0" +egui-theme-lerp = "0.3.0" +chrono = { version = "0.4.41", features = ["serde"] } semver = "1.0.26" rayon = "1.10.0" csv = "1.3.1" -strum = "0.27.1" -strum_macros = "0.27.1" -egui-selectable-table = "0.2.0" +strum = "0.27.2" +strum_macros = "0.27.2" +egui-selectable-table = "0.3.0" +nucleo-matcher = "0.3.1" # The profile that 'cargo dist' will build with [profile.dist] From 16dfbfc87cadc48740d02e6860283e63641b9f7a Mon Sep 17 00:00:00 2001 From: Rusty Pickle Date: Sun, 3 Aug 2025 19:32:48 +0600 Subject: [PATCH 2/7] Use nucleo + remove dropdown --- src/ui_components/tab_ui/charts.rs | 221 +++++++++++++---------------- 1 file changed, 97 insertions(+), 124 deletions(-) diff --git a/src/ui_components/tab_ui/charts.rs b/src/ui_components/tab_ui/charts.rs index d69bf0d..002e9b0 100644 --- a/src/ui_components/tab_ui/charts.rs +++ b/src/ui_components/tab_ui/charts.rs @@ -1,8 +1,9 @@ use chrono::{Datelike, Days, Duration, Months, NaiveDate, NaiveDateTime, Timelike, Weekday}; -use eframe::egui::{Align, Button, ComboBox, Grid, Key, Layout, RichText, Ui}; -use egui_dropdown::DropDownBox; +use eframe::egui::{CentralPanel, ComboBox, Id, Key, Modal, ScrollArea, TopBottomPanel, Ui}; use egui_extras::DatePickerButton; use egui_plot::{Bar, BarChart, Legend, Plot, PlotPoint}; +use nucleo_matcher::pattern::{CaseMatching, Normalization, Pattern}; +use nucleo_matcher::Matcher; use std::collections::{BTreeMap, BTreeSet, HashMap}; use strum::IntoEnumIterator; @@ -13,13 +14,14 @@ use crate::utils::{time_to_string, weekday_num_to_string}; #[derive(Default)] pub struct ChartsData { - available_users: BTreeSet, - dropdown_user: String, + matcher: Matcher, + search_text: String, + modal_open: bool, + available_users: BTreeMap, chart_type: ChartType, last_chart_type: ChartType, chart_timing: ChartTiming, added_to_chart: BTreeSet, - button_sizes: HashMap>, hourly_message: BTreeMap>, daily_message: BTreeMap>, weekly_message: BTreeMap>, @@ -47,9 +49,7 @@ impl ChartsData { /// Reset chart data pub fn reset_chart(&mut self) { self.available_users.clear(); - self.dropdown_user.clear(); self.added_to_chart.clear(); - self.button_sizes.clear(); self.last_day = HashMap::new(); self.last_hour = HashMap::new(); self.last_month = HashMap::new(); @@ -76,31 +76,31 @@ impl ChartsData { } // These two are added to the chart by default - self.dropdown_user = "Show total data".to_string(); - self.add_to_chart(); - self.dropdown_user = "Show whitelisted data".to_string(); - self.add_to_chart(); + self.added_to_chart.insert("Show total data".to_string()); + self.added_to_chart + .insert("Show whitelisted data".to_string()); + self.available_users + .insert("Show total data".to_string(), true); + self.available_users + .insert("Show whitelisted data".to_string(), true); + self.date_nav = DateNavigator::default(); } /// Adds the user specified in the text edit in the chart - fn add_to_chart(&mut self) { - self.added_to_chart.insert(self.dropdown_user.clone()); - self.available_users.remove(&self.dropdown_user); - self.button_sizes.insert(self.dropdown_user.clone(), None); - self.dropdown_user.clear(); + fn add_to_chart(&mut self, to_add: String) { + self.added_to_chart.insert(to_add); self.reset_saved_bars(); } /// Removes the user that was clicked on from the chart fn remove_from_chart(&mut self, user: &str) { self.added_to_chart.remove(user); - self.available_users.insert(user.to_string()); self.reset_saved_bars(); } /// Adds a user available for adding in the chart pub fn add_user(&mut self, user: String, user_id: i64) { - self.available_users.insert(user.clone()); + self.available_users.insert(user.clone(), false); self.user_ids.insert(user, user_id); } @@ -242,6 +242,72 @@ impl ChartsData { self.daily_labels.clear(); } + fn show_modal_popup(&mut self, ui: &mut Ui) { + let response = Modal::new(Id::new("customize_view")).show(ui.ctx(), |ui| { + ui.set_width(300.0); + ui.set_height(300.0); + TopBottomPanel::top("customize_top_view").show_inside(ui, |ui| { + ui.vertical_centered(|ui| { + ui.heading("Customize View"); + }); + }); + + TopBottomPanel::bottom(Id::new("customize_bottom_view")).show_inside(ui, |ui| { + ui.add_space(5.0); + ui.vertical_centered_justified(|ui| { + if ui.button("Confirm").clicked() { + self.modal_open = false; + } + }) + }); + + CentralPanel::default().show_inside(ui, |ui| { + ui.text_edit_singleline(&mut self.search_text); + + ScrollArea::vertical().show(ui, |ui| { + let all_keys = self.available_users.keys().cloned().collect::>(); + + if self.search_text.is_empty() { + for val in all_keys { + ui.horizontal(|ui| { + ui.checkbox(self.available_users.get_mut(&val).unwrap(), val); + ui.allocate_space(ui.available_size()); + }); + } + } else { + let pattern = Pattern::parse( + &self.search_text, + CaseMatching::Ignore, + Normalization::Smart, + ); + let matches = pattern.match_list(all_keys.iter(), &mut self.matcher); + + for (val, _) in matches { + ui.horizontal(|ui| { + ui.checkbox(self.available_users.get_mut(val).unwrap(), val); + ui.allocate_space(ui.available_size()); + }); + } + } + }); + }); + }); + + if response.should_close() { + self.modal_open = false; + } + + if !self.modal_open { + for (key, val) in self.available_users.clone() { + if val { + self.add_to_chart(key); + } else { + self.remove_from_chart(&key); + } + } + } + } + /// Whether total message and whitelist message are added to the chart fn message_whitelist_added(&self, row_len: usize) -> (bool, bool) { // If there are no whitelisted users, this will be considered as not-shown. Adds extra bars @@ -325,6 +391,10 @@ impl MainWindow { ChartType::ActiveUserWeekDay, ChartType::ActiveUserWeekDay.to_string(), ).on_hover_text("Chart displaying the total count of active users for each day of the week."); + ui.separator(); + if ui.button("Customize View").clicked() { + self.chart().modal_open = true; + } }); if not_weekday_chart { ui.separator(); @@ -357,107 +427,9 @@ impl MainWindow { } else { ui.separator(); } - if !self.chart_i().available_users.is_empty() { - Grid::new("Chart Grid") - .num_columns(1) - .spacing([5.0, 10.0]) - .show(ui, |ui| { - ui.with_layout(Layout::right_to_left(Align::Center), |ui| { - let add_button = Button::new("Add to chart"); - - if self.chart_i().dropdown_user.is_empty() - || !self - .chart_i() - .available_users - .contains(&self.chart_i().dropdown_user) - { - ui.add_enabled(false, add_button); - } else if ui.add(add_button).on_hover_text("Add the selected user to the chart. If the UI is lagging, removing a few values will help").clicked() { - self.chart().add_to_chart(); - }; - let available_users = self.chart_i().available_users.clone(); - ui.add_sized( - ui.available_size(), - DropDownBox::from_iter( - &available_users, - "DropDown", - &mut self.chart().dropdown_user, - |ui, text| ui.selectable_label(false, text), - ) - .hint_text("Add a user to the chart"), - ) - }); - }); - } - - if !self.chart().added_to_chart.is_empty() { - ui.separator(); - - ui.vertical(|ui| { - let mut to_add: Vec = Vec::new(); - let mut already_added = 0.0; - let max_size = ui.available_width(); - for (index, user) in self.chart().added_to_chart.clone().iter().enumerate() { - // Check if the button size is saved previously or try to estimate a size - let button_size = - if let Some(size) = self.chart().button_sizes.get(user).unwrap() { - size.to_owned() - } else { - // Magic math to calculate size taken somewhere from the egui source code - (user.len() as f32 * (ui.style().spacing.button_padding.x * 2.0)) - + ui.spacing().item_spacing.x - }; - already_added += button_size; - to_add.push(user.to_string()); - - // When total size is above the max width, place the buttons in the horizontal layout - if already_added >= max_size { - ui.horizontal(|ui| { - // If max size is 500, after the latest addition it became 550, the last button should not be in this layout - // Pop it and use it in the next horizontal layout - let last_value = to_add.pop().unwrap(); - for button in &to_add { - let text_data = RichText::new(button); - - let resp = ui - .button(text_data) - .on_hover_text("Click to remove from chart"); - - if resp.clicked() { - self.chart().remove_from_chart(button); - } - - *self.chart().button_sizes.get_mut(button).unwrap() = - Some(resp.rect.width() + ui.spacing().item_spacing.x); - } - to_add.clear(); - to_add.push(last_value); - // The size of the last value will be used for the next horizontal layout - already_added = button_size; - }); - } - - // If any pending button remains example the max length of the width was not reached, add them - if index == self.chart().added_to_chart.len() - 1 { - ui.horizontal(|ui| { - for button in &to_add { - let text_data = RichText::new(button); - - let resp = ui - .button(text_data) - .on_hover_text("Click to remove from chart"); - if resp.clicked() { - self.chart().remove_from_chart(button); - } - *self.chart().button_sizes.get_mut(button).unwrap() = - Some(resp.rect.width() + ui.spacing().item_spacing.x); - } - }); - } - } - }); - ui.separator(); + if self.chart().modal_open { + self.chart().show_modal_popup(ui); } // Don't show any date stuff if it's a weekday chart @@ -984,15 +956,16 @@ impl MainWindow { // even if they are already in the list if show_whitelisted_message { if let Some(whitelist_bar) = bar_list.remove("Show whitelisted data") { - let mut whitelist_chart = BarChart::new(whitelist_bar) + let mut whitelist_chart = BarChart::new("Whitelist", whitelist_bar) .width(1.0) .name(whitelist_data_name); if show_total_message { if let Some(total_message_bars) = bar_list.remove("Show total data") { - let total_message_chart = BarChart::new(total_message_bars) - .width(1.0) - .name(total_data_name); + let total_message_chart = + BarChart::new("Total message", total_message_bars) + .width(1.0) + .name(total_data_name); whitelist_chart = whitelist_chart.stack_on(&[&total_message_chart]); all_charts.push(total_message_chart); @@ -1002,7 +975,7 @@ impl MainWindow { } } else if show_total_message { if let Some(total_message_bars) = bar_list.remove("Show total data") { - let total_message_chart = BarChart::new(total_message_bars) + let total_message_chart = BarChart::new("Total message", total_message_bars) .width(1.0) .name(total_data_name); all_charts.push(total_message_chart); @@ -1018,7 +991,7 @@ impl MainWindow { // The target is the bottom chart is total message => whitelist => the rest of the users if !bar_list.is_empty() { for (name, bar) in bar_list { - let current_chart = BarChart::new(bar).width(1.0).name(name); + let current_chart = BarChart::new(&name, bar).width(1.0).name(name); if all_charts.is_empty() { all_charts.push(current_chart); From 032900364e10162449c2bdc4cbeac8abd736bfb5 Mon Sep 17 00:00:00 2001 From: Rusty Pickle Date: Sun, 3 Aug 2025 19:36:56 +0600 Subject: [PATCH 3/7] deprecation + clippy fix --- src/main.rs | 2 +- src/tg_handler/communication.rs | 1 + src/tg_handler/counter.rs | 7 ++-- src/tg_handler/handler.rs | 2 +- src/tg_handler/initial_session.rs | 12 ++----- src/ui_components/initializer.rs | 30 ++++++++-------- src/ui_components/keys_ui.rs | 2 +- src/ui_components/processor/date_handler.rs | 4 +-- src/ui_components/processor/tg_comms.rs | 12 +++---- src/ui_components/tab_ui/blacklist.rs | 20 +++++------ src/ui_components/tab_ui/charts.rs | 38 ++++++++++----------- src/ui_components/tab_ui/counter.rs | 2 +- src/ui_components/tab_ui/session.rs | 4 +-- src/ui_components/tab_ui/user_table.rs | 32 ++++++++--------- src/ui_components/tab_ui/whitelist.rs | 18 +++++----- src/utils.rs | 10 +++--- 16 files changed, 90 insertions(+), 106 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5f5fe19..4306541 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,7 +25,7 @@ fn main() { builder .filter_module(env!("CARGO_BIN_NAME"), LevelFilter::Info) .init(); - }; + } let working_path = data_local_dir(); diff --git a/src/tg_handler/communication.rs b/src/tg_handler/communication.rs index cdb28ae..7149679 100644 --- a/src/tg_handler/communication.rs +++ b/src/tg_handler/communication.rs @@ -8,6 +8,7 @@ use tokio::sync::Mutex; use crate::tg_handler::{TGClient, TGCountData}; use crate::ui_components::processor::{UnpackedBlacklistedUser, UnpackedWhitelistedUser}; +#[allow(clippy::large_enum_variant)] pub enum ProcessResult { InitialSessionSuccess((Vec, Vec, Vec)), InvalidChat(String), diff --git a/src/tg_handler/counter.rs b/src/tg_handler/counter.rs index a14cfad..f418799 100644 --- a/src/tg_handler/counter.rs +++ b/src/tg_handler/counter.rs @@ -88,10 +88,7 @@ impl TGClient { let end_at = end_num.unwrap_or(1); let mut start_at = start_num.unwrap_or(-1); - info!( - "Starting message num {}, ending message num {}", - start_at, end_at - ); + info!("Starting message num {start_at}, ending message num {end_at}"); let last_sent = Arc::new(Mutex::new(Some(Instant::now()))); @@ -111,7 +108,7 @@ impl TGClient { if time_passed > 500 && time_passed < 1050 { sender.send(ProcessResult::FloodWait).unwrap(); context.request_repaint(); - }; + } // stop this thread if no activity for over 60 seconds if time_passed > 60000 { diff --git a/src/tg_handler/handler.rs b/src/tg_handler/handler.rs index 7b3b4e2..aadb544 100644 --- a/src/tg_handler/handler.rs +++ b/src/tg_handler/handler.rs @@ -99,7 +99,7 @@ impl TGClient { .await .map_err(ProcessError::UnknownError)?; - info!("Client authorization status: {}", authorized); + info!("Client authorization status: {authorized}"); if !authorized { self.send(ProcessResult::UnauthorizedClient(self.name())); diff --git a/src/tg_handler/initial_session.rs b/src/tg_handler/initial_session.rs index 2b0f61c..365e695 100644 --- a/src/tg_handler/initial_session.rs +++ b/src/tg_handler/initial_session.rs @@ -42,7 +42,7 @@ pub async fn connect_to_session( .await; let Ok(client) = client else { - info!("Failed to connect to session {}", name_without_session); + info!("Failed to connect to session {name_without_session}"); failed_session.push(name_without_session); continue; }; @@ -52,18 +52,12 @@ pub async fn connect_to_session( let authorized = client.is_authorized().await; let Ok(authorized) = authorized else { - info!( - "Failed to determine session authorization status {}", - name_without_session - ); + info!("Failed to determine session authorization status {name_without_session}"); failed_session.push(name_without_session); continue; }; - info!( - "Session {} authorization status: {}", - name_without_session, authorized - ); + info!("Session {name_without_session} authorization status: {authorized}"); if !authorized { failed_session.push(name_without_session); diff --git a/src/ui_components/initializer.rs b/src/ui_components/initializer.rs index 5216d02..6ec8a6d 100644 --- a/src/ui_components/initializer.rs +++ b/src/ui_components/initializer.rs @@ -68,7 +68,7 @@ impl MainWindow { cc.egui_ctx .options_mut(|a| a.theme_preference = ThemePreference::Dark); animator.theme_1_to_2 = false; - }; + } let (sender, receiver) = channel(); Self { @@ -110,7 +110,7 @@ impl App for MainWindow { for (_, client) in self.tg_clients.clone() { if client.is_temporary() { let joiner = self.runtime.spawn(async move { - client.start_process(ProcessStart::SessionLogout).await + client.start_process(ProcessStart::SessionLogout).await; }); joins.push(joiner); } @@ -144,7 +144,7 @@ impl App for MainWindow { .show_separator_line(true) .show(ctx, |ui| { if self.theme_animator.anim_id.is_none() { - self.theme_animator.create_id(ui) + self.theme_animator.create_id(ui); } else { self.theme_animator.animate(ctx); } @@ -172,7 +172,7 @@ impl App for MainWindow { self.theme_animator.start(); self.is_light_theme = !self.is_light_theme; save_theme(self.is_light_theme); - }; + } let hover_position = ui.make_persistent_id("tab_hover"); let selected_position = ui.make_persistent_id("tab_selected"); @@ -195,7 +195,7 @@ impl App for MainWindow { if resp.clicked() { let window_size = val.window_size(); ctx.send_viewport_cmd(ViewportCommand::InnerSize(window_size)); - self.tab_state = val + self.tab_state = val; } } }); @@ -212,7 +212,7 @@ impl App for MainWindow { ui.with_layout(Layout::right_to_left(Align::Center), |ui| { ui.add(Spinner::new()); }); - }; + } }); ui.add_space(0.5); }); @@ -226,7 +226,15 @@ impl App for MainWindow { TabState::Session => self.show_session_ui(ui), } - if !self.existing_sessions_checked { + if self.existing_sessions_checked { + // At each UI loop, check on the receiver channel to check if there is anything + // limit total number of messages to check on the receiver to prevent frame freeze + for _ in 0..self.counter.get_comm_limit() { + if !self.check_receiver() { + break; + } + } + } else { self.existing_sessions_checked = true; let existing_sessions = find_session_files(); if !existing_sessions.is_empty() { @@ -246,14 +254,6 @@ impl App for MainWindow { self.runtime.spawn(async move { check_version(version_body).await; }); - } else { - // At each UI loop, check on the receiver channel to check if there is anything - // limit total number of messages to check on the receiver to prevent frame freeze - for _ in 0..self.counter.get_comm_limit() { - if !self.check_receiver() { - break; - } - } } diff --git a/src/ui_components/keys_ui.rs b/src/ui_components/keys_ui.rs index 214d1c0..5ef6292 100644 --- a/src/ui_components/keys_ui.rs +++ b/src/ui_components/keys_ui.rs @@ -30,7 +30,7 @@ impl MainWindow { ui.with_layout(Layout::left_to_right(Align::Center), |ui| { if ui.link(tg_link).clicked() { open::that(tg_link).unwrap(); - }; + } }); ui.end_row(); diff --git a/src/ui_components/processor/date_handler.rs b/src/ui_components/processor/date_handler.rs index cc0eceb..6c8071d 100644 --- a/src/ui_components/processor/date_handler.rs +++ b/src/ui_components/processor/date_handler.rs @@ -60,13 +60,13 @@ impl DatePickerHandler { /// Compare the given date with the current Start and End date /// to find the oldest and the newest date pub fn update_dates(&mut self, date: NaiveDate) { - if self.start.map_or(true, |current| current > date) { + if self.start.is_none_or(|current| current > date) { self.from = date; self.start = Some(date); self.last_from = Some(date); } - if self.end.map_or(true, |current_date| current_date < date) { + if self.end.is_none_or(|current_date| current_date < date) { self.to = date; self.end = Some(date); self.last_to = Some(date); diff --git a/src/ui_components/processor/tg_comms.rs b/src/ui_components/processor/tg_comms.rs index ed8e69e..da1f538 100644 --- a/src/ui_components/processor/tg_comms.rs +++ b/src/ui_components/processor/tg_comms.rs @@ -34,12 +34,12 @@ impl MainWindow { self.load_blacklisted_users(); } ProcessResult::InvalidChat(chat_name) => { - info!("Invalid chat name found: {}", chat_name); + info!("Invalid chat name found: {chat_name}"); self.process_state = ProcessState::NonExistingChat(chat_name); self.go_next_or_stop(); } ProcessResult::UnauthorizedClient(client_name) => { - info!("{} is not authorized.", client_name); + info!("{client_name} is not authorized."); self.process_state = ProcessState::UnauthorizedClient(client_name); self.stop_process(); } @@ -123,10 +123,10 @@ impl MainWindow { // If current num = 100 and last processed = 105 // messages with 101, 102, 103 and 104 are missing/deleted // The current num is already getting processed so subtract 1 - let total_deleted = if last_number != -1 { - (last_number - current_message_number) - 1 - } else { + let total_deleted = if last_number == -1 { 0 + } else { + (last_number - current_message_number) - 1 }; self.t_count().add_deleted_message(total_deleted); @@ -366,7 +366,7 @@ impl MainWindow { let total_session = self.tg_clients.len(); let per_session_value = total_to_count / total_session as i32; - info!("Each session to process {}~ messages", per_session_value); + info!("Each session to process {per_session_value}~ messages"); self.counter.set_session_count(total_session); diff --git a/src/ui_components/tab_ui/blacklist.rs b/src/ui_components/tab_ui/blacklist.rs index df7c204..e7f2139 100644 --- a/src/ui_components/tab_ui/blacklist.rs +++ b/src/ui_components/tab_ui/blacklist.rs @@ -1,6 +1,4 @@ -use eframe::egui::{ - Align, Button, Grid, Label, Layout, Response, RichText, SelectableLabel, Sense, TextEdit, Ui, -}; +use eframe::egui::{Align, Button, Grid, Label, Layout, Response, RichText, Sense, TextEdit, Ui}; use egui_extras::Column; use egui_selectable_table::{ ColumnOperations, ColumnOrdering, SelectableRow, SelectableTable, SortOrder, @@ -77,18 +75,18 @@ impl ColumnOperations for ColumnName { let mut label = ui .add_sized( ui.available_size(), - SelectableLabel::new(is_selected, &row_text), + Button::selectable(is_selected, &row_text), ) .interact(Sense::drag()); if show_tooltip { label = label.on_hover_text(row_text); - }; + } label.context_menu(|ui| { if ui.button("Deleted Selected").clicked() { table.config.deleted_selected = true; - ui.close_menu(); - }; + ui.close(); + } }); label } @@ -246,7 +244,7 @@ impl MainWindow { let deleted = self.blacklist.remove_selected(); let total_to_remove = deleted.len(); self.process_state = ProcessState::BlacklistedUserRemoved(total_to_remove); - }; + } Grid::new("blacklist Grid") .num_columns(2) @@ -291,7 +289,7 @@ then right click on User Table to blacklist", .clicked() { self.blacklist.table.select_all(); - }; + } if ui .button("Delete Selected") .on_hover_text("Delete selected users from blacklist") @@ -300,7 +298,7 @@ then right click on User Table to blacklist", let deleted = self.blacklist.remove_selected(); let total_to_remove = deleted.len(); self.process_state = ProcessState::BlacklistedUserRemoved(total_to_remove); - }; + } if ui .button("Delete All") .on_hover_text("Delete all blacklisted users") @@ -308,7 +306,7 @@ then right click on User Table to blacklist", { let _ = self.blacklist.remove_all(); self.process_state = ProcessState::AllBlacklistRemoved; - }; + } }); let column_size = (ui.available_width() - 20.0) / 3.0; diff --git a/src/ui_components/tab_ui/charts.rs b/src/ui_components/tab_ui/charts.rs index 002e9b0..24a5729 100644 --- a/src/ui_components/tab_ui/charts.rs +++ b/src/ui_components/tab_ui/charts.rs @@ -488,11 +488,11 @@ impl MainWindow { if ui.button(format!("Previous {}", chart.date_nav.nav_name())).on_hover_text(previous_hover).clicked() { chart.date_nav.go_previous(); - }; + } if ui.button(format!("Next {}", chart.date_nav.nav_name())).on_hover_text(next_hover).clicked() { chart.date_nav.go_next(); - }; + } }); }); @@ -969,7 +969,7 @@ impl MainWindow { whitelist_chart = whitelist_chart.stack_on(&[&total_message_chart]); all_charts.push(total_message_chart); - }; + } } all_charts.push(whitelist_chart); } @@ -979,8 +979,8 @@ impl MainWindow { .width(1.0) .name(total_data_name); all_charts.push(total_message_chart); - }; - }; + } + } // User data stacking only happens on Message chart if self.chart().chart_type == ChartType::Message { @@ -1030,21 +1030,19 @@ impl MainWindow { let date_label; match chart_type { - ChartType::Message | ChartType::ActiveUser => { - match timing { - ChartTiming::Hourly | ChartTiming::Daily => { - date_label = date.to_string(); - } - ChartTiming::Weekly => { - let other_date = date.checked_add_days(Days::new(7)).unwrap(); - date_label = format!("{date} - {other_date}"); - } - ChartTiming::Monthly => { - let other_date = date.checked_add_months(Months::new(1)).unwrap(); - date_label = format!("{date} - {other_date}"); - } - }; - } + ChartType::Message | ChartType::ActiveUser => match timing { + ChartTiming::Hourly | ChartTiming::Daily => { + date_label = date.to_string(); + } + ChartTiming::Weekly => { + let other_date = date.checked_add_days(Days::new(7)).unwrap(); + date_label = format!("{date} - {other_date}"); + } + ChartTiming::Monthly => { + let other_date = date.checked_add_months(Months::new(1)).unwrap(); + date_label = format!("{date} - {other_date}"); + } + }, ChartType::MessageWeekDay | ChartType::ActiveUserWeekDay => { date_label = weekday_num_to_string(x_val as u8); } diff --git a/src/ui_components/tab_ui/counter.rs b/src/ui_components/tab_ui/counter.rs index 2038439..c287fd3 100644 --- a/src/ui_components/tab_ui/counter.rs +++ b/src/ui_components/tab_ui/counter.rs @@ -276,7 +276,7 @@ impl MainWindow { if start_button.clicked() { self.start_counting(); } - }; + } }); }); diff --git a/src/ui_components/tab_ui/session.rs b/src/ui_components/tab_ui/session.rs index 1cfaec3..deec1b2 100644 --- a/src/ui_components/tab_ui/session.rs +++ b/src/ui_components/tab_ui/session.rs @@ -253,7 +253,7 @@ If yes, it will try to log out before the app is closed and no session file will self.runtime.spawn(async move { client .start_process(ProcessStart::SignInCode(token, code)) - .await + .await; }); } @@ -269,7 +269,7 @@ If yes, it will try to log out before the app is closed and no session file will self.runtime.spawn(async move { client .start_process(ProcessStart::SignInPasswords(token, password)) - .await + .await; }); } } diff --git a/src/ui_components/tab_ui/user_table.rs b/src/ui_components/tab_ui/user_table.rs index d966f44..4ad7a30 100644 --- a/src/ui_components/tab_ui/user_table.rs +++ b/src/ui_components/tab_ui/user_table.rs @@ -1,7 +1,5 @@ use chrono::{NaiveDate, NaiveDateTime}; -use eframe::egui::{ - Align, Button, ComboBox, Key, Layout, Response, RichText, SelectableLabel, Sense, Ui, -}; +use eframe::egui::{Align, Button, ComboBox, Key, Layout, Response, RichText, Sense, Ui}; use egui_extras::{Column, DatePickerButton}; use egui_selectable_table::{ ColumnOperations, ColumnOrdering, SelectableRow, SelectableTable, SortOrder, @@ -121,7 +119,7 @@ impl ColumnOperations for ColumnName { let response = ui .add_sized( ui.available_size(), - SelectableLabel::new(is_selected, label_text), + Button::selectable(is_selected, label_text), ) .on_hover_text(hover_text); Some(response) @@ -169,21 +167,21 @@ impl ColumnOperations for ColumnName { if show_tooltip { label = label.on_hover_text(row_text); - }; + } label.context_menu(|ui| { if ui.button("Copy selected rows").clicked() { table.config.copy_selected = true; - ui.close_menu(); - }; + ui.close(); + } if ui.button("Whitelist selected rows").clicked() { table.config.whitelist_rows = true; - ui.close_menu(); - }; + ui.close(); + } if ui.button("Blacklist selected rows").clicked() { table.config.blacklisted_rows = true; - ui.close_menu(); - }; + ui.close(); + } }); label } @@ -466,7 +464,7 @@ impl UserTableData { /// Mark a row as whitelisted if exists pub fn set_as_whitelisted(&mut self, user_id: &[i64]) { - for (_d, row_data) in self.user_data.iter_mut() { + for row_data in self.user_data.values_mut() { for (id, row) in row_data.iter_mut() { for u_id in user_id { if id == u_id { @@ -479,7 +477,7 @@ impl UserTableData { } pub fn remove_blacklisted_rows(&mut self, user_id: &[i64]) { - for (_d, row_data) in self.user_data.iter_mut() { + for row_data in self.user_data.values_mut() { for id in user_id { row_data.remove(id); } @@ -489,7 +487,7 @@ impl UserTableData { /// Remove whitelist status from a row if exists pub fn remove_whitelist(&mut self, user_id: &[i64]) { - for (_d, row_data) in self.user_data.iter_mut() { + for row_data in self.user_data.values_mut() { for (id, row) in row_data.iter_mut() { for u_id in user_id { if id == u_id { @@ -541,7 +539,7 @@ impl MainWindow { self.table().export_data(&chat_name); self.process_state = ProcessState::DataExported(current_dir().unwrap().to_string_lossy().into()); - }; + } }); ui.separator(); @@ -613,11 +611,11 @@ impl MainWindow { if ui.button(format!("Previous {}", table.date_nav.nav_name())).on_hover_text(previous_hover).clicked() { table.date_nav.go_previous(); - }; + } if ui.button(format!("Next {}", table.date_nav.nav_name())).on_hover_text(next_hover).clicked() { table.date_nav.go_next(); - }; + } }); }); diff --git a/src/ui_components/tab_ui/whitelist.rs b/src/ui_components/tab_ui/whitelist.rs index 3d99642..07a8424 100644 --- a/src/ui_components/tab_ui/whitelist.rs +++ b/src/ui_components/tab_ui/whitelist.rs @@ -1,6 +1,4 @@ -use eframe::egui::{ - Align, Button, Grid, Label, Layout, Response, RichText, SelectableLabel, Sense, TextEdit, Ui, -}; +use eframe::egui::{Align, Button, Grid, Label, Layout, Response, RichText, Sense, TextEdit, Ui}; use egui_extras::Column; use egui_selectable_table::{ ColumnOperations, ColumnOrdering, SelectableRow, SelectableTable, SortOrder, @@ -77,18 +75,18 @@ impl ColumnOperations for ColumnName { let mut label = ui .add_sized( ui.available_size(), - SelectableLabel::new(is_selected, &row_text), + Button::selectable(is_selected, &row_text), ) .interact(Sense::drag()); if show_tooltip { label = label.on_hover_text(row_text); - }; + } label.context_menu(|ui| { if ui.button("Deleted Selected").clicked() { table.config.deleted_selected = true; - ui.close_menu(); - }; + ui.close(); + } }); label } @@ -297,7 +295,7 @@ then right click on User Table to whitelist", .clicked() { self.whitelist.table.select_all(); - }; + } if ui .button("Delete Selected") .on_hover_text("Delete selected users from whitelist") @@ -309,7 +307,7 @@ then right click on User Table to whitelist", self.table().remove_whitelist(&deleted); self.chart().reset_saved_bars(); self.process_state = ProcessState::WhitelistedUserRemoved(total_to_remove); - }; + } if ui .button("Delete All") .on_hover_text("Delete all whitelisted users") @@ -320,7 +318,7 @@ then right click on User Table to whitelist", self.table().remove_whitelist(&deleted); self.chart().reset_saved_bars(); self.process_state = ProcessState::AllWhitelistRemoved; - }; + } }); let column_size = (ui.available_width() - 20.0) / 3.0; diff --git a/src/utils.rs b/src/utils.rs index 182379c..676929d 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -27,7 +27,7 @@ pub fn find_session_files() -> Vec { for entry in entries { if let Ok(file_name) = entry.unwrap().file_name().into_string() { if file_name.ends_with(".session") { - info!("Found existing session file {}", file_name); + info!("Found existing session file {file_name}"); sessions.push(file_name); } } @@ -148,7 +148,7 @@ pub fn parse_tg_chat(text: &str) -> (Option, Option) { (chat_name, message_number) = split_tg_link(text); } else { chat_name = Some(text.to_string()); - }; + } } (chat_name, message_number) } @@ -163,7 +163,7 @@ fn split_tg_link(text: &str) -> (Option, Option) { if let Ok(num) = num.parse() { message_number = Some(num); } - }; + } (chat_name, message_number) } @@ -219,7 +219,7 @@ pub fn save_api_keys(api_keys: &TGKeys) { api_key_path.push("api_keys.json"); let mut file = File::create(api_key_path).unwrap(); file.write_all(data.as_bytes()).unwrap(); - }; + } } /// Reads the whitelisted user `PackedChat` Hex IDs and returns them @@ -457,5 +457,5 @@ pub fn save_theme(status: bool) { theme_path.push("theme.json"); let mut file = File::create(theme_path).unwrap(); file.write_all(data.as_bytes()).unwrap(); - }; + } } From ea04759768c0b2c5915bbc716f25e7c8173cba0e Mon Sep 17 00:00:00 2001 From: Rusty Pickle Date: Sun, 3 Aug 2025 19:51:13 +0600 Subject: [PATCH 4/7] Update search text-edit --- src/ui_components/tab_ui/charts.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ui_components/tab_ui/charts.rs b/src/ui_components/tab_ui/charts.rs index 24a5729..52de345 100644 --- a/src/ui_components/tab_ui/charts.rs +++ b/src/ui_components/tab_ui/charts.rs @@ -1,5 +1,7 @@ use chrono::{Datelike, Days, Duration, Months, NaiveDate, NaiveDateTime, Timelike, Weekday}; -use eframe::egui::{CentralPanel, ComboBox, Id, Key, Modal, ScrollArea, TopBottomPanel, Ui}; +use eframe::egui::{ + CentralPanel, ComboBox, Id, Key, Modal, ScrollArea, TextEdit, TopBottomPanel, Ui, +}; use egui_extras::DatePickerButton; use egui_plot::{Bar, BarChart, Legend, Plot, PlotPoint}; use nucleo_matcher::pattern::{CaseMatching, Normalization, Pattern}; @@ -257,12 +259,16 @@ impl ChartsData { ui.vertical_centered_justified(|ui| { if ui.button("Confirm").clicked() { self.modal_open = false; + self.search_text.clear(); } }) }); CentralPanel::default().show_inside(ui, |ui| { - ui.text_edit_singleline(&mut self.search_text); + let text_edit = + TextEdit::singleline(&mut self.search_text).hint_text("Search user"); + + ui.add(text_edit); ScrollArea::vertical().show(ui, |ui| { let all_keys = self.available_users.keys().cloned().collect::>(); @@ -295,6 +301,7 @@ impl ChartsData { if response.should_close() { self.modal_open = false; + self.search_text.clear(); } if !self.modal_open { From 0428ac9ec4fe3fa0749957ffe8b209324353195c Mon Sep 17 00:00:00 2001 From: Rusty Pickle Date: Sun, 3 Aug 2025 19:53:22 +0600 Subject: [PATCH 5/7] Update version --- Cargo.lock | 952 ++++++++++++++++++++++++++++++----------------------- Cargo.toml | 2 +- 2 files changed, 540 insertions(+), 414 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b944951..af81d4c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "ab_glyph" -version = "0.2.29" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +checksum = "e074464580a518d16a7126262fffaaa47af89d4099d4cb403f8ed938ba12ee7d" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -14,9 +14,9 @@ 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 = "accesskit" @@ -119,9 +119,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" @@ -136,12 +136,12 @@ dependencies = [ [[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.15", + "getrandom 0.3.3", "once_cell", "version_check", "zerocopy", @@ -163,7 +163,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.9.0", + "bitflags 2.9.1", "cc", "cesu8", "jni", @@ -200,18 +200,18 @@ dependencies = [ [[package]] name = "arboard" -version = "3.5.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1df21f715862ede32a0c525ce2ca4d52626bb0007f8c18b87a384503ac33e70" +checksum = "55f533f8e0af236ffe5eb979b99381df3258853f00ba2e44b6e1955292c75227" dependencies = [ "clipboard-win", "image", "log", - "objc2 0.6.0", - "objc2-app-kit 0.3.0", + "objc2 0.6.1", + "objc2-app-kit 0.3.1", "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.0", + "objc2-foundation 0.3.1", "parking_lot", "percent-encoding", "windows-sys 0.59.0", @@ -250,9 +250,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -262,22 +262,23 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" dependencies = [ "async-task", "concurrent-queue", "fastrand", "futures-lite", + "pin-project-lite", "slab", ] [[package]] name = "async-io" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" dependencies = [ "async-lock", "cfg-if", @@ -286,10 +287,9 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 0.38.44", + "rustix 1.0.8", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -305,9 +305,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" dependencies = [ "async-channel", "async-io", @@ -318,8 +318,7 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix 0.38.44", - "tracing", + "rustix 1.0.8", ] [[package]] @@ -335,9 +334,9 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" dependencies = [ "async-io", "async-lock", @@ -345,10 +344,10 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.44", + "rustix 1.0.8", "signal-hook-registry", "slab", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -426,15 +425,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -474,9 +473,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" dependencies = [ "serde", ] @@ -501,9 +500,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", @@ -514,24 +513,24 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytemuck" -version = "1.22.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.9.3" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" +checksum = "441473f2b4b0459a68628c744bc61d23e730fb00128b841d30fa4bb3972257e4" dependencies = [ "proc-macro2", "quote", @@ -556,7 +555,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "log", "polling", "rustix 0.38.44", @@ -578,9 +577,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.19" +version = "1.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" +checksum = "c3a42d84bb6b69d3a8b3eaacf0d88f179e1929695e1ad012b6cf64d9caaa5fd2" dependencies = [ "jobserver", "libc", @@ -595,9 +594,9 @@ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -641,9 +640,9 @@ dependencies = [ [[package]] name = "clipboard-win" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ "error-code", ] @@ -690,9 +689,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -748,9 +747,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -819,9 +818,18 @@ dependencies = [ [[package]] name = "cursor-icon" -version = "1.1.0" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "deranged" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] [[package]] name = "digest" @@ -852,7 +860,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -861,6 +869,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -898,9 +916,9 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dpi" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "ecolor" @@ -956,7 +974,7 @@ checksum = "8470210c95a42cc985d9ffebfd5067eea55bdb1c3f7611484907db9639675e28" dependencies = [ "accesskit", "ahash", - "bitflags 2.9.0", + "bitflags 2.9.1", "emath", "epaint", "log", @@ -1121,9 +1139,9 @@ dependencies = [ [[package]] name = "enumflags2" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" dependencies = [ "enumflags2_derive", "serde", @@ -1131,9 +1149,9 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", @@ -1186,19 +1204,19 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "error-code" -version = "3.3.1" +version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "event-listener" @@ -1238,9 +1256,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", @@ -1402,20 +1420,20 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "libc", @@ -1468,22 +1486,22 @@ dependencies = [ [[package]] name = "glutin" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03642b8b0cce622392deb0ee3e88511f75df2daac806102597905c3ea1974848" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg_aliases", "cgl", - "core-foundation 0.9.4", - "dispatch", + "dispatch2", "glutin_egl_sys", "glutin_glx_sys", "glutin_wgl_sys", "libloading", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", + "objc2 0.6.1", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", "once_cell", "raw-window-handle", "wayland-sys", @@ -1561,7 +1579,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17c75ce8d715d407a5767a94b5fd7b210106ec5c29c7be8ff4dfdca58de4dcf6" dependencies = [ "aes", - "getrandom 0.2.15", + "getrandom 0.2.16", "glass_pumpkin", "hmac", "num-bigint", @@ -1580,7 +1598,7 @@ dependencies = [ "bytes", "crc32fast", "flate2", - "getrandom 0.2.15", + "getrandom 0.2.16", "grammers-crypto", "grammers-tl-types", "log", @@ -1646,9 +1664,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" dependencies = [ "atomic-waker", "bytes", @@ -1676,9 +1694,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "foldhash", ] @@ -1691,15 +1709,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - -[[package]] -name = "hermit-abi" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -1722,15 +1734,6 @@ dependencies = [ "digest", ] -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "http" version = "1.3.1" @@ -1799,11 +1802,10 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", @@ -1882,21 +1884,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -1905,31 +1908,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -1937,67 +1920,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "idna" version = "1.0.3" @@ -2011,9 +1981,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -2034,9 +2004,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", "hashbrown", @@ -2057,7 +2027,7 @@ version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg-if", "libc", ] @@ -2093,7 +2063,7 @@ version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.5.0", + "hermit-abi", "libc", "windows-sys 0.59.0", ] @@ -2142,15 +2112,15 @@ version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ - "getrandom 0.3.2", + "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" +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" [[package]] name = "js-sys" @@ -2170,18 +2140,18 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "libc" -version = "0.2.172" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libloading" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.53.3", ] [[package]] @@ -2192,13 +2162,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "libc", - "redox_syscall 0.5.11", + "redox_syscall 0.5.17", ] [[package]] @@ -2215,15 +2185,15 @@ checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "litrs" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" [[package]] name = "locate-locale" @@ -2236,9 +2206,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -2258,15 +2228,15 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" dependencies = [ "libc", ] @@ -2298,9 +2268,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", "simd-adler32", @@ -2308,13 +2278,13 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "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]] @@ -2325,7 +2295,7 @@ checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg_aliases", "codespan-reporting", "half", @@ -2335,7 +2305,7 @@ dependencies = [ "log", "num-traits", "once_cell", - "rustc-hash", + "rustc-hash 1.1.0", "strum 0.26.3", "thiserror 2.0.12", "unicode-ident", @@ -2364,7 +2334,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "jni-sys", "log", "ndk-sys", @@ -2394,7 +2364,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg-if", "cfg_aliases", "libc", @@ -2428,6 +2398,12 @@ dependencies = [ "rand", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.46" @@ -2449,18 +2425,19 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2486,9 +2463,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3531f65190d9cff863b77a99857e74c314dd16bf56c538c4b57c7cbc3f3a6e59" +checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" dependencies = [ "objc2-encode", ] @@ -2499,7 +2476,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "block2", "libc", "objc2 0.5.2", @@ -2511,14 +2488,15 @@ dependencies = [ [[package]] name = "objc2-app-kit" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5906f93257178e2f7ae069efb89fbd6ee94f0592740b5f8a1512ca498814d0fb" +checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" dependencies = [ - "bitflags 2.9.0", - "objc2 0.6.0", + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.0", + "objc2-foundation 0.3.1", ] [[package]] @@ -2527,7 +2505,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "block2", "objc2 0.5.2", "objc2-core-location", @@ -2551,7 +2529,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2559,22 +2537,24 @@ dependencies = [ [[package]] name = "objc2-core-foundation" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daeaf60f25471d26948a1c2f840e3f7d86f4109e3af4e8e4b5cd70c39690d925" +checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" dependencies = [ - "bitflags 2.9.0", - "objc2 0.6.0", + "bitflags 2.9.1", + "dispatch2", + "objc2 0.6.1", ] [[package]] name = "objc2-core-graphics" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dca602628b65356b6513290a21a6405b4d4027b8b250f0b98dddbb28b7de02" +checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" dependencies = [ - "bitflags 2.9.0", - "objc2 0.6.0", + "bitflags 2.9.1", + "dispatch2", + "objc2 0.6.1", "objc2-core-foundation", "objc2-io-surface", ] @@ -2615,7 +2595,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "block2", "dispatch", "libc", @@ -2624,23 +2604,23 @@ dependencies = [ [[package]] name = "objc2-foundation" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a21c6c9014b82c39515db5b396f91645182611c97d24637cf56ac01e5f8d998" +checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" dependencies = [ - "bitflags 2.9.0", - "objc2 0.6.0", + "bitflags 2.9.1", + "objc2 0.6.1", "objc2-core-foundation", ] [[package]] name = "objc2-io-surface" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161a8b87e32610086e1a7a9e9ec39f84459db7b3a0881c1f16ca5a2605581c19" +checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" dependencies = [ - "bitflags 2.9.0", - "objc2 0.6.0", + "bitflags 2.9.1", + "objc2 0.6.1", "objc2-core-foundation", ] @@ -2662,7 +2642,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2674,7 +2654,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2697,7 +2677,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "block2", "objc2 0.5.2", "objc2-cloud-kit", @@ -2729,7 +2709,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "block2", "objc2 0.5.2", "objc2-core-location", @@ -2764,11 +2744,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.72" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg-if", "foreign-types 0.3.2", "libc", @@ -2796,9 +2776,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.107" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -2833,19 +2813,20 @@ dependencies = [ [[package]] name = "os_info" -version = "3.10.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a604e53c24761286860eba4e2c8b23a0161526476b1de520139d69cdb85a6b5" +checksum = "d0e1ac5fde8d43c34139135df8ea9ee9465394b2d8d20f032d38998f64afffc3" dependencies = [ "log", + "plist", "windows-sys 0.52.0", ] [[package]] name = "owned_ttf_parser" -version = "0.25.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" dependencies = [ "ttf-parser", ] @@ -2858,9 +2839,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -2868,13 +2849,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.11", + "redox_syscall 0.5.17", "smallvec", "windows-targets 0.52.6", ] @@ -2950,6 +2931,19 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plist" +version = "1.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1" +dependencies = [ + "base64", + "indexmap", + "quick-xml 0.38.0", + "serde", + "time", +] + [[package]] name = "png" version = "0.17.16" @@ -2965,17 +2959,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.4" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "8ee9b2fa7a4517d2c91ff5bc6c297a427a96749d15f98fcdbb22c05571a4d4b7" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi", "pin-project-lite", - "rustix 0.38.44", - "tracing", - "windows-sys 0.59.0", + "rustix 1.0.8", + "windows-sys 0.60.2", ] [[package]] @@ -2984,6 +2977,21 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "pretty_env_logger" version = "0.5.0" @@ -3005,18 +3013,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" [[package]] name = "quick-xml" @@ -3030,9 +3038,18 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.37.4" +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" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4ce8c88de324ff838700f36fb6ab86c96df0e3c4ab6ef3a9b2044465cce1369" +checksum = "8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b" dependencies = [ "memchr", ] @@ -3048,9 +3065,9 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" @@ -3067,7 +3084,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -3107,20 +3124,20 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.11" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] [[package]] name = "redox_users" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libredox", "thiserror 2.0.12", ] @@ -3208,7 +3225,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -3216,9 +3233,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -3226,13 +3243,19 @@ 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.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3241,22 +3264,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.5" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.23.26" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "once_cell", "rustls-pki-types", @@ -3267,15 +3290,18 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] [[package]] name = "rustls-webpki" -version = "0.103.1" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", "rustls-pki-types", @@ -3284,9 +3310,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" @@ -3343,7 +3369,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -3388,9 +3414,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.141" +version = "1.0.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" dependencies = [ "itoa", "memchr", @@ -3434,9 +3460,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -3451,9 +3477,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", ] @@ -3466,12 +3492,9 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "slotmap" @@ -3484,9 +3507,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smithay-client-toolkit" @@ -3494,7 +3517,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "calloop", "calloop-wayland-source", "cursor-icon", @@ -3609,9 +3632,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.100" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -3629,9 +3652,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", @@ -3644,7 +3667,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -3661,7 +3684,7 @@ dependencies = [ [[package]] name = "talon-gui" -version = "1.1.0" +version = "1.2.0" dependencies = [ "chrono", "csv", @@ -3694,14 +3717,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.19.1" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ "fastrand", - "getrandom 0.3.2", + "getrandom 0.3.3", "once_cell", - "rustix 1.0.5", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -3765,6 +3788,37 @@ dependencies = [ "weezl", ] +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tiny-skia" version = "0.11.4" @@ -3792,9 +3846,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -3802,9 +3856,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.47.0" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", @@ -3839,9 +3893,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.14" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -3852,15 +3906,15 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "toml_datetime", @@ -3888,7 +3942,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "bytes", "futures-util", "http", @@ -3925,9 +3979,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", @@ -3936,9 +3990,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", ] @@ -3957,11 +4011,11 @@ checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" [[package]] name = "type-map" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rustc-hash", + "rustc-hash 2.1.1", ] [[package]] @@ -4001,9 +4055,9 @@ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.14" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "untrusted" @@ -4022,12 +4076,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -4067,9 +4115,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" @@ -4153,13 +4201,13 @@ dependencies = [ [[package]] name = "wayland-backend" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7208998eaa3870dad37ec8836979581506e0c5c64c20c9e79e9d2a10d6f47bf" +checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" dependencies = [ "cc", "downcast-rs", - "rustix 0.38.44", + "rustix 1.0.8", "scoped-tls", "smallvec", "wayland-sys", @@ -4167,12 +4215,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.8" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2120de3d33638aaef5b9f4472bff75f07c56379cf76ea320bd3a3d65ecaf73f" +checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" dependencies = [ - "bitflags 2.9.0", - "rustix 0.38.44", + "bitflags 2.9.1", + "rustix 1.0.8", "wayland-backend", "wayland-scanner", ] @@ -4183,29 +4231,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.8" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a93029cbb6650748881a00e4922b076092a6a08c11e7fbdb923f064b23968c5d" +checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" dependencies = [ - "rustix 0.38.44", + "rustix 1.0.8", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.32.6" +version = "0.32.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0781cf46869b37e36928f7b432273c0995aa8aed9552c556fb18754420541efc" +checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4213,11 +4261,11 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ccaacc76703fefd6763022ac565b590fcade92202492381c95b2edfdf7d46b3" +checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4226,11 +4274,11 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248a02e6f595aad796561fa82d25601bd2c8c3b145b1c7453fc8f94c1a58f8b2" +checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4239,20 +4287,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.6" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" +checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" dependencies = [ "proc-macro2", - "quick-xml 0.37.4", + "quick-xml 0.37.5", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.6" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" +checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" dependencies = [ "dlib", "log", @@ -4282,26 +4330,25 @@ dependencies = [ [[package]] name = "webbrowser" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5df295f8451142f1856b1bd86a606dfe9587d439bc036e319c827700dbd555e" +checksum = "aaf4f3c0ba838e82b4e5ccc4157003fb8c324ee24c058470ffb82820becbde98" dependencies = [ - "core-foundation 0.10.0", - "home", + "core-foundation 0.10.1", "jni", "log", "ndk-context", - "objc2 0.6.0", - "objc2-foundation 0.3.0", + "objc2 0.6.1", + "objc2-foundation 0.3.1", "url", "web-sys", ] [[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" @@ -4310,7 +4357,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec8fb398f119472be4d80bc3647339f56eb63b2a331f6a3d16e25d8144197dd9" dependencies = [ "arrayvec", - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg_aliases", "document-features", "hashbrown", @@ -4338,7 +4385,7 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg_aliases", "document-features", "hashbrown", @@ -4350,7 +4397,7 @@ dependencies = [ "portable-atomic", "profiling", "raw-window-handle", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.12", "wgpu-core-deps-windows-linux-android", @@ -4373,7 +4420,7 @@ version = "25.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f968767fe4d3d33747bbd1473ccd55bf0f6451f55d733b5597e67b5deab4ad17" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg_aliases", "libloading", "log", @@ -4392,7 +4439,7 @@ version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2aa49460c2a8ee8edba3fca54325540d904dd85b2e086ada762767e17d06e8bc" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "bytemuck", "js-sys", "log", @@ -4571,6 +4618,15 @@ 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.3", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -4610,13 +4666,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "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]] name = "windows-threading" version = "0.1.0" @@ -4644,6 +4717,12 @@ 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 = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -4662,6 +4741,12 @@ 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 = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -4680,12 +4765,24 @@ 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 = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -4704,6 +4801,12 @@ 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 = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -4722,6 +4825,12 @@ 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 = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -4740,6 +4849,12 @@ 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 = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -4758,16 +4873,22 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winit" -version = "0.30.9" +version = "0.30.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a809eacf18c8eca8b6635091543f02a5a06ddf3dad846398795460e6e0ae3cc0" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.9.0", + "bitflags 2.9.1", "block2", "bytemuck", "calloop", @@ -4812,9 +4933,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.6" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ "memchr", ] @@ -4825,20 +4946,14 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "x11-dl" @@ -4874,9 +4989,9 @@ checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" [[package]] name = "xcursor" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" [[package]] name = "xkbcommon-dl" @@ -4884,7 +4999,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "dlib", "log", "once_cell", @@ -4899,15 +5014,15 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -4917,9 +5032,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", @@ -5026,18 +5141,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", @@ -5071,11 +5186,22 @@ 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.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -5084,9 +5210,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 8a0ddb1..2b5bc16 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "talon-gui" -version = "1.1.0" +version = "1.2.0" edition = "2021" authors = ["TheRustyPickle "] readme = "README.md" From b22a7a9259535773064a18e0e1a10792d87ecba9 Mon Sep 17 00:00:00 2001 From: Rusty Pickle Date: Sun, 3 Aug 2025 19:53:53 +0600 Subject: [PATCH 6/7] Use 2024 edition --- Cargo.toml | 2 +- src/main.rs | 6 +- src/tg_handler/communication.rs | 2 +- src/tg_handler/counter.rs | 34 ++++++----- src/tg_handler/handler.rs | 4 +- src/tg_handler/new_session.rs | 2 +- src/ui_components/initializer.rs | 10 ++-- src/ui_components/keys_ui.rs | 4 +- src/ui_components/processor/states.rs | 79 +++++++++++++++++++------ src/ui_components/processor/tg_comms.rs | 6 +- src/ui_components/tab_ui/blacklist.rs | 2 +- src/ui_components/tab_ui/charts.rs | 4 +- src/ui_components/tab_ui/counter.rs | 4 +- src/ui_components/tab_ui/session.rs | 6 +- src/ui_components/tab_ui/user_table.rs | 2 +- src/ui_components/tab_ui/whitelist.rs | 2 +- src/utils.rs | 6 +- 17 files changed, 111 insertions(+), 64 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2b5bc16..0bf6729 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "talon-gui" version = "1.2.0" -edition = "2021" +edition = "2024" authors = ["TheRustyPickle "] readme = "README.md" description = """ diff --git a/src/main.rs b/src/main.rs index 4306541..bf3bbb0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,10 +4,10 @@ mod utils; use crate::ui_components::MainWindow; use dirs::data_local_dir; -use eframe::{egui, NativeOptions}; -use egui::{vec2, ViewportBuilder}; +use eframe::{NativeOptions, egui}; +use egui::{ViewportBuilder, vec2}; use env::set_current_dir; -use log::{info, LevelFilter}; +use log::{LevelFilter, info}; use std::env; use std::fs; diff --git a/src/tg_handler/communication.rs b/src/tg_handler/communication.rs index 7149679..6a2fa7c 100644 --- a/src/tg_handler/communication.rs +++ b/src/tg_handler/communication.rs @@ -1,8 +1,8 @@ use grammers_client::types::iter_buffer::InvocationError; use grammers_client::types::{LoginToken, PasswordToken}; use grammers_mtsender::AuthorizationError; -use std::sync::atomic::AtomicBool; use std::sync::Arc; +use std::sync::atomic::AtomicBool; use tokio::sync::Mutex; use crate::tg_handler::{TGClient, TGCountData}; diff --git a/src/tg_handler/counter.rs b/src/tg_handler/counter.rs index f418799..d3d6fa5 100644 --- a/src/tg_handler/counter.rs +++ b/src/tg_handler/counter.rs @@ -98,24 +98,26 @@ impl TGClient { // Every 500 ms, check when the last communication was made with the GUI. // If over 500, let the GUI side know that a flood wait was triggered - thread::spawn(move || loop { - sleep(Duration::from_millis(500)); - - let last_sent = last_sent_clone.lock().unwrap(); - - if let Some(last_sent) = *last_sent { - let time_passed = last_sent.elapsed().as_millis(); - if time_passed > 500 && time_passed < 1050 { - sender.send(ProcessResult::FloodWait).unwrap(); - context.request_repaint(); - } - - // stop this thread if no activity for over 60 seconds - if time_passed > 60000 { + thread::spawn(move || { + loop { + sleep(Duration::from_millis(500)); + + let last_sent = last_sent_clone.lock().unwrap(); + + if let Some(last_sent) = *last_sent { + let time_passed = last_sent.elapsed().as_millis(); + if time_passed > 500 && time_passed < 1050 { + sender.send(ProcessResult::FloodWait).unwrap(); + context.request_repaint(); + } + + // stop this thread if no activity for over 60 seconds + if time_passed > 60000 { + break; + } + } else { break; } - } else { - break; } }); diff --git a/src/tg_handler/handler.rs b/src/tg_handler/handler.rs index aadb544..22dd072 100644 --- a/src/tg_handler/handler.rs +++ b/src/tg_handler/handler.rs @@ -1,11 +1,11 @@ use eframe::egui::Context; -use grammers_client::types::Chat; use grammers_client::Client; +use grammers_client::types::Chat; use log::{error, info}; use std::sync::mpsc::Sender; use crate::tg_handler::{ - connect_to_session, send_login_code, NewProcess, ProcessError, ProcessResult, ProcessStart, + NewProcess, ProcessError, ProcessResult, ProcessStart, connect_to_session, send_login_code, }; #[derive(Clone)] diff --git a/src/tg_handler/new_session.rs b/src/tg_handler/new_session.rs index 9080399..b0a4304 100644 --- a/src/tg_handler/new_session.rs +++ b/src/tg_handler/new_session.rs @@ -4,8 +4,8 @@ use grammers_client::{Client, Config, FixedReconnect, InitParams, SignInError}; use grammers_session::Session; use log::{error, info}; use std::fs; -use std::sync::mpsc::Sender; use std::sync::Arc; +use std::sync::mpsc::Sender; use tokio::sync::Mutex; use crate::tg_handler::{ProcessError, ProcessResult, TGClient}; diff --git a/src/ui_components/initializer.rs b/src/ui_components/initializer.rs index 6ec8a6d..d8861b6 100644 --- a/src/ui_components/initializer.rs +++ b/src/ui_components/initializer.rs @@ -1,4 +1,4 @@ -use eframe::{egui, App, CreationContext, Frame}; +use eframe::{App, CreationContext, Frame, egui}; use egui::{ Align, Button, CentralPanel, Context, CornerRadius, FontData, FontDefinitions, FontFamily, Id, Layout, Modal, ScrollArea, Spinner, ThemePreference, TopBottomPanel, ViewportCommand, Visuals, @@ -8,20 +8,20 @@ use log::info; use std::collections::{BTreeMap, HashMap}; use std::slice::IterMut; use std::sync::atomic::AtomicBool; -use std::sync::mpsc::{channel, Receiver, Sender}; +use std::sync::mpsc::{Receiver, Sender, channel}; use std::sync::{Arc, Mutex}; use strum::IntoEnumIterator; use tokio::runtime::Runtime; -use crate::tg_handler::{start_process, NewProcess, ProcessResult, ProcessStart, TGClient}; +use crate::tg_handler::{NewProcess, ProcessResult, ProcessStart, TGClient, start_process}; +use crate::ui_components::TGKeys; use crate::ui_components::processor::{ - check_version, download_font, AppState, CounterCounts, ParsedChat, ProcessState, TabState, + AppState, CounterCounts, ParsedChat, ProcessState, TabState, check_version, download_font, }; use crate::ui_components::tab_ui::{ BlacklistData, ChartsData, CounterData, SessionData, UserTableData, WhitelistData, }; use crate::ui_components::widgets::AnimatedLabel; -use crate::ui_components::TGKeys; use crate::utils::{ find_session_files, get_api_keys, get_font_data, get_runtime, last_theme, save_theme, theme_hover_text, diff --git a/src/ui_components/keys_ui.rs b/src/ui_components/keys_ui.rs index 5ef6292..59742e3 100644 --- a/src/ui_components/keys_ui.rs +++ b/src/ui_components/keys_ui.rs @@ -1,8 +1,8 @@ -use eframe::egui::{vec2, Align, Button, CentralPanel, Context, Grid, Label, Layout, TextEdit}; +use eframe::egui::{Align, Button, CentralPanel, Context, Grid, Label, Layout, TextEdit, vec2}; use serde::{Deserialize, Serialize}; -use crate::ui_components::processor::AppState; use crate::ui_components::MainWindow; +use crate::ui_components::processor::AppState; use crate::utils::save_api_keys; #[derive(Deserialize, Serialize, Default)] diff --git a/src/ui_components/processor/states.rs b/src/ui_components/processor/states.rs index 459435f..31edad3 100644 --- a/src/ui_components/processor/states.rs +++ b/src/ui_components/processor/states.rs @@ -1,4 +1,4 @@ -use eframe::egui::{vec2, Vec2}; +use eframe::egui::{Vec2, vec2}; use grammers_client::types::Chat; use serde::{Deserialize, Serialize}; use std::fmt::{self, Display}; @@ -97,7 +97,7 @@ impl Display for ProcessState { match self { ProcessState::Idle => write!(f, "Status: Idle"), ProcessState::InitialClientConnectionSuccessful(text) => { - write!(f, "Status: {text}", ) + write!(f, "Status: {text}",) } ProcessState::Counting(count) => { write!(f, "Status: Checking messages")?; @@ -106,7 +106,9 @@ impl Display for ProcessState { } Ok(()) } - ProcessState::InvalidStartChat => write!(f, "Status: Could not detect any valid chat details"), + ProcessState::InvalidStartChat => { + write!(f, "Status: Could not detect any valid chat details") + } ProcessState::DataCopied => { write!(f, "Status: Selected table data copied.",) } @@ -126,32 +128,71 @@ impl Display for ProcessState { } ProcessState::SendingTGCode => write!(f, "Status: Trying to send Telegram login code"), ProcessState::TGCodeSent => write!(f, "Status: Telegram code was sent"), - ProcessState::LogInWithCode => write!(f, "Status: Trying to login to the session with the code"), - ProcessState::LogInWithPassword => write!(f, "Trying to login to the session with the password"), + ProcessState::LogInWithCode => { + write!(f, "Status: Trying to login to the session with the code") + } + ProcessState::LogInWithPassword => { + write!(f, "Trying to login to the session with the password") + } ProcessState::LoggedIn(name) => write!(f, "Status: Logged in session {name}"), ProcessState::InvalidTGCode => write!(f, "Status: Invalid TG Code given"), ProcessState::InvalidPassword => write!(f, "Status: Invalid password given"), - ProcessState::NotSignedUp => write!(f, "Status: Account not signed up with this phone number"), + ProcessState::NotSignedUp => { + write!(f, "Status: Account not signed up with this phone number") + } ProcessState::UnknownError => write!(f, "Status: Unknown error acquired"), - ProcessState::EmptySelectedSession => write!(f, "Status: No session is selected. Create a new session from the Session tab"), - ProcessState::InvalidPhoneOrAPI => write!(f, "Status: Unknown error acquired. Possibly invalid phone number given or API keys are invalid"), - ProcessState::InvalidAPIKeys => write!(f, "Status: Failed to parse saved API keys. Are the API keys valid?"), - ProcessState::PasswordRequired => write!(f, "Status: Account requires a password authentication"), - ProcessState::FloodWait => write!(f, "Status: Flood wait triggered. Will resume again soon"), + ProcessState::EmptySelectedSession => write!( + f, + "Status: No session is selected. Create a new session from the Session tab" + ), + ProcessState::InvalidPhoneOrAPI => write!( + f, + "Status: Unknown error acquired. Possibly invalid phone number given or API keys are invalid" + ), + ProcessState::InvalidAPIKeys => write!( + f, + "Status: Failed to parse saved API keys. Are the API keys valid?" + ), + ProcessState::PasswordRequired => { + write!(f, "Status: Account requires a password authentication") + } + ProcessState::FloodWait => { + write!(f, "Status: Flood wait triggered. Will resume again soon") + } ProcessState::UsersWhitelisted(num) => write!(f, "Status: Whitelisted {num} users"), ProcessState::UsersBlacklisted(num) => write!(f, "Status: Blacklisted {num} users"), - ProcessState::LoadedWhitelistedUsers(success, failed) => write!(f, "Status: Loaded {success} whitelisted users. Failed to load {failed} users"), - ProcessState::LoadedBlacklistedUsers(success, failed) => write!(f, "Status: Loaded {success} blacklisted users. Failed to load {failed} users"), - ProcessState::FailedLoadWhitelistedUsers => write!(f, "Status: Failed to load whitelisted users due to invalid saved data. Old data has been removed"), - ProcessState::FailedLoadBlacklistedUsers => write!(f, "Status: Failed to load blacklisted users due to invalid saved data. Old data has been removed"), - ProcessState::WhitelistedUserRemoved(num) => write!(f, "Status: {num} whitelisted users removed"), - ProcessState::BlacklistedUserRemoved(num) => write!(f, "Status: {num} blacklisted users removed"), + ProcessState::LoadedWhitelistedUsers(success, failed) => write!( + f, + "Status: Loaded {success} whitelisted users. Failed to load {failed} users" + ), + ProcessState::LoadedBlacklistedUsers(success, failed) => write!( + f, + "Status: Loaded {success} blacklisted users. Failed to load {failed} users" + ), + ProcessState::FailedLoadWhitelistedUsers => write!( + f, + "Status: Failed to load whitelisted users due to invalid saved data. Old data has been removed" + ), + ProcessState::FailedLoadBlacklistedUsers => write!( + f, + "Status: Failed to load blacklisted users due to invalid saved data. Old data has been removed" + ), + ProcessState::WhitelistedUserRemoved(num) => { + write!(f, "Status: {num} whitelisted users removed") + } + ProcessState::BlacklistedUserRemoved(num) => { + write!(f, "Status: {num} blacklisted users removed") + } ProcessState::AllWhitelistRemoved => write!(f, "Status: All whitelisted users removed"), ProcessState::AllBlacklistRemoved => write!(f, "Status: All blacklisted users removed"), ProcessState::AddedToWhitelist => write!(f, "Status: User added to whitelist"), ProcessState::AddedToBlacklist => write!(f, "Status: User added to blacklist"), - ProcessState::LatestMessageLoadingFailed => write!(f, "Status: Failed to get the latest message"), - ProcessState::DataExported(location) => write!(f, "Status: Data exported to {location}"), + ProcessState::LatestMessageLoadingFailed => { + write!(f, "Status: Failed to get the latest message") + } + ProcessState::DataExported(location) => { + write!(f, "Status: Data exported to {location}") + } } } } diff --git a/src/ui_components/processor/tg_comms.rs b/src/ui_components/processor/tg_comms.rs index da1f538..89cdd5e 100644 --- a/src/ui_components/processor/tg_comms.rs +++ b/src/ui_components/processor/tg_comms.rs @@ -3,8 +3,8 @@ use log::{error, info}; use std::sync::atomic::Ordering; use crate::tg_handler::{ProcessError, ProcessResult, ProcessStart}; -use crate::ui_components::processor::ProcessState; use crate::ui_components::MainWindow; +use crate::ui_components::processor::ProcessState; use crate::utils::to_chart_name; impl MainWindow { @@ -188,7 +188,9 @@ impl MainWindow { self.process_state = ProcessState::NotSignedUp; } ProcessError::UnknownError(e) => { - error!("Unknown error encountered while trying to complete the process. {e}"); + error!( + "Unknown error encountered while trying to complete the process. {e}" + ); self.process_state = ProcessState::UnknownError; } ProcessError::InvalidPassword => { diff --git a/src/ui_components/tab_ui/blacklist.rs b/src/ui_components/tab_ui/blacklist.rs index e7f2139..22a1d49 100644 --- a/src/ui_components/tab_ui/blacklist.rs +++ b/src/ui_components/tab_ui/blacklist.rs @@ -8,8 +8,8 @@ use log::{error, info}; use std::collections::HashSet; use crate::tg_handler::ProcessStart; -use crate::ui_components::processor::{ColumnName, PackedBlacklistedUser, ProcessState}; use crate::ui_components::MainWindow; +use crate::ui_components::processor::{ColumnName, PackedBlacklistedUser, ProcessState}; use crate::utils::{get_blacklisted, save_blacklisted_users, separate_blacklist_by_seen}; #[derive(Default)] diff --git a/src/ui_components/tab_ui/charts.rs b/src/ui_components/tab_ui/charts.rs index 52de345..cada28c 100644 --- a/src/ui_components/tab_ui/charts.rs +++ b/src/ui_components/tab_ui/charts.rs @@ -4,14 +4,14 @@ use eframe::egui::{ }; use egui_extras::DatePickerButton; use egui_plot::{Bar, BarChart, Legend, Plot, PlotPoint}; -use nucleo_matcher::pattern::{CaseMatching, Normalization, Pattern}; use nucleo_matcher::Matcher; +use nucleo_matcher::pattern::{CaseMatching, Normalization, Pattern}; use std::collections::{BTreeMap, BTreeSet, HashMap}; use strum::IntoEnumIterator; +use crate::ui_components::MainWindow; use crate::ui_components::processor::{ChartTiming, ChartType, DateNavigator, NavigationType}; use crate::ui_components::widgets::AnimatedLabel; -use crate::ui_components::MainWindow; use crate::utils::{time_to_string, weekday_num_to_string}; #[derive(Default)] diff --git a/src/ui_components/tab_ui/counter.rs b/src/ui_components/tab_ui/counter.rs index c287fd3..453a4a2 100644 --- a/src/ui_components/tab_ui/counter.rs +++ b/src/ui_components/tab_ui/counter.rs @@ -1,13 +1,13 @@ use eframe::egui::{ - vec2, Align, Button, ComboBox, Grid, Label, Layout, ProgressBar, TextEdit, Ui, ViewportCommand, + Align, Button, ComboBox, Grid, Label, Layout, ProgressBar, TextEdit, Ui, ViewportCommand, vec2, }; use log::info; use std::collections::HashMap; use std::sync::atomic::Ordering; use crate::tg_handler::ProcessStart; -use crate::ui_components::processor::{CounterCounts, ParsedChat, ProcessState}; use crate::ui_components::MainWindow; +use crate::ui_components::processor::{CounterCounts, ParsedChat, ProcessState}; use crate::utils::{chat_to_text, parse_chat_details}; const LIMIT_SELECTION: [&str; 5] = ["30", "40", "50", "80", "100"]; diff --git a/src/ui_components/tab_ui/session.rs b/src/ui_components/tab_ui/session.rs index deec1b2..aa80bb9 100644 --- a/src/ui_components/tab_ui/session.rs +++ b/src/ui_components/tab_ui/session.rs @@ -1,11 +1,11 @@ -use eframe::egui::{vec2, Align, Button, Checkbox, Context, Grid, Label, Layout, TextEdit, Ui}; +use eframe::egui::{Align, Button, Checkbox, Context, Grid, Label, Layout, TextEdit, Ui, vec2}; use grammers_client::types::{LoginToken, PasswordToken}; use std::sync::Arc; use tokio::sync::Mutex; -use crate::tg_handler::{start_process, NewProcess, ProcessStart}; -use crate::ui_components::processor::ProcessState; +use crate::tg_handler::{NewProcess, ProcessStart, start_process}; use crate::ui_components::MainWindow; +use crate::ui_components::processor::ProcessState; #[derive(Default)] pub struct SessionData { diff --git a/src/ui_components/tab_ui/user_table.rs b/src/ui_components/tab_ui/user_table.rs index 4ad7a30..41cbcf5 100644 --- a/src/ui_components/tab_ui/user_table.rs +++ b/src/ui_components/tab_ui/user_table.rs @@ -11,12 +11,12 @@ use std::collections::{HashMap, HashSet}; use std::env::current_dir; use strum::IntoEnumIterator; +use crate::ui_components::MainWindow; use crate::ui_components::processor::{ ColumnName, DateNavigator, NavigationType, PackedBlacklistedUser, PackedWhitelistedUser, ProcessState, }; use crate::ui_components::widgets::{AnimatedLabel, RowLabel}; -use crate::ui_components::MainWindow; use crate::utils::{entry_insert_user, export_table_data, to_chart_name}; #[derive(Default)] diff --git a/src/ui_components/tab_ui/whitelist.rs b/src/ui_components/tab_ui/whitelist.rs index 07a8424..c2c4d1a 100644 --- a/src/ui_components/tab_ui/whitelist.rs +++ b/src/ui_components/tab_ui/whitelist.rs @@ -8,8 +8,8 @@ use log::{error, info}; use std::collections::HashSet; use crate::tg_handler::ProcessStart; -use crate::ui_components::processor::{ColumnName, PackedWhitelistedUser, ProcessState}; use crate::ui_components::MainWindow; +use crate::ui_components::processor::{ColumnName, PackedWhitelistedUser, ProcessState}; use crate::utils::{get_whitelisted, save_whitelisted_users, separate_whitelist_by_seen}; #[derive(Default)] diff --git a/src/utils.rs b/src/utils.rs index 676929d..e0145d8 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -9,11 +9,11 @@ use std::io::{Read, Write}; use std::path::PathBuf; use tokio::runtime::{self, Runtime}; +use crate::ui_components::TGKeys; use crate::ui_components::processor::{ ChartTiming, ColumnName, PackedBlacklistedUser, PackedWhitelistedUser, ParsedChat, }; use crate::ui_components::tab_ui::UserRowData; -use crate::ui_components::TGKeys; #[derive(Serialize, Deserialize)] pub struct IsLightTheme { @@ -97,7 +97,9 @@ pub fn parse_chat_details(start: &str, end: &str) -> HashMap if let Some(end_num) = num { let completed = parsed.set_end_point(end_num); if !completed { - error!("End point cannot be equal or bigger than start point. Ignoring the end point for {chat}"); + error!( + "End point cannot be equal or bigger than start point. Ignoring the end point for {chat}" + ); } } } else { From a26ef6aef7150dcb616aac35fc92a5696a009940 Mon Sep 17 00:00:00 2001 From: Rusty Pickle Date: Sun, 3 Aug 2025 19:55:46 +0600 Subject: [PATCH 7/7] Update cargo dist --- .github/workflows/release.yml | 68 +++++++++++++++++++---------------- dist-workspace.toml | 18 +++++----- 2 files changed, 48 insertions(+), 38 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6d8d86c..642567b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -# This file was autogenerated by cargo-dist: https://opensource.axo.dev/cargo-dist/ +# This file was autogenerated by dist: https://opensource.axo.dev/cargo-dist/ # # Copyright 2022-2024, axodotdev # SPDX-License-Identifier: MIT or Apache-2.0 @@ -6,7 +6,7 @@ # CI that: # # * checks for a Git Tag that looks like a release -# * builds artifacts with cargo-dist (archives, installers, hashes) +# * builds artifacts with dist (archives, installers, hashes) # * uploads those artifacts to temporary workflow zip # * on success, uploads the artifacts to a GitHub Release # @@ -24,10 +24,10 @@ permissions: # must be a Cargo-style SemVer Version (must have at least major.minor.patch). # # If PACKAGE_NAME is specified, then the announcement will be for that -# package (erroring out if it doesn't have the given version or isn't cargo-dist-able). +# package (erroring out if it doesn't have the given version or isn't dist-able). # # If PACKAGE_NAME isn't specified, then the announcement will be for all -# (cargo-dist-able) packages in the workspace with that version (this mode is +# (dist-able) packages in the workspace with that version (this mode is # intended for workspaces with only one dist-able package, or with all dist-able # packages versioned/released in lockstep). # @@ -45,9 +45,9 @@ on: - '**[0-9]+.[0-9]+.[0-9]+*' jobs: - # Run 'cargo dist plan' (or host) to determine what tasks we need to do + # Run 'dist plan' (or host) to determine what tasks we need to do plan: - runs-on: "ubuntu-20.04" + runs-on: "ubuntu-22.04" outputs: val: ${{ steps.plan.outputs.manifest }} tag: ${{ !github.event.pull_request && github.ref_name || '' }} @@ -59,16 +59,16 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive - - name: Install cargo-dist + - name: Install dist # we specify bash to get pipefail; it guards against the `curl` command # failing. otherwise `sh` won't catch that `curl` returned non-0 shell: bash - run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.23.0/cargo-dist-installer.sh | sh" - - name: Cache cargo-dist + run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.28.1-prerelease.2/cargo-dist-installer.sh | sh" + - name: Cache dist uses: actions/upload-artifact@v4 with: name: cargo-dist-cache - path: ~/.cargo/bin/cargo-dist + path: ~/.cargo/bin/dist # sure would be cool if github gave us proper conditionals... # so here's a doubly-nested ternary-via-truthiness to try to provide the best possible # functionality based on whether this is a pull_request, and whether it's from a fork. @@ -76,8 +76,8 @@ jobs: # but also really annoying to build CI around when it needs secrets to work right.) - id: plan run: | - cargo dist ${{ (!github.event.pull_request && format('host --steps=create --tag={0}', github.ref_name)) || 'plan' }} --output-format=json > plan-dist-manifest.json - echo "cargo dist ran successfully" + dist ${{ (!github.event.pull_request && format('host --steps=create --tag={0}', github.ref_name)) || 'plan' }} --output-format=json > plan-dist-manifest.json + echo "dist ran successfully" cat plan-dist-manifest.json echo "manifest=$(jq -c "." plan-dist-manifest.json)" >> "$GITHUB_OUTPUT" - name: "Upload dist-manifest.json" @@ -95,18 +95,19 @@ jobs: if: ${{ fromJson(needs.plan.outputs.val).ci.github.artifacts_matrix.include != null && (needs.plan.outputs.publishing == 'true' || fromJson(needs.plan.outputs.val).ci.github.pr_run_mode == 'upload') }} strategy: fail-fast: false - # Target platforms/runners are computed by cargo-dist in create-release. + # Target platforms/runners are computed by dist in create-release. # Each member of the matrix has the following arguments: # # - runner: the github runner - # - dist-args: cli flags to pass to cargo dist - # - install-dist: expression to run to install cargo-dist on the runner + # - dist-args: cli flags to pass to dist + # - install-dist: expression to run to install dist on the runner # # Typically there will be: # - 1 "global" task that builds universal installers # - N "local" tasks that build each platform's binaries and platform-specific installers matrix: ${{ fromJson(needs.plan.outputs.val).ci.github.artifacts_matrix }} runs-on: ${{ matrix.runner }} + container: ${{ matrix.container && matrix.container.image || null }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} BUILD_MANIFEST_NAME: target/distrib/${{ join(matrix.targets, '-') }}-dist-manifest.json @@ -117,8 +118,15 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive - - name: Install cargo-dist - run: ${{ matrix.install_dist }} + - name: Install Rust non-interactively if not already installed + if: ${{ matrix.container }} + run: | + if ! command -v cargo > /dev/null 2>&1; then + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + echo "$HOME/.cargo/bin" >> $GITHUB_PATH + fi + - name: Install dist + run: ${{ matrix.install_dist.run }} # Get the dist-manifest - name: Fetch local artifacts uses: actions/download-artifact@v4 @@ -132,8 +140,8 @@ jobs: - name: Build artifacts run: | # Actually do builds and make zips and whatnot - cargo dist build ${{ needs.plan.outputs.tag-flag }} --print=linkage --output-format=json ${{ matrix.dist_args }} > dist-manifest.json - echo "cargo dist ran successfully" + dist build ${{ needs.plan.outputs.tag-flag }} --print=linkage --output-format=json ${{ matrix.dist_args }} > dist-manifest.json + echo "dist ran successfully" - id: cargo-dist name: Post-build # We force bash here just because github makes it really hard to get values up @@ -143,7 +151,7 @@ jobs: run: | # Parse out what we just built and upload it to scratch storage echo "paths<> "$GITHUB_OUTPUT" - jq --raw-output ".upload_files[]" dist-manifest.json >> "$GITHUB_OUTPUT" + dist print-upload-files-from-manifest --manifest dist-manifest.json >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT" cp dist-manifest.json "$BUILD_MANIFEST_NAME" @@ -160,7 +168,7 @@ jobs: needs: - plan - build-local-artifacts - runs-on: "ubuntu-20.04" + runs-on: "ubuntu-22.04" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} BUILD_MANIFEST_NAME: target/distrib/global-dist-manifest.json @@ -168,12 +176,12 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive - - name: Install cached cargo-dist + - name: Install cached dist uses: actions/download-artifact@v4 with: name: cargo-dist-cache path: ~/.cargo/bin/ - - run: chmod +x ~/.cargo/bin/cargo-dist + - run: chmod +x ~/.cargo/bin/dist # Get all the local artifacts for the global tasks to use (for e.g. checksums) - name: Fetch local artifacts uses: actions/download-artifact@v4 @@ -184,8 +192,8 @@ jobs: - id: cargo-dist shell: bash run: | - cargo dist build ${{ needs.plan.outputs.tag-flag }} --output-format=json "--artifacts=global" > dist-manifest.json - echo "cargo dist ran successfully" + dist build ${{ needs.plan.outputs.tag-flag }} --output-format=json "--artifacts=global" > dist-manifest.json + echo "dist ran successfully" # Parse out what we just built and upload it to scratch storage echo "paths<> "$GITHUB_OUTPUT" @@ -210,19 +218,19 @@ jobs: if: ${{ always() && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - runs-on: "ubuntu-20.04" + runs-on: "ubuntu-22.04" outputs: val: ${{ steps.host.outputs.manifest }} steps: - uses: actions/checkout@v4 with: submodules: recursive - - name: Install cached cargo-dist + - name: Install cached dist uses: actions/download-artifact@v4 with: name: cargo-dist-cache path: ~/.cargo/bin/ - - run: chmod +x ~/.cargo/bin/cargo-dist + - run: chmod +x ~/.cargo/bin/dist # Fetch artifacts from scratch-storage - name: Fetch artifacts uses: actions/download-artifact@v4 @@ -233,7 +241,7 @@ jobs: - id: host shell: bash run: | - cargo dist host ${{ needs.plan.outputs.tag-flag }} --steps=upload --steps=release --output-format=json > dist-manifest.json + dist host ${{ needs.plan.outputs.tag-flag }} --steps=upload --steps=release --output-format=json > dist-manifest.json echo "artifacts uploaded and released successfully" cat dist-manifest.json echo "manifest=$(jq -c "." dist-manifest.json)" >> "$GITHUB_OUTPUT" @@ -272,7 +280,7 @@ jobs: # still allowing individual publish jobs to skip themselves (for prereleases). # "host" however must run to completion, no skipping allowed! if: ${{ always() && needs.host.result == 'success' }} - runs-on: "ubuntu-20.04" + runs-on: "ubuntu-22.04" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: diff --git a/dist-workspace.toml b/dist-workspace.toml index 71d59e8..bb05592 100644 --- a/dist-workspace.toml +++ b/dist-workspace.toml @@ -1,18 +1,20 @@ [workspace] members = ["cargo:."] -# Config for 'cargo dist' +# Config for 'dist' [dist] -# The preferred cargo-dist version to use in CI (Cargo.toml SemVer syntax) -cargo-dist-version = "0.23.0" +# The preferred dist version to use in CI (Cargo.toml SemVer syntax) +cargo-dist-version = "0.28.1-prerelease.2" # CI backends to support ci = "github" # The installers to generate for each app installers = [] # Target platforms to build apps for (Rust target-triple syntax) -targets = ["aarch64-apple-darwin", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-pc-windows-msvc"] -# Whether cargo-dist should create a Github Release or use an existing draft +targets = [ + "aarch64-apple-darwin", + "x86_64-apple-darwin", + "x86_64-unknown-linux-gnu", + "x86_64-pc-windows-msvc", +] +# Whether dist should create a Github Release or use an existing draft create-release = false - -[dist.github-custom-runners] -x86_64-unknown-linux-gnu = "ubuntu-22.04"