diff --git a/.github/workflows/release_linux_cuda.yaml b/.github/workflows/release_linux_cuda.yaml index 005dfa86..699d3986 100644 --- a/.github/workflows/release_linux_cuda.yaml +++ b/.github/workflows/release_linux_cuda.yaml @@ -54,6 +54,8 @@ jobs: # Run pre build - name: Run pre_build.js run: bun scripts/pre_build.js --nvidia + env: + INPUT_CUDA_VERSION: ${{ matrix.cuda_version }} - name: Build uses: tauri-apps/tauri-action@v0 diff --git a/.github/workflows/release_nvidia.yml b/.github/workflows/release_nvidia.yml index f319d1d0..9147ad4d 100644 --- a/.github/workflows/release_nvidia.yml +++ b/.github/workflows/release_nvidia.yml @@ -63,6 +63,8 @@ jobs: # Run pre build - name: Run pre_build.js run: bun scripts/pre_build.js --nvidia + env: + INPUT_CUDA_VERSION: ${{ matrix.cuda-toolkit }} - name: Build uses: tauri-apps/tauri-action@v0 diff --git a/Cargo.lock b/Cargo.lock index 6746eadd..5e1bc031 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -17,17 +17,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -90,47 +79,48 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -138,9 +128,18 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] [[package]] name = "ashpd" @@ -161,36 +160,59 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" dependencies = [ - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener", + "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "async-channel" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener-strategy", "futures-core", "pin-project-lite", ] +[[package]] +name = "async-executor" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + [[package]] name = "async-io" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ - "async-lock 3.3.0", + "async-lock", "cfg-if", "concurrent-queue", "futures-io", @@ -205,38 +227,29 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.8.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 2.5.3", -] - -[[package]] -name = "async-lock" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" -dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", + "event-listener", + "event-listener-strategy", "pin-project-lite", ] [[package]] name = "async-process" -version = "2.2.0" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d999d925640d51b662b7b4e404224dd81de70f4aa4a199383c2c5e5b86885fa3" +checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" dependencies = [ "async-channel", "async-io", - "async-lock 3.3.0", + "async-lock", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener 5.3.0", + "event-listener", "futures-lite", "rustix", "tracing", @@ -245,23 +258,23 @@ dependencies = [ [[package]] name = "async-recursion" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "async-signal" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" dependencies = [ "async-io", - "async-lock 2.8.0", + "async-lock", "atomic-waker", "cfg-if", "futures-core", @@ -269,14 +282,14 @@ dependencies = [ "rustix", "signal-hook-registry", "slab", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" @@ -286,7 +299,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -320,15 +333,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -347,15 +360,9 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bindgen" @@ -376,7 +383,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.58", + "syn 2.0.66", "which 4.4.2", ] @@ -410,20 +417,26 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock 3.3.0", "async-task", - "fastrand", "futures-io", "futures-lite", "piper", - "tracing", ] [[package]] @@ -455,9 +468,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" [[package]] name = "byteorder" @@ -474,27 +487,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - [[package]] name = "cairo-rs" version = "0.18.5" @@ -522,9 +514,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] @@ -559,17 +551,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" dependencies = [ "serde", - "toml 0.8.12", + "toml 0.8.2", ] [[package]] name = "cc" -version = "1.0.94" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -616,21 +609,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - -[[package]] -name = "cfg_aliases" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e53693616d3075149f4ead59bdeecd204ac6b8192d8969757601b74bddf00f" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -639,21 +626,11 @@ dependencies = [ "windows-targets 0.52.5", ] -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -662,9 +639,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" dependencies = [ "clap_builder", "clap_derive", @@ -672,33 +649,33 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.1", + "strsim", ] [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "cmake" @@ -741,9 +718,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "combine" @@ -757,9 +734,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -779,17 +756,11 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "once_cell", "tiny-keccak", ] -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - [[package]] name = "convert_case" version = "0.4.0" @@ -890,27 +861,27 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -952,24 +923,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "ctor" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "darling" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ "darling_core", "darling_macro", @@ -977,27 +948,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 2.0.58", + "strsim", + "syn 2.0.66", ] [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1027,17 +998,28 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] @@ -1048,7 +1030,15 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", - "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", ] [[package]] @@ -1061,6 +1051,18 @@ dependencies = [ "dirs-sys-next", ] +[[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", + "windows-sys 0.48.0", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -1078,6 +1080,17 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "displaydoc" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "dlib" version = "0.5.2" @@ -1107,7 +1120,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1136,9 +1149,9 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dtoa-short" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" dependencies = [ "dtoa", ] @@ -1157,9 +1170,9 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "either" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" [[package]] name = "embed-resource" @@ -1170,7 +1183,7 @@ dependencies = [ "cc", "memchr", "rustc_version", - "toml 0.8.12", + "toml 0.8.2", "vswhom", "winreg 0.52.0", ] @@ -1198,9 +1211,9 @@ checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" [[package]] name = "enumflags2" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", "serde", @@ -1208,13 +1221,13 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1238,9 +1251,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1248,26 +1261,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "event-listener" -version = "4.0.3" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -1276,21 +1272,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.0", + "event-listener", "pin-project-lite", ] @@ -1306,9 +1292,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fdeflate" @@ -1337,15 +1323,15 @@ checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.4.1", "windows-sys 0.52.0", ] [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -1384,7 +1370,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1493,7 +1479,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1680,9 +1666,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -1691,9 +1677,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "gio" @@ -1757,11 +1743,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" dependencies = [ "heck 0.4.1", - "proc-macro-crate 2.0.0", + "proc-macro-crate 2.0.2", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1840,7 +1826,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1870,9 +1856,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heck" @@ -1893,19 +1879,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] -name = "hex" -version = "0.4.3" +name = "hermit-abi" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] -name = "hmac" -version = "0.12.1" +name = "hex" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "home" @@ -1981,12 +1964,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http 1.1.0", "http-body 1.0.0", "pin-project-lite", @@ -2000,9 +1983,9 @@ checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -2018,9 +2001,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" dependencies = [ "bytes", "futures-channel", @@ -2042,9 +2025,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" dependencies = [ "bytes", "futures-channel", @@ -2061,19 +2044,20 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.26.0" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.2.0", + "hyper 1.3.1", "hyper-util", "rustls", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", + "webpki-roots", ] [[package]] @@ -2083,7 +2067,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.28", + "hyper 0.14.29", "native-tls", "tokio", "tokio-native-tls", @@ -2091,16 +2075,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", "http-body 1.0.0", - "hyper 1.2.0", + "hyper 1.3.1", "pin-project-lite", "socket2", "tokio", @@ -2182,7 +2166,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] @@ -2195,20 +2179,11 @@ dependencies = [ "cfb", ] -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -2234,7 +2209,7 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "windows-sys 0.52.0", ] @@ -2249,6 +2224,12 @@ dependencies = [ "once_cell", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + [[package]] name = "itertools" version = "0.12.1" @@ -2317,9 +2298,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685a7d121ee3f65ae4fddd72b25a04bb36b6af81bc0828f7d5434c0fe60fa3a2" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] @@ -2335,14 +2316,13 @@ dependencies = [ [[package]] name = "json-patch" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" +checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", "thiserror", - "treediff", ] [[package]] @@ -2407,9 +2387,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" @@ -2449,15 +2429,15 @@ checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -2539,9 +2519,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memoffset" @@ -2581,9 +2561,9 @@ checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", "simd-adler32", @@ -2602,9 +2582,9 @@ dependencies = [ [[package]] name = "muda" -version = "0.13.1" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f428b4e9db3d17e2f809dfb1ff9ddfbbf16c71790d1656d10aee320877e1392f" +checksum = "86b959f97c97044e4c96e32e1db292a7d594449546a3c6b77ae613dc3a5b5145" dependencies = [ "cocoa", "crossbeam-channel", @@ -2621,11 +2601,10 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -2710,13 +2689,12 @@ dependencies = [ [[package]] name = "nix" -version = "0.28.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ "bitflags 2.5.0", "cfg-if", - "cfg_aliases 0.1.1", "libc", "memoffset 0.9.1", ] @@ -2749,9 +2727,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-bigint", "num-complex", @@ -2763,20 +2741,19 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ - "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-complex" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -2795,7 +2772,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -2809,9 +2786,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -2820,11 +2797,10 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-bigint", "num-integer", "num-traits", @@ -2832,9 +2808,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -2845,7 +2821,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", ] @@ -2885,10 +2861,10 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -2912,6 +2888,106 @@ dependencies = [ "objc_id", ] +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.5.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.5.0", + "block2", + "dispatch", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -2932,9 +3008,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" dependencies = [ "memchr", ] @@ -2970,9 +3046,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "open" -version = "5.1.3" +version = "5.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb49fbd5616580e9974662cb96a3463da4476e649a7e4b258df0de065db0657" +checksum = "b5ca541f22b1c46d4bb9801014f234758ab4297e7870b904b6a8415b980a7388" dependencies = [ "is-wsl", "libc", @@ -3002,7 +3078,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -3013,9 +3089,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.2.3+3.2.1" +version = "300.3.1+3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cff92b6f71555b61bb9315f7c64da3ca43d87531622120fea0195fc761b4843" +checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91" dependencies = [ "cc", ] @@ -3033,6 +3109,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "ordered-multimap" version = "0.7.3" @@ -3040,7 +3122,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" dependencies = [ "dlv-list", - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -3066,9 +3148,9 @@ dependencies = [ [[package]] name = "os_pipe" -version = "1.1.5" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9" +checksum = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3113,9 +3195,9 @@ checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -3123,26 +3205,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.2", "smallvec", - "windows-targets 0.48.5", -] - -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", + "windows-targets 0.52.5", ] [[package]] @@ -3151,18 +3222,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest", - "hmac", - "password-hash", - "sha2", -] - [[package]] name = "percent-encoding" version = "2.3.1" @@ -3273,7 +3332,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -3320,7 +3379,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -3337,9 +3396,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" dependencies = [ "atomic-waker", "fastrand", @@ -3381,13 +3440,13 @@ dependencies = [ [[package]] name = "polling" -version = "3.6.0" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi", + "hermit-abi 0.4.0", "pin-project-lite", "rustix", "tracing", @@ -3414,12 +3473,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -3434,20 +3493,12 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" -dependencies = [ - "toml_edit 0.20.7", -] - -[[package]] -name = "proc-macro-crate" -version = "3.1.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" dependencies = [ - "toml_edit 0.21.1", + "toml_datetime", + "toml_edit 0.20.2", ] [[package]] @@ -3482,9 +3533,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] @@ -3498,6 +3549,53 @@ dependencies = [ "memchr", ] +[[package]] +name = "quinn" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" +dependencies = [ + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "quote" version = "1.0.36" @@ -3567,7 +3665,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -3596,9 +3694,9 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "raw-window-handle" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "redox_syscall" @@ -3609,27 +3707,36 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +dependencies = [ + "bitflags 2.5.0", +] + [[package]] name = "redox_users" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -3643,13 +3750,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.4", ] [[package]] @@ -3660,9 +3767,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" @@ -3678,7 +3785,7 @@ dependencies = [ "h2", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-tls", "ipnet", "js-sys", @@ -3692,7 +3799,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 0.1.2", "system-configuration", "tokio", "tokio-native-tls", @@ -3708,18 +3815,18 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e6cc1e89e689536eb5aeede61520e874df5a4707df811cd5da4aa5fbb2aae19" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "bytes", "futures-core", "futures-util", "http 1.1.0", "http-body 1.0.0", "http-body-util", - "hyper 1.2.0", + "hyper 1.3.1", "hyper-rustls", "hyper-util", "ipnet", @@ -3729,13 +3836,14 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "quinn", "rustls", "rustls-pemfile 2.1.2", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.1", "tokio", "tokio-rustls", "tokio-util", @@ -3766,7 +3874,7 @@ dependencies = [ "objc", "objc-foundation", "objc_id", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -3781,7 +3889,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.14", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -3823,9 +3931,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -3844,9 +3952,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.5.0", "errno", @@ -3857,11 +3965,11 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.4" +version = "0.23.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" dependencies = [ - "log", + "once_cell", "ring", "rustls-pki-types", "rustls-webpki", @@ -3884,7 +3992,7 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "rustls-pki-types", ] @@ -3896,9 +4004,9 @@ checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" -version = "0.102.3" +version = "0.102.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" dependencies = [ "ring", "rustls-pki-types", @@ -3907,15 +4015,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -3937,9 +4045,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.19" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6e7ed6919cb46507fb01ff1654309219f62b4d603822501b0b80d42f6f21ef" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -3951,14 +4059,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.19" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185f2b7aa7e02d418e453790dde16890256bbd2bcd04b7dc5348811052b53f49" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -3998,11 +4106,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -4011,9 +4119,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -4041,31 +4149,31 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -4076,14 +4184,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "serde_json" -version = "1.0.115" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa 1.0.11", "ryu", @@ -4098,14 +4206,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -4124,11 +4232,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", @@ -4142,14 +4250,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -4258,9 +4366,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -4294,9 +4402,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4304,20 +4412,22 @@ dependencies = [ [[package]] name = "softbuffer" -version = "0.4.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071916a85d1db274b4ed57af3a14afb66bd836ae7f82ebb6f1fd3455107830d9" +checksum = "2ae0d2e93c874cca74fe830bccbd1132299318932d273d2a3c77ad77476a3d7e" dependencies = [ "bytemuck", - "cfg_aliases 0.2.0", - "cocoa", + "cfg_aliases", "core-graphics", "foreign-types 0.5.0", "js-sys", "log", - "objc", - "raw-window-handle 0.6.0", - "redox_syscall", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle 0.6.2", + "redox_syscall 0.5.2", "wasm-bindgen", "wayland-sys", "web-sys", @@ -4403,12 +4513,6 @@ dependencies = [ "quote", ] -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "strsim" version = "0.11.1" @@ -4445,9 +4549,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -4460,6 +4564,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + [[package]] name = "sys-locale" version = "0.3.1" @@ -4499,15 +4609,15 @@ dependencies = [ "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.8.12", + "toml 0.8.2", "version-compare", ] [[package]] name = "tao" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12a8121bd5721ebbbe0889f8286d5824673beeb04071519b68916fbed04f3093" +checksum = "ea538df05fbc2dcbbd740ba0cfe8607688535f4798d213cbbfa13ce494f3451f" dependencies = [ "bitflags 2.5.0", "cocoa", @@ -4531,13 +4641,13 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "scopeguard", "tao-macros", "unicode-segmentation", "url", - "windows 0.56.0", - "windows-core 0.56.0", + "windows 0.57.0", + "windows-core 0.57.0", "windows-version", "x11-dl", ] @@ -4555,9 +4665,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" dependencies = [ "filetime", "libc", @@ -4572,9 +4682,9 @@ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tauri" -version = "2.0.0-beta.19" +version = "2.0.0-beta.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8e5bc2e4f5eb7496d1a3e5f4d272f69f1333db5f8efed28d79d7f93334fe95" +checksum = "5a258ecc5ac7ddade525f512c4962fd01cd0f5265e917b4572579c32c027bb31" dependencies = [ "anyhow", "bytes", @@ -4583,7 +4693,7 @@ dependencies = [ "dunce", "embed_plist", "futures-util", - "getrandom 0.2.14", + "getrandom 0.2.15", "glob", "gtk", "heck 0.5.0", @@ -4596,8 +4706,8 @@ dependencies = [ "muda", "objc", "percent-encoding", - "raw-window-handle 0.6.0", - "reqwest 0.12.3", + "raw-window-handle 0.6.2", + "reqwest 0.12.5", "serde", "serde_json", "serde_repr", @@ -4622,9 +4732,9 @@ dependencies = [ [[package]] name = "tauri-build" -version = "2.0.0-beta.15" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aa28eebafcda490fa7097a6e3a4d07f65967614d35dd88b2aaa19dbb49241cd" +checksum = "82b964bb6d03d97e24e12f896aab463b02a3c2ff76a60f728cc37b5548eb470e" dependencies = [ "anyhow", "cargo_toml", @@ -4638,17 +4748,17 @@ dependencies = [ "serde_json", "tauri-utils", "tauri-winres", - "toml 0.8.12", + "toml 0.8.2", "walkdir", ] [[package]] name = "tauri-codegen" -version = "2.0.0-beta.15" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727d13a28e9ec895f537d90a09acb0aa3593f703a715fe8a77f87269d3245b52" +checksum = "3529cfa977ed7c097f2a5e8da19ecffbe61982450a6c819e6165b6d0cfd3dd3a" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "brotli", "ico", "json-patch", @@ -4660,7 +4770,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "syn 2.0.58", + "syn 2.0.66", "tauri-utils", "thiserror", "time", @@ -4671,23 +4781,23 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.0.0-beta.15" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258667612ad901d256e04ace71ac54d4b3dd8fb1e5baa24403b50991cade4365" +checksum = "36f97dd80334f29314aa5f40b5fad10cb9feffd08e5a5324fd728613841e5d33" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "tauri-codegen", "tauri-utils", ] [[package]] name = "tauri-plugin" -version = "2.0.0-beta.15" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4b2f5a6ebff6558445ac0c54171e599abf1cddf9da539b043af74a46d2c04ce" +checksum = "7c8385fd0a4f661f5652b0d9e2d7256187d553bb174f88564d10ebcfa6a3af53" dependencies = [ "anyhow", "glob", @@ -4696,15 +4806,15 @@ dependencies = [ "serde", "serde_json", "tauri-utils", - "toml 0.8.12", + "toml 0.8.2", "walkdir", ] [[package]] name = "tauri-plugin-deep-link" -version = "2.0.0-beta.5" +version = "2.0.0-beta.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eee99edc3cf7d4004550d80cfc41c13e82b5cebf6c615720a453518ae7482af" +checksum = "3bfc538a38845f08c7a63acd9e03737b5e89c815273ed8e2a447780a4e2583f4" dependencies = [ "dunce", "log", @@ -4722,13 +4832,13 @@ dependencies = [ [[package]] name = "tauri-plugin-dialog" -version = "2.0.0-beta.7" +version = "2.0.0-beta.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4563f62939a475273e7b75eb4a862f0108969a54db813ef250092d470eff84dc" +checksum = "fed4b22c59f7b04ae2a0bed8241aa715b41973c3f042c84aa67a1f4dc0174a8d" dependencies = [ "dunce", "log", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "rfd", "serde", "serde_json", @@ -4740,9 +4850,9 @@ dependencies = [ [[package]] name = "tauri-plugin-fs" -version = "2.0.0-beta.7" +version = "2.0.0-beta.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35377195c6923beda5f29482a16b492d431de964389fca9aaf81a0f7e908023f" +checksum = "3aa91955751f329e0aa431b87c199b7378b6f91ec0765d2ad9d4c64e017c3cda" dependencies = [ "anyhow", "glob", @@ -4759,9 +4869,9 @@ dependencies = [ [[package]] name = "tauri-plugin-os" -version = "2.0.0-beta.4" +version = "2.0.0-beta.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653c0dbf5f954c7614a5e93f5b548bbe4417b3e1aa553b31ed0b6a2656949459" +checksum = "b9ae3c8aeb113ce614cc36a43b1061fdf64381f7635d02c390052ce7579ec628" dependencies = [ "gethostname", "log", @@ -4777,9 +4887,9 @@ dependencies = [ [[package]] name = "tauri-plugin-process" -version = "2.0.0-beta.4" +version = "2.0.0-beta.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6a08bc3495332f3fa96cbe9413cdd0ef5215df7ef4c00977dfb6651a6d5baf" +checksum = "e63250e666101a12b206e15d9c3c1f061e2be94a1659ee13fa3fda8fceba28e5" dependencies = [ "tauri", "tauri-plugin", @@ -4787,9 +4897,9 @@ dependencies = [ [[package]] name = "tauri-plugin-shell" -version = "2.0.0-beta.5" +version = "2.0.0-beta.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca4973141725f74983f6e89b9ce9c69a18bc0ec0fba23cc4d022986e0325b92b" +checksum = "f8675bf7ab71f571a99192d0685ae870eb7af1264bdbbb66a1d655609f6c7ebd" dependencies = [ "encoding_rs", "log", @@ -4806,20 +4916,35 @@ dependencies = [ "tokio", ] +[[package]] +name = "tauri-plugin-single-instance" +version = "2.0.0-beta.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ecafcc5214a5d3cd7a720c11e9c03cbd45ccaff721963485ec4ab481bdf4540" +dependencies = [ + "log", + "serde", + "serde_json", + "tauri", + "thiserror", + "windows-sys 0.52.0", + "zbus", +] + [[package]] name = "tauri-plugin-updater" -version = "2.0.0-beta.5" +version = "2.0.0-beta.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d1a632f5b0cc00911c3f379b0b69a4ccf5fd22eb10d022010dfb02717d5b6bc" +checksum = "d94c93d9aaf83b0589bbec467a1f591ed1991478d5150da48b6c42cb778a88d5" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "dirs-next", "flate2", "futures-util", "http 1.1.0", "infer", "minisign-verify", - "reqwest 0.12.3", + "reqwest 0.12.5", "semver", "serde", "serde_json", @@ -4852,15 +4977,15 @@ dependencies = [ [[package]] name = "tauri-runtime" -version = "2.0.0-beta.16" +version = "2.0.0-beta.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "574f3d59cbe6c76b6d849bc35aa3a9e8061ff8f75f557dc33f38c0e43cf55a41" +checksum = "d7dc96172a43536236ab55b7da7b8461bf75810985e668589e2395cb476937cb" dependencies = [ "dpi", "gtk", "http 1.1.0", "jni", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "serde", "serde_json", "tauri-utils", @@ -4871,9 +4996,9 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" -version = "2.0.0-beta.16" +version = "2.0.0-beta.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6d1f223de1d674aaa561c900ac650b3160f11520e9b191a3574f6c493fc77fa" +checksum = "5d4fd913b1f14a9b618c7f3ae35656d3aa759767fcb95b72006357c12b9d0b09" dependencies = [ "cocoa", "gtk", @@ -4881,7 +5006,7 @@ dependencies = [ "jni", "log", "percent-encoding", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "softbuffer", "tao", "tauri-runtime", @@ -4895,16 +5020,15 @@ dependencies = [ [[package]] name = "tauri-utils" -version = "2.0.0-beta.15" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b4251529d92b5c611ccaa611f8a31cb41b1aa00db8bcc0a49efe5d966bfa911" +checksum = "4f24a9c20d676a3f025331cc1c3841256ba88c9f25fb7fae709d2b3089c50d90" dependencies = [ "brotli", "cargo_metadata", "ctor", "dunce", "glob", - "heck 0.5.0", "html5ever", "infer", "json-patch", @@ -4922,7 +5046,7 @@ dependencies = [ "serde_with", "swift-rs", "thiserror", - "toml 0.8.12", + "toml 0.8.2", "url", "urlpattern", "walkdir", @@ -4978,22 +5102,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -5063,9 +5187,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", @@ -5082,13 +5206,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -5103,9 +5227,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ "rustls", "rustls-pki-types", @@ -5114,16 +5238,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -5140,21 +5263,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.12" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.9", + "toml_edit 0.20.2", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] @@ -5169,42 +5292,20 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.20.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", + "winnow", ] [[package]] name = "toml_edit" -version = "0.22.9" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.6", + "winnow", ] [[package]] @@ -5220,7 +5321,6 @@ dependencies = [ "tokio", "tower-layer", "tower-service", - "tracing", ] [[package]] @@ -5241,7 +5341,6 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -5255,7 +5354,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -5299,14 +5398,14 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.13.4" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97ec55956c54569e74209ae9d29a7a79193b252d17a6ac28bcffd4c11a384ad" +checksum = "3ad8319cca93189ea9ab1b290de0595960529750b6b8b501a399ed1ec3775d60" dependencies = [ "cocoa", "core-graphics", "crossbeam-channel", - "dirs-next", + "dirs", "libappindicator", "muda", "objc", @@ -5317,15 +5416,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "treediff" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d127780145176e2b5d16611cc25a900150e86e9fd79d3bde6ff3a37359c9cb5" -dependencies = [ - "serde_json", -] - [[package]] name = "trim-in-place" version = "0.1.7" @@ -5431,9 +5521,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -5468,9 +5558,9 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" @@ -5478,7 +5568,7 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -5560,12 +5650,14 @@ dependencies = [ "tauri-plugin-os", "tauri-plugin-process", "tauri-plugin-shell", + "tauri-plugin-single-instance", "tauri-plugin-updater", "tauri-plugin-window-state", "tokio", "url", "vibe", "windows 0.56.0", + "winreg 0.52.0", ] [[package]] @@ -5640,7 +5732,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "wasm-bindgen-shared", ] @@ -5674,7 +5766,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5700,9 +5792,9 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +checksum = "105b1842da6554f91526c14a2a2172897b7f745a805d62af4ce698706be79c12" dependencies = [ "dlib", "log", @@ -5765,9 +5857,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" dependencies = [ "rustls-pki-types", ] @@ -5782,8 +5874,8 @@ dependencies = [ "webview2-com-sys", "windows 0.56.0", "windows-core 0.56.0", - "windows-implement", - "windows-interface", + "windows-implement 0.56.0", + "windows-interface 0.56.0", ] [[package]] @@ -5794,7 +5886,7 @@ checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -5835,7 +5927,7 @@ dependencies = [ [[package]] name = "whisper-rs" version = "0.12.0" -source = "git+https://github.com/thewh1teagle/whisper-rs?branch=feat/pass-cmake-flags#35aca74d64df512d5b15e8ab40ed1e5a3802ccfd" +source = "git+https://github.com/thewh1teagle/whisper-rs?branch=feat/pass-cmake-flags#d17e03caa65bcf8021430af53391d8fc0130f4a2" dependencies = [ "log", "whisper-rs-sys", @@ -5844,7 +5936,7 @@ dependencies = [ [[package]] name = "whisper-rs-sys" version = "0.10.0" -source = "git+https://github.com/thewh1teagle/whisper-rs?branch=feat/pass-cmake-flags#35aca74d64df512d5b15e8ab40ed1e5a3802ccfd" +source = "git+https://github.com/thewh1teagle/whisper-rs?branch=feat/pass-cmake-flags#d17e03caa65bcf8021430af53391d8fc0130f4a2" dependencies = [ "bindgen", "cfg-if", @@ -5870,11 +5962,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -5891,7 +5983,7 @@ checksum = "33082acd404763b315866e14a0d5193f3422c81086657583937a750cdd3ec340" dependencies = [ "cocoa", "objc", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "windows-sys 0.52.0", "windows-version", ] @@ -5935,6 +6027,16 @@ dependencies = [ "windows-targets 0.52.5", ] +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.5", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -5960,8 +6062,20 @@ version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.56.0", + "windows-interface 0.56.0", + "windows-result", + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement 0.57.0", + "windows-interface 0.57.0", "windows-result", "windows-targets 0.52.5", ] @@ -5974,7 +6088,18 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", ] [[package]] @@ -5985,14 +6110,25 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", ] [[package]] name = "windows-registry" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f721bc2e55efb506a1a395a545cb76c2481fb023d33b51f0050e7888716281cf" +checksum = "acc134c90a0318d873ec962b13149e9c862ff0d2669082a709a4810167a3c6ee" dependencies = [ "windows-result", "windows-targets 0.52.5", @@ -6000,9 +6136,9 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ "windows-targets 0.52.5", ] @@ -6230,15 +6366,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winnow" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" -dependencies = [ - "memchr", -] - [[package]] name = "winreg" version = "0.50.0" @@ -6267,11 +6394,11 @@ checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] name = "wry" -version = "0.39.5" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7172fc76376d55d089c627a31a5b604b4ac372793fb5378d1c7ddf008703008" +checksum = "1fa597526af53f310a8e6218630c5024fdde8271f229e70d7d2fc70b52b8fb1e" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "block", "cocoa", "core-graphics", @@ -6293,7 +6420,7 @@ dependencies = [ "objc_id", "once_cell", "percent-encoding", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "sha2", "soup3", "tao-macros", @@ -6341,32 +6468,38 @@ dependencies = [ [[package]] name = "xdg-home" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] name = "zbus" -version = "4.1.2" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9" +checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030" dependencies = [ "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", "async-process", "async-recursion", + "async-task", "async-trait", + "blocking", "derivative", "enumflags2", - "event-listener 5.3.0", + "event-listener", "futures-core", "futures-sink", "futures-util", "hex", - "nix 0.28.0", + "nix 0.27.1", "ordered-stream", "rand 0.8.5", "serde", @@ -6385,11 +6518,11 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.1.2" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0" +checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "regex", @@ -6410,64 +6543,30 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" [[package]] name = "zip" -version = "0.6.6" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +checksum = "775a2b471036342aa69bc5a602bc889cb0a06cda00477d0c69566757d5553d39" dependencies = [ - "aes", - "byteorder", - "bzip2", - "constant_time_eq", + "arbitrary", "crc32fast", "crossbeam-utils", - "flate2", - "hmac", - "pbkdf2", - "sha1", - "time", - "zstd", -] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.10+zstd.1.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" -dependencies = [ - "cc", - "pkg-config", + "displaydoc", + "indexmap 2.2.6", + "memchr", + "thiserror", ] [[package]] name = "zvariant" -version = "4.0.2" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a" +checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65" dependencies = [ "endi", "enumflags2", @@ -6479,11 +6578,11 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "4.0.2" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc" +checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", diff --git a/INSTALL.md b/INSTALL.md index 67ba5ef0..c2a01139 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -80,3 +80,13 @@ Download and install [vc_redist.x64.exe](https://aka.ms/vs/17/release/vc_redist. Some CPUs aren't support some features used by Whisper. Please try to download and install the release file named with `older-cpu.exe`: [Vibe releases](https://github.com/thewh1teagle/vibe/releases/latest) + +## Link to download model + +You can add links to your websites for letting users download your models easily from your website directly to vibe. + +The URL should be like + +``` +vibe://download/?url=https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.bin?download=true +``` diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml index 575197b8..a8b1be09 100644 --- a/desktop/src-tauri/Cargo.toml +++ b/desktop/src-tauri/Cargo.toml @@ -9,10 +9,10 @@ edition = "2021" [build-dependencies] fs_extra = "1.3.0" -tauri-build = { version = "=2.0.0-beta.15", features = [] } +tauri-build = { version = "=2.0.0-beta.17", features = [] } [dependencies] -tauri = { version = "=2.0.0-beta.19", features = [ +tauri = { version = "=2.0.0-beta.22", features = [ "protocol-asset", "devtools", ] } @@ -39,6 +39,7 @@ futures = "0.3.30" cpal = "0.15.3" hound = "3.5.1" rand = "0.8.5" +tauri-plugin-single-instance = "2.0.0-beta.9" [target.'cfg(target_os = "linux")'.dependencies] @@ -51,6 +52,7 @@ windows = { version = "0.56.0", features = [ "Win32_System_Console", "Win32_Foundation", ] } +winreg = "0.52.0" [target.'cfg(target_os = "macos")'.dependencies] vibe = { path = "../../core", features = ["coreml", "metal"] } diff --git a/desktop/src-tauri/build.rs b/desktop/src-tauri/build.rs index 9d5ac275..e3294284 100644 --- a/desktop/src-tauri/build.rs +++ b/desktop/src-tauri/build.rs @@ -51,6 +51,13 @@ fn extract_whisper_env() { fn main() { let hash = commit_hash(); println!("cargo:rustc-env=COMMIT_HASH={}", hash); + + // Passed from Github action + println!( + "cargo:rustc-env=CUDA_VERSION={}", + std::env::var("INPUT_CUDA_VERSION").unwrap_or_default() + ); + copy_locales(); extract_whisper_env(); tauri_build::build(); diff --git a/desktop/src-tauri/capabilities/main.json b/desktop/src-tauri/capabilities/main.json index 04c31ab8..955cad20 100644 --- a/desktop/src-tauri/capabilities/main.json +++ b/desktop/src-tauri/capabilities/main.json @@ -1,85 +1,85 @@ { - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "migrated", - "description": "permissions that were migrated from v1", - "local": true, - "windows": [ - "main" - ], - "permissions": [ - { - "identifier": "fs:scope", - "allow": [ - { - "path": "**", - "requireLiteralLeadingDot": false - }, - { - "path": "$HOME/**", - "requireLiteralLeadingDot": false - }, - { - "path": "$APPCONFIG/**", - "requireLiteralLeadingDot": false - }, - { - "path": "$APPDATA/**", - "requireLiteralLeadingDot": false - }, - { - "path": "$APPLOCALDATA/**", - "requireLiteralLeadingDot": false - }, - { - "path": "$CONFIG/**", - "requireLiteralLeadingDot": false - }, - { - "path": "$DATA/**", - "requireLiteralLeadingDot": false - } - ] - }, - "path:default", - "event:default", - "window:default", - "app:default", - "resources:default", - "menu:default", - "tray:default", - "fs:default", - "fs:allow-remove", - "fs:allow-read-dir", - "fs:allow-read-text-file", - "fs:allow-app-write", - "os:allow-arch", - "os:allow-platform", - "os:allow-version", - "os:allow-os-type", - "window:default", - "window:allow-unminimize", - "window:allow-set-focus", - "window:allow-close", - "window:allow-destroy", - "window:allow-show", - "window:allow-is-visible", - "window-state:allow-restore-state", - "window-state:allow-save-window-state", - "webview:default", - "webview:allow-print", - "dialog:default", - "dialog:allow-open", - "dialog:allow-save", - "dialog:allow-ask", - "dialog:allow-message", - "process:allow-restart", - "app:default", - "app:allow-version", - "app:allow-name", - "updater:default", - "shell:allow-open", - "fs:default", - "fs:allow-exists", - "deep-link:allow-get-current" - ] + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "migrated", + "description": "permissions that were migrated from v1", + "local": true, + "windows": [ + "main" + ], + "permissions": [ + { + "identifier": "fs:scope", + "allow": [ + { + "path": "**", + "requireLiteralLeadingDot": false + }, + { + "path": "$HOME/**", + "requireLiteralLeadingDot": false + }, + { + "path": "$APPCONFIG/**", + "requireLiteralLeadingDot": false + }, + { + "path": "$APPDATA/**", + "requireLiteralLeadingDot": false + }, + { + "path": "$APPLOCALDATA/**", + "requireLiteralLeadingDot": false + }, + { + "path": "$CONFIG/**", + "requireLiteralLeadingDot": false + }, + { + "path": "$DATA/**", + "requireLiteralLeadingDot": false + } + ] + }, + "path:default", + "event:default", + "window:default", + "app:default", + "resources:default", + "menu:default", + "tray:default", + "fs:default", + "fs:allow-remove", + "fs:allow-read-dir", + "fs:allow-read-text-file", + "fs:allow-app-write", + "os:allow-arch", + "os:allow-platform", + "os:allow-version", + "os:allow-os-type", + "window:default", + "window:allow-unminimize", + "window:allow-set-focus", + "window:allow-close", + "window:allow-destroy", + "window:allow-show", + "window:allow-is-visible", + "window-state:allow-restore-state", + "window-state:allow-save-window-state", + "webview:default", + "webview:allow-print", + "dialog:default", + "dialog:allow-open", + "dialog:allow-save", + "dialog:allow-ask", + "dialog:allow-message", + "process:allow-restart", + "app:default", + "app:allow-version", + "app:allow-name", + "updater:default", + "shell:allow-open", + "fs:default", + "fs:allow-exists", + "deep-link:allow-get-current" + ] } \ No newline at end of file diff --git a/desktop/src-tauri/locales/en-US/common.json b/desktop/src-tauri/locales/en-US/common.json index 8810df14..beae5a60 100644 --- a/desktop/src-tauri/locales/en-US/common.json +++ b/desktop/src-tauri/locales/en-US/common.json @@ -3,6 +3,7 @@ "advanced": "Advanced", "advanced-options": "Advanced Options", "app-title": "Vibe!", + "ask-for-download-model": "Would you like to download the model from the website", "ask-for-relaunch-body": "Do you want to relaunch now?", "ask-for-relaunch-title": "Update Finished", "ask-for-update-body": "Do you want to update vibe into version {{version}}?", @@ -20,6 +21,7 @@ "customize": "Customize", "customize-info": "Download any supported model in ggml or gguf format (with the file extension ending in '.bin'). Transfer it to the models directory, then select from the dropdown. No need to restart 🌟", "discord-community": "Discord Community", + "download-model": "Download model", "download-models-link": "Download Models", "downloading-model": "Downloading OpenAI Model...", "error-title": "Error", diff --git a/desktop/src-tauri/locales/fr-FR/common.json b/desktop/src-tauri/locales/fr-FR/common.json index 125e3b60..19a72b91 100644 --- a/desktop/src-tauri/locales/fr-FR/common.json +++ b/desktop/src-tauri/locales/fr-FR/common.json @@ -3,6 +3,7 @@ "advanced": "Avancé", "advanced-options": "Options avancées", "app-title": "Vibe !", + "ask-for-download-model": "Souhaitez-vous télécharger le modèle depuis le site Web", "ask-for-relaunch-body": "Voulez-vous relancer maintenant ?", "ask-for-relaunch-title": "Mise à jour terminée", "ask-for-update-body": "Voulez-vous mettre à jour Vibe vers la version {{version}} ?", @@ -20,6 +21,7 @@ "customize": "Personnaliser", "customize-info": "Téléchargez n’importe quel modèle pris en charge au format ggml ou gguf (avec l’extension de fichier se terminant par ‘.bin’). Transférez-le dans le dossier des modèles, puis sélectionnez-le dans la liste déroulante. Pas besoin de redémarrer 🌟", "discord-community": "Communauté Discord", + "download-model": "Télécharger le modèle", "download-models-link": "Télécharger les modèles", "downloading-model": "Téléchargement du modèle OpenAI en cours…", "error-title": "Erreur", diff --git a/desktop/src-tauri/locales/he-IL/common.json b/desktop/src-tauri/locales/he-IL/common.json index 08257e62..767242cd 100644 --- a/desktop/src-tauri/locales/he-IL/common.json +++ b/desktop/src-tauri/locales/he-IL/common.json @@ -3,6 +3,7 @@ "advanced": "מתקדם", "advanced-options": "אפשרויות מתקדמות", "app-title": "Vibe", + "ask-for-download-model": "האם ברצונך להוריד את המודל מהאתר", "ask-for-relaunch-body": "האם ברצונך להפעיל מחדש את התוכנה?", "ask-for-relaunch-title": "העדכון הסתיים", "ask-for-update-body": "האם ברצונך לבצע עדכון לגרסה {{version}}?", @@ -20,6 +21,7 @@ "customize": "התאמה אישית", "customize-info": "הורידו קובץ מודלים (ggml או gguf) עם סיומת .bin, העבירו לתיקיית המודלים ובחרו את הקובץ כאן מהתפריט הנפתח. אין צורך להפעיל מחדש! 🌟", "discord-community": "קהילת דיסקורד", + "download-model": "הורד מודל", "download-models-link": "הורדת מודלים", "downloading-model": "מוריד מודל בינה מלאכותית", "error-title": "שגיאה", diff --git a/desktop/src-tauri/locales/pt-BR/common.json b/desktop/src-tauri/locales/pt-BR/common.json index f390a13d..f1eb5b02 100644 --- a/desktop/src-tauri/locales/pt-BR/common.json +++ b/desktop/src-tauri/locales/pt-BR/common.json @@ -3,6 +3,7 @@ "advanced": "Advanced", "advanced-options": "Opções avançadas", "app-title": "Vibe!", + "ask-for-download-model": "Gostaria de baixar o modelo do site", "ask-for-relaunch-body": "Deseja reiniciar agora?", "ask-for-relaunch-title": "Atualização concluída", "ask-for-update-body": "Deseja atualizar o vibe para a versão {{version}}?", @@ -20,6 +21,7 @@ "customize": "personalizar", "customize-info": "Download any supported model in ggml or gguf format (with the file extension ending in '.bin'). Transfer it to the models directory, then select from the dropdown. No need to restart 🌟", "discord-community": "Comunidade Discordante", + "download-model": "Baixar modelo", "download-models-link": "Baixar modelos", "downloading-model": "Baixando o modelo OpenAI....", "error-title": "Erro", diff --git a/desktop/src-tauri/locales/sv-SE/common.json b/desktop/src-tauri/locales/sv-SE/common.json index cd16fb0e..cc684fae 100644 --- a/desktop/src-tauri/locales/sv-SE/common.json +++ b/desktop/src-tauri/locales/sv-SE/common.json @@ -3,6 +3,7 @@ "advanced": "Advanced", "advanced-options": "Avancerade Inställningar", "app-title": "Vibe!", + "ask-for-download-model": "Vill du ladda ner modellen från hemsidan", "ask-for-relaunch-body": "Vill du starta om programmet nu?", "ask-for-relaunch-title": "Updatering klar", "ask-for-update-body": "Vill du uppdatera Vibe till version {{version}}?", @@ -20,6 +21,7 @@ "customize": "Anpassa", "customize-info": "Download any supported model in ggml or gguf format (with the file extension ending in '.bin'). Transfer it to the models directory, then select from the dropdown. No need to restart 🌟", "discord-community": "Discord-gemenskap", + "download-model": "Ladda ner modell", "download-models-link": "Hämta Modeller", "downloading-model": "Hämtar OpenAI Model...", "error-title": "Fel", diff --git a/desktop/src-tauri/locales/zh-CN/common.json b/desktop/src-tauri/locales/zh-CN/common.json index 6887f008..22432293 100644 --- a/desktop/src-tauri/locales/zh-CN/common.json +++ b/desktop/src-tauri/locales/zh-CN/common.json @@ -3,6 +3,7 @@ "advanced": "高级设置", "advanced-options": "高级选项", "app-title": "Vibe!", + "ask-for-download-model": "您想从网站下载模型吗", "ask-for-relaunch-body": "是否立即重启应用?", "ask-for-relaunch-title": "更新完成", "ask-for-update-body": "你想将 Vibe 更新到 {{version}} 版本吗?", @@ -20,6 +21,7 @@ "customize": "自定义", "customize-info": "下载任何支持的 ggml 或 gguf 格式的模型文件(扩展名以'.bin'结尾),将其放入模型目录,然后从下拉列表中选择即可,无需重启应用🌟", "discord-community": "Discord社区", + "download-model": "下载模型", "download-models-link": "下载模型", "downloading-model": "正在下载 OpenAI 模型...", "error-title": "错误", diff --git a/desktop/src-tauri/src/cmd/audio.rs b/desktop/src-tauri/src/cmd/audio.rs index 29ebb78e..80ce77a9 100644 --- a/desktop/src-tauri/src/cmd/audio.rs +++ b/desktop/src-tauri/src/cmd/audio.rs @@ -40,7 +40,11 @@ pub fn get_audio_devices() -> Result> { for (device_index, device) in devices.enumerate() { let name = device.name()?; let is_default_in = default_in.as_ref().map_or(false, |d| d == &name); - let is_default_out = if cfg!(target_os = "macos") {false} else {default_out.as_ref().map_or(false, |d| d == &name)}; + let is_default_out = if cfg!(target_os = "macos") { + false + } else { + default_out.as_ref().map_or(false, |d| d == &name) + }; let is_input = device.default_input_config().is_ok(); @@ -53,8 +57,13 @@ pub fn get_audio_devices() -> Result> { audio_devices.push(audio_device); } - #[cfg(target_os = "macos")] - audio_devices.push(AudioDevice { is_default: true, is_input: false, id: "screencapturekit".to_string(), name: "Speakers".into() }); + #[cfg(target_os = "macos")] + audio_devices.push(AudioDevice { + is_default: true, + is_input: false, + id: "screencapturekit".to_string(), + name: "Speakers".into(), + }); Ok(audio_devices) } @@ -73,98 +82,95 @@ pub async fn start_record(app_handle: AppHandle, devices: Vec, stor let mut stream_handles = Vec::new(); let mut stream_writers = Vec::new(); - #[cfg(target_os = "macos")] - let mut screencapture_stream: Option<_> = None; + #[cfg(target_os = "macos")] + let mut screencapture_stream: Option<_> = None; for device in devices { log::debug!("Recording from device: {}", device.name); log::debug!("Device ID: {}", device.id); let is_input = device.is_input; - if device.id == "screencapturekit" { - #[cfg(target_os = "macos")] - { - let stream = screen_capture_kit::init(); - let stream = Arc::new(stream); - screencapture_stream = Some(stream.clone()); - screen_capture_kit::start_capture(&stream); - } + if device.id == "screencapturekit" { + #[cfg(target_os = "macos")] + { + let stream = screen_capture_kit::init(); + let stream = Arc::new(stream); + screencapture_stream = Some(stream.clone()); + screen_capture_kit::start_capture(&stream); + } + } else { + let device_id: usize = device.id.parse().context("Failed to parse device ID")?; + let device = host.devices()?.nth(device_id).context("Failed to get device by ID")?; + let config = if is_input { + device.default_input_config().context("Failed to get default input config")? + } else { + device.default_output_config().context("Failed to get default input config")? + }; + let spec = wav_spec_from_config(&config); - - } else { - let device_id: usize = device.id.parse().context("Failed to parse device ID")?; - let device = host.devices()?.nth(device_id).context("Failed to get device by ID")?; - let config = if is_input { - device.default_input_config().context("Failed to get default input config")? - } else { - device.default_output_config().context("Failed to get default input config")? - }; - let spec = wav_spec_from_config(&config); - - let path = std::env::temp_dir().join(format!("{}.wav", random_string(10))); - log::debug!("WAV file path: {:?}", path); - wav_paths.push((path.clone(), 0)); - - let writer = hound::WavWriter::create(path.clone(), spec)?; - let writer = Arc::new(Mutex::new(Some(writer))); - stream_writers.push(writer.clone()); - let writer_2 = writer.clone(); - - let err_fn = move |err| { - log::error!("An error occurred on stream: {}", err); - }; - - let volume_factor = if cfg!(windows) {3} else {1}; - - let stream = match config.sample_format() { - cpal::SampleFormat::I8 => device.build_input_stream( - &config.into(), - move |data, _: &_| { - log::debug!("Writing input data (I8)"); - write_input_data::(data, &writer_2, volume_factor) - }, - err_fn, - None, - )?, - cpal::SampleFormat::I16 => device.build_input_stream( - &config.into(), - move |data, _: &_| { - log::debug!("Writing input data (I16)"); - write_input_data::(data, &writer_2, volume_factor.into()) - }, - err_fn, - None, - )?, - cpal::SampleFormat::I32 => device.build_input_stream( - &config.into(), - move |data, _: &_| { - log::debug!("Writing input data (I32)"); - write_input_data::(data, &writer_2, volume_factor.into()) - }, - err_fn, - None, - )?, - cpal::SampleFormat::F32 => device.build_input_stream( - &config.into(), - move |data, _: &_| { - log::debug!("Writing input data (F32)"); - write_input_data::(data, &writer_2, volume_factor.into()) - }, - err_fn, - None, - )?, - sample_format => { - bail!("Unsupported sample format '{}'", sample_format) - } - }; - stream.play()?; - log::debug!("Stream started playing"); - - let stream_handle = Arc::new(Mutex::new(Some(StreamHandle(stream)))); - stream_handles.push(stream_handle.clone()); - log::debug!("Stream handle created"); - } - + let path = std::env::temp_dir().join(format!("{}.wav", random_string(10))); + log::debug!("WAV file path: {:?}", path); + wav_paths.push((path.clone(), 0)); + + let writer = hound::WavWriter::create(path.clone(), spec)?; + let writer = Arc::new(Mutex::new(Some(writer))); + stream_writers.push(writer.clone()); + let writer_2 = writer.clone(); + + let err_fn = move |err| { + log::error!("An error occurred on stream: {}", err); + }; + + let volume_factor = if cfg!(windows) { 3 } else { 1 }; + + let stream = match config.sample_format() { + cpal::SampleFormat::I8 => device.build_input_stream( + &config.into(), + move |data, _: &_| { + log::debug!("Writing input data (I8)"); + write_input_data::(data, &writer_2, volume_factor) + }, + err_fn, + None, + )?, + cpal::SampleFormat::I16 => device.build_input_stream( + &config.into(), + move |data, _: &_| { + log::debug!("Writing input data (I16)"); + write_input_data::(data, &writer_2, volume_factor.into()) + }, + err_fn, + None, + )?, + cpal::SampleFormat::I32 => device.build_input_stream( + &config.into(), + move |data, _: &_| { + log::debug!("Writing input data (I32)"); + write_input_data::(data, &writer_2, volume_factor.into()) + }, + err_fn, + None, + )?, + cpal::SampleFormat::F32 => device.build_input_stream( + &config.into(), + move |data, _: &_| { + log::debug!("Writing input data (F32)"); + write_input_data::(data, &writer_2, volume_factor.into()) + }, + err_fn, + None, + )?, + sample_format => { + bail!("Unsupported sample format '{}'", sample_format) + } + }; + stream.play()?; + log::debug!("Stream started playing"); + + let stream_handle = Arc::new(Mutex::new(Some(StreamHandle(stream)))); + stream_handles.push(stream_handle.clone()); + log::debug!("Stream handle created"); + } } let app_handle_clone = app_handle.clone(); @@ -173,7 +179,7 @@ pub async fn start_record(app_handle: AppHandle, devices: Vec, stor let stream = stream_handle.lock().unwrap().take(); let writer = stream_writers[i].clone(); - + if let Some(stream) = stream { log::debug!("Pausing stream"); stream.0.pause().unwrap(); @@ -183,7 +189,6 @@ pub async fn start_record(app_handle: AppHandle, devices: Vec, stor wav_paths[i] = (wav_paths[i].0.clone(), written); writer.finalize().unwrap(); } - } #[cfg(target_os = "macos")] @@ -204,7 +209,7 @@ pub async fn start_record(app_handle: AppHandle, devices: Vec, stor log::debug!("Merging WAV files"); vibe::audio::merge_wav_files(wav_paths[0].0.clone(), wav_paths[1].0.clone(), dst.clone()).unwrap(); dst - } + } else if wav_paths[0].1 > wav_paths[1].1 { // First WAV file has a larger sample count, choose it wav_paths[0].0.clone() @@ -255,7 +260,6 @@ fn wav_spec_from_config(config: &cpal::SupportedStreamConfig) -> hound::WavSpec use std::ops::Mul; - fn write_input_data(input: &[T], writer: &WavWriterHandle, volume_factor: U) where T: Sample, @@ -269,4 +273,4 @@ where } } } -} \ No newline at end of file +} diff --git a/desktop/src-tauri/src/cmd/mod.rs b/desktop/src-tauri/src/cmd/mod.rs index c268453a..052447d0 100644 --- a/desktop/src-tauri/src/cmd/mod.rs +++ b/desktop/src-tauri/src/cmd/mod.rs @@ -1,6 +1,7 @@ use crate::config; -use eyre::{Context, ContextCompat, OptionExt, Result}; +use eyre::{bail, Context, ContextCompat, OptionExt, Result}; use serde_json::{json, Value}; +use std::panic::{catch_unwind, AssertUnwindSafe}; use std::path::PathBuf; use std::sync::{ atomic::{AtomicBool, Ordering}, @@ -58,22 +59,6 @@ fn set_progress_bar(app_handle: &tauri::AppHandle, progress: Option) -> Res Ok(()) } -#[tauri::command] -#[cfg(any(windows, target_os = "linux"))] -pub fn get_deeplinks(app_handle: tauri::AppHandle) -> Vec { - let opened_urls = app_handle.state::(); - let opened_urls = opened_urls.0.lock().unwrap(); - let mut urls = Vec::new(); - - if let Some(opened_urls) = &*opened_urls { - for url in opened_urls { - urls.push(url.to_string()); - } - } - - urls -} - #[tauri::command] pub fn get_commit_hash() -> String { env!("COMMIT_HASH").to_string() @@ -188,15 +173,25 @@ pub async fn transcribe(app_handle: tauri::AppHandle, options: vibe::config::Tra set_progress_bar(&app_handle, Some(progress.into())).unwrap(); }; - let transcript = vibe::model::transcribe( - &options, - Some(Box::new(progress_callback)), - Some(Box::new(new_segment_callback)), - Some(Box::new(abort_callback)), - ) - .with_context(|| format!("options: {:?}", options))?; + // prevent panic crash. sometimes whisper.cpp crash without nice errors. + let unwind_result = catch_unwind(AssertUnwindSafe(|| { + vibe::model::transcribe( + &options, + Some(Box::new(progress_callback)), + Some(Box::new(new_segment_callback)), + Some(Box::new(abort_callback)), + ) + })); set_progress_bar(&app_handle_c, None).unwrap(); - Ok(transcript) + match unwind_result { + Err(error) => { + bail!("transcribe crash: {:?}", error) + } + Ok(transcribe_result) => { + let transcript = transcribe_result.with_context(|| format!("options: {:?}", options))?; + Ok(transcript) + } + } } #[tauri::command] @@ -236,6 +231,11 @@ pub fn get_save_path(src_path: PathBuf, target_ext: &str) -> Result { Ok(named_path) } +#[tauri::command] +pub fn get_argv() -> Vec { + std::env::args().collect() +} + #[tauri::command] /// Opens folder or open folder of a file pub async fn open_path(path: PathBuf) -> Result<()> { @@ -246,3 +246,14 @@ pub async fn open_path(path: PathBuf) -> Result<()> { } Ok(()) } + +#[tauri::command] +pub fn get_cuda_version() -> String { + env!("CUDA_VERSION").to_string() +} + +#[tauri::command] +pub fn is_avx2_enabled() -> bool { + #[allow(clippy::comparison_to_empty)] + return env!("WHISPER_NO_AVX") != "ON"; +} diff --git a/desktop/src-tauri/src/deep_link.rs b/desktop/src-tauri/src/deep_link.rs deleted file mode 100644 index fb67f28e..00000000 --- a/desktop/src-tauri/src/deep_link.rs +++ /dev/null @@ -1,22 +0,0 @@ -use std::sync::Mutex; -use tauri::{App, Manager}; - -pub struct OpenedUrls(pub Mutex>>); - -pub fn create_state(app: &App) { - app.manage(OpenedUrls(Default::default())); - #[cfg(any(windows, target_os = "linux"))] - { - // NOTICE: `args` may include URL protocol (`your-app-protocol://`) or arguments (`--`) if app supports them. - let mut urls = Vec::new(); - for arg in std::env::args().skip(1) { - if let Ok(url) = url::Url::parse(&arg) { - urls.push(url); - } - } - - if !urls.is_empty() { - app.state::().0.lock().unwrap().replace(urls); - } - } -} diff --git a/desktop/src-tauri/src/main.rs b/desktop/src-tauri/src/main.rs index e69561bd..afba7e2c 100644 --- a/desktop/src-tauri/src/main.rs +++ b/desktop/src-tauri/src/main.rs @@ -4,10 +4,10 @@ mod cli; mod cmd; mod config; -mod deep_link; mod panic_hook; mod setup; mod utils; +use tauri::Manager; #[cfg(target_os = "macos")] mod dock; @@ -15,6 +15,9 @@ mod dock; #[cfg(all(any(target_arch = "x86", target_arch = "x86_64"), target_os = "windows"))] mod x86_features; +#[cfg(windows)] +mod register_custom_protocol; + use tauri_plugin_window_state::StateFlags; fn main() { @@ -26,6 +29,11 @@ fn main() { log::debug!("Vibe App Running"); tauri::Builder::default() + .plugin(tauri_plugin_single_instance::init(|app, argv, cwd| { + app.get_webview_window("main").unwrap().set_focus().unwrap(); + log::debug!("{}, {argv:?}, {cwd}", app.package_info().name); + app.emit("single-instance", argv).unwrap(); + })) .setup(|app| setup::setup(app)) .plugin( tauri_plugin_window_state::Builder::default() @@ -44,15 +52,16 @@ fn main() { cmd::download_model, cmd::get_default_model_path, cmd::get_commit_hash, + cmd::get_cuda_version, + cmd::is_avx2_enabled, cmd::is_online, cmd::get_path_dst, cmd::open_path, cmd::get_x86_features, cmd::get_save_path, + cmd::get_argv, cmd::audio::get_audio_devices, cmd::audio::start_record, - #[cfg(any(windows, target_os = "linux"))] - cmd::get_deeplinks ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); diff --git a/desktop/src-tauri/src/register_custom_protocol.rs b/desktop/src-tauri/src/register_custom_protocol.rs new file mode 100644 index 00000000..20213194 --- /dev/null +++ b/desktop/src-tauri/src/register_custom_protocol.rs @@ -0,0 +1,26 @@ +use eyre::ContextCompat; +use eyre::Result; +use winreg::enums::*; +use winreg::RegKey; + +pub fn register() -> Result<()> { + let hkcu = RegKey::predef(HKEY_CURRENT_USER); + let classes = hkcu.open_subkey_with_flags("Software\\Classes", KEY_ALL_ACCESS)?; + + // Create the main key for the protocol handler + let app_class = classes.create_subkey("vibe")?; + app_class.0.set_value("URL Protocol", &"")?; + + // Create the necessary subkeys: shell, open, command + let shell = app_class.0.create_subkey("shell")?; + let open = shell.0.create_subkey("open")?; + let command = open.0.create_subkey("command")?; + + // Set the default value for the command key + let program_path = std::env::current_exe()?; + let command_value = format!("\"{}\" \"%1\"", program_path.to_str().context("tostr")?); + command.0.set_value("", &command_value)?; + + log::debug!("Protocol handler registered successfully."); + Ok(()) +} diff --git a/desktop/src-tauri/src/setup.rs b/desktop/src-tauri/src/setup.rs index 95fc1b0b..bb7f7aaf 100644 --- a/desktop/src-tauri/src/setup.rs +++ b/desktop/src-tauri/src/setup.rs @@ -1,4 +1,4 @@ -use crate::{cli, deep_link, panic_hook}; +use crate::{cli, panic_hook}; use tauri::{App, Manager}; pub fn setup(app: &App) -> Result<(), Box> { @@ -10,6 +10,13 @@ pub fn setup(app: &App) -> Result<(), Box> { log::debug!("webview version: {}", version); } + #[cfg(windows)] + { + if let Err(error) = crate::register_custom_protocol::register() { + log::error!("{:?}", error); + } + } + #[cfg(all(any(target_arch = "x86", target_arch = "x86_64"), target_os = "windows"))] log::debug!( "CPU Features\n{}", @@ -23,9 +30,6 @@ pub fn setup(app: &App) -> Result<(), Box> { log::debug!("COMMIT_HASH: {}", env!("COMMIT_HASH")); - // Add deep links from argv as tauri::State - deep_link::create_state(app); - if cli::is_cli_detected() { cli::run(app); } else { diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json index 9a3a559e..a3348444 100644 --- a/desktop/src-tauri/tauri.conf.json +++ b/desktop/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "./gen/schemas/desktop-schema.json", "productName": "vibe", - "version": "2.0.3", + "version": "2.0.4", "identifier": "github.com.thewh1teagle.vibe", "app": { "windows": [], @@ -78,6 +78,14 @@ "endpoints": [ "https://github.com/thewh1teagle/vibe/releases/latest/download/latest.json" ] + }, + "deep-link": { + "mobile": [], + "desktop": { + "schemes": [ + "vibe" + ] + } } } } \ No newline at end of file diff --git a/desktop/src/App.tsx b/desktop/src/App.tsx index 5ab3f5a6..5327a0a1 100644 --- a/desktop/src/App.tsx +++ b/desktop/src/App.tsx @@ -14,6 +14,7 @@ import { ErrorBoundary } from 'react-error-boundary' import { BoundaryFallback } from './components/BoundaryFallback' import ErrorModalWithContext from './components/ErrorModalWithContext' import { Toaster } from 'react-hot-toast' +import { FilesProvider } from './providers/FilesProvider' export default function App() { const { i18n } = useTranslation() @@ -28,12 +29,13 @@ export default function App() { - - - } /> - } /> - } /> - + + + } /> + } /> + } /> + + diff --git a/desktop/src/lib/useDeepLinks.tsx b/desktop/src/lib/useDeepLinks.tsx new file mode 100644 index 00000000..39d40fc8 --- /dev/null +++ b/desktop/src/lib/useDeepLinks.tsx @@ -0,0 +1,59 @@ +import { onOpenUrl } from '@tauri-apps/plugin-deep-link' +import { useTranslation } from 'react-i18next' +import { ModifyState, NamedPath, pathToNamedPath } from './utils' +import { ask } from '@tauri-apps/plugin-dialog' +import * as config from '~/lib/config' +import { useNavigate } from 'react-router-dom' +import { useEffect } from 'react' +import * as os from '@tauri-apps/plugin-os' +import { invoke } from '@tauri-apps/api/core' + +interface UseDeepLinksProps { + setFiles: ModifyState +} + +export function useDeepLinks({ setFiles }: UseDeepLinksProps) { + const { t } = useTranslation() + const navigate = useNavigate() + + async function processURLs(urls: string[]): Promise { + const newFiles: NamedPath[] = [] + for (let url of urls) { + if (url.startsWith('vibe://download/?url=')) { + const downloadURL = url.replace('vibe://download/?url=', '') + const host = new URL(downloadURL).hostname + const confirm = await ask(`${t('common.ask-for-download-model')} ${host}`, { kind: 'info', title: t('common.download-model') }) + if (confirm) { + navigate('/setup', { state: { downloadURL } }) + } + break + } else if (config.videoExtensions.some((e) => url.endsWith(e)) || config.audioExtensions.some((e) => url.endsWith(e))) { + url = url.replace('file://', '') + url = decodeURIComponent(url) + const newFile = await pathToNamedPath(url) + newFiles.push(newFile) + } + } + setFiles(newFiles) + } + + async function handleArgv() { + const argv = await invoke('get_argv') + await processURLs(argv) + } + + async function handleDeepLinks() { + const platform = await os.platform() + if (['windows', 'linux'].includes(platform)) { + return + } + onOpenUrl(async (urls) => { + await processURLs(urls) + }) + } + + useEffect(() => { + handleArgv() + handleDeepLinks() + }, []) +} diff --git a/desktop/src/lib/useSingleInstance.tsx b/desktop/src/lib/useSingleInstance.tsx new file mode 100644 index 00000000..37540099 --- /dev/null +++ b/desktop/src/lib/useSingleInstance.tsx @@ -0,0 +1,54 @@ +import { useTranslation } from 'react-i18next' +import { ModifyState, NamedPath, pathToNamedPath } from './utils' +import { ask } from '@tauri-apps/plugin-dialog' +import { useEffect } from 'react' +import { listen } from '@tauri-apps/api/event' +import { useNavigate } from 'react-router-dom' +import * as config from '~/lib/config' +import * as os from '@tauri-apps/plugin-os' + +interface UseSingleInstanceProps { + setFiles: ModifyState +} + +export function useSingleInstance({ setFiles }: UseSingleInstanceProps) { + const { t } = useTranslation() + const navigate = useNavigate() + + async function handleSingleInstance() { + const platform = await os.platform() + await listen('single-instance', async (event) => { + const argv = event.payload + let action = argv?.[1] + + // vibe://download/?url=google.com + // already handled in deep links in macos + if (action && action.startsWith('vibe://download/?') && platform != 'macos') { + const params = new URLSearchParams(action.replace('vibe://download/?', '')) + const url = params.get('url') + if (url) { + const downloadURL = url.replace('vibe://download/?url=', '') + const hostname = new URL(url).hostname + const confirm = await ask(`${t('common.ask-for-download-model')} ${hostname}?`, { title: t('common.download-model'), kind: 'info' }) + if (confirm) { + navigate('/setup', { state: { downloadURL } }) + } + } + } + // if not action, probably it's open with action + const newFiles: NamedPath[] = [] + for (const arg of argv) { + if (config.audioExtensions.some((e) => arg.endsWith(e)) || config.videoExtensions.some((e) => arg.endsWith(e))) { + newFiles.push(await pathToNamedPath(arg)) + } + } + if (newFiles) { + setFiles([...newFiles]) + } + }) + } + + useEffect(() => { + handleSingleInstance() + }, []) +} diff --git a/desktop/src/lib/utils.ts b/desktop/src/lib/utils.ts index b70aa449..a3008ef6 100644 --- a/desktop/src/lib/utils.ts +++ b/desktop/src/lib/utils.ts @@ -85,6 +85,7 @@ export async function getAppInfo() { const osVer = await os.version() const configPath = await api.path.appLocalDataDir() const entries = await ls(configPath) + const cudaVersion = await invoke("get_cuda_version") const models = entries .filter((e) => e.name?.endsWith('.bin')) .map((e) => e.name) @@ -98,12 +99,28 @@ export async function getAppInfo() { `Kernel Version: ${kVer}`, `OS: ${osType}`, `OS Version: ${osVer}`, + `Cuda Version: ${cudaVersion || 'n/a'}`, `Models: ${models}`, `Default Model: ${defaultModel}`, `\n\n${x86Features}`, ].join('\n') } +export async function getPrettyVersion() { + const appVersion = await app.getVersion() + const appName = await app.getName() + let version = `${appName} ${appVersion}` + const cudaVersion = await invoke("get_cuda_version") + const avx2Enabled = await invoke("is_avx2_enabled") + if (cudaVersion) { + version += ` (nvidia ${cudaVersion})` + } + if (!avx2Enabled) { + version += ` (older cpu)` + } + return version +} + export async function getIssueUrl(logs: string) { return `https://github.com/thewh1teagle/vibe/issues/new?assignees=octocat&labels=bug&projects=&template=bug_report.yaml&title=Bug:&logs=${encodeURIComponent( logs diff --git a/desktop/src/pages/batch/viewModel.tsx b/desktop/src/pages/batch/viewModel.tsx index 9e2c306b..26c1c2dd 100644 --- a/desktop/src/pages/batch/viewModel.tsx +++ b/desktop/src/pages/batch/viewModel.tsx @@ -1,8 +1,8 @@ import { invoke } from '@tauri-apps/api/core' import { useContext, useEffect, useRef, useState } from 'react' -import { useLocation, useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router-dom' import { TextFormat, formatExtensions } from '~/components/FormatSelect' -import { Segment, Transcript, asSrt, asText, asVtt } from '~/lib/transcript' +import { Segment, Transcript, asJson, asSrt, asText, asVtt } from '~/lib/transcript' import { NamedPath, pathToNamedPath } from '~/lib/utils' import * as webview from '@tauri-apps/api/webviewWindow' import * as dialog from '@tauri-apps/plugin-dialog' @@ -11,13 +11,12 @@ import successSound from '~/assets/success.mp3' import { ErrorModalContext } from '~/providers/ErrorModal' import { writeTextFile } from '@tauri-apps/plugin-fs' import { emit, listen } from '@tauri-apps/api/event' -import { onOpenUrl } from '@tauri-apps/plugin-deep-link' -import * as os from '@tauri-apps/plugin-os' import { usePreferencesContext } from '~/providers/Preferences' +import { useFilesContext } from '~/providers/FilesProvider' export function viewModel() { - const location = useLocation() - const [files, setFiles] = useState(location?.state?.files) + const { files, setFiles } = useFilesContext() + const [format, setFormat] = useState('normal') const [currentIndex, setCurrentIndex] = useState(0) const [progress, setProgress] = useState(null) @@ -35,6 +34,9 @@ export function viewModel() { if (format === 'vtt') { return asVtt(segments) } + if (format === 'json') { + return asJson(segments) + } return asText(segments) } @@ -90,42 +92,6 @@ export function viewModel() { }) } - async function handleDeepLinks() { - const platform = await os.platform() - let newFiles = [] - if (platform === 'macos') { - await onOpenUrl(async (urls) => { - for (let url of urls) { - if (url.startsWith('file://')) { - url = decodeURIComponent(url) - url = url.replace('file://', '') - // take only the first one - newFiles.push(await pathToNamedPath(url)) - } - } - }) - } else if (platform == 'windows' || platform == 'linux') { - const urls: string[] = await invoke('get_deeplinks') - for (const url of urls) { - newFiles.push(await pathToNamedPath(url)) - } - } - newFiles = newFiles.filter((f) => { - const path = f.path.toLowerCase() - return ( - config.videoExtensions.some((ext) => path.endsWith(ext.toLowerCase())) || - config.audioExtensions.some((ext) => path.endsWith(ext.toLowerCase())) || - files.includes(f) - ) - }) - if (newFiles.length > 1) { - setFiles(newFiles) - } - if (newFiles.length === 1) { - navigate('/', { state: { files: newFiles } }) - } - } - async function start() { if (inProgress) { return @@ -197,7 +163,6 @@ export function viewModel() { } useEffect(() => { - handleDeepLinks() handleDrop() ListenForProgress() }, []) diff --git a/desktop/src/pages/home/viewModel.ts b/desktop/src/pages/home/viewModel.ts index f02ef2b5..c364e8ce 100644 --- a/desktop/src/pages/home/viewModel.ts +++ b/desktop/src/pages/home/viewModel.ts @@ -3,10 +3,8 @@ import { event, path } from '@tauri-apps/api' import { convertFileSrc, invoke } from '@tauri-apps/api/core' import { emit, listen } from '@tauri-apps/api/event' import * as webview from '@tauri-apps/api/webviewWindow' -import { onOpenUrl } from '@tauri-apps/plugin-deep-link' import * as dialog from '@tauri-apps/plugin-dialog' import * as fs from '@tauri-apps/plugin-fs' -import * as os from '@tauri-apps/plugin-os' import { open } from '@tauri-apps/plugin-shell' import { useContext, useEffect, useRef, useState } from 'react' import { useLocation, useNavigate } from 'react-router-dom' @@ -18,6 +16,7 @@ import * as transcript from '~/lib/transcript' import { NamedPath, ls, openPath, pathToNamedPath } from '~/lib/utils' import { getX86Features } from '~/lib/x86Features' import { ErrorModalContext } from '~/providers/ErrorModal' +import { useFilesContext } from '~/providers/FilesProvider' import { ModelOptions, usePreferencesContext } from '~/providers/Preferences' import { UpdaterContext } from '~/providers/Updater' @@ -38,14 +37,14 @@ export function viewModel() { const [segments, setSegments] = useState(null) const [audio, setAudio] = useState(null) const [progress, setProgress] = useState(0) - const [files, setFiles] = useState(location?.state?.files ?? []) + + const { files, setFiles } = useFilesContext() const [tabIndex, setTabIndex] = useState(0) const preferences = usePreferencesContext() const [devices, setDevices] = useState([]) const [inputDevice, setInputDevice] = useState(null) const [outputDevice, setOutputDevice] = useState(null) - const { updateApp, availableUpdate } = useContext(UpdaterContext) const { setState: setErrorModal } = useContext(ErrorModalContext) @@ -72,18 +71,18 @@ export function viewModel() { } async function handleRecordFinish() { - await listen<{path: string, name: string}>('record_finish', (event) => { - const {name, path} = event.payload + await listen<{ path: string; name: string }>('record_finish', (event) => { + const { name, path } = event.payload setTabIndex(0) - setFiles([{name, path}]) + setFiles([{ name, path }]) setIsRecording(false) }) } async function loadAudioDevices() { let newDevices = await invoke('get_audio_devices') - const defaultInput = newDevices.find(d => d.isDefault && d.isInput) - const defaultOutput = newDevices.find(d => d.isDefault && !d.isInput) + const defaultInput = newDevices.find((d) => d.isDefault && d.isInput) + const defaultOutput = newDevices.find((d) => d.isDefault && !d.isInput) if (defaultInput) { setInputDevice(defaultInput) } @@ -159,32 +158,6 @@ export function viewModel() { }) } - async function handleDeepLinks() { - const platform = await os.platform() - const newFiles = [] - if (platform === 'macos') { - await onOpenUrl(async (urls) => { - for (let url of urls) { - if (url.startsWith('file://')) { - url = decodeURIComponent(url) - url = url.replace('file://', '') - // take only the first one - newFiles.push(await pathToNamedPath(url)) - } - } - }) - } else if (platform == 'windows' || platform == 'linux') { - const urls: string[] = await invoke('get_deeplinks') - for (const url of urls) { - newFiles.push(await pathToNamedPath(url)) - } - } - setFiles([...files, ...newFiles]) - if (newFiles.length > 1) { - navigate('/batch', { state: { files: newFiles } }) - } - } - async function CheckCpuAndInit() { const features = await getX86Features() if (features) { @@ -207,7 +180,6 @@ export function viewModel() { } handleDrop() - handleDeepLinks() checkModelExists() handleNewSegment() handleRecordFinish() @@ -219,7 +191,6 @@ export function viewModel() { }, []) async function startRecord() { - setSegments(null) setIsRecording(true) let devices: AudioDevice[] = [] @@ -229,11 +200,11 @@ export function viewModel() { if (outputDevice) { devices.push(outputDevice) } - invoke("start_record", {devices, storeInDocuments: preferences.storeRecordInDocuments}) + invoke('start_record', { devices, storeInDocuments: preferences.storeRecordInDocuments }) } async function stopRecord() { - emit("stop_record") + emit('stop_record') } async function transcribe() { @@ -305,6 +276,6 @@ export function viewModel() { transcribe, onAbort, tabIndex, - setTabIndex + setTabIndex, } } diff --git a/desktop/src/pages/settings/viewModel.ts b/desktop/src/pages/settings/viewModel.ts index e1693925..ec4f7486 100644 --- a/desktop/src/pages/settings/viewModel.ts +++ b/desktop/src/pages/settings/viewModel.ts @@ -1,5 +1,4 @@ import { path } from '@tauri-apps/api' -import * as app from '@tauri-apps/api/app' import { invoke } from '@tauri-apps/api/core' import { ask } from '@tauri-apps/plugin-dialog' import * as shell from '@tauri-apps/plugin-shell' @@ -7,7 +6,7 @@ import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import * as config from '~/lib/config' import { supportedLanguages } from '~/lib/i18n' -import { NamedPath, getAppInfo, getIssueUrl, ls, resetApp } from '~/lib/utils' +import { NamedPath, getAppInfo, getIssueUrl, getPrettyVersion, ls, resetApp } from '~/lib/utils' import { usePreferencesContext } from '~/providers/Preferences' import WhisperLanguages from '~/assets/whisper-languages.json' import { UnlistenFn, listen } from '@tauri-apps/api/event' @@ -65,9 +64,8 @@ export function viewModel() { async function loadMeta() { try { - const name = await app.getName() - const ver = await app.getVersion() - setAppVersion(`${name} ${ver}`) + const prettyVersion = await getPrettyVersion() + setAppVersion(prettyVersion) } catch (e) { console.error(e) } diff --git a/desktop/src/providers/FilesProvider.tsx b/desktop/src/providers/FilesProvider.tsx new file mode 100644 index 00000000..e3868277 --- /dev/null +++ b/desktop/src/providers/FilesProvider.tsx @@ -0,0 +1,31 @@ +import { ReactNode, createContext, useContext, useEffect, useState } from 'react' +import { useLocation } from 'react-router-dom' +import { useDeepLinks } from '~/lib/useDeepLinks' +import { useSingleInstance } from '~/lib/useSingleInstance' +import { ModifyState, NamedPath } from '~/lib/utils' + +type FilesProviderState = NamedPath[] +interface FilesProviderContextType { + files: FilesProviderState + setFiles: ModifyState +} + +export const FilesProviderContext = createContext({} as FilesProviderContextType) + +export function useFilesContext() { + return useContext(FilesProviderContext) as FilesProviderContextType +} + +export function FilesProvider({ children }: { children: ReactNode }) { + const [files, setFiles] = useState([]) + const location = useLocation() + useDeepLinks({ setFiles }) + useSingleInstance({ setFiles }) + + useEffect(() => { + if (location?.state?.files) { + setFiles(location?.state?.files) + } + }, []) + return {children} +} diff --git a/scripts/pre_build.js b/scripts/pre_build.js index 8b1045d7..e4675440 100755 --- a/scripts/pre_build.js +++ b/scripts/pre_build.js @@ -19,8 +19,8 @@ const config = { openblasRealname: 'openblas', clblastRealname: 'clblast', windows: { - ffmpegName: 'ffmpeg-6.1-windows-desktop-vs2022ltl-default', - ffmpegUrl: 'https://master.dl.sourceforge.net/project/avbuild/windows-desktop/ffmpeg-6.1-windows-desktop-vs2022ltl-default.7z?viasf=1', + ffmpegName: 'ffmpeg-7.0-windows-desktop-vs2022-default', + ffmpegUrl: 'https://unlimited.dl.sourceforge.net/project/avbuild/windows-desktop/ffmpeg-7.0-windows-desktop-vs2022-default.7z?viasf=1', openBlasName: 'OpenBLAS-0.3.26-x64', openBlasUrl: 'https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.26/OpenBLAS-0.3.26-x64.zip',