Compare commits

...

21 Commits

Author SHA1 Message Date
github-actions[bot] 5cbd593e76 publish new versions (#1772)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-09-15 11:55:38 -03:00
renovate[bot] f7600b5fff chore(deps): update dependency @tauri-apps/cli to v2.0.0-rc.14 (#1786)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-15 11:37:09 -03:00
Lucas Fernandes Nogueira fb85e5dd76 chore(deps): update tauri to 2.0.0-rc.12 (#1785) 2024-09-15 11:36:23 -03:00
Lucas Fernandes Nogueira 6f3f66794a feat(deep-link): add on_open_url Rust API (#1780) 2024-09-14 21:35:31 -03:00
FabianLars 79d6e19c4b chore: Add changefile for #1777 2024-09-14 18:34:45 +02:00
Cole Shirley aebd4f6185 fix(barcode-scanner): Fix mixed up imports (internal) (#1777)
Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2024-09-14 18:20:21 +02:00
Lucas Fernandes Nogueira 341a5320c3 fix(clipboard): Android warnings and build on SDK under 28 (#1771) 2024-09-13 12:03:10 -03:00
Lucas Fernandes Nogueira cc03ccf5e0 fix(fs): app scopes not properly enabling paths (#1774) 2024-09-13 09:57:46 -03:00
Lucas Nogueira 009299ebec chore(prettier): ignore mobile build artifacts 2024-09-13 09:10:01 -03:00
Tony 204e5aacad fix(window-state)!: saving minimized state (#1743)
* Fix saving minimized state again

* Add change file

* Fix saving minimized size

* Add change file

* Fix missing .md

* Remove window-shadows
2024-09-13 06:29:38 +03:00
github-actions[bot] 8a45c35160 publish new versions (#1764)
Co-authored-by: lucasfernog <lucasfernog@users.noreply.github.com>
2024-09-12 15:49:29 -03:00
Lucas Nogueira ebf821afd1 chore(examples): update AndroidManifest.xml 2024-09-12 15:32:27 -03:00
Lucas Fernandes Nogueira 984110a978 fix(deep-link): emit new-url event on app load (#1770) 2024-09-12 11:20:16 -03:00
Lucas Fernandes Nogueira 2b898f0786 fix(dialog): update asset protocol scope on directory open, closes #1553 (#1769) 2024-09-12 11:10:16 -03:00
Tony b2269333e3 chore(single-instance): put deep link integration behined a feature (#1766)
* Make deep link optional for single instance

* Add change file

* Add deep-link feature to example

* Update plugins/deep-link/README.md

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>

* format

* [skip ci] update readme

---------

Co-authored-by: Fabian-Lars <fabianlars@fabianlars.de>
2024-09-12 18:20:15 +08:00
renovate[bot] 41afcae399 chore(deps): update dependency rollup to v4.21.3 (v2) (#1767)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-12 12:01:38 +02:00
SRutile 9291e4d2ca fix(fs): support any UTF-8 path in writeFile (#1640)
* In the `writeFile` function, when `options.baseDir` is not set, convert `path` to URL to avoid errors caused by Chinese characters.

* fmt

* use TextEncoder

* use percent encoding

* add change file

* fmt

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2024-09-11 12:02:24 -03:00
renovate[bot] 3715f3c9a6 chore(deps): update tauri monorepo (#1760)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-11 09:12:13 +08:00
github-actions[bot] 253ae66210 publish new versions (#1761) 2024-09-10 16:14:05 -03:00
Lucas Nogueira 949e2d6c45 chore: update docs 2024-09-10 16:02:38 -03:00
Lucas Fernandes Nogueira 64a6240f79 feat(deep-link): implement getCurrent on Windows/Linux (#1759)
* feat(deep-link): implement getCurrent on Windows/Linux

checks std::env::args() on initialization, also includes integration with the single-instance plugin

* fmt

* update docs, fix event

* add register_all function

* expose api

* be nicer on docs, clippy
2024-09-10 16:00:42 -03:00
136 changed files with 5396 additions and 8036 deletions
+2 -1
View File
@@ -268,7 +268,8 @@
},
"single-instance": {
"path": "./plugins/single-instance",
"manager": "rust"
"manager": "rust",
"dependencies": ["deep-link"]
},
"sql": {
"path": "./plugins/sql",
+6
View File
@@ -0,0 +1,6 @@
---
"deep-link": patch
---
Emit the `deep-link://new-url` event on Linux and Windows when the app is executed with a deep link CLI argument,
matching the iOS and macOS behavior.
@@ -0,0 +1,6 @@
---
"deep-link": patch
"deep-link-js": patch
---
Implement `get_current` on Linux and Windows.
+6
View File
@@ -0,0 +1,6 @@
---
"deep-link": patch
---
Added `DeepLink::on_open_url` function to match the JavaScript API implementation,
which wraps the `deep-link://new-url` event and also send the current deep link if there's any.
+5
View File
@@ -0,0 +1,5 @@
---
"deep-link": patch
---
Added `register_all` to register all desktop schemes - useful for Linux to not require a formal AppImage installation.
+5
View File
@@ -0,0 +1,5 @@
---
"dialog": patch
---
Update Tauri scopes (asset protocol) when using the `open()` command to select directories.
+5
View File
@@ -0,0 +1,5 @@
---
"barcode-scanner-js": patch
---
Fixed an issue which caused checkPermission and requestPermission to be mixed up.
+6
View File
@@ -0,0 +1,6 @@
---
"clipboard-manager": patch
"clipboard-manager-js": patch
---
Fix warnings and clear implementation on Android below SDK 28.
+5
View File
@@ -0,0 +1,5 @@
---
"fs": patch
---
Fix `scope-app`, `scope-app-recursive` and `scope-index` not properly enabling the application paths.
@@ -0,0 +1,5 @@
---
"window-state": patch
---
Fix can't restore a minimized window's size and position properly
+5
View File
@@ -0,0 +1,5 @@
---
"fs": patch
---
Support any UTF-8 character in the writeFile API.
+15 -1
View File
@@ -5,20 +5,30 @@
".changes/barcode-dependencies.md",
".changes/barcode-scanner-validate-plist.md",
".changes/consolidate-permission-state.md",
".changes/deep-link-event.md",
".changes/deep-link-get-current-desktop.md",
".changes/deep-link-on-new-url.md",
".changes/deep-link-register-all.md",
".changes/dialog-asset-scope.md",
".changes/dialog-file-response-non-exhaustive.md",
".changes/dialog-return-path.md",
".changes/fix-barcodae-scanner-imports.md",
".changes/fix-clipboard-warnings-sdk.md",
".changes/fix-deep-link-config.md",
".changes/fix-fs-app-scopes.md",
".changes/fix-fs-write-file-android.md",
".changes/fix-http-plugin-abort.md",
".changes/fix-ios-file-dialog-default-mode.md",
".changes/fix-linux-updater-permission-error.md",
".changes/fix-restore-minimized-window-position.md",
".changes/fix-restore-minimized-window-state.md",
".changes/fs-dialog-file-path-methods.md",
".changes/fs-dialog-file-path-traits.md",
".changes/fs-dialog-non-exhaustive-error.md",
".changes/fs-dialog-safe-file-path.md",
".changes/fs-scope-recursive-allow-read-dir.md",
".changes/fs-windows-path.md",
".changes/fs-write-file-utf8-chars.md",
".changes/geolocation-release.md",
".changes/global-shortcut-0.6.md",
".changes/haptics-release.md",
@@ -31,14 +41,18 @@
".changes/resolve-content-uris.md",
".changes/shell-open-regex-match-string.md",
".changes/shell-regex-match-string.md",
".changes/single-instance-deep-link.md",
".changes/single-instance-optional-deep-link.md",
".changes/single-instance-windows-sys.0.59.md",
".changes/sql-uuid-type.md",
".changes/store-remove-mobile-plugin.md",
".changes/swift-build-older-versions.md",
".changes/tauri-rc-8.md",
".changes/update-fs-api-docs.md",
".changes/update-tauri-rc-12.md",
".changes/update-tauri-rc-3.md",
".changes/updater-js-headers-download-crate.md",
".changes/updater-js-headers-download.md"
".changes/updater-js-headers-download.md",
".changes/window-state-physical-size.md"
]
}
+5
View File
@@ -0,0 +1,5 @@
---
"single-instance": patch
---
Integrate with the deep link plugin out of the box.
@@ -0,0 +1,5 @@
---
"single-instance": "patch"
---
Put deep link integration behined a feature
+5
View File
@@ -0,0 +1,5 @@
---
"notification": patch
---
Update to tauri 2.0.0-rc.12.
+5
View File
@@ -0,0 +1,5 @@
---
"window-state": patch:breaking
---
Window's size is now stored in physical size instead of logical size
+5 -1
View File
@@ -19,4 +19,8 @@ plugins/*/examples/*/src-tauri/gen/
api-iife.js
init-iife.js
CHANGELOG.md
*schema.json
*schema.json
# mobile build
**/ios/.build
**/.tauri
Generated
+48 -92
View File
@@ -212,7 +212,7 @@ checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8"
[[package]]
name = "api"
version = "2.0.0-rc.5"
version = "2.0.0-rc.7"
dependencies = [
"log",
"serde",
@@ -235,8 +235,8 @@ dependencies = [
"tauri-plugin-shell",
"tauri-plugin-store",
"tauri-plugin-updater",
"tauri-plugin-window-state",
"tiny_http",
"window-shadows",
]
[[package]]
@@ -1025,22 +1025,6 @@ dependencies = [
"error-code",
]
[[package]]
name = "cocoa"
version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c"
dependencies = [
"bitflags 1.3.2",
"block",
"cocoa-foundation 0.1.2",
"core-foundation 0.9.4",
"core-graphics 0.23.2",
"foreign-types 0.5.0",
"libc",
"objc",
]
[[package]]
name = "cocoa"
version = "0.26.0"
@@ -1049,7 +1033,7 @@ checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2"
dependencies = [
"bitflags 2.6.0",
"block",
"cocoa-foundation 0.2.0",
"cocoa-foundation",
"core-foundation 0.10.0",
"core-graphics 0.24.0",
"foreign-types 0.5.0",
@@ -1057,20 +1041,6 @@ dependencies = [
"objc",
]
[[package]]
name = "cocoa-foundation"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7"
dependencies = [
"bitflags 1.3.2",
"block",
"core-foundation 0.9.4",
"core-graphics-types 0.1.3",
"libc",
"objc",
]
[[package]]
name = "cocoa-foundation"
version = "0.2.0"
@@ -1534,6 +1504,7 @@ dependencies = [
"tauri-build",
"tauri-plugin-deep-link",
"tauri-plugin-log",
"tauri-plugin-single-instance",
]
[[package]]
@@ -3658,7 +3629,7 @@ version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba8ac4080fb1e097c2c22acae467e46e4da72d941f02e82b67a87a2a89fa38b1"
dependencies = [
"cocoa 0.26.0",
"cocoa",
"crossbeam-channel",
"dpi",
"gtk",
@@ -3699,7 +3670,7 @@ dependencies = [
"log",
"ndk-sys",
"num_enum",
"raw-window-handle 0.6.2",
"raw-window-handle",
"thiserror",
]
@@ -4823,12 +4794,6 @@ dependencies = [
"rand_core 0.5.1",
]
[[package]]
name = "raw-window-handle"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
[[package]]
name = "raw-window-handle"
version = "0.6.2"
@@ -5023,7 +4988,7 @@ dependencies = [
"objc",
"objc-foundation",
"objc_id",
"raw-window-handle 0.6.2",
"raw-window-handle",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
@@ -5710,7 +5675,7 @@ dependencies = [
"objc2",
"objc2-foundation",
"objc2-quartz-core",
"raw-window-handle 0.6.2",
"raw-window-handle",
"redox_syscall",
"wasm-bindgen",
"web-sys",
@@ -6228,7 +6193,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a93f2c6b8fdaeb7f417bda89b5bc767999745c3052969664ae1fa65892deb7e"
dependencies = [
"bitflags 2.6.0",
"cocoa 0.26.0",
"cocoa",
"core-foundation 0.10.0",
"core-graphics 0.24.0",
"crossbeam-channel",
@@ -6249,7 +6214,7 @@ dependencies = [
"objc",
"once_cell",
"parking_lot",
"raw-window-handle 0.6.2",
"raw-window-handle",
"scopeguard",
"tao-macros",
"unicode-segmentation",
@@ -6296,13 +6261,13 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "tauri"
version = "2.0.0-rc.10"
version = "2.0.0-rc.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6327f79726c508efbbc3826b343fd7d39ebce786bdeff5881077b35d335d9e0"
checksum = "65e5d4a319f11ae72c77d0f4dbd9703ab6b401eb91d1ca88d89c33d13d4ea20c"
dependencies = [
"anyhow",
"bytes",
"cocoa 0.26.0",
"cocoa",
"dirs 5.0.1",
"dunce",
"embed_plist",
@@ -6321,7 +6286,8 @@ dependencies = [
"muda",
"objc",
"percent-encoding",
"raw-window-handle 0.6.2",
"plist",
"raw-window-handle",
"reqwest",
"serde",
"serde_json",
@@ -6349,9 +6315,9 @@ dependencies = [
[[package]]
name = "tauri-build"
version = "2.0.0-rc.9"
version = "2.0.0-rc.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7938a610d1474435fa38dfba66c95ce9be7f17b500672b6e00072bca5e52fef3"
checksum = "148441d64674b2885c1ba5baf3ae61662bb8753859ffcfb541962cbc6b847f39"
dependencies = [
"anyhow",
"cargo_toml",
@@ -6373,9 +6339,9 @@ dependencies = [
[[package]]
name = "tauri-codegen"
version = "2.0.0-rc.9"
version = "2.0.0-rc.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "467d3e95b57c860bea13b7c812820d9e7425e4b700e5e69b358d906f22022007"
checksum = "72a15c3f9282c82871c69ddb65d02ae552738bbac848c8adcab521bf14d8b9e6"
dependencies = [
"base64 0.22.1",
"brotli",
@@ -6400,9 +6366,9 @@ dependencies = [
[[package]]
name = "tauri-macros"
version = "2.0.0-rc.8"
version = "2.0.0-rc.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4585a906bd96bf57d063c3d60c52577ccc5de592d08f9d112e873ada79af9b9"
checksum = "f12d1aa317bec56f78388cf6012d788876d838595a48f95cbd7835642db356a0"
dependencies = [
"heck 0.5.0",
"proc-macro2",
@@ -6414,9 +6380,9 @@ dependencies = [
[[package]]
name = "tauri-plugin"
version = "2.0.0-rc.9"
version = "2.0.0-rc.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b905ecef194245bb35baba0447703f9fe40e4c03e946c7aba54c21c23e3452c7"
checksum = "d82a2adea16b8a71b7a5ad23f720bb13f8d2830b820cc1c266512314ba99bf67"
dependencies = [
"anyhow",
"glob",
@@ -6482,7 +6448,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-clipboard-manager"
version = "2.0.0-rc.3"
version = "2.0.0-rc.4"
dependencies = [
"arboard",
"image 0.24.9",
@@ -6496,7 +6462,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-deep-link"
version = "2.0.0-rc.3"
version = "2.0.0-rc.6"
dependencies = [
"dunce",
"log",
@@ -6514,10 +6480,10 @@ dependencies = [
[[package]]
name = "tauri-plugin-dialog"
version = "2.0.0-rc.5"
version = "2.0.0-rc.7"
dependencies = [
"log",
"raw-window-handle 0.6.2",
"raw-window-handle",
"rfd",
"serde",
"serde_json",
@@ -6530,13 +6496,14 @@ dependencies = [
[[package]]
name = "tauri-plugin-fs"
version = "2.0.0-rc.3"
version = "2.0.0-rc.5"
dependencies = [
"anyhow",
"dunce",
"glob",
"notify",
"notify-debouncer-full",
"percent-encoding",
"schemars",
"serde",
"serde_json",
@@ -6589,7 +6556,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-http"
version = "2.0.0-rc.3"
version = "2.0.0-rc.5"
dependencies = [
"data-url",
"http",
@@ -6626,7 +6593,7 @@ version = "2.0.0-rc.2"
dependencies = [
"android_logger",
"byte-unit",
"cocoa 0.26.0",
"cocoa",
"fern",
"log",
"objc",
@@ -6655,7 +6622,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-notification"
version = "2.0.0-rc.4"
version = "2.0.0-rc.5"
dependencies = [
"color-backtrace",
"ctor",
@@ -6693,7 +6660,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-persisted-scope"
version = "2.0.0-rc.3"
version = "2.0.0-rc.5"
dependencies = [
"aho-corasick",
"bincode",
@@ -6747,13 +6714,14 @@ dependencies = [
[[package]]
name = "tauri-plugin-single-instance"
version = "2.0.0-rc.1"
version = "2.0.0-rc.4"
dependencies = [
"log",
"semver",
"serde",
"serde_json",
"tauri",
"tauri-plugin-deep-link",
"thiserror",
"windows-sys 0.59.0",
"zbus",
@@ -6873,7 +6841,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-window-state"
version = "2.0.0-rc.3"
version = "2.0.0-rc.4"
dependencies = [
"bitflags 2.6.0",
"log",
@@ -6886,15 +6854,15 @@ dependencies = [
[[package]]
name = "tauri-runtime"
version = "2.0.0-rc.9"
version = "2.0.0-rc.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b72cd110a6699ef44963504d4fa4f6c535677bb0177da2d178f4f822a53058ed"
checksum = "389f78c8e8e6eff3897d8d9581087943b5976ea96a0ab5036be691f28c2b0df0"
dependencies = [
"dpi",
"gtk",
"http",
"jni",
"raw-window-handle 0.6.2",
"raw-window-handle",
"serde",
"serde_json",
"tauri-utils",
@@ -6905,17 +6873,17 @@ dependencies = [
[[package]]
name = "tauri-runtime-wry"
version = "2.0.0-rc.9"
version = "2.0.0-rc.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1eb325cca17496ccbb469e7e2fef7f3e31a1005ab0c658dc3331c7781a573401"
checksum = "466c418aef2ddc7d31173a5b00bfae3df9b58ed66644339f3ca55008bfc54f25"
dependencies = [
"cocoa 0.26.0",
"cocoa",
"gtk",
"http",
"jni",
"log",
"percent-encoding",
"raw-window-handle 0.6.2",
"raw-window-handle",
"softbuffer",
"tao",
"tauri-runtime",
@@ -6929,9 +6897,9 @@ dependencies = [
[[package]]
name = "tauri-utils"
version = "2.0.0-rc.9"
version = "2.0.0-rc.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6746b87c4755f493b94920622e245aef2d771f001ddeffc203e315872d323e1c"
checksum = "3019641087c9039b57ebfca95fa42a93c07056845b7d8d57c8966061bcee83b4"
dependencies = [
"aes-gcm",
"brotli",
@@ -7992,18 +7960,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "window-shadows"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67ff424735b1ac21293b0492b069394b0a189c8a463fb015a16dea7c2e221c08"
dependencies = [
"cocoa 0.25.0",
"objc",
"raw-window-handle 0.5.2",
"windows-sys 0.48.0",
]
[[package]]
name = "window-vibrancy"
version = "0.5.2"
@@ -8013,7 +7969,7 @@ dependencies = [
"objc2",
"objc2-app-kit",
"objc2-foundation",
"raw-window-handle 0.6.2",
"raw-window-handle",
"windows-sys 0.59.0",
"windows-version",
]
@@ -8466,7 +8422,7 @@ checksum = "f4d715cf5fe88e9647f3d17b207b6d060d4a88e7171d4ccb2d2c657dd1d44728"
dependencies = [
"base64 0.22.1",
"block",
"cocoa 0.26.0",
"cocoa",
"core-graphics 0.24.0",
"crossbeam-channel",
"dpi",
@@ -8484,7 +8440,7 @@ dependencies = [
"objc_id",
"once_cell",
"percent-encoding",
"raw-window-handle 0.6.2",
"raw-window-handle",
"sha2",
"soup3",
"tao-macros",
+4 -4
View File
@@ -11,10 +11,10 @@ resolver = "2"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
log = "0.4"
tauri = { version = "2.0.0-rc.10", default-features = false }
tauri-build = "2.0.0-rc.9"
tauri-plugin = "2.0.0-rc.9"
tauri-utils = "2.0.0-rc.9"
tauri = { version = "2.0.0-rc.12", default-features = false }
tauri-build = "2.0.0-rc.11"
tauri-plugin = "2.0.0-rc.11"
tauri-utils = "2.0.0-rc.11"
serde_json = "1"
thiserror = "1"
url = "2"
+7
View File
@@ -1,5 +1,12 @@
# Changelog
## \[2.0.0-rc.4]
### Dependencies
- Upgraded to `barcode-scanner-js@2.0.0-rc.2`
- Upgraded to `clipboard-manager-js@2.0.0-rc.2`
## \[2.0.0-rc.3]
### Dependencies
+4 -4
View File
@@ -1,7 +1,7 @@
{
"name": "svelte-app",
"private": true,
"version": "2.0.0-rc.3",
"version": "2.0.0-rc.4",
"type": "module",
"scripts": {
"dev": "vite --clearScreen false",
@@ -10,10 +10,10 @@
},
"dependencies": {
"@tauri-apps/api": "2.0.0-rc.4",
"@tauri-apps/plugin-barcode-scanner": "2.0.0-rc.1",
"@tauri-apps/plugin-barcode-scanner": "2.0.0-rc.2",
"@tauri-apps/plugin-biometric": "2.0.0-rc.1",
"@tauri-apps/plugin-cli": "2.0.0-rc.1",
"@tauri-apps/plugin-clipboard-manager": "2.0.0-rc.1",
"@tauri-apps/plugin-clipboard-manager": "2.0.0-rc.2",
"@tauri-apps/plugin-dialog": "2.0.0-rc.1",
"@tauri-apps/plugin-fs": "2.0.0-rc.2",
"@tauri-apps/plugin-global-shortcut": "2.0.0-rc.1",
@@ -31,7 +31,7 @@
"@iconify-json/codicon": "^1.1.37",
"@iconify-json/ph": "^1.1.8",
"@sveltejs/vite-plugin-svelte": "^3.0.1",
"@tauri-apps/cli": "2.0.0-rc.12",
"@tauri-apps/cli": "2.0.0-rc.14",
"@unocss/extractor-svelte": "^0.62.0",
"svelte": "^4.2.19",
"unocss": "^0.62.0",
+18
View File
@@ -1,5 +1,23 @@
# Changelog
## \[2.0.0-rc.7]
### Dependencies
- Upgraded to `clipboard-manager@2.0.0-rc.4`
- Upgraded to `fs@2.0.0-rc.5`
- Upgraded to `notification@2.0.0-rc.5`
- Upgraded to `dialog@2.0.0-rc.7`
- Upgraded to `http@2.0.0-rc.5`
## \[2.0.0-rc.6]
### Dependencies
- Upgraded to `dialog@2.0.0-rc.6`
- Upgraded to `fs@2.0.0-rc.4`
- Upgraded to `http@2.0.0-rc.4`
## \[2.0.0-rc.5]
### Dependencies
+7 -9
View File
@@ -1,7 +1,7 @@
[package]
name = "api"
publish = false
version = "2.0.0-rc.5"
version = "2.0.0-rc.7"
description = "An example Tauri Application showcasing the api"
edition = "2021"
rust-version = { workspace = true }
@@ -20,15 +20,15 @@ serde = { workspace = true }
tiny_http = "0.12"
log = { workspace = true }
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-rc.2" }
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-rc.3", features = [
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-rc.5", features = [
"watch",
] }
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-rc.3" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-rc.5" }
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-rc.4" }
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-rc.7" }
tauri-plugin-http = { path = "../../../plugins/http", features = [
"multipart",
], version = "2.0.0-rc.3" }
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-rc.4", features = [
], version = "2.0.0-rc.5" }
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-rc.5", features = [
"windows7-compat",
] }
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-rc.1" }
@@ -53,14 +53,12 @@ features = [
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-rc.1" }
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-rc.2" }
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-rc.3" }
tauri-plugin-window-state = { path = "../../../plugins/window-state", version = "2.0.0-rc.3" }
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-rc.4" }
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.0.0-rc.3" }
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.0.0-rc.3" }
[target."cfg(target_os = \"windows\")".dependencies]
window-shadows = "0.2"
[features]
prod = ["tauri/custom-protocol"]
File diff suppressed because it is too large Load Diff
@@ -150,42 +150,42 @@
]
},
{
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the application folders, including file listing and statistics.",
"type": "string",
"enum": [
"fs:allow-app-meta"
]
},
{
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the application folders, including file listing and statistics.",
"type": "string",
"enum": [
"fs:allow-app-meta-recursive"
]
},
{
"description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.",
"description": "fs:allow-app-read -> This allows non-recursive read access to the application folders.",
"type": "string",
"enum": [
"fs:allow-app-read"
]
},
{
"description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete `$APP` folder, files and subdirectories.",
"description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete application folders, files and subdirectories.",
"type": "string",
"enum": [
"fs:allow-app-read-recursive"
]
},
{
"description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.",
"description": "fs:allow-app-write -> This allows non-recursive write access to the application folders.",
"type": "string",
"enum": [
"fs:allow-app-write"
]
},
{
"description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete `$APP` folder, files and subdirectories.",
"description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete application folders, files and subdirectories.",
"type": "string",
"enum": [
"fs:allow-app-write-recursive"
@@ -1606,28 +1606,28 @@
]
},
{
"description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.",
"description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the application folders.",
"type": "string",
"enum": [
"fs:scope-app"
]
},
{
"description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.",
"description": "fs:scope-app-index -> This scope permits to list all files and folders in the application directories.",
"type": "string",
"enum": [
"fs:scope-app-index"
]
},
{
"description": "fs:scope-app-recursive -> This scope permits recursive access to the complete `$APP` folder, including sub directories and files.",
"description": "fs:scope-app-recursive -> This scope permits recursive access to the complete application folders, including sub directories and files.",
"type": "string",
"enum": [
"fs:scope-app-recursive"
]
},
{
"description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.",
"description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.",
"type": "string",
"enum": [
"fs:scope-appcache"
@@ -1648,7 +1648,7 @@
]
},
{
"description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.",
"description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.",
"type": "string",
"enum": [
"fs:scope-appconfig"
@@ -1669,7 +1669,7 @@
]
},
{
"description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.",
"description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.",
"type": "string",
"enum": [
"fs:scope-appdata"
@@ -1690,7 +1690,7 @@
]
},
{
"description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.",
"description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.",
"type": "string",
"enum": [
"fs:scope-applocaldata"
@@ -1711,7 +1711,7 @@
]
},
{
"description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.",
"description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.",
"type": "string",
"enum": [
"fs:scope-applog"
@@ -1732,7 +1732,7 @@
]
},
{
"description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.",
"description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.",
"type": "string",
"enum": [
"fs:scope-audio"
@@ -1753,7 +1753,7 @@
]
},
{
"description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE`folder.",
"description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE` folder.",
"type": "string",
"enum": [
"fs:scope-cache"
@@ -1774,7 +1774,7 @@
]
},
{
"description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.",
"description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.",
"type": "string",
"enum": [
"fs:scope-config"
@@ -1795,7 +1795,7 @@
]
},
{
"description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA`folder.",
"description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA` folder.",
"type": "string",
"enum": [
"fs:scope-data"
@@ -1816,7 +1816,7 @@
]
},
{
"description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.",
"description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.",
"type": "string",
"enum": [
"fs:scope-desktop"
@@ -1837,7 +1837,7 @@
]
},
{
"description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.",
"description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.",
"type": "string",
"enum": [
"fs:scope-document"
@@ -1858,7 +1858,7 @@
]
},
{
"description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.",
"description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.",
"type": "string",
"enum": [
"fs:scope-download"
@@ -1879,7 +1879,7 @@
]
},
{
"description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE`folder.",
"description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE` folder.",
"type": "string",
"enum": [
"fs:scope-exe"
@@ -1900,7 +1900,7 @@
]
},
{
"description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT`folder.",
"description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT` folder.",
"type": "string",
"enum": [
"fs:scope-font"
@@ -1921,7 +1921,7 @@
]
},
{
"description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME`folder.",
"description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME` folder.",
"type": "string",
"enum": [
"fs:scope-home"
@@ -1942,7 +1942,7 @@
]
},
{
"description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.",
"description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.",
"type": "string",
"enum": [
"fs:scope-localdata"
@@ -1963,7 +1963,7 @@
]
},
{
"description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG`folder.",
"description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG` folder.",
"type": "string",
"enum": [
"fs:scope-log"
@@ -1984,7 +1984,7 @@
]
},
{
"description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.",
"description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.",
"type": "string",
"enum": [
"fs:scope-picture"
@@ -2005,7 +2005,7 @@
]
},
{
"description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.",
"description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.",
"type": "string",
"enum": [
"fs:scope-public"
@@ -2026,7 +2026,7 @@
]
},
{
"description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.",
"description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.",
"type": "string",
"enum": [
"fs:scope-resource"
@@ -2047,7 +2047,7 @@
]
},
{
"description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.",
"description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.",
"type": "string",
"enum": [
"fs:scope-runtime"
@@ -2068,7 +2068,7 @@
]
},
{
"description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP`folder.",
"description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP` folder.",
"type": "string",
"enum": [
"fs:scope-temp"
@@ -2089,7 +2089,7 @@
]
},
{
"description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.",
"description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.",
"type": "string",
"enum": [
"fs:scope-template"
@@ -2110,7 +2110,7 @@
]
},
{
"description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.",
"description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.",
"type": "string",
"enum": [
"fs:scope-video"
@@ -2427,7 +2427,7 @@
]
},
"cmd": {
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"type": "string"
},
"name": {
@@ -2462,7 +2462,7 @@
]
},
"cmd": {
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
"type": "string"
},
"name": {
@@ -4746,42 +4746,42 @@
]
},
{
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the application folders, including file listing and statistics.",
"type": "string",
"enum": [
"fs:allow-app-meta"
]
},
{
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the application folders, including file listing and statistics.",
"type": "string",
"enum": [
"fs:allow-app-meta-recursive"
]
},
{
"description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.",
"description": "fs:allow-app-read -> This allows non-recursive read access to the application folders.",
"type": "string",
"enum": [
"fs:allow-app-read"
]
},
{
"description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete `$APP` folder, files and subdirectories.",
"description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete application folders, files and subdirectories.",
"type": "string",
"enum": [
"fs:allow-app-read-recursive"
]
},
{
"description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.",
"description": "fs:allow-app-write -> This allows non-recursive write access to the application folders.",
"type": "string",
"enum": [
"fs:allow-app-write"
]
},
{
"description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete `$APP` folder, files and subdirectories.",
"description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete application folders, files and subdirectories.",
"type": "string",
"enum": [
"fs:allow-app-write-recursive"
@@ -6209,28 +6209,28 @@
]
},
{
"description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.",
"description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the application folders.",
"type": "string",
"enum": [
"fs:scope-app"
]
},
{
"description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.",
"description": "fs:scope-app-index -> This scope permits to list all files and folders in the application directories.",
"type": "string",
"enum": [
"fs:scope-app-index"
]
},
{
"description": "fs:scope-app-recursive -> This scope permits recursive access to the complete `$APP` folder, including sub directories and files.",
"description": "fs:scope-app-recursive -> This scope permits recursive access to the complete application folders, including sub directories and files.",
"type": "string",
"enum": [
"fs:scope-app-recursive"
]
},
{
"description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.",
"description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.",
"type": "string",
"enum": [
"fs:scope-appcache"
@@ -6251,7 +6251,7 @@
]
},
{
"description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.",
"description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.",
"type": "string",
"enum": [
"fs:scope-appconfig"
@@ -6272,7 +6272,7 @@
]
},
{
"description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.",
"description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.",
"type": "string",
"enum": [
"fs:scope-appdata"
@@ -6293,7 +6293,7 @@
]
},
{
"description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.",
"description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.",
"type": "string",
"enum": [
"fs:scope-applocaldata"
@@ -6314,7 +6314,7 @@
]
},
{
"description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.",
"description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.",
"type": "string",
"enum": [
"fs:scope-applog"
@@ -6335,7 +6335,7 @@
]
},
{
"description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.",
"description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.",
"type": "string",
"enum": [
"fs:scope-audio"
@@ -6356,7 +6356,7 @@
]
},
{
"description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE`folder.",
"description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE` folder.",
"type": "string",
"enum": [
"fs:scope-cache"
@@ -6377,7 +6377,7 @@
]
},
{
"description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.",
"description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.",
"type": "string",
"enum": [
"fs:scope-config"
@@ -6398,7 +6398,7 @@
]
},
{
"description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA`folder.",
"description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA` folder.",
"type": "string",
"enum": [
"fs:scope-data"
@@ -6419,7 +6419,7 @@
]
},
{
"description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.",
"description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.",
"type": "string",
"enum": [
"fs:scope-desktop"
@@ -6440,7 +6440,7 @@
]
},
{
"description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.",
"description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.",
"type": "string",
"enum": [
"fs:scope-document"
@@ -6461,7 +6461,7 @@
]
},
{
"description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.",
"description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.",
"type": "string",
"enum": [
"fs:scope-download"
@@ -6482,7 +6482,7 @@
]
},
{
"description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE`folder.",
"description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE` folder.",
"type": "string",
"enum": [
"fs:scope-exe"
@@ -6503,7 +6503,7 @@
]
},
{
"description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT`folder.",
"description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT` folder.",
"type": "string",
"enum": [
"fs:scope-font"
@@ -6524,7 +6524,7 @@
]
},
{
"description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME`folder.",
"description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME` folder.",
"type": "string",
"enum": [
"fs:scope-home"
@@ -6545,7 +6545,7 @@
]
},
{
"description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.",
"description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.",
"type": "string",
"enum": [
"fs:scope-localdata"
@@ -6566,7 +6566,7 @@
]
},
{
"description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG`folder.",
"description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG` folder.",
"type": "string",
"enum": [
"fs:scope-log"
@@ -6587,7 +6587,7 @@
]
},
{
"description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.",
"description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.",
"type": "string",
"enum": [
"fs:scope-picture"
@@ -6608,7 +6608,7 @@
]
},
{
"description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.",
"description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.",
"type": "string",
"enum": [
"fs:scope-public"
@@ -6629,7 +6629,7 @@
]
},
{
"description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.",
"description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.",
"type": "string",
"enum": [
"fs:scope-resource"
@@ -6650,7 +6650,7 @@
]
},
{
"description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.",
"description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.",
"type": "string",
"enum": [
"fs:scope-runtime"
@@ -6671,7 +6671,7 @@
]
},
{
"description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP`folder.",
"description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP` folder.",
"type": "string",
"enum": [
"fs:scope-temp"
@@ -6692,7 +6692,7 @@
]
},
{
"description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.",
"description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.",
"type": "string",
"enum": [
"fs:scope-template"
@@ -6713,7 +6713,7 @@
]
},
{
"description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.",
"description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.",
"type": "string",
"enum": [
"fs:scope-video"
+3 -2
View File
@@ -45,6 +45,8 @@ pub fn run() {
app.handle().plugin(tauri_plugin_cli::init())?;
app.handle()
.plugin(tauri_plugin_global_shortcut::Builder::new().build())?;
app.handle()
.plugin(tauri_plugin_window_state::Builder::new().build())?;
app.handle()
.plugin(tauri_plugin_updater::Builder::new().build())?;
}
@@ -63,8 +65,7 @@ pub fn run() {
.user_agent(&format!("Tauri API - {}", std::env::consts::OS))
.title("Tauri API Validation")
.inner_size(1000., 800.)
.min_inner_size(600., 400.)
.content_protected(true);
.min_inner_size(600., 400.);
}
#[cfg(target_os = "windows")]
+1 -1
View File
@@ -1,5 +1,5 @@
{
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
"productName": "Tauri API",
"version": "2.0.0",
"identifier": "com.tauri.api",
+28 -29
View File
@@ -1,59 +1,59 @@
<script>
import * as clipboard from "@tauri-apps/plugin-clipboard-manager";
import { open } from "@tauri-apps/plugin-dialog";
import { arrayBufferToBase64 } from "../lib/utils";
import { readFile } from "@tauri-apps/plugin-fs";
import * as clipboard from '@tauri-apps/plugin-clipboard-manager'
import { open } from '@tauri-apps/plugin-dialog'
import { arrayBufferToBase64 } from '../lib/utils'
import { readFile } from '@tauri-apps/plugin-fs'
export let onMessage;
export let insecureRenderHtml;
let text = "clipboard message";
export let onMessage
export let insecureRenderHtml
let text = 'clipboard message'
function writeText() {
clipboard
.writeText(text)
.then(() => {
onMessage("Wrote to the clipboard");
onMessage('Wrote to the clipboard')
})
.catch(onMessage);
.catch(onMessage)
}
async function writeImage() {
try {
const res = await open({
title: "Image to write to clipboard",
const path = await open({
title: 'Image to write to clipboard',
filters: [
{
name: "Clipboard IMG",
extensions: ["png", "jpg", "jpeg"],
},
],
});
const bytes = await readFile(res.path);
await clipboard.writeImage(bytes);
onMessage("wrote image");
name: 'Clipboard IMG',
extensions: ['png', 'jpg', 'jpeg']
}
]
})
const bytes = await readFile(path)
await clipboard.writeImage(bytes)
onMessage('wrote image')
} catch (e) {
onMessage(e);
onMessage(e)
}
}
async function read() {
try {
const image = await clipboard.readImage();
const image = await clipboard.readImage()
arrayBufferToBase64(await image.rgba(), function (base64) {
const src = "data:image/png;base64," + base64;
insecureRenderHtml('<img src="' + src + '"></img>');
});
return;
const src = 'data:image/png;base64,' + base64
insecureRenderHtml('<img src="' + src + '"></img>')
})
return
} catch (_) {}
clipboard
.readText()
.then((contents) => {
onMessage(`Clipboard contents: ${contents}`);
onMessage(`Clipboard contents: ${contents}`)
})
.catch((e) => {
onMessage(e);
});
onMessage(e)
})
}
</script>
@@ -65,6 +65,5 @@
/>
<button class="btn" type="button" on:click={writeText}>Write</button>
<button class="btn" type="button" on:click={writeImage}>Pick Image</button>
<button class="btn" type="button" on:click={read}>Read</button>
</div>
+1 -1
View File
@@ -20,7 +20,7 @@
"eslint-config-prettier": "9.1.0",
"eslint-plugin-security": "3.0.1",
"prettier": "3.3.3",
"rollup": "4.21.2",
"rollup": "4.21.3",
"tslib": "2.7.0",
"typescript": "5.6.2",
"typescript-eslint": "8.5.0"
@@ -295,53 +295,39 @@
"type": "string",
"oneOf": [
{
"description": "allow-disable -> Enables the disable command without any pre-configured scope.",
"description": "Enables the disable command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-disable"
]
"const": "allow-disable"
},
{
"description": "deny-disable -> Denies the disable command without any pre-configured scope.",
"description": "Denies the disable command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-disable"
]
"const": "deny-disable"
},
{
"description": "allow-enable -> Enables the enable command without any pre-configured scope.",
"description": "Enables the enable command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-enable"
]
"const": "allow-enable"
},
{
"description": "deny-enable -> Denies the enable command without any pre-configured scope.",
"description": "Denies the enable command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-enable"
]
"const": "deny-enable"
},
{
"description": "allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.",
"description": "Enables the is_enabled command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-is-enabled"
]
"const": "allow-is-enabled"
},
{
"description": "deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.",
"description": "Denies the is_enabled command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-is-enabled"
]
"const": "deny-is-enabled"
},
{
"description": "default -> This permission set configures if your\napplication can enable or disable auto\nstarting the application on boot.\n\n#### Granted Permissions\n\nIt allows all to check, enable and\ndisable the automatic start on boot.\n\n",
"description": "This permission set configures if your\napplication can enable or disable auto\nstarting the application on boot.\n\n#### Granted Permissions\n\nIt allows all to check, enable and\ndisable the automatic start on boot.\n\n",
"type": "string",
"enum": [
"default"
]
"const": "default"
}
]
}
+4
View File
@@ -1,5 +1,9 @@
# Changelog
## \[2.0.0-rc.2]
- [`79d6e19c`](https://github.com/tauri-apps/plugins-workspace/commit/79d6e19c4b38bae0cab29eb88df379e2237d9aac) ([#1777](https://github.com/tauri-apps/plugins-workspace/pull/1777)) Fixed an issue which caused checkPermission and requestPermission to be mixed up.
## \[2.0.0-rc.4]
- [`713c54ef`](https://github.com/tauri-apps/plugins-workspace/commit/713c54ef8365d36afd84585dcabed2fbb751223d) ([#1749](https://github.com/tauri-apps/plugins-workspace/pull/1749) by [@olivierlemasle](https://github.com/tauri-apps/plugins-workspace/../../olivierlemasle)) Remove unused Android dependencies.
+2 -2
View File
@@ -4,8 +4,8 @@
import {
invoke,
requestPermissions as checkPermissions_,
checkPermissions as requestPermissions_
requestPermissions as requestPermissions_,
checkPermissions as checkPermissions_
} from '@tauri-apps/api/core'
export type { PermissionState } from '@tauri-apps/api/core'
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-barcode-scanner",
"version": "2.0.0-rc.1",
"version": "2.0.0-rc.2",
"description": "Scan QR codes, EAN-13 and other kinds of barcodes on Android and iOS",
"license": "MIT or APACHE-2.0",
"authors": [
@@ -295,95 +295,69 @@
"type": "string",
"oneOf": [
{
"description": "allow-cancel -> Enables the cancel command without any pre-configured scope.",
"description": "Enables the cancel command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-cancel"
]
"const": "allow-cancel"
},
{
"description": "deny-cancel -> Denies the cancel command without any pre-configured scope.",
"description": "Denies the cancel command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-cancel"
]
"const": "deny-cancel"
},
{
"description": "allow-check-permissions -> Enables the check_permissions command without any pre-configured scope.",
"description": "Enables the check_permissions command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-check-permissions"
]
"const": "allow-check-permissions"
},
{
"description": "deny-check-permissions -> Denies the check_permissions command without any pre-configured scope.",
"description": "Denies the check_permissions command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-check-permissions"
]
"const": "deny-check-permissions"
},
{
"description": "allow-open-app-settings -> Enables the open_app_settings command without any pre-configured scope.",
"description": "Enables the open_app_settings command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-open-app-settings"
]
"const": "allow-open-app-settings"
},
{
"description": "deny-open-app-settings -> Denies the open_app_settings command without any pre-configured scope.",
"description": "Denies the open_app_settings command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-open-app-settings"
]
"const": "deny-open-app-settings"
},
{
"description": "allow-request-permissions -> Enables the request_permissions command without any pre-configured scope.",
"description": "Enables the request_permissions command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-request-permissions"
]
"const": "allow-request-permissions"
},
{
"description": "deny-request-permissions -> Denies the request_permissions command without any pre-configured scope.",
"description": "Denies the request_permissions command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-request-permissions"
]
"const": "deny-request-permissions"
},
{
"description": "allow-scan -> Enables the scan command without any pre-configured scope.",
"description": "Enables the scan command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-scan"
]
"const": "allow-scan"
},
{
"description": "deny-scan -> Denies the scan command without any pre-configured scope.",
"description": "Denies the scan command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-scan"
]
"const": "deny-scan"
},
{
"description": "allow-vibrate -> Enables the vibrate command without any pre-configured scope.",
"description": "Enables the vibrate command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-vibrate"
]
"const": "allow-vibrate"
},
{
"description": "deny-vibrate -> Denies the vibrate command without any pre-configured scope.",
"description": "Denies the vibrate command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-vibrate"
]
"const": "deny-vibrate"
},
{
"description": "default -> This permission set configures which\nbarcode scanning features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all barcode related features.\n\n",
"description": "This permission set configures which\nbarcode scanning features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all barcode related features.\n\n",
"type": "string",
"enum": [
"default"
]
"const": "default"
}
]
}
@@ -295,39 +295,29 @@
"type": "string",
"oneOf": [
{
"description": "allow-authenticate -> Enables the authenticate command without any pre-configured scope.",
"description": "Enables the authenticate command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-authenticate"
]
"const": "allow-authenticate"
},
{
"description": "deny-authenticate -> Denies the authenticate command without any pre-configured scope.",
"description": "Denies the authenticate command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-authenticate"
]
"const": "deny-authenticate"
},
{
"description": "allow-status -> Enables the status command without any pre-configured scope.",
"description": "Enables the status command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-status"
]
"const": "allow-status"
},
{
"description": "deny-status -> Denies the status command without any pre-configured scope.",
"description": "Denies the status command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-status"
]
"const": "deny-status"
},
{
"description": "default -> This permission set configures which\nbiometric features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all biometric commands.\n\n",
"description": "This permission set configures which\nbiometric features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all biometric commands.\n\n",
"type": "string",
"enum": [
"default"
]
"const": "default"
}
]
}
+6 -12
View File
@@ -295,25 +295,19 @@
"type": "string",
"oneOf": [
{
"description": "allow-cli-matches -> Enables the cli_matches command without any pre-configured scope.",
"description": "Enables the cli_matches command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-cli-matches"
]
"const": "allow-cli-matches"
},
{
"description": "deny-cli-matches -> Denies the cli_matches command without any pre-configured scope.",
"description": "Denies the cli_matches command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-cli-matches"
]
"const": "deny-cli-matches"
},
{
"description": "default -> Allows reading the CLI matches",
"description": "Allows reading the CLI matches",
"type": "string",
"enum": [
"default"
]
"const": "default"
}
]
}
+4
View File
@@ -1,5 +1,9 @@
# Changelog
## \[2.0.0-rc.2]
- [`341a5320`](https://github.com/tauri-apps/plugins-workspace/commit/341a5320c33d3c7b041abf7eb0ab7ad8009e6c3f) ([#1771](https://github.com/tauri-apps/plugins-workspace/pull/1771)) Fix warnings and clear implementation on Android below SDK 28.
## \[2.0.0-rc.1]
- [`e2e97db5`](https://github.com/tauri-apps/plugins-workspace/commit/e2e97db51983267f5be84d4f6f0278d58834d1f5) ([#1701](https://github.com/tauri-apps/plugins-workspace/pull/1701) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Update to tauri 2.0.0-rc.8
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-clipboard-manager"
version = "2.0.0-rc.3"
version = "2.0.0-rc.4"
description = "Read and write to the system clipboard."
edition = { workspace = true }
authors = { workspace = true }
@@ -4,12 +4,12 @@
package app.tauri.clipboard
import android.R.attr.value
import android.app.Activity
import android.content.ClipData
import android.content.ClipDescription
import android.content.ClipboardManager
import android.content.Context
import android.os.Build
import app.tauri.annotation.Command
import app.tauri.annotation.InvokeArg
import app.tauri.annotation.TauriPlugin
@@ -59,6 +59,9 @@ internal class ReadClipDataSerializer @JvmOverloads constructor(t: Class<ReadCli
jgen.writeEndObject()
}
else -> {
throw Exception("unimplemented ReadClipData")
}
}
jgen.writeEndObject()
@@ -93,7 +96,7 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) {
is WriteOptions.PlainText -> {
ClipData.newPlainText(args.label, args.text)
} else -> {
invoke.reject("Invalid write options provided")
invoke.reject("unimplemented WriteOptions")
return
}
@@ -128,7 +131,11 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) {
@Command
fun clear(invoke: Invoke) {
if (manager.hasPrimaryClip()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
manager.clearPrimaryClip()
} else {
manager.setPrimaryClip(ClipData.newPlainText("", ""))
}
}
invoke.resolve()
}
@@ -114,6 +114,11 @@ async function writeHtml(html: string, altHtml?: string): Promise<void> {
/**
* Clears the clipboard.
*
* #### Platform-specific
*
* - **Android:** Only supported on SDK 28+. For older releases we write an empty string to the clipboard instead.
*
* @example
* ```typescript
* import { clear } from '@tauri-apps/plugin-clipboard-manager';
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-clipboard-manager",
"version": "2.0.0-rc.1",
"version": "2.0.0-rc.2",
"license": "MIT or APACHE-2.0",
"authors": [
"Tauri Programme within The Commons Conservancy"
@@ -295,95 +295,69 @@
"type": "string",
"oneOf": [
{
"description": "allow-clear -> Enables the clear command without any pre-configured scope.",
"description": "Enables the clear command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-clear"
]
"const": "allow-clear"
},
{
"description": "deny-clear -> Denies the clear command without any pre-configured scope.",
"description": "Denies the clear command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-clear"
]
"const": "deny-clear"
},
{
"description": "allow-read-image -> Enables the read_image command without any pre-configured scope.",
"description": "Enables the read_image command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-read-image"
]
"const": "allow-read-image"
},
{
"description": "deny-read-image -> Denies the read_image command without any pre-configured scope.",
"description": "Denies the read_image command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-read-image"
]
"const": "deny-read-image"
},
{
"description": "allow-read-text -> Enables the read_text command without any pre-configured scope.",
"description": "Enables the read_text command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-read-text"
]
"const": "allow-read-text"
},
{
"description": "deny-read-text -> Denies the read_text command without any pre-configured scope.",
"description": "Denies the read_text command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-read-text"
]
"const": "deny-read-text"
},
{
"description": "allow-write-html -> Enables the write_html command without any pre-configured scope.",
"description": "Enables the write_html command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-write-html"
]
"const": "allow-write-html"
},
{
"description": "deny-write-html -> Denies the write_html command without any pre-configured scope.",
"description": "Denies the write_html command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-write-html"
]
"const": "deny-write-html"
},
{
"description": "allow-write-image -> Enables the write_image command without any pre-configured scope.",
"description": "Enables the write_image command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-write-image"
]
"const": "allow-write-image"
},
{
"description": "deny-write-image -> Denies the write_image command without any pre-configured scope.",
"description": "Denies the write_image command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-write-image"
]
"const": "deny-write-image"
},
{
"description": "allow-write-text -> Enables the write_text command without any pre-configured scope.",
"description": "Enables the write_text command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-write-text"
]
"const": "allow-write-text"
},
{
"description": "deny-write-text -> Denies the write_text command without any pre-configured scope.",
"description": "Denies the write_text command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-write-text"
]
"const": "deny-write-text"
},
{
"description": "default -> No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n",
"description": "No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n",
"type": "string",
"enum": [
"default"
]
"const": "default"
}
]
}
+17
View File
@@ -1,5 +1,19 @@
# Changelog
## \[2.0.0-rc.6]
- [`6f3f6679`](https://github.com/tauri-apps/plugins-workspace/commit/6f3f66794a87ef9d1c16667c425d5ad7091a9c2f) ([#1780](https://github.com/tauri-apps/plugins-workspace/pull/1780)) Added `DeepLink::on_open_url` function to match the JavaScript API implementation,
which wraps the `deep-link://new-url` event and also send the current deep link if there's any.
## \[2.0.0-rc.5]
- [`984110a9`](https://github.com/tauri-apps/plugins-workspace/commit/984110a978774712bad4d746ed06134d54debcd0) ([#1770](https://github.com/tauri-apps/plugins-workspace/pull/1770) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Emit the `deep-link://new-url` event on Linux and Windows when the app is executed with a deep link CLI argument,
matching the iOS and macOS behavior.
## \[2.0.0-rc.2]
- [`64a6240f`](https://github.com/tauri-apps/plugins-workspace/commit/64a6240f79fcd52267c8d721b727ae695055d7ff) ([#1759](https://github.com/tauri-apps/plugins-workspace/pull/1759) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Implement `get_current` on Linux and Windows.
## \[2.0.0-rc.3]
- [`4654591d`](https://github.com/tauri-apps/plugins-workspace/commit/4654591d820403d6fa1a007fd55bb0d85947a6cc) ([#1732](https://github.com/tauri-apps/plugins-workspace/pull/1732) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Allow empty configuration values.
@@ -104,3 +118,6 @@
- [`eccd6f9`](https://github.com/tauri-apps/plugins-workspace/commit/eccd6f977af7629255b6f5a5205666c9079a86ed)([#504](https://github.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
commit/eccd6f977af7629255b6f5a5205666c9079a86ed)([#504](https://github.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
ithub.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
]\(https://github.com/tauri-apps/plugins-workspace/commit/eccd6f977af7629255b6f5a5205666c9079a86ed)([#504](https://github.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
commit/eccd6f977af7629255b6f5a5205666c9079a86ed)([#504](https://github.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
ithub.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-deep-link"
version = "2.0.0-rc.3"
version = "2.0.0-rc.6"
description = "Set your Tauri application as the default handler for an URL"
authors = { workspace = true }
license = { workspace = true }
+1 -1
View File
@@ -145,7 +145,7 @@ await onOpenUrl((urls) => {
})
```
Note that the Plugin will only emit events on macOS, iOS and Android. On Windows and Linux the OS will spawn a new instance of your app with the URL as a CLI argument. If you want your app to behave on Windows & Linux similar to the other platforms you can use the [single-instance](../single-instance/) plugin.
Note that the Plugin will only emit events on macOS, iOS and Android. On Windows and Linux the OS will spawn a new instance of your app with the URL as a CLI argument. If you want your app to behave on Windows & Linux similar to the other platforms you can use the [single-instance](../single-instance/) plugin with the `deep-link` feature enabled.
## Contributing
@@ -21,3 +21,5 @@ dist-ssr
*.njsproj
*.sln
*.sw?
dist/
@@ -1,5 +1,11 @@
# Changelog
## \[2.0.0-rc.1]
### Dependencies
- Upgraded to `deep-link-js@2.0.0-rc.2`
## \[2.0.0-rc.0]
### Dependencies
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "deep-link-example",
"private": true,
"version": "2.0.0-rc.0",
"version": "2.0.0-rc.1",
"type": "module",
"scripts": {
"dev": "vite",
@@ -11,10 +11,10 @@
},
"dependencies": {
"@tauri-apps/api": "2.0.0-rc.4",
"@tauri-apps/plugin-deep-link": "2.0.0-rc.1"
"@tauri-apps/plugin-deep-link": "2.0.0-rc.2"
},
"devDependencies": {
"@tauri-apps/cli": "2.0.0-rc.12",
"@tauri-apps/cli": "2.0.0-rc.14",
"typescript": "^5.2.2",
"vite": "^5.0.13"
}
@@ -22,6 +22,9 @@ serde_json = { workspace = true }
tauri = { workspace = true, features = ["wry", "compression"] }
tauri-plugin-deep-link = { path = "../../../" }
tauri-plugin-log = { path = "../../../../log" }
tauri-plugin-single-instance = { path = "../../../../single-instance", features = [
"deep-link",
] }
log = "0.4"
[features]
@@ -41,15 +41,6 @@
<data android:host="tauri.app" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="91f4-177-23-156-161.ngrok-free.app" />
<data android:pathPrefix="/open" />
</intent-filter>
<!-- DEEP LINK PLUGIN. AUTO-GENERATED. DO NOT REMOVE. -->
</activity>
@@ -17,7 +17,7 @@
<key>CFBundleShortVersionString</key>
<string>0.0.0</string>
<key>CFBundleVersion</key>
<string>0.0.0</string>
<string>0.1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
@@ -6,7 +6,6 @@
<array>
<string>applinks:fabianlars.de</string>
<string>applinks:tauri.app</string>
<string>applinks:91f4-177-23-156-161.ngrok-free.app</string>
</array>
</dict>
</plist>
@@ -2,17 +2,27 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
use tauri::Listener;
use tauri_plugin_deep_link::DeepLinkExt;
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}! You've been greeted from Rust!", name)
format!("Hello, {name}! You've been greeted from Rust!")
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
#[allow(unused_mut)]
let mut builder = tauri::Builder::default();
#[cfg(desktop)]
{
builder = builder.plugin(tauri_plugin_single_instance::init(|_app, argv, _cwd| {
println!("single instance triggered: {argv:?}");
}));
}
builder
.plugin(tauri_plugin_deep_link::init())
.plugin(
tauri_plugin_log::Builder::default()
@@ -20,9 +30,17 @@ pub fn run() {
.build(),
)
.setup(|app| {
app.listen("deep-link://new-url", |url| {
dbg!(url);
// ensure deep links are registered on the system
// this is useful because AppImages requires additional setup to be available in the system
// and calling register() makes the deep links immediately available - without any user input
// additionally, we manually register on Windows on debug builds for development
#[cfg(any(target_os = "linux", all(debug_assertions, windows)))]
app.deep_link().register_all()?;
app.deep_link().on_open_url(|event| {
dbg!(event.urls());
});
Ok(())
})
.invoke_handler(tauri::generate_handler![greet])
@@ -29,8 +29,13 @@
},
"deep-link": {
"mobile": [
{ "host": "fabianlars.de", "pathPrefix": ["/intent"] },
{ "host": "tauri.app" }
{
"host": "fabianlars.de",
"pathPrefix": ["/intent"]
},
{
"host": "tauri.app"
}
],
"desktop": {
"schemes": ["fabianlars", "my-tauri-app"]
+3 -1
View File
@@ -14,7 +14,9 @@ import { type UnlistenFn, listen } from '@tauri-apps/api/event'
* const urls = await getCurrent();
* ```
*
* #### - **Windows / Linux**: Unsupported.
* #### - **Windows / Linux**: This function reads the command line arguments and checks if there's only one value, which must be an URL with scheme matching one of the configured values.
* Note that you must manually check the arguments when registering deep link schemes dynamically with [`Self::register`].
* Additionally, the deep link might have been provided as a CLI argument so you should check if its format matches what you expect..
*
* @since 2.0.0
*/
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@tauri-apps/plugin-deep-link",
"version": "2.0.0-rc.1",
"version": "2.0.0-rc.2",
"description": "Set your Tauri application as the default handler for an URL",
"license": "MIT or APACHE-2.0",
"authors": [
@@ -295,67 +295,49 @@
"type": "string",
"oneOf": [
{
"description": "allow-get-current -> Enables the get_current command without any pre-configured scope.",
"description": "Enables the get_current command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-get-current"
]
"const": "allow-get-current"
},
{
"description": "deny-get-current -> Denies the get_current command without any pre-configured scope.",
"description": "Denies the get_current command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-get-current"
]
"const": "deny-get-current"
},
{
"description": "allow-is-registered -> Enables the is_registered command without any pre-configured scope.",
"description": "Enables the is_registered command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-is-registered"
]
"const": "allow-is-registered"
},
{
"description": "deny-is-registered -> Denies the is_registered command without any pre-configured scope.",
"description": "Denies the is_registered command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-is-registered"
]
"const": "deny-is-registered"
},
{
"description": "allow-register -> Enables the register command without any pre-configured scope.",
"description": "Enables the register command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-register"
]
"const": "allow-register"
},
{
"description": "deny-register -> Denies the register command without any pre-configured scope.",
"description": "Denies the register command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-register"
]
"const": "deny-register"
},
{
"description": "allow-unregister -> Enables the unregister command without any pre-configured scope.",
"description": "Enables the unregister command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-unregister"
]
"const": "allow-unregister"
},
{
"description": "deny-unregister -> Denies the unregister command without any pre-configured scope.",
"description": "Denies the unregister command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-unregister"
]
"const": "deny-unregister"
},
{
"description": "default -> Allows reading the opened deep link via the get_current command",
"description": "Allows reading the opened deep link via the get_current command",
"type": "string",
"enum": [
"default"
]
"const": "default"
}
]
}
+26 -3
View File
@@ -7,7 +7,7 @@
use serde::{Deserialize, Deserializer};
use tauri_utils::config::DeepLinkProtocol;
#[derive(Deserialize)]
#[derive(Deserialize, Clone)]
pub struct AssociatedDomain {
#[serde(deserialize_with = "deserialize_associated_host")]
pub host: String,
@@ -29,7 +29,7 @@ where
}
}
#[derive(Deserialize)]
#[derive(Deserialize, Clone)]
pub struct Config {
/// Mobile requires `https://<host>` urls.
#[serde(default)]
@@ -41,7 +41,7 @@ pub struct Config {
pub desktop: DesktopProtocol,
}
#[derive(Deserialize)]
#[derive(Deserialize, Clone)]
#[serde(untagged)]
#[allow(unused)] // Used in tauri-bundler
pub enum DesktopProtocol {
@@ -54,3 +54,26 @@ impl Default for DesktopProtocol {
Self::List(Vec::new())
}
}
impl DesktopProtocol {
#[allow(dead_code)]
pub fn contains_scheme(&self, scheme: &String) -> bool {
match self {
Self::One(protocol) => protocol.schemes.contains(scheme),
Self::List(protocols) => protocols
.iter()
.any(|protocol| protocol.schemes.contains(scheme)),
}
}
#[allow(dead_code)]
pub fn schemes(&self) -> Vec<String> {
match self {
Self::One(protocol) => protocol.schemes.clone(),
Self::List(protocols) => protocols
.iter()
.flat_map(|protocol| protocol.schemes.clone())
.collect(),
}
}
}
+145 -19
View File
@@ -2,10 +2,11 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
use serde::de::DeserializeOwned;
use std::sync::Arc;
use tauri::{
plugin::{Builder, PluginApi, TauriPlugin},
AppHandle, Manager, Runtime,
AppHandle, EventId, Listener, Manager, Runtime,
};
mod commands;
@@ -17,12 +18,14 @@ pub use error::{Error, Result};
#[cfg(target_os = "android")]
const PLUGIN_IDENTIFIER: &str = "app.tauri.deep_link";
fn init_deep_link<R: Runtime, C: DeserializeOwned>(
fn init_deep_link<R: Runtime>(
app: &AppHandle<R>,
_api: PluginApi<R, C>,
api: PluginApi<R, Option<config::Config>>,
) -> crate::Result<DeepLink<R>> {
#[cfg(target_os = "android")]
{
let _api = api;
use tauri::{
ipc::{Channel, InvokeResponseBody},
Emitter,
@@ -56,22 +59,38 @@ fn init_deep_link<R: Runtime, C: DeserializeOwned>(
},
)?;
return Ok(DeepLink(handle));
return Ok(DeepLink {
app: app.clone(),
plugin_handle: handle,
});
}
#[cfg(not(target_os = "android"))]
Ok(DeepLink {
#[cfg(target_os = "ios")]
return Ok(DeepLink {
app: app.clone(),
current: Default::default(),
})
config: api.config().clone(),
});
#[cfg(desktop)]
{
let args = std::env::args();
let deep_link = DeepLink {
app: app.clone(),
current: Default::default(),
config: api.config().clone(),
};
deep_link.handle_cli_arguments(args);
Ok(deep_link)
}
}
#[cfg(target_os = "android")]
mod imp {
use tauri::{plugin::PluginHandle, Runtime};
use tauri::{ipc::Channel, plugin::PluginHandle, AppHandle, Runtime};
use serde::{Deserialize, Serialize};
use tauri::ipc::Channel;
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
@@ -86,16 +105,21 @@ mod imp {
}
/// Access to the deep-link APIs.
pub struct DeepLink<R: Runtime>(pub(crate) PluginHandle<R>);
pub struct DeepLink<R: Runtime> {
pub(crate) app: AppHandle<R>,
pub(crate) plugin_handle: PluginHandle<R>,
}
impl<R: Runtime> DeepLink<R> {
/// Get the current URLs that triggered the deep link. Use this on app load to check whether your app was started via a deep link.
///
/// ## Platform-specific:
///
/// - **Windows / Linux**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
/// - **Windows / Linux**: This function reads the command line arguments and checks if there's only one value, which must be an URL with scheme matching one of the configured values.
/// Note that you must manually check the arguments when registering deep link schemes dynamically with [`Self::register`].
/// Additionally, the deep link might have been provided as a CLI argument so you should check if its format matches what you expect.
pub fn get_current(&self) -> crate::Result<Option<Vec<url::Url>>> {
self.0
self.plugin_handle
.run_mobile_plugin::<GetCurrentResponse>("getCurrent", ())
.map(|v| v.url.map(|url| vec![url]))
.map_err(Into::into)
@@ -154,23 +178,76 @@ mod imp {
/// Access to the deep-link APIs.
pub struct DeepLink<R: Runtime> {
#[allow(dead_code)]
pub(crate) app: AppHandle<R>,
#[allow(dead_code)]
pub(crate) current: Mutex<Option<Vec<url::Url>>>,
pub(crate) config: Option<crate::config::Config>,
}
impl<R: Runtime> DeepLink<R> {
/// Checks if the provided list of arguments (which should match [`std::env::args`])
/// contains a deep link argument (for Linux and Windows).
///
/// On Linux and Windows the deep links trigger a new app instance with the deep link URL as its only argument.
///
/// This function does what it can to verify if the argument is actually a deep link, though it could also be a regular CLI argument.
/// To enhance its checks, we only match deep links against the schemes defined in the Tauri configuration
/// i.e. dynamic schemes WON'T be processed.
///
/// This function updates the [`Self::get_current`] value and emits a `deep-link://new-url` event.
#[cfg(desktop)]
pub fn handle_cli_arguments<S: AsRef<str>, I: Iterator<Item = S>>(&self, mut args: I) {
use tauri::Emitter;
let Some(config) = &self.config else {
return;
};
if cfg!(windows) || cfg!(target_os = "linux") {
args.next(); // bin name
let arg = args.next();
let maybe_deep_link = args.next().is_none(); // single argument
if !maybe_deep_link {
return;
}
if let Some(url) = arg.and_then(|arg| arg.as_ref().parse::<url::Url>().ok()) {
if config.desktop.contains_scheme(&url.scheme().to_string()) {
let mut current = self.current.lock().unwrap();
current.replace(vec![url.clone()]);
let _ = self.app.emit("deep-link://new-url", vec![url]);
} else if cfg!(debug_assertions) {
log::warn!("argument {url} does not match any configured deep link scheme; skipping it");
}
}
}
}
/// Get the current URLs that triggered the deep link. Use this on app load to check whether your app was started via a deep link.
///
/// ## Platform-specific:
///
/// - **Windows / Linux**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
/// - **Windows / Linux**: This function reads the command line arguments and checks if there's only one value, which must be an URL with scheme matching one of the configured values.
/// Note that you must manually check the arguments when registering deep link schemes dynamically with [`Self::register`].
/// Additionally, the deep link might have been provided as a CLI argument so you should check if its format matches what you expect.
pub fn get_current(&self) -> crate::Result<Option<Vec<url::Url>>> {
#[cfg(not(any(windows, target_os = "linux")))]
return Ok(self.current.lock().unwrap().clone());
#[cfg(any(windows, target_os = "linux"))]
Err(crate::Error::UnsupportedPlatform)
}
/// Registers all schemes defined in the configuration file.
///
/// This is useful to ensure the schemes are registered even if the user did not install the app properly
/// (e.g. an AppImage that was not properly registered with an AppImage launcher).
pub fn register_all(&self) -> crate::Result<()> {
let Some(config) = &self.config else {
return Ok(());
};
for scheme in config.desktop.schemes() {
self.register(scheme)?;
}
Ok(())
}
/// Register the app as the default handler for the specified protocol.
@@ -367,6 +444,7 @@ mod imp {
}
pub use imp::DeepLink;
use url::Url;
/// Extensions to [`tauri::App`], [`tauri::AppHandle`], [`tauri::WebviewWindow`], [`tauri::Webview`] and [`tauri::Window`] to access the deep-link APIs.
pub trait DeepLinkExt<R: Runtime> {
@@ -379,6 +457,54 @@ impl<R: Runtime, T: Manager<R>> crate::DeepLinkExt<R> for T {
}
}
/// Event that is triggered when the app was requested to open a new URL.
///
/// Typed [`tauri::Event`].
pub struct OpenUrlEvent {
id: EventId,
urls: Vec<Url>,
}
impl OpenUrlEvent {
/// The event ID which can be used to stop listening to the event via [`tauri::Listener::unlisten`].
pub fn id(&self) -> EventId {
self.id
}
/// The event URLs.
pub fn urls(self) -> Vec<Url> {
self.urls
}
}
impl<R: Runtime> DeepLink<R> {
/// Handle a new deep link being triggered to open the app.
///
/// To avoid race conditions, if the app was started with a deep link,
/// the closure gets immediately called with the deep link URL.
pub fn on_open_url<F: Fn(OpenUrlEvent) + Send + Sync + 'static>(&self, f: F) -> EventId {
let f = Arc::new(f);
let f_ = f.clone();
let event_id = self.app.listen("deep-link://new-url", move |event| {
if let Ok(urls) = serde_json::from_str(event.payload()) {
f(OpenUrlEvent {
id: event.id(),
urls,
})
}
});
if let Ok(Some(current)) = self.get_current() {
f_(OpenUrlEvent {
id: event_id,
urls: current,
})
}
event_id
}
}
/// Initializes the plugin.
pub fn init<R: Runtime>() -> TauriPlugin<R, Option<config::Config>> {
Builder::new("deep-link")
+14
View File
@@ -1,5 +1,19 @@
# Changelog
## \[2.0.0-rc.7]
### Dependencies
- Upgraded to `fs@2.0.0-rc.5`
## \[2.0.0-rc.6]
- [`2b898f07`](https://github.com/tauri-apps/plugins-workspace/commit/2b898f078688c57309ca17962bf02e665c406514) ([#1769](https://github.com/tauri-apps/plugins-workspace/pull/1769) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Update Tauri scopes (asset protocol) when using the `open()` command to select directories.
### Dependencies
- Upgraded to `fs@2.0.0-rc.4`
## \[2.0.0-rc.5]
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add utility methods on `FilePath` and `SafeFilePath` enums which are:
+2 -2
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-dialog"
version = "2.0.0-rc.5"
version = "2.0.0-rc.7"
description = "Native system dialogs for opening and saving files along with message dialogs on your Tauri application."
edition = { workspace = true }
authors = { workspace = true }
@@ -27,7 +27,7 @@ tauri = { workspace = true }
log = { workspace = true }
thiserror = { workspace = true }
url = { workspace = true }
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.3" }
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.5" }
[target.'cfg(target_os = "ios")'.dependencies]
tauri = { workspace = true, features = ["wry"] }
+22 -44
View File
@@ -295,81 +295,59 @@
"type": "string",
"oneOf": [
{
"description": "allow-ask -> Enables the ask command without any pre-configured scope.",
"description": "Enables the ask command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-ask"
]
"const": "allow-ask"
},
{
"description": "deny-ask -> Denies the ask command without any pre-configured scope.",
"description": "Denies the ask command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-ask"
]
"const": "deny-ask"
},
{
"description": "allow-confirm -> Enables the confirm command without any pre-configured scope.",
"description": "Enables the confirm command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-confirm"
]
"const": "allow-confirm"
},
{
"description": "deny-confirm -> Denies the confirm command without any pre-configured scope.",
"description": "Denies the confirm command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-confirm"
]
"const": "deny-confirm"
},
{
"description": "allow-message -> Enables the message command without any pre-configured scope.",
"description": "Enables the message command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-message"
]
"const": "allow-message"
},
{
"description": "deny-message -> Denies the message command without any pre-configured scope.",
"description": "Denies the message command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-message"
]
"const": "deny-message"
},
{
"description": "allow-open -> Enables the open command without any pre-configured scope.",
"description": "Enables the open command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-open"
]
"const": "allow-open"
},
{
"description": "deny-open -> Denies the open command without any pre-configured scope.",
"description": "Denies the open command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-open"
]
"const": "deny-open"
},
{
"description": "allow-save -> Enables the save command without any pre-configured scope.",
"description": "Enables the save command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-save"
]
"const": "allow-save"
},
{
"description": "deny-save -> Denies the save command without any pre-configured scope.",
"description": "Denies the save command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-save"
]
"const": "deny-save"
},
{
"description": "default -> This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n",
"description": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n",
"type": "string",
"enum": [
"default"
]
"const": "default"
}
]
}
+14 -5
View File
@@ -132,14 +132,17 @@ pub(crate) async fn open<R: Runtime>(
let res = if options.directory {
#[cfg(desktop)]
{
let tauri_scope = window.state::<tauri::scope::Scopes>();
if options.multiple {
let folders = dialog_builder.blocking_pick_folders();
if let Some(folders) = &folders {
for folder in folders {
if let Ok(path) = folder.clone().into_path() {
if let Some(s) = window.try_fs_scope() {
s.allow_directory(path, options.recursive);
s.allow_directory(&path, options.recursive);
}
tauri_scope.allow_directory(&path, options.directory)?;
}
}
}
@@ -151,8 +154,9 @@ pub(crate) async fn open<R: Runtime>(
if let Some(folder) = &folder {
if let Ok(path) = folder.clone().into_path() {
if let Some(s) = window.try_fs_scope() {
s.allow_directory(path, options.recursive);
s.allow_directory(&path, options.recursive);
}
tauri_scope.allow_directory(&path, options.directory)?;
}
}
OpenResponse::Folder(folder.map(|p| p.simplified()))
@@ -161,6 +165,8 @@ pub(crate) async fn open<R: Runtime>(
#[cfg(mobile)]
return Err(crate::Error::FolderPickerNotImplemented);
} else if options.multiple {
let tauri_scope = window.state::<tauri::scope::Scopes>();
let files = dialog_builder.blocking_pick_files();
if let Some(files) = &files {
for file in files {
@@ -169,12 +175,13 @@ pub(crate) async fn open<R: Runtime>(
s.allow_file(&path);
}
window.state::<tauri::scope::Scopes>().allow_file(&path)?;
tauri_scope.allow_file(&path)?;
}
}
}
OpenResponse::Files(files.map(|files| files.into_iter().map(|f| f.simplified()).collect()))
} else {
let tauri_scope = window.state::<tauri::scope::Scopes>();
let file = dialog_builder.blocking_pick_file();
if let Some(file) = &file {
@@ -182,7 +189,7 @@ pub(crate) async fn open<R: Runtime>(
if let Some(s) = window.try_fs_scope() {
s.allow_file(&path);
}
window.state::<tauri::scope::Scopes>().allow_file(&path)?;
tauri_scope.allow_file(&path)?;
}
}
OpenResponse::File(file.map(|f| f.simplified()))
@@ -216,13 +223,15 @@ pub(crate) async fn save<R: Runtime>(
dialog_builder = dialog_builder.add_filter(filter.name, &extensions);
}
let tauri_scope = window.state::<tauri::scope::Scopes>();
let path = dialog_builder.blocking_save_file();
if let Some(p) = &path {
if let Ok(path) = p.clone().into_path() {
if let Some(s) = window.try_fs_scope() {
s.allow_file(&path);
}
window.state::<tauri::scope::Scopes>().allow_file(&path)?;
tauri_scope.allow_file(&path)?;
}
}
+8
View File
@@ -1,5 +1,13 @@
# Changelog
## \[2.0.0-rc.5]
- [`cc03ccf5`](https://github.com/tauri-apps/plugins-workspace/commit/cc03ccf5e0e4be8bbf50bbdebe957c84be7f779b) ([#1774](https://github.com/tauri-apps/plugins-workspace/pull/1774)) Fix `scope-app`, `scope-app-recursive` and `scope-index` not properly enabling the application paths.
## \[2.0.0-rc.4]
- [`9291e4d2`](https://github.com/tauri-apps/plugins-workspace/commit/9291e4d2caa31c883c71e55f2193bd8754d72f03) ([#1640](https://github.com/tauri-apps/plugins-workspace/pull/1640) by [@SRutile](https://github.com/tauri-apps/plugins-workspace/../../SRutile)) Support any UTF-8 character in the writeFile API.
## \[2.0.0-rc.3]
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add utility methods on `FilePath` and `SafeFilePath` enums which are:
+2 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "tauri-plugin-fs"
version = "2.0.0-rc.3"
version = "2.0.0-rc.5"
description = "Access the file system."
authors = { workspace = true }
license = { workspace = true }
@@ -31,6 +31,7 @@ glob = "0.3"
notify = { version = "6", optional = true, features = ["serde"] }
notify-debouncer-full = { version = "0.3", optional = true }
dunce = { workspace = true }
percent-encoding = "2"
[features]
watch = ["notify", "notify-debouncer-full"]
File diff suppressed because one or more lines are too long
+1 -2
View File
@@ -52,7 +52,6 @@ const BASE_DIR_VARS: &[&str] = &[
"TEMPLATE",
"VIDEO",
"RESOURCE",
"APP",
"LOG",
"TEMP",
"APPCONFIG",
@@ -118,7 +117,7 @@ path = "${upper}/**"
[[permission]]
identifier = "scope-{lower}"
description = "This scope permits access to all files and list content of top level directories in the `${upper}`folder."
description = "This scope permits access to all files and list content of top level directories in the `${upper}` folder."
[[permission.scope.allow]]
path = "${upper}"
+2 -2
View File
@@ -270,7 +270,7 @@ class FileHandle extends Resource {
* @example
* ```typescript
* import { open, BaseDirectory } from "@tauri-apps/plugin-fs"
* // if "$APP/foo/bar.txt" contains the text "hello world":
* // if "$APPCONFIG/foo/bar.txt" contains the text "hello world":
* const file = await open("foo/bar.txt", { baseDir: BaseDirectory.AppConfig });
* const buf = new Uint8Array(100);
* const numberOfBytesRead = await file.read(buf); // 11 bytes
@@ -1015,7 +1015,7 @@ async function writeFile(
await invoke('plugin:fs|write_file', data, {
headers: {
path: path instanceof URL ? path.toString() : path,
path: encodeURIComponent(path instanceof URL ? path.toString() : path),
options: JSON.stringify(options)
}
})
+114
View File
@@ -0,0 +1,114 @@
"$schema" = "schemas/schema.json"
# Scopes Section
# This section contains scopes, which define file level access
[[permission]]
identifier = "scope-app-recursive"
description = "This scope permits recursive access to the complete application folders, including sub directories and files."
[[permission.scope.allow]]
path = "$APPCONFIG"
[[permission.scope.allow]]
path = "$APPCONFIG/**"
[[permission.scope.allow]]
path = "$APPDATA"
[[permission.scope.allow]]
path = "$APPDATA/**"
[[permission.scope.allow]]
path = "$APPLOCALDATA"
[[permission.scope.allow]]
path = "$APPLOCALDATA/**"
[[permission.scope.allow]]
path = "$APPCACHE"
[[permission.scope.allow]]
path = "$APPCACHE/**"
[[permission.scope.allow]]
path = "$APPLOG"
[[permission.scope.allow]]
path = "$APPLOG/**"
[[permission]]
identifier = "scope-app"
description = "This scope permits access to all files and list content of top level directories in the application folders."
[[permission.scope.allow]]
path = "$APPCONFIG"
[[permission.scope.allow]]
path = "$APPCONFIG/*"
[[permission.scope.allow]]
path = "$APPDATA"
[[permission.scope.allow]]
path = "$APPDATA/*"
[[permission.scope.allow]]
path = "$APPLOCALDATA"
[[permission.scope.allow]]
path = "$APPLOCALDATA/*"
[[permission.scope.allow]]
path = "$APPCACHE"
[[permission.scope.allow]]
path = "$APPCACHE/*"
[[permission.scope.allow]]
path = "$APPLOG"
[[permission.scope.allow]]
path = "$APPLOG/*"
[[permission]]
identifier = "scope-app-index"
description = "This scope permits to list all files and folders in the application directories."
[[permission.scope.allow]]
path = "$APPCONFIG"
[[permission.scope.allow]]
path = "$APPDATA"
[[permission.scope.allow]]
path = "$APPLOCALDATA"
[[permission.scope.allow]]
path = "$APPCACHE"
[[permission.scope.allow]]
path = "$APPLOG"
# Sets Section
# This section combines the scope elements with enablement of commands
[[set]]
identifier = "allow-app-read-recursive"
description = "This allows full recursive read access to the complete application folders, files and subdirectories."
permissions = ["read-all", "scope-app-recursive"]
[[set]]
identifier = "allow-app-write-recursive"
description = "This allows full recursive write access to the complete application folders, files and subdirectories."
permissions = ["write-all", "scope-app-recursive"]
[[set]]
identifier = "allow-app-read"
description = "This allows non-recursive read access to the application folders."
permissions = ["read-all", "scope-app"]
[[set]]
identifier = "allow-app-write"
description = "This allows non-recursive write access to the application folders."
permissions = ["write-all", "scope-app"]
[[set]]
identifier = "allow-app-meta-recursive"
description = "This allows full recursive read access to metadata of the application folders, including file listing and statistics."
permissions = ["read-meta", "scope-app-recursive"]
[[set]]
identifier = "allow-app-meta"
description = "This allows non-recursive read access to metadata of the application folders, including file listing and statistics."
permissions = ["read-meta", "scope-app-index"]
@@ -1,82 +0,0 @@
# Automatically generated - DO NOT EDIT!
"$schema" = "../../schemas/schema.json"
# Scopes Section
# This section contains scopes, which define file level access
[[permission]]
identifier = "scope-app-recursive"
description = "This scope permits recursive access to the complete `$APP` folder, including sub directories and files."
[[permission.scope.allow]]
path = "$APP"
[[permission.scope.allow]]
path = "$APP/**"
[[permission]]
identifier = "scope-app"
description = "This scope permits access to all files and list content of top level directories in the `$APP`folder."
[[permission.scope.allow]]
path = "$APP"
[[permission.scope.allow]]
path = "$APP/*"
[[permission]]
identifier = "scope-app-index"
description = "This scope permits to list all files and folders in the `$APP`folder."
[[permission.scope.allow]]
path = "$APP"
# Sets Section
# This section combines the scope elements with enablement of commands
[[set]]
identifier = "allow-app-read-recursive"
description = "This allows full recursive read access to the complete `$APP` folder, files and subdirectories."
permissions = [
"read-all",
"scope-app-recursive"
]
[[set]]
identifier = "allow-app-write-recursive"
description = "This allows full recursive write access to the complete `$APP` folder, files and subdirectories."
permissions = [
"write-all",
"scope-app-recursive"
]
[[set]]
identifier = "allow-app-read"
description = "This allows non-recursive read access to the `$APP` folder."
permissions = [
"read-all",
"scope-app"
]
[[set]]
identifier = "allow-app-write"
description = "This allows non-recursive write access to the `$APP` folder."
permissions = [
"write-all",
"scope-app"
]
[[set]]
identifier = "allow-app-meta-recursive"
description = "This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics."
permissions = [
"read-meta",
"scope-app-recursive"
]
[[set]]
identifier = "allow-app-meta"
description = "This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics."
permissions = [
"read-meta",
"scope-app-index"
]
@@ -16,7 +16,7 @@ path = "$APPCACHE/**"
[[permission]]
identifier = "scope-appcache"
description = "This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder."
description = "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder."
[[permission.scope.allow]]
path = "$APPCACHE"
@@ -16,7 +16,7 @@ path = "$APPCONFIG/**"
[[permission]]
identifier = "scope-appconfig"
description = "This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder."
description = "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder."
[[permission.scope.allow]]
path = "$APPCONFIG"
@@ -16,7 +16,7 @@ path = "$APPDATA/**"
[[permission]]
identifier = "scope-appdata"
description = "This scope permits access to all files and list content of top level directories in the `$APPDATA`folder."
description = "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder."
[[permission.scope.allow]]
path = "$APPDATA"
@@ -16,7 +16,7 @@ path = "$APPLOCALDATA/**"
[[permission]]
identifier = "scope-applocaldata"
description = "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder."
description = "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder."
[[permission.scope.allow]]
path = "$APPLOCALDATA"
@@ -16,7 +16,7 @@ path = "$APPLOG/**"
[[permission]]
identifier = "scope-applog"
description = "This scope permits access to all files and list content of top level directories in the `$APPLOG`folder."
description = "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder."
[[permission.scope.allow]]
path = "$APPLOG"
@@ -16,7 +16,7 @@ path = "$AUDIO/**"
[[permission]]
identifier = "scope-audio"
description = "This scope permits access to all files and list content of top level directories in the `$AUDIO`folder."
description = "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder."
[[permission.scope.allow]]
path = "$AUDIO"
@@ -16,7 +16,7 @@ path = "$CACHE/**"
[[permission]]
identifier = "scope-cache"
description = "This scope permits access to all files and list content of top level directories in the `$CACHE`folder."
description = "This scope permits access to all files and list content of top level directories in the `$CACHE` folder."
[[permission.scope.allow]]
path = "$CACHE"
@@ -16,7 +16,7 @@ path = "$CONFIG/**"
[[permission]]
identifier = "scope-config"
description = "This scope permits access to all files and list content of top level directories in the `$CONFIG`folder."
description = "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder."
[[permission.scope.allow]]
path = "$CONFIG"
@@ -16,7 +16,7 @@ path = "$DATA/**"
[[permission]]
identifier = "scope-data"
description = "This scope permits access to all files and list content of top level directories in the `$DATA`folder."
description = "This scope permits access to all files and list content of top level directories in the `$DATA` folder."
[[permission.scope.allow]]
path = "$DATA"
@@ -16,7 +16,7 @@ path = "$DESKTOP/**"
[[permission]]
identifier = "scope-desktop"
description = "This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder."
description = "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder."
[[permission.scope.allow]]
path = "$DESKTOP"
@@ -16,7 +16,7 @@ path = "$DOCUMENT/**"
[[permission]]
identifier = "scope-document"
description = "This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder."
description = "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder."
[[permission.scope.allow]]
path = "$DOCUMENT"
@@ -16,7 +16,7 @@ path = "$DOWNLOAD/**"
[[permission]]
identifier = "scope-download"
description = "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder."
description = "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder."
[[permission.scope.allow]]
path = "$DOWNLOAD"
@@ -16,7 +16,7 @@ path = "$EXE/**"
[[permission]]
identifier = "scope-exe"
description = "This scope permits access to all files and list content of top level directories in the `$EXE`folder."
description = "This scope permits access to all files and list content of top level directories in the `$EXE` folder."
[[permission.scope.allow]]
path = "$EXE"
@@ -16,7 +16,7 @@ path = "$FONT/**"
[[permission]]
identifier = "scope-font"
description = "This scope permits access to all files and list content of top level directories in the `$FONT`folder."
description = "This scope permits access to all files and list content of top level directories in the `$FONT` folder."
[[permission.scope.allow]]
path = "$FONT"
@@ -16,7 +16,7 @@ path = "$HOME/**"
[[permission]]
identifier = "scope-home"
description = "This scope permits access to all files and list content of top level directories in the `$HOME`folder."
description = "This scope permits access to all files and list content of top level directories in the `$HOME` folder."
[[permission.scope.allow]]
path = "$HOME"
@@ -16,7 +16,7 @@ path = "$LOCALDATA/**"
[[permission]]
identifier = "scope-localdata"
description = "This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder."
description = "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder."
[[permission.scope.allow]]
path = "$LOCALDATA"
@@ -16,7 +16,7 @@ path = "$LOG/**"
[[permission]]
identifier = "scope-log"
description = "This scope permits access to all files and list content of top level directories in the `$LOG`folder."
description = "This scope permits access to all files and list content of top level directories in the `$LOG` folder."
[[permission.scope.allow]]
path = "$LOG"
@@ -16,7 +16,7 @@ path = "$PICTURE/**"
[[permission]]
identifier = "scope-picture"
description = "This scope permits access to all files and list content of top level directories in the `$PICTURE`folder."
description = "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder."
[[permission.scope.allow]]
path = "$PICTURE"
@@ -16,7 +16,7 @@ path = "$PUBLIC/**"
[[permission]]
identifier = "scope-public"
description = "This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder."
description = "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder."
[[permission.scope.allow]]
path = "$PUBLIC"
@@ -16,7 +16,7 @@ path = "$RESOURCE/**"
[[permission]]
identifier = "scope-resource"
description = "This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder."
description = "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder."
[[permission.scope.allow]]
path = "$RESOURCE"
@@ -16,7 +16,7 @@ path = "$RUNTIME/**"
[[permission]]
identifier = "scope-runtime"
description = "This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder."
description = "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder."
[[permission.scope.allow]]
path = "$RUNTIME"
@@ -16,7 +16,7 @@ path = "$TEMP/**"
[[permission]]
identifier = "scope-temp"
description = "This scope permits access to all files and list content of top level directories in the `$TEMP`folder."
description = "This scope permits access to all files and list content of top level directories in the `$TEMP` folder."
[[permission.scope.allow]]
path = "$TEMP"
@@ -16,7 +16,7 @@ path = "$TEMPLATE/**"
[[permission]]
identifier = "scope-template"
description = "This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder."
description = "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder."
[[permission.scope.allow]]
path = "$TEMPLATE"
@@ -16,7 +16,7 @@ path = "$VIDEO/**"
[[permission]]
identifier = "scope-video"
description = "This scope permits access to all files and list content of top level directories in the `$VIDEO`folder."
description = "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder."
[[permission.scope.allow]]
path = "$VIDEO"
@@ -47,7 +47,7 @@ On Windows the webview data folder access is denied.
</td>
<td>
This allows full recursive read access to the complete `$APP` folder, files and subdirectories.
This allows full recursive read access to the complete application folders, files and subdirectories.
</td>
</tr>
@@ -60,7 +60,7 @@ This allows full recursive read access to the complete `$APP` folder, files and
</td>
<td>
This allows full recursive write access to the complete `$APP` folder, files and subdirectories.
This allows full recursive write access to the complete application folders, files and subdirectories.
</td>
</tr>
@@ -73,7 +73,7 @@ This allows full recursive write access to the complete `$APP` folder, files and
</td>
<td>
This allows non-recursive read access to the `$APP` folder.
This allows non-recursive read access to the application folders.
</td>
</tr>
@@ -86,7 +86,7 @@ This allows non-recursive read access to the `$APP` folder.
</td>
<td>
This allows non-recursive write access to the `$APP` folder.
This allows non-recursive write access to the application folders.
</td>
</tr>
@@ -99,7 +99,7 @@ This allows non-recursive write access to the `$APP` folder.
</td>
<td>
This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.
This allows full recursive read access to metadata of the application folders, including file listing and statistics.
</td>
</tr>
@@ -112,7 +112,7 @@ This allows full recursive read access to metadata of the `$APP` folder, includi
</td>
<td>
This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.
This allows non-recursive read access to metadata of the application folders, including file listing and statistics.
</td>
</tr>
@@ -125,7 +125,7 @@ This allows non-recursive read access to metadata of the `$APP` folder, includin
</td>
<td>
This scope permits recursive access to the complete `$APP` folder, including sub directories and files.
This scope permits recursive access to the complete application folders, including sub directories and files.
</td>
</tr>
@@ -138,7 +138,7 @@ This scope permits recursive access to the complete `$APP` folder, including sub
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$APP`folder.
This scope permits access to all files and list content of top level directories in the application folders.
</td>
</tr>
@@ -151,7 +151,7 @@ This scope permits access to all files and list content of top level directories
</td>
<td>
This scope permits to list all files and folders in the `$APP`folder.
This scope permits to list all files and folders in the application directories.
</td>
</tr>
@@ -255,7 +255,7 @@ This scope permits recursive access to the complete `$APPCACHE` folder, includin
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.
This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.
</td>
</tr>
@@ -372,7 +372,7 @@ This scope permits recursive access to the complete `$APPCONFIG` folder, includi
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.
This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.
</td>
</tr>
@@ -489,7 +489,7 @@ This scope permits recursive access to the complete `$APPDATA` folder, including
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.
This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.
</td>
</tr>
@@ -606,7 +606,7 @@ This scope permits recursive access to the complete `$APPLOCALDATA` folder, incl
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.
This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.
</td>
</tr>
@@ -723,7 +723,7 @@ This scope permits recursive access to the complete `$APPLOG` folder, including
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.
This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.
</td>
</tr>
@@ -840,7 +840,7 @@ This scope permits recursive access to the complete `$AUDIO` folder, including s
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.
This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.
</td>
</tr>
@@ -957,7 +957,7 @@ This scope permits recursive access to the complete `$CACHE` folder, including s
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$CACHE`folder.
This scope permits access to all files and list content of top level directories in the `$CACHE` folder.
</td>
</tr>
@@ -1074,7 +1074,7 @@ This scope permits recursive access to the complete `$CONFIG` folder, including
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.
This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.
</td>
</tr>
@@ -1191,7 +1191,7 @@ This scope permits recursive access to the complete `$DATA` folder, including su
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$DATA`folder.
This scope permits access to all files and list content of top level directories in the `$DATA` folder.
</td>
</tr>
@@ -1308,7 +1308,7 @@ This scope permits recursive access to the complete `$DESKTOP` folder, including
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.
This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.
</td>
</tr>
@@ -1425,7 +1425,7 @@ This scope permits recursive access to the complete `$DOCUMENT` folder, includin
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.
This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.
</td>
</tr>
@@ -1542,7 +1542,7 @@ This scope permits recursive access to the complete `$DOWNLOAD` folder, includin
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.
This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.
</td>
</tr>
@@ -1659,7 +1659,7 @@ This scope permits recursive access to the complete `$EXE` folder, including sub
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$EXE`folder.
This scope permits access to all files and list content of top level directories in the `$EXE` folder.
</td>
</tr>
@@ -1776,7 +1776,7 @@ This scope permits recursive access to the complete `$FONT` folder, including su
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$FONT`folder.
This scope permits access to all files and list content of top level directories in the `$FONT` folder.
</td>
</tr>
@@ -1893,7 +1893,7 @@ This scope permits recursive access to the complete `$HOME` folder, including su
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$HOME`folder.
This scope permits access to all files and list content of top level directories in the `$HOME` folder.
</td>
</tr>
@@ -2010,7 +2010,7 @@ This scope permits recursive access to the complete `$LOCALDATA` folder, includi
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.
This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.
</td>
</tr>
@@ -2127,7 +2127,7 @@ This scope permits recursive access to the complete `$LOG` folder, including sub
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$LOG`folder.
This scope permits access to all files and list content of top level directories in the `$LOG` folder.
</td>
</tr>
@@ -2244,7 +2244,7 @@ This scope permits recursive access to the complete `$PICTURE` folder, including
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.
This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.
</td>
</tr>
@@ -2361,7 +2361,7 @@ This scope permits recursive access to the complete `$PUBLIC` folder, including
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.
This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.
</td>
</tr>
@@ -2478,7 +2478,7 @@ This scope permits recursive access to the complete `$RESOURCE` folder, includin
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.
This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.
</td>
</tr>
@@ -2595,7 +2595,7 @@ This scope permits recursive access to the complete `$RUNTIME` folder, including
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.
This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.
</td>
</tr>
@@ -2712,7 +2712,7 @@ This scope permits recursive access to the complete `$TEMP` folder, including su
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$TEMP`folder.
This scope permits access to all files and list content of top level directories in the `$TEMP` folder.
</td>
</tr>
@@ -2829,7 +2829,7 @@ This scope permits recursive access to the complete `$TEMPLATE` folder, includin
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.
This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.
</td>
</tr>
@@ -2946,7 +2946,7 @@ This scope permits recursive access to the complete `$VIDEO` folder, including s
</td>
<td>
This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.
This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.
</td>
</tr>
@@ -5,19 +5,4 @@ identifier = "create-app-specific-dirs"
description = """
This permissions allows to create the application specific directories.
"""
commands.allow = ["mkdir"]
[[permission.scope.allow]]
path = "$APPCONFIG"
[[permission.scope.allow]]
path = "$APPDATA"
[[permission.scope.allow]]
path = "$APPLOCALDATA"
[[permission.scope.allow]]
path = "$APPCACHE"
[[permission.scope.allow]]
path = "$APPLOG"
commands.allow = ["mkdir", "scope-app-index"]
@@ -13,19 +13,5 @@ commands.allow = [
"read_text_file_lines",
"read_text_file_lines_next",
"exists",
"scope-app-recursive",
]
[[permission.scope.allow]]
path = "$APPCONFIG/**"
[[permission.scope.allow]]
path = "$APPDATA/**"
[[permission.scope.allow]]
path = "$APPLOCALDATA/**"
[[permission.scope.allow]]
path = "$APPCACHE/**"
[[permission.scope.allow]]
path = "$APPLOG/**"
File diff suppressed because it is too large Load Diff
+4 -3
View File
@@ -855,10 +855,11 @@ pub async fn write_file<R: Runtime>(
.get("path")
.ok_or_else(|| anyhow::anyhow!("missing file path").into())
.and_then(|p| {
p.to_str()
.map_err(|e| anyhow::anyhow!("invalid path: {e}").into())
percent_encoding::percent_decode(p.as_ref())
.decode_utf8()
.map_err(|_| anyhow::anyhow!("path is not a valid UTF-8").into())
})
.and_then(|p| SafeFilePath::from_str(p).map_err(CommandError::from))?;
.and_then(|p| SafeFilePath::from_str(&p).map_err(CommandError::from))?;
let options = request
.headers()
.get("options")
@@ -295,88 +295,64 @@
"type": "string",
"oneOf": [
{
"description": "allow-check-permissions -> Enables the check_permissions command without any pre-configured scope.",
"description": "Enables the check_permissions command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-check-permissions"
]
"const": "allow-check-permissions"
},
{
"description": "deny-check-permissions -> Denies the check_permissions command without any pre-configured scope.",
"description": "Denies the check_permissions command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-check-permissions"
]
"const": "deny-check-permissions"
},
{
"description": "allow-clear-permissions -> Enables the clear_permissions command without any pre-configured scope.",
"description": "Enables the clear_permissions command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-clear-permissions"
]
"const": "allow-clear-permissions"
},
{
"description": "deny-clear-permissions -> Denies the clear_permissions command without any pre-configured scope.",
"description": "Denies the clear_permissions command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-clear-permissions"
]
"const": "deny-clear-permissions"
},
{
"description": "allow-clear-positions -> Enables the clear_positions command without any pre-configured scope.",
"description": "Enables the clear_positions command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-clear-positions"
]
"const": "allow-clear-positions"
},
{
"description": "deny-clear-positions -> Denies the clear_positions command without any pre-configured scope.",
"description": "Denies the clear_positions command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-clear-positions"
]
"const": "deny-clear-positions"
},
{
"description": "allow-clear-watch -> Enables the clear_watch command without any pre-configured scope.",
"description": "Enables the clear_watch command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-clear-watch"
]
"const": "allow-clear-watch"
},
{
"description": "deny-clear-watch -> Denies the clear_watch command without any pre-configured scope.",
"description": "Denies the clear_watch command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-clear-watch"
]
"const": "deny-clear-watch"
},
{
"description": "allow-get-current-position -> Enables the get_current_position command without any pre-configured scope.",
"description": "Enables the get_current_position command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-get-current-position"
]
"const": "allow-get-current-position"
},
{
"description": "deny-get-current-position -> Denies the get_current_position command without any pre-configured scope.",
"description": "Denies the get_current_position command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-get-current-position"
]
"const": "deny-get-current-position"
},
{
"description": "allow-watch-position -> Enables the watch_position command without any pre-configured scope.",
"description": "Enables the watch_position command without any pre-configured scope.",
"type": "string",
"enum": [
"allow-watch-position"
]
"const": "allow-watch-position"
},
{
"description": "deny-watch-position -> Denies the watch_position command without any pre-configured scope.",
"description": "Denies the watch_position command without any pre-configured scope.",
"type": "string",
"enum": [
"deny-watch-position"
]
"const": "deny-watch-position"
}
]
}

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