Compare commits

...

19 Commits

Author SHA1 Message Date
Lucas Fernandes Nogueira 76cfdc32b4 fix: adjust chrono dependency requirement (#680) 2023-10-23 11:17:32 -03:00
Lucas Fernandes Nogueira 0fc910a9f3 fix(authenticator): u2f cannot handle the chrono 0.4.30 breaking change (#679)
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2023-10-23 10:30:16 -03:00
github-actions[bot] 437dfba814 Publish New Versions (v2) (#629)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2023-10-23 09:01:39 -03:00
Mo beb6b139eb Fix invoke calls in dialog & shell init scripts (#675)
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2023-10-22 10:09:40 -03:00
Lucas Fernandes Nogueira 5c137365c6 chore: update to tauri alpha.16, api alpha.9 (#673)
Co-authored-by: Amr Bashir <amr.bashir2015@gmail.com>
2023-10-20 13:50:18 -03:00
Amr Bashir b7c5407cac refactor: remove window and app plugins (#671)
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2023-10-19 23:17:09 +00:00
pashokitsme 0e642e68de fix(updater): installation on macos #591 (#592)
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
fix(updater): installation on macos #591
fix(updater): use zip flate2 feature #591
fix(updater): use zip flate2 feature #591"
2023-10-19 22:50:37 +00:00
Lucas Fernandes Nogueira d1b7c2c1fb feat: build docs.rs documentation for Android (#654) 2023-10-19 17:39:54 +00:00
Lucas Fernandes Nogueira 5de23e79f9 chore: update deps, make mobile script paths relative (#649) 2023-10-19 14:31:42 -03:00
Fabian-Lars 1240631840 fix(websocket): Fix argument mismatch, fixes #661 (#663) 2023-10-16 20:40:09 +03:00
Amr Bashir c2103c91bc feat(global-shortcut): pass app handle to the closure, closes #657 (#658)
* feat(global-shortcut): pass app handle to the closure, closes #657

* Update global-shortcut-app-handle.md
2023-10-16 20:39:27 +03:00
Fabian-Lars 28ec084e56 fix(updater): Fix endpoint string replacements, fixes #655 (#662)
* fix(updater): Fix endpoint string replacements, fixes #655

* fmt
2023-10-16 20:39:02 +03:00
Lucas Fernandes Nogueira 8902fe9adf fix(notification): permission on mobile returns prompt (#627) 2023-09-30 10:09:21 -03:00
Fermín Cirella a1738b2401 fix(notification): function 'invoke' not found in permission request (#596) 2023-09-26 04:08:59 +03:00
github-actions[bot] 2b9ddbe29a Publish New Versions (v2) (#603)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2023-09-14 11:41:25 -03:00
Tejas Kumar 8e8ba52766 Fix logos (#604)
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2023-09-14 10:35:11 -03:00
Lucas Fernandes Nogueira 454428cd50 feat: add barcode scanner plugin (#536) 2023-09-14 09:34:04 -03:00
Fabian-Lars eccd6f977a feat: Add deep link plugin for mobile (#504)
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2023-09-14 08:55:51 -03:00
Lucas Fernandes Nogueira 2409b01fe7 chore(examples): update to tauri 2.0.0-alpha.14 (#600) 2023-09-12 09:39:17 -03:00
458 changed files with 16418 additions and 5570 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"log-plugin": patch
---
Update to tauri@2.0.0-alpha.16.
+27
View File
@@ -0,0 +1,27 @@
---
"authenticator-js": patch
"autostart-js": patch
"barcode-scanner-js": patch
"cli-js": patch
"clipboard-manager-js": patch
"deep-link-js": patch
"dialog-js": patch
"fs-js": patch
"global-shortcut-js": patch
"http-js": patch
"log-js": patch
"notification-js": patch
"os-js": patch
"positioner-js": patch
"process-js": patch
"shell-js": patch
"sql-js": patch
"store-js": patch
"stronghold-js": patch
"updater-js": patch
"upload-js": patch
"websocket-js": patch
"window-state-js": patch
---
Update to @tauri-apps/api v2.0.0-alpha.16.
+31 -25
View File
@@ -38,7 +38,7 @@
"manager": "rust",
"publish": false,
"dependencies": [
"app",
"barcode-scanner",
"log-plugin",
"cli",
"clipboard-manager",
@@ -50,17 +50,15 @@
"os",
"process",
"shell",
"updater",
"window"
],
"postversion": "pnpm install --no-frozen-lockfile"
"updater"
]
},
"api-example-js": {
"path": "./examples/api",
"manager": "javascript",
"publish": false,
"dependencies": [
"app-js",
"barcode-scanner-js",
"log-js",
"cli-js",
"clipboard-manager-js",
@@ -72,18 +70,17 @@
"os-js",
"process-js",
"shell-js",
"updater-js",
"window-js"
]
"updater-js"
],
"postversion": "pnpm install --no-frozen-lockfile"
},
"app": {
"path": "./plugins/app",
"manager": "rust"
},
"app-js": {
"path": "./plugins/app",
"manager": "javascript"
"deep-link-example-js": {
"path": "./plugins/deep-link/examples/app",
"manager": "javascript",
"publish": false,
"dependencies": ["deep-link-js"],
"postversion": "pnpm install --no-frozen-lockfile"
},
"authenticator": {
@@ -104,6 +101,15 @@
"manager": "javascript"
},
"barcode-scanner": {
"path": "./plugins/barcode-scanner",
"manager": "rust"
},
"barcode-scanner-js": {
"path": "./plugins/barcode-scanner",
"manager": "javascript"
},
"cli": {
"path": "./plugins/cli",
"manager": "rust"
@@ -122,6 +128,15 @@
"manager": "javascript"
},
"deep-link": {
"path": "./plugins/deep-link",
"manager": "rust"
},
"deep-link-js": {
"path": "./plugins/deep-link",
"manager": "javascript"
},
"fs": {
"path": "./plugins/fs",
"manager": "rust"
@@ -305,15 +320,6 @@
"manager": "javascript"
},
"window": {
"path": "./plugins/window",
"manager": "rust"
},
"window-js": {
"path": "./plugins/window",
"manager": "javascript"
},
"window-state": {
"path": "./plugins/window-state",
"manager": "rust"
+6
View File
@@ -0,0 +1,6 @@
---
"deep-link": major
"deep-link-js": major
---
Initial release.
@@ -1,5 +0,0 @@
---
"window-js": "minor:feat"
---
Added the `maximizable`, `minimizable` and `closable` fields on `WindowOptions`.
-6
View File
@@ -1,6 +0,0 @@
---
"window": "minor:feat"
"window-js": "minor:feat"
---
Added the `setMaximizable`, `setMinimizable`, `setClosable`, `isMaximizable`, `isMinimizable` and `isClosable` methods.
-2
View File
@@ -1,5 +1,4 @@
---
"app": patch
"authenticator": patch
"autostart": patch
"cli": patch
@@ -23,7 +22,6 @@
"updater": patch
"upload": patch
"websocket": patch
"window": patch
"window-state": patch
---
+6
View File
@@ -0,0 +1,6 @@
---
"shell": patch
"dialog": patch
---
Fix invoke usage.
+5
View File
@@ -0,0 +1,5 @@
---
"notification": patch
---
Fix permission prompt.
+5
View File
@@ -0,0 +1,5 @@
---
"updater": patch
---
Fixes update on macOS.
+5
View File
@@ -0,0 +1,5 @@
---
"window-state-js": patch
---
Fix usage of no longer available `__TAURI_METADATA__` API.
+5
View File
@@ -0,0 +1,5 @@
---
"global-shortcut": "patch"
---
**Breaking Change**: Changed `Builder::with_handler` closure to take `&AppHandle` as the first argument and the shortcut as the second argument.
+30
View File
@@ -0,0 +1,30 @@
---
"authenticator": patch
"autostart": patch
"barcode-scanner": patch
"cli": patch
"clipboard-manager": patch
"deep-link": patch
"dialog": patch
"fs": patch
"global-shortcut": patch
"http": patch
"localhost": patch
"log-plugin": patch
"notification": patch
"os": patch
"persisted-scope": patch
"positioner": patch
"process": patch
"shell": patch
"single-instance": patch
"sql": patch
"store": patch
"stronghold": patch
"updater": patch
"upload": patch
"websocket": patch
"window-state": patch
---
Update MSRV to 1.70.
+14 -8
View File
@@ -1,15 +1,22 @@
{
"tag": "alpha",
"changes": [
".changes/alpha.16.md",
".changes/api-alpha.9.md",
".changes/deep-link-initial-release.md",
".changes/dialog-async-message-dialog.md",
".changes/disable-window-controls-api-options.md",
".changes/disable-window-controls-api.md",
".changes/fix-docs-build.md",
".changes/fix-invoke-usage.md",
".changes/fix-permission-notification.md",
".changes/fix-updater-macos.md",
".changes/fix-window-state-api.md",
".changes/fs-wiret-binary-file.md",
".changes/global-shortcut-app-handle.md",
".changes/http-multipart-refactor.md",
".changes/http-plugin-refactor.md",
".changes/http-remove-cmd-property.md",
".changes/http-response.md",
".changes/msrv-1.70.md",
".changes/notification-init-script.md",
".changes/notification-revert-sound.md",
".changes/notification-sound.md",
@@ -18,22 +25,21 @@
".changes/persisted-scope-asset.md",
".changes/persisted-scope-glob.md",
".changes/positioner-tray-flag.md",
".changes/scanner-initial-release.md",
".changes/shell-command-apis.md",
".changes/shell-detached.md",
".changes/stronghold-arg-name.md",
".changes/stronghold-constructor.md",
".changes/tauri-alpha-15.md",
".changes/tauri-alpha.11.md",
".changes/tauri-alpha.12.md",
".changes/updater-nsis-admin.md",
".changes/updater-nsis.md",
".changes/updater-plugin-refactor.md",
".changes/updater-string-replace.md",
".changes/v2-alpha.md",
".changes/window-incognito.md",
".changes/window-is-focused.md",
".changes/window-plugin-refactor.md",
".changes/window-set-effects.md",
".changes/websocket-fix-arg-name.md",
".changes/window-state-decorated.md",
".changes/window-state-promise.md",
".changes/window-tap-drag-region-detection.md"
".changes/window-state-promise.md"
]
}
+6
View File
@@ -0,0 +1,6 @@
---
"barcode-scanner": major
"barcode-scanner-js": major
---
Initial release.
+6
View File
@@ -0,0 +1,6 @@
---
"window-state": patch
"persisted-scope": patch
---
Update to tauri@alpha.15.
-4
View File
@@ -1,6 +1,4 @@
---
"app": patch
"app-js": patch
"authenticator": patch
"authenticator-js": patch
"autostart": patch
@@ -44,8 +42,6 @@
"upload-js": patch
"websocket": patch
"websocket-js": patch
"window": patch
"window-js": patch
"window-state": patch
"window-state-js": patch
---
-2
View File
@@ -1,5 +1,4 @@
---
"app": patch
"authenticator": patch
"autostart": patch
"cli": patch
@@ -23,7 +22,6 @@
"updater": patch
"upload": patch
"websocket": patch
"window": patch
"window-state": patch
---
+5
View File
@@ -0,0 +1,5 @@
---
"updater": "patch"
---
The plugin now correctly replaces `arch`, `current_version` and `target` again.
-4
View File
@@ -1,6 +1,4 @@
---
"app": major
"app-js": major
"authenticator": major
"authenticator-js": major
"autostart": major
@@ -44,8 +42,6 @@
"upload-js": major
"websocket": major
"websocket-js": major
"window": major
"window-js": major
"window-state": major
"window-state-js": major
---
+5
View File
@@ -0,0 +1,5 @@
---
"websocket": patch
---
Fix argument name mismatch that caused issues when options where provided.
-5
View File
@@ -1,5 +0,0 @@
---
"window-js": "minor"
---
Add `incognito` window configuration option
-6
View File
@@ -1,6 +0,0 @@
---
"window": "minor:feat"
"window-js": "minor:feat"
---
Add `WebviewWindow.is_focused` and `WebviewWindow.getFocusedWindow` getters.
-10
View File
@@ -1,10 +0,0 @@
---
"window": "patch"
"window-js": "patch"
---
The window plugin is recieving a few changes to improve consistency and add new features:
- Removed `appWindow` variable from JS module, use `getCurrent` or `Window.getCurrent`.
- Removed `WindowManager`, `WebviewWindow` and `WebviewHandle` types and merged them into one `Window` type that matches the name of the rust window type.
- Added `Window.getCurrent` and `Window.getAll` which is a convenient method for `getCurrent` and `getAll` functions.
-6
View File
@@ -1,6 +0,0 @@
---
"window": "patch"
"window-js": "patch"
---
Added the `setEffects` and `clearEffects` API.
@@ -1,5 +0,0 @@
---
"window": "patch"
---
On macOS, fixed tapping on custom title bar doesn't maximize the window.
+2
View File
@@ -1,6 +1,8 @@
target
node_modules
dist
build/
dist-js
api-iife.js
init-iife.js
init.js
@@ -25,10 +25,6 @@ jobs:
id: filter
with:
filters: |
app:
- .github/workflows/check-generated-files.yml
- plugins/app/guest-js/**
- plugins/app/src/api-iife.js
authenticator:
- .github/workflows/check-generated-files.yml
- plugins/authenticator/guest-js/**
@@ -109,10 +105,6 @@ jobs:
- .github/workflows/check-generated-files.yml
- plugins/websocket/guest-js/**
- plugins/websocket/src/api-iife.js
window:
- .github/workflows/check-generated-files.yml
- plugins/window/guest-js/**
- plugins/window/src/api-iife.js
window-state:
- .github/workflows/check-generated-files.yml
- plugins/window-state/guest-js/**
-12
View File
@@ -41,9 +41,6 @@ jobs:
id: filter
with:
filters: |
tauri-plugin-app:
- .github/workflows/lint-rust.yml
- plugins/app/**
tauri-plugin-authenticator:
- .github/workflows/lint-rust.yml
- plugins/authenticator/**
@@ -116,9 +113,6 @@ jobs:
tauri-plugin-websocket:
- .github/workflows/lint-rust.yml
- plugins/websocket/**
tauri-plugin-window:
- .github/workflows/lint-rust.yml
- plugins/window/**
tauri-plugin-window-state:
- .github/workflows/lint-rust.yml
- plugins/window-state/**
@@ -155,10 +149,6 @@ jobs:
if: matrix.package != 'tauri-plugin-sql'
run: cargo clippy --package ${{ matrix.package }} --all-targets -- -D warnings
- name: clippy ${{ matrix.package }} --all-features
if: ${{ !contains(fromJSON('["tauri-plugin-http", "tauri-plugin-upload", "tauri-plugin-updater", "tauri-plugin-websocket", "tauri-plugin-sql"]'), matrix.package) }}
run: cargo clippy --package ${{ matrix.package }} --all-targets --all-features -- -D warnings
- name: clippy ${{ matrix.package }} mysql
if: matrix.package == 'tauri-plugin-sql'
run: cargo clippy --package ${{ matrix.package }} --all-targets --no-default-features --features mysql -- -D warnings
@@ -169,8 +159,6 @@ jobs:
fmt:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
+13 -40
View File
@@ -43,9 +43,6 @@ jobs:
id: filter
with:
filters: |
tauri-plugin-app:
- .github/workflows/test-rust.yml
- plugins/app/**
tauri-plugin-authenticator:
- .github/workflows/test-rust.yml
- plugins/authenticator/**
@@ -118,9 +115,6 @@ jobs:
tauri-plugin-websocket:
- .github/workflows/test-rust.yml
- plugins/websocket/**
tauri-plugin-window:
- .github/workflows/test-rust.yml
- plugins/window/**
tauri-plugin-window-state:
- .github/workflows/test-rust.yml
- plugins/window-state/**
@@ -136,31 +130,31 @@ jobs:
- {
target: x86_64-pc-windows-msvc,
os: windows-latest,
cross: false,
runner: 'cargo',
command: "test",
}
- {
target: x86_64-unknown-linux-gnu,
os: ubuntu-latest,
cross: false,
runner: 'cargo',
command: "test",
}
- {
target: x86_64-apple-darwin,
os: macos-latest,
cross: false,
runner: 'cargo',
command: "test",
}
- {
target: aarch64-apple-ios,
os: macos-latest,
cross: false,
runner: 'cargo',
command: "build",
}
- {
target: aarch64-linux-android,
os: ubuntu-latest,
cross: true,
runner: 'cross',
command: "build",
}
@@ -181,51 +175,30 @@ jobs:
echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
vcpkg install openssl:x64-windows-static-md
- uses: dtolnay/rust-toolchain@1.65.0
- uses: dtolnay/rust-toolchain@1.70.0
with:
targets: ${{ matrix.platform.target }}
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.package }}
key: cache-${{ matrix.package }}-${{ matrix.platform.target }}
- name: create dummy dist
working-directory: examples/api
run: mkdir dist
- name: Downgrade crates with MSRV conflict
# The --precise flag can only be used once per invocation.
run: |
cargo update -p time@0.3.24 --precise 0.3.23
- name: install cross
if: ${{ matrix.platform.runner == 'cross' }}
run: cargo install cross --git https://github.com/cross-rs/cross
- name: test ${{ matrix.package }}
if: matrix.package != 'tauri-plugin-sql'
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.platform.cross }}
command: ${{ matrix.platform.command }}
args: --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets
- name: test ${{ matrix.package }} --all-features
if: ${{ !contains(fromJSON('["tauri-plugin-http", "tauri-plugin-upload", "tauri-plugin-updater", "tauri-plugin-websocket", "tauri-plugin-sql"]'), matrix.package) }}
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.platform.cross }}
command: ${{ matrix.platform.command }}
args: --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --all-features
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets
- name: test ${{ matrix.package }} mysql
if: matrix.package == 'tauri-plugin-sql'
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.platform.cross }}
command: ${{ matrix.platform.command }}
args: --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features mysql
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features mysql
- name: test ${{ matrix.package }} postgres
if: matrix.package == 'tauri-plugin-sql'
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.platform.cross }}
command: ${{ matrix.platform.command }}
args: --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features postgres
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features postgres
+4 -1
View File
@@ -5,4 +5,7 @@ dist-js
pnpm-lock.yaml
Cargo.lock
.build
api-iife.js
build
api-iife.js
init-iife.js
intermediates/
+5 -1
View File
@@ -21,6 +21,8 @@ const ignore = [
"dist-js",
".svelte-kit",
"api-iife.js",
"init-iife.js",
".build",
];
async function checkFile(file) {
@@ -70,7 +72,9 @@ async function checkFile(file) {
async function check(src) {
const missingHeader = [];
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
for (const entry of fs.readdirSync(src, {
withFileTypes: true,
})) {
const p = path.join(src, entry.name);
if (entry.isSymbolicLink() || ignore.includes(entry.name)) {
Generated
+327 -172
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -1,12 +1,12 @@
[workspace]
members = ["plugins/*", "plugins/*/tests/*", "examples/*/src-tauri"]
members = ["plugins/*", "plugins/*/tests/*", "plugins/*/examples/*/src-tauri", "examples/*/src-tauri"]
resolver = "2"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
log = "0.4"
tauri = "2.0.0-alpha.12"
tauri-build = "2.0.0-alpha.8"
tauri = "2.0.0-alpha.16"
tauri-build = "2.0.0-alpha.10"
serde_json = "1"
thiserror = "1"
@@ -14,7 +14,7 @@ thiserror = "1"
edition = "2021"
authors = [ "Tauri Programme within The Commons Conservancy" ]
license = "Apache-2.0 OR MIT"
rust-version = "1.65"
rust-version = "1.70"
# default to small, optimized release binaries
[profile.release]
+1 -1
View File
@@ -16,4 +16,4 @@
| [websocket](plugins/websocket) | Open a WebSocket connection using a Rust client in JS. | ✅ | ✅ | ✅ | ? | ? |
| [window-state](plugins/window-state) | Persist window sizes and positions. | ✅ | ✅ | ✅ | ? | ? |
_This repo and all plugins require a Rust version of at least **1.65**_
_This repo and all plugins require a Rust version of at least **1.70**_
+24
View File
@@ -1,5 +1,29 @@
# Changelog
## \[2.0.0-alpha.4]
### Dependencies
- Upgraded to `barcode-scanner-js@2.0.0-alpha.1`
- Upgraded to `cli-js@2.0.0-alpha.2`
- Upgraded to `clipboard-manager-js@2.0.0-alpha.2`
- Upgraded to `dialog-js@2.0.0-alpha.2`
- Upgraded to `fs-js@2.0.0-alpha.2`
- Upgraded to `global-shortcut-js@2.0.0-alpha.2`
- Upgraded to `http-js@2.0.0-alpha.2`
- Upgraded to `log-js@2.0.0-alpha.2`
- Upgraded to `notification-js@2.0.0-alpha.2`
- Upgraded to `os-js@2.0.0-alpha.3`
- Upgraded to `process-js@2.0.0-alpha.2`
- Upgraded to `shell-js@2.0.0-alpha.2`
- Upgraded to `updater-js@2.0.0-alpha.2`
## \[2.0.0-alpha.3]
### Dependencies
- Upgraded to `barcode-scanner-js@2.0.0-alpha.0`
## \[2.0.0-alpha.2]
### Dependencies
+23 -24
View File
@@ -1,7 +1,7 @@
{
"name": "svelte-app",
"private": true,
"version": "2.0.0-alpha.2",
"version": "2.0.0-alpha.4",
"type": "module",
"scripts": {
"dev": "vite --clearScreen false",
@@ -9,31 +9,30 @@
"serve": "vite preview"
},
"dependencies": {
"@tauri-apps/api": "2.0.0-alpha.6",
"@tauri-apps/plugin-app": "2.0.0-alpha.1",
"@tauri-apps/plugin-cli": "2.0.0-alpha.1",
"@tauri-apps/plugin-clipboard-manager": "2.0.0-alpha.1",
"@tauri-apps/plugin-dialog": "2.0.0-alpha.1",
"@tauri-apps/plugin-fs": "2.0.0-alpha.1",
"@tauri-apps/plugin-global-shortcut": "2.0.0-alpha.1",
"@tauri-apps/plugin-http": "2.0.0-alpha.1",
"@tauri-apps/plugin-notification": "2.0.0-alpha.1",
"@tauri-apps/plugin-os": "2.0.0-alpha.2",
"@tauri-apps/plugin-process": "2.0.0-alpha.1",
"@tauri-apps/plugin-shell": "2.0.0-alpha.1",
"@tauri-apps/plugin-updater": "2.0.0-alpha.1",
"@tauri-apps/plugin-window": "2.0.0-alpha.1",
"@zerodevx/svelte-json-view": "1.0.5"
"@tauri-apps/api": "2.0.0-alpha.9",
"@tauri-apps/plugin-barcode-scanner": "2.0.0-alpha.1",
"@tauri-apps/plugin-cli": "2.0.0-alpha.2",
"@tauri-apps/plugin-clipboard-manager": "2.0.0-alpha.2",
"@tauri-apps/plugin-dialog": "2.0.0-alpha.2",
"@tauri-apps/plugin-fs": "2.0.0-alpha.2",
"@tauri-apps/plugin-global-shortcut": "2.0.0-alpha.2",
"@tauri-apps/plugin-http": "2.0.0-alpha.2",
"@tauri-apps/plugin-notification": "2.0.0-alpha.2",
"@tauri-apps/plugin-os": "2.0.0-alpha.3",
"@tauri-apps/plugin-process": "2.0.0-alpha.2",
"@tauri-apps/plugin-shell": "2.0.0-alpha.2",
"@tauri-apps/plugin-updater": "2.0.0-alpha.2",
"@zerodevx/svelte-json-view": "1.0.7"
},
"devDependencies": {
"@iconify-json/codicon": "^1.1.26",
"@iconify-json/ph": "^1.1.5",
"@sveltejs/vite-plugin-svelte": "^2.4.1",
"@tauri-apps/cli": "2.0.0-alpha.12",
"@unocss/extractor-svelte": "^0.53.1",
"@iconify-json/codicon": "^1.1.31",
"@iconify-json/ph": "^1.1.6",
"@sveltejs/vite-plugin-svelte": "^2.4.6",
"@tauri-apps/cli": "2.0.0-alpha.16",
"@unocss/extractor-svelte": "^0.56.5",
"internal-ip": "^8.0.0",
"svelte": "^3.59.1",
"unocss": "^0.53.1",
"vite": "^4.3.9"
"svelte": "^4.2.2",
"unocss": "^0.56.5",
"vite": "^4.5.0"
}
}
+24
View File
@@ -1,5 +1,29 @@
# Changelog
## \[2.0.0-alpha.6]
### Dependencies
- Upgraded to `log-plugin@2.0.0-alpha.3`
- Upgraded to `shell@2.0.0-alpha.3`
- Upgraded to `dialog@2.0.0-alpha.3`
- Upgraded to `notification@2.0.0-alpha.4`
- Upgraded to `updater@2.0.0-alpha.3`
- Upgraded to `global-shortcut@2.0.0-alpha.3`
- Upgraded to `barcode-scanner@2.0.0-alpha.1`
- Upgraded to `cli@2.0.0-alpha.3`
- Upgraded to `clipboard-manager@2.0.0-alpha.3`
- Upgraded to `fs@2.0.0-alpha.3`
- Upgraded to `http@2.0.0-alpha.4`
- Upgraded to `os@2.0.0-alpha.3`
- Upgraded to `process@2.0.0-alpha.3`
## \[2.0.0-alpha.5]
### Dependencies
- Upgraded to `barcode-scanner@2.0.0-alpha.0`
## \[2.0.0-alpha.4]
### Dependencies
+16 -15
View File
@@ -1,7 +1,7 @@
[package]
name = "api"
publish = false
version = "2.0.0-alpha.4"
version = "2.0.0-alpha.6"
description = "An example Tauri Application showcasing the api"
edition = "2021"
rust-version = { workspace = true }
@@ -18,17 +18,15 @@ serde_json = { workspace = true }
serde = { workspace = true }
tiny_http = "0.11"
log = { workspace = true }
tauri-plugin-app = { path = "../../../plugins/app", version = "2.0.0-alpha.2" }
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-alpha.2" }
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-alpha.2" }
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-alpha.2" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-alpha.2" }
tauri-plugin-http = { path = "../../../plugins/http", features = [ "multipart" ], version = "2.0.0-alpha.3" }
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-alpha.3", features = [ "windows7-compat" ] }
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-alpha.2" }
tauri-plugin-process = { path = "../../../plugins/process", version = "2.0.0-alpha.2" }
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-alpha.2" }
tauri-plugin-window = { path = "../../../plugins/window", version = "2.0.0-alpha.2", features = [ "devtools", "icon-ico", "icon-png" ] }
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-alpha.3" }
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-alpha.3" }
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-alpha.3" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-alpha.3" }
tauri-plugin-http = { path = "../../../plugins/http", features = [ "multipart" ], version = "2.0.0-alpha.4" }
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-alpha.4", features = [ "windows7-compat" ] }
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-alpha.3" }
tauri-plugin-process = { path = "../../../plugins/process", version = "2.0.0-alpha.3" }
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-alpha.3" }
[dependencies.tauri]
workspace = true
@@ -42,9 +40,12 @@ tauri-plugin-window = { path = "../../../plugins/window", version = "2.0.0-alpha
]
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-alpha.2" }
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-alpha.2" }
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-alpha.2" }
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-alpha.3" }
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-alpha.3" }
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-alpha.3" }
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-alpha.1" }
[target."cfg(target_os = \"windows\")".dependencies]
window-shadows = "0.2"
@@ -1,16 +1,6 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.api" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<style name="Theme.api" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Customize your theme here. -->
</style>
</resources>
@@ -1,16 +1,6 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.api" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<style name="Theme.api" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Customize your theme here. -->
</style>
</resources>
@@ -16,7 +16,7 @@ open class BuildTask : DefaultTask() {
@TaskAction
fun assemble() {
val executable = """pnpm""";
val executable = """node""";
try {
runTauriCli(executable)
} catch (e: Exception) {
@@ -32,7 +32,7 @@ open class BuildTask : DefaultTask() {
val rootDirRel = rootDirRel ?: throw GradleException("rootDirRel cannot be null")
val target = target ?: throw GradleException("target cannot be null")
val release = release ?: throw GradleException("release cannot be null")
val args = listOf("tauri", "android", "android-studio-script");
val args = listOf("../node_modules/.bin/../@tauri-apps/cli/tauri.js", "android", "android-studio-script");
project.exec {
workingDir(File(project.projectDir, rootDirRel))
@@ -0,0 +1,3 @@
xcuserdata/
build/
Externals/
Binary file not shown.

After

Width:  |  Height:  |  Size: 844 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,116 @@
{
"images": [
{
"size": "20x20",
"idiom": "iphone",
"filename": "AppIcon-20x20@2x.png",
"scale": "2x"
},
{
"size": "20x20",
"idiom": "iphone",
"filename": "AppIcon-20x20@3x.png",
"scale": "3x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "AppIcon-29x29@2x-1.png",
"scale": "2x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "AppIcon-29x29@3x.png",
"scale": "3x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "AppIcon-40x40@2x.png",
"scale": "2x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "AppIcon-40x40@3x.png",
"scale": "3x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "AppIcon-60x60@2x.png",
"scale": "2x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "AppIcon-60x60@3x.png",
"scale": "3x"
},
{
"size": "20x20",
"idiom": "ipad",
"filename": "AppIcon-20x20@1x.png",
"scale": "1x"
},
{
"size": "20x20",
"idiom": "ipad",
"filename": "AppIcon-20x20@2x-1.png",
"scale": "2x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "AppIcon-29x29@1x.png",
"scale": "1x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "AppIcon-29x29@2x.png",
"scale": "2x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "AppIcon-40x40@1x.png",
"scale": "1x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "AppIcon-40x40@2x-1.png",
"scale": "2x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "AppIcon-76x76@1x.png",
"scale": "1x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "AppIcon-76x76@2x.png",
"scale": "2x"
},
{
"size": "83.5x83.5",
"idiom": "ipad",
"filename": "AppIcon-83.5x83.5@2x.png",
"scale": "2x"
},
{
"size": "1024x1024",
"idiom": "ios-marketing",
"filename": "AppIcon-512@2x.png",
"scale": "1x"
}
],
"info": {
"version": 1,
"author": "xcode"
}
}
@@ -0,0 +1,6 @@
{
"info": {
"version": 1,
"author": "xcode"
}
}
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>development</string>
</dict>
</plist>
+21
View File
@@ -0,0 +1,21 @@
# Uncomment the next line to define a global platform for your project
target 'api_iOS' do
platform :ios, '13.0'
# Pods for api_iOS
end
target 'api_macOS' do
platform :osx, '11.0'
# Pods for api_macOS
end
# Delete the deployment target for iOS and macOS, causing it to be inherited from the Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
config.build_settings.delete 'MACOSX_DEPLOYMENT_TARGET'
end
end
end
@@ -0,0 +1,8 @@
#pragma once
namespace ffi {
extern "C" {
void start_app();
}
}
@@ -0,0 +1,6 @@
#include "bindings/bindings.h"
int main(int argc, char * argv[]) {
ffi::start_app();
return 0;
}
@@ -0,0 +1,462 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objects = {
/* Begin PBXBuildFile section */
2ECFC1BC47D948875C8CEC41 /* libapi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FC53D4128D7F74E4E6338455 /* libapi.a */; };
3043432501C9BC2DB6B4CB95 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71EB788DE4662CFC0D97F567 /* CoreGraphics.framework */; };
328B4ADB3700C1873BEB7B10 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 90D3B673AFAB8D8AB561F616 /* main.mm */; };
6F379F15DA085785BA2624D4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6B7E79E23E646BA7968B457C /* Assets.xcassets */; };
9AADB041D25772D04E543F15 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62601E25FA39E62BE119B74D /* Metal.framework */; };
9DDA3BE70DD0E4013973FE38 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6082E363D51372A7658C351 /* UIKit.framework */; };
AFA0CA286325FD7A34968CA2 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 384966E551417F94A02D2706 /* Security.framework */; };
B60763BD194DFACA215EC7DA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC377692DC31A070A0188C9D /* QuartzCore.framework */; };
C6D80743F168BDF017B7769E /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59CFE20DCF760BE67D9CE3D6 /* WebKit.framework */; };
DFFF888045C8D9D9FB69E8FD /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 338E66700FD330B99D434DD7 /* MetalKit.framework */; };
F86717F05E27C72C9FA1FB27 /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 74A8FDFB350B966F5AAD4A24 /* assets */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
0E96CE07CD20273DD46BF325 /* main.rs */ = {isa = PBXFileReference; path = main.rs; sourceTree = "<group>"; };
1C1AB1B414CA2795AFBEDDB9 /* tray.rs */ = {isa = PBXFileReference; path = tray.rs; sourceTree = "<group>"; };
2F63E2AA460089BB58D40C79 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
338E66700FD330B99D434DD7 /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
384966E551417F94A02D2706 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
59CFE20DCF760BE67D9CE3D6 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
5AC703CEBA41A121596066F3 /* api_iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = api_iOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
62601E25FA39E62BE119B74D /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
6B7E79E23E646BA7968B457C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
71EB788DE4662CFC0D97F567 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
74A8FDFB350B966F5AAD4A24 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = SOURCE_ROOT; };
785D025E9542F7E098BF22B5 /* lib.rs */ = {isa = PBXFileReference; path = lib.rs; sourceTree = "<group>"; };
879941AE3DAA14534BBC6391 /* api_iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = api_iOS.entitlements; sourceTree = "<group>"; };
90D3B673AFAB8D8AB561F616 /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
B6082E363D51372A7658C351 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
DC377692DC31A070A0188C9D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
EC8C7948C50C3C9B5D96CB61 /* bindings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bindings.h; sourceTree = "<group>"; };
F835F52713CE8F029D5D252C /* cmd.rs */ = {isa = PBXFileReference; path = cmd.rs; sourceTree = "<group>"; };
FC53D4128D7F74E4E6338455 /* libapi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libapi.a; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
11E18DCDB3ADFE87C18915EF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2ECFC1BC47D948875C8CEC41 /* libapi.a in Frameworks */,
3043432501C9BC2DB6B4CB95 /* CoreGraphics.framework in Frameworks */,
9AADB041D25772D04E543F15 /* Metal.framework in Frameworks */,
DFFF888045C8D9D9FB69E8FD /* MetalKit.framework in Frameworks */,
B60763BD194DFACA215EC7DA /* QuartzCore.framework in Frameworks */,
AFA0CA286325FD7A34968CA2 /* Security.framework in Frameworks */,
9DDA3BE70DD0E4013973FE38 /* UIKit.framework in Frameworks */,
C6D80743F168BDF017B7769E /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
0677CEAF1F282F38CBA0F140 = {
isa = PBXGroup;
children = (
74A8FDFB350B966F5AAD4A24 /* assets */,
6B7E79E23E646BA7968B457C /* Assets.xcassets */,
F2116A6428EED18BE2A07E2B /* api_iOS */,
86D903732E10FAC4D300E8DF /* Externals */,
7A9A7AC155D9E22E54D6D847 /* Sources */,
CF9AA87D2F6E9C389B7AB70B /* src */,
10C9FC3FA3E12D6A4A67999D /* Frameworks */,
4AC51E67B71E27F15B02C5CD /* Products */,
);
sourceTree = "<group>";
};
07051859D6E2D8109C8FB128 /* bindings */ = {
isa = PBXGroup;
children = (
EC8C7948C50C3C9B5D96CB61 /* bindings.h */,
);
path = bindings;
sourceTree = "<group>";
};
10C9FC3FA3E12D6A4A67999D /* Frameworks */ = {
isa = PBXGroup;
children = (
71EB788DE4662CFC0D97F567 /* CoreGraphics.framework */,
FC53D4128D7F74E4E6338455 /* libapi.a */,
62601E25FA39E62BE119B74D /* Metal.framework */,
338E66700FD330B99D434DD7 /* MetalKit.framework */,
DC377692DC31A070A0188C9D /* QuartzCore.framework */,
384966E551417F94A02D2706 /* Security.framework */,
B6082E363D51372A7658C351 /* UIKit.framework */,
59CFE20DCF760BE67D9CE3D6 /* WebKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
4AC51E67B71E27F15B02C5CD /* Products */ = {
isa = PBXGroup;
children = (
5AC703CEBA41A121596066F3 /* api_iOS.app */,
);
name = Products;
sourceTree = "<group>";
};
7A9A7AC155D9E22E54D6D847 /* Sources */ = {
isa = PBXGroup;
children = (
A3574F52DBC5463B9C3D043D /* api */,
);
path = Sources;
sourceTree = "<group>";
};
86D903732E10FAC4D300E8DF /* Externals */ = {
isa = PBXGroup;
children = (
);
path = Externals;
sourceTree = "<group>";
};
A3574F52DBC5463B9C3D043D /* api */ = {
isa = PBXGroup;
children = (
90D3B673AFAB8D8AB561F616 /* main.mm */,
07051859D6E2D8109C8FB128 /* bindings */,
);
path = api;
sourceTree = "<group>";
};
CF9AA87D2F6E9C389B7AB70B /* src */ = {
isa = PBXGroup;
children = (
F835F52713CE8F029D5D252C /* cmd.rs */,
785D025E9542F7E098BF22B5 /* lib.rs */,
0E96CE07CD20273DD46BF325 /* main.rs */,
1C1AB1B414CA2795AFBEDDB9 /* tray.rs */,
);
name = src;
path = ../../src;
sourceTree = "<group>";
};
F2116A6428EED18BE2A07E2B /* api_iOS */ = {
isa = PBXGroup;
children = (
879941AE3DAA14534BBC6391 /* api_iOS.entitlements */,
2F63E2AA460089BB58D40C79 /* Info.plist */,
);
path = api_iOS;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
54DC6E273C78071F3BA12EF3 /* api_iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 01CBC40275452376830D79B1 /* Build configuration list for PBXNativeTarget "api_iOS" */;
buildPhases = (
FF948951157DE71465B5BD5F /* Build Rust Code */,
71E73CC9AB5F1323EC1F6365 /* Sources */,
CA2BEC44B6EDA1F21B6155CD /* Resources */,
11E18DCDB3ADFE87C18915EF /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = api_iOS;
productName = api_iOS;
productReference = 5AC703CEBA41A121596066F3 /* api_iOS.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
9BC88C3717DA5D4B78A51C15 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1200;
TargetAttributes = {
54DC6E273C78071F3BA12EF3 = {
DevelopmentTeam = Q93MBH6S2F;
};
};
};
buildConfigurationList = 8FA67D0F928A09CD639137D1 /* Build configuration list for PBXProject "api" */;
compatibilityVersion = "Xcode 11.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
Base,
en,
);
mainGroup = 0677CEAF1F282F38CBA0F140;
projectDirPath = "";
projectRoot = "";
targets = (
54DC6E273C78071F3BA12EF3 /* api_iOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
CA2BEC44B6EDA1F21B6155CD /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6F379F15DA085785BA2624D4 /* Assets.xcassets in Resources */,
F86717F05E27C72C9FA1FB27 /* assets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
FF948951157DE71465B5BD5F /* Build Rust Code */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Build Rust Code";
outputFileListPaths = (
);
outputPaths = (
"$(SRCROOT)/target/aarch64-apple-ios/${CONFIGURATION}/deps/libapi.a",
"$(SRCROOT)/target/x86_64-apple-ios/${CONFIGURATION}/deps/libapi.a",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "node ../../../node_modules/.bin/../@tauri-apps/cli/tauri.js ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths \"${FRAMEWORK_SEARCH_PATHS:?}\" --header-search-paths \"${HEADER_SEARCH_PATHS:?}\" --gcc-preprocessor-definitions \"${GCC_PREPROCESSOR_DEFINITIONS:-}\" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
71E73CC9AB5F1323EC1F6365 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
328B4ADB3700C1873BEB7B10 /* main.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
A83F70B4C02DD0222038C7F1 /* release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
};
name = release;
};
B6AD77E490F315562F75D3D7 /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"DEBUG=1",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
};
name = debug;
};
BF284FE6E7AE0C8DDCCE398B /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = (
arm64,
"arm64-sim",
);
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = api_iOS/api_iOS.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = Q93MBH6S2F;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\".\"",
);
INFOPLIST_FILE = api_iOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
"LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = "$(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api;
PRODUCT_NAME = "Tauri API";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = "arm64 arm64-sim";
};
name = debug;
};
DB0E254D0FD84970B57F6410 /* release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = (
arm64,
"arm64-sim",
);
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = api_iOS/api_iOS.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = Q93MBH6S2F;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\".\"",
);
INFOPLIST_FILE = api_iOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
"LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = "$(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api;
PRODUCT_NAME = "Tauri API";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = "arm64 arm64-sim";
};
name = release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
01CBC40275452376830D79B1 /* Build configuration list for PBXNativeTarget "api_iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BF284FE6E7AE0C8DDCCE398B /* debug */,
DB0E254D0FD84970B57F6410 /* release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = debug;
};
8FA67D0F928A09CD639137D1 /* Build configuration list for PBXProject "api" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B6AD77E490F315562F75D3D7 /* debug */,
A83F70B4C02DD0222038C7F1 /* release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = debug;
};
/* End XCConfigurationList section */
};
rootObject = 9BC88C3717DA5D4B78A51C15 /* Project object */;
}
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildSystemType</key>
<string>Original</string>
<key>DisableBuildSystemDeprecationDiagnostic</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1200"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
runPostActionsOnFailure = "NO">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "54DC6E273C78071F3BA12EF3"
BuildableName = "api_iOS.app"
BlueprintName = "api_iOS"
ReferencedContainer = "container:api.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "NO"
onlyGenerateCoverageForSpecifiedTargets = "NO">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "54DC6E273C78071F3BA12EF3"
BuildableName = "api_iOS.app"
BlueprintName = "api_iOS"
ReferencedContainer = "container:api.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
</Testables>
<CommandLineArguments>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "RUST_BACKTRACE"
value = "full"
isEnabled = "YES">
</EnvironmentVariable>
<EnvironmentVariable
key = "RUST_LOG"
value = "info"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
</TestAction>
<LaunchAction
buildConfiguration = "debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "54DC6E273C78071F3BA12EF3"
BuildableName = "api_iOS.app"
BlueprintName = "api_iOS"
ReferencedContainer = "container:api.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "RUST_BACKTRACE"
value = "full"
isEnabled = "YES">
</EnvironmentVariable>
<EnvironmentVariable
key = "RUST_LOG"
value = "info"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
</LaunchAction>
<ProfileAction
buildConfiguration = "release"
shouldUseLaunchSchemeArgsEnv = "NO"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "54DC6E273C78071F3BA12EF3"
BuildableName = "api_iOS.app"
BlueprintName = "api_iOS"
ReferencedContainer = "container:api.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "RUST_BACKTRACE"
value = "full"
isEnabled = "YES">
</EnvironmentVariable>
<EnvironmentVariable
key = "RUST_LOG"
value = "info"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.0.0</string>
<key>CFBundleVersion</key>
<string>2.0.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
<string>metal</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
@@ -0,0 +1,88 @@
name: api
options:
bundleIdPrefix: com.tauri
deploymentTarget:
iOS: 13.0
fileGroups: [../../src]
configs:
debug: debug
release: release
settingGroups:
app:
base:
PRODUCT_NAME: Tauri API
PRODUCT_BUNDLE_IDENTIFIER: com.tauri.api
DEVELOPMENT_TEAM: Q93MBH6S2F
targetTemplates:
app:
type: application
sources:
- path: Sources
scheme:
environmentVariables:
RUST_BACKTRACE: full
RUST_LOG: info
settings:
groups: [app]
targets:
api_iOS:
type: application
platform: iOS
sources:
- path: Sources
- path: Assets.xcassets
- path: Externals
- path: api_iOS
- path: assets
buildPhase: resources
type: folder
info:
path: api_iOS/Info.plist
properties:
LSRequiresIPhoneOS: true
UILaunchStoryboardName: LaunchScreen
UIRequiredDeviceCapabilities: [arm64, metal]
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
CFBundleShortVersionString: 2.0.0
CFBundleVersion: 2.0.0
entitlements:
path: api_iOS/api_iOS.entitlements
scheme:
environmentVariables:
RUST_BACKTRACE: full
RUST_LOG: info
settings:
base:
ENABLE_BITCODE: false
ARCHS: [arm64, arm64-sim]
VALID_ARCHS: arm64 arm64-sim
LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
LIBRARY_SEARCH_PATHS[arch=arm64-sim]: $(inherited) $(PROJECT_DIR)/Externals/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true
groups: [app]
dependencies:
- framework: libapi.a
embed: false
- sdk: CoreGraphics.framework
- sdk: Metal.framework
- sdk: MetalKit.framework
- sdk: QuartzCore.framework
- sdk: Security.framework
- sdk: UIKit.framework
- sdk: WebKit.framework
preBuildScripts:
- script: node ../../../node_modules/.bin/../@tauri-apps/cli/tauri.js ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths "${FRAMEWORK_SEARCH_PATHS:?}" --header-search-paths "${HEADER_SEARCH_PATHS:?}" --gcc-preprocessor-definitions "${GCC_PREPROCESSOR_DEFINITIONS:-}" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}
name: Build Rust Code
basedOnDependencyAnalysis: false
outputFiles:
- $(SRCROOT)/target/aarch64-apple-ios/${CONFIGURATION}/deps/libapi.a
- $(SRCROOT)/target/x86_64-apple-ios/${CONFIGURATION}/deps/libapi.a
+4 -2
View File
@@ -31,7 +31,6 @@ pub fn run() {
.level(log::LevelFilter::Info)
.build(),
)
.plugin(tauri_plugin_app::init())
.plugin(tauri_plugin_fs::init())
.plugin(tauri_plugin_clipboard_manager::init())
.plugin(tauri_plugin_dialog::init())
@@ -40,7 +39,6 @@ pub fn run() {
.plugin(tauri_plugin_os::init())
.plugin(tauri_plugin_process::init())
.plugin(tauri_plugin_shell::init())
.plugin(tauri_plugin_window::init())
.setup(move |app| {
#[cfg(desktop)]
{
@@ -51,6 +49,10 @@ pub fn run() {
app.handle()
.plugin(tauri_plugin_updater::Builder::new().build())?;
}
#[cfg(mobile)]
{
app.handle().plugin(tauri_plugin_barcode_scanner::init())?;
}
let mut window_builder = WindowBuilder::new(app, "main", WindowUrl::default());
#[cfg(desktop)]
+1 -1
View File
@@ -101,7 +101,7 @@ pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
_ => {}
})
.on_tray_event(|tray, event| {
.on_tray_icon_event(|tray, event| {
if event.click_type == ClickType::Left {
let app = tray.app_handle();
if let Some(window) = app.get_window("main") {
+3 -3
View File
@@ -124,10 +124,10 @@
"security": {
"csp": {
"default-src": "'self' customprotocol: asset:",
"connect-src": "ipc: https://ipc.localhost",
"connect-src": "ipc: http://ipc.localhost",
"font-src": ["https://fonts.gstatic.com"],
"img-src": "'self' asset: https://asset.localhost blob: data:",
"style-src": "'unsafe-inline' 'self' https://fonts.googleapis.com"
"img-src": "'self' asset: http://asset.localhost blob: data:",
"style-src": "'unsafe-inline' 'self' http://fonts.googleapis.com"
},
"freezePrototype": true,
"assetProtocol": {
+8 -13
View File
@@ -1,7 +1,7 @@
<script>
import { writable } from "svelte/store";
import { open } from "@tauri-apps/plugin-shell";
import { getCurrent } from "@tauri-apps/plugin-window";
import { getCurrent } from "@tauri-apps/api/window";
import * as os from "@tauri-apps/plugin-os";
import Welcome from "./views/Welcome.svelte";
@@ -11,13 +11,12 @@
import FileSystem from "./views/FileSystem.svelte";
import Http from "./views/Http.svelte";
import Notifications from "./views/Notifications.svelte";
import Window from "./views/Window.svelte";
import Shortcuts from "./views/Shortcuts.svelte";
import Shell from "./views/Shell.svelte";
import Updater from "./views/Updater.svelte";
import Clipboard from "./views/Clipboard.svelte";
import WebRTC from "./views/WebRTC.svelte";
import App from "./views/App.svelte";
import Scanner from "./views/Scanner.svelte";
import { onMount } from "svelte";
import { ask } from "@tauri-apps/plugin-dialog";
@@ -78,16 +77,6 @@
component: Notifications,
icon: "i-codicon-bell-dot",
},
!isMobile && {
label: "App",
component: App,
icon: "i-codicon-hubot",
},
!isMobile && {
label: "Window",
component: Window,
icon: "i-codicon-window",
},
!isMobile && {
label: "Shortcuts",
component: Shortcuts,
@@ -113,6 +102,11 @@
component: WebRTC,
icon: "i-ph-broadcast",
},
isMobile && {
label: "Scanner",
component: Scanner,
icon: "i-ph-scan",
},
];
let selected = views[0];
@@ -444,6 +438,7 @@
</aside>
<main
class="flex-1 bg-primary dark:bg-darkPrimary transition-transform transition-colors-250 grid grid-rows-[2fr_auto]"
class:transparent={isMobile}
>
<div class="px-5 overflow-hidden grid grid-rows-[auto_1fr]">
<h1>{selected.label}</h1>
+4
View File
@@ -55,3 +55,7 @@ body {
#console {
padding-bottom: calc(env(safe-area-inset-bottom) + 24px);
}
.transparent {
background-color: transparent;
}
-33
View File
@@ -1,33 +0,0 @@
<script>
import { show, hide } from "@tauri-apps/plugin-app";
export let onMessage;
function showApp() {
hideApp()
.then(() => {
setTimeout(() => {
show()
.then(() => onMessage("Shown app"))
.catch(onMessage);
}, 2000);
})
.catch(onMessage);
}
function hideApp() {
return hide()
.then(() => onMessage("Hide app"))
.catch(onMessage);
}
</script>
<div>
<button
class="btn"
id="show"
title="Hides and shows the app after 2 seconds"
on:click={showApp}>Show</button
>
<button class="btn" id="hide" on:click={hideApp}>Hide</button>
</div>
+2 -2
View File
@@ -1,6 +1,6 @@
<script>
import { getCurrent } from "@tauri-apps/plugin-window";
import { invoke } from "@tauri-apps/api/tauri";
import { getCurrent } from "@tauri-apps/api/window";
import { invoke } from "@tauri-apps/api/primitives";
import { onMount, onDestroy } from "svelte";
const appWindow = getCurrent();
+1 -1
View File
@@ -5,7 +5,7 @@
readDir,
Dir,
} from "@tauri-apps/plugin-fs";
import { convertFileSrc } from "@tauri-apps/api/tauri";
import { convertFileSrc } from "@tauri-apps/api/primitives";
export let onMessage;
export let insecureRenderHtml;
+155
View File
@@ -0,0 +1,155 @@
<script>
import { scan, checkPermissions, requestPermissions, Format, cancel } from "@tauri-apps/plugin-barcode-scanner";
export let onMessage;
let scanning = false;
let windowed = true;
let formats = [Format.QRCode];
const supportedFormats = [Format.QRCode, Format.EAN13];
async function startScan() {
let permission = await checkPermissions();
if (permission === 'prompt') {
permission = await requestPermissions();
}
if (permission === 'granted') {
scanning = true;
scan({ windowed, formats })
.then((res) => {
scanning = false;
onMessage(res);
})
.catch((error) => {
scanning = false;
onMessage(error);
});
} else {
onMessage('Permission denied')
}
}
async function cancelScan() {
await cancel();
scanning = false;
onMessage("cancelled");
}
</script>
<div class="full-height">
<div class:invisible={scanning}>
<div>
<input type="checkbox" id="scanner-windowed" bind:checked={windowed} />
<label for="scanner-windowed">Windowed</label>
</div>
<div>
<select class="input" id="format" multiple bind:value={formats}>
{#each supportedFormats as f}
<option value={f}>{f}</option>
{/each}
</select>
</div>
<button class="btn" type="button" on:click={startScan}>Scan</button>
</div>
<div class="scanning full-height" class:invisible={!scanning}>
<div class="scanner-background">
<!-- this background simulates the camera view -->
</div>
<div class="container full-height">
<div class="barcode-scanner--area--container">
<div class="relative">
<p>Aim your camera at a QR code</p>
<button class="btn" type="button" on:click={cancelScan}>Cancel</button>
</div>
<div class="square surround-cover">
<div class="barcode-scanner--area--outer surround-cover">
<div class="barcode-scanner--area--inner" />
</div>
</div>
</div>
</div>
</div>
</div>
<style>
.invisible {
display: none;
}
.full-height {
height: 100%;
}
p {
color: #fff;
font-family: sans-serif;
text-align: center;
font-weight: 600;
}
.container {
width: 100%;
height: 100%;
overflow: hidden;
}
.container {
display: flex;
}
.relative {
position: relative;
display: flex;
flex-direction: row;
justify-content: space-between;
z-index: 1;
}
.square {
width: 100%;
position: relative;
overflow: hidden;
transition: 0.3s;
}
.square:after {
content: "";
top: 0;
display: block;
padding-bottom: 100%;
}
.square > div {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
.surround-cover {
box-shadow: 0 0 0 99999px rgba(0, 0, 0, 0.5);
}
.barcode-scanner--area--container {
width: 80%;
max-width: min(500px, 80vh);
margin: auto;
}
.barcode-scanner--area--outer {
display: flex;
border-radius: 1em;
}
.barcode-scanner--area--inner {
width: 100%;
margin: 1rem;
border: 2px solid #fff;
box-shadow: 0px 0px 2px 1px rgb(0 0 0 / 0.5),
inset 0px 0px 2px 1px rgb(0 0 0 / 0.5);
border-radius: 1rem;
}
.scanner-background {
background: linear-gradient(45deg, #673ab7, transparent);
background-position: 45% 50%;
background-size: cover;
background-repeat: no-repeat;
}
</style>
+1 -1
View File
@@ -1,5 +1,5 @@
<script>
import { getName, getVersion, getTauriVersion } from "@tauri-apps/plugin-app";
import { getName, getVersion, getTauriVersion } from "@tauri-apps/api/app";
import { relaunch, exit } from "@tauri-apps/plugin-process";
let version = "1.0.0";
-615
View File
@@ -1,615 +0,0 @@
<script>
import {
getCurrent,
LogicalSize,
UserAttentionType,
PhysicalSize,
PhysicalPosition,
Effect,
EffectState,
Window
} from "@tauri-apps/plugin-window";
import { open as openDialog } from "@tauri-apps/plugin-dialog";
import { open } from "@tauri-apps/plugin-shell";
const appWindow = getCurrent();
let selectedWindow = appWindow.label;
const windowMap = {
[appWindow.label]: appWindow,
};
const cursorIconOptions = [
"default",
"crosshair",
"hand",
"arrow",
"move",
"text",
"wait",
"help",
"progress",
// something cannot be done
"notAllowed",
"contextMenu",
"cell",
"verticalText",
"alias",
"copy",
"noDrop",
// something can be grabbed
"grab",
/// something is grabbed
"grabbing",
"allScroll",
"zoomIn",
"zoomOut",
// edge is to be moved
"eResize",
"nResize",
"neResize",
"nwResize",
"sResize",
"seResize",
"swResize",
"wResize",
"ewResize",
"nsResize",
"neswResize",
"nwseResize",
"colResize",
"rowResize",
];
const windowsEffects = ["mica", "blur", "acrylic"];
const isWindows = navigator.appVersion.includes("windows");
const isMacOS = navigator.appVersion.includes("macos");
let effectOptions = isWindows
? windowsEffects
: Object.keys(Effect)
.map((effect) => Effect[effect])
.filter((e) => !windowsEffects.includes(e));
const effectStateOptions = Object.keys(EffectState).map(
(state) => EffectState[state]
);
export let onMessage;
const mainEl = document.querySelector("main");
let newWindowLabel;
let urlValue = "https://tauri.app";
let resizable = true;
let maximizable = true;
let minimizable = true;
let closable = true;
let maximized = false;
let decorations = true;
let alwaysOnTop = false;
let contentProtected = true;
let fullscreen = false;
let width = null;
let height = null;
let minWidth = null;
let minHeight = null;
let maxWidth = null;
let maxHeight = null;
let x = null;
let y = null;
let scaleFactor = 1;
let innerPosition = new PhysicalPosition(x, y);
let outerPosition = new PhysicalPosition(x, y);
let innerSize = new PhysicalSize(width, height);
let outerSize = new PhysicalSize(width, height);
let resizeEventUnlisten;
let moveEventUnlisten;
let cursorGrab = false;
let cursorVisible = true;
let cursorX = null;
let cursorY = null;
let cursorIcon = "default";
let cursorIgnoreEvents = false;
let windowTitle = "Awesome Tauri Example!";
let effects = [];
let selectedEffect;
let effectState;
let effectRadius;
let effectR, effectG, effectB, effectA;
function openUrl() {
open(urlValue);
}
function setTitle_() {
windowMap[selectedWindow].setTitle(windowTitle);
}
function hide_() {
windowMap[selectedWindow].hide();
setTimeout(windowMap[selectedWindow].show, 2000);
}
function minimize_() {
windowMap[selectedWindow].minimize();
setTimeout(windowMap[selectedWindow].unminimize, 2000);
}
function getIcon() {
openDialog({
multiple: false,
}).then((path) => {
if (typeof path === "string") {
windowMap[selectedWindow].setIcon(path);
}
});
}
function createWindow() {
if (!newWindowLabel) return;
const webview = new Window(newWindowLabel);
windowMap[newWindowLabel] = webview;
webview.once("tauri://error", function () {
onMessage("Error creating new webview");
});
}
function loadWindowSize() {
windowMap[selectedWindow].innerSize().then((response) => {
innerSize = response;
width = innerSize.width;
height = innerSize.height;
});
windowMap[selectedWindow].outerSize().then((response) => {
outerSize = response;
});
}
function loadWindowPosition() {
windowMap[selectedWindow].innerPosition().then((response) => {
innerPosition = response;
});
windowMap[selectedWindow].outerPosition().then((response) => {
outerPosition = response;
x = outerPosition.x;
y = outerPosition.y;
});
}
async function addWindowEventListeners(window) {
if (!window) return;
if (resizeEventUnlisten) {
resizeEventUnlisten();
}
if (moveEventUnlisten) {
moveEventUnlisten();
}
moveEventUnlisten = await window.listen("tauri://move", loadWindowPosition);
resizeEventUnlisten = await window.listen("tauri://resize", loadWindowSize);
}
async function requestUserAttention_() {
await windowMap[selectedWindow].minimize();
await windowMap[selectedWindow].requestUserAttention(
UserAttentionType.Critical
);
await new Promise((resolve) => setTimeout(resolve, 3000));
await windowMap[selectedWindow].requestUserAttention(null);
}
async function addEffect() {
if (!effects.includes(selectedEffect)) {
effects = [...effects, selectedEffect];
}
const payload = {
effects,
state: effectState,
radius: effectRadius,
};
if (
Number.isInteger(effectR) &&
Number.isInteger(effectG) &&
Number.isInteger(effectB) &&
Number.isInteger(effectA)
) {
payload.color = [effectR, effectG, effectB, effectA];
}
mainEl.classList.remove("bg-primary");
mainEl.classList.remove("dark:bg-darkPrimary");
await windowMap[selectedWindow].clearEffects();
await windowMap[selectedWindow].setEffects(payload);
}
async function clearEffects() {
effects = [];
await windowMap[selectedWindow].clearEffects();
mainEl.classList.add("bg-primary");
mainEl.classList.add("dark:bg-darkPrimary");
}
$: {
windowMap[selectedWindow];
loadWindowPosition();
loadWindowSize();
}
$: windowMap[selectedWindow]?.setResizable(resizable);
$: windowMap[selectedWindow]?.setMaximizable(maximizable);
$: windowMap[selectedWindow]?.setMinimizable(minimizable);
$: windowMap[selectedWindow]?.setClosable(closable);
$: maximized
? windowMap[selectedWindow]?.maximize()
: windowMap[selectedWindow]?.unmaximize();
$: windowMap[selectedWindow]?.setDecorations(decorations);
$: windowMap[selectedWindow]?.setAlwaysOnTop(alwaysOnTop);
$: windowMap[selectedWindow]?.setContentProtected(contentProtected);
$: windowMap[selectedWindow]?.setFullscreen(fullscreen);
$: width &&
height &&
windowMap[selectedWindow]?.setSize(new PhysicalSize(width, height));
$: minWidth && minHeight
? windowMap[selectedWindow]?.setMinSize(
new LogicalSize(minWidth, minHeight)
)
: windowMap[selectedWindow]?.setMinSize(null);
$: maxWidth > 800 && maxHeight > 400
? windowMap[selectedWindow]?.setMaxSize(
new LogicalSize(maxWidth, maxHeight)
)
: windowMap[selectedWindow]?.setMaxSize(null);
$: x !== null &&
y !== null &&
windowMap[selectedWindow]?.setPosition(new PhysicalPosition(x, y));
$: windowMap[selectedWindow]
?.scaleFactor()
.then((factor) => (scaleFactor = factor));
$: addWindowEventListeners(windowMap[selectedWindow]);
$: windowMap[selectedWindow]?.setCursorGrab(cursorGrab);
$: windowMap[selectedWindow]?.setCursorVisible(cursorVisible);
$: windowMap[selectedWindow]?.setCursorIcon(cursorIcon);
$: cursorX !== null &&
cursorY !== null &&
windowMap[selectedWindow]?.setCursorPosition(
new PhysicalPosition(cursorX, cursorY)
);
$: windowMap[selectedWindow]?.setIgnoreCursorEvents(cursorIgnoreEvents);
</script>
<div class="flex flex-col children:grow gap-2">
<div class="flex gap-1">
<input
class="input grow"
type="text"
placeholder="New Window label.."
bind:value={newWindowLabel}
/>
<button class="btn" on:click={createWindow}>New window</button>
</div>
<br />
{#if Object.keys(windowMap).length >= 1}
<span class="font-700 text-sm">Selected window:</span>
<select class="input" bind:value={selectedWindow}>
<option value="" disabled selected>Choose a window...</option>
{#each Object.keys(windowMap) as label}
<option value={label}>{label}</option>
{/each}
</select>
{/if}
{#if windowMap[selectedWindow]}
<br />
<div class="flex flex-wrap gap-2">
<button
class="btn"
title="Unminimizes after 2 seconds"
on:click={() => windowMap[selectedWindow].center()}
>
Center
</button>
<button
class="btn"
title="Unminimizes after 2 seconds"
on:click={minimize_}
>
Minimize
</button>
<button
class="btn"
title="Visible again after 2 seconds"
on:click={hide_}
>
Hide
</button>
<button class="btn" on:click={getIcon}> Change icon </button>
<button
class="btn"
on:click={requestUserAttention_}
title="Minimizes the window, requests attention for 3s and then resets it"
>Request attention</button
>
</div>
<br />
<div class="flex flex-wrap gap-2">
<label>
Maximized
<input type="checkbox" bind:checked={maximized} />
</label>
<label>
Resizable
<input type="checkbox" bind:checked={resizable} />
</label>
<label>
Maximizable
<input type="checkbox" bind:checked={maximizable} />
</label>
<label>
Minimizable
<input type="checkbox" bind:checked={minimizable} />
</label>
<label>
Closable
<input type="checkbox" bind:checked={closable} />
</label>
<label>
Has decorations
<input type="checkbox" bind:checked={decorations} />
</label>
<label>
Always on top
<input type="checkbox" bind:checked={alwaysOnTop} />
</label>
<label>
Content protected
<input type="checkbox" bind:checked={contentProtected} />
</label>
<label>
Fullscreen
<input type="checkbox" bind:checked={fullscreen} />
</label>
</div>
<br />
<div class="flex flex-row gap-2 flex-wrap">
<div class="flex children:grow flex-col">
<div>
X
<input class="input" type="number" bind:value={x} min="0" />
</div>
<div>
Y
<input class="input" type="number" bind:value={y} min="0" />
</div>
</div>
<div class="flex children:grow flex-col">
<div>
Width
<input class="input" type="number" bind:value={width} min="400" />
</div>
<div>
Height
<input class="input" type="number" bind:value={height} min="400" />
</div>
</div>
<div class="flex children:grow flex-col">
<div>
Min width
<input class="input" type="number" bind:value={minWidth} />
</div>
<div>
Min height
<input class="input" type="number" bind:value={minHeight} />
</div>
</div>
<div class="flex children:grow flex-col">
<div>
Max width
<input class="input" type="number" bind:value={maxWidth} min="800" />
</div>
<div>
Max height
<input class="input" type="number" bind:value={maxHeight} min="400" />
</div>
</div>
</div>
<br />
<div>
<div class="flex">
<div class="grow">
<div class="text-accent dark:text-darkAccent font-700">
Inner Size
</div>
<span>Width: {innerSize.width}</span>
<span>Height: {innerSize.height}</span>
</div>
<div class="grow">
<div class="text-accent dark:text-darkAccent font-700">
Outer Size
</div>
<span>Width: {outerSize.width}</span>
<span>Height: {outerSize.height}</span>
</div>
</div>
<div class="flex">
<div class="grow">
<div class="text-accent dark:text-darkAccent font-700">
Inner Logical Size
</div>
<span>Width: {innerSize.toLogical(scaleFactor).width}</span>
<span>Height: {innerSize.toLogical(scaleFactor).height}</span>
</div>
<div class="grow">
<div class="text-accent dark:text-darkAccent font-700">
Outer Logical Size
</div>
<span>Width: {outerSize.toLogical(scaleFactor).width}</span>
<span>Height: {outerSize.toLogical(scaleFactor).height}</span>
</div>
</div>
<div class="flex">
<div class="grow">
<div class="text-accent dark:text-darkAccent font-700">
Inner Position
</div>
<span>x: {innerPosition.x}</span>
<span>y: {innerPosition.y}</span>
</div>
<div class="grow">
<div class="text-accent dark:text-darkAccent font-700">
Outer Position
</div>
<span>x: {outerPosition.x}</span>
<span>y: {outerPosition.y}</span>
</div>
</div>
<div class="flex">
<div class="grow">
<div class="text-accent dark:text-darkAccent font-700">
Inner Logical Position
</div>
<span>x: {innerPosition.toLogical(scaleFactor).x}</span>
<span>y: {innerPosition.toLogical(scaleFactor).y}</span>
</div>
<div class="grow">
<div class="text-accent dark:text-darkAccent font-700">
Outer Logical Position
</div>
<span>x: {outerPosition.toLogical(scaleFactor).x}</span>
<span>y: {outerPosition.toLogical(scaleFactor).y}</span>
</div>
</div>
</div>
<br />
<h4 class="mb-2">Cursor</h4>
<div class="flex gap-2">
<label>
<input type="checkbox" bind:checked={cursorGrab} />
Grab
</label>
<label>
<input type="checkbox" bind:checked={cursorVisible} />
Visible
</label>
<label>
<input type="checkbox" bind:checked={cursorIgnoreEvents} />
Ignore events
</label>
</div>
<div class="flex gap-2">
<label>
Icon
<select class="input" bind:value={cursorIcon}>
{#each cursorIconOptions as kind}
<option value={kind}>{kind}</option>
{/each}
</select>
</label>
<label>
X position
<input class="input" type="number" bind:value={cursorX} />
</label>
<label>
Y position
<input class="input" type="number" bind:value={cursorY} />
</label>
</div>
<br />
<div class="flex flex-col gap-1">
<form class="flex gap-1" on:submit|preventDefault={setTitle_}>
<input class="input grow" id="title" bind:value={windowTitle} />
<button class="btn" type="submit">Set title</button>
</form>
<form class="flex gap-1" on:submit|preventDefault={openUrl}>
<input class="input grow" id="url" bind:value={urlValue} />
<button class="btn" id="open-url"> Open URL </button>
</form>
</div>
<br />
{#if isWindows || isMacOS}
<div class="flex flex-col gap-1">
<div class="flex">
<label>
Effect
<select class="input" bind:value={selectedEffect}>
{#each effectOptions as effect}
<option value={effect}>{effect}</option>
{/each}
</select>
</label>
<label>
State
<select class="input" bind:value={effectState}>
{#each effectStateOptions as state}
<option value={state}>{state}</option>
{/each}
</select>
</label>
<label>
Radius
<input class="input" type="number" bind:value={effectRadius} />
</label>
</div>
<div class="flex">
<label>
Color
<div class="flex">
<input
style="max-width: 120px;"
class="input"
type="number"
placeholder="R"
bind:value={effectR}
/>
<input
style="max-width: 120px;"
class="input"
type="number"
placeholder="G"
bind:value={effectG}
/>
<input
style="max-width: 120px;"
class="input"
type="number"
placeholder="B"
bind:value={effectB}
/>
<input
style="max-width: 120px;"
class="input"
type="number"
placeholder="A"
bind:value={effectA}
/>
</div>
</label>
</div>
<div class="flex">
<button class="btn" style="width: 80px;" on:click={addEffect}
>Add</button
>
</div>
<div class="flex">
<div>
Applied effects: {effects.length ? effects.join(",") : "None"}
</div>
<button class="btn" style="width: 80px;" on:click={clearEffects}
>Clear</button
>
</div>
</div>
{/if}
{/if}
</div>
+16 -16
View File
@@ -6,26 +6,26 @@
"scripts": {
"build": "pnpm run -r --parallel --filter !plugins-workspace --filter !\"./plugins/*/examples/**\" --filter !\"./examples/*\" build",
"lint": "eslint .",
"format": "prettier --write \"./**/*.{cjs,mjs,js,jsx,mts,ts,tsx,html,css,json}\" --ignore-path .prettierignore",
"format-check": "prettier --check \"./**/*.{cjs,mjs,js,jsx,mts,ts,tsx,html,css,json}\" --ignore-path .prettierignore"
"format": "prettier --write \"./**/*.{cjs,mjs,js,jsx,mts,ts,tsx,html,css,json}\" --ignore-path .prettierignore",
"format-check": "prettier --check \"./**/*.{cjs,mjs,js,jsx,mts,ts,tsx,html,css,json}\" --ignore-path .prettierignore"
},
"devDependencies": {
"@rollup/plugin-node-resolve": "15.1.0",
"@rollup/plugin-terser": "0.4.3",
"@rollup/plugin-typescript": "11.1.2",
"@typescript-eslint/eslint-plugin": "6.1.0",
"@typescript-eslint/parser": "6.1.0",
"covector": "^0.9.0",
"eslint": "8.45.0",
"eslint-config-prettier": "8.8.0",
"eslint-config-standard-with-typescript": "36.1.0",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-n": "16.0.1",
"@rollup/plugin-node-resolve": "15.2.3",
"@rollup/plugin-terser": "0.4.4",
"@rollup/plugin-typescript": "11.1.5",
"@typescript-eslint/eslint-plugin": "6.8.0",
"@typescript-eslint/parser": "6.8.0",
"covector": "^0.10.2",
"eslint": "8.51.0",
"eslint-config-prettier": "9.0.0",
"eslint-config-standard-with-typescript": "39.1.1",
"eslint-plugin-import": "2.28.1",
"eslint-plugin-n": "16.2.0",
"eslint-plugin-promise": "6.1.1",
"eslint-plugin-security": "1.7.1",
"prettier": "3.0.0",
"rollup": "3.26.3",
"typescript": "5.1.6"
"prettier": "3.0.3",
"rollup": "4.1.4",
"typescript": "5.2.2"
},
"resolutions": {
"semver": ">=7.5.2",
-18
View File
@@ -1,18 +0,0 @@
# Changelog
## \[2.0.0-alpha.2]
- [`4e2cef9`](https://github.com/tauri-apps/plugins-workspace/commit/4e2cef9b702bbbb9cf4ee17de50791cb21f1b2a4)([#593](https://github.com/tauri-apps/plugins-workspace/pull/593)) Update to alpha.12.
## \[2.0.0-alpha.1]
- [`d74fc0a`](https://github.com/tauri-apps/plugins-workspace/commit/d74fc0a097996e90a37be8f57d50b7d1f6ca616f)([#555](https://github.com/tauri-apps/plugins-workspace/pull/555)) Update to alpha.11.
## \[2.0.0-alpha.0]
- [`717ae67`](https://github.com/tauri-apps/plugins-workspace/commit/717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
te to alpha.11.
## \[2.0.0-alpha.0]
- [`717ae67`](https://github.com/tauri-apps/plugins-workspace/commit/717ae670978feb4492fac1f295998b93f2b9347f)([#371](https://github.com/tauri-apps/plugins-workspace/pull/371)) First v2 alpha release!
-13
View File
@@ -1,13 +0,0 @@
[package]
name = "tauri-plugin-app"
version = "2.0.0-alpha.2"
description = "APIs to read application metadata and change app visibility on macOS."
edition = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
[package.metadata.docs.rs]
features = [ "tauri/dox" ]
[dependencies]
tauri = { workspace = true }
-76
View File
@@ -1,76 +0,0 @@
![plugin-app](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/app/banner.png)
This plugin provides APIs to read application metadata and macOS app visibility functions.
## Install
_This plugin requires a Rust version of at least **1.65**_
There are three general methods of installation that we can recommend.
1. Use crates.io and npm (easiest, and requires you to trust that our publishing pipeline worked)
2. Pull sources directly from Github using git tags / revision hashes (most secure)
3. Git submodule install this repo in your tauri project and then use file protocol to ingest the source (most secure, but inconvenient to use)
Install the Core plugin by adding the following to your `Cargo.toml` file:
`src-tauri/Cargo.toml`
```toml
[dependencies]
tauri-plugin-app = "2.0.0-alpha"
# alternatively with Git:
tauri-plugin-app = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
```
You can install the JavaScript Guest bindings using your preferred JavaScript package manager:
> Note: Since most JavaScript package managers are unable to install packages from git monorepos we provide read-only mirrors of each plugin. This makes installation option 2 more ergonomic to use.
```sh
pnpm add @tauri-apps/plugin-app
# or
npm add @tauri-apps/plugin-app
# or
yarn add @tauri-apps/plugin-app
# alternatively with Git:
pnpm add https://github.com/tauri-apps/tauri-plugin-app#v2
# or
npm add https://github.com/tauri-apps/tauri-plugin-app#v2
# or
yarn add https://github.com/tauri-apps/tauri-plugin-app#v2
```
## Usage
First you need to register the core plugin with Tauri:
`src-tauri/src/main.rs`
```rust
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_app::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
```
Afterwards all the plugin's APIs are available through the JavaScript guest bindings:
```javascript
import { getVersion, hide } from "@tauri-apps/plugin-app";
const appVersion = await getVersion();
await hide();
```
## Contributing
PRs accepted. Please make sure to read the Contributing Guide before making a pull request.
## License
Code: (c) 2015 - Present - The Tauri Programme within The Commons Conservancy.
MIT or MIT/Apache 2.0 where applicable.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

-90
View File
@@ -1,90 +0,0 @@
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
/**
* Get application metadata.
*
* @module
*/
declare global {
interface Window {
__TAURI_INVOKE__: <T>(cmd: string, args?: unknown) => Promise<T>;
}
}
/**
* Gets the application version.
* @example
* ```typescript
* import { getVersion } from '@tauri-apps/plugin-app';
* const appVersion = await getVersion();
* ```
*
* @since 2.0.0
*/
async function getVersion(): Promise<string> {
return window.__TAURI_INVOKE__("plugin:app|version");
}
/**
* Gets the application name.
* @example
* ```typescript
* import { getName } from '@tauri-apps/plugin-app';
* const appName = await getName();
* ```
*
* @since 2.0.0
*/
async function getName(): Promise<string> {
return window.__TAURI_INVOKE__("plugin:app|name");
}
/**
* Gets the Tauri version.
*
* @example
* ```typescript
* import { getTauriVersion } from '@tauri-apps/plugin-app';
* const tauriVersion = await getTauriVersion();
* ```
*
* @since 2.0.0
*/
async function getTauriVersion(): Promise<string> {
return window.__TAURI_INVOKE__("plugin:app|tauri_version");
}
/**
* Shows the application on macOS. This function does not automatically focus any specific app window.
*
* @example
* ```typescript
* import { show } from '@tauri-apps/plugin-app';
* await show();
* ```
*
* @since 2.0.0
*/
async function show(): Promise<void> {
return window.__TAURI_INVOKE__("plugin:app|show");
}
/**
* Hides the application on macOS.
*
* @example
* ```typescript
* import { hide } from '@tauri-apps/plugin-app';
* await hide();
* ```
*
* @since 2.0.0
*/
async function hide(): Promise<void> {
return window.__TAURI_INVOKE__("plugin:app|hide");
}
export { getName, getVersion, getTauriVersion, show, hide };
-1
View File
@@ -1 +0,0 @@
if("__TAURI__"in window){var __TAURI_APP__=function(_){"use strict";return _.getName=async function(){return window.__TAURI_INVOKE__("plugin:app|name")},_.getTauriVersion=async function(){return window.__TAURI_INVOKE__("plugin:app|tauri_version")},_.getVersion=async function(){return window.__TAURI_INVOKE__("plugin:app|version")},_.hide=async function(){return window.__TAURI_INVOKE__("plugin:app|hide")},_.show=async function(){return window.__TAURI_INVOKE__("plugin:app|show")},_}({});Object.defineProperty(window.__TAURI__,"app",{value:__TAURI_APP__})}
-36
View File
@@ -1,36 +0,0 @@
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
use tauri::{AppHandle, Runtime};
#[tauri::command]
pub fn version<R: Runtime>(app: AppHandle<R>) -> String {
app.package_info().version.to_string()
}
#[tauri::command]
pub fn name<R: Runtime>(app: AppHandle<R>) -> String {
app.package_info().name.clone()
}
#[tauri::command]
pub fn tauri_version() -> &'static str {
tauri::VERSION
}
#[tauri::command]
#[allow(unused_variables)]
pub fn show<R: Runtime>(app: AppHandle<R>) -> tauri::Result<()> {
#[cfg(target_os = "macos")]
app.show()?;
Ok(())
}
#[tauri::command]
#[allow(unused_variables)]
pub fn hide<R: Runtime>(app: AppHandle<R>) -> tauri::Result<()> {
#[cfg(target_os = "macos")]
app.hide()?;
Ok(())
}
-32
View File
@@ -1,32 +0,0 @@
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
//! [![](https://github.com/tauri-apps/plugins-workspace/raw/v2/plugins/app/banner.png)](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/app)
//!
//! This plugin provides APIs to read application metadata and macOS app visibility functions.
#![doc(
html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png",
html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png"
)]
use tauri::{
plugin::{Builder, TauriPlugin},
Runtime,
};
mod commands;
pub fn init<R: Runtime>() -> TauriPlugin<R> {
Builder::new("app")
.js_init_script(include_str!("api-iife.js").to_string())
.invoke_handler(tauri::generate_handler![
commands::version,
commands::name,
commands::tauri_version,
commands::show,
commands::hide
])
.build()
}
+4
View File
@@ -2,6 +2,10 @@
## \[2.0.0-alpha.2]
- [`5c13736`](https://github.com/tauri-apps/plugins-workspace/commit/5c137365c60790e8d4037d449e8237aa3fffdab0)([#673](https://github.com/tauri-apps/plugins-workspace/pull/673)) Update to @tauri-apps/api v2.0.0-alpha.16.
## \[2.0.0-alpha.2]
- [`4e2cef9`](https://github.com/tauri-apps/plugins-workspace/commit/4e2cef9b702bbbb9cf4ee17de50791cb21f1b2a4)([#593](https://github.com/tauri-apps/plugins-workspace/pull/593)) Update to alpha.12.
## \[2.0.0-alpha.1]
+2 -2
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-authenticator"
version = "2.0.0-alpha.2"
version = "2.0.0-alpha.3"
description = "Use hardware security-keys in your Tauri App."
authors = { workspace = true }
license = { workspace = true }
@@ -23,7 +23,7 @@ once_cell = "1"
sha2 = "0.10"
base64 = "0.21"
u2f = "0.2"
chrono = "0.4"
chrono = ">= 0.4.0, <0.4.30"
[dev-dependencies]
rand = "0.8"
+1 -1
View File
@@ -6,7 +6,7 @@ Use hardware security-keys in your Tauri App.
## Install
_This plugin requires a Rust version of at least **1.65**_
_This plugin requires a Rust version of at least **1.70**_
There are three general methods of installation that we can recommend.
+18 -28
View File
@@ -2,19 +2,15 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
declare global {
interface Window {
__TAURI_INVOKE__: <T>(cmd: string, args?: unknown) => Promise<T>;
}
}
import { invoke } from "@tauri-apps/api/primitives";
export class Authenticator {
async init(): Promise<void> {
return await window.__TAURI_INVOKE__("plugin:authenticator|init_auth");
return await invoke("plugin:authenticator|init_auth");
}
async register(challenge: string, application: string): Promise<string> {
return await window.__TAURI_INVOKE__("plugin:authenticator|register", {
return await invoke("plugin:authenticator|register", {
timeout: 10000,
challenge,
application,
@@ -27,15 +23,12 @@ export class Authenticator {
registerData: string,
clientData: string,
): Promise<string> {
return await window.__TAURI_INVOKE__(
"plugin:authenticator|verify_registration",
{
challenge,
application,
registerData,
clientData,
},
);
return await invoke("plugin:authenticator|verify_registration", {
challenge,
application,
registerData,
clientData,
});
}
async sign(
@@ -43,7 +36,7 @@ export class Authenticator {
application: string,
keyHandle: string,
): Promise<string> {
return await window.__TAURI_INVOKE__("plugin:authenticator|sign", {
return await invoke("plugin:authenticator|sign", {
timeout: 10000,
challenge,
application,
@@ -59,16 +52,13 @@ export class Authenticator {
keyHandle: string,
pubkey: string,
): Promise<number> {
return await window.__TAURI_INVOKE__(
"plugin:authenticator|verify_signature",
{
challenge,
application,
signData,
clientData,
keyHandle,
pubkey,
},
);
return await invoke("plugin:authenticator|verify_signature", {
challenge,
application,
signData,
clientData,
keyHandle,
pubkey,
});
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-authenticator",
"version": "2.0.0-alpha.1",
"version": "2.0.0-alpha.2",
"description": "Use hardware security-keys in your Tauri App.",
"license": "MIT or APACHE-2.0",
"authors": [
@@ -28,6 +28,6 @@
"tslib": "2.6.0"
},
"dependencies": {
"@tauri-apps/api": "2.0.0-alpha.6"
"@tauri-apps/api": "2.0.0-alpha.9"
}
}

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