From d25841853c7339e185c6acd01da7d8dfb723d560 Mon Sep 17 00:00:00 2001 From: akanyan Date: Thu, 27 Feb 2025 16:42:43 +0000 Subject: [PATCH] feat: use sets etc. --- bun.lockb | Bin 147218 -> 160276 bytes package.json | 96 ++-- rust/Cargo.lock | 941 ++++++++++++++++++------------------- rust/src/cmd.rs | 44 +- rust/src/lib.rs | 3 +- rust/src/liner.rs | 20 +- rust/src/model/local.rs | 3 +- rust/src/model/rainy.rs | 3 +- rust/src/pkg.rs | 20 +- rust/src/profile.rs | 1 + src/components/Options.vue | 19 +- 11 files changed, 587 insertions(+), 563 deletions(-) diff --git a/bun.lockb b/bun.lockb index 1b2ff23c5ce0506cb88daf5d55f1b3e9fa816c62..87cf63b657f20ef5661d33a2e715e5242d24d9ed 100755 GIT binary patch delta 36960 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 DWKb)g diff --git a/package.json b/package.json index eee4311..90e22a4 100644 --- a/package.json +++ b/package.json @@ -1,50 +1,50 @@ { - "name": "startliner", - "private": true, - "version": "0.1.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vue-tsc --noEmit && vite build", - "preview": "vite preview", - "tauri": "tauri" - }, - "dependencies": { - "@mdi/font": "7.4.47", - "@primevue/forms": "^4.2.5", - "@primevue/themes": "^4.2.5", - "@tailwindcss/vite": "^4.0.6", - "@tauri-apps/api": "^2", - "@tauri-apps/plugin-deep-link": "~2", - "@tauri-apps/plugin-dialog": "~2", - "@tauri-apps/plugin-fs": "~2", - "@tauri-apps/plugin-opener": "^2", - "@tauri-apps/plugin-shell": "~2", - "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "pinia": "^3.0.1", - "primeicons": "^7.0.0", - "primevue": "^4.2.5", - "roboto-fontface": "*", - "tailwindcss": "^4.0.6", - "tailwindcss-primeui": "^0.4.0", - "vue": "^3.5.13", - "vuetify": "^3.7.6" - }, - "devDependencies": { - "@tauri-apps/cli": "^2", - "@vitejs/plugin-vue": "^5.2.1", - "sass-embedded": "^1.83.1", - "typescript": "^5.8.0-dev.20250209", - "vite": "^6.0.3", - "vue-tsc": "^2.1.10", - "@tsconfig/node22": "^22.0.0", - "@types/node": "^22.9.0", - "@vue/eslint-config-typescript": "^14.1.3", - "@vue/tsconfig": "^0.5.1", - "npm-run-all2": "^7.0.1", - "sass": "1.77.8", - "unplugin-fonts": "^1.1.1", - "unplugin-vue-components": "^0.27.2", - "vite-plugin-vuetify": "^2.0.3" - } + "name": "startliner", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "preview": "vite preview", + "tauri": "tauri" + }, + "dependencies": { + "@mdi/font": "7.4.47", + "@primevue/forms": "^4.3.1", + "@primevue/themes": "^4.3.1", + "@tailwindcss/vite": "^4.0.9", + "@tauri-apps/api": "^2.3.0", + "@tauri-apps/plugin-deep-link": "~2.2.0", + "@tauri-apps/plugin-dialog": "~2.2.0", + "@tauri-apps/plugin-fs": "~2.2.0", + "@tauri-apps/plugin-opener": "^2.2.5", + "@tauri-apps/plugin-shell": "~2.2.0", + "@trivago/prettier-plugin-sort-imports": "^5.2.2", + "pinia": "^3.0.1", + "primeicons": "^7.0.0", + "primevue": "^4.3.1", + "roboto-fontface": "^0.10.0", + "tailwindcss": "^4.0.9", + "tailwindcss-primeui": "^0.4.0", + "vue": "^3.5.13", + "vuetify": "^3.7.14" + }, + "devDependencies": { + "@tauri-apps/cli": "^2.3.0", + "@vitejs/plugin-vue": "^5.2.1", + "sass-embedded": "^1.85.1", + "typescript": "^5.8.0-dev.20250218", + "vite": "^6.2.0", + "vue-tsc": "^2.2.4", + "@tsconfig/node22": "^22.0.0", + "@types/node": "^22.13.5", + "@vue/eslint-config-typescript": "^14.4.0", + "@vue/tsconfig": "^0.5.1", + "npm-run-all2": "^7.0.2", + "sass": "1.77.8", + "unplugin-fonts": "^1.3.1", + "unplugin-vue-components": "^0.27.5", + "vite-plugin-vuetify": "^2.1.0" + } } diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 34ac599..5a2105b 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -69,9 +69,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4" [[package]] name = "arbitrary" @@ -389,12 +389,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" @@ -410,7 +404,16 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2", + "objc2 0.5.2", +] + +[[package]] +name = "block2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d59b4c170e16f0405a2e95aff44432a0d41aa97675f3d52623effe95792a037" +dependencies = [ + "objc2 0.6.0", ] [[package]] @@ -476,12 +479,11 @@ dependencies = [ [[package]] name = "bzip2" -version = "0.4.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +checksum = "75b89e7c29231c673a61a46e722602bcd138298f6b9e81e71119693534585f5c" dependencies = [ "bzip2-sys", - "libc", ] [[package]] @@ -559,14 +561,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fbd1fe9db3ebf71b89060adaf7b0504c2d6a425cf061313099547e382c2e472" dependencies = [ "serde", - "toml 0.8.20", + "toml", ] [[package]] name = "cc" -version = "1.2.13" +version = "1.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" dependencies = [ "jobserver", "libc", @@ -614,15 +616,15 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -641,36 +643,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6173fd61b610d15a7566dd7b7620775627441c4ab9dac8906e17cb93a24b782" -[[package]] -name = "cocoa" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" -dependencies = [ - "bitflags 2.8.0", - "block", - "cocoa-foundation", - "core-foundation 0.10.0", - "core-graphics", - "foreign-types 0.5.0", - "libc", - "objc", -] - -[[package]] -name = "cocoa-foundation" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" -dependencies = [ - "bitflags 2.8.0", - "block", - "core-foundation 0.10.0", - "core-graphics-types", - "libc", - "objc", -] - [[package]] name = "colored" version = "2.2.0" @@ -1037,16 +1009,7 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" dependencies = [ - "dirs-sys 0.5.0", -] - -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys 0.4.1", + "dirs-sys", ] [[package]] @@ -1055,19 +1018,7 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "dirs-sys 0.5.0", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.4.6", - "windows-sys 0.48.0", + "dirs-sys", ] [[package]] @@ -1078,7 +1029,7 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users 0.5.0", + "redox_users", "windows-sys 0.59.0", ] @@ -1105,7 +1056,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading", + "libloading 0.8.6", ] [[package]] @@ -1184,14 +1135,14 @@ checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" [[package]] name = "embed-resource" -version = "2.5.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b68b6f9f63a0b6a38bc447d4ce84e2b388f3ec95c99c641c8ff0dd3ef89a6379" +checksum = "4762ce03154ba57ebaeee60cc631901ceae4f18219cbb874e464347471594742" dependencies = [ "cc", "memchr", "rustc_version", - "toml 0.8.20", + "toml", "vswhom", "winreg", ] @@ -1240,9 +1191,9 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" @@ -1318,9 +1269,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.35" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" dependencies = [ "crc32fast", "miniz_oxide", @@ -1817,9 +1768,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" dependencies = [ "atomic-waker", "bytes", @@ -2043,9 +1994,9 @@ dependencies = [ [[package]] name = "ico" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" +checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" dependencies = [ "byteorder", "png", @@ -2220,18 +2171,18 @@ dependencies = [ [[package]] name = "infer" -version = "0.16.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" dependencies = [ "cfb", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] @@ -2428,15 +2379,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" dependencies = [ "gtk-sys", - "libloading", + "libloading 0.7.4", "once_cell", ] [[package]] name = "libc" -version = "0.2.169" +version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" [[package]] name = "libloading" @@ -2448,6 +2399,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + [[package]] name = "libredox" version = "0.1.3" @@ -2466,9 +2427,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "lock_api" @@ -2488,9 +2449,9 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" [[package]] name = "log" -version = "0.4.25" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" dependencies = [ "value-bag", ] @@ -2511,15 +2472,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - [[package]] name = "markup5ever" version = "0.11.0" @@ -2563,9 +2515,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ "adler2", "simd-adler32", @@ -2584,29 +2536,30 @@ dependencies = [ [[package]] name = "muda" -version = "0.15.3" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdae9c00e61cc0579bcac625e8ad22104c60548a025bfc972dc83868a28e1484" +checksum = "89fed9ce3e5c01700e3a129d3d74619bbf468645b58274b420885107e496ecff" dependencies = [ "crossbeam-channel", "dpi", "gtk", "keyboard-types", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.0", + "objc2-app-kit 0.3.0", + "objc2-core-foundation", + "objc2-foundation 0.3.0", "once_cell", "png", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", "windows-sys 0.59.0", ] [[package]] name = "native-tls" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -2719,23 +2672,11 @@ dependencies = [ "libc", ] -[[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" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" -dependencies = [ - "cc", -] [[package]] name = "objc2" @@ -2747,6 +2688,16 @@ dependencies = [ "objc2-encode", ] +[[package]] +name = "objc2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3531f65190d9cff863b77a99857e74c314dd16bf56c538c4b57c7cbc3f3a6e59" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + [[package]] name = "objc2-app-kit" version = "0.2.2" @@ -2754,37 +2705,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ "bitflags 2.8.0", - "block2", + "block2 0.5.1", "libc", - "objc2", - "objc2-core-data", - "objc2-core-image", - "objc2-foundation", - "objc2-quartz-core", + "objc2 0.5.2", + "objc2-core-data 0.2.2", + "objc2-core-image 0.2.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5906f93257178e2f7ae069efb89fbd6ee94f0592740b5f8a1512ca498814d0fb" +dependencies = [ + "bitflags 2.8.0", + "block2 0.6.0", + "libc", + "objc2 0.6.0", + "objc2-cloud-kit", + "objc2-core-data 0.3.0", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image 0.3.0", + "objc2-foundation 0.3.0", + "objc2-quartz-core 0.3.0", ] [[package]] name = "objc2-cloud-kit" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +checksum = "6c1948a9be5f469deadbd6bcb86ad7ff9e47b4f632380139722f7d9840c0d42c" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-core-location", - "objc2-foundation", -] - -[[package]] -name = "objc2-contacts" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" -dependencies = [ - "block2", - "objc2", - "objc2-foundation", + "objc2 0.6.0", + "objc2-foundation 0.3.0", ] [[package]] @@ -2794,9 +2751,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-foundation", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f860f8e841f6d32f754836f51e6bc7777cd7e7053cf18528233f6811d3eceb4" +dependencies = [ + "bitflags 2.8.0", + "objc2 0.6.0", + "objc2-foundation 0.3.0", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daeaf60f25471d26948a1c2f840e3f7d86f4109e3af4e8e4b5cd70c39690d925" +dependencies = [ + "bitflags 2.8.0", + "objc2 0.6.0", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dca602628b65356b6513290a21a6405b4d4027b8b250f0b98dddbb28b7de02" +dependencies = [ + "bitflags 2.8.0", + "objc2 0.6.0", + "objc2-core-foundation", + "objc2-io-surface", ] [[package]] @@ -2805,22 +2795,20 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block2", - "objc2", - "objc2-foundation", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", "objc2-metal", ] [[package]] -name = "objc2-core-location" -version = "0.2.2" +name = "objc2-core-image" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +checksum = "6ffa6bea72bf42c78b0b34e89c0bafac877d5f80bf91e159a5d96ea7f693ca56" dependencies = [ - "block2", - "objc2", - "objc2-contacts", - "objc2-foundation", + "objc2 0.6.0", + "objc2-foundation 0.3.0", ] [[package]] @@ -2829,6 +2817,15 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + [[package]] name = "objc2-foundation" version = "0.2.2" @@ -2836,22 +2833,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.8.0", - "block2", + "block2 0.5.1", "dispatch", "libc", - "objc2", + "objc2 0.5.2", ] [[package]] -name = "objc2-link-presentation" -version = "0.2.2" +name = "objc2-foundation" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +checksum = "3a21c6c9014b82c39515db5b396f91645182611c97d24637cf56ac01e5f8d998" dependencies = [ - "block2", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "bitflags 2.8.0", + "block2 0.6.0", + "libc", + "objc2 0.6.0", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161a8b87e32610086e1a7a9e9ec39f84459db7b3a0881c1f16ca5a2605581c19" +dependencies = [ + "bitflags 2.8.0", + "objc2 0.6.0", + "objc2-core-foundation", ] [[package]] @@ -2861,9 +2870,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-foundation", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] @@ -2873,78 +2882,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-foundation", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", "objc2-metal", ] [[package]] -name = "objc2-symbols" -version = "0.2.2" +name = "objc2-quartz-core" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +checksum = "6fb3794501bb1bee12f08dcad8c61f2a5875791ad1c6f47faa71a0f033f20071" dependencies = [ - "objc2", - "objc2-foundation", + "bitflags 2.8.0", + "objc2 0.6.0", + "objc2-foundation 0.3.0", ] [[package]] name = "objc2-ui-kit" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +checksum = "777a571be14a42a3990d4ebedaeb8b54cd17377ec21b92e8200ac03797b3bee1" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-image", - "objc2-core-location", - "objc2-foundation", - "objc2-link-presentation", - "objc2-quartz-core", - "objc2-symbols", - "objc2-uniform-type-identifiers", - "objc2-user-notifications", -] - -[[package]] -name = "objc2-uniform-type-identifiers" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" -dependencies = [ - "block2", - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-user-notifications" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" -dependencies = [ - "bitflags 2.8.0", - "block2", - "objc2", - "objc2-core-location", - "objc2-foundation", + "objc2 0.6.0", + "objc2-core-foundation", + "objc2-foundation 0.3.0", ] [[package]] name = "objc2-web-kit" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65" +checksum = "b717127e4014b0f9f3e8bba3d3f2acec81f1bde01f656823036e823ed2c94dce" dependencies = [ "bitflags 2.8.0", - "block2", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "block2 0.6.0", + "objc2 0.6.0", + "objc2-app-kit 0.3.0", + "objc2-core-foundation", + "objc2-foundation 0.3.0", ] [[package]] @@ -2976,9 +2954,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.70" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ "bitflags 2.8.0", "cfg-if", @@ -3008,9 +2986,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ "cc", "libc", @@ -3425,7 +3403,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.23", + "toml_edit 0.22.24", ] [[package]] @@ -3525,9 +3503,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" dependencies = [ "cfg_aliases", "libc", @@ -3635,24 +3613,13 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" dependencies = [ "bitflags 2.8.0", ] -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror 1.0.69", -] - [[package]] name = "redox_users" version = "0.5.0" @@ -3751,7 +3718,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a24763657bff09769a8ccf12c8b8a50416fb035fe199263b4c5071e4e3f006f" dependencies = [ "ashpd", - "block2", + "block2 0.5.1", "core-foundation 0.10.0", "core-foundation-sys", "glib-sys", @@ -3759,9 +3726,9 @@ dependencies = [ "gtk-sys", "js-sys", "log", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", "raw-window-handle", "wasm-bindgen", "wasm-bindgen-futures", @@ -3771,15 +3738,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73" dependencies = [ "cc", "cfg-if", "getrandom 0.2.15", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -3831,9 +3797,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.22" +version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ "once_cell", "ring", @@ -3904,9 +3870,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -3919,9 +3885,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ "proc-macro2", "quote", @@ -3995,9 +3961,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" dependencies = [ "serde_derive", ] @@ -4015,9 +3981,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" dependencies = [ "proc-macro2", "quote", @@ -4037,9 +4003,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" dependencies = [ "itoa 1.0.14", "memchr", @@ -4240,9 +4206,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" [[package]] name = "socket2" @@ -4266,9 +4232,9 @@ dependencies = [ "foreign-types 0.5.0", "js-sys", "log", - "objc2", - "objc2-foundation", - "objc2-quartz-core", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", "raw-window-handle", "redox_syscall", "wasm-bindgen", @@ -4302,12 +4268,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -4370,9 +4330,9 @@ dependencies = [ [[package]] name = "string_cache_codegen" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244292f3441c89febe5b5bdfbb6863aeaf4f64da810ea3050fd927b27b8d92ce" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" dependencies = [ "phf_generator 0.11.3", "phf_shared 0.11.3", @@ -4475,18 +4435,17 @@ dependencies = [ "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.8.20", + "toml", "version-compare", ] [[package]] name = "tao" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3731d04d4ac210cd5f344087733943b9bfb1a32654387dad4d1c70de21aee2c9" +checksum = "3d8f5e5fe19612f3dd187ac3928d48f5ad23d3edd9821806d05b0c3beb6537bd" dependencies = [ "bitflags 2.8.0", - "cocoa", "core-foundation 0.10.0", "core-graphics", "crossbeam-channel", @@ -4503,7 +4462,9 @@ dependencies = [ "ndk", "ndk-context", "ndk-sys", - "objc", + "objc2 0.6.0", + "objc2-app-kit 0.3.0", + "objc2-foundation 0.3.0", "once_cell", "parking_lot", "raw-window-handle", @@ -4511,8 +4472,8 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows", - "windows-core 0.58.0", + "windows 0.60.0", + "windows-core 0.60.1", "windows-version", "x11-dl", ] @@ -4536,13 +4497,13 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tauri" -version = "2.2.5" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58a998b6be84104ca05c7e9a21f2180ddec020c8b84ea59a8fc8530a2a19588d" +checksum = "0f32eadd4a507f1b61e4fd1f792d0ed4184127a3241ff5bcb1848b9a574a58d6" dependencies = [ "anyhow", "bytes", - "dirs 6.0.0", + "dirs", "dunce", "embed_plist", "futures-util", @@ -4557,9 +4518,9 @@ dependencies = [ "log", "mime", "muda", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.0", + "objc2-app-kit 0.3.0", + "objc2-foundation 0.3.0", "percent-encoding", "plist", "raw-window-handle", @@ -4582,18 +4543,18 @@ dependencies = [ "webkit2gtk", "webview2-com", "window-vibrancy", - "windows", + "windows 0.60.0", ] [[package]] name = "tauri-build" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e950124f6779c6cf98e3260c7a6c8488a74aa6350dd54c6950fdaa349bca2df" +checksum = "51a2e96f3c0baa0581656bb58e6fdd0f7c9c31eaf6721a0c08689d938fe85f2d" dependencies = [ "anyhow", "cargo_toml", - "dirs 5.0.1", + "dirs", "glob", "heck 0.5.0", "json-patch", @@ -4603,15 +4564,15 @@ dependencies = [ "serde_json", "tauri-utils", "tauri-winres", - "toml 0.8.20", + "toml", "walkdir", ] [[package]] name = "tauri-codegen" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f77894f9ddb5cb6c04fcfe8c8869ebe0aded4dabf19917118d48be4a95599ab5" +checksum = "e357ec3daf8faad1029bc7109e7f5b308ceb63b6073d110d7388923a4cce5e55" dependencies = [ "base64 0.22.1", "brotli", @@ -4636,9 +4597,9 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3240a5caed760a532e8f687be6f05b2c7d11a1d791fb53ccc08cfeb3e5308736" +checksum = "447ee4dd94690d77f1422f2b57e783c654ba75c535ad6f6e727887330804fff2" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -4650,9 +4611,9 @@ dependencies = [ [[package]] name = "tauri-plugin" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5841b9a0200e954ef7457f8d327091424328891e267a97b641dc246cc54d0dec" +checksum = "0ad3021d8e60ec7672f51ecb67c5e1a514a4d7a9a5ffc9d85090739378047502" dependencies = [ "anyhow", "glob", @@ -4661,7 +4622,7 @@ dependencies = [ "serde", "serde_json", "tauri-utils", - "toml 0.8.20", + "toml", "walkdir", ] @@ -4682,7 +4643,7 @@ dependencies = [ "tracing", "url", "windows-registry 0.3.0", - "windows-result", + "windows-result 0.2.0", ] [[package]] @@ -4721,7 +4682,7 @@ dependencies = [ "tauri-plugin", "tauri-utils", "thiserror 2.0.11", - "toml 0.8.20", + "toml", "url", "uuid", ] @@ -4734,8 +4695,8 @@ checksum = "635ed7c580dc3cdc61c94097d38ef517d749ffc0141c806d904e68e4b0cf1c2a" dependencies = [ "dunce", "glob", - "objc2-app-kit", - "objc2-foundation", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", "open", "schemars", "serde", @@ -4744,7 +4705,7 @@ dependencies = [ "tauri-plugin", "thiserror 2.0.11", "url", - "windows", + "windows 0.58.0", "zbus", ] @@ -4771,9 +4732,9 @@ dependencies = [ [[package]] name = "tauri-plugin-single-instance" -version = "2.2.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c387d4d96690131dc46d1d2827df5c222b896a2bfeb15a16267229a55c50b5" +checksum = "25bbc73eed15bba8ad290a52614f2711280df4bf575b36ce78f64367074b90b7" dependencies = [ "serde", "serde_json", @@ -4787,9 +4748,9 @@ dependencies = [ [[package]] name = "tauri-runtime" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2274ef891ccc0a8d318deffa9d70053f947664d12d58b9c0d1ae5e89237e01f7" +checksum = "e758a405ab39e25f4d1235c5f06fe563f44b01ee18bbe38ddec5356d4f581908" dependencies = [ "dpi", "gtk", @@ -4801,22 +4762,22 @@ dependencies = [ "tauri-utils", "thiserror 2.0.11", "url", - "windows", + "windows 0.60.0", ] [[package]] name = "tauri-runtime-wry" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3707b40711d3b9f6519150869e358ffbde7c57567fb9b5a8b51150606939b2a0" +checksum = "5ef46e0c9c30d3524990cb10556f82cde0aa2281e9600e7ed2f499842db8b080" dependencies = [ "gtk", "http", "jni", "log", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.0", + "objc2-app-kit 0.3.0", + "objc2-foundation 0.3.0", "percent-encoding", "raw-window-handle", "softbuffer", @@ -4826,15 +4787,15 @@ dependencies = [ "url", "webkit2gtk", "webview2-com", - "windows", + "windows 0.60.0", "wry", ] [[package]] name = "tauri-utils" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96fb10e7cc97456b2d5b9c03e335b5de5da982039a303a20d10006885e4523a0" +checksum = "107a959dbd5ff53d89a98f6f2e3e987c611334141a43630caae1d80e79446dd6" dependencies = [ "brotli", "cargo_metadata", @@ -4860,7 +4821,7 @@ dependencies = [ "serde_with", "swift-rs", "thiserror 2.0.11", - "toml 0.8.20", + "toml", "url", "urlpattern", "uuid", @@ -4869,19 +4830,19 @@ dependencies = [ [[package]] name = "tauri-winres" -version = "0.1.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" +checksum = "56eaa45f707bedf34d19312c26d350bc0f3c59a47e58e8adbeecdc850d2c13a0" dependencies = [ "embed-resource", - "toml 0.7.8", + "toml", ] [[package]] name = "tempfile" -version = "3.16.0" +version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ "cfg-if", "fastrand", @@ -5078,18 +5039,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.19.15", -] - [[package]] name = "toml" version = "0.8.20" @@ -5099,7 +5048,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.23", + "toml_edit 0.22.24", ] [[package]] @@ -5118,8 +5067,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.7.1", - "serde", - "serde_spanned", "toml_datetime", "winnow 0.5.40", ] @@ -5137,15 +5084,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.23" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", - "winnow 0.7.1", + "winnow 0.7.3", ] [[package]] @@ -5208,22 +5155,23 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d48a05076dd272615d03033bf04f480199f7d1b66a8ac64d75c625fc4a70c06b" +checksum = "d433764348e7084bad2c5ea22c96c71b61b17afe3a11645710f533bd72b6a2b5" dependencies = [ - "core-graphics", "crossbeam-channel", - "dirs 5.0.1", + "dirs", "libappindicator", "muda", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.0", + "objc2-app-kit 0.3.0", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.0", "once_cell", "png", "serde", - "thiserror 1.0.69", + "thiserror 2.0.11", "windows-sys 0.59.0", ] @@ -5247,9 +5195,9 @@ checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ucd-trie" @@ -5311,9 +5259,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" [[package]] name = "unicode-segmentation" @@ -5377,9 +5325,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.13.1" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" +checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" dependencies = [ "getrandom 0.3.1", "serde", @@ -5421,9 +5369,9 @@ dependencies = [ [[package]] name = "vswhom-sys" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" dependencies = [ "cc", "libc", @@ -5688,16 +5636,16 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.34.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823e7ebcfaea51e78f72c87fc3b65a1e602c321f407a0b36dbb327d7bb7cd921" +checksum = "b0d606f600e5272b514dbb66539dd068211cc20155be8d3958201b4b5bd79ed3" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows", - "windows-core 0.58.0", - "windows-implement", - "windows-interface", + "windows 0.60.0", + "windows-core 0.60.1", + "windows-implement 0.59.0", + "windows-interface 0.59.0", ] [[package]] @@ -5713,13 +5661,13 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.34.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a82bce72db6e5ee83c68b5de1e2cd6ea195b9fbff91cb37df5884cbe3222df4" +checksum = "bfb27fccd3c27f68e9a6af1bcf48c2d82534b8675b83608a4d81446d095a17ac" dependencies = [ - "thiserror 1.0.69", - "windows", - "windows-core 0.58.0", + "thiserror 2.0.11", + "windows 0.60.0", + "windows-core 0.60.1", ] [[package]] @@ -5755,13 +5703,14 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window-vibrancy" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea403deff7b51fff19e261330f71608ff2cdef5721d72b64180bb95be7c4150" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" dependencies = [ - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.0", + "objc2-app-kit 0.3.0", + "objc2-core-foundation", + "objc2-foundation 0.3.0", "raw-window-handle", "windows-sys 0.59.0", "windows-version", @@ -5777,6 +5726,28 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf874e74c7a99773e62b1c671427abf01a425e77c3d3fb9fb1e4883ea934529" +dependencies = [ + "windows-collections", + "windows-core 0.60.1", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5467f79cc1ba3f52ebb2ed41dbb459b8e7db636cc3429458d9a852e15bc24dec" +dependencies = [ + "windows-core 0.60.1", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -5792,13 +5763,36 @@ version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", + "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", ] +[[package]] +name = "windows-core" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca21a92a9cae9bf4ccae5cf8368dce0837100ddf6e6d57936749e85f152f6247" +dependencies = [ + "windows-implement 0.59.0", + "windows-interface 0.59.0", + "windows-link", + "windows-result 0.3.1", + "windows-strings 0.3.1", +] + +[[package]] +name = "windows-future" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a787db4595e7eb80239b74ce8babfb1363d8e343ab072f2ffe901400c03349f0" +dependencies = [ + "windows-core 0.60.1", + "windows-link", +] + [[package]] name = "windows-implement" version = "0.58.0" @@ -5810,6 +5804,17 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "windows-implement" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "windows-interface" version = "0.58.0" @@ -5821,13 +5826,40 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "windows-interface" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "windows-link" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" + +[[package]] +name = "windows-numerics" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005dea54e2f6499f2cee279b8f703b3cf3b5734a2d8d21867c8f44003182eeed" +dependencies = [ + "windows-core 0.60.1", + "windows-link", +] + [[package]] name = "windows-registry" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-strings 0.1.0", "windows-targets 0.52.6", ] @@ -5838,7 +5870,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bafa604f2104cf5ae2cc2db1dee84b7e6a5d11b05f737b60def0ffdc398cbc0a" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-strings 0.2.0", "windows-targets 0.52.6", ] @@ -5852,13 +5884,22 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06374efe858fab7e4f881500e6e86ec8bc28f9462c47e5a9941a0142ad86b189" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-strings" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] @@ -5871,6 +5912,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -5946,36 +5996,20 @@ 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", "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows-targets" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" -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", -] - [[package]] name = "windows-version" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c12476c23a74725c539b24eae8bfc0dac4029c39cdb561d9f23616accd4ae26d" +checksum = "7bfbcc4996dd183ff1376a20ade1242da0d2dcaff83cc76710a588d24fd4c5db" dependencies = [ - "windows-targets 0.53.0", + "windows-link", ] [[package]] @@ -5996,12 +6030,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" @@ -6020,12 +6048,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" @@ -6044,24 +6066,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" @@ -6080,12 +6090,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" @@ -6104,12 +6108,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" @@ -6128,12 +6126,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" @@ -6152,12 +6144,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 = "winnow" version = "0.5.40" @@ -6169,9 +6155,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" +checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" dependencies = [ "memchr", ] @@ -6209,12 +6195,12 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" -version = "0.48.1" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e33c08b174442ff80d5c791020696f9f8b4e4a87b8cfc7494aad6167ec44e1" +checksum = "2a5eabce267929af61619166232d5221aeec2d7af8712bc33cf54a78416ad711" dependencies = [ "base64 0.22.1", - "block2", + "block2 0.6.0", "cookie", "crossbeam-channel", "dpi", @@ -6228,9 +6214,10 @@ dependencies = [ "kuchikiki", "libc", "ndk", - "objc2", - "objc2-app-kit", - "objc2-foundation", + "objc2 0.6.0", + "objc2-app-kit 0.3.0", + "objc2-core-foundation", + "objc2-foundation 0.3.0", "objc2-ui-kit", "objc2-web-kit", "once_cell", @@ -6244,8 +6231,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows", - "windows-core 0.58.0", + "windows 0.60.0", + "windows-core 0.60.1", "windows-version", "x11-dl", ] @@ -6335,7 +6322,7 @@ dependencies = [ "tracing", "uds_windows", "windows-sys 0.59.0", - "winnow 0.7.1", + "winnow 0.7.3", "xdg-home", "zbus_macros", "zbus_names", @@ -6365,7 +6352,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" dependencies = [ "serde", "static_assertions", - "winnow 0.7.1", + "winnow 0.7.3", "zvariant", ] @@ -6392,18 +6379,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", @@ -6455,9 +6442,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.2.2" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" +checksum = "b280484c454e74e5fff658bbf7df8fdbe7a07c6b2de4a53def232c15ef138f3a" dependencies = [ "aes", "arbitrary", @@ -6498,27 +6485,27 @@ dependencies = [ [[package]] name = "zstd" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.2.1" +version = "7.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +checksum = "f3051792fbdc2e1e143244dc28c60f73d8470e93f3f9cbd0ead44da5ed802722" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.14+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "8fb060d4926e4ac3a3ad15d864e99ceb5f343c6b34f5bd6d81ae6ed417311be5" dependencies = [ "cc", "pkg-config", @@ -6535,7 +6522,7 @@ dependencies = [ "serde", "static_assertions", "url", - "winnow 0.7.1", + "winnow 0.7.3", "zvariant_derive", "zvariant_utils", ] @@ -6564,5 +6551,5 @@ dependencies = [ "serde", "static_assertions", "syn 2.0.98", - "winnow 0.7.1", + "winnow 0.7.3", ] diff --git a/rust/src/cmd.rs b/rust/src/cmd.rs index 8cddc7b..3796d54 100644 --- a/rust/src/cmd.rs +++ b/rust/src/cmd.rs @@ -147,16 +147,50 @@ pub async fn init_profile( Ok(new_profile) } +// #[tauri::command] +// pub async fn profile_dir( +// state: State<'_, Mutex> +// ) -> Result { +// let appd = state.lock().await; + +// if let Some(p) = &appd.profile { +// Ok(p.dir()) +// } else { +// Err("No profile loaded") +// } +// } + +// the tauri fs plugin doesn't fucking work #[tauri::command] -pub async fn profile_dir( - state: State<'_, Mutex> -) -> Result { +pub async fn read_profile_data( + state: State<'_, Mutex>, + path: PathBuf +) -> Result { + let appd = state.lock().await; + + if let Some(p) = &appd.profile { + let res = fs::read_to_string(p.dir().join(&path)).await + .map_err(|e| format!("Unable to open {:?}: {}", path, e))?; + Ok(res) + } else { + Err("No profile loaded".to_owned()) + } +} + +#[tauri::command] +pub async fn write_profile_data( + state: State<'_, Mutex>, + path: PathBuf, + content: String +) -> Result<(), String> { let appd = state.lock().await; if let Some(p) = &appd.profile { - Ok(p.dir()) + fs::write(p.dir().join(&path), content).await + .map_err(|e| format!("Unable to write to {:?}: {}", path, e))?; + Ok(()) } else { - Err("No profile loaded") + Err("No profile loaded".to_owned()) } } diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 9e6cdc7..61074cc 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -106,7 +106,8 @@ pub async fn run(_args: Vec) { cmd::get_current_profile, cmd::init_profile, cmd::save_profile, - cmd::profile_dir, + cmd::read_profile_data, + cmd::write_profile_data, cmd::startline, cmd::kill, cmd::set_cfg, diff --git a/rust/src/liner.rs b/rust/src/liner.rs index 991add5..1258c61 100644 --- a/rust/src/liner.rs +++ b/rust/src/liner.rs @@ -1,4 +1,3 @@ -use tokio::task::JoinSet; use anyhow::{Result, anyhow}; use tokio::fs; use std::path::{Path, PathBuf}; @@ -18,6 +17,14 @@ async fn symlink(src: impl AsRef, dst: impl AsRef) -> std::io::Resul } pub async fn line_up(p: &Profile, pkg_hash: String) -> Result<()> { + let dir_out = p.dir(); + + if dir_out.join("option").exists() { + fs::remove_dir_all(dir_out.join("option")).await?; + } + + fs::create_dir_all(dir_out.join("option")).await?; + let hash_path = p.dir().join(".sl-state"); let prev_hash = fs::read_to_string(&hash_path).await.unwrap_or_default(); if prev_hash != pkg_hash { @@ -35,21 +42,14 @@ pub async fn line_up(p: &Profile, pkg_hash: String) -> Result<()> { async fn prepare_packages(p: &Profile) -> Result<()> { let dir_out = p.dir(); - let mut futures = JoinSet::new(); if dir_out.join("BepInEx").exists() { - futures.spawn(fs::remove_dir_all(dir_out.join("BepInEx"))); + fs::remove_dir_all(dir_out.join("BepInEx")).await?; } - if dir_out.join("option").exists() { - futures.spawn(fs::remove_dir_all(dir_out.join("option"))); - } - while let Some(_) = futures.join_next().await {} - - fs::create_dir_all(dir_out.join("option")).await?; for m in &p.mods { log::debug!("Preparing {}", m); let (namespace, name) = m.0.split_at(m.0.find("-").expect("Invalid mod definition")); - let bpx_dir = util::pkg_dir_of(namespace, &name[1..]) + let bpx_dir = util::pkg_dir_of(namespace, &name[1..]) // cut the hyphen .join("app") .join("BepInEx"); if bpx_dir.exists() { diff --git a/rust/src/model/local.rs b/rust/src/model/local.rs index f2fdcfb..3a66345 100644 --- a/rust/src/model/local.rs +++ b/rust/src/model/local.rs @@ -1,3 +1,4 @@ +use std::collections::BTreeSet; use serde::Deserialize; use crate::pkg::PkgKeyVersion; @@ -9,5 +10,5 @@ pub struct PackageManifest { pub name: String, pub version_number: String, pub description: String, - pub dependencies: Vec + pub dependencies: BTreeSet } diff --git a/rust/src/model/rainy.rs b/rust/src/model/rainy.rs index 87715c1..4b076d2 100644 --- a/rust/src/model/rainy.rs +++ b/rust/src/model/rainy.rs @@ -1,3 +1,4 @@ +use std::collections::BTreeSet; use serde::Deserialize; use crate::pkg::PkgKeyVersion; @@ -19,6 +20,6 @@ pub struct V1Version { pub description: String, pub version_number: String, pub icon: String, - pub dependencies: Vec, + pub dependencies: BTreeSet, pub download_url: String, } \ No newline at end of file diff --git a/rust/src/pkg.rs b/rust/src/pkg.rs index 0c78af5..b5c5d0d 100644 --- a/rust/src/pkg.rs +++ b/rust/src/pkg.rs @@ -1,7 +1,7 @@ use anyhow::{Result, anyhow, bail}; use derive_more::Display; use serde::{Deserialize, Serialize}; -use std::path::{Path, PathBuf}; +use std::{collections::BTreeSet, path::{Path, PathBuf}}; use tokio::fs; use crate::{model::{local, rainy}, util}; @@ -10,7 +10,7 @@ use crate::{model::{local, rainy}, util}; pub struct PkgKey(pub String); // {namespace}-{name}-{version} -#[derive(Clone, Serialize, Deserialize)] +#[derive(Eq, Hash, PartialEq, PartialOrd, Ord, Clone, Serialize, Deserialize, Display)] pub struct PkgKeyVersion(String); #[derive(Clone, Default, Serialize, Deserialize)] @@ -36,7 +36,7 @@ pub enum Kind { pub struct Local { pub version: String, pub path: PathBuf, - pub dependencies: Vec, + pub dependencies: BTreeSet, pub kind: Kind } @@ -47,7 +47,7 @@ pub struct Remote { pub package_url: String, pub download_url: String, pub deprecated: bool, - pub dependencies: Vec + pub dependencies: BTreeSet } impl Package { @@ -154,16 +154,16 @@ impl Package { } } - fn sanitize_deps(mut deps: Vec) -> Vec { + fn sanitize_deps(src: BTreeSet) -> BTreeSet { let regex = regex::Regex::new(r"([A-Za-z0-9_]+)-([A-Za-z0-9_]+)-[0-9\.]+$") .expect("Invalid regex"); + let mut res = BTreeSet::::new(); - for i in 0..deps.len() { - let caps = regex.captures(&deps[i].0) + for dep in src { + let caps = regex.captures(&dep.0) .expect("Invalid dependency"); - deps[i] = PkgKeyVersion(format!("{}-{}", caps.get(1).unwrap().as_str(), caps.get(2).unwrap().as_str())); + res.insert(PkgKey(format!("{}-{}", caps.get(1).unwrap().as_str(), caps.get(2).unwrap().as_str()))); } - let rv: Vec = unsafe { std::mem::transmute(deps) }; - rv + res } } \ No newline at end of file diff --git a/rust/src/profile.rs b/rust/src/profile.rs index 8318220..1ed7abf 100644 --- a/rust/src/profile.rs +++ b/rust/src/profile.rs @@ -73,6 +73,7 @@ impl Profile { log::info!("Written to {}", path.to_string_lossy()); } + #[allow(dead_code)] pub fn get_cfg(&self, key: &str) -> Result<&serde_json::Value> { self.cfg.get(key) .ok_or_else(|| anyhow::anyhow!("Invalid config entry {}", key)) diff --git a/src/components/Options.vue b/src/components/Options.vue index 829276c..067128a 100644 --- a/src/components/Options.vue +++ b/src/components/Options.vue @@ -7,7 +7,7 @@ import RadioButton from 'primevue/radiobutton'; import Toggle from 'primevue/toggleswitch'; import { invoke } from '@tauri-apps/api/core'; import * as path from '@tauri-apps/api/path'; -import { mkdir, readTextFile, writeTextFile } from '@tauri-apps/plugin-fs'; +import { readTextFile, writeTextFile } from '@tauri-apps/plugin-fs'; import { usePkgStore } from '../stores'; const store = usePkgStore(); @@ -28,16 +28,13 @@ const cfgDisplayMode = _cfg('display-mode', 'borderless'); const cfgAime = _cfg('aime', false); const aimeCode = ref(''); -// temp -let profilePath = ''; -let aimePath = ''; (async () => { - profilePath = await invoke('profile_dir'); try { - aimePath = await path.join(profilePath, 'aime.txt'); - aimeCode.value = await readTextFile(aimePath); - } catch (_) { + aimeCode.value = await invoke('read_profile_data', { + path: 'aime.txt', + }); + } catch (e) { aimeCode.value = ''; } })(); @@ -49,8 +46,10 @@ const aimeCodeModel = computed({ async set(value: string) { aimeCode.value = value; if (value.match(/^[0-9]{20}$/)) { - await mkdir(profilePath); - await writeTextFile(aimePath, aimeCode.value); + await invoke('write_profile_data', { + path: 'aime.txt', + content: aimeCode.value, + }); } }, });