Bladeren bron

Restructure the repository (#10796)

* Restructure the repository

* lock file

* fmt

* fix bench

* fix cli template test

* remove accidental file

* fix mv command

* clippy

* upgrade paths-filter github action

* fix cli migration tests

* lockfile

* license headers

* clippy

* scope test-core to tauri crate

* license header

* correct --manifest-path usage

* lockfile

* fix tauri-driver on macOS [skip ci]

* build target ios

* try downgrade env_logger

* downgrade 0.1.7

* try to fix bench

* bench overflow

* revert overflow fix, fix tauri_root_path

* revert env_logger downgrade

* fmt

* raise msrv to 1.71

* fmt

* delete .cargo/config.toml [skip ci]

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
Amr Bashir 11 maanden geleden
bovenliggende
commit
36eee37220
100 gewijzigde bestanden met toevoegingen van 992 en 782 verwijderingen
  1. 19 19
      .changes/config.json
  2. 5 5
      .github/CONTRIBUTING.md
  3. 1 1
      .github/ISSUE_TEMPLATE/feature_request.yml
  4. 1 1
      .github/PULL_REQUEST_TEMPLATE.md
  5. 1 1
      .github/workflows/audit.yml
  6. 7 9
      .github/workflows/bench.yml
  7. 13 1
      .github/workflows/check-change-tags.yml
  8. 18 22
      .github/workflows/check-generated-files.yml
  9. 1 1
      .github/workflows/check-license-header.yml
  10. 0 231
      .github/workflows/covector-version-or-publish-v1.yml
  11. 7 7
      .github/workflows/covector-version-or-publish.yml
  12. 4 4
      .github/workflows/docker.yml
  13. 0 56
      .github/workflows/lint-core.yml
  14. 1 2
      .github/workflows/lint-js.yml
  15. 5 23
      .github/workflows/lint-rust.yml
  16. 18 18
      .github/workflows/publish-cli-js.yml
  17. 3 3
      .github/workflows/publish-cli-rs.yml
  18. 0 1
      .github/workflows/supply-chain.yml
  19. 15 21
      .github/workflows/test-android.yml
  20. 3 8
      .github/workflows/test-cli-js.yml
  21. 5 8
      .github/workflows/test-cli-rs.yml
  22. 17 15
      .github/workflows/test-core.yml
  23. 0 79
      .github/workflows/test-lint-bundler.yml
  24. 26 27
      .github/workflows/udeps.yml
  25. 2 5
      .gitignore
  26. 6 5
      .prettierignore
  27. 1 1
      .scripts/ci/pack-cli.sh
  28. 3 3
      .scripts/ci/sync-cli-metadata.js
  29. 12 12
      ARCHITECTURE.md
  30. 689 57
      Cargo.lock
  31. 37 25
      Cargo.toml
  32. 1 3
      bench/Cargo.toml
  33. 0 0
      bench/README.md
  34. 0 0
      bench/src/build_benchmark_jsons.rs
  35. 4 7
      bench/src/run_benchmark.rs
  36. 10 9
      bench/src/utils.rs
  37. 0 0
      bench/tests/cpu_intensive/public/index.css
  38. 0 0
      bench/tests/cpu_intensive/public/index.html
  39. 0 0
      bench/tests/cpu_intensive/public/site.js
  40. 0 0
      bench/tests/cpu_intensive/public/worker.js
  41. 0 0
      bench/tests/cpu_intensive/src-tauri/.gitignore
  42. 5 3
      bench/tests/cpu_intensive/src-tauri/Cargo.toml
  43. 0 0
      bench/tests/cpu_intensive/src-tauri/build.rs
  44. 0 0
      bench/tests/cpu_intensive/src-tauri/src/main.rs
  45. 6 6
      bench/tests/cpu_intensive/src-tauri/tauri.conf.json
  46. 0 0
      bench/tests/files_transfer/public/index.html
  47. 0 0
      bench/tests/files_transfer/src-tauri/.gitignore
  48. 5 3
      bench/tests/files_transfer/src-tauri/Cargo.toml
  49. 0 0
      bench/tests/files_transfer/src-tauri/build.rs
  50. 0 0
      bench/tests/files_transfer/src-tauri/src/main.rs
  51. 6 6
      bench/tests/files_transfer/src-tauri/tauri.conf.json
  52. 0 0
      bench/tests/helloworld/public/index.html
  53. 0 0
      bench/tests/helloworld/src-tauri/.gitignore
  54. 5 3
      bench/tests/helloworld/src-tauri/Cargo.toml
  55. 0 0
      bench/tests/helloworld/src-tauri/build.rs
  56. 0 0
      bench/tests/helloworld/src-tauri/src/main.rs
  57. 6 6
      bench/tests/helloworld/src-tauri/tauri.conf.json
  58. 0 12
      core/tauri-config-schema/Cargo.toml
  59. 0 17
      core/tauri-config-schema/build.rs
  60. 0 14
      core/tauri-config-schema/src/main.rs
  61. 0 1
      core/tests/app-updater/frameworks/test.framework/Headers
  62. 0 1
      core/tests/app-updater/frameworks/test.framework/Modules
  63. 0 1
      core/tests/app-updater/frameworks/test.framework/Resources
  64. 0 1
      core/tests/app-updater/frameworks/test.framework/Versions/Current
  65. 0 1
      core/tests/restart/LICENSE.spdx
  66. 0 1
      core/tests/restart/LICENSE_APACHE-2.0
  67. 0 1
      core/tests/restart/LICENSE_MIT
  68. 0 0
      crates/tauri-build/CHANGELOG.md
  69. 4 1
      crates/tauri-build/Cargo.toml
  70. 0 0
      crates/tauri-build/LICENSE_APACHE-2.0
  71. 0 0
      crates/tauri-build/LICENSE_MIT
  72. 0 0
      crates/tauri-build/README.md
  73. 0 0
      crates/tauri-build/src/acl.rs
  74. 0 0
      crates/tauri-build/src/codegen/context.rs
  75. 0 0
      crates/tauri-build/src/codegen/mod.rs
  76. 0 0
      crates/tauri-build/src/lib.rs
  77. 0 0
      crates/tauri-build/src/manifest.rs
  78. 0 0
      crates/tauri-build/src/mobile.rs
  79. 0 0
      crates/tauri-build/src/static_vcruntime.rs
  80. 0 0
      crates/tauri-build/src/windows-app-manifest.xml
  81. 0 0
      crates/tauri-bundler/CHANGELOG.md
  82. 12 7
      crates/tauri-bundler/Cargo.toml
  83. 0 0
      crates/tauri-bundler/License_Apache.md
  84. 0 0
      crates/tauri-bundler/License_MIT.md
  85. 0 0
      crates/tauri-bundler/README.md
  86. 0 0
      crates/tauri-bundler/src/bundle.rs
  87. 0 0
      crates/tauri-bundler/src/bundle/category.rs
  88. 0 0
      crates/tauri-bundler/src/bundle/common.rs
  89. 8 7
      crates/tauri-bundler/src/bundle/linux/appimage.rs
  90. 0 0
      crates/tauri-bundler/src/bundle/linux/debian.rs
  91. 0 0
      crates/tauri-bundler/src/bundle/linux/freedesktop.rs
  92. 0 0
      crates/tauri-bundler/src/bundle/linux/mod.rs
  93. 0 0
      crates/tauri-bundler/src/bundle/linux/rpm.rs
  94. 0 0
      crates/tauri-bundler/src/bundle/linux/templates/appimage
  95. 0 0
      crates/tauri-bundler/src/bundle/linux/templates/main.desktop
  96. 0 0
      crates/tauri-bundler/src/bundle/macos/app.rs
  97. 0 0
      crates/tauri-bundler/src/bundle/macos/dmg.rs
  98. 0 0
      crates/tauri-bundler/src/bundle/macos/icon.rs
  99. 0 0
      crates/tauri-bundler/src/bundle/macos/ios.rs
  100. 0 0
      crates/tauri-bundler/src/bundle/macos/mod.rs

+ 19 - 19
.changes/config.json

@@ -128,7 +128,7 @@
   },
   "packages": {
     "@tauri-apps/api": {
-      "path": "./tooling/api",
+      "path": "./packages/api",
       "manager": "javascript",
       "publish": [
         {
@@ -149,61 +149,61 @@
       ]
     },
     "tauri-utils": {
-      "path": "./core/tauri-utils",
+      "path": "./crates/tauri-utils",
       "manager": "rust"
     },
     "tauri-macos-sign": {
-      "path": "./tooling/macos-sign",
+      "path": "./crates/tauri-macos-sign",
       "manager": "rust"
     },
     "tauri-bundler": {
-      "path": "./tooling/bundler",
+      "path": "./crates/tauri-bundler",
       "manager": "rust",
       "dependencies": ["tauri-utils", "tauri-macos-sign"]
     },
     "tauri-runtime": {
-      "path": "./core/tauri-runtime",
+      "path": "./crates/tauri-runtime",
       "manager": "rust",
       "dependencies": ["tauri-utils"]
     },
     "tauri-runtime-wry": {
-      "path": "./core/tauri-runtime-wry",
+      "path": "./crates/tauri-runtime-wry",
       "manager": "rust",
       "dependencies": ["tauri-utils", "tauri-runtime"]
     },
     "tauri-codegen": {
-      "path": "./core/tauri-codegen",
+      "path": "./crates/tauri-codegen",
       "manager": "rust",
       "dependencies": ["tauri-utils"]
     },
     "tauri-macros": {
-      "path": "./core/tauri-macros",
+      "path": "./crates/tauri-macros",
       "manager": "rust",
       "dependencies": ["tauri-codegen", "tauri-utils"]
     },
     "tauri-plugin": {
-      "path": "./core/tauri-plugin",
+      "path": "./crates/tauri-plugin",
       "manager": "rust",
       "dependencies": ["tauri-utils"],
       "postversion": "node ../../.scripts/ci/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }"
     },
     "tauri-build": {
-      "path": "./core/tauri-build",
+      "path": "./crates/tauri-build",
       "manager": "rust",
       "dependencies": ["tauri-codegen", "tauri-utils"],
       "postversion": [
         "node ../../.scripts/ci/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }",
-        "cargo build --manifest-path ../tauri-config-schema/Cargo.toml"
+        "cargo build --manifest-path ../tauri-schema-generator/Cargo.toml"
       ],
       "assets": [
         {
-          "path": "./tooling/cli/schema.json",
-          "name": "schema.json"
+          "path": "./crates/tauri-schema-generator/schemas/config.schema.json",
+          "name": "config.schema.json"
         }
       ]
     },
     "tauri": {
-      "path": "./core/tauri",
+      "path": "./crates/tauri",
       "manager": "rust",
       "dependencies": [
         "tauri-macros",
@@ -215,28 +215,28 @@
       "postversion": "node ../../.scripts/ci/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }"
     },
     "@tauri-apps/cli": {
-      "path": "./tooling/cli/node",
+      "path": "./packages/cli",
       "manager": "javascript",
       "dependencies": ["tauri-cli"],
       "postversion": [
         "node ../../../.scripts/ci/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }",
-        "cargo build --manifest-path ../../../core/tauri-config-schema/Cargo.toml"
+        "cargo build --manifest-path ../../../crates/tauri-schema-generator/Cargo.toml"
       ],
       "prepublish": [],
       "publish": [],
       "postpublish": []
     },
     "tauri-cli": {
-      "path": "./tooling/cli",
+      "path": "./crates/tauri-cli",
       "manager": "rust",
       "dependencies": ["tauri-bundler", "tauri-utils", "tauri-macos-sign"],
       "postversion": [
         "cargo check",
-        "cargo build --manifest-path ../../core/tauri-config-schema/Cargo.toml"
+        "cargo build --manifest-path ../../crates/tauri-schema-generator/Cargo.toml"
       ]
     },
     "tauri-driver": {
-      "path": "./tooling/webdriver",
+      "path": "./crates/tauri-driver",
       "manager": "rust",
       "postversion": "cargo check"
     }

+ 5 - 5
.github/CONTRIBUTING.md

@@ -48,7 +48,7 @@ Hi! We, the maintainers, are really excited that you are interested in contribut
 
 First, [join our Discord server](https://discord.gg/SpmNs4S) and let us know that you want to contribute. This way we can point you in the right direction and help ensure your contribution will be as helpful as possible.
 
-To set up your machine for development, follow the [Tauri setup guide](https://tauri.app/v1/guides/getting-started/prerequisites/) to get all the tools you need to develop Tauri apps. The only additional tool you may need is [PNPM](https://pnpm.io/), it is only required if you are developing the Node CLI or API packages (`tooling/cli/node` and `tooling/api`). Next, fork and clone this repo. It is structured as a monorepo, which means that all the various Tauri packages are under the same repository. The development process varies depending on what part of Tauri you are contributing to, see the guides below for per-package instructions.
+To set up your machine for development, follow the [Tauri setup guide](https://tauri.app/v1/guides/getting-started/prerequisites/) to get all the tools you need to develop Tauri apps. The only additional tool you may need is [PNPM](https://pnpm.io/), it is only required if you are developing the Node CLI or API packages (`packages/cli` and `packages/api`). Next, fork and clone this repo. It is structured as a monorepo, which means that all the various Tauri packages are under the same repository. The development process varies depending on what part of Tauri you are contributing to, see the guides below for per-package instructions.
 
 Some Tauri packages will be automatically built when running one of the examples. Others, however, will need to be built beforehand. To build these automatically, run the `.scripts/setup.sh` (Linux and macOS) or `.scripts/setup.ps1` (Windows) script. This will install the Rust and Node.js CLI and build the JS API. After that, you should be able to run all the examples. Note that the setup script should be executed from the root folder of the repository in order to run correctly.
 
@@ -58,15 +58,15 @@ See [Architecture](../ARCHITECTURE.md#major-components) for an overview of the p
 
 ### Developing Tauri Bundler and Rust CLI
 
-The code for the bundler is located in `[Tauri repo root]/tooling/bundler`, and the code for the Rust CLI is located in `[Tauri repo root]/tooling/cli`. If you are using your local copy of `@tauri-apps/cli` (see above), any changes you make to the bundler and CLI will be automatically built and applied when running the build or dev command. Otherwise, running `cargo install --path .` in the Rust CLI directory will allow you to run `cargo tauri build` and `cargo tauri dev` anywhere, using the updated copy of the bundler and cli. You will have to run this command each time you make a change in either package.
+The code for the bundler is located in `[Tauri repo root]/crates/tauri-bundler`, and the code for the Rust CLI is located in `[Tauri repo root]/crates/tauri-cli`. If you are using your local copy of `@tauri-apps/cli` (see above), any changes you make to the bundler and CLI will be automatically built and applied when running the build or dev command. Otherwise, running `cargo install --path .` in the Rust CLI directory will allow you to run `cargo tauri build` and `cargo tauri dev` anywhere, using the updated copy of the bundler and cli. You will have to run this command each time you make a change in either package.
 
 ### Developing The Node.js CLI (`@tauri-apps/cli`)
 
-`@tauri-apps/cli` is a wrapper to `tauri-cli` so most changes should be written on the Rust CLI. The `[Tauri repo root]/tooling/cli/node` folder contains only packaging scripts to properly publish the Rust CLI binaries to NPM.
+`@tauri-apps/cli` is a wrapper to `tauri-cli` so most changes should be written on the Rust CLI. The `[Tauri repo root]/crates/tauri-cli` folder contains only packaging scripts to properly publish the Rust CLI binaries to NPM.
 
 ### Developing Tauri Core and Related Components (Rust API, Macros, Codegen, and Utils)
 
-The code for the Rust crates, including the Core, Macros, Utils, WRY runtime, and a few more are located in `[Tauri repo root]/core/tauri-(macros/utils)`. The easiest way to test your changes is to use the `[Tauri repo root]/examples/helloworld` app. It automatically rebuilds and uses your local copy of the Tauri core packages. Just run `cargo run --example helloworld` after making changes to test them out.
+The code for the Rust crates, including the Core, Macros, Utils, WRY runtime, and a few more are located in `[Tauri repo root]/crates/tauri-(macros/utils)`. The easiest way to test your changes is to use the `[Tauri repo root]/examples/helloworld` app. It automatically rebuilds and uses your local copy of the Tauri core packages. Just run `cargo run --example helloworld` after making changes to test them out.
 
 #### Building the documentation locally
 
@@ -78,7 +78,7 @@ $ RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features --open
 
 ### Developing the JS API
 
-The JS API provides bindings between the developer's JS in the Webview and the builtin Tauri APIs, written in Rust. Its code is located in `[Tauri repo root]/tooling/api`. After making changes to the code, run `pnpm build` to build it. To test your changes, we recommend using the API example app, located in `[Tauri repo root]/examples/api`. It will automatically use your local copy of the JS API and provides a helpful UI to test the various commands.
+The JS API provides bindings between the developer's JS in the Webview and the builtin Tauri APIs, written in Rust. Its code is located in `[Tauri repo root]/packages/api`. After making changes to the code, run `pnpm build` to build it. To test your changes, we recommend using the API example app, located in `[Tauri repo root]/examples/api`. It will automatically use your local copy of the JS API and provides a helpful UI to test the various commands.
 
 ## Financial Contribution
 

+ 1 - 1
.github/ISSUE_TEMPLATE/feature_request.yml

@@ -5,7 +5,7 @@
 name: 💡 Feature Request
 title: '[feat] '
 description: Suggest an idea
-labels: 'type: feature request'
+labels: ['type: feature request']
 
 body:
   - type: textarea

+ 1 - 1
.github/PULL_REQUEST_TEMPLATE.md

@@ -5,7 +5,7 @@ Before submitting a PR, please read https://github.com/tauri-apps/tauri/blob/dev
 
   Examples of good title:
     - fix(windows): fix race condition in event loop
-    - docs: update docstrings
+    - docs: update example for `App::show`
     - feat: add `Window::set_fullscreen`
 
   Examples of bad title:

+ 1 - 1
.github/workflows/audit.yml

@@ -37,5 +37,5 @@ jobs:
       - run: corepack enable
       - uses: actions/setup-node@v4
         with:
-          node-version: '18'
+          node-version: 'lts/*'
       - run: pnpm audit

+ 7 - 9
.github/workflows/bench.yml

@@ -8,11 +8,11 @@ on:
   push:
     branches:
       - dev
-      - 1.x
   workflow_dispatch:
   pull_request:
     paths:
       - '.github/workflows/bench.yml'
+      - 'bench/**'
 
 env:
   RUST_BACKTRACE: 1
@@ -55,7 +55,7 @@ jobs:
           python -m pip install --upgrade pip
           sudo apt-get update
           sudo apt-get install -y --no-install-recommends \
-            libwebkit2gtk-4.1-dev libayatana-appindicator3-dev \
+            webkit2gtk-4.1 libayatana-appindicator3-dev \
             xvfb \
             at-spi2-core
           wget https://github.com/sharkdp/hyperfine/releases/download/v1.18.0/hyperfine_1.18.0_amd64.deb
@@ -63,15 +63,13 @@ jobs:
           pip install memory_profiler
 
       - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: |
-            core -> ../target
-            tooling/bench/tests
 
       - name: run benchmarks
         run: |
-          cargo build --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target ${{ matrix.platform.target }} --manifest-path tooling/bench/tests/Cargo.toml
-          xvfb-run --auto-servernum cargo run --manifest-path tooling/bench/Cargo.toml --bin run_benchmark
+          cargo build --manifest-path bench/tests/cpu_intensive/src-tauri/Cargo.toml --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target ${{ matrix.platform.target }}
+          cargo build --manifest-path bench/tests/files_transfer/src-tauri/Cargo.toml --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target ${{ matrix.platform.target }}
+          cargo build --manifest-path bench/tests/helloworld/src-tauri/Cargo.toml --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target ${{ matrix.platform.target }}
+          xvfb-run --auto-servernum cargo run --manifest-path bench/Cargo.toml --bin run_benchmark
 
       - name: clone benchmarks_results
         if: github.repository == 'tauri-apps/tauri' && github.ref == 'refs/heads/dev'
@@ -84,7 +82,7 @@ jobs:
       - name: push new benchmarks
         if: github.repository == 'tauri-apps/tauri' && github.ref == 'refs/heads/dev'
         run: |
-          cargo run --manifest-path tooling/bench/Cargo.toml --bin build_benchmark_jsons
+          cargo run --manifest-path bench/Cargo.toml --bin build_benchmark_jsons
           cd gh-pages
           git pull
           git config user.name "tauri-bench"

+ 13 - 1
.github/workflows/check-change-tags.yml

@@ -19,7 +19,19 @@ jobs:
     steps:
       - uses: actions/checkout@v4
 
-      - uses: dorny/paths-filter@v2
+      - name: check change files end with .md
+        run: |
+          for file in .changes
+          do
+            if [[ ! "$file" =~ \.(md|json)$ ]]; then
+              echo ".changes directory should only contain files that end with .md"
+              echo "found an invalid file in .changes directory:"
+              echo "$file"
+              exit 1
+            fi
+          end
+
+      - uses: dorny/paths-filter@v3
         id: filter
         with:
           list-files: shell

+ 18 - 22
.github/workflows/check-generated-files.yml

@@ -8,11 +8,11 @@ on:
   pull_request:
     paths:
       - '.github/workflows/check-generated-files.yml'
-      - 'tooling/api/src/**'
-      - 'core/tauri/scripts/bundle.global.js'
-      - 'core/tauri-utils/src/config.rs'
-      - 'tooling/cli/schema.json'
-      - 'core/tauri-config-schema/schema.json'
+      - 'packages/api/src/**'
+      - 'crates/tauri/scripts/bundle.global.js'
+      - 'crates/tauri-utils/src/config.rs'
+      - 'crates/tauri-cli/config.schema.json'
+      - 'crates/tauri-schema-generator/schemas/*.json'
 
 concurrency:
   group: ${{ github.workflow }}-${{ github.ref }}
@@ -26,18 +26,17 @@ jobs:
       schema: ${{ steps.filter.outputs.schema }}
     steps:
       - uses: actions/checkout@v4
-      - uses: dorny/paths-filter@v2
+      - uses: dorny/paths-filter@v3
         id: filter
         with:
           filters: |
             api:
-              - 'tooling/api/src/**'
-              - 'core/tauri/scripts/bundle.global.js'
+              - 'packages/api/src/**'
+              - 'crates/tauri/scripts/bundle.global.js'
             schema:
-              - 'core/tauri-utils/src/config.rs'
-              - 'tooling/cli/schema.json'
-              - 'core/tauri-config-schema/schema.json'
-              - 'core/tauri-acl-schema/*.json'
+              - 'crates/tauri-utils/src/config.rs'
+              - 'crates/tauri-cli/config.schema.json'
+              - 'crates/tauri-schema-generator/schemas/*.json'
 
   api:
     runs-on: ubuntu-latest
@@ -51,9 +50,11 @@ jobs:
           node-version: 'lts/*'
           cache: 'pnpm'
 
+      - name: install deps
+        run: pnpm i --frozen-lockfile
       - name: build api
-        working-directory: tooling/api
-        run: pnpm i --frozen-lockfile && pnpm build
+        run: pnpm build
+        working-directory: packages/api
       - name: check api
         run: ./.scripts/ci/has-diff.sh
 
@@ -73,14 +74,9 @@ jobs:
           sudo apt-get install -y libgtk-3-dev
 
       - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: core -> ../target
-
-      - name: generate config schema
-        run: cargo build --manifest-path ./core/tauri-config-schema/Cargo.toml
 
-      - name: generate ACL schema
-        run: cargo build --manifest-path ./core/tauri-acl-schema/Cargo.toml
+      - name: generate schemas
+        run: cargo build --manifest-path ./crates/tauri-schema-generator/Cargo.toml
 
-      - name: check schema
+      - name: check schemas
         run: ./.scripts/ci/has-diff.sh

+ 1 - 1
.github/workflows/check-license-header.yml

@@ -16,7 +16,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v4
-      - uses: dorny/paths-filter@v2
+      - uses: dorny/paths-filter@v3
         id: filter
         with:
           list-files: shell

+ 0 - 231
.github/workflows/covector-version-or-publish-v1.yml

@@ -1,231 +0,0 @@
-# Copyright 2019-2024 Tauri Programme within The Commons Conservancy
-# SPDX-License-Identifier: Apache-2.0
-# SPDX-License-Identifier: MIT
-
-name: covector version or publish
-
-on:
-  push:
-    branches:
-      - 1.x
-
-jobs:
-  msrv-list:
-    runs-on: ${{ matrix.platform.os }}
-    strategy:
-      fail-fast: false
-      matrix:
-        platform:
-          - {
-              target: x86_64-pc-windows-msvc,
-              os: windows-latest,
-              toolchain: '1.61.0'
-            }
-          - {
-              target: x86_64-unknown-linux-gnu,
-              os: ubuntu-latest,
-              toolchain: '1.60.0'
-            }
-          - {
-              target: x86_64-apple-darwin,
-              os: macos-latest,
-              toolchain: '1.60.0'
-            }
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: install rust ${{ matrix.platform.toolchain }}
-        uses: actions-rs/toolchain@v1
-        with:
-          toolchain: ${{ matrix.platform.toolchain }}
-          target: ${{ matrix.platform.target }}
-          override: true
-          default: true
-
-      - name: install Linux dependencies
-        if: contains(matrix.platform.target, 'unknown-linux')
-        run: |
-          sudo apt-get update
-          sudo apt-get install -y webkit2gtk-4.0 libayatana-appindicator3-dev
-
-      - uses: Swatinem/rust-cache@v2
-
-      - name: delete lockfile
-        run: rm Cargo.lock
-
-      - name: Downgrade crates with MSRV conflict
-        # The --precise flag can only be used once per invocation.
-        run: |
-          cargo update -p system-deps:6.2.0 --precise 6.1.1
-          cargo update -p toml:0.7.8 --precise 0.7.3
-          cargo update -p toml_edit:0.19.15 --precise 0.19.8
-          cargo update -p embed-resource --precise 2.3.0
-          cargo update -p toml_datetime --precise 0.6.1
-          cargo update -p serde_spanned --precise 0.6.1
-          cargo update -p winnow --precise 0.4.1
-          cargo update -p plist --precise 1.5.1
-          cargo update -p time --precise 0.3.15
-          cargo update -p ignore --precise 0.4.18
-          cargo update -p raw-window-handle --precise 0.5.0
-          cargo update -p cargo_toml:0.15.3 --precise 0.15.2
-          cargo update -p zbus --precise 3.13.0
-          cargo update -p zbus_names --precise 2.5.0
-          cargo update -p colored --precise 2.0.2
-          cargo update -p arboard --precise 3.2.1
-          cargo update -p tempfile --precise 3.6.0
-          cargo update -p serde_with:3.6.1 --precise 3.0.0
-          cargo update -p tokio --precise 1.29.0
-          cargo update -p flate2 --precise 1.0.26
-          cargo update -p h2 --precise 0.3.20
-          cargo update -p reqwest --precise 0.11.18
-          cargo update -p bstr --precise 1.6.2
-          cargo update -p cfg-expr:0.15.7 --precise 0.15.4
-          cargo update -p memchr --precise 2.6.2
-          cargo update -p async-executor --precise 1.5.1
-          cargo update -p proptest --precise 1.2.0
-          cargo update -p regex --precise 1.9.6
-          cargo update -p bstr --precise 1.6.2
-          cargo update -p backtrace --precise 0.3.68
-          cargo update -p blocking --precise 1.4.1
-          cargo update -p ignore --precise 0.4.18
-          cargo update -p regex --precise 1.9.6
-          cargo update -p globset --precise 0.4.13
-          cargo update -p crossbeam-channel --precise 0.5.8
-          cargo update -p crossbeam-utils --precise 0.8.16
-          cargo update -p image --precise 0.24.4
-          cargo update -p async-process --precise 1.7.0
-          cargo update -p is-terminal --precise 0.4.7
-          cargo update -p tar --precise 0.4.39
-          cargo update -p serde_json --precise 1.0.97
-          cargo update -p petgraph --precise 0.6.3
-          cargo update -p os_str_bytes --precise 6.5.1
-          cargo update -p thread_local --precise 1.1.7
-
-      - name: test build
-        run: cargo check --target ${{ matrix.platform.target }} --features tracing,compression,wry,linux-protocol-headers,isolation,custom-protocol,api-all,cli,updater,system-tray,windows7-compat,http-multipart,test
-
-  run-integration-tests:
-    runs-on: ${{ matrix.platform }}
-    needs: msrv-list
-
-    strategy:
-      fail-fast: false
-      matrix:
-        platform: [ubuntu-latest, macos-latest, windows-latest]
-
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - name: install stable
-        uses: actions-rs/toolchain@v1
-        with:
-          toolchain: stable
-      - name: install Linux dependencies
-        if: matrix.platform == 'ubuntu-latest'
-        run: |
-          sudo apt-get update
-          sudo apt-get install -y webkit2gtk-4.0 libayatana-appindicator3-dev libfuse2
-
-      - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: |
-            core -> ../target
-            tooling/cli
-
-      - name: build CLI
-        uses: actions-rs/cargo@v1
-        with:
-          command: build
-          args: --manifest-path ./tooling/cli/Cargo.toml
-
-      - name: run integration tests
-        run: cargo test --test '*' -- --ignored
-
-      - name: run CLI tests
-        timeout-minutes: 30
-        run: |
-          cd ./tooling/cli/node
-          yarn
-          yarn build
-          yarn test
-
-  version-or-publish:
-    runs-on: ubuntu-latest
-    timeout-minutes: 65
-    outputs:
-      change: ${{ steps.covector.outputs.change }}
-      commandRan: ${{ steps.covector.outputs.commandRan }}
-      successfulPublish: ${{ steps.covector.outputs.successfulPublish }}
-    needs:
-      - run-integration-tests
-
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - uses: actions/setup-node@v4
-        with:
-          node-version: 14
-          registry-url: 'https://registry.npmjs.org'
-          cache: 'yarn'
-          cache-dependency-path: tooling/*/yarn.lock
-
-      - name: cargo login
-        run: cargo login ${{ secrets.ORG_CRATES_IO_TOKEN }}
-      - name: git config
-        run: |
-          git config --global user.name "${{ github.event.pusher.name }}"
-          git config --global user.email "${{ github.event.pusher.email }}"
-
-      - name: covector version or publish (publish when no change files present)
-        uses: jbolda/covector/packages/action@covector-v0
-        id: covector
-        env:
-          NODE_AUTH_TOKEN: ${{ secrets.ORG_NPM_TOKEN }}
-          CARGO_AUDIT_OPTIONS: ${{ secrets.CARGO_AUDIT_OPTIONS }}
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          command: 'version-or-publish'
-          createRelease: true
-
-      - name: Create Pull Request With Versions Bumped
-        if: steps.covector.outputs.commandRan == 'version'
-        uses: tauri-apps/create-pull-request@v3
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          branch: release/version-updates-v1
-          title: Apply Version Updates From Current Changes (v1)
-          commit-message: 'apply version updates'
-          labels: 'version updates'
-          body: ${{ steps.covector.outputs.change }}
-
-      - name: Trigger doc update
-        if: |
-          steps.covector.outputs.successfulPublish == 'true' &&
-          steps.covector.outputs.packagesPublished != ''
-        uses: peter-evans/repository-dispatch@v1
-        with:
-          token: ${{ secrets.ORG_TAURI_BOT_PAT }}
-          repository: tauri-apps/tauri-docs
-          event-type: update-docs
-
-      - name: Trigger `@tauri-apps/cli` publishing workflow
-        if: |
-          steps.covector.outputs.successfulPublish == 'true' &&
-          contains(steps.covector.outputs.packagesPublished, '@tauri-apps/cli')
-        uses: peter-evans/repository-dispatch@v1
-        with:
-          token: ${{ secrets.ORG_TAURI_BOT_PAT }}
-          event-type: publish-js-cli
-          client-payload: >-
-            {"releaseId": "${{ steps.covector.outputs['-tauri-apps-cli-releaseId'] }}" }
-
-      - name: Trigger `tauri-cli` publishing workflow
-        if: |
-          steps.covector.outputs.successfulPublish == 'true' &&
-          contains(steps.covector.outputs.packagesPublished, 'tauri-cli')
-        uses: peter-evans/repository-dispatch@v1
-        with:
-          token: ${{ secrets.ORG_TAURI_BOT_PAT }}
-          event-type: publish-clirs

+ 7 - 7
.github/workflows/covector-version-or-publish.yml

@@ -24,6 +24,10 @@ jobs:
           fetch-depth: 0
 
       - run: corepack enable
+      - uses: actions/setup-node@v4
+        with:
+          node-version: 20
+          cache: 'pnpm'
 
       - name: install stable
         uses: dtolnay/rust-toolchain@stable
@@ -35,13 +39,9 @@ jobs:
           sudo apt-get install -y webkit2gtk-4.1 libayatana-appindicator3-dev libfuse2
 
       - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: |
-            core -> ../target
-            tooling/cli
 
       - name: build CLI
-        run: cargo build --manifest-path ./tooling/cli/Cargo.toml
+        run: cargo build --manifest-path ./crates/cli/Cargo.toml
 
       - name: run integration tests
         run: cargo test --test '*' -- --ignored
@@ -49,7 +49,7 @@ jobs:
       - name: run CLI tests
         timeout-minutes: 30
         run: |
-          cd ./tooling/cli/node
+          cd ./packages/cli
           pnpm i --frozen-lockfile
           pnpm build
           pnpm test
@@ -76,7 +76,7 @@ jobs:
       - run: corepack enable
       - uses: actions/setup-node@v4
         with:
-          node-version: 18
+          node-version: 20
           registry-url: 'https://registry.npmjs.org'
           cache: 'pnpm'
 

+ 4 - 4
.github/workflows/docker.yml

@@ -38,13 +38,13 @@ jobs:
           if-no-files-found: error
 
       - name: build CLI
-        run: cargo build --manifest-path ./tooling/cli/Cargo.toml
+        run: cargo build --manifest-path ./crates/tauri-cli/Cargo.toml
 
       - name: Upload CLI
         uses: actions/upload-artifact@v3
         with:
           name: cargo-tauri
-          path: tooling/cli/target/debug/cargo-tauri
+          path: crates/tauri-cli/target/debug/cargo-tauri
           if-no-files-found: error
 
   docker:
@@ -70,7 +70,7 @@ jobs:
       - name: Setup node
         uses: actions/setup-node@v4
         with:
-          node-version: 18
+          node-version: 'lts/*'
 
       - name: Download cross
         uses: actions/download-artifact@v3
@@ -112,7 +112,7 @@ jobs:
 
       - name: Test
         run: |
-          cd tooling/api
+          cd packages/api
           pnpm i --frozen-lockfile && pnpm build
           cd ../../examples/api
           pnpm i --frozen-lockfile

+ 0 - 56
.github/workflows/lint-core.yml

@@ -1,56 +0,0 @@
-# Copyright 2019-2024 Tauri Programme within The Commons Conservancy
-# SPDX-License-Identifier: Apache-2.0
-# SPDX-License-Identifier: MIT
-
-name: lint core
-
-on:
-  push:
-    branches:
-      - dev
-      - 1.x
-  pull_request:
-    paths:
-      - '.github/workflows/lint-core.yml'
-      - 'core/**'
-      - '!core/tauri/scripts/**'
-      - 'examples/**'
-
-env:
-  RUST_BACKTRACE: 1
-  CARGO_PROFILE_DEV_DEBUG: 0 # This would add unnecessary bloat to the target folder, decreasing cache efficiency.
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-jobs:
-  clippy:
-    runs-on: ubuntu-latest
-    strategy:
-      matrix:
-        clippy:
-          - { args: '', key: 'empty' }
-          - { args: '--all-features', key: 'all' }
-          - { args: '--features custom-protocol', key: 'custom-protocol' }
-
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: install dependencies
-        run: |
-          sudo apt-get update
-          sudo apt-get install -y webkit2gtk-4.1 libayatana-appindicator3-dev
-
-      - name: install Rust stable with clippy
-        uses: dtolnay/rust-toolchain@stable
-        with:
-          components: clippy
-
-      - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: core -> ../target
-          save-if: ${{ matrix.clippy.key == 'all' }}
-
-      - name: Run clippy - ${{ matrix.clippy.key }}
-        run: cargo clippy --manifest-path ./core/tauri/Cargo.toml --all-targets ${{ matrix.clippy.args }} -- -D warnings

+ 1 - 2
.github/workflows/lint-js.yml

@@ -8,8 +8,7 @@ on:
   pull_request:
     paths:
       - '.github/workflows/lint-js.yml'
-      - 'tooling/cli/node/**'
-      - 'tooling/api/**'
+      - 'packages/**'
 
 concurrency:
   group: ${{ github.workflow }}-${{ github.ref }}

+ 5 - 23
.github/workflows/lint-cli.yml → .github/workflows/lint-rust.yml

@@ -2,17 +2,16 @@
 # SPDX-License-Identifier: Apache-2.0
 # SPDX-License-Identifier: MIT
 
-name: lint cli
+name: lint rust
 
 on:
   push:
     branches:
       - dev
-      - 1.x
   pull_request:
     paths:
       - '.github/workflows/lint-cli.yml'
-      - 'tooling/cli/**'
+      - 'crates/**'
 
 env:
   RUST_BACKTRACE: 1
@@ -23,27 +22,13 @@ concurrency:
   cancel-in-progress: true
 
 jobs:
-  fmt:
-    runs-on: ubuntu-latest
-
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: install Rust stable and rustfmt
-        uses: dtolnay/rust-toolchain@stable
-        with:
-          components: rustfmt
-
-      - name: Run cargo fmt
-        run: cargo fmt --manifest-path ./tooling/cli/Cargo.toml --all -- --check
-
   clippy:
     runs-on: ubuntu-latest
 
     steps:
       - uses: actions/checkout@v4
 
-      - name: install Rust stable and clippy
+      - name: install rust stable and clippy
         uses: dtolnay/rust-toolchain@stable
         with:
           components: clippy
@@ -51,11 +36,8 @@ jobs:
       - name: install dependencies
         run: |
           sudo apt-get update
-          sudo apt-get install -y libgtk-3-dev
+          sudo apt-get install -y libgtk-3-dev webkit2gtk-4.1 libayatana-appindicator3-dev
 
       - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: tooling/cli
 
-      - name: run Clippy
-        run: cargo clippy --manifest-path ./tooling/cli/Cargo.toml --all-targets --all-features -- -D warnings
+      - run: cargo clippy --all-targets --all-features -- -D warnings

+ 18 - 18
.github/workflows/publish-cli-js.yml

@@ -18,7 +18,7 @@ on:
 
 defaults:
   run:
-    working-directory: tooling/cli/node/
+    working-directory: packages/cli/
 
 jobs:
   build:
@@ -48,14 +48,14 @@ jobs:
             target: x86_64-unknown-linux-gnu
             docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
             build: |
-              cd tooling/cli/node
+              cd packages/cli
               pnpm build:release --target x86_64-unknown-linux-gnu
               strip *.node
           - host: ubuntu-20.04
             target: x86_64-unknown-linux-musl
             docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
             build: |
-              cd tooling/cli/node
+              cd packages/cli
               pnpm build:release
               strip *.node
           - host: macos-latest
@@ -67,7 +67,7 @@ jobs:
             target: aarch64-unknown-linux-gnu
             docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
             build: |
-              cd tooling/cli/node
+              cd packages/cli
               pnpm build:release --target aarch64-unknown-linux-gnu
               aarch64-unknown-linux-gnu-strip *.node
           - host: ubuntu-20.04
@@ -84,11 +84,11 @@ jobs:
             target: aarch64-unknown-linux-musl
             docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
             build: |
-              cd tooling/cli/node
+              cd packages/cli
               rustup target add aarch64-unknown-linux-musl
               pnpm build:release --target aarch64-unknown-linux-musl
               /aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip *.node
-    name: stable - ${{ matrix.settings.target }} - node@16
+    name: stable - ${{ matrix.settings.target }} - node@20
     runs-on: ${{ matrix.settings.host }}
     steps:
       - uses: actions/checkout@v4
@@ -97,7 +97,7 @@ jobs:
         uses: actions/setup-node@v4
         if: ${{ !matrix.settings.docker }}
         with:
-          node-version: 18
+          node-version: 20
           cache: 'pnpm'
           architecture: ${{ matrix.settings.architecture }}
       - name: Install Rust
@@ -108,7 +108,7 @@ jobs:
       - uses: Swatinem/rust-cache@v1
         with:
           key: ${{ matrix.settings.target }}
-          working-directory: 'tooling/cli/'
+          working-directory: 'crates/tauri-cli/'
         if: ${{ matrix.settings.docker }}
       - name: Setup toolchain
         run: ${{ matrix.settings.setup }}
@@ -134,7 +134,7 @@ jobs:
         uses: actions/upload-artifact@v3
         with:
           name: bindings-${{ matrix.settings.target }}
-          path: tooling/cli/node/${{ env.APP_NAME }}.*.node
+          path: packages/cli/${{ env.APP_NAME }}.*.node
           if-no-files-found: error
   #  build-freebsd:
   #    runs-on: macos-10.15
@@ -173,7 +173,7 @@ jobs:
   #            whoami
   #            env
   #            freebsd-version
-  #            cd ./tooling/cli/node/
+  #            cd ./packages/cli/
   #            pnpm i --frozen-lockfile --ignore-scripts
   #            pnpm build:release
   #            strip -x *.node
@@ -183,7 +183,7 @@ jobs:
   #        uses: actions/upload-artifact@v3
   #        with:
   #          name: bindings-freebsd
-  #          path: tooling/cli/node/${{ env.APP_NAME }}.*.node
+  #          path: packages/cli/${{ env.APP_NAME }}.*.node
   #          if-no-files-found: error
   test-macOS-windows-binding:
     name: Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }}
@@ -215,7 +215,7 @@ jobs:
         uses: actions/download-artifact@v3
         with:
           name: bindings-${{ matrix.settings.target }}
-          path: 'tooling/cli/node/'
+          path: 'packages/cli/'
       - name: List packages
         run: ls -R .
         shell: bash
@@ -246,7 +246,7 @@ jobs:
         uses: actions/download-artifact@v3
         with:
           name: bindings-x86_64-unknown-linux-gnu
-          path: 'tooling/cli/node/'
+          path: 'packages/cli'
       - name: List packages
         run: ls -R .
         shell: bash
@@ -283,7 +283,7 @@ jobs:
         uses: actions/download-artifact@v3
         with:
           name: bindings-x86_64-unknown-linux-musl
-          path: 'tooling/cli/node/'
+          path: 'packages/cli/'
       - name: List packages
         run: ls -R .
         shell: bash
@@ -322,12 +322,12 @@ jobs:
         uses: actions/download-artifact@v3
         with:
           name: bindings-aarch64-unknown-linux-gnu
-          path: 'tooling/cli/node/'
+          path: 'packages/cli'
       - name: Download armv7-gnueabihf artifacts
         uses: actions/download-artifact@v3
         with:
           name: bindings-armv7-unknown-linux-gnueabihf
-          path: 'tooling/cli/node/'
+          path: 'packages/cli/'
       # TODO: actually run test, blocked by https://github.com/rust-lang/cargo/issues/8719
       - uses: addnab/docker-run-action@v3
         with:
@@ -345,7 +345,7 @@ jobs:
             eval "$(fnm env --use-on-cd)"
             fnm install ${{ matrix.node }}
             fnm use ${{ matrix.node }}
-            cd tooling/cli/node
+            cd packages/cli
             node tauri.js --help
             ls -la
   publish:
@@ -373,7 +373,7 @@ jobs:
       - name: Download all artifacts
         uses: actions/download-artifact@v3
         with:
-          path: tooling/cli/node/artifacts
+          path: packages/cli/artifacts
       - name: Move artifacts
         run: pnpm artifacts
       - name: List packages

+ 3 - 3
.github/workflows/publish-cli-rs.yml

@@ -58,13 +58,13 @@ jobs:
           sudo apt-get install -y libgtk-3-dev
 
       - name: Build CLI
-        run: cargo build --manifest-path ./tooling/cli/Cargo.toml --profile release-size-optimized ${{ matrix.config.args }}
+        run: cargo build --manifest-path ./crates/tauri-cli/Cargo.toml --profile release-size-optimized ${{ matrix.config.args }}
 
       - name: Upload CLI
         uses: actions/upload-artifact@v3
         with:
           name: cargo-tauri-${{ matrix.config.rust_target }}${{ matrix.config.ext }}
-          path: tooling/cli/target/release-size-optimized/cargo-tauri${{ matrix.config.ext }}
+          path: crates/tauri-cli/target/release-size-optimized/cargo-tauri${{ matrix.config.ext }}
           if-no-files-found: error
 
   upload:
@@ -84,7 +84,7 @@ jobs:
         run: ./.scripts/ci/pack-cli.sh
 
       - name: Get CLI version
-        run: echo "CLI_VERSION=$(cat tooling/cli/metadata-v2.json | jq '."cli.js".version' -r)" >> $GITHUB_ENV
+        run: echo "CLI_VERSION=$(cat crates/tauri-cli/metadata-v2.json | jq '."cli.js".version' -r)" >> $GITHUB_ENV
 
       - name: Publish release
         uses: softprops/action-gh-release@50195ba7f6f93d1ac97ba8332a178e008ad176aa

+ 0 - 1
.github/workflows/supply-chain.yml

@@ -10,7 +10,6 @@ on:
   push:
     branches:
       - dev
-      - 1.x
     paths:
       - '.github/workflows/supply-chain.yml'
       - '**/Cargo.lock'

+ 15 - 21
.github/workflows/test-android.yml

@@ -8,13 +8,13 @@ on:
   pull_request:
     paths:
       - '.github/workflows/test-android.yml'
-      - 'tooling/cli/templates/mobile/android/**'
-      - 'tooling/cli/src/mobile/**'
-      - '!tooling/cli/src/mobile/ios.rs'
-      - '!tooling/cli/src/mobile/ios/**'
-      - 'core/tauri-build/src/mobile.rs'
-      - 'core/tauri/mobile/android/**'
-      - 'core/tauri/mobile/android-codegen/**'
+      - 'crates/tauri-cli/templates/mobile/android/**'
+      - 'crates/tauri-cli/src/mobile/**'
+      - '!crates/tauri-cli/src/mobile/ios.rs'
+      - '!crates/tauri-cli/src/mobile/ios/**'
+      - 'crates/tauri-build/src/mobile.rs'
+      - 'crates/tauri/mobile/android/**'
+      - 'crates/tauri/mobile/android-codegen/**'
   workflow_dispatch:
 
 concurrency:
@@ -46,7 +46,7 @@ jobs:
       - name: setup node
         uses: actions/setup-node@v4
         with:
-          node-version: 18
+          node-version: lts/*
           cache: 'pnpm'
 
       - uses: actions/setup-java@v3
@@ -75,29 +75,23 @@ jobs:
           done
 
       - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: |
-            tooling/cli
-            examples/api/src-tauri
 
       - name: build CLI
-        run: cargo build --manifest-path ./tooling/cli/Cargo.toml
+        run: cargo build --manifest-path ./crates/tauri-cli/Cargo.toml
 
       - name: move CLI to cargo bin dir
         if: matrix.platform != 'windows-latest'
-        run: mv ./tooling/cli/target/debug/cargo-tauri $HOME/.cargo/bin
+        run: mv ./target/debug/cargo-tauri $HOME/.cargo/bin
 
       - name: move CLI to cargo bin dir
         if: matrix.platform == 'windows-latest'
-        run: mv ./tooling/cli/target/debug/cargo-tauri.exe $HOME/.cargo/bin
+        run: mv ./target/debug/cargo-tauri.exe $HOME/.cargo/bin
 
-      - name: build Tauri API
-        working-directory: ./tooling/api
-        run: pnpm i --frozen-lockfile && pnpm build
+      - run: pnpm i --frozen-lockfile
 
-      - name: install API example dependencies
-        working-directory: ./examples/api
-        run: pnpm i --frozen-lockfile
+      - name: build Tauri API
+        working-directory: ./packages/api
+        run: pnpm build
 
       - name: init Android Studio project
         working-directory: ./examples/api

+ 3 - 8
.github/workflows/test-cli-js.yml

@@ -8,12 +8,11 @@ on:
   push:
     branches:
       - dev
-      - 1.x
   pull_request:
     paths:
       - '.github/workflows/test-cli-js.yml'
       # currently` @tauri-apps/cli` only tests the template
-      - 'tooling/cli/templates/app/**'
+      - 'crates/tauri-cli/templates/app/**'
 
 env:
   RUST_BACKTRACE: 1
@@ -42,7 +41,7 @@ jobs:
       - name: setup node
         uses: actions/setup-node@v4
         with:
-          node-version: 18
+          node-version: 'lts/*'
           cache: 'pnpm'
 
       - name: install Linux dependencies
@@ -52,15 +51,11 @@ jobs:
           sudo apt-get install -y webkit2gtk-4.1 libayatana-appindicator3-dev
 
       - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: |
-            tooling/cli
-            tooling/cli/node/test/jest/fixtures/empty/src-tauri
 
       - name: test
         timeout-minutes: 30
         run: |
-          cd ./tooling/cli/node
+          cd ./packages/cli
           pnpm i --frozen-lockfile
           pnpm build
           pnpm test

+ 5 - 8
.github/workflows/test-cli-rs.yml

@@ -8,13 +8,12 @@ on:
   push:
     branches:
       - dev
-      - 1.x
   pull_request:
     paths:
       - '.github/workflows/test-cli-rs.yml'
-      - 'core/tauri-utils/**'
-      - 'tooling/bundler/**'
-      - 'tooling/cli/**'
+      - 'crates/tauri-utils/**'
+      - 'crates/tauri-bundler/**'
+      - 'crates/tauri-cli/**'
 
 env:
   RUST_BACKTRACE: 1
@@ -53,11 +52,9 @@ jobs:
         if: matrix.platform.os == 'ubuntu-latest'
         run: |
           sudo apt-get update
-          sudo apt-get install -y libgtk-3-dev
+          sudo apt-get install -y libgtk-3-dev webkit2gtk-4.1 libayatana-appindicator3-dev
 
       - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: tooling/cli
 
       - name: test CLI
-        run: cargo test --manifest-path ./tooling/cli/Cargo.toml ${{ matrix.platform.args }}
+        run: cargo test --manifest-path ./crates/tauri-cli/Cargo.toml ${{ matrix.platform.args }}

+ 17 - 15
.github/workflows/test-core.yml

@@ -8,12 +8,15 @@ on:
   push:
     branches:
       - dev
-      - 1.x
   pull_request:
     paths:
       - '.github/workflows/test-core.yml'
-      - 'core/**'
-      - '!core/tauri/scripts/**'
+      - 'crates/**'
+      - '!crates/tauri/scripts/**'
+      - '!crates/tauri-cli/**'
+      - '!crates/tauri-bundler/**'
+      - '!crates/tauri-macos-sign/**'
+      - '!crates/tauri-schema-generator/**'
 
 env:
   RUST_BACKTRACE: 1
@@ -34,35 +37,35 @@ jobs:
           - {
               target: x86_64-pc-windows-msvc,
               os: windows-latest,
-              toolchain: '1.70.0',
+              toolchain: '1.71.0',
               cross: false,
               command: 'test'
             }
           - {
               target: x86_64-unknown-linux-gnu,
               os: ubuntu-latest,
-              toolchain: '1.70.0',
+              toolchain: '1.71.0',
               cross: false,
               command: 'test'
             }
           - {
               target: aarch64-apple-darwin,
               os: macos-14,
-              toolchain: '1.70.0',
+              toolchain: '1.71.0',
               cross: false,
               command: 'test'
             }
           - {
               target: aarch64-apple-ios,
               os: macos-latest,
-              toolchain: '1.70.0',
+              toolchain: '1.71.0',
               cross: false,
               command: 'build'
             }
           - {
               target: aarch64-linux-android,
               os: ubuntu-latest,
-              toolchain: '1.70.0',
+              toolchain: '1.71.0',
               cross: true,
               command: 'build'
             }
@@ -88,16 +91,15 @@ jobs:
       - uses: Swatinem/rust-cache@v2
         with:
           prefix-key: v2
-          workspaces: core -> ../target
           save-if: ${{ matrix.features.key == 'all' }}
 
+      - name: test
+        if: ${{ !matrix.platform.cross }}
+        run: cargo ${{ matrix.platform.command }} --target ${{ matrix.platform.target }} ${{ matrix.features.args }} --manifest-path crates/tauri/Cargo.toml
+
       - name: test (using cross)
         if: ${{ matrix.platform.cross }}
-        # update or remove the rev once we update the MSRV from 1.70.0
+        # update or remove the rev once we update the MSRV from 1.71.0
         run: |
           cargo install cross --git https://github.com/cross-rs/cross --rev 20c73df79c9aaf78a2ad2e9fe8ae981668a729dc --locked
-          cross ${{ matrix.platform.command }} --target ${{ matrix.platform.target }} ${{ matrix.features.args }}
-
-      - name: test (using cargo)
-        if: ${{ !matrix.platform.cross }}
-        run: cargo ${{ matrix.platform.command }} --target ${{ matrix.platform.target }} ${{ matrix.features.args }}
+          cross ${{ matrix.platform.command }} --target ${{ matrix.platform.target }} ${{ matrix.features.args }} --manifest-path crates/tauri/Cargo.toml

+ 0 - 79
.github/workflows/test-lint-bundler.yml

@@ -1,79 +0,0 @@
-# Copyright 2019-2024 Tauri Programme within The Commons Conservancy
-# SPDX-License-Identifier: Apache-2.0
-# SPDX-License-Identifier: MIT
-
-name: test and lint bundler
-
-on:
-  push:
-    branches:
-      - dev
-      - 1.x
-  pull_request:
-    paths:
-      - '.github/workflows/test-bundler.yml'
-      - 'tooling/bundler/**'
-
-env:
-  RUST_BACKTRACE: 1
-  CARGO_PROFILE_DEV_DEBUG: 0 # This would add unnecessary bloat to the target folder, decreasing cache efficiency.
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-jobs:
-  test:
-    runs-on: ${{ matrix.platform }}
-
-    strategy:
-      fail-fast: false
-      matrix:
-        platform: [ubuntu-latest, macos-latest, windows-latest]
-
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: install stable
-        uses: dtolnay/rust-toolchain@stable
-
-      - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: tooling/bundler
-
-      - name: test
-        run: |
-          cd ./tooling/bundler
-          cargo test
-
-  fmt:
-    runs-on: ubuntu-latest
-
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: install Rust stable and rustfmt
-        uses: dtolnay/rust-toolchain@stable
-        with:
-          components: rustfmt
-
-      - name: Run cargo fmt
-        run: cargo fmt --manifest-path ./tooling/bundler/Cargo.toml --all -- --check
-
-  clippy:
-    runs-on: ubuntu-latest
-
-    steps:
-      - uses: actions/checkout@v4
-
-      - name: install Rust stable and clippy
-        uses: dtolnay/rust-toolchain@stable
-        with:
-          components: clippy
-
-      - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: tooling/bundler
-
-      - name: clippy check
-        run: cargo clippy --manifest-path ./tooling/bundler/Cargo.toml --all-targets -- -D warnings

+ 26 - 27
.github/workflows/udeps.yml

@@ -8,7 +8,6 @@ on:
   push:
     branches:
       - dev
-      - 1.x
 
 env:
   RUST_BACKTRACE: 1
@@ -33,29 +32,31 @@ jobs:
       cli: ${{ steps.filter.outputs.cli }}
     steps:
       - uses: actions/checkout@v4
-      - uses: dorny/paths-filter@v2
+      - uses: dorny/paths-filter@v3
         id: filter
         with:
           filters: |
             tauri:
-              - 'core/tauri/**'
-              - '!core/tauri/scripts/**'
+              - 'crates/tauri/**'
+              - '!crates/tauri/scripts/**'
             build:
-              - 'core/tauri-build/**'
+              - 'crates/tauri-build/**'
             codegen:
-              - 'core/tauri-codegen/**'
+              - 'crates/tauri-codegen/**'
             macros:
-              - 'core/tauri-macros/**'
+              - 'crates/tauri-macros/**'
             runtime:
-              - 'core/tauri-runtime/**'
+              - 'crates/tauri-runtime/**'
             wry:
-              - 'core/tauri-runtime-wry/**'
+              - 'crates/tauri-runtime-wry/**'
             utils:
-              - 'core/tauri-utils/**'
+              - 'crates/tauri-utils/**'
             bundler:
-              - 'tooling/bundler/**'
+              - 'crates/tauri-bundler/**'
             cli:
-              - 'tooling/cli/**'
+              - 'crates/tauri-cli/**'
+            macossign:
+              - 'crates/tauri-macos-sign/**'
 
   setup:
     runs-on: ubuntu-latest
@@ -69,7 +70,8 @@ jobs:
       needs.changes.outputs.wry == 'true' ||
       needs.changes.outputs.utils == 'true' ||
       needs.changes.outputs.bundler == 'true' ||
-      needs.changes.outputs.cli == 'true'
+      needs.changes.outputs.cli == 'true' ||
+      needs.changes.outputs.macossign == 'true'
 
     steps:
       - uses: actions/checkout@v4
@@ -99,17 +101,19 @@ jobs:
           UTILS: ${{ needs.changes.outputs.utils == 'true' }}
           BUNDLER: ${{ needs.changes.outputs.bundler == 'true' }}
           CLI: ${{ needs.changes.outputs.cli == 'true' }}
+          MACOSSIGN: ${{ needs.changes.outputs.macossign == 'true' }}
         run: |
           crates=()
-          if [ "${TAURI}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri\""; fi
-          if [ "${BUILD}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-build\""; fi
-          if [ "${CODEGEN}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-codegen\""; fi
-          if [ "${MACROS}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-macros\""; fi
-          if [ "${RUNTIME}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-runtime\""; fi
-          if [ "${WRY}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-runtime-wry\""; fi
-          if [ "${UTILS}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-utils\""; fi
-          if [ "${BUNDLER}" == "true" ]; then crates[${#crates[@]}]="\"./tooling/bundler\""; fi
-          if [ "${CLI}" == "true" ]; then crates[${#crates[@]}]="\"./tooling/cli\""; fi
+          if [ "${TAURI}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri\""; fi
+          if [ "${BUILD}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri-build\""; fi
+          if [ "${CODEGEN}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri-codegen\""; fi
+          if [ "${MACROS}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri-macros\""; fi
+          if [ "${RUNTIME}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri-runtime\""; fi
+          if [ "${WRY}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri-runtime-wry\""; fi
+          if [ "${UTILS}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri-utils\""; fi
+          if [ "${BUNDLER}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri-bundler\""; fi
+          if [ "${CLI}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri-cli\""; fi
+          if [ "${MACOSSIGN}" == "true" ]; then crates[${#crates[@]}]="\"./crates/tauri-macos-sign\""; fi
           echo "matrix=[$crates]" >> "$GITHUB_OUTPUT"
     outputs:
       matrix: ${{ steps.create-matrix.outputs.matrix }}
@@ -132,11 +136,6 @@ jobs:
           sudo apt-get install -y libgtk-3-dev
 
       - uses: Swatinem/rust-cache@v2
-        with:
-          workspaces: |
-            core -> ../target
-            tooling/cli
-            tooling/bundler
 
       - name: Download udeps
         uses: actions/download-artifact@v3

+ 2 - 5
.gitignore

@@ -26,11 +26,8 @@ target/
 streaming_example_test_video.mp4
 
 # examples /gen directory
-/examples/**/gen/
-
-# old cli directories
-/tooling/cli.js
-/tooling/cli.rs
+/examples/**/src-tauri/gen/
+/bench/**/src-tauri/gen/
 
 # logs
 logs

+ 6 - 5
.prettierignore

@@ -12,20 +12,20 @@ dist/
 pnpm-lock.yaml
 
 # autogenerated and minimized js file
-core/tauri/scripts/bundle.global.js
+crates/tauri/scripts/bundle.global.js
 
 # this file is an IIFE, shouldn't be formatted
-core/tauri/scripts/process-ipc-message-fn.js
+crates/tauri/scripts/process-ipc-message-fn.js
 
 # cli templates should be formatted manually
 # it also includes invalid json files that
 # prettier can't handle
-tooling/cli/templates
+crates/tauri-cli/templates
 
 # autogenerated files
 **/autogenerated/**/*.md
-tooling/cli/node/index.js
-tooling/cli/node/index.d.ts
+packages/cli/index.js
+packages/cli/index.d.ts
 CHANGELOG.md
 *schema.json
 
@@ -34,3 +34,4 @@ CHANGELOG.md
 
 # examples /gen directory
 examples/**/src-tauri/gen
+bench/**/src-tauri/gen

+ 1 - 1
.scripts/ci/pack-cli.sh

@@ -10,7 +10,7 @@ for o in outputs/*; do
   pushd "$o"
 
   chmod +x cargo-tauri*
-  cp ../../tooling/cli/LICENSE* ../../tooling/cli/README.md .
+  cp ../../crates/tauri-cli/LICENSE* ../../crates/tauri-cli/README.md .
 
   target=$(basename "$o" | cut -d. -f1)
   if grep -qE '(apple|windows)' <<< "$target"; then

+ 3 - 3
.scripts/ci/sync-cli-metadata.js

@@ -6,7 +6,7 @@
 
 /*
 This script is solely intended to be run as part of the `covector version` step to
-keep the `../tooling/cli/metadata.json` up to date with other version bumps. Long term
+keep the `../crates/tauri-cli/metadata.json` up to date with other version bumps. Long term
 we should look to find a more "rusty way" to import / "pin" a version value in our tauri-cli
 rust binaries.
 */
@@ -17,8 +17,8 @@ const { resolve } = require('path')
 const packageNickname = process.argv[2]
 const filePath =
   packageNickname === '@tauri-apps/cli'
-    ? `../../../tooling/cli/metadata-v2.json`
-    : `../../tooling/cli/metadata-v2.json`
+    ? `../../../crates/tauri-cli/metadata-v2.json`
+    : `../../crates/tauri-cli/metadata-v2.json`
 const bump = process.argv[3]
 let index = null
 

+ 12 - 12
ARCHITECTURE.md

@@ -21,50 +21,50 @@ The following section briefly describes the roles of the various parts of Tauri.
 
 ### Tauri Core [STABLE RUST]
 
-#### [tauri](https://github.com/tauri-apps/tauri/tree/dev/core/tauri)
+#### [tauri](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri)
 
 This is the major crate that holds everything together. It brings the runtimes, macros, utilities and API into one final product. It reads the `tauri.conf.json` file at compile time in order to bring in features and undertake actual configuration of the app (and even the `Cargo.toml` file in the project's folder). It handles script injection (for polyfills / prototype revision) at runtime, hosts the API for systems interaction, and even manages updating.
 
-#### [tauri-build](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-build)
+#### [tauri-build](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-build)
 
 Apply the macros at build-time in order to rig some special features needed by `cargo`.
 
-#### [tauri-codegen](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-codegen)
+#### [tauri-codegen](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-codegen)
 
 - Embed, hash, and compress assets, including icons for the app as well as the system-tray.
 - Parse `tauri.conf.json` at compile time and generate the Config struct.
 
-#### [tauri-macros](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-macros)
+#### [tauri-macros](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-macros)
 
 Create macros for the context, handler, and commands by leveraging the `tauri-codegen` crate.
 
-#### [tauri-runtime](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-runtime)
+#### [tauri-runtime](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime)
 
 This is the glue layer between tauri itself and lower level webview libraries.
 
-#### [tauri-runtime-wry](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-runtime-wry)
+#### [tauri-runtime-wry](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-runtime-wry)
 
 This crate opens up direct systems-level interactions specifically for WRY, such as printing, monitor detection, and other windowing related tasks. `tauri-runtime` implementation for WRY.
 
-#### [tauri-utils](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-utils)
+#### [tauri-utils](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-utils)
 
 This is common code that is reused in many places and offers useful utilities like parsing configuration files, detecting platform triples, injecting the CSP, and managing assets.
 
 ### Tauri Tooling
 
-#### [@tauri-apps/api](https://github.com/tauri-apps/tauri/tree/dev/tooling/api) [TS -> JS]
+#### [@tauri-apps/api](https://github.com/tauri-apps/tauri/tree/dev/packages/api) [TS -> JS]
 
 A TypeScript library that creates `cjs` and `esm` JavaScript endpoints for you to import into your Frontend framework so that the Webview can call and listen to backend activity. We also ship the pure TypeScript, because for some frameworks this is more optimal. It uses the message passing of webviews to their hosts.
 
-#### [bundler](https://github.com/tauri-apps/tauri/tree/dev/tooling/bundler) [RUST / SHELL]
+#### [bundler](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-bundler) [RUST / SHELL]
 
 The bundler is a library that builds a Tauri App for the platform triple it detects / is told. At the moment it currently supports macOS, Windows and Linux - but in the near future will support mobile platforms as well. May be used outside of Tauri projects.
 
-#### [@tauri-apps/cli](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli/node) [JS]
+#### [@tauri-apps/cli](https://github.com/tauri-apps/tauri/tree/dev/packages/cli) [JS]
 
-It is a wrapper around [tauri-cli](https://github.com/tauri-apps/tauri/blob/dev/tooling/cli) using [napi-rs](https://github.com/napi-rs/napi-rs) to produce NPM packages for each platform.
+It is a wrapper around [tauri-cli](https://github.com/tauri-apps/tauri/blob/dev/crates/tauri-cli) using [napi-rs](https://github.com/napi-rs/napi-rs) to produce NPM packages for each platform.
 
-#### [tauri-cli](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli) [RUST]
+#### [tauri-cli](https://github.com/tauri-apps/tauri/tree/dev/crates/tauri-cli) [RUST]
 
 This rust executable provides the full interface to all of the required activities for which the CLI is required. It will run on macOS, Windows, and Linux.
 

File diff suppressed because it is too large
+ 689 - 57
Cargo.lock


+ 37 - 25
Cargo.toml

@@ -1,36 +1,37 @@
 [workspace]
-resolver = "2"
 members = [
-  # core
-  "core/tauri",
-  "core/tauri-runtime",
-  "core/tauri-runtime-wry",
-  "core/tauri-macros",
-  "core/tauri-utils",
-  "core/tauri-build",
-  "core/tauri-codegen",
-  "core/tauri-config-schema",
-  "core/tauri-acl-schema",
-  "core/tauri-plugin",
+  "crates/tauri",
+  "crates/tauri-runtime",
+  "crates/tauri-runtime-wry",
+  "crates/tauri-macros",
+  "crates/tauri-utils",
+  "crates/tauri-build",
+  "crates/tauri-codegen",
+  "crates/tauri-plugin",
+  "crates/tauri-schema-generator",
+  "crates/tauri-cli",
+  "crates/tauri-bundler",
+  "crates/tauri-macos-sign",
+  "crates/tauri-driver",
+
+  # @tauri-apps/cli rust project
+  "packages/cli",
 
   # integration tests
-  "core/tests/restart",
-  "core/tests/acl",
+  "crates/tests/restart",
+  "crates/tests/acl",
+
+  # bench
+  "bench",
+  "bench/tests/cpu_intensive/src-tauri",
+  "bench/tests/files_transfer/src-tauri",
+  "bench/tests/helloworld/src-tauri",
 
   # examples
   "examples/file-associations/src-tauri",
   "examples/api/src-tauri",
 ]
-
-exclude = [
-  # examples that need to be compiled with the tauri CLI
-  "examples/api/src-tauri",
-  "examples/resources/src-tauri",
-  "examples/web/core",
-  "examples/file-associations/src-tauri",
-  "examples/workspace",
-  "examples/plugins/tauri-plugin-example",
-]
+resolver = "2"
 
 [workspace.package]
 authors = ["Tauri Programme within The Commons Conservancy"]
@@ -39,7 +40,7 @@ repository = "https://github.com/tauri-apps/tauri"
 categories = ["gui", "web-programming"]
 license = "Apache-2.0 OR MIT"
 edition = "2021"
-rust-version = "1.70"
+rust-version = "1.71"
 
 # default to small, optimized workspace release binaries
 [profile.release]
@@ -49,6 +50,17 @@ lto = true
 incremental = false
 opt-level = "s"
 
+# profiles for tauri-cli
+[profile.dev.package.miniz_oxide]
+opt-level = 3
+
+[profile.release-size-optimized]
+inherits = "release"
+codegen-units = 1
+lto = true
+incremental = false
+opt-level = "s"
+
 # Temporary patch to schemars to preserve newlines in docstrings for our reference docs schemas
 # See https://github.com/GREsau/schemars/issues/120 for reference
 [patch.crates-io]

+ 1 - 3
tooling/bench/Cargo.toml → bench/Cargo.toml

@@ -1,11 +1,9 @@
-workspace = {}
-
 [package]
 name = "tauri_bench"
 version = "0.1.0"
 authors = ["Tauri Programme within The Commons Conservancy"]
 edition = "2021"
-rust-version = "1.70"
+rust-version = "1.71"
 license = "Apache-2.0 OR MIT"
 description = "Cross-platform WebView rendering library"
 repository = "https://github.com/tauri-apps/wry"

+ 0 - 0
tooling/bench/README.md → bench/README.md


+ 0 - 0
tooling/bench/src/build_benchmark_jsons.rs → bench/src/build_benchmark_jsons.rs


+ 4 - 7
tooling/bench/src/run_benchmark.rs → bench/src/run_benchmark.rs

@@ -28,22 +28,19 @@ fn get_all_benchmarks() -> Vec<(String, String)> {
   vec![
     (
       "tauri_hello_world".into(),
-      format!(
-        "tests/target/{}/release/bench_helloworld",
-        utils::get_target()
-      ),
+      format!("../target/{}/release/bench_helloworld", utils::get_target()),
     ),
     (
       "tauri_cpu_intensive".into(),
       format!(
-        "tests/target/{}/release/bench_cpu_intensive",
+        "../target/{}/release/bench_cpu_intensive",
         utils::get_target()
       ),
     ),
     (
       "tauri_3mb_transfer".into(),
       format!(
-        "tests/target/{}/release/bench_files_transfer",
+        "../target/{}/release/bench_files_transfer",
         utils::get_target()
       ),
     ),
@@ -191,7 +188,7 @@ fn cargo_deps() -> HashMap<String, usize> {
       cmd.args(["--edges", "normal"]);
       cmd.args(["--prefix", "none"]);
       cmd.args(["--target", target]);
-      cmd.current_dir(&utils::tauri_root_path());
+      cmd.current_dir(utils::tauri_root_path());
 
       let full_deps = cmd.output().expect("failed to run cargo tree").stdout;
       let full_deps = String::from_utf8(full_deps).expect("cargo tree output not utf-8");

+ 10 - 9
tooling/bench/src/utils.rs → bench/src/utils.rs

@@ -42,6 +42,12 @@ pub fn get_target() -> &'static str {
   } else {
     "x86_64-apple-darwin"
   };
+  #[cfg(target_os = "ios")]
+  return if cfg!(target_arch = "aarch64") {
+    "aarch64-apple-ios"
+  } else {
+    "x86_64-apple-ios"
+  };
   #[cfg(target_os = "linux")]
   return "x86_64-unknown-linux-gnu";
   #[cfg(target_os = "windows")]
@@ -50,7 +56,7 @@ pub fn get_target() -> &'static str {
 
 pub fn target_dir() -> PathBuf {
   bench_root_path()
-    .join("tests")
+    .join("..")
     .join("target")
     .join(get_target())
     .join("release")
@@ -62,7 +68,7 @@ pub fn bench_root_path() -> PathBuf {
 
 #[allow(dead_code)]
 pub fn home_path() -> PathBuf {
-  #[cfg(any(target_os = "macos", target_os = "linux"))]
+  #[cfg(any(target_os = "macos", target_os = "ios", target_os = "linux"))]
   return PathBuf::from(env!("HOME"));
   #[cfg(target_os = "windows")]
   return PathBuf::from(env!("HOMEPATH"));
@@ -70,12 +76,7 @@ pub fn home_path() -> PathBuf {
 
 #[allow(dead_code)]
 pub fn tauri_root_path() -> PathBuf {
-  bench_root_path()
-    .parent()
-    .unwrap()
-    .parent()
-    .unwrap()
-    .to_path_buf()
+  bench_root_path().parent().unwrap().to_path_buf()
 }
 
 #[allow(dead_code)]
@@ -108,7 +109,7 @@ pub fn parse_max_mem(file_path: &str) -> Option<u64> {
   let output = BufReader::new(file);
   let mut highest: u64 = 0;
   // MEM 203.437500 1621617192.4123
-  for line in output.lines().flatten() {
+  for line in output.lines().map_while(Result::ok) {
     // split line by space
     let split = line.split(' ').collect::<Vec<_>>();
     if split.len() == 3 {

+ 0 - 0
tooling/bench/tests/cpu_intensive/public/index.css → bench/tests/cpu_intensive/public/index.css


+ 0 - 0
tooling/bench/tests/cpu_intensive/public/index.html → bench/tests/cpu_intensive/public/index.html


+ 0 - 0
tooling/bench/tests/cpu_intensive/public/site.js → bench/tests/cpu_intensive/public/site.js


+ 0 - 0
tooling/bench/tests/cpu_intensive/public/worker.js → bench/tests/cpu_intensive/public/worker.js


+ 0 - 0
tooling/bench/tests/cpu_intensive/src-tauri/.gitignore → bench/tests/cpu_intensive/src-tauri/.gitignore


+ 5 - 3
tooling/bench/tests/cpu_intensive/src-tauri/Cargo.toml → bench/tests/cpu_intensive/src-tauri/Cargo.toml

@@ -3,12 +3,14 @@ name = "bench_cpu_intensive"
 version = "0.1.0"
 description = "A very simple Tauri Application"
 edition = "2021"
-rust-version = "1.70"
+rust-version = "1.71"
 
 [build-dependencies]
-tauri-build = { path = "../../../../../core/tauri-build", features = ["codegen"] }
+tauri-build = { path = "../../../../crates/tauri-build", features = [
+  "codegen",
+] }
 
 [dependencies]
 serde_json = "1.0"
 serde = { version = "1.0", features = ["derive"] }
-tauri = { path = "../../../../../core/tauri", features = [] }
+tauri = { path = "../../../../crates/tauri", features = [] }

+ 0 - 0
tooling/bench/tests/cpu_intensive/src-tauri/build.rs → bench/tests/cpu_intensive/src-tauri/build.rs


+ 0 - 0
tooling/bench/tests/cpu_intensive/src-tauri/src/main.rs → bench/tests/cpu_intensive/src-tauri/src/main.rs


+ 6 - 6
tooling/bench/tests/cpu_intensive/src-tauri/tauri.conf.json → bench/tests/cpu_intensive/src-tauri/tauri.conf.json

@@ -1,5 +1,5 @@
 {
-  "$schema": "../../../../../core/tauri-config-schema/schema.json",
+  "$schema": "../../../../crates/tauri-schema-generator/schemas/config.schema.json",
   "identifier": "com.tauri.dev",
   "build": {
     "frontendDist": "../public"
@@ -23,11 +23,11 @@
     "active": true,
     "targets": "all",
     "icon": [
-      "../../../../../examples/.icons/32x32.png",
-      "../../../../../examples/.icons/128x128.png",
-      "../../../../../examples/.icons/128x128@2x.png",
-      "../../../../../examples/.icons/icon.icns",
-      "../../../../../examples/.icons/icon.ico"
+      "../../../../examples/.icons/32x32.png",
+      "../../../../examples/.icons/128x128.png",
+      "../../../../examples/.icons/128x128@2x.png",
+      "../../../../examples/.icons/icon.icns",
+      "../../../../examples/.icons/icon.ico"
     ]
   }
 }

+ 0 - 0
tooling/bench/tests/files_transfer/public/index.html → bench/tests/files_transfer/public/index.html


+ 0 - 0
tooling/bench/tests/files_transfer/src-tauri/.gitignore → bench/tests/files_transfer/src-tauri/.gitignore


+ 5 - 3
tooling/bench/tests/files_transfer/src-tauri/Cargo.toml → bench/tests/files_transfer/src-tauri/Cargo.toml

@@ -3,12 +3,14 @@ name = "bench_files_transfer"
 version = "0.1.0"
 description = "A very simple Tauri Application"
 edition = "2021"
-rust-version = "1.70"
+rust-version = "1.71"
 
 [build-dependencies]
-tauri-build = { path = "../../../../../core/tauri-build", features = ["codegen"] }
+tauri-build = { path = "../../../../crates/tauri-build", features = [
+  "codegen",
+] }
 
 [dependencies]
 serde_json = "1.0"
 serde = { version = "1.0", features = ["derive"] }
-tauri = { path = "../../../../../core/tauri", features = [] }
+tauri = { path = "../../../../crates/tauri", features = [] }

+ 0 - 0
tooling/bench/tests/files_transfer/src-tauri/build.rs → bench/tests/files_transfer/src-tauri/build.rs


+ 0 - 0
tooling/bench/tests/files_transfer/src-tauri/src/main.rs → bench/tests/files_transfer/src-tauri/src/main.rs


+ 6 - 6
tooling/bench/tests/files_transfer/src-tauri/tauri.conf.json → bench/tests/files_transfer/src-tauri/tauri.conf.json

@@ -1,5 +1,5 @@
 {
-  "$schema": "../../../../../core/tauri-config-schema/schema.json",
+  "$schema": "../../../../crates/tauri-schema-generator/schemas/config.schema.json",
   "identifier": "com.tauri.dev",
   "build": {
     "frontendDist": "../public"
@@ -23,11 +23,11 @@
     "active": true,
     "targets": "all",
     "icon": [
-      "../../../../../examples/.icons/32x32.png",
-      "../../../../../examples/.icons/128x128.png",
-      "../../../../../examples/.icons/128x128@2x.png",
-      "../../../../../examples/.icons/icon.icns",
-      "../../../../../examples/.icons/icon.ico"
+      "../../../../examples/.icons/32x32.png",
+      "../../../../examples/.icons/128x128.png",
+      "../../../../examples/.icons/128x128@2x.png",
+      "../../../../examples/.icons/icon.icns",
+      "../../../../examples/.icons/icon.ico"
     ]
   }
 }

+ 0 - 0
tooling/bench/tests/helloworld/public/index.html → bench/tests/helloworld/public/index.html


+ 0 - 0
tooling/bench/tests/helloworld/src-tauri/.gitignore → bench/tests/helloworld/src-tauri/.gitignore


+ 5 - 3
tooling/bench/tests/helloworld/src-tauri/Cargo.toml → bench/tests/helloworld/src-tauri/Cargo.toml

@@ -3,12 +3,14 @@ name = "bench_helloworld"
 version = "0.1.0"
 description = "A very simple Tauri Application"
 edition = "2021"
-rust-version = "1.70"
+rust-version = "1.71"
 
 [build-dependencies]
-tauri-build = { path = "../../../../../core/tauri-build", features = ["codegen"] }
+tauri-build = { path = "../../../../crates/tauri-build", features = [
+  "codegen",
+] }
 
 [dependencies]
 serde_json = "1.0"
 serde = { version = "1.0", features = ["derive"] }
-tauri = { path = "../../../../../core/tauri", features = [] }
+tauri = { path = "../../../../crates/tauri", features = [] }

+ 0 - 0
tooling/bench/tests/helloworld/src-tauri/build.rs → bench/tests/helloworld/src-tauri/build.rs


+ 0 - 0
tooling/bench/tests/helloworld/src-tauri/src/main.rs → bench/tests/helloworld/src-tauri/src/main.rs


+ 6 - 6
tooling/bench/tests/helloworld/src-tauri/tauri.conf.json → bench/tests/helloworld/src-tauri/tauri.conf.json

@@ -1,5 +1,5 @@
 {
-  "$schema": "../../../../../core/tauri-config-schema/schema.json",
+  "$schema": "../../../../crates/tauri-schema-generator/schemas/config.schema.json",
   "identifier": "com.tauri.dev",
   "build": {
     "frontendDist": "../public",
@@ -25,11 +25,11 @@
     "active": true,
     "targets": "all",
     "icon": [
-      "../../../../../examples/.icons/32x32.png",
-      "../../../../../examples/.icons/128x128.png",
-      "../../../../../examples/.icons/128x128@2x.png",
-      "../../../../../examples/.icons/icon.icns",
-      "../../../../../examples/.icons/icon.ico"
+      "../../../../examples/.icons/32x32.png",
+      "../../../../examples/.icons/128x128.png",
+      "../../../../examples/.icons/128x128@2x.png",
+      "../../../../examples/.icons/icon.icns",
+      "../../../../examples/.icons/icon.ico"
     ]
   }
 }

+ 0 - 12
core/tauri-config-schema/Cargo.toml

@@ -1,12 +0,0 @@
-[package]
-name = "tauri-config-schema"
-version = "0.0.0"
-edition = "2021"
-publish = false
-
-[build-dependencies]
-tauri-utils = { features = ["schema"], path = "../tauri-utils" }
-schemars = { version = "0.8.18", features = ["url", "preserve_order"] }
-serde = { version = "1.0", features = ["derive"] }
-serde_json = "1.0"
-url = { version = "2.3", features = ["serde"] }

+ 0 - 17
core/tauri-config-schema/build.rs

@@ -1,17 +0,0 @@
-// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-License-Identifier: MIT
-
-use std::{error::Error, path::PathBuf};
-use tauri_utils::{config::Config, write_if_changed};
-
-pub fn main() -> Result<(), Box<dyn Error>> {
-  let schema = schemars::schema_for!(Config);
-  let schema = serde_json::to_string_pretty(&schema)?;
-  let out = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR")?);
-  for path in ["schema.json", "../../tooling/cli/schema.json"] {
-    write_if_changed(out.join(path), &schema)?;
-  }
-
-  Ok(())
-}

+ 0 - 14
core/tauri-config-schema/src/main.rs

@@ -1,14 +0,0 @@
-// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-License-Identifier: MIT
-
-//! [![](https://github.com/tauri-apps/tauri/raw/dev/.github/splash.png)](https://tauri.app)
-//!
-//! Hosts the schema for the Tauri configuration file.
-
-#![doc(
-  html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/.github/icon.png",
-  html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/.github/icon.png"
-)]
-
-fn main() {}

+ 0 - 1
core/tests/app-updater/frameworks/test.framework/Headers

@@ -1 +0,0 @@
-Versions/Current/Headers

+ 0 - 1
core/tests/app-updater/frameworks/test.framework/Modules

@@ -1 +0,0 @@
-Versions/Current/Modules

+ 0 - 1
core/tests/app-updater/frameworks/test.framework/Resources

@@ -1 +0,0 @@
-Versions/Current/Resources

+ 0 - 1
core/tests/app-updater/frameworks/test.framework/Versions/Current

@@ -1 +0,0 @@
-A

+ 0 - 1
core/tests/restart/LICENSE.spdx

@@ -1 +0,0 @@
-../../../LICENSE.spdx

+ 0 - 1
core/tests/restart/LICENSE_APACHE-2.0

@@ -1 +0,0 @@
-../../../LICENSE_APACHE-2.0

+ 0 - 1
core/tests/restart/LICENSE_MIT

@@ -1 +0,0 @@
-../../../LICENSE_MIT

+ 0 - 0
core/tauri-build/CHANGELOG.md → crates/tauri-build/CHANGELOG.md


+ 4 - 1
core/tauri-build/Cargo.toml → crates/tauri-build/Cargo.toml

@@ -29,7 +29,10 @@ rustdoc-args = ["--cfg", "docsrs"]
 anyhow = "1"
 quote = { version = "1", optional = true }
 tauri-codegen = { version = "2.0.0-rc.6", path = "../tauri-codegen", optional = true }
-tauri-utils = { version = "2.0.0-rc.6", path = "../tauri-utils", features = ["build", "resources"] }
+tauri-utils = { version = "2.0.0-rc.6", path = "../tauri-utils", features = [
+  "build",
+  "resources",
+] }
 cargo_toml = "0.17"
 serde = "1"
 serde_json = "1"

+ 0 - 0
core/tauri-build/LICENSE_APACHE-2.0 → crates/tauri-build/LICENSE_APACHE-2.0


+ 0 - 0
core/tauri-build/LICENSE_MIT → crates/tauri-build/LICENSE_MIT


+ 0 - 0
core/tauri-build/README.md → crates/tauri-build/README.md


+ 0 - 0
core/tauri-build/src/acl.rs → crates/tauri-build/src/acl.rs


+ 0 - 0
core/tauri-build/src/codegen/context.rs → crates/tauri-build/src/codegen/context.rs


+ 0 - 0
core/tauri-build/src/codegen/mod.rs → crates/tauri-build/src/codegen/mod.rs


+ 0 - 0
core/tauri-build/src/lib.rs → crates/tauri-build/src/lib.rs


+ 0 - 0
core/tauri-build/src/manifest.rs → crates/tauri-build/src/manifest.rs


+ 0 - 0
core/tauri-build/src/mobile.rs → crates/tauri-build/src/mobile.rs


+ 0 - 0
core/tauri-build/src/static_vcruntime.rs → crates/tauri-build/src/static_vcruntime.rs


+ 0 - 0
core/tauri-build/src/windows-app-manifest.xml → crates/tauri-build/src/windows-app-manifest.xml


+ 0 - 0
tooling/bundler/CHANGELOG.md → crates/tauri-bundler/CHANGELOG.md


+ 12 - 7
tooling/bundler/Cargo.toml → crates/tauri-bundler/Cargo.toml

@@ -1,20 +1,23 @@
-workspace = {}
-
 [package]
 name = "tauri-bundler"
 version = "2.0.1-rc.5"
-authors = ["George Burton <burtonageo@gmail.com>", "Tauri Programme within The Commons Conservancy"]
+authors = [
+  "George Burton <burtonageo@gmail.com>",
+  "Tauri Programme within The Commons Conservancy",
+]
 categories = ["command-line-utilities", "development-tools::cargo-plugins"]
 license = "Apache-2.0 OR MIT"
 keywords = ["bundle", "cargo", "tauri"]
 repository = "https://github.com/tauri-apps/tauri"
 description = "Wrap rust executables in OS-specific app bundles for Tauri"
 edition = "2021"
-rust-version = "1.70"
+rust-version = "1.71"
 exclude = ["CHANGELOG.md", "/target", "rustfmt.toml"]
 
 [dependencies]
-tauri-utils = { version = "2.0.0-rc.6", path = "../../core/tauri-utils", features = ["resources"] }
+tauri-utils = { version = "2.0.0-rc.6", path = "../tauri-utils", features = [
+  "resources",
+] }
 image = "0.25.0"
 flate2 = "1.0"
 anyhow = "1.0"
@@ -29,7 +32,9 @@ tempfile = "3.10.1"
 log = { version = "0.4.21", features = ["kv"] }
 dirs = "5"
 os_pipe = "1"
-ureq = { version = "2.9.6", default-features = false, features = ["socks-proxy"] }
+ureq = { version = "2.9.6", default-features = false, features = [
+  "socks-proxy",
+] }
 native-tls = { version = "0.2", optional = true }
 hex = "0.4"
 semver = "1"
@@ -52,7 +57,7 @@ features = ["Win32_System_SystemInformation", "Win32_System_Diagnostics_Debug"]
 icns = { package = "tauri-icns", version = "0.1" }
 time = { version = "0.3", features = ["formatting"] }
 plist = "1"
-tauri-macos-sign = { version = "0.1.1-rc.0", path = "../macos-sign" }
+tauri-macos-sign = { version = "0.1.1-rc.0", path = "../tauri-macos-sign" }
 
 [target."cfg(any(target_os = \"macos\", target_os = \"windows\"))".dependencies]
 regex = "1"

+ 0 - 0
tooling/bundler/License_Apache.md → crates/tauri-bundler/License_Apache.md


+ 0 - 0
tooling/bundler/License_MIT.md → crates/tauri-bundler/License_MIT.md


+ 0 - 0
tooling/bundler/README.md → crates/tauri-bundler/README.md


+ 0 - 0
tooling/bundler/src/bundle.rs → crates/tauri-bundler/src/bundle.rs


+ 0 - 0
tooling/bundler/src/bundle/category.rs → crates/tauri-bundler/src/bundle/category.rs


+ 0 - 0
tooling/bundler/src/bundle/common.rs → crates/tauri-bundler/src/bundle/common.rs


+ 8 - 7
tooling/bundler/src/bundle/linux/appimage.rs → crates/tauri-bundler/src/bundle/linux/appimage.rs

@@ -58,13 +58,14 @@ pub fn bundle_project(settings: &Settings) -> crate::Result<Vec<PathBuf>> {
   sh_map.insert("arch", settings.target().split('-').next().unwrap());
   sh_map.insert("crate_name", settings.main_binary_name());
   sh_map.insert("appimage_filename", &appimage_filename);
-  let tauri_tools_path = dirs::cache_dir().map_or_else(
-    || output_path.to_path_buf(),
-    |mut p| {
-      p.push("tauri");
-      p
-    },
-  );
+
+  let tauri_tools_path = settings
+    .local_tools_directory()
+    .map(|d| d.join(".tauri"))
+    .unwrap_or_else(|| {
+      dirs::cache_dir().map_or_else(|| output_path.to_path_buf(), |p| p.join("tauri"))
+    });
+
   std::fs::create_dir_all(&tauri_tools_path)?;
   let tauri_tools_path_str = tauri_tools_path.to_string_lossy();
   sh_map.insert("tauri_tools_path", &tauri_tools_path_str);

+ 0 - 0
tooling/bundler/src/bundle/linux/debian.rs → crates/tauri-bundler/src/bundle/linux/debian.rs


+ 0 - 0
tooling/bundler/src/bundle/linux/freedesktop.rs → crates/tauri-bundler/src/bundle/linux/freedesktop.rs


+ 0 - 0
tooling/bundler/src/bundle/linux/mod.rs → crates/tauri-bundler/src/bundle/linux/mod.rs


+ 0 - 0
tooling/bundler/src/bundle/linux/rpm.rs → crates/tauri-bundler/src/bundle/linux/rpm.rs


+ 0 - 0
tooling/bundler/src/bundle/linux/templates/appimage → crates/tauri-bundler/src/bundle/linux/templates/appimage


+ 0 - 0
tooling/bundler/src/bundle/linux/templates/main.desktop → crates/tauri-bundler/src/bundle/linux/templates/main.desktop


+ 0 - 0
tooling/bundler/src/bundle/macos/app.rs → crates/tauri-bundler/src/bundle/macos/app.rs


+ 0 - 0
tooling/bundler/src/bundle/macos/dmg.rs → crates/tauri-bundler/src/bundle/macos/dmg.rs


+ 0 - 0
tooling/bundler/src/bundle/macos/icon.rs → crates/tauri-bundler/src/bundle/macos/icon.rs


+ 0 - 0
tooling/bundler/src/bundle/macos/ios.rs → crates/tauri-bundler/src/bundle/macos/ios.rs


+ 0 - 0
tooling/bundler/src/bundle/macos/mod.rs → crates/tauri-bundler/src/bundle/macos/mod.rs


Some files were not shown because too many files changed in this diff