diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7d2bcab..75304b0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,6 +18,11 @@ jobs: - name: Check out repo uses: actions/checkout@v4 + - name: Update packages + run: | + sudo apt update + sudo apt upgrade + - name: Set up pnpm uses: pnpm/action-setup@v4 with: @@ -29,9 +34,7 @@ jobs: # https://github.com/tauri-apps/tauri-action?tab=readme-ov-file#usage # https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/customizing-github-hosted-runners#installing-software-on-ubuntu-runners - name: Install tauri dependencies - run: | - sudo apt update - sudo apt install libwebkit2gtk-4.1-dev + run: sudo apt install libwebkit2gtk-4.1-dev - name: Build run: ./meta/build @@ -69,12 +72,58 @@ jobs: target/release/gdn-cli.exe target/release/gdn-app.exe + build-android: + runs-on: ubuntu-latest + steps: + - name: Check out repo + uses: actions/checkout@v4 + + - name: Set up env vars + run: echo "NDK_HOME=$ANDROID_NDK_HOME" >> $GITHUB_ENV + + - name: Update packages + run: | + sudo apt update + sudo apt upgrade + + - name: Set up pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + + # https://v2.tauri.app/start/prerequisites/#android + - name: Set up rust + run: | + rustup update + rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android + + # https://v2.tauri.app/distribute/sign/android/ + - name: Set up Android signing + run: | + cd gdn-app/src-tauri/gen/android + echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > key.properties + echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> key.properties + base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $RUNNER_TEMP/keystore.jks + echo "storeFile=$RUNNER_TEMP/keystore.jks" >> key.properties + + - name: Build + run: | + export NDK_HOME="$ANDROID_NDK_HOME" + ./meta/build-android + + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: gdn-android + path: target/release/gdn-app.apk + release: runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/v') }} needs: - build-linux - build-windows + - build-android permissions: contents: write steps: @@ -85,6 +134,7 @@ jobs: run: | zip -r gdn-linux.zip gdn-linux zip -r gdn-windows.zip gdn-windows + mv gdn-android/gdn-app.apk gdn-android.apk - name: Create new release uses: softprops/action-gh-release@v2 @@ -93,3 +143,4 @@ jobs: files: | gdn-linux.zip gdn-windows.zip + gdn-android.apk diff --git a/Cargo.lock b/Cargo.lock index 26fd902..892d16f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -97,12 +97,12 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.8" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "once_cell_polyfill", + "once_cell", "windows-sys 0.59.0", ] @@ -138,23 +138,33 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", "fastrand", "futures-lite", - "pin-project-lite", "slab", ] [[package]] -name = "async-io" -version = "2.4.1" +name = "async-fs" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", "cfg-if", @@ -163,7 +173,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.0.7", + "rustix 0.38.44", "slab", "tracing", "windows-sys 0.59.0", @@ -282,9 +292,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", "cfg-if", @@ -315,9 +325,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ "serde", ] @@ -391,9 +401,9 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "bytemuck" -version = "1.23.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" [[package]] name = "byteorder" @@ -416,7 +426,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "cairo-sys-rs", "glib", "libc", @@ -479,9 +489,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.24" +version = "1.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" +checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a" dependencies = [ "jobserver", "libc", @@ -529,9 +539,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", @@ -542,9 +552,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.38" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" +checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" dependencies = [ "clap_builder", "clap_derive", @@ -552,9 +562,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.38" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" +checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" dependencies = [ "anstream", "anstyle", @@ -623,9 +633,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" dependencies = [ "core-foundation-sys", "libc", @@ -643,7 +653,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "core-foundation", "core-graphics-types", "foreign-types", @@ -656,7 +666,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "core-foundation", "libc", ] @@ -851,7 +861,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "objc2 0.6.1", ] @@ -891,9 +901,9 @@ dependencies = [ [[package]] name = "dpi" -version = "0.1.2" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" dependencies = [ "serde", ] @@ -990,9 +1000,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.12" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ "libc", "windows-sys 0.59.0", @@ -1367,9 +1377,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ "cfg-if", "libc", @@ -1417,11 +1427,11 @@ dependencies = [ [[package]] name = "git2" -version = "0.20.2" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" +checksum = "5220b8ba44c68a9a7f7a7659e864dd73692e417ef0211bea133c7b74e031eeb9" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "libc", "libgit2-sys", "log", @@ -1436,7 +1446,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "futures-channel", "futures-core", "futures-executor", @@ -1554,9 +1564,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" @@ -1572,9 +1582,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.5.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hex" @@ -1657,9 +1667,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.12" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9f1e950e0d9d1d3c47184416723cf29c0d1f93bd8cccf37e4beb6b44f31710" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" dependencies = [ "bytes", "futures-channel", @@ -1687,7 +1697,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.61.0", ] [[package]] @@ -1711,22 +1721,21 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" dependencies = [ "displaydoc", - "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locale_core" -version = "2.0.0" +name = "icu_locid" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ "displaydoc", "litemap", @@ -1736,10 +1745,30 @@ dependencies = [ ] [[package]] -name = "icu_normalizer" -version = "2.0.0" +name = "icu_locid_transform" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" dependencies = [ "displaydoc", "icu_collections", @@ -1747,54 +1776,67 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", + "utf16_iter", + "utf8_iter", + "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" [[package]] name = "icu_properties" -version = "2.0.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" dependencies = [ "displaydoc", "icu_collections", - "icu_locale_core", + "icu_locid_transform", "icu_properties_data", "icu_provider", - "potential_utf", - "zerotrie", + "tinystr", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" [[package]] name = "icu_provider" -version = "2.0.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" dependencies = [ "displaydoc", - "icu_locale_core", + "icu_locid", + "icu_provider_macros", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", - "zerotrie", "zerovec", ] +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1814,9 +1856,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ "icu_normalizer", "icu_properties", @@ -1840,7 +1882,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.15.2", "serde", ] @@ -1921,9 +1963,9 @@ dependencies = [ [[package]] name = "jiff" -version = "0.2.14" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a194df1107f33c79f4f93d02c80798520551949d59dfad22b6157048a88cca93" +checksum = "27e77966151130221b079bcec80f1f34a9e414fa489d99152a201c07fd2182bc" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -1936,9 +1978,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.14" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" +checksum = "97265751f8a9a4228476f2fc17874a9e7e70e96b893368e42619880fe143b48a" dependencies = [ "proc-macro2", "quote", @@ -1988,7 +2030,7 @@ version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.2", "libc", ] @@ -2030,7 +2072,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "serde", "unicode-segmentation", ] @@ -2114,7 +2156,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "libc", ] @@ -2158,9 +2200,9 @@ checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.8.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "lock_api" @@ -2237,13 +2279,13 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.4" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -2273,7 +2315,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "jni-sys", "log", "ndk-sys", @@ -2305,11 +2347,11 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nix" -version = "0.30.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "cfg-if", "cfg_aliases", "libc", @@ -2390,7 +2432,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "block2 0.6.1", "libc", "objc2 0.6.1", @@ -2409,7 +2451,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "objc2 0.6.1", "objc2-foundation 0.3.1", ] @@ -2420,7 +2462,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "objc2 0.6.1", "objc2-foundation 0.3.1", ] @@ -2431,7 +2473,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "dispatch2", "objc2 0.6.1", ] @@ -2442,7 +2484,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "dispatch2", "objc2 0.6.1", "objc2-core-foundation", @@ -2480,7 +2522,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -2492,7 +2534,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "block2 0.6.1", "libc", "objc2 0.6.1", @@ -2505,7 +2547,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "objc2 0.6.1", "objc2-core-foundation", ] @@ -2516,7 +2558,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2528,7 +2570,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2541,7 +2583,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "objc2 0.6.1", "objc2-foundation 0.3.1", ] @@ -2552,7 +2594,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "objc2 0.6.1", "objc2-core-foundation", "objc2-foundation 0.3.1", @@ -2564,7 +2606,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "block2 0.6.1", "objc2 0.6.1", "objc2-app-kit", @@ -2587,12 +2629,6 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" -[[package]] -name = "once_cell_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" - [[package]] name = "open" version = "5.3.2" @@ -2613,18 +2649,18 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-src" -version = "300.5.0+3.5.0" +version = "300.4.2+3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f" +checksum = "168ce4e058f975fe43e89d9ccf78ca668601887ae736090aacc23ae353c298e2" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.108" +version = "0.9.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847" +checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" dependencies = [ "cc", "libc", @@ -2906,15 +2942,15 @@ dependencies = [ [[package]] name = "polling" -version = "3.8.0" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.0.7", + "rustix 0.38.44", "tracing", "windows-sys 0.59.0", ] @@ -2934,15 +2970,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "potential_utf" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" -dependencies = [ - "zerovec", -] - [[package]] name = "powerfmt" version = "0.2.0" @@ -2989,7 +3016,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.22.26", + "toml_edit 0.22.25", ] [[package]] @@ -3144,7 +3171,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.2", ] [[package]] @@ -3173,11 +3200,11 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", ] [[package]] @@ -3279,7 +3306,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3288,11 +3315,11 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.7" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "errno", "libc", "linux-raw-sys 0.9.4", @@ -3301,9 +3328,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" @@ -3532,9 +3559,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.9" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -3591,9 +3618,9 @@ checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "socket2" -version = "0.5.10" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3734,9 +3761,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", @@ -3762,7 +3789,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e59c1f38e657351a2e822eadf40d6a2ad4627b9c25557bc1180ec1b3295ef82" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", "core-foundation", "core-graphics", "crossbeam-channel", @@ -3789,8 +3816,8 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows", - "windows-core", + "windows 0.61.1", + "windows-core 0.61.0", "windows-version", "x11-dl", ] @@ -3860,7 +3887,7 @@ dependencies = [ "webkit2gtk", "webview2-com", "window-vibrancy", - "windows", + "windows 0.61.1", ] [[package]] @@ -3945,9 +3972,9 @@ dependencies = [ [[package]] name = "tauri-plugin-opener" -version = "2.2.7" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66644b71a31ec1a8a52c4a16575edd28cf763c87cf4a7da24c884122b5c77097" +checksum = "2fdc6cb608e04b7d2b6d1f21e9444ad49245f6d03465ba53323d692d1ceb1a30" dependencies = [ "dunce", "glob", @@ -3961,7 +3988,7 @@ dependencies = [ "tauri-plugin", "thiserror 2.0.12", "url", - "windows", + "windows 0.60.0", "zbus", ] @@ -3984,7 +4011,7 @@ dependencies = [ "tauri-utils", "thiserror 2.0.12", "url", - "windows", + "windows 0.61.1", ] [[package]] @@ -4010,7 +4037,7 @@ dependencies = [ "url", "webkit2gtk", "webview2-com", - "windows", + "windows 0.61.1", "wry", ] @@ -4065,14 +4092,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.20.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.2", "once_cell", - "rustix 1.0.7", + "rustix 1.0.5", "windows-sys 0.59.0", ] @@ -4166,9 +4193,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ "displaydoc", "zerovec", @@ -4176,9 +4203,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.45.1" +version = "1.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" dependencies = [ "backtrace", "bytes", @@ -4204,14 +4231,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.22" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "900f6c86a685850b1bc9f6223b20125115ee3f31e01207d81655bbcc0aea9231" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.26", + "toml_edit 0.22.25", ] [[package]] @@ -4247,23 +4274,23 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.26" +version = "0.22.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "10558ed0bd2a1562e630926a2d1f0b98c827da99fabd3fe20920a59642504485" dependencies = [ "indexmap 2.9.0", "serde", "serde_spanned", "toml_datetime", "toml_write", - "winnow 0.7.10", + "winnow 0.7.7", ] [[package]] name = "toml_write" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" +checksum = "28391a4201ba7eb1984cfeb6862c0b3ea2cfe23332298967c749dddc0d6cd976" [[package]] name = "tower" @@ -4457,6 +4484,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -4471,14 +4504,12 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.17.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" +checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" dependencies = [ - "getrandom 0.3.3", - "js-sys", + "getrandom 0.3.2", "serde", - "wasm-bindgen", ] [[package]] @@ -4705,9 +4736,9 @@ checksum = "b542b5cfbd9618c46c2784e4d41ba218c336ac70d44c55e47b251033e7d85601" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows", - "windows-core", - "windows-implement", + "windows 0.61.1", + "windows-core 0.61.0", + "windows-implement 0.60.0", "windows-interface", ] @@ -4729,8 +4760,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ae2d11c4a686e4409659d7891791254cf9286d3cfe0eef54df1523533d22295" dependencies = [ "thiserror 2.0.12", - "windows", - "windows-core", + "windows 0.61.1", + "windows-core 0.61.0", ] [[package]] @@ -4779,17 +4810,39 @@ dependencies = [ "windows-version", ] +[[package]] +name = "windows" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf874e74c7a99773e62b1c671427abf01a425e77c3d3fb9fb1e4883ea934529" +dependencies = [ + "windows-collections 0.1.1", + "windows-core 0.60.1", + "windows-future 0.1.1", + "windows-link", + "windows-numerics 0.1.1", +] + [[package]] name = "windows" version = "0.61.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" dependencies = [ - "windows-collections", - "windows-core", - "windows-future", + "windows-collections 0.2.0", + "windows-core 0.61.0", + "windows-future 0.2.0", "windows-link", - "windows-numerics", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows-collections" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5467f79cc1ba3f52ebb2ed41dbb459b8e7db636cc3429458d9a852e15bc24dec" +dependencies = [ + "windows-core 0.60.1", ] [[package]] @@ -4798,31 +4851,64 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.0", ] [[package]] name = "windows-core" -version = "0.61.2" +version = "0.60.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "ca21a92a9cae9bf4ccae5cf8368dce0837100ddf6e6d57936749e85f152f6247" dependencies = [ - "windows-implement", + "windows-implement 0.59.0", "windows-interface", "windows-link", "windows-result", - "windows-strings 0.4.2", + "windows-strings 0.3.1", +] + +[[package]] +name = "windows-core" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +dependencies = [ + "windows-implement 0.60.0", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings 0.4.0", ] [[package]] name = "windows-future" -version = "0.2.1" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +checksum = "a787db4595e7eb80239b74ce8babfb1363d8e343ab072f2ffe901400c03349f0" dependencies = [ - "windows-core", + "windows-core 0.60.1", "windows-link", - "windows-threading", +] + +[[package]] +name = "windows-future" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" +dependencies = [ + "windows-core 0.61.0", + "windows-link", +] + +[[package]] +name = "windows-implement" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] @@ -4853,13 +4939,23 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +[[package]] +name = "windows-numerics" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005dea54e2f6499f2cee279b8f703b3cf3b5734a2d8d21867c8f44003182eeed" +dependencies = [ + "windows-core 0.60.1", + "windows-link", +] + [[package]] name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", + "windows-core 0.61.0", "windows-link", ] @@ -4876,9 +4972,9 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.3.4" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" dependencies = [ "windows-link", ] @@ -4894,9 +4990,9 @@ dependencies = [ [[package]] name = "windows-strings" -version = "0.4.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" dependencies = [ "windows-link", ] @@ -4999,15 +5095,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-version" version = "0.1.4" @@ -5208,9 +5295,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5" dependencies = [ "memchr", ] @@ -5231,14 +5318,20 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.0", ] [[package]] -name = "writeable" -version = "0.6.1" +name = "write16" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" @@ -5278,8 +5371,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows", - "windows-core", + "windows 0.61.1", + "windows-core 0.61.0", "windows-version", "x11-dl", ] @@ -5306,10 +5399,20 @@ dependencies = [ ] [[package]] -name = "yoke" -version = "0.8.0" +name = "xdg-home" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" dependencies = [ "serde", "stable_deref_trait", @@ -5319,9 +5422,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", @@ -5331,12 +5434,13 @@ dependencies = [ [[package]] name = "zbus" -version = "5.7.1" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a7c7cee313d044fca3f48fa782cb750c79e4ca76ba7bc7718cd4024cdf6f68" +checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236" dependencies = [ "async-broadcast", "async-executor", + "async-fs", "async-io", "async-lock", "async-process", @@ -5353,10 +5457,12 @@ dependencies = [ "ordered-stream", "serde", "serde_repr", + "static_assertions", "tracing", "uds_windows", "windows-sys 0.59.0", - "winnow 0.7.10", + "winnow 0.7.7", + "xdg-home", "zbus_macros", "zbus_names", "zvariant", @@ -5364,9 +5470,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.7.1" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17e7e5eec1550f747e71a058df81a9a83813ba0f6a95f39c4e218bdc7ba366a" +checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", @@ -5385,7 +5491,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" dependencies = [ "serde", "static_assertions", - "winnow 0.7.10", + "winnow 0.7.7", "zvariant", ] @@ -5430,22 +5536,11 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zerotrie" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - [[package]] name = "zerovec" -version = "0.11.2" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" dependencies = [ "yoke", "zerofrom", @@ -5454,9 +5549,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", @@ -5465,23 +5560,24 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.5.3" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d30786f75e393ee63a21de4f9074d4c038d52c5b1bb4471f955db249f9dffb1" +checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac" dependencies = [ "endi", "enumflags2", "serde", - "winnow 0.7.10", + "static_assertions", + "winnow 0.7.7", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.5.3" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75fda702cd42d735ccd48117b1630432219c0e9616bf6cb0f8350844ee4d9580" +checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", @@ -5501,5 +5597,5 @@ dependencies = [ "serde", "static_assertions", "syn 2.0.101", - "winnow 0.7.10", + "winnow 0.7.7", ] diff --git a/Cargo.toml b/Cargo.toml index ad57178..8e4e6e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,17 +9,17 @@ edition = "2024" [workspace.dependencies] anyhow = "1.0.98" -clap = { version = "4.5.38", features = ["derive", "deprecated"] } +clap = { version = "4.5.37", features = ["derive", "deprecated"] } directories = "6.0.0" gdn = { path = "gdn" } -git2 = { version = "0.20.2", features = ["vendored-libgit2", "vendored-openssl"] } -jiff = "0.2.14" +git2 = { version = "0.20.1", features = ["vendored-libgit2", "vendored-openssl"] } +jiff = "0.2.11" rand = "0.9.1" serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.140" tauri = { version = "2.5.1", features = [] } tauri-build = { version = "2.2.0", features = [] } -tauri-plugin-opener = "2.2.7" +tauri-plugin-opener = "2.2.6" [workspace.lints] rust.unsafe_code = { level = "forbid", priority = 1 } diff --git a/gdn-app/package.json b/gdn-app/package.json index 532ecd9..4b5f71d 100644 --- a/gdn-app/package.json +++ b/gdn-app/package.json @@ -13,27 +13,27 @@ "dependencies": { "@floating-ui/vue": "^1.1.6", "@remixicon/vue": "^4.6.0", - "@tailwindcss/vite": "^4.1.7", + "@tailwindcss/vite": "^4.1.4", "@tauri-apps/api": "^2.5.0", - "@tauri-apps/plugin-opener": "^2.2.7", + "@tauri-apps/plugin-opener": "^2.2.6", "@vueuse/core": "^12.8.2", "pinia": "^2.3.1", - "tailwindcss": "^4.1.7", - "vue": "^3.5.15", - "zod": "^3.25.29" + "tailwindcss": "^4.1.4", + "vue": "^3.5.13", + "zod": "^3.24.3" }, "devDependencies": { - "@eslint/js": "^9.27.0", + "@eslint/js": "^9.25.1", "@tauri-apps/cli": "^2.5.0", - "@types/node": "^22.15.21", - "@vitejs/plugin-vue": "^5.2.4", - "eslint": "^9.27.0", - "eslint-config-prettier": "^10.1.5", + "@types/node": "^22.15.2", + "@vitejs/plugin-vue": "^5.2.3", + "eslint": "^9.25.1", + "eslint-config-prettier": "^10.1.2", "eslint-plugin-vue": "^9.33.0", "typescript": "^5.8.3", - "typescript-eslint": "^8.32.1", - "vite": "^6.3.5", - "vite-plugin-vue-devtools": "^7.7.6", + "typescript-eslint": "^8.31.0", + "vite": "^6.3.3", + "vite-plugin-vue-devtools": "^7.7.5", "vue-tsc": "^2.2.10" } } diff --git a/gdn-app/src-tauri/src/api.rs b/gdn-app/src-tauri/src/api.rs index 4af2d1a..d29bd43 100644 --- a/gdn-app/src-tauri/src/api.rs +++ b/gdn-app/src-tauri/src/api.rs @@ -4,22 +4,18 @@ use gdn::ids::NoteId; use tauri::{AppHandle, Emitter, State}; use crate::{ - state::AppState, + store::Store, types::{EventNotesStoreUpdate, Note}, }; // API methods are sorted alphabetically. -fn update_if_required(state: &mut AppState, app: &AppHandle) { - let store_id = state.store.id(); - if state.store_last_id == Some(store_id) { - // No update necessary if the id hasn't changed - return; +fn update_if_required(store: &mut Store, app: &AppHandle) { + if let Some(store_id) = store.needs_update() { + let payload = EventNotesStoreUpdate { store_id }; + app.emit("notes_store_update", payload).unwrap(); + store.update(); } - - let payload = EventNotesStoreUpdate { store_id }; - app.emit("notes_store_update", payload).unwrap(); - state.store_last_id = Some(store_id) } #[tauri::command] @@ -28,12 +24,10 @@ pub fn note_child_add( child_id: NoteId, child_position: isize, app: AppHandle, - state: State<'_, Arc>>, + store: State<'_, Arc>>, ) { - let mut guard = state.lock().unwrap(); - guard - .store - .add_child_at_position(id, child_id, child_position); + let mut guard = store.lock().unwrap(); + guard.add_child_at_position(id, child_id, child_position); update_if_required(&mut guard, &app); } @@ -45,12 +39,10 @@ pub fn note_child_move( to_id: NoteId, to_position: isize, app: AppHandle, - state: State<'_, Arc>>, + store: State<'_, Arc>>, ) { - let mut guard = state.lock().unwrap(); - guard - .store - .move_child_by_id_to_position(child_id, from_id, from_iteration, to_id, to_position); + let mut guard = store.lock().unwrap(); + guard.move_child_by_id_to_position(child_id, from_id, from_iteration, to_id, to_position); update_if_required(&mut guard, &app); } @@ -60,12 +52,10 @@ pub fn note_child_remove( child_id: NoteId, child_iteration: usize, app: AppHandle, - state: State<'_, Arc>>, + store: State<'_, Arc>>, ) { - let mut guard = state.lock().unwrap(); - guard - .store - .remove_child_by_id(id, child_id, child_iteration); + let mut guard = store.lock().unwrap(); + guard.remove_child_by_id(id, child_id, child_iteration); update_if_required(&mut guard, &app); } @@ -74,33 +64,32 @@ pub fn note_children_set( id: NoteId, children: Vec, app: AppHandle, - state: State<'_, Arc>>, + store: State<'_, Arc>>, ) { - let mut guard = state.lock().unwrap(); - guard.store.set_children(id, children); + let mut guard = store.lock().unwrap(); + guard.set_children(id, children); update_if_required(&mut guard, &app); } #[tauri::command] -pub fn note_create(text: String, app: AppHandle, state: State<'_, Arc>>) -> Note { - let mut guard = state.lock().unwrap(); - let id = guard.store.create(text); - let note = guard.store.get(id).unwrap().into(); +pub fn note_create(text: String, app: AppHandle, store: State<'_, Arc>>) -> Note { + let mut guard = store.lock().unwrap(); + let id = guard.create(text); update_if_required(&mut guard, &app); - note + guard.get(id).unwrap() } #[tauri::command] -pub fn note_delete(id: NoteId, app: AppHandle, state: State<'_, Arc>>) { - let mut guard = state.lock().unwrap(); - guard.store.delete(id); +pub fn note_delete(id: NoteId, app: AppHandle, store: State<'_, Arc>>) { + let mut guard = store.lock().unwrap(); + guard.delete(id); update_if_required(&mut guard, &app); } #[tauri::command] -pub fn note_get(id: NoteId, state: State<'_, Arc>>) -> Option { - let guard = state.lock().unwrap(); - guard.store.get(id).map(|it| it.into()) +pub fn note_get(id: NoteId, store: State<'_, Arc>>) -> Option { + let guard = store.lock().unwrap(); + guard.get(id) } #[tauri::command] @@ -108,16 +97,16 @@ pub fn note_text_set( id: NoteId, text: String, app: AppHandle, - state: State<'_, Arc>>, + store: State<'_, Arc>>, ) { - let mut guard = state.lock().unwrap(); - guard.store.set_text(id, text); + let mut guard = store.lock().unwrap(); + guard.set_text(id, text); update_if_required(&mut guard, &app); } #[tauri::command] -pub fn notes_clear(app: AppHandle, state: State<'_, Arc>>) { - let mut guard = state.lock().unwrap(); - guard.store.clear(); +pub fn notes_clear(app: AppHandle, store: State<'_, Arc>>) { + let mut guard = store.lock().unwrap(); + guard.clear(); update_if_required(&mut guard, &app); } diff --git a/gdn-app/src-tauri/src/lib.rs b/gdn-app/src-tauri/src/lib.rs index bc0c323..3d8503a 100644 --- a/gdn-app/src-tauri/src/lib.rs +++ b/gdn-app/src-tauri/src/lib.rs @@ -1,21 +1,16 @@ -use serde_json as _; // Silence unused dependency warning use std::sync::{Arc, Mutex}; -use crate::state::AppState; +use store::Store; mod api; -mod state; +pub mod store; mod types; #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { - let state = Arc::new(Mutex::new(AppState::new())); - - // TODO Launch store loading task - tauri::Builder::default() .plugin(tauri_plugin_opener::init()) - .manage(state) + .manage(Arc::new(Mutex::new(Store::new()))) .invoke_handler(tauri::generate_handler![ api::note_child_add, api::note_child_move, diff --git a/gdn-app/src-tauri/src/state.rs b/gdn-app/src-tauri/src/state.rs deleted file mode 100644 index 68c5d61..0000000 --- a/gdn-app/src-tauri/src/state.rs +++ /dev/null @@ -1,15 +0,0 @@ -use gdn::store::Store; - -pub struct AppState { - pub store: Store, - pub store_last_id: Option, -} - -impl AppState { - pub fn new() -> Self { - Self { - store: Store::new(), - store_last_id: None, - } - } -} diff --git a/gdn/src/store.rs b/gdn-app/src-tauri/src/store.rs similarity index 80% rename from gdn/src/store.rs rename to gdn-app/src-tauri/src/store.rs index 65c4291..cc21753 100644 --- a/gdn/src/store.rs +++ b/gdn-app/src-tauri/src/store.rs @@ -1,45 +1,21 @@ use std::collections::{HashMap, HashSet}; -use crate::{ - ids::NoteId, - repo::{Note, Repo}, -}; +use gdn::ids::NoteId; -#[derive(Clone)] -pub struct RawNote { +use crate::types::Note; + +#[derive(Debug)] +pub struct NoteInfo { pub text: String, pub children: Vec, } -impl RawNote { - pub fn load(note: Note) -> Self { - Self { - text: note.text, - children: note.children, - } - } - - pub fn save(self, id: NoteId) -> Note { - Note { - id, - text: self.text, - children: self.children, - } - } -} - -#[derive(Clone)] -pub struct RichNote { - pub id: NoteId, - pub text: String, - pub children: Vec, - pub parents: HashSet, -} - +/// A note store for testing. #[derive(Default)] pub struct Store { - id: u64, - notes: HashMap, + last_id: u64, + curr_id: u64, + notes: HashMap, parents: HashMap>, } @@ -48,36 +24,19 @@ impl Store { Self::default() } - pub fn load(repo: Repo) -> Self { - let notes = repo - .notes - .into_iter() - .map(|note| (note.id, RawNote::load(note))) - .collect::>(); - - let mut result = Self { - notes, - ..Self::default() - }; - result.make_consistent_and_tick(); - result + pub fn needs_update(&self) -> Option { + if self.last_id != self.curr_id { + Some(self.curr_id) + } else { + None + } } - pub fn save(&self) -> Repo { - let notes = self - .notes - .iter() - .map(|(id, note)| note.clone().save(*id)) - .collect::>(); - - Repo { notes } + pub fn update(&mut self) { + self.last_id = self.curr_id; } - pub fn id(&self) -> u64 { - self.id - } - - pub fn get(&self, id: NoteId) -> Option { + pub fn get(&self, id: NoteId) -> Option { let info = self.notes.get(&id)?; let parents = self @@ -86,7 +45,7 @@ impl Store { .map(|ps| ps.keys().copied().collect::>()) .unwrap_or_default(); - Some(RichNote { + Some(Note { id, text: info.text.clone(), children: info.children.clone(), @@ -95,7 +54,7 @@ impl Store { } fn tick(&mut self) { - self.id += 1; + self.curr_id += 1; } fn make_consistent_and_tick(&mut self) { @@ -123,18 +82,18 @@ impl Store { pub fn create(&mut self, text: String) -> NoteId { let id = NoteId::new(); - let note = RawNote { + let info = NoteInfo { text, children: vec![], }; - self.notes.insert(id, note); + self.notes.insert(id, info); self.make_consistent_and_tick(); id } - pub fn delete(&mut self, id: NoteId) -> Option { + pub fn delete(&mut self, id: NoteId) -> Option { let info = self.notes.remove(&id)?; self.make_consistent_and_tick(); Some(info) diff --git a/gdn-app/src-tauri/src/types.rs b/gdn-app/src-tauri/src/types.rs index 1eed82a..67e44e0 100644 --- a/gdn-app/src-tauri/src/types.rs +++ b/gdn-app/src-tauri/src/types.rs @@ -1,6 +1,6 @@ use std::collections::HashSet; -use gdn::{ids::NoteId, store::RichNote}; +use gdn::ids::NoteId; use serde::Serialize; #[derive(Serialize)] @@ -12,17 +12,6 @@ pub struct Note { pub parents: HashSet, } -impl From for Note { - fn from(value: RichNote) -> Self { - Self { - id: value.id, - text: value.text, - children: value.children, - parents: value.parents, - } - } -} - //////////// // Events // //////////// diff --git a/gdn-app/src/components/CNavbarButton.vue b/gdn-app/src/components/CNavbarButton.vue index 7250d55..67b8034 100644 --- a/gdn-app/src/components/CNavbarButton.vue +++ b/gdn-app/src/components/CNavbarButton.vue @@ -1,6 +1,6 @@