From 4f9a7e9c882a6ba8ac8a5a4558ced19a2258d872 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Mon, 3 Jun 2024 14:08:24 -0700 Subject: [PATCH] 2024.5.0 (#39) --- .github/workflows/release.yml | 7 +- index.html | 8 +- package-lock.json | 6 +- package.json | 10 +- plugins/importer-postman/src/index.ts | 2 + ...aa25054545503704e19f149987f99b1a0e4f0.json | 12 - ...27e55127a5bce60cbb499b83d1701386a23cb.json | 56 - ...44adf18f6f15341d9d5db40865e92a80da4e2.json | 92 + ...464c5ae057b720cbbedcaec1513d43535632c.json | 12 + src-tauri/Cargo.lock | 1735 ++--- src-tauri/Cargo.toml | 11 +- src-tauri/capabilities/capabilities.json | 2 + src-tauri/gen/apple/.gitignore | 3 - .../AppIcon.appiconset/AppIcon-20x20@1x.png | Bin 844 -> 0 bytes .../AppIcon.appiconset/AppIcon-20x20@2x-1.png | Bin 2199 -> 0 bytes .../AppIcon.appiconset/AppIcon-20x20@2x.png | Bin 2199 -> 0 bytes .../AppIcon.appiconset/AppIcon-20x20@3x.png | Bin 3622 -> 0 bytes .../AppIcon.appiconset/AppIcon-29x29@1x.png | Bin 1419 -> 0 bytes .../AppIcon.appiconset/AppIcon-29x29@2x-1.png | Bin 3509 -> 0 bytes .../AppIcon.appiconset/AppIcon-29x29@2x.png | Bin 3509 -> 0 bytes .../AppIcon.appiconset/AppIcon-29x29@3x.png | Bin 5618 -> 0 bytes .../AppIcon.appiconset/AppIcon-40x40@1x.png | Bin 2199 -> 0 bytes .../AppIcon.appiconset/AppIcon-40x40@2x-1.png | Bin 5143 -> 0 bytes .../AppIcon.appiconset/AppIcon-40x40@2x.png | Bin 5143 -> 0 bytes .../AppIcon.appiconset/AppIcon-40x40@3x.png | Bin 7879 -> 0 bytes .../AppIcon.appiconset/AppIcon-512@2x.png | Bin 155248 -> 0 bytes .../AppIcon.appiconset/AppIcon-512x512@2x.png | Bin 15001 -> 0 bytes .../AppIcon.appiconset/AppIcon-60x60@2x.png | Bin 7879 -> 0 bytes .../AppIcon.appiconset/AppIcon-60x60@3x.png | Bin 12188 -> 0 bytes .../AppIcon.appiconset/AppIcon-76x76@1x.png | Bin 4789 -> 0 bytes .../AppIcon.appiconset/AppIcon-76x76@2x.png | Bin 10113 -> 0 bytes .../AppIcon-83.5x83.5@2x.png | Bin 11189 -> 0 bytes .../AppIcon.appiconset/Contents.json | 116 - .../gen/apple/Assets.xcassets/Contents.json | 6 - src-tauri/gen/apple/ExportOptions.plist | 8 - src-tauri/gen/apple/Podfile | 21 - .../Sources/yaak-app/bindings/bindings.h | 8 - src-tauri/gen/apple/Sources/yaak-app/main.mm | 6 - src-tauri/gen/apple/project.yml | 90 - .../apple/yaak-app.xcodeproj/project.pbxproj | 481 -- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 10 - .../xcschemes/yaak-app_iOS.xcscheme | 123 - src-tauri/gen/apple/yaak-app_iOS/Info.plist | 44 - .../yaak-app_iOS/yaak-app_iOS.entitlements | 5 - src-tauri/gen/schemas/acl-manifests.json | 2 +- src-tauri/gen/schemas/capabilities.json | 2 +- src-tauri/gen/schemas/desktop-schema.json | 133 + src-tauri/gen/schemas/linux-schema.json | 133 + src-tauri/gen/schemas/macOS-schema.json | 133 + src-tauri/gen/schemas/windows-schema.json | 6924 +++++++++++++++++ .../20240522031045_theme-settings.sql | 4 + .../20240529143147_more-settings.sql | 4 + src-tauri/plugins/importer-postman/index.mjs | 1 + src-tauri/src/analytics.rs | 12 +- src-tauri/src/{http.rs => http_request.rs} | 55 +- src-tauri/src/lib.rs | 248 +- src-tauri/src/models.rs | 23 +- src-tauri/src/plugin.rs | 10 +- src-tauri/src/tauri_plugin_mac_window.rs | 450 ++ src-tauri/src/tauri_plugin_windows_window.rs | 97 + src-tauri/src/updates.rs | 18 +- src-tauri/src/window_ext.rs | 53 - src-tauri/src/window_menu.rs | 8 +- src-tauri/tauri.conf.json | 17 +- src-web/components/AppRouter.tsx | 7 + src-web/components/BinaryFileEditor.tsx | 18 +- src-web/components/CommandPalette.tsx | 6 +- src-web/components/CookieDialog.tsx | 11 +- src-web/components/DefaultLayout.tsx | 16 +- src-web/components/DropMarker.tsx | 2 +- src-web/components/EmptyStateText.tsx | 4 +- .../components/EnvironmentActionsDropdown.tsx | 4 +- src-web/components/EnvironmentEditDialog.tsx | 10 +- src-web/components/ExportDataDialog.tsx | 4 +- src-web/components/FormUrlencodedEditor.tsx | 2 + src-web/components/GlobalHooks.tsx | 92 +- src-web/components/GraphQLEditor.tsx | 4 +- src-web/components/GrpcConnectionLayout.tsx | 5 +- .../components/GrpcConnectionMessagesPane.tsx | 48 +- .../components/GrpcConnectionSetupPane.tsx | 15 +- src-web/components/GrpcEditor.tsx | 6 +- src-web/components/GrpcProtoSelection.tsx | 17 +- src-web/components/HeaderSize.tsx | 38 + src-web/components/ImportCurlButton.tsx | 6 +- src-web/components/IsDev.tsx | 15 + .../components/KeyboardShortcutsDialog.tsx | 4 +- src-web/components/Overlay.tsx | 11 +- .../components/RecentConnectionsDropdown.tsx | 17 +- src-web/components/RecentRequestsDropdown.tsx | 4 +- .../components/RecentResponsesDropdown.tsx | 29 +- src-web/components/RequestMethodDropdown.tsx | 3 +- src-web/components/RequestPane.tsx | 26 +- src-web/components/ResizeHandle.tsx | 2 +- src-web/components/ResponsePane.tsx | 87 +- src-web/components/RouteError.tsx | 2 +- src-web/components/Settings/Settings.tsx | 64 + .../Settings/SettingsAppearance.tsx | 206 + .../components/Settings/SettingsDesign.tsx | 165 + .../components/Settings/SettingsGeneral.tsx | 99 + src-web/components/SettingsDialog.tsx | 142 - src-web/components/SettingsDropdown.tsx | 24 +- src-web/components/Sidebar.tsx | 159 +- src-web/components/SidebarActions.tsx | 2 +- src-web/components/UrlBar.tsx | 5 +- src-web/components/UrlParameterEditor.tsx | 2 + src-web/components/WindowControls.tsx | 74 + src-web/components/Workspace.tsx | 58 +- .../components/WorkspaceActionsDropdown.tsx | 13 +- src-web/components/WorkspaceHeader.tsx | 74 +- src-web/components/core/Banner.tsx | 11 +- src-web/components/core/Button.tsx | 74 +- src-web/components/core/Checkbox.tsx | 9 +- src-web/components/core/CountBadge.tsx | 2 +- src-web/components/core/Dialog.tsx | 10 +- src-web/components/core/Dropdown.tsx | 61 +- src-web/components/core/DurationTag.tsx | 5 +- src-web/components/core/Editor/Editor.css | 73 +- src-web/components/core/Editor/Editor.tsx | 63 +- src-web/components/core/Editor/extensions.ts | 53 +- .../core/Editor/genericCompletion.ts | 6 +- .../components/core/Editor/twig/extension.ts | 24 +- .../core/Editor/twig/placeholder.ts | 4 +- src-web/components/core/FormattedError.tsx | 4 +- src-web/components/core/Heading.tsx | 2 +- src-web/components/core/HotKey.tsx | 2 +- src-web/components/core/HotKeyLabel.tsx | 2 +- src-web/components/core/HotKeyList.tsx | 2 +- src-web/components/core/HttpMethodTag.tsx | 2 +- src-web/components/core/Icon.tsx | 8 +- src-web/components/core/IconButton.tsx | 4 +- src-web/components/core/InlineCode.tsx | 4 +- src-web/components/core/Input.tsx | 12 +- src-web/components/core/JsonAttributeTree.tsx | 24 +- src-web/components/core/KeyValueRow.tsx | 2 +- src-web/components/core/PairEditor.tsx | 14 +- src-web/components/core/PlainInput.tsx | 152 + src-web/components/core/RadioDropdown.tsx | 11 +- src-web/components/core/Select.tsx | 96 +- src-web/components/core/Separator.tsx | 12 +- src-web/components/core/SizeTag.tsx | 2 +- src-web/components/core/Stacks.tsx | 3 +- src-web/components/core/StatusTag.tsx | 13 +- src-web/components/core/Tabs/Tabs.tsx | 36 +- src-web/components/core/Toast.tsx | 21 +- src-web/components/core/WindowDragRegion.tsx | 17 - .../responseViewers/AudioViewer.tsx | 18 + .../responseViewers/ImageViewer.tsx | 8 +- .../components/responseViewers/TextViewer.tsx | 58 +- .../responseViewers/VideoViewer.tsx | 18 + .../responseViewers/WebPageViewer.tsx | 2 +- src-web/hooks/Confirm.tsx | 4 +- src-web/hooks/Prompt.tsx | 4 +- src-web/hooks/useAppInfo.ts | 2 +- src-web/hooks/useAppRoutes.ts | 13 +- src-web/hooks/useClipboardText.ts | 9 +- src-web/hooks/useCommandPalette.tsx | 2 +- src-web/hooks/useCopyAsCurl.tsx | 26 +- src-web/hooks/useFilterResponse.ts | 2 +- src-web/hooks/useHotKey.ts | 12 +- src-web/hooks/useIsFullscreen.ts | 32 +- src-web/hooks/useKeyValue.ts | 7 +- src-web/hooks/useNotificationToast.tsx | 8 +- src-web/hooks/usePinnedGrpcConnection.ts | 19 + src-web/hooks/usePinnedHttpResponse.ts | 29 +- src-web/hooks/usePreferredAppearance.ts | 18 + src-web/hooks/useResolvedAppearance.ts | 14 + src-web/hooks/useResolvedTheme.ts | 20 + src-web/hooks/useSyncAppearance.ts | 35 - src-web/hooks/useSyncThemeToDocument.ts | 23 + src-web/hooks/useSyncWindowTitle.ts | 23 - src-web/hooks/useSyncWorkspaceRequestTitle.ts | 38 + src-web/hooks/useThemes.ts | 13 + src-web/hooks/useUpdateSettings.ts | 17 +- src-web/hooks/useZoom.ts | 28 + src-web/lib/analytics.ts | 3 +- src-web/lib/fallbackRequestName.ts | 6 +- src-web/lib/models.ts | 6 + src-web/lib/persistPathname.ts | 21 - src-web/lib/theme/appearance.ts | 31 + src-web/lib/theme/color.ts | 94 + src-web/lib/theme/theme.test.ts | 25 - src-web/lib/theme/theme.ts | 172 - src-web/lib/theme/themes.ts | 22 + src-web/lib/theme/themes/catppuccin.ts | 172 + src-web/lib/theme/themes/dracula.ts | 32 + src-web/lib/theme/themes/github.ts | 57 + src-web/lib/theme/themes/hotdog-stand.ts | 61 + src-web/lib/theme/themes/monokai-pro.ts | 245 + src-web/lib/theme/themes/moonlight.ts | 66 + src-web/lib/theme/themes/rose-pine.ts | 108 + src-web/lib/theme/themes/yaak.ts | 84 + src-web/lib/theme/window.ts | 314 +- src-web/main.css | 18 +- src-web/main.tsx | 10 +- tailwind.config.cjs | 81 +- 197 files changed, 12283 insertions(+), 3505 deletions(-) delete mode 100644 src-tauri/.sqlx/query-48ec5fdf20f34add763c540061caa25054545503704e19f149987f99b1a0e4f0.json delete mode 100644 src-tauri/.sqlx/query-b32994b09ae7a06eb0f031069d327e55127a5bce60cbb499b83d1701386a23cb.json create mode 100644 src-tauri/.sqlx/query-ca3485d87b060cd77c4114d2af544adf18f6f15341d9d5db40865e92a80da4e2.json create mode 100644 src-tauri/.sqlx/query-efd8ba41ea909b18dd520c57c1d464c5ae057b720cbbedcaec1513d43535632c.json delete mode 100644 src-tauri/gen/apple/.gitignore delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512x512@2x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png delete mode 100644 src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 src-tauri/gen/apple/Assets.xcassets/Contents.json delete mode 100644 src-tauri/gen/apple/ExportOptions.plist delete mode 100644 src-tauri/gen/apple/Podfile delete mode 100644 src-tauri/gen/apple/Sources/yaak-app/bindings/bindings.h delete mode 100644 src-tauri/gen/apple/Sources/yaak-app/main.mm delete mode 100644 src-tauri/gen/apple/project.yml delete mode 100644 src-tauri/gen/apple/yaak-app.xcodeproj/project.pbxproj delete mode 100644 src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 src-tauri/gen/apple/yaak-app.xcodeproj/xcshareddata/xcschemes/yaak-app_iOS.xcscheme delete mode 100644 src-tauri/gen/apple/yaak-app_iOS/Info.plist delete mode 100644 src-tauri/gen/apple/yaak-app_iOS/yaak-app_iOS.entitlements create mode 100644 src-tauri/gen/schemas/windows-schema.json create mode 100644 src-tauri/migrations/20240522031045_theme-settings.sql create mode 100644 src-tauri/migrations/20240529143147_more-settings.sql rename src-tauri/src/{http.rs => http_request.rs} (93%) create mode 100644 src-tauri/src/tauri_plugin_mac_window.rs create mode 100644 src-tauri/src/tauri_plugin_windows_window.rs delete mode 100644 src-tauri/src/window_ext.rs create mode 100644 src-web/components/HeaderSize.tsx create mode 100644 src-web/components/IsDev.tsx create mode 100644 src-web/components/Settings/Settings.tsx create mode 100644 src-web/components/Settings/SettingsAppearance.tsx create mode 100644 src-web/components/Settings/SettingsDesign.tsx create mode 100644 src-web/components/Settings/SettingsGeneral.tsx delete mode 100644 src-web/components/SettingsDialog.tsx create mode 100644 src-web/components/WindowControls.tsx create mode 100644 src-web/components/core/PlainInput.tsx delete mode 100644 src-web/components/core/WindowDragRegion.tsx create mode 100644 src-web/components/responseViewers/AudioViewer.tsx create mode 100644 src-web/components/responseViewers/VideoViewer.tsx create mode 100644 src-web/hooks/usePinnedGrpcConnection.ts create mode 100644 src-web/hooks/usePreferredAppearance.ts create mode 100644 src-web/hooks/useResolvedAppearance.ts create mode 100644 src-web/hooks/useResolvedTheme.ts delete mode 100644 src-web/hooks/useSyncAppearance.ts create mode 100644 src-web/hooks/useSyncThemeToDocument.ts delete mode 100644 src-web/hooks/useSyncWindowTitle.ts create mode 100644 src-web/hooks/useSyncWorkspaceRequestTitle.ts create mode 100644 src-web/hooks/useThemes.ts create mode 100644 src-web/hooks/useZoom.ts delete mode 100644 src-web/lib/persistPathname.ts create mode 100644 src-web/lib/theme/appearance.ts create mode 100644 src-web/lib/theme/color.ts delete mode 100644 src-web/lib/theme/theme.test.ts delete mode 100644 src-web/lib/theme/theme.ts create mode 100644 src-web/lib/theme/themes.ts create mode 100644 src-web/lib/theme/themes/catppuccin.ts create mode 100644 src-web/lib/theme/themes/dracula.ts create mode 100644 src-web/lib/theme/themes/github.ts create mode 100644 src-web/lib/theme/themes/hotdog-stand.ts create mode 100644 src-web/lib/theme/themes/monokai-pro.ts create mode 100644 src-web/lib/theme/themes/moonlight.ts create mode 100644 src-web/lib/theme/themes/rose-pine.ts create mode 100644 src-web/lib/theme/themes/yaak.ts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ea9d0ee1..2e996410 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,6 +3,7 @@ on: push: branches: - release + - beta jobs: build-artifacts: permissions: @@ -36,11 +37,11 @@ jobs: if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above. run: | sudo apt-get update - sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. - # You can remove the one that doesn't apply to your app to speed up the workflow a bit. + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - name: Install dependencies run: npm ci + - name: Run lint + run: npm run lint - name: Run tests run: npm test - uses: tauri-apps/tauri-action@v0 diff --git a/index.html b/index.html index ca2d48a1..8f9f5c30 100644 --- a/index.html +++ b/index.html @@ -1,8 +1,8 @@ - - + + Yaak App @@ -15,13 +15,13 @@ @media (prefers-color-scheme: dark) { html, body { - background-color: black; + background-color: #1b1a29; } } - +
diff --git a/package-lock.json b/package-lock.json index 6bd78da0..cfd378c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "dependencies": { "@codemirror/commands": "^6.2.1", - "@codemirror/lang-javascript": "^6.1.4", + "@codemirror/lang-javascript": "^6.2.2", "@codemirror/lang-json": "^6.0.1", "@codemirror/lang-xml": "^6.0.2", "@codemirror/language": "^6.6.0", @@ -54,7 +54,7 @@ "devDependencies": { "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", "@tanstack/react-query-devtools": "^5.35.5", - "@tauri-apps/cli": ">=2.0.0-beta.0", + "@tauri-apps/cli": "^2.0.0-beta.15", "@types/node": "^18.7.10", "@types/papaparse": "^5.3.7", "@types/parse-color": "^1.0.1", @@ -81,7 +81,7 @@ "prettier": "^2.8.4", "react-devtools": "^4.27.2", "tailwindcss": "^3.2.7", - "typescript": "^5.3.3", + "typescript": "^5.4.5", "vite": "^5.0.0", "vite-plugin-svgr": "^4.2.0", "vite-plugin-top-level-await": "^1.4.1", diff --git a/package.json b/package.json index 4d9fb439..8247457e 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "version": "0.0.0", "type": "module", "scripts": { - "start": "npm run build:plugins && npm run tauri-dev:desktop", + "start": "npm run tauri-dev:desktop", "tauri-dev:desktop": "tauri dev --no-watch --config ./src-tauri/tauri-dev.conf.json", - "tauri-dev:ios": "tauri ios dev --no-watch --config ./src-tauri/tauri-dev.conf.json", + "tauri-dev:ios": "tauri ios dev --force-ip-prompt --config ./src-tauri/tauri-dev.conf.json", "tauri-build": "tauri build", "tauri": "tauri", "build": "npm run build:frontend", @@ -29,7 +29,7 @@ }, "dependencies": { "@codemirror/commands": "^6.2.1", - "@codemirror/lang-javascript": "^6.1.4", + "@codemirror/lang-javascript": "^6.2.2", "@codemirror/lang-json": "^6.0.1", "@codemirror/lang-xml": "^6.0.2", "@codemirror/language": "^6.6.0", @@ -74,7 +74,7 @@ "devDependencies": { "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", "@tanstack/react-query-devtools": "^5.35.5", - "@tauri-apps/cli": ">=2.0.0-beta.0", + "@tauri-apps/cli": "^2.0.0-beta.15", "@types/node": "^18.7.10", "@types/papaparse": "^5.3.7", "@types/parse-color": "^1.0.1", @@ -101,7 +101,7 @@ "prettier": "^2.8.4", "react-devtools": "^4.27.2", "tailwindcss": "^3.2.7", - "typescript": "^5.3.3", + "typescript": "^5.4.5", "vite": "^5.0.0", "vite-plugin-svgr": "^4.2.0", "vite-plugin-top-level-await": "^1.4.1", diff --git a/plugins/importer-postman/src/index.ts b/plugins/importer-postman/src/index.ts index 43af714c..b0ddbffa 100644 --- a/plugins/importer-postman/src/index.ts +++ b/plugins/importer-postman/src/index.ts @@ -180,6 +180,7 @@ function importBody(rawBody: any): Pick(obj: T): T { } const idCount: Partial> = {}; + function generateId(model: Model['model']): string { idCount[model] = (idCount[model] ?? -1) + 1; return `GENERATE_ID::${model.toUpperCase()}_${idCount[model]}`; diff --git a/src-tauri/.sqlx/query-48ec5fdf20f34add763c540061caa25054545503704e19f149987f99b1a0e4f0.json b/src-tauri/.sqlx/query-48ec5fdf20f34add763c540061caa25054545503704e19f149987f99b1a0e4f0.json deleted file mode 100644 index a959caf8..00000000 --- a/src-tauri/.sqlx/query-48ec5fdf20f34add763c540061caa25054545503704e19f149987f99b1a0e4f0.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "\n UPDATE settings SET (\n theme, appearance, update_channel\n ) = (?, ?, ?) WHERE id = 'default';\n ", - "describe": { - "columns": [], - "parameters": { - "Right": 3 - }, - "nullable": [] - }, - "hash": "48ec5fdf20f34add763c540061caa25054545503704e19f149987f99b1a0e4f0" -} diff --git a/src-tauri/.sqlx/query-b32994b09ae7a06eb0f031069d327e55127a5bce60cbb499b83d1701386a23cb.json b/src-tauri/.sqlx/query-b32994b09ae7a06eb0f031069d327e55127a5bce60cbb499b83d1701386a23cb.json deleted file mode 100644 index aed140c8..00000000 --- a/src-tauri/.sqlx/query-b32994b09ae7a06eb0f031069d327e55127a5bce60cbb499b83d1701386a23cb.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "db_name": "SQLite", - "query": "\n SELECT\n id, model, created_at, updated_at, theme, appearance, update_channel\n FROM settings\n WHERE id = 'default'\n ", - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "model", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "created_at", - "ordinal": 2, - "type_info": "Datetime" - }, - { - "name": "updated_at", - "ordinal": 3, - "type_info": "Datetime" - }, - { - "name": "theme", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "appearance", - "ordinal": 5, - "type_info": "Text" - }, - { - "name": "update_channel", - "ordinal": 6, - "type_info": "Text" - } - ], - "parameters": { - "Right": 0 - }, - "nullable": [ - false, - false, - false, - false, - false, - false, - false - ] - }, - "hash": "b32994b09ae7a06eb0f031069d327e55127a5bce60cbb499b83d1701386a23cb" -} diff --git a/src-tauri/.sqlx/query-ca3485d87b060cd77c4114d2af544adf18f6f15341d9d5db40865e92a80da4e2.json b/src-tauri/.sqlx/query-ca3485d87b060cd77c4114d2af544adf18f6f15341d9d5db40865e92a80da4e2.json new file mode 100644 index 00000000..118bdd64 --- /dev/null +++ b/src-tauri/.sqlx/query-ca3485d87b060cd77c4114d2af544adf18f6f15341d9d5db40865e92a80da4e2.json @@ -0,0 +1,92 @@ +{ + "db_name": "SQLite", + "query": "\n SELECT\n id, model, created_at, updated_at, theme, appearance,\n theme_dark, theme_light, update_channel,\n interface_font_size, interface_scale, editor_font_size, editor_soft_wrap\n FROM settings\n WHERE id = 'default'\n ", + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Text" + }, + { + "name": "model", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "created_at", + "ordinal": 2, + "type_info": "Datetime" + }, + { + "name": "updated_at", + "ordinal": 3, + "type_info": "Datetime" + }, + { + "name": "theme", + "ordinal": 4, + "type_info": "Text" + }, + { + "name": "appearance", + "ordinal": 5, + "type_info": "Text" + }, + { + "name": "theme_dark", + "ordinal": 6, + "type_info": "Text" + }, + { + "name": "theme_light", + "ordinal": 7, + "type_info": "Text" + }, + { + "name": "update_channel", + "ordinal": 8, + "type_info": "Text" + }, + { + "name": "interface_font_size", + "ordinal": 9, + "type_info": "Int64" + }, + { + "name": "interface_scale", + "ordinal": 10, + "type_info": "Int64" + }, + { + "name": "editor_font_size", + "ordinal": 11, + "type_info": "Int64" + }, + { + "name": "editor_soft_wrap", + "ordinal": 12, + "type_info": "Bool" + } + ], + "parameters": { + "Right": 0 + }, + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ] + }, + "hash": "ca3485d87b060cd77c4114d2af544adf18f6f15341d9d5db40865e92a80da4e2" +} diff --git a/src-tauri/.sqlx/query-efd8ba41ea909b18dd520c57c1d464c5ae057b720cbbedcaec1513d43535632c.json b/src-tauri/.sqlx/query-efd8ba41ea909b18dd520c57c1d464c5ae057b720cbbedcaec1513d43535632c.json new file mode 100644 index 00000000..eed32b7a --- /dev/null +++ b/src-tauri/.sqlx/query-efd8ba41ea909b18dd520c57c1d464c5ae057b720cbbedcaec1513d43535632c.json @@ -0,0 +1,12 @@ +{ + "db_name": "SQLite", + "query": "\n UPDATE settings SET (\n theme, appearance, theme_dark, theme_light, update_channel,\n interface_font_size, interface_scale, editor_font_size, editor_soft_wrap\n ) = (?, ?, ?, ?, ?, ?, ?, ?, ?) WHERE id = 'default';\n ", + "describe": { + "columns": [], + "parameters": { + "Right": 9 + }, + "nullable": [] + }, + "hash": "efd8ba41ea909b18dd520c57c1d464c5ae057b720cbbedcaec1513d43535632c" +} diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 17b82503..99e49568 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -17,24 +17,13 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - [[package]] name = "ahash" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.11", + "getrandom 0.2.15", "once_cell", "version_check 0.9.4", ] @@ -46,7 +35,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom 0.2.11", + "getrandom 0.2.15", "once_cell", "version_check 0.9.4", "zerocopy", @@ -54,9 +43,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -78,9 +67,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "android-tzdata" @@ -117,9 +106,18 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] [[package]] name = "arboard" @@ -168,32 +166,31 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" dependencies = [ - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener 5.3.1", + "event-listener-strategy 0.5.2", "futures-core", "pin-project-lite", ] [[package]] name = "async-channel" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener-strategy 0.5.2", "futures-core", "pin-project-lite", ] [[package]] name = "async-compression" -version = "0.4.6" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a116f46a969224200a0a97f29cfd4c50e7534e4b4826bd23ea2c3c533039c82c" +checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" dependencies = [ - "brotli", + "brotli 6.0.0", "flate2", "futures-core", "memchr", @@ -244,7 +241,7 @@ dependencies = [ "async-task", "blocking", "cfg-if", - "event-listener 5.3.0", + "event-listener 5.3.1", "futures-lite", "rustix", "tracing", @@ -253,13 +250,13 @@ dependencies = [ [[package]] name = "async-recursion" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -299,24 +296,24 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -359,9 +356,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" @@ -374,10 +371,10 @@ dependencies = [ "bitflags 1.3.2", "bytes", "futures-util", - "http 0.2.10", - "http-body 0.4.5", - "hyper 0.14.27", - "itoa 1.0.9", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", + "itoa 1.0.11", "matchit", "memchr", "mime", @@ -400,8 +397,8 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 0.2.10", - "http-body 0.4.5", + "http 0.2.12", + "http-body 0.4.6", "mime", "rustversion", "tower-layer", @@ -410,9 +407,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" dependencies = [ "addr2line", "cc", @@ -425,15 +422,15 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" @@ -491,27 +488,24 @@ dependencies = [ [[package]] name = "block2" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ff7d91d3c1d568065b06c899777d1e48dcf76103a672a0adbc238a7f247f1e" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ "objc2", ] [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock", "async-task", - "fastrand", "futures-io", "futures-lite", "piper", - "tracing", ] [[package]] @@ -546,11 +540,11 @@ dependencies = [ "cfg-if", "dashmap", "fast-float", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "icu_normalizer", "indexmap 2.2.6", "intrusive-collections", - "itertools 0.12.1", + "itertools", "num-bigint", "num-integer", "num-traits", @@ -581,7 +575,7 @@ checksum = "c055ef3cd87ea7db014779195bc90c6adfc35de4902e3b2fe587adecbd384578" dependencies = [ "boa_macros", "boa_profiler", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "thin-vec", ] @@ -593,7 +587,7 @@ checksum = "0cacc9caf022d92195c827a3e5bf83f96089d4bfaff834b359ac7b6be46e9187" dependencies = [ "boa_gc", "boa_macros", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "indexmap 2.2.6", "once_cell", "phf 0.11.2", @@ -609,7 +603,7 @@ checksum = "6be9c93793b60dac381af475b98634d4b451e28336e72218cad9a20176218dbc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "synstructure", ] @@ -669,19 +663,30 @@ dependencies = [ "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "syn_derive", ] [[package]] name = "brotli" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" +checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor", + "brotli-decompressor 2.5.1", +] + +[[package]] +name = "brotli" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 4.0.1", ] [[package]] @@ -695,10 +700,20 @@ dependencies = [ ] [[package]] -name = "bumpalo" -version = "3.14.0" +name = "brotli-decompressor" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byte-unit" @@ -735,22 +750,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" +checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -761,34 +776,13 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" dependencies = [ "serde", ] -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - [[package]] name = "cairo-rs" version = "0.18.5" @@ -816,9 +810,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] @@ -858,13 +852,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "jobserver", - "libc", -] +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" [[package]] name = "cesu8" @@ -885,9 +875,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.15.5" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" dependencies = [ "smallvec", "target-lexicon", @@ -907,15 +897,15 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "cfg_aliases" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e53693616d3075149f4ead59bdeecd204ac6b8192d8969757601b74bddf00f" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -923,17 +913,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.5", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", + "windows-targets 0.52.5", ] [[package]] @@ -994,9 +974,9 @@ dependencies = [ [[package]] name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", @@ -1004,24 +984,38 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] [[package]] name = "const-oid" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] -name = "constant_time_eq" -version = "0.1.5" +name = "const-random" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "tiny-keccak", +] [[package]] name = "convert_case" @@ -1029,17 +1023,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" -[[package]] -name = "cookie" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" -dependencies = [ - "percent-encoding", - "time", - "version_check 0.9.4", -] - [[package]] name = "cookie" version = "0.17.0" @@ -1051,30 +1034,13 @@ dependencies = [ "version_check 0.9.4", ] -[[package]] -name = "cookie_store" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa" -dependencies = [ - "cookie 0.16.2", - "idna 0.2.3", - "log", - "publicsuffix", - "serde", - "serde_derive", - "serde_json", - "time", - "url", -] - [[package]] name = "cookie_store" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6" dependencies = [ - "cookie 0.17.0", + "cookie", "idna 0.3.0", "log", "publicsuffix", @@ -1087,9 +1053,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -1097,15 +1063,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" -version = "0.23.1" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -1116,9 +1082,9 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -1127,18 +1093,18 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crc" -version = "3.0.1" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" dependencies = [ "crc-catalog", ] @@ -1151,65 +1117,55 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -1251,24 +1207,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "ctor" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "darling" -version = "0.20.3" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ "darling_core", "darling_macro", @@ -1276,27 +1232,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1306,7 +1262,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -1328,9 +1284,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "pem-rfc7468", @@ -1339,9 +1295,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -1358,6 +1314,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -1383,6 +1350,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs-next" version = "2.0.0" @@ -1393,6 +1369,18 @@ dependencies = [ "dirs-sys-next", ] +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -1418,7 +1406,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1450,7 +1438,16 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", +] + +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", ] [[package]] @@ -1497,25 +1494,25 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "either" -version = "1.9.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" dependencies = [ "serde", ] [[package]] name = "embed-resource" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bde55e389bea6a966bd467ad1ad7da0ae14546a5bc794d16d1e55e7fca44881" +checksum = "c6985554d0688b687c5cb73898a34fbe3ad6c24c58c238a4d91d5e840670ee9d" dependencies = [ "cc", "memchr", "rustc_version", "toml 0.8.2", "vswhom", - "winreg 0.51.0", + "winreg 0.52.0", ] [[package]] @@ -1526,9 +1523,9 @@ checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -1557,7 +1554,7 @@ checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1578,9 +1575,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1622,9 +1619,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -1643,11 +1640,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.0", + "event-listener 5.3.1", "pin-project-lite", ] @@ -1675,15 +1672,15 @@ checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c" [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fdeflate" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" dependencies = [ "simd-adler32", ] @@ -1720,17 +1717,11 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "finl_unicode" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" - [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -1780,7 +1771,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -1797,9 +1788,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -1885,7 +1876,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -2071,9 +2062,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -2092,9 +2083,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "gio" @@ -2162,7 +2153,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -2197,7 +2188,7 @@ name = "grpc" version = "0.1.0" dependencies = [ "anyhow", - "hyper 0.14.27", + "hyper 0.14.28", "hyper-rustls 0.24.2", "log", "prost", @@ -2263,21 +2254,21 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "h2" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http 0.2.10", + "http 0.2.12", "indexmap 2.2.6", "slab", "tokio", @@ -2306,9 +2297,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash 0.8.11", "allocator-api2", @@ -2320,7 +2311,7 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -2351,10 +2342,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] -name = "hkdf" -version = "0.12.3" +name = "hex_color" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "d37f101bf4c633f7ca2e4b5e136050314503dd198e78e325ea602c327c484ef0" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ "hmac", ] @@ -2370,11 +2370,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2393,13 +2393,13 @@ dependencies = [ [[package]] name = "http" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f95b9abcae896730d42b78e09c155ed4ddf82c07b4de772c64aee5b2d8b7c150" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", - "itoa 1.0.9", + "itoa 1.0.11", ] [[package]] @@ -2410,17 +2410,17 @@ checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", - "itoa 1.0.9", + "itoa 1.0.11", ] [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http 0.2.10", + "http 0.2.12", "pin-project-lite", ] @@ -2467,22 +2467,22 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", "h2", - "http 0.2.10", - "http-body 0.4.5", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", - "itoa 1.0.9", + "itoa 1.0.11", "pin-project-lite", - "socket2 0.4.10", + "socket2", "tokio", "tower-service", "tracing", @@ -2501,7 +2501,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.0", "httparse", - "itoa 1.0.9", + "itoa 1.0.11", "pin-project-lite", "smallvec", "tokio", @@ -2515,10 +2515,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http 0.2.10", - "hyper 0.14.27", + "http 0.2.12", + "hyper 0.14.28", "log", - "rustls 0.21.8", + "rustls 0.21.12", "rustls-native-certs", "tokio", "tokio-rustls 0.24.1", @@ -2547,7 +2547,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.27", + "hyper 0.14.28", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -2560,7 +2560,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.27", + "hyper 0.14.28", "native-tls", "tokio", "tokio-native-tls", @@ -2568,9 +2568,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" dependencies = [ "bytes", "futures-channel", @@ -2579,7 +2579,7 @@ dependencies = [ "http-body 1.0.0", "hyper 1.3.1", "pin-project-lite", - "socket2 0.5.5", + "socket2", "tokio", "tower", "tower-service", @@ -2588,16 +2588,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core 0.51.1", + "windows-core 0.52.0", ] [[package]] @@ -2666,9 +2666,9 @@ checksum = "545c6c3e8bf9580e2dafee8de6f9ec14826aaf359787789c7724f1f85f47d3dc" [[package]] name = "icu_normalizer" -version = "1.4.1" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c183e31ed700f1ecd6b032d104c52fe8b15d028956b73727c97ec176b170e187" +checksum = "accb85c5b2e76f8dade22978b3795ae1e550198c6cfc7e915144e17cd6e2ab56" dependencies = [ "displaydoc", "icu_collections", @@ -2684,15 +2684,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22026918a80e6a9a330cb01b60f950e2b4e5284c59528fd0c6150076ef4c8522" +checksum = "e3744fecc0df9ce19999cdaf1f9f3a48c253431ce1d67ef499128fe9d0b607ab" [[package]] name = "icu_properties" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976e296217453af983efa25f287a4c1da04b9a63bf1ed63719455068e4453eb5" +checksum = "d8173ba888885d250016e957b8ebfd5a65cdb690123d8833a19f6833f9c2b579" dependencies = [ "displaydoc", "icu_collections", @@ -2705,9 +2705,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6a86c0e384532b06b6c104814f9c1b13bcd5b64409001c0d05713a1f3529d99" +checksum = "e70a8b51ee5dd4ff8f20ee9b1dd1bc07afc110886a3747b1fec04cc6e5a15815" [[package]] name = "icu_provider" @@ -2734,7 +2734,7 @@ checksum = "d2abdd3a62551e8337af119c5899e600ca0c88ec8f23a46c60ba216c803dcf1a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -2743,17 +2743,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "0.3.0" @@ -2766,9 +2755,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -2823,7 +2812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] @@ -2836,20 +2825,11 @@ dependencies = [ "cfb", ] -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -2880,13 +2860,13 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ "hermit-abi", - "rustix", - "windows-sys 0.48.0", + "libc", + "windows-sys 0.52.0", ] [[package]] @@ -2908,15 +2888,6 @@ dependencies = [ "nom 4.2.3", ] -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.12.1" @@ -2934,9 +2905,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "javascriptcore-rs" @@ -2983,15 +2954,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" -[[package]] -name = "jobserver" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" -dependencies = [ - "libc", -] - [[package]] name = "jpeg-decoder" version = "0.3.1" @@ -3003,23 +2965,22 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] [[package]] name = "json-patch" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" +checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", "thiserror", - "treediff", ] [[package]] @@ -3087,9 +3048,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" @@ -3119,13 +3080,12 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.5.0", "libc", - "redox_syscall 0.4.1", ] [[package]] @@ -3141,24 +3101,21 @@ dependencies = [ [[package]] name = "line-wrap" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" -dependencies = [ - "safemem", -] +checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "litemap" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d642685b028806386b2b6e75685faadd3eb65a85fff7df711ce18446a422da" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" [[package]] name = "locale" @@ -3171,9 +3128,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -3265,15 +3222,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -3308,9 +3265,9 @@ checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", "simd-adler32", @@ -3318,9 +3275,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -3329,9 +3286,9 @@ dependencies = [ [[package]] name = "muda" -version = "0.13.1" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f428b4e9db3d17e2f809dfb1ff9ddfbbf16c71790d1656d10aee320877e1392f" +checksum = "86b959f97c97044e4c96e32e1db292a7d594449546a3c6b77ae613dc3a5b5145" dependencies = [ "cocoa", "crossbeam-channel", @@ -3348,11 +3305,10 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -3395,9 +3351,9 @@ dependencies = [ [[package]] name = "new_debug_unreachable" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nix" @@ -3449,11 +3405,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ - "autocfg", "num-integer", "num-traits", "serde", @@ -3493,9 +3448,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -3504,9 +3459,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -3561,14 +3516,14 @@ dependencies = [ "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "num_threads" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" dependencies = [ "libc", ] @@ -3596,15 +3551,15 @@ dependencies = [ [[package]] name = "objc-sys" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da284c198fb9b7b0603f8635185e85fbd5b64ee154b1ed406d489077de2d6d60" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] name = "objc2" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b25e1034d0e636cd84707ccdaa9f81243d399196b8a773946dcffec0401659" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ "objc-sys", "objc2-encode", @@ -3612,41 +3567,85 @@ dependencies = [ [[package]] name = "objc2-app-kit" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb79768a710a9a1798848179edb186d1af7e8a8679f369e4b8d201dd2a034047" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ + "bitflags 2.5.0", "block2", + "libc", "objc2", "objc2-core-data", + "objc2-core-image", "objc2-foundation", + "objc2-quartz-core", ] [[package]] name = "objc2-core-data" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e092bc42eaf30a08844e6a076938c60751225ec81431ab89f5d1ccd9f958d6c" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ + "bitflags 2.5.0", "block2", "objc2", "objc2-foundation", ] [[package]] -name = "objc2-encode" -version = "4.0.1" +name = "objc2-core-image" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88658da63e4cc2c8adb1262902cd6af51094df0488b760d6fd27194269c0950a" - -[[package]] -name = "objc2-foundation" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfaefe14254871ea16c7d88968c0ff14ba554712a20d76421eec52f0a7fb8904" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ "block2", "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.5.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.5.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", ] [[package]] @@ -3669,9 +3668,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" dependencies = [ "memchr", ] @@ -3684,9 +3683,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "open" -version = "5.1.2" +version = "5.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449f0ff855d85ddbf1edd5b646d65249ead3f5e422aaa86b7d2d0b049b103e32" +checksum = "2eb49fbd5616580e9974662cb96a3463da4476e649a7e4b258df0de065db0657" dependencies = [ "is-wsl", "libc", @@ -3695,9 +3694,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.59" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a257ad03cd8fb16ad4172fedf8094451e1af1c4b70097636ef2eac9a5f0cc33" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ "bitflags 2.5.0", "cfg-if", @@ -3716,7 +3715,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -3727,18 +3726,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.1.6+3.1.4" +version = "300.3.0+3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439fac53e092cd7442a3660c85dde4643ab3b5bd39040912388dcdabf6b88085" +checksum = "eba8804a1c5765b18c4b3f907e6897ebabeedebc9830e1a0046c4a4cf44663e1" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.95" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40a4130519a360279579c2053038317e40eff64d13fd3f004f9e1b72b8a6aaf9" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ "cc", "libc", @@ -3747,6 +3746,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "ordered-float" version = "2.10.1" @@ -3756,6 +3761,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "ordered-multimap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", +] + [[package]] name = "ordered-stream" version = "0.2.0" @@ -3835,9 +3850,9 @@ checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -3845,33 +3860,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.1", "smallvec", - "windows-targets 0.48.5", -] - -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", + "windows-targets 0.52.5", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" @@ -3879,18 +3883,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest", - "hmac", - "password-hash", - "sha2", -] - [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -3902,9 +3894,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "phf" @@ -4010,7 +4002,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -4042,29 +4034,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -4074,9 +4066,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "464db0c665917b13ebb5d453ccdec4add5658ee1adc7affc7677615356a8afaf" dependencies = [ "atomic-waker", "fastrand", @@ -4106,17 +4098,17 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plist" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef" +checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "indexmap 2.2.6", "line-wrap", "quick-xml", @@ -4126,9 +4118,9 @@ dependencies = [ [[package]] name = "png" -version = "0.17.10" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -4234,18 +4226,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" dependencies = [ "unicode-ident", ] [[package]] name = "prost" -version = "0.12.3" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ "bytes", "prost-derive", @@ -4253,15 +4245,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.12.3" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", - "itertools 0.11.0", + "itertools", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -4270,7 +4262,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "057237efdb71cf4b3f9396302a3d6599a92fa94063ba537b66130980ea9909f3" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "once_cell", "prost", "prost-reflect-derive", @@ -4287,14 +4279,14 @@ checksum = "172da1212c02be2c94901440cb27183cd92bff00ebacca5c323bf7520b8f9c04" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "prost-types" -version = "0.12.3" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" dependencies = [ "prost", ] @@ -4355,9 +4347,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -4428,7 +4420,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.11", + "getrandom 0.2.15", ] [[package]] @@ -4457,9 +4449,9 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "raw-window-handle" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc3bcbdb1ddfc11e700e62968e6b4cc9c75bb466464ad28fb61c5b2c964418b" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" @@ -4507,25 +4499,25 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.11", + "getrandom 0.2.15", "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.10.2" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.3", - "regex-syntax 0.8.2", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", ] [[package]] @@ -4539,13 +4531,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", ] [[package]] @@ -4556,9 +4548,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "regress" @@ -4566,7 +4558,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eae2a1ebfecc58aff952ef8ccd364329abe627762f5bf09ff42eb9d98522479" dependencies = [ - "hashbrown 0.14.3", + "hashbrown 0.14.5", "memchr", ] @@ -4581,22 +4573,22 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.23" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "async-compression", - "base64 0.21.5", + "base64 0.21.7", "bytes", - "cookie 0.16.2", - "cookie_store 0.16.2", + "cookie", + "cookie_store", "encoding_rs", "futures-core", "futures-util", "h2", - "http 0.2.10", - "http-body 0.4.5", - "hyper 0.14.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", "hyper-tls", "ipnet", "js-sys", @@ -4607,9 +4599,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -4628,7 +4622,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "bytes", "futures-core", "futures-util", @@ -4672,8 +4666,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba529055ea150e42e4eb9c11dcd380a41025ad4d594b0cb4904ef28b037e1061" dependencies = [ "bytes", - "cookie_store 0.20.0", - "reqwest 0.11.23", + "cookie_store", + "reqwest 0.11.27", "url", ] @@ -4694,7 +4688,7 @@ dependencies = [ "objc", "objc-foundation", "objc_id", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -4703,16 +4697,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.5" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", - "getrandom 0.2.11", + "cfg-if", + "getrandom 0.2.15", "libc", "spin 0.9.8", "untrusted", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -4746,9 +4741,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.3" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ef35bf3e7fe15a53c4ab08a998e42271eab13eb0db224126bc7bc4c4bad96d" +checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" dependencies = [ "const-oid", "digest", @@ -4764,6 +4759,17 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rust-ini" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d625ed57d8f49af6cfa514c42e1a71fadcff60eb0b1c517ff82fe41aa025b41" +dependencies = [ + "cfg-if", + "ordered-multimap", + "trim-in-place", +] + [[package]] name = "rust_decimal" version = "1.35.0" @@ -4782,9 +4788,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -4803,9 +4809,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.5.0", "errno", @@ -4816,9 +4822,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.8" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring", @@ -4835,7 +4841,7 @@ dependencies = [ "log", "ring", "rustls-pki-types", - "rustls-webpki 0.102.3", + "rustls-webpki 0.102.4", "subtle", "zeroize", ] @@ -4858,7 +4864,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", ] [[package]] @@ -4867,15 +4873,15 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" @@ -4889,9 +4895,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.3" +version = "0.102.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" dependencies = [ "ring", "rustls-pki-types", @@ -4900,15 +4906,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "ryu-js" @@ -4916,12 +4922,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad97d4ce1560a5e27cec89519dc8300d1aa6035b099821261c651486a19e44d5" -[[package]] -name = "safemem" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" - [[package]] name = "same-file" version = "1.0.6" @@ -4933,18 +4933,18 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "schemars" -version = "0.8.19" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6e7ed6919cb46507fb01ff1654309219f62b4d603822501b0b80d42f6f21ef" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -4956,14 +4956,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.19" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185f2b7aa7e02d418e453790dde16890256bbd2bcd04b7dc5348811052b53f49" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -4996,11 +4996,11 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "security-framework" -version = "2.9.2" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -5009,9 +5009,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -5039,18 +5039,18 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] @@ -5067,53 +5067,53 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "serde_derive_internals" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ - "itoa 1.0.9", + "itoa 1.0.11", "ryu", "serde", ] [[package]] name = "serde_repr" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "serde_spanned" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -5125,23 +5125,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.9", + "itoa 1.0.11", "ryu", "serde", ] [[package]] name = "serde_with" -version = "3.4.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ - "base64 0.21.5", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", "indexmap 2.2.6", "serde", + "serde_derive", "serde_json", "serde_with_macros", "time", @@ -5149,14 +5150,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -5243,9 +5244,9 @@ dependencies = [ [[package]] name = "signature" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", "rand_core 0.6.4", @@ -5280,45 +5281,37 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.4.10" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" -dependencies = [ - "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "softbuffer" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61d5d17f23326fe0d9b0af282f73f3af666699420fd5f42629efd9c6e7dc166f" +checksum = "d09e57a5a6b300bf917329da0ff30a58737d83abb7b14f99a419c23e83007cb8" dependencies = [ "bytemuck", - "cfg_aliases 0.2.0", - "cocoa", + "cfg_aliases 0.2.1", "core-graphics", "foreign-types 0.5.0", "js-sys", "log", - "objc", - "raw-window-handle 0.6.1", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle 0.6.2", "redox_syscall 0.5.1", "wasm-bindgen", "wayland-sys", @@ -5369,9 +5362,9 @@ dependencies = [ [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", @@ -5385,11 +5378,11 @@ checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" [[package]] name = "sqlformat" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85" +checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" dependencies = [ - "itertools 0.11.0", + "itertools", "nom 7.1.3", "unicode_categories", ] @@ -5435,7 +5428,7 @@ dependencies = [ "once_cell", "paste", "percent-encoding", - "rustls 0.21.8", + "rustls 0.21.12", "rustls-pemfile 1.0.4", "serde", "serde_json", @@ -5497,7 +5490,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" dependencies = [ "atoi", - "base64 0.21.5", + "base64 0.21.7", "bitflags 2.5.0", "byteorder", "bytes", @@ -5514,7 +5507,7 @@ dependencies = [ "hex", "hkdf", "hmac", - "itoa 1.0.9", + "itoa 1.0.11", "log", "md-5", "memchr", @@ -5541,7 +5534,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" dependencies = [ "atoi", - "base64 0.21.5", + "base64 0.21.7", "bitflags 2.5.0", "byteorder", "chrono", @@ -5556,7 +5549,7 @@ dependencies = [ "hkdf", "hmac", "home", - "itoa 1.0.9", + "itoa 1.0.11", "log", "md-5", "memchr", @@ -5648,20 +5641,20 @@ dependencies = [ [[package]] name = "stringprep" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" dependencies = [ - "finl_unicode", "unicode-bidi", "unicode-normalization", + "unicode-properties", ] [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" @@ -5675,7 +5668,7 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bbdb58577b6301f8d17ae2561f32002a5bae056d444e0f69e611e504a276204" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "serde", "serde_json", ] @@ -5693,9 +5686,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -5711,7 +5704,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -5722,14 +5715,13 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "synstructure" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", - "unicode-xid", + "syn 2.0.66", ] [[package]] @@ -5764,12 +5756,12 @@ dependencies = [ [[package]] name = "system-deps" -version = "6.2.0" +version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2d580ff6a20c55dfb86be5f9c238f67835d0e81cbdea8bf5680e0897320331" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ "cfg-expr", - "heck 0.4.1", + "heck 0.5.0", "pkg-config", "toml 0.8.2", "version-compare", @@ -5803,7 +5795,7 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "scopeguard", "tao-macros", "unicode-segmentation", @@ -5844,15 +5836,15 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.12" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tauri" -version = "2.0.0-beta.19" +version = "2.0.0-beta.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8e5bc2e4f5eb7496d1a3e5f4d272f69f1333db5f8efed28d79d7f93334fe95" +checksum = "5a258ecc5ac7ddade525f512c4962fd01cd0f5265e917b4572579c32c027bb31" dependencies = [ "anyhow", "bytes", @@ -5861,7 +5853,7 @@ dependencies = [ "dunce", "embed_plist", "futures-util", - "getrandom 0.2.11", + "getrandom 0.2.15", "glob", "gtk", "heck 0.5.0", @@ -5874,7 +5866,7 @@ dependencies = [ "muda", "objc", "percent-encoding", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "reqwest 0.12.4", "serde", "serde_json", @@ -5900,9 +5892,9 @@ dependencies = [ [[package]] name = "tauri-build" -version = "2.0.0-beta.15" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aa28eebafcda490fa7097a6e3a4d07f65967614d35dd88b2aaa19dbb49241cd" +checksum = "82b964bb6d03d97e24e12f896aab463b02a3c2ff76a60f728cc37b5548eb470e" dependencies = [ "anyhow", "cargo_toml", @@ -5922,12 +5914,12 @@ dependencies = [ [[package]] name = "tauri-codegen" -version = "2.0.0-beta.15" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727d13a28e9ec895f537d90a09acb0aa3593f703a715fe8a77f87269d3245b52" +checksum = "3529cfa977ed7c097f2a5e8da19ecffbe61982450a6c819e6165b6d0cfd3dd3a" dependencies = [ - "base64 0.22.0", - "brotli", + "base64 0.22.1", + "brotli 3.5.0", "ico", "json-patch", "plist", @@ -5938,7 +5930,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "syn 2.0.58", + "syn 2.0.66", "tauri-utils", "thiserror", "time", @@ -5949,23 +5941,23 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.0.0-beta.15" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258667612ad901d256e04ace71ac54d4b3dd8fb1e5baa24403b50991cade4365" +checksum = "36f97dd80334f29314aa5f40b5fad10cb9feffd08e5a5324fd728613841e5d33" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "tauri-codegen", "tauri-utils", ] [[package]] name = "tauri-plugin" -version = "2.0.0-beta.13" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6baaee0a083db1e04a1b7a3b0670d86a4d95dd2a54e7cbfb5547762b8ed098d9" +checksum = "7c8385fd0a4f661f5652b0d9e2d7256187d553bb174f88564d10ebcfa6a3af53" dependencies = [ "anyhow", "glob", @@ -5980,8 +5972,8 @@ dependencies = [ [[package]] name = "tauri-plugin-clipboard-manager" -version = "2.1.0-beta.2" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#56dde7688938225f91b3d35fe13432bf4ef00577" +version = "2.1.0-beta.4" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#0f739dbc483a1f091977cbe575c3862fd39f8cf1" dependencies = [ "arboard", "image 0.24.9", @@ -5994,13 +5986,32 @@ dependencies = [ ] [[package]] -name = "tauri-plugin-dialog" +name = "tauri-plugin-deep-link" version = "2.0.0-beta.7" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#56dde7688938225f91b3d35fe13432bf4ef00577" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#0f739dbc483a1f091977cbe575c3862fd39f8cf1" dependencies = [ "dunce", "log", - "raw-window-handle 0.6.1", + "rust-ini", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror", + "url", + "windows-registry", + "windows-result", +] + +[[package]] +name = "tauri-plugin-dialog" +version = "2.0.0-beta.9" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#0f739dbc483a1f091977cbe575c3862fd39f8cf1" +dependencies = [ + "dunce", + "log", + "raw-window-handle 0.6.2", "rfd", "serde", "serde_json", @@ -6012,8 +6023,8 @@ dependencies = [ [[package]] name = "tauri-plugin-fs" -version = "2.0.0-beta.7" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#56dde7688938225f91b3d35fe13432bf4ef00577" +version = "2.0.0-beta.9" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#0f739dbc483a1f091977cbe575c3862fd39f8cf1" dependencies = [ "anyhow", "glob", @@ -6030,8 +6041,8 @@ dependencies = [ [[package]] name = "tauri-plugin-log" -version = "2.0.0-beta.4" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#56dde7688938225f91b3d35fe13432bf4ef00577" +version = "2.0.0-beta.6" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#0f739dbc483a1f091977cbe575c3862fd39f8cf1" dependencies = [ "android_logger", "byte-unit", @@ -6050,8 +6061,8 @@ dependencies = [ [[package]] name = "tauri-plugin-os" -version = "2.0.0-beta.4" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#56dde7688938225f91b3d35fe13432bf4ef00577" +version = "2.0.0-beta.6" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#0f739dbc483a1f091977cbe575c3862fd39f8cf1" dependencies = [ "gethostname", "log", @@ -6067,8 +6078,8 @@ dependencies = [ [[package]] name = "tauri-plugin-shell" -version = "2.0.0-beta.4" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#56dde7688938225f91b3d35fe13432bf4ef00577" +version = "2.0.0-beta.7" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#0f739dbc483a1f091977cbe575c3862fd39f8cf1" dependencies = [ "encoding_rs", "log", @@ -6082,14 +6093,15 @@ dependencies = [ "tauri", "tauri-plugin", "thiserror", + "tokio", ] [[package]] name = "tauri-plugin-updater" -version = "2.0.0-beta.5" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#56dde7688938225f91b3d35fe13432bf4ef00577" +version = "2.0.0-beta.7" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#0f739dbc483a1f091977cbe575c3862fd39f8cf1" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "dirs-next", "flate2", "futures-util", @@ -6114,8 +6126,8 @@ dependencies = [ [[package]] name = "tauri-plugin-window-state" -version = "2.0.0-beta.6" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#56dde7688938225f91b3d35fe13432bf4ef00577" +version = "2.0.0-beta.9" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#0f739dbc483a1f091977cbe575c3862fd39f8cf1" dependencies = [ "bitflags 2.5.0", "log", @@ -6128,15 +6140,15 @@ dependencies = [ [[package]] name = "tauri-runtime" -version = "2.0.0-beta.16" +version = "2.0.0-beta.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "574f3d59cbe6c76b6d849bc35aa3a9e8061ff8f75f557dc33f38c0e43cf55a41" +checksum = "d7dc96172a43536236ab55b7da7b8461bf75810985e668589e2395cb476937cb" dependencies = [ "dpi", "gtk", "http 1.1.0", "jni", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "serde", "serde_json", "tauri-utils", @@ -6147,9 +6159,9 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" -version = "2.0.0-beta.16" +version = "2.0.0-beta.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6d1f223de1d674aaa561c900ac650b3160f11520e9b191a3574f6c493fc77fa" +checksum = "5d4fd913b1f14a9b618c7f3ae35656d3aa759767fcb95b72006357c12b9d0b09" dependencies = [ "cocoa", "gtk", @@ -6157,7 +6169,7 @@ dependencies = [ "jni", "log", "percent-encoding", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "softbuffer", "tao", "tauri-runtime", @@ -6171,16 +6183,15 @@ dependencies = [ [[package]] name = "tauri-utils" -version = "2.0.0-beta.15" +version = "2.0.0-beta.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b4251529d92b5c611ccaa611f8a31cb41b1aa00db8bcc0a49efe5d966bfa911" +checksum = "4f24a9c20d676a3f025331cc1c3841256ba88c9f25fb7fae709d2b3089c50d90" dependencies = [ - "brotli", + "brotli 3.5.0", "cargo_metadata", "ctor", "dunce", "glob", - "heck 0.5.0", "html5ever", "infer", "json-patch", @@ -6216,9 +6227,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", @@ -6251,29 +6262,29 @@ checksum = "a38c90d48152c236a3ab59271da4f4ae63d678c5d7ad6b7714d7cb9760be5e4b" [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -6297,7 +6308,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", - "itoa 1.0.9", + "itoa 1.0.11", "js-sys", "libc", "num-conv", @@ -6325,10 +6336,19 @@ dependencies = [ ] [[package]] -name = "tinystr" -version = "0.7.5" +name = "tiny-keccak" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c02bf3c538ab32ba913408224323915f4ef9a6d61c0e85d493f355921c0ece" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ "displaydoc", "zerovec", @@ -6351,9 +6371,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", @@ -6362,7 +6382,7 @@ dependencies = [ "num_cpus", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2", "tokio-macros", "tracing", "windows-sys 0.48.0", @@ -6380,13 +6400,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -6405,7 +6425,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.8", + "rustls 0.21.12", "tokio", ] @@ -6433,16 +6453,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -6513,12 +6532,12 @@ dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.21.5", + "base64 0.21.7", "bytes", "h2", - "http 0.2.10", - "http-body 0.4.5", - "hyper 0.14.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", "hyper-timeout", "percent-encoding", "pin-project", @@ -6596,7 +6615,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -6611,9 +6630,9 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ "log", "once_cell", @@ -6622,9 +6641,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -6640,14 +6659,14 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.13.4" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97ec55956c54569e74209ae9d29a7a79193b252d17a6ac28bcffd4c11a384ad" +checksum = "0b27516dfcfa22a9faaf192283a122bfbede38c1e59ef194e3c4db6549b419c0" dependencies = [ "cocoa", "core-graphics", "crossbeam-channel", - "dirs-next", + "dirs", "libappindicator", "muda", "objc", @@ -6659,19 +6678,16 @@ dependencies = [ ] [[package]] -name = "treediff" -version = "4.0.2" +name = "trim-in-place" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" -dependencies = [ - "serde_json", -] +checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" @@ -6742,9 +6758,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -6754,13 +6770,19 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-properties" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" + [[package]] name = "unicode-segmentation" version = "1.11.0" @@ -6769,15 +6791,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unicode_categories" @@ -6793,12 +6809,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", - "idna 0.4.0", + "idna 0.5.0", "percent-encoding", "serde", ] @@ -6830,29 +6846,29 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf16_iter" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52df8b7fb78e7910d776fccf2e42ceaf3604d55e8e7eb2dbd183cb1441d8a692" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" [[package]] name = "utf8-width" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" +checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" [[package]] name = "utf8_iter" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a8922555b9500e3d865caed19330172cd67cbf82203f1a3311d8c305cc9f33" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ - "getrandom 0.2.11", + "getrandom 0.2.15", ] [[package]] @@ -6863,9 +6879,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74797339c3b98616c009c7c3eb53a0ce41e85c8ec66bd3db96ed132d20cfdee8" +checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101" [[package]] name = "vcpkg" @@ -6875,9 +6891,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version-compare" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" @@ -6913,9 +6929,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -6943,10 +6959,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] -name = "wasm-bindgen" -version = "0.2.88" +name = "wasite" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -6954,24 +6976,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.38" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -6981,9 +7003,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6991,22 +7013,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-streams" @@ -7023,9 +7045,9 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +checksum = "105b1842da6554f91526c14a2a2172897b7f745a805d62af4ce698706be79c12" dependencies = [ "dlib", "log", @@ -7034,9 +7056,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.65" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -7123,7 +7145,7 @@ checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -7145,9 +7167,13 @@ checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "whoami" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" +checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +dependencies = [ + "redox_syscall 0.4.1", + "wasite", +] [[package]] name = "winapi" @@ -7167,11 +7193,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -7188,7 +7214,7 @@ checksum = "33082acd404763b315866e14a0d5193f3422c81086657583937a750cdd3ec340" dependencies = [ "cocoa", "objc", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "windows-sys 0.52.0", "windows-version", ] @@ -7214,11 +7240,11 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -7241,7 +7267,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] @@ -7252,7 +7278,17 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", +] + +[[package]] +name = "windows-registry" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f721bc2e55efb506a1a395a545cb76c2481fb023d33b51f0050e7888716281cf" +dependencies = [ + "windows-result", + "windows-targets 0.52.5", ] [[package]] @@ -7339,9 +7375,9 @@ dependencies = [ [[package]] name = "windows-version" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75aa004c988e080ad34aff5739c39d0312f4684699d6d71fc8a198d057b8b9b4" +checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" dependencies = [ "windows-targets 0.52.5", ] @@ -7480,9 +7516,9 @@ checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] @@ -7497,16 +7533,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "winreg" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "937f3df7948156640f46aacef17a70db0de5917bda9c92b0f751f3a955b588fc" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winreg" version = "0.52.0" @@ -7525,17 +7551,17 @@ checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" [[package]] name = "writeable" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad7bb64b8ef9c0aa27b6da38b452b0ee9fd82beaf276a87dd796fb55cbae14e" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" -version = "0.39.3" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e180ac2740d6cb4d5cec0abf63eacbea90f1b7e5e3803043b13c1c84c4b7884" +checksum = "7cd42682bad8d1efd0e0d0593770c602c13b8922bb1ca705cb845967de81bbc4" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "block", "cocoa", "core-graphics", @@ -7557,7 +7583,7 @@ dependencies = [ "objc_id", "once_cell", "percent-encoding", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "sha2", "soup3", "tao-macros", @@ -7643,20 +7669,21 @@ dependencies = [ name = "yaak-app" version = "0.0.0" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "boa_engine", "boa_runtime", "chrono", "cocoa", "datetime", "grpc", - "http 0.2.10", + "hex_color", + "http 0.2.12", "log", "objc", "openssl-sys", "rand 0.8.5", "regex", - "reqwest 0.11.23", + "reqwest 0.11.27", "reqwest_cookie_store", "serde", "serde_json", @@ -7664,6 +7691,7 @@ dependencies = [ "tauri", "tauri-build", "tauri-plugin-clipboard-manager", + "tauri-plugin-deep-link", "tauri-plugin-dialog", "tauri-plugin-fs", "tauri-plugin-log", @@ -7674,13 +7702,14 @@ dependencies = [ "tokio", "tokio-stream", "uuid", + "windows 0.56.0", ] [[package]] name = "yoke" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e71b2e4f287f467794c671e2b8f8a5f3716b3c829079a1c44740148eff07e4" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" dependencies = [ "serde", "stable_deref_trait", @@ -7690,13 +7719,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e6936f0cce458098a201c245a11bef556c6a0181129c7034d10d76d1ec3a2b8" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "synstructure", ] @@ -7712,7 +7741,7 @@ dependencies = [ "async-trait", "derivative", "enumflags2", - "event-listener 5.3.0", + "event-listener 5.3.1", "futures-core", "futures-sink", "futures-util", @@ -7761,56 +7790,56 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "zerofrom" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655b0814c5c0b19ade497851070c640773304939a6c0fd5f5fb43da0696d05b7" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a647510471d372f2e6c2e6b7219e44d8c574d24fdc11c610a61455782f18c3" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", "synstructure", ] [[package]] name = "zeroize" -version = "1.6.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" [[package]] name = "zerovec" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff4439ae91fb5c72b8abc12f3f2dbf51bd27e6eadb9f8a5bc8898dddb0e27ea" +checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c" dependencies = [ "yoke", "zerofrom", @@ -7819,62 +7848,28 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4e5997cbf58990550ef1f0e5124a05e47e1ebd33a84af25739be6031a62c20" +checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.66", ] [[package]] name = "zip" -version = "0.6.6" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +checksum = "9cc23c04387f4da0374be4533ad1208cbb091d5c11d070dfef13676ad6497164" dependencies = [ - "aes", - "byteorder", - "bzip2", - "constant_time_eq", + "arbitrary", "crc32fast", "crossbeam-utils", - "flate2", - "hmac", - "pbkdf2", - "sha1", - "time", - "zstd", -] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.10+zstd.1.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" -dependencies = [ - "cc", - "pkg-config", + "displaydoc", + "indexmap 2.2.6", + "num_enum 0.7.2", + "thiserror", ] [[package]] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index ef7c3d2e..8aac84c9 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -20,6 +20,13 @@ tauri-build = { version = "2.0.0-beta", features = [] } objc = "0.2.7" cocoa = "0.25.0" +[target.'cfg(target_os = "windows")'.dependencies] +windows = { version = "0.56.0", features = [ + "Win32_Graphics_Dwm", + "Win32_Foundation", + "Win32_UI_Controls", +] } + [target.'cfg(target_os = "linux")'.dependencies] openssl-sys = { version = "0.9", features = ["vendored"] } # For Ubuntu installation to work @@ -34,7 +41,7 @@ reqwest = { version = "0.11.23", features = ["multipart", "cookies", "gzip", "br serde = { version = "1.0.198", features = ["derive"] } serde_json = { version = "1.0.116", features = ["raw_value"] } sqlx = { version = "0.7.4", features = ["sqlite", "runtime-tokio-rustls", "json", "chrono", "time"] } -tauri = { version = "2.0.0-beta.19", features = ["config-toml", "devtools", "protocol-asset"] } +tauri = { version = "2.0.0-beta.22", features = ["config-toml", "devtools", "protocol-asset"] } tauri-plugin-clipboard-manager = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-dialog = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-log = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2", features = ["colored"] } @@ -43,6 +50,7 @@ tauri-plugin-os = { git = "https://github.com/tauri-apps/plugins-workspace", bra tauri-plugin-updater = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-fs = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } +tauri-plugin-deep-link = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tokio = { version = "1.36.0", features = ["sync"] } uuid = "1.7.0" log = "0.4.21" @@ -51,3 +59,4 @@ reqwest_cookie_store = "0.6.0" grpc = { path = "./grpc" } tokio-stream = "0.1.15" regex = "1.10.2" +hex_color = "3.0.0" diff --git a/src-tauri/capabilities/capabilities.json b/src-tauri/capabilities/capabilities.json index 0e65fdf3..8f560256 100644 --- a/src-tauri/capabilities/capabilities.json +++ b/src-tauri/capabilities/capabilities.json @@ -39,6 +39,7 @@ } ] }, + "webview:allow-set-webview-zoom", "window:allow-close", "window:allow-is-fullscreen", "window:allow-maximize", @@ -48,6 +49,7 @@ "window:allow-set-title", "window:allow-start-dragging", "window:allow-unmaximize", + "window:allow-theme", "clipboard-manager:allow-read-text", "clipboard-manager:allow-write-text" ] diff --git a/src-tauri/gen/apple/.gitignore b/src-tauri/gen/apple/.gitignore deleted file mode 100644 index 6726e2f8..00000000 --- a/src-tauri/gen/apple/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -xcuserdata/ -build/ -Externals/ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png deleted file mode 100644 index f8b128e3c0f8eaf9fe7842259829ba458adb636b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844 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 diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png deleted file mode 100644 index c5e92f781f349240e58858d92db3ab3be0c9b8d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1419 zcmV;61$6p}P)2M+4;In-AX01*Od+&6b8-92;r=KKEd z|7V$`hBY@@qL(=jGY{ist#+>+Owi^ode|ycEHhrBv9g(JFmC_MK_)K&3uAzl0z4tG zz->U~W-#Y)`r$Xh)IPnG1a|dvu<4UvscT@?0u37G(iH>(?GR1Rfo*(}z**5j*T&QV zTnGafUja+>n~l_lt^g$SfQbxYr;V)CFKQkFyYmQ`yK+U~(xCPNNv!Zk7uezr(@l(I z!&5-jHUbV(|14ze9N6S{VA*LpKo&C83EXv@&fzOC+kb+ZiF&a28L(Ing~$id{5)9u z0rJsuBgw@$74b2xd~Ku%#!B zoIIcpwIWk>dKUr2a~2MbT}K6>Q-tv8mW{ZtI+#C{Bv_`@Xz7OVHG;+e1UBpfui9>; zhh zHUoY0cp+wcz((IS4zFkcYkb-+L%djChj?@`hpXwFN(}6*3g{w`r4uMKoguKUfeB)5 zRC%wxUdP$^fMS|ULQZ@I7CuVy(_yF{ODZJXy>8ic$C1w-=y;}t(49>cZWNB4Ala1% z8>zq2&2gOGwL-8f*Z48;%ZCYYQRl4Ke3;~aWX1cnC}mVk^{JKlL~%)O@p+K61Txe= zmlGOX=d`vKwahdG-Lt~q3Rl}};5GLb#c>&^V~-6UH*O&o5h|pqWdDB23ORGF0W>RqXz zgn0j26p#NkhMngI5Kd<_L#xC!U38xc+gUFRM(}+!i3$RHtR{#f?G5npmG6c($7XOe z5+ehW<3oP@*trS7zpw2wK$VN1=o`l%#Za+qA=7l#hj4EwfNHmk3}xYbB8?L>aSSYE z_2wHq94EK7;8vekE5RAcV_I17RnERRIEk}!DgCbcgY?74jnqk@?VT~Q%;-u349YNu%|YJmm1gW0#Xj(s-VuD>PSQm zMc;fHmr2S5td0Nx diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png deleted file mode 100644 index 1c607d5c35ea3f4d5111a1542341d7df7c9c2ba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3509 zcmV;m4NCHfP)d<{Fcu{w0#9mv?=eJ zpAeun-w4Eu9|aC?hST>tgiHc%1%D3bcxK|Qb3n^6fZmqTR`~O8hgh<~c-T+#u+Ya0 zR4q`2AwPP@Uxah`mvGXGWqlozmPwUIyivZV?D3BEr9H-p((~okFu{2QVml$?`wj3= zP1eKOU@6*Z6yEC12+g~BN?|-ZK&^GXkA4QX<2MA^YCQ%6GR@Eqxs6^n}U zrzB{9@IB!8@8O*KJA)usqHlj>zSS7pJ>^|mRst?|RyWp&N*epXWG$5HX8P9_D#=3#s_rQ%GU?>M*$=s=a zc=K3#RzFS<@{HG6v_*jI`7B)#SBX)(Uai z3y|dt4T%LMCR_)n`_GVrJ1oh`x$>wf0dkB2;O(^#UIH@G#6o|*RyTg-GPn!Ard1D0 zT704ioVeQ%jyLo^oSnDvdTvhc55a4?3C_h&ozbh)mw?JXT$?<(6{2!Eu;31$?n*Lg zyIyiA7f7K6Oq6vKmsj zDUT2S$J|SZ*(W2<_q7L<{d&ezc&eihU)JNzp+dp5!y-bJP! zB$4&N?b!ygs(+=Ynjz4=jnkIk{t(TS(PaW^Wb6rE| zN_i-E9n^u+`)4!2M*2^Kt{hQ#g*=k5EuRhxMsufmE z1@bVYYqg*312T1b7Ch=%knfL-;-=ll@Y9ZdB)FdDa0n6pUQMv-^XZXfE#32)$~JTB zKq9J_Olbgu^->PJnD}-eU@9&{!>G?Ge;w6<)Y+2Qg=15rQuv(B?w4RyY z-R0kdrkO3bqH6qCXwe@%YI>`2QEDJq4Y@JBGRYrwmoN3-= zasZ<54W3+?Jx+O)(o+QCEvDhoz%jq>90&qOUq=}r$`8-1Xqy1C0J-G(GUpRRQxChM zE!iaTQA8J;*33V?1@3rfw&zuB>oPZ+u0QQAlg?4;o1OdOW7r-W)%7tbFN$67ZLh=X z%Ce#$)%l*Ep&BzV%d3lSjw#I4uoOsdct4zu=joc-Y-lU;s=pde<@v@?CAyd5K&>zS z);~hRks6>{@E8#+in_SFt=@!00gwuyA}kf+3C}|;l{Voj1PTkg(k+@yQ#Q5#;}?CcV~PYDWY2x z4dJe~I^5h;bLPQE<`D)#vb*tjZ-ARPXr*6v!XR62fzxnRY4R!sG+4+mK^+=PX{Dp{ zTo@v{p{}xEMg$;t#1dHl;Ry_~&{n!8XgX8l_{YAJcw})B_b+TRsZo@i&1_iqzXh@X zhj2Nq$bxkBa9eT!Czd}n>4y|0f%YWR7$DfdYf2#0ha6l`5jAn2<4xU<3X_Kq9_~S0 zD*bDSN^QzmRc;86QyX7bTY)QTDvE&h*}?2FQ$VGQ9XAUSriD{-&%fw#xY6cGPXUYQ zF!MG@kSZsGwWv_7BT!Xl3XzZ6-WrNyUm~f=OUXk&Lqz6g%2=6-I7_(Y2ZREm@XgL0-VIYU8J;G{i3AQRCAj+c4?dGGiZKMi^FwONlwBb3AQ@ zL*eTxub)h&^U4=;5p~$z zL^(`6$Qr8h_OuIG_gur=TUr*<$|-D1lId*~DHan2nB1bQ%$w0Y_0oud^KbMxm*TlDBl8N@R_!6j?Ym3#wRZgpYTQ6FGCyw=DFO8x?eMvNoJ6oG@yA>LuKuOVXITMyw z{E76=(J6aOS05{pd8#(et?0Nj5Ccyh>&0Uo18AamRq0SnI**@UzjQGwLvF$1AJkK| z_0o%~#I&)y5keFlSL?cIg?e_{YmPq2;agiYf|+bi@g3$?pKGW>CB5m{Qc=c!REdZ! z-Gdo}ponKR@ep7;7pXu7lS5IEuhn@@#)Ha0+gOHfzbvULYNX*30LYMQ}xR8P?R4vv&<=i~xV;wQ|mY zW=IOAi7r$IWDem>49Gycx^oC{R)J3Ru$j1ujPl7hh`F631kM7!xdB=X{OP_t``euV j^T5XqFxbwSe+T(L?uD8#1zeE%00000NkvXXu0mjfQHZ$R diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png deleted file mode 100644 index 1c607d5c35ea3f4d5111a1542341d7df7c9c2ba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3509 zcmV;m4NCHfP)d<{Fcu{w0#9mv?=eJ zpAeun-w4Eu9|aC?hST>tgiHc%1%D3bcxK|Qb3n^6fZmqTR`~O8hgh<~c-T+#u+Ya0 zR4q`2AwPP@Uxah`mvGXGWqlozmPwUIyivZV?D3BEr9H-p((~okFu{2QVml$?`wj3= zP1eKOU@6*Z6yEC12+g~BN?|-ZK&^GXkA4QX<2MA^YCQ%6GR@Eqxs6^n}U zrzB{9@IB!8@8O*KJA)usqHlj>zSS7pJ>^|mRst?|RyWp&N*epXWG$5HX8P9_D#=3#s_rQ%GU?>M*$=s=a zc=K3#RzFS<@{HG6v_*jI`7B)#SBX)(Uai z3y|dt4T%LMCR_)n`_GVrJ1oh`x$>wf0dkB2;O(^#UIH@G#6o|*RyTg-GPn!Ard1D0 zT704ioVeQ%jyLo^oSnDvdTvhc55a4?3C_h&ozbh)mw?JXT$?<(6{2!Eu;31$?n*Lg zyIyiA7f7K6Oq6vKmsj zDUT2S$J|SZ*(W2<_q7L<{d&ezc&eihU)JNzp+dp5!y-bJP! zB$4&N?b!ygs(+=Ynjz4=jnkIk{t(TS(PaW^Wb6rE| zN_i-E9n^u+`)4!2M*2^Kt{hQ#g*=k5EuRhxMsufmE z1@bVYYqg*312T1b7Ch=%knfL-;-=ll@Y9ZdB)FdDa0n6pUQMv-^XZXfE#32)$~JTB zKq9J_Olbgu^->PJnD}-eU@9&{!>G?Ge;w6<)Y+2Qg=15rQuv(B?w4RyY z-R0kdrkO3bqH6qCXwe@%YI>`2QEDJq4Y@JBGRYrwmoN3-= zasZ<54W3+?Jx+O)(o+QCEvDhoz%jq>90&qOUq=}r$`8-1Xqy1C0J-G(GUpRRQxChM zE!iaTQA8J;*33V?1@3rfw&zuB>oPZ+u0QQAlg?4;o1OdOW7r-W)%7tbFN$67ZLh=X z%Ce#$)%l*Ep&BzV%d3lSjw#I4uoOsdct4zu=joc-Y-lU;s=pde<@v@?CAyd5K&>zS z);~hRks6>{@E8#+in_SFt=@!00gwuyA}kf+3C}|;l{Voj1PTkg(k+@yQ#Q5#;}?CcV~PYDWY2x z4dJe~I^5h;bLPQE<`D)#vb*tjZ-ARPXr*6v!XR62fzxnRY4R!sG+4+mK^+=PX{Dp{ zTo@v{p{}xEMg$;t#1dHl;Ry_~&{n!8XgX8l_{YAJcw})B_b+TRsZo@i&1_iqzXh@X zhj2Nq$bxkBa9eT!Czd}n>4y|0f%YWR7$DfdYf2#0ha6l`5jAn2<4xU<3X_Kq9_~S0 zD*bDSN^QzmRc;86QyX7bTY)QTDvE&h*}?2FQ$VGQ9XAUSriD{-&%fw#xY6cGPXUYQ zF!MG@kSZsGwWv_7BT!Xl3XzZ6-WrNyUm~f=OUXk&Lqz6g%2=6-I7_(Y2ZREm@XgL0-VIYU8J;G{i3AQRCAj+c4?dGGiZKMi^FwONlwBb3AQ@ zL*eTxub)h&^U4=;5p~$z zL^(`6$Qr8h_OuIG_gur=TUr*<$|-D1lId*~DHan2nB1bQ%$w0Y_0oud^KbMxm*TlDBl8N@R_!6j?Ym3#wRZgpYTQ6FGCyw=DFO8x?eMvNoJ6oG@yA>LuKuOVXITMyw z{E76=(J6aOS05{pd8#(et?0Nj5Ccyh>&0Uo18AamRq0SnI**@UzjQGwLvF$1AJkK| z_0o%~#I&)y5keFlSL?cIg?e_{YmPq2;agiYf|+bi@g3$?pKGW>CB5m{Qc=c!REdZ! z-Gdo}ponKR@ep7;7pXu7lS5IEuhn@@#)Ha0+gOHfzbvULYNX*30LYMQ}xR8P?R4vv&<=i~xV;wQ|mY zW=IOAi7r$IWDem>49Gycx^oC{R)J3Ru$j1ujPl7hh`F631kM7!xdB=X{OP_t``euV j^T5XqFxbwSe+T(L?uD8#1zeE%00000NkvXXu0mjfQHZ$R diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png deleted file mode 100644 index 60e93a6a1e666cc452bb8ee700f8f43bf8fff19b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5618 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 FV1g=}>J|V1 diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png deleted file mode 100644 index 819410f9ffac0496b0801c65fc3920ac8ebd56e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5143 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 FV1g=}>J|V1 diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png deleted file mode 100644 index e00ae5a6a44bd40c58d4d0dd5339a56260638c46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7879 zcmV;&9ysBNP)P zHJ=)4?XYcnZ3t=r*IEtWTB`wEYc+sttp;$d)c~%w>}LM`c3rvuX&T^QIzUr@w9NY& zz*P>Y?`46eXT2|^d6~(e>9YoO?XYID1fc!|K>Xn4I&kd+(ClGo&KPVb3XeYHW*8Ps zD+14KhGw-ww_4~F`a$cN0=&w>K0GDZcco-%5)zl;i0^|x`ZD~nwa}uQpe1%gw+ErQ zG3b7hUT*fhr^5{r@;YcnBRs1Ue*Gf&O{<|rj)fjM3VN7;*RrmM%=N0N9bOVFfHea7 zf*ailfAA@QUi$beFdPCj_>E?&m!ZHpND9TUcv1`aB-y?#-g}w_FEj@p0gaB+pmm%A zv#v9vANcp`9%=wj0kAIh#@+uUw7#E0AAW{FJs^QJ>f~Pmg|BR?Kw;+`qJt&?{oW(6 zy#&nx4=#c2w!abDym!E8I|1qG#iy+TiJs*EXC#J|q`UWFXnXF3IrgHID5F7v>MMz? zR9Caqv6rF?$KdHU?sJD^Y+l6p>4YZ=E$=&o)!Vy znEB1r51|5)CYm!&|LSl$P6w7<4XbIHgjP(#nUUt%39tg!PSJpF`2wuIpOC>r-7uOk z!5y0R(KO`sol&?(1kS=sU@o~FhFBFGrA=x8=R#KftHB<82HM6OVa2xs?y672 znsX+7>LG2o)c~FduCS2TU58NL56FXWm6mPEQmYk6LzZcv32CNhD)QC?i&pryDQN-Id3*(UmLo*(16q>SO+7?^EqQ$4 z9~aehi6t>-sres-vFcOGotk=(s~g}faJ?5Vg*Eg9t+(w(s$^y5@`Ui>!iV+rM!4a5 z@amUBt6vB|JeO$67E<{kafC-cu0a$glD*L4JH$&*^+ETN5^Q$A#6)q6zmL=)5OGmxj=9ORqBkuB_7%B{%6TFHLpH&z#!kbvQ|xx?Evz-vG+$X27d#?i;+FhT--X% z{yVGd?<2J7Mq2*b3zrfeD3=Kb6ZYKmp)a}^X2ZORTyen$ zR+cOW0A_LB&ggnz`(3aGAES8?62XbW?o-mGo|}Yo+&u_&{KJ&FP}K*p>S$`@WtcBq zKm>-79+13)#-P#KX-7_gzv2dRkB?JKQiY>E=`f@r-L`!s$y+`LGr5bTxur0W`Ce#E zcQ{hD=BKd2?Nh>dRatyX4w^%8S#87h6vDGJ>`>lr_@wqmkt8csTk~Ut7+fCcAi7h@ zf#Y+DwU-wW58*j)0bct6QthV;OSvHaneR)lhe=^ef755AT|Nc2R&@bPofhldwy(h& zUn`B6ywbp3aLDqtky`m#SgWpusb@67lybo0+`3p&%uox=%PT#}oT$Sa|t4BpE^^_Xh1mn4P5`SCBbmrf9a6A|8QFkERecH@LaK!yHPenB9 zwr?V|?TchPv=l(ZFsP)eLvu+BJP6a`KuP8NB_C0eoUb2BRTHP~?Yu{YsVm2+R|mkNL*!Ww{T1fm@08my zF@;8|+iaC<(*O=5wd`7iy5BNm(VADyQo)FMu$Em3d)|B0nw;mpxUXgeM(_P_;`<7; zJ7yEWN_w^3-(}BN4U{ru1mBzzq&*LoPo#y*lR;}lYQYC#Eqbq%f*A)F6F}yHHCEpY zyZI!#_pv;Z%*JJi*t31`_xzxuQatl(aIp50Pia2??~*PQv|>WI5u7REg?r#Nu7=-q zG_Z>bk4_ljmOxRX>M|PxcW->Fv?&B9r(<%-)CBA1SY5zL4~neLO7yD=roAsI z!F|7kPRtV+P$Kr-hSl)e-vF)spP)yM6vl^sh-0TS^j4hc$e3`bX&G78m%-R}D_P8K zIjm$~^xa78fZhLVVE)@HlE62^5-b67Qe*J{bh;oloUXS*n{y7)ipP^QYgy1`(~8A1 zQ8U{=*Cl)5FK;J9YMW%cCW}U~eL+i*-F6C$*W9gw5wlr>MdCOOKy)ko`5%C`-~xm~ zkxZA;3{xX5ZIZXdIg(WCQP!j{Awk|PLibfJfbsq z(tpF46lGS)9Ec#&CbZyPWpmV3VR{O1gMrNIjHl9<8Bjg_!wQ%lSs9tm=mvO$zZZ$| z>~?8PR)o6XM~;Qoc`5}e7G(JBk_K8yu^C3P`)x3{e~H%O`rM2akHdjy;1R&OR^Du` z%4iY?_<5l9EGgI(PvTD_F$~xaE}h>g^RdbR*N*N6w%!JV;=8&V&Crg4bdx;0W;>iY zZ-cSyBV^hol z;5eQbiDP5j#^!{BtL8Nea5+EAD7McEpya?GV7&4lFnQMllPYZ8s)>{yWNHSvEykYj z!a49q*hdpT9$8)*$N|gMv|PA*#`udeE98*At}oJqID^EEkveZ)Rn|IO6#!2FmOB0D zz$otDKZ>VElNcr>Ez;4A1ZtOM;M|U;EHH}bbl{f`{t4#GSITP%x5de!E(sX&OU?Lp zxG!D^`@|o>YM5VISdXqDyo8oD!05A?3o%=O*F+-PZb@>$rb*ClYFO16mP23Ej8jct+PkPwtgzucfSM zzEtaabUhhAdr(*!(W{%m*0=yTf1KEKN7MbUdVm?AfJFGl?)@aSd$GrM(Lqw{F|dBV zsR6W=akoAhEFuM{9KwP$0hfF5o{lu|MIbCB&#do;*Y*Zl^rNNm$qc5OfY)`7+Oc1x zHVOKk8YF;6@&K%MKn4_Q8RW#-<1t*fV-OKj7j94?05JJ6Nb30b1`7`!-Gf_>m?ywxV#F&a=B2ie za#0lbh-+0kD+&XN!Szxi(a&G?85!LPV%8-zf9!7*!ppx*u!-f>FD@I8ib}8#r9Nq9 zer#($Vl+V`1}3mllg%=o%fn~SPGq%k=M_a8&AkjC6E5LB^`L5T4!CQ<}2HDxtC}OMTRJJr)|C!W^99qJ#*S> zTB1c(XG*w4qKL|h>k$%RyHbPxDyxGSFn#=GS(MGson6UE2YQ2&V66%O4k*Z-@dWPN zJ3_$%xidfKq=vMTUDChbSTP6Zbhd~|!cuEg9NY}ZyeTczc?z7ie?V&AW6%blpvcWu zK@GBMbh-XV8l*<;ECJ+Pyt-HDh<(klA2h4S@}s70oYU773;{b`uR{4%|>o;g&Yx(2gsnh zaZwx2?QRvnpB8YlK~`%o--~YWdfc2fW8KW}%Gsf)B;Of$3ZbzV@>|dJdzbBk_Sa_s zFQZk&iVm>+R__6fdwyO&mA_|$>fbsVaMi*tp@fWS#CC$T2%v)<2U%qpg1t~>UqXgA zwO!wVmJckkDLetU@kkhvBQu}PB)|bUJ7NhudLTwtv!2tX;VvfVpv55rpF3hsdWOt= z3cH4i?~+jNkh}LGSi{d0;QMN_v{ToarI9I90ke;=)+-xr!Pzkb_uUpiC z7RwUru0HeVR=)XiL!6Tug}&{}qzvlvgG<)4Yjr{EK3jcMzJe|53=AY&&aUU;SG4xl z>sn4ygJ#&N7=QYvfNP9YwYGa@nu42F8&-^p1OB_5VT^ zOU3dED;O#qFFheTP%9dbmPYuV!x|&PX@^|Aj>aUB0aY}ncv0kNjBG_soeP-1W z(j>m;$i2Cm{LaHP1Fbfq^A164>lf&40qHraXsN?HA0jKWw#$^?%5sx}ERAQz5+Zlm z&uLs~aA@s4zbgWnW963&aCXxBD`QbSHZ+cxqABbrw~Ms`C+{885W?y0O<2>?B!r=) zMEPQ;y8y;SV*l@9t@{|cUZKo)IYvgVy&cdNUr|x%Eeqfv?Yu9M!X~AjbH%SyBt|_U z9jCQ5smW0uxP6HvKD~WE9wF^9?m{KbD|RgI;PK%E?&=%Gn_B8{{o*dHXsn+)kb}KW zEV*Pchc;d(NKwH#7b3m(Fq~x{Lb#!);sw!41~?!$HpP;HxoR{gcaK=o<21Ub(O`Fm zLnV`M0YHBl9>XP@_F<3hp_SaS4oi8kSvya3L)rt65ztSM?Z#J+=*C%!3auQ-8L1UD zHMe{Pp`CXTK3uHSC=6V845{XmU@pE`eO5Jv(Bx=tj3<%uk;jRbDY36>u9ruauqFn; zyfPNUdp7i8kVdrAR67K-46R_z4ML2Z+~@cjF5b8gPYsRAERnL;WIvM`!csfF4c_w? zA-v;j^xp_F@v)rfigUOcjmfH8(owidGXiA*EN^6M+);1+9MbNS3I~o=+fIt!GX@DR z*TcGc%RWSD92)6-g(MNMpG_+ROyZWW*|Hx)sgyWZ=@@%yU>!S()Yd!2jzMeqk1B}Z zp`f#KV!JaY;?p5vSUFQtw5{Yb21{sf$`+|?xuyZn^)^zai|axYjxBgd)p*^vcNot{ zZL}1?bssGKyklZ#%Ej0B3{5y^@v=+TP7ENq?c2b!=OVQI%d)@!$-_!kBYQ(D8f^O*Anc8jRw@ z3v5IztH}L{z6d2Ix7-D5&%Frq)>AIW5J+t?;8Msi)%8|U`MnaUv3YSSeiqA?qEO$s z>*l2zU9lEwg0(7kD{~-eo1+PAOynn1a@{klYTiw;c08`mUDO^J+3)Cj7|sBltV5Rh zFXqt#0^A`a+fIdX%vWSt|0!5^%LX`THr*U&V(2-tjd^l1NWA|@tUE;mBahgTv;|R8 zPDukc1d}wLo8xx+lfrLA?S>3NnGu2Hw!aC+ao-g2=IMA~R+&_#Uyu|qNTqYm z^0=tyqx`up?{(ZM=P^9FikVIFd-1FWTDQB;gK_-bFbxya^)$4yR(4TGqX6Joa_o}% zLaEdn)bo4G^Kj(7Hk##hyO?K2m?FOGIZ4<{u7-8QhtsypbUo^>EPyQ<^pMVJY_0(D zP=oLL0ns6gb8AI*Eby-vhD~7!du0SDSd)b4bW7{3^d|-D1Z6+CPE>?M^GmHJ${{)Y zM3*CPLa6)Aa)hS&siY-cDd--9+h`bhT@E%T4$%7PsCBHUO_%CoD;vT%qRtdM{q+*> zIYojqFJ$2OCP}yyx1OuQEcTGplD5>S#>m*sq{+b6Qxakz2=?#yTJe7i7?j5Ek ztmIr+QpViiYmXIaSS@6+P(nVrk zQkDD7#y4H!KP3z)yKXU3NB=jhWAA`f*OkRDPk-#Y^k9S1Zga@D^^lnK=7XdF-ecKr2$=^(&)gHi%U%qY(RwDAMJ>kwYb1HVOXCRzdU5M$AjNfL zecrx&4y}O@?oJ_=dB8mS-WA7;<*&Pb_05FCjOwne@%qj_AVKWki$2xd(m=E!7V%JfB`m;I+L@CdjqDHgnEH zlw_RAR&puB!2axwCvfK4-H7=)O%EbPAlB<&AGZ)~p-{=i`2v8pMB}(=#{ixji6cp$ zg;YE^_zedl_E|kp!#}SuFzkl`C3WWdLW8_Hf?X zop_dl0F60lL^g5`I4-_Hl62mjwsdv7Qd%}pf2P>*!$VP`9}^gIr5QN>rwsOjGmlFrYssBk8<3 zttF}H%w$njd+6`Utr79!iN;wYeEG0GanLI>;L6j_el*@em2rdpS;4ic;XwmsSpdP! zpGJ~Wr{@mj^8hr_!2d6;!+#zg7Z-NRP#(HU&k3?BeF8K@K6%(MG7ppXGrz4&)3Ua* zXqjsxv&}U{uGIH?2e5H0T4E)wDw5zp2-id!u!5}VO-Tp!+T?1Q2f_9=+|@fQq)w}V z)1M7qwvkmy6&ajYR5em^8Dwn+zt}?2u7@a`c|U0=E}Zz(Yg$natvrCC_5_pEoJj=2 z+C3v^w6sZ?E&gpYP4mZx<9K{v1ZPxuN8wbc!|eRAz%mz*lH0X8p2Q!9V|e^P6wgId zWU>3?4*IxZVH+BV?{@qOZC)>DOv*K~f;w1i)t*h(w4Vno9;^h{og~WevEvq@-ZabH z0XuaqSVKJmbBLI@-N_WzN0WGwUN4L%Mg8g#0@W1dj%7JypVsJK9kT$-8|$+Qz|B$# z7J#Yb@*}82Z)vT^14A*in);+H6aSVYLmOytZrIk3FRtjB@pUSf!@{W3gMt$p>8S*oWlD*-LnPdxHcQGY@VcP?eeL)GnUaim;YH--*>SXFJ~4KaTJ9 z4hnzOt|FAhhB*3rAKlv*Y1!GHA|BoIMR0|a>f2}nH|Uvi$APiMegELR)(K;BSO6SI z@rf->IH#>1qpp|N$YJ83nFi{H9fSDIz_4J$ssUtM*#y5G9L4oJhR{wEkvG)^WmAGu z$JvIY+*IdL-y6hEifWPGiUFKGW3O4zfrzf^rf5jiM2H_By;WB;P1K5*DUOqFcyauz`6owMNPC;QkL3%(IWckSaR(y1EmpGH7=*+1aFR5|^SH{PecJ$**wB|M#dO>yY zST#rK1gq;!JaX(J;VxF&V=^oL+@yeGeql6<^ZvF+sNg~vonTN{8h8)WXP0&f%bc5| zsK!bS+(cl3t>of;YTJJNZX_WLD8In_m1^C`14s4X1d4K%!>`X8fCE5y@b1|&h)--E zET|w_(AdBkAxVyqSYI-?1(#8fpOe(ZO})+Oz@Xnto^kQ&nlFt@;u{Me>m@mz*ts?8c|Js%}$URGz|-CYr!-_?ws zgNl+$)$ga}DS+M2`YfOovm1vvf3klR|Ip9qrDL)Me5O07b-kkg4m_r zL<-N2#qk)07JomQAb>ow5A^g_m_i4^Qj&Wnxr6r|IX|7uU#*o!ru5l`0aeElmh=C% z8&8j?iUK(RT30@D)RksWCrKP5^sX=#I>`2)d$aK^ngL&PPF(@u6DqSldC{!8rWcdAN^~Hx?2<8EdTfJ*k1lA#*ymIg)Yxw3vh1Gga3){WPL0D9~f7E4`3cv0M}Y!Z8ouPwN?YT)@lIP0Iszf lz_nHbxYlX_*V;6+{|DzI^6%F^&QkyY002ovPDHLkV1iRGRc-(P diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png deleted file mode 100644 index f5301f37d539dec93a855f5330a94743f797041c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155248 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%0A(a>@^on~< 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 BiC6#t diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512x512@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512x512@2x.png deleted file mode 100644 index 5e9add73161e79c11efd1e2c4e4ee64f243c99e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15001 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 diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png deleted file mode 100644 index 3546ca10cd77fb1309190807db42bb23b56bf2a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12188 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

czx#jF#6mJLj~w)_{zG8b6!^vNY{U+x}olE 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 YT4AfGt7r@P&$-+%78`+i(W zyOx;v&a7A7d-vXRzVrXz|Nq~ABq4Fog(L7`T!7#LU>5*eONX_#ho|W^pJs*dfB1C= z48TZNV_{?f5n^fA*YFT)B1)=BV;I6rf22OK=ZR92c+HUGB-H1oRgYzEA_}#Vu%fw~ zA{`GjQ9GttT?@+t%C#5BoqmI8@^zy40TPKbBIcBv1S+8KW5LVTqfs&;y#a+aEG7lVmUev*T z>ohou35(nZ=MXfU@CK6GA4hP#Y{j6}9x&gsW)SuE-L1JQ=6zlaC}#n4N3=8>NHUQ} zHjxZ>1K5 z^L8@rxSp6(=t4*x7%V4t8OhGyCu+ZejD{`1Fq9J@HN^v)6uEOpiN;?cG4cYLa|dy6 zELug!%!5+K*Tj+c`&0wYh!SnIdbYZ5nc5x65wdo608NlFklHVoc_;} zHT*41qCL+I^*|BP?5ta8OVWuAZzHGUNw+jxGeWf zjg!6pgJfR*2qwSubfY$aX>+&FeUHrjA14uNDYPt1M1otKzR!}``)4}Qw6&WoBhl2n z#FMd4Jw?{hFW^>D$~bYx(j;5-L0n_S%Gx$vq z@nJ71Wk7iFs*s){xj077ru!(=bE~!tqdJ+me;?e_!o8i1_o?UQS`fwu%j2=RgU{rQ zc@5``cSUw>a6A&wrwJwj$hCXt-{*a8pCzXbl9ee}>H~JFtzP*8MyarJ+V>J@1 z=HO)+xsflB@#~Q9;@zG6Im!8B-gly#pnY8hH!>@$5c<3mA0Y7ttSskRw!#!SA=H@H zd`G7=l}A`_I~ z0+UmxM2OtzRwT`XcQ{Ts6pFe3a}< z|Cy`}A1v>l0EfBEZha4w+*k7+Y(ULLYT*MGAiby>V7|pzSfSI2Mf#W16ZAYRYRZ<> zU>aoN8W#ZHH38`lj?DD5s3DNL+Ud}mgYYd56?Ue z6(a6QIK{LwWl?Y^nen8E?YPgpLtWO4rLNbo;a=%GjFNjB1*ZW&q>I`6kzt0 zt|gdlDkd+21f80@{oIz*Q4YKFbgk2tBa1g9a zu!dG4%1Kp{g{YWd$x=~Jm$X(2)?4ufy1jpp=HPOzu&h)*Q2Y@5vw-t)$IWs)Q7~}D z5zw?e*KzfVmjR8VF<%P-QDohtD7IXJsYok|;2sK`hb@c491YgMT!QX6I7svOf7BEO zR>iKE^S<$)_7KyW-oNdK&xsiXa>&T*o8dw+~_a7ah zL&&X~ih#w(B&_Q8js|*pXD{8^-KN0e)I(I@BnHQXH0^A85S2~b)A&_+l=Z@AGKE&! z)(0VmY|Cocmf}VnGyCC|$>PAGdI;*0OR_LWN4#&3PSbN^vxtON4rlp{GY_u%`%Ufi z=RNIdzT@v1K}Myb9m=VmKO(2DmBi6U$yhk%aS(ar?M60}yabs(7tK_mXaME~T_q$+dP z>GZ)r*n%eDh7Vlas=%^YK@lrZy0m*TFh=_xbdmPtfe}Pn=9(53cJ>=yBAl&O@cnHB zjrLt0SON9@K!7nU4Augy>uJ=6G4Pg?0~XOV2>zzl2z|1*LkET`$b!CnoS(q@a(6`w zh5Mq#XAVE7m0!1DUetMGmXKNb2;?oU28Y##BMUZ49U~_&vo$pVp@%njdXMI8JB-WRE(D;gsTyv#LA zMk?)!siEh|I{p}D*qoQg8EPwngC2wExot_-6$mg_Tg(Au^&=ql1}g&?TSXk!^}8(* z+8nJ{+*K}ha5WG=oSLOCoE)S5^GRCN_o~O|yBfmu`HkyncT;TXp!t1CmWR$fL)O5< zx-VJaF1QqV+~&U`%ZgOLFX?;8fw@Ih=HyzCQ2cX!OEe8`Im==&|NGn&-O_)S_RXiL z9>If^4St1Txj&vw(gzL<(o5qr3amixnT~pv>N7fr9#UGG;C&VaO3JO8*@>TpVV@39ntmdYBI*Sb$Nu`4hNSeYd2QxoQ+C28w&2{huN;aa!kE zMK+@NyLYyKS?662EhnW8U}4^rnX7yuFx$v~rE zdOV@NU6RM7w)N4M$&9}Vakj0*Rwv8bZwB?&-GQjtur+HBM=dN&56&*4e)5n*n4D!) zUa2_%HUoss;;MQM!0h@{NQ4t<{jBuZ4Bm=q_VWaY!qc0CjLEm zgNxrq_p5-^ljHSvO_JUDesXs|OQB0Xp|_m7 zRE;g?!2r`Pv>B1m697eyHO#}h-kwY3Tw7>0o|WxtiqhwL+i465Fz0lZE{ptE0`p>( z_F-sgm&PLL+^uj>n%m}2plh@bH&2jbwUNEyPszRV88Wwj3FN*dvrD^*zd}>dM*Z== z3k}$i$R}W_KzkLfwL7}X+k>gU`>~7KsV!vCBWU!Vfu@#SHL#rhKwk&l+|is?Jj&9= zBCHGbpu27_i58Y=nluMGyg@*9ysLdw6cBw$ZDcVC;qVk19+*hh=e&jy{J>IlSGcaC z1gFX;;*!dyS0?A^2q(n&|JFzd6+;6>Ei-*hkRy9%wd;DD^ZWo+i=AhI6jy%&clMvA z|DQ@wla(Q3)x?F1eICN$UqcJ?+i&HLa&=wjQGo6=Wn0sJ^hw7d7F^%fRCUk- zEu@d>@3l3kd@P&Cn7}!CePU!r4U)mClx3J{DMzN8zK%{rgMj7dYKr>|OM%6m_wS5O z(Y=QT>84+tqFFr%x5~S@0$G^9N|PAWd*PN-j#Lp+W&tqCni#r7k8Rzs0(mCbI6Nzw zr;~8!gAfJYnq5@N2dgQZwp<0(<9jQTitY4YsfpKI7+bImP=qm>%w0-=uT6%3@|s zEG&CDw2WSD8w;GE_+?NBBH?`-S|Lk2Ijg7mhrB%PBZr6SMQB1zdl-|xzi(|=~ zg8iL_gAn-M_cmM;iCEa6oXF@8mCL4U8^iRs7q`=Otqlb(CQ0V~rkcnL7Lr~VouNn0 zOi(`*T26Sq@8vEcH;?<^ivPQ#7l4{Iam8f==DP_G^heOm(W@-$zpWEWrBNToQ%5pqOD4*&XC z=g#^B+?^E;bzV!@`HR7IYy|ILf7b@u)ff$wG_M+99%x>ee|aKK_kyz)wE~+ea!W&a zF30CMSK@amGm5TP`(;uDOR2lEsHPv%TdBH`Mm%}x2HJu4-1z`&#eij7+5wa!9~&5^ zgPLpn+^yh&{!0Uxot7|cQf79a<{y41iNV^_SWk~{>!uC$b>|JNssNS^8t=V$=)^gC zdL*uXF{;rLX$5r!e_X-qR^bNI;6v8R?(J?y`p}_JKc8S#4KO0gA=@8M&(RkV*K3<)irT-e4 zrq^Z`Xf)+2Bcq1fJoP*1tlzo5MG26eMOSHe&}svgu{NLN zy<-UF)N507^g~!&KZ@jG^f=>8{CN4YHv`B(a?7r#&ZOnSS0ihz z22!;IEE_llM%DzmIWY>r&f&#-$`1^@s67{VYS001XQNkl@x^61IQw)K}?7!Chtqrl}uV{(S>rjqy@2`4S+Su6~vY7T+tl*5U=7)(CbV3RIo~ zfFArt42OU1OuDeO^C=mUh0 zPQ$Uf1<H% zPb1RzdTHm@FgH6q0HzkewrAiz|M!Rt{Qx>!fJQLPz2S*J<&!hyth|9#>_N zNg&I#z8e1Vw;&dYFF42+55NM><@s=*{ve`bzYYmpT3)nzDFG^1Pr!>Vg_}4MXj%(D zz6xf132eO$y48ey7L)_enStd_!Ab3<0QnARvs<9^E4>E>=}%xl>TwBzFgP27%o#_z z* z9oY?EL~P%k1g`GNz$Lf|J2j`_MEc=$zY%)>1<+fM%jIze_swUt7G|s#qH4d4*Zp$K z*aCDXH^3kKG0c&BVP*yjfaX>VvULADU>)-nX+bvtR>oi*hyaneuco*QNhA6 zdYBE8NQ?Bs>Aw{EvP)sbd-6-;tDLWjvQP`+oGNh5|FYAg6mY)_=D>GgWd}*pw&r!d zGC}5NN0B+=vxu(w5Ix%b>tpo|Fh#KJ=%X;6c^`3?SbhOZri3A~7(80cZ2u+DSAT?n z)nAY*qg79j2}Gg_z}u-Ic-y}YYw#}OJSwZBtWBfIn7NaJ{mO43+Vk3ZSNiK0U?RO( zgPoZKo_HH9n|8b&En~L_CjJD)_>O{iK10R$9JLtpC0cw108_?HM<0W}<;#e0 z%v3}l%F)f(K*_*1yWpSvABe=d=T+&i-?B9lWg_cz%XP5QJESF64!C&92wZ83>*3@d zAjaSlS*M=VW9C(F(d0d8^Y9#EU8g}i`EF$TE*5hvoOAKR6ST21d*BnTymBsa*a1vs zciMaJrNH%%)$T4;sn-SZeX^wRP@CprSuvQ${x4)+@ddbU z8qy9eac)c-qETe{|06qakNkcm21F^3Qhy>+T0_}v658W$CDFK#{uxDSfoonMhkRxp z-1XNZ(tn$}?-iGIq>v_^133RB+Ih%&eY_tR<*TnGTKi#f)Zyb;->|4Eg_9jJoo z5F3+>ATzTQE*TKMqGh#5eF046&}XN&!`k~jnJicmt5-Ugn<371BjSB$D@A_3b**xM zW{SDSXwI4SH&Hk&i;_7IKP$ODtbKRGPQFkOJ!k+dppf*0@45{J*CPsG_=f3BpsII*J7F(Eigy# zhdsGTLZFIVtd1z`%ly=V@56K^3Ox2&J}bea@D7PT-sK+qlFW8^J#EMjwBZX45 zC&+SS@hH+_d>M@PQX&@VT0QWa*1>N*5okFMXgU%`tdHnv?H80@n7CZHB$4iv^!QV- zp1Ojf7>XW60#q0}dJ{Qc$)b$+RgEU~!NHVxbcY{6OvLD#g~;Rm>PDBtZ95(4ItzN+ ziL{Y>50K$d5R_gl%|(QQ?jYK60y136w)>V6;;_D`q%w(?nW6iDRaeewn{fC6jFSlI z2N%a`ZW4~s3b*TA_`Pq2(eWpUL|Y4#$-)G_AoW3CoZXQ$5vhc+>cen`?<3V=R8^uE z!^wP+v7yoToRwF?tWtck_5r5iX7>2gKxzP))mK65zmS;N>bVU<6cBS(<6$v0!Nu5V znqK}M7+b$g_$rc%F3_E7O$j5i`#q3PA1LG*~ftV%jh9k?kpL99sgDnuAuK_D9XK{FkM zx8Ikq>H;gUWDT-hNl)a>;CkZ4@4dhWC%8>DihSjDxeJfedx6NlEuIVc!dTMBAC`2g zLL{S3+!PXIxn1}2-04vfGF32>Q8DbKbcUn(@IsQxKh&~jzl=Ib{adKckOKzQIp<9!6+XOh^ zRtzXZE$B!(jYp?a`0eB@{xFllA7^a5wJU+w_jHt#f=?izpW=jyJ-ZCuVh)25z*Pa&wV znSR{?Y%Z{fpv0*j9G}KLqtkeJDvbf#6JSc{x&YqWx?2?e{mNx#0IuO*!F=wML_Aj& z^|}YP+zJ^8b2j>HBs&1_>GvYD_C`dPo);p>9c*7j^mnTp1vLuxH81K1h{lv z=Ajjx=;+JO>T%*24kDYcLN?loXxFR55tj-WdSW%{eQRLMZYVC5$(M@0k=ad=wpkdW z?^t+xSX}_jRUC`KHImNY*1co6Yh(tyh+D;U4b2Kv%-Q&}OzIT<;@W zb_M90KPNet09P4Vp(^KI*BxjiVr>r9aQme&7L~588)S4)xC}FYq{}6WGg=wk*>Q@x zk)zg1gsSJ)w3|Y3E#yVvzwH{rInV6E%>zk{(;qqsSaIS^0kCqa4}YF^=FtgRo?o%6 zLM1u6J8y->?Vq@Av67Ty{w{HsNP0UN3E?LH32$4=`XUtkLMqD?9xXFe@ViA0FxU5G z7=&KG9-Y8>Pw&JRcTQk})~1U@A9FJXm3NQ_TNjUnKrqR@ob(vX!5>M5K8$>Jz6M!( z#?VjTq=uA;3}<0I&K%+17sXyrlMw+seV72u@ug)rW81iT%N|^|c?g@+E&;5zac$kKvrCbvH&vRY-ESvjyyQ$UgZz@oFaoH*Mgw9?`iZ| zKCL9|QBwd5dN(jQo|sJHJQ9a@49^H1E3RvzB~vj=%hzDh*&B@%kiD{bVe;{+IBvOJ zx;FWHm0hY;dNH}E58E=twM;{X ze2S%U4q!mD<`vSt%tbS#k&)U~M2dE)$dxVvKeZE{7v6Gs9X`i9E-rut z;K~xXF5kEZzn+rda%v`nNGZ*na&0Q7WkK9Moa=jV^k$-ir37T0 z&>lm$te1x7rb6Ho^ zz4?{RR$Qg+R8%83ldtKwouWEJ`;}fy{;;QHd(L7~c5+WiYKq=g{{Zs~-hE=rUfeg4 zMt6naVqh_E86!|}VCb^0IKH>OA8X=K`H&S^k&;A4*K5VOj-`v9gKP=nUar**z3Wfs z+^f>zl1JX>de9OQ4}Fe!nC%FA%)1U2WI}v(=P`m zjQ94pV`Wn!#2KrM(RdHCy?+5yRPS_E-dtFuD^J2%`c^~}OG3&IlXNu5?O_P3w5iCi z5&t50i5ct3KXW|-%uycp2Sz4vO|{bg?2AJfw0*?%(ru>Tu~~t?xHEx!k6Vtjy4vKS?FztEdmz;ij@xUd*WE;% zGb8(66y2FebuXmvxMbnkYyTdxo<9pOby{&#Z*~Xt)QghC7FAiKiIxjqY`JL59(GRt zya3EmVW2w)#)MMeZpw3nN}VW^aE7+%H7nZjwe`!cV+K-vlI5Q|AyGIi$X5`kOcK6eh-6tcN87gQm&Gw zqf}qoa2ugiT?gYwWX>{_&fw-f<7hTY*Sq+^ZC?gtzj0I#{zB#0LvXG6cC#BI&6#_- zW?O!U^tP|T9R8^|HCLSTEfzM|x1JO~d~On1i{8?=K_i_j7Kp_#D~mKuwxk>V6}>Iq zJt4@*)ln_SS0!Lkb$|sr(M`KXM814yiQG#zyM*Wf^Y3f>aaLzb&RAHm5KbU2NhkBy ze;)R#50LWzAoR({;iq>a;!cXmWl3??$cf56G>u#lkwkxW%GOi?vNKKABh5h`Sy(*x zat-o-wZ5`|;&lSBz$Nk2)HLoMokg2b8n^=AwoM-STaW4!;9{4CrPV-iP$dX*9#w?9 z)2w(qJbsBz;~7a@Eh=>SIV}!?{$*9z#{ST~vOh(!?E{#OZW>Ufap}S3hvnIe*_<%tsst74*6whN0pd7rx;s-4bs?sw< zX541&S?D6;HeOPqp-}KU{)Fg?svOc#H6`Cu#TQRbPUHUZ6k3Uul>#o-t=JXuL2{m6 zxvX307iP_7HE0D2zFPF04y0H2Foz)HcJGg5y?{9F#4q~0A~CV^Pu1+gpJVl`NHy2n z_7eBvg9S>MJB!sMS&OGPMR4t!zA8_&S`R-TyCJA{nufXOTlBUR?j@bQZqs_0ZO5x= zhfn3ItXoh;{o>3lemUc&#C zh1YYgI6EKLauzH-t8h)M{Gf_GqN)aOxBycfk~Ytzu{Gl$sud?5`T4T+-K7y7 z=c{&0VK1!k%PC-G9S4t1&EWAQ%`@#_(zZoEt+t4XbukmCwZw5sTT`xSUGUvn0N3o; zldv}Y4;3BY|Cb;dRZmuX$rXsS9X&6n--gb?c>G~HjcHny4zoDtDlgtFv8?mk2zDg8(q%8AvW7;HMnXvHQzBXLk*G_-e7m%CD zD1lGlvPT|5gurETwrWYO0n|1ow}cZ}0%Og`R5oz+y^G<7iqrx;NdVJI{;H32JDYMe z4U26Dz}S$S!C!A3!V@#L=p)9jrk8mDzWvj)4nDSZ1b30E+%SM=Q;w(sU?*Mt|upxc>k6m*uF*)1=&EQnB@^}0H4LYj!_cdmv7pO?XxLa8do)t zDPS=_Cy|($coyChmm)TB2Xw0y`TUX+mzYGOZS_K5drdgyai!foB+{rk57@5AfG8oK zQY_?giKzHj7>gHJv(u!!e{$=v09RBmkNfc4n&@J~wvSJ~Feo^*u7%yA!Yk;vPr6oi z3fbpxg!$BEh|D}ou82;>waU0FZwN09@5nESe6+G_2^Jh+>gS$R2APtqF4=zkm_!)O z;^YWG`oDLNivF#o#6k}YGKgj@|CP+*4l)u7?-9yi{fPCfY!d11cL0xHgy`;XO1Ftf z9xSs&jZWVV^72Inm zohAi+8m%IOHVn}E!Z5gFa0>4v>oR6qp@?%%r{*J~G58bcL-!z>-cA@u0z_W%3Dv`Y{&P}7yrU%bu_x%j|tA5mL-H^yp~zQ|-N4{-CXj7E6UH$& zDTnI9oRJwGz|`E6wku5OVrkEd)Iuz$Sr13%1m$rLPo^s7hA+1v9-(W8HTXOu^36*< zD+jC!XraKBX+9D9abJgJ=v6sIZQcPEc#vjYx3rpK7Li1Rm{Ga3_SFM$FVZ!BlNiFn-gsdWu5|{QUDi8+oG+kQH&_Vzg>0B8WiznVez-?X- zrM~I_E1P44%xS8Z=p#WJJf|PlgezG>=1@wZ*N?xII9I$Tz{MlN~Mbk<)qSKHO2Y6PV6COB5EHWCFMhsbl8D>L5NXP5yi0nsES&_Y@ zl5J1ZhIC6bpS4{0$1&SsANzI01i1WyQ-Et@gf|m~Dt2o6C2U8LXh;B?35m@}*MW{x zT4FM#IAntH^-gV#&3WdE7J&Oml;T2QU5mJ$Z%-iAbuRpqe~4)BpUYF*#NTTx2RKBi zOKNvVEcI3^>KmL?I6*)dv)zKLR0aSZ=X5leT#I?A>jo#doz*V$Fe(ko3#&A{j~1br zDr_b4>@nD87c%Q^Lge^=hBYTMqV^KZLwB_Hm_bTQaVyJ1dCYiJ5SGb(YSLn{{IEYBo3V<~s?wMZpe)y;S2(e`s zD3Mq@`c_o|77%+0dE|LPi%yk>RPs5+XYQ3M80y|vujoRn9(3lZj7XgEu{@&VuT-^D zVx!Z7}Vmgbi)?ZQ6N?{3&Vj&?JDT3b=Xq0e$=2pb_cuI|J+ z-Rm8V5K zGHPN|$|aY@p>weK&k_3auB?k^r_*?KM+9LUuN};Zum71<#Cb?Lzjo&s#$8P)|3Tv5 z{?pS`8%_oxH(%){lzsKc9-QCXq0Y1phh8GPYxrK_YOo`{@F=|FcfJN%$7^7=t`jst z9Rn+LfC*aoa)nN4j^f7?X%x$cSfr)tyFVYFA%L}p<`@kC#*2C7(r%pE635NE$M8#< z+l1;f#xGrcQ1&A8MGvx8`sF2^aa_H!TQnFBwGc%(NGaUZ@+xGHKNnit@i2)~8HL*} z2vFB4uyT*;hj@HNP~P>(_!Qo;X&>U`Q7^V^jYZLFQlfu${EEcPph?@otS_GQi$PuLe1kp9Y&(x&2 z68(wfEdFyii3cW9*pPN{L1zr>S`xV?e}^5w1m~ewXEchlC@B2xkr`22SWHZiKf^AB zUlSMm@!&Wv=<5{O3+5teKqt9VUVG9N7cG3ejAILT%>!f8M28eMrW|2mw;DS6@yN0j zy*sppO0h2;4}KL6K@6vU)~qL! zBRQ(U36n7u&y{wjj~OzUF6wF(;HtT{Qu7Tk0Te+59q;aI#lu@irwu11EX=rmNjGCcHxW@kzhewfPfe>BV*T+lM+NZ4huP2ZNT=)KwN&MZ;aZzQ?G%4)jbFilgQki<_dmmcbA%9nAT)e6P zGgMOD1-IY;2xE>sx#7AEkf<(S)y5&c%bd-?-z7 zW24`k%R{SA6S^vn)&q?oJL0!vQ+U^A>3l8c#z8vtG;zX9yA!x(buZeL^^d;c0}vj(L8Se;}IynH}4q4^}8oUztnQL zkL(OB&yrk4@y@GPbl`1#c!Q?rfW~pmYC)|~&*Cv_+xXg^QG9b>Qq&@}7<$>y#e;im zd~aR9h{w9~ylLthVEJS@AMe|^8~<-Sg)Y-5Tf`ZnzpFfc=FFBTKDn$NukC2bCF~Vu zBvhP659wCW3i8R)6gRwkaFT#Eh0WxVXa80uje?mIj!@|6+Layn$cmo2b}lanz<_+5 zlKZD#`0OrhOuIsXcgmbaz|FY+k%9Z_<_IqDZN=Fg%_5GOyD##oMEeJr4+y9NAJzT< z9Z03|laVQWZ+IFTC>YJ1599iQ9i^p$>++ri{!xU-w7OL47aU+b0=B=K7V5(1_F$Mq z9Uq!iNfmaGSI-AP@b!;~8hCws9ItCn;Kb%Q+C>M&GMCKvFp$pRv8fd9AD_W*r!pdb z7+1jZ{K|5(7+j;I)SuH9!<|PjqlYo-CYW850OJv);XId|#>E@=iDUfYdgXoSMe?x{ zovh1n=U2{4J34ORI10QU-4w;js440sTgd#kkhgOA-dUR0L^g{d0?>8}MsJ+W;;ESo zo+nPl8-Y0scb&Gh%7GPti!H`8NW_2lm}R07UriicQ||ziAd@=A6B9{XLE#|gK23W0 z;&RS|A)nQeWj&2UG@dVXB+k8OE0!I&aZNVAV=CChsW?q$+L74{X+P+np^4O);9%7- zfE9pijKK981{ZOzm}%C%QeRU5D+Jj_;$-jMJSf6Kt%e?|Zz}*>FkF=e6a36KpVDL= zzRD~Oz7yzUVV2VwO6Ph*dknX&TdKgd_zqxQaDWwpjP;!NP|WdYb-OzLFpQ~JaU`*6=#N~E-CT8$qNTEZ}u zZpa~^tCqLpQ!9HAoNlsMbgr5O7>~UE;p3}2hw%@4CX`aG*JUnPj>wQAah!~VC8WsR zu%=t|xu~}y+PViA4^`VNUcVck!ryKm!85at;AZ-~opu)95Dip38QMCpBZljb=taNk zFBXOaxB;*-Mqwz1t88xEIfC1VriFNEHMN{qy_QGd(Vrw>Ew^-hhN2AbTG}PH&SI*R zs!Mz>HR^02$$B+Vtd9FS*~0b7S+OYlokSt2XiAXgypaj zbE{)04E5&D1TN@q6=!>k4I!s@Sc$_$0k8uDO=f5Oj==T+1*0FE&R|Ez!HhcJAZRov zo0=4V_J=QgRK5UIR{WG{%k6ZbwJ{TCw#IQbiNcdwn?&`Lm>1-+Lx(%C>Kn?h@Q(gTn@Qm*DOM77y+c+~NQJTXmoA!+q#E zRWnsxeI90}PWOpbRhB_VAwhwHf-1f1d8WSP^S+CznBD8nT25|0|z;M%iS@SGMxPWBDcMG2@iT`{na#V%2aG!ntdlm4k zK}HjSr;eXW!v0m38YqFn3}^lSV&pd3|Jnb)sD*g4gQFP+qW`>$;$eFG{PBVD-#Hc4 zzAG=qKju@jKIXnf*yIFL4(PhDH0)-1qKsyBku?}qGVw}6Gmzp#rsKQ{MrKB&W#eDz zYxi7&(DKm}Mr4`Tel@=1IK)w@M*4sF$WJfeWcOO6WIb#qg775WkPPyO)GtUpflz)Q zOy^|pj*8S~)8Z{WaO$`$hF35uMQ8YY-`bT2=5mW9^|punO@@{wR2(DHHsHQA5L8k` zo=R1jFMUy!nCS?RL{XhE&t=P%`s7+f+))%mvOG*uJuHaGqztp0#)eYr7|2B&I^{~V z(Z;JEenRsg^TBYCimu`7PrUC_b_`t%5dD*BEw11gR^C|x$k#@iNyAAe`TWs80@_5i z-px{F2!>67UI3+J|G@d6xoL_!@_T+AT5phK@Pt!!#DN9DtbEt?!c3I2EZ2k@9 zcY7GQmlW8VC{7aQPF!e#YJqoXn)D8HI`&ibh$2dPBV|VKC3ex8P9!cazChs=rSRs- zifnae5i=HRNGoB)eW&`F)#fLMG+i!EK`m}_)V2r%dkws*)u;*PWr&a;BMqGbH!-%J zy4z@3u4kE-5=_$c;slmVizx&Dz`>Ntt`8qt)EK>Q_ZVQm*igU)2}D@wm^-Y)>f4#PY5%WwGiV{I&I$Gm1t z7)y_@5_MZOc;c2f6&X?3#)wT<33IO>1lU>?a_l5w8gBRqJp=pUs+b#LW9P7U>gq1? z6@n0q4yx(JKRislKQXNr{ju%+qmF*np|ktBg{LtSmQE36!n=PmViUhH*!JG#E~~%7tq03A_`5v6T^dTuFdg#4o zOqyl?3YS&_^e1Xy6-+i-*x{B6mEWC$MWuyRQA|4987RA24ztjFhIakYYG}qsfOobt zV%vbv1VyT^evG00%uqJ|9WJI>OSV;$Am~$9b3q+b9sclJ@ehfQk8ek1bFEu2hKrTz zYC?j2x^U&txAUaQ*)R0aO<(%VH|~oh!v5YoO>G|2aOnJjrxf8$5|Dk_fL-+!I!utm z(_;^5djAn4m8OL__ksu(Y4rKER^t54<3$w4${wmOJ!HSv#f?J<0WnMJkSWih424du+ImGjFXkHA9A+Txu*3CnmSNmqWt@DMs50Z1SY`VZ(^>y8MM^=6_EKub#| zATV5mz1cJeZc2bw^q#aJl(~cAl|q>HeG{E?58P+Fg3#qk`sdGyi`iz($hs-B>r1{WPf5KOi|ncpQAFATsN?pJK&)$Q3+7SyzWDC()8v4mvO zcXaVHA`lHHq|ozF=6OF@j(8E%q_dFjQg#A0*|V=j3GWZp;;@Ia6|C zZ$<6WfQS=az5a0^=Y{-FtnpVBF@))HlsbIv-2fP7v0dcC3y!d$Wx^t6)HA{`9<0Wb zU>20F58~?`=T}B^`2@m4vME`__yG}P^zJ06*zs=5% z?`U13f?~#ozRV@KHcs**nLL}?CUe`=MsNJo|G*!xZtdJ?6784Evs@fG#019^%P9+g;1rQ8m9Q7usd55f)^FT+2MNegYSBNL4J%eitETG{q>b=IOt zv2ArY5?1gPv;LJv*LN|OCiRKl`3{W%$}4k|<+Sgx;t(fjBBxd!EQf>(+A2u`0z)-W zZX!4E(xZ(MVz^kEHyc|FkcHgd@pr)kqW27vUHMngWuq3FtE6n5#;X97lE-ht|F9)_ zUXRmlbaMbK;nMN4jOXs&RGBu$eDD>$jU{+FHm#4wlI^5PEG&fCEPqX`w#L1BQGi#7 zF+3)2{$+~ms_9EzYV5CTrBu4I9)@rt=7?^Fb-TCteE@g+)gElb#Qns9Rc{{S*`1HaMKr<>q{m%~IdAP~dTS)v_QuZqj(8?)>n}x&2RoKFKZ!MxXoOy9vD0)Dzofx7g}^{BmM0{%In?D8ZVW$ChsEO79QAE{ zSR&7T^M$e`%bLn92yk$z(kD%E1CCbyy zITsv^bU3K})te2gOozAqJSSYR8H=Xw+4i`gg#e4BPn?DU&c_HH401!}-9&Oi3CCb)M2kP91FgTFDoOcD^F`pp zZF^Q~PS5J1x%>!=JHi{gXWWz|Fp{X3P)f#{F($Qr7PXeI-megb_)4cXqd2DFSoG0gOIOQ)U zIZX)oH2v>x0E6n!^|_bYZ>2lw=0lp_OQ;7(RnIT`++b4P=`+c&H>eoW z8h9OOXLOIcH;^*6PIr2xyG^%K9?W^F3HTGX=g4P&q}h%}ub^e_8?xVFktpl?Ys^&* z4TE7b^H85tNqrX~`KKS+EiNXtz&r4BofG||w>>&U0WjgI-em+s>stA*Cu^vMTx~Sy zMYP{JLzPZt?%&ls;h&y7Xd>+B$C6JyIU6=|(*mUHJ>=?;lUd6o9 z;IvOV?zQ5HeD`3T0szAi6*E}Q+Mo!kQ@Gy!5HF1wqnCk;_;s>bf1@#HRufudVR(pz zEFL%gc(dqH6cU(279^ZE{9u8{acqN5l`#3`9B&^?5$Sgv{I#H$lEoeFSEH3kcVQae z-yEgyu>&?i{PoutF)jJD>ol_B&q7j=&}$|^&RXgt3AnPK^ixy?5~i=(DaSruCT`Y- zEq<;YbPA43cqzo9+2gy9Jh~eSA#WN&NkIz;R^x^@O^#ns37LatLQqM^$e(b`WJG16 z>?JJZXimnf?_j>-wj8w3=~yN6-}>t$ol6D{{-tibW}AB}u)vn}TjbXnUo5iB$9tBU z)QUg$%a9T(D+rO;)`Y=HJ%s_arc=W+g~qG(1*?=_YrH%U8c>v!uWXdctBAY@8JXkF zIw{}SYZZi!V~oC~3D9!=)8a;Lm7C4*3_BC~R=*`1(pp6RMC7&_1k`sT814QGRVHX_ z;l-0T%b5Iy<#Z!!m($E${tCMZMfS4V*2Pbdz9eWj^)GqO$WIO3^T}B8WV)VJ8vWvi z&ly~Zh(N~v#>9=m*{FlgS=HN?K0Ig1&-@qJve2km-nG!Dxlif*_FBJ@*V3*zV=R|3 zT;N5&bNXT8zLOcb-UAi+6^14sQBS8;|9Ey0yWqjcok%Y?Z^9>N!X#o#cEODA%&gzw z0+hm#QEbgW5*Q>OaidPuOB!2Z%wXbGT^|xoTMKrjd2dT=^x((&!f~%Fha;{{IulaH zhnnNF`r!qw4Cee=e8YR9(a$8shp3#j&SjE#;Py1ohu6!KKZ4gYUsz!S764#U_2~CQ zZAuarTzB}lB|TQpaQWW!c>SyqxqRdh^OtGn$C5@ zIa641E)-aM$Jc>BL0dEk?@CxC(pKnT4LO}f*+Iwp%xP|MQ{fWZ>-^OViA$eBNtN{d z1O*jHM)?L1mmu!>LD+l0^dNWEfAFxfwy+4q;}RIo_CO5(t9ifOyfR;o1UpTbn7G?$ zD6t~wT=<1XPb_cp?t$s838T}j`mpQ}(>YC?*SdhteM&Uv{-n)&^l3EqT^5RtgI&DX7|H+F=cEIyq zid^^6HXMq<4)%syS&5A2r}Jw4O(=NkM%?r;ExJG)i#BJU-*bXQYe&g6ytq zE-<6{n)ESguv|&y*KW+?mHr!|vQ&%|EIikFL5F5lcqIbJ$Ry}tjL3<`5wyxiT+kF? zDDc?>Xs}5OZk-0}7KE*l_5F&cJ({>n5-w&x9*0sU%%&6-ip-3;`}c%IQ*O|32p<%_ zDCa|GaSxiQVUwS4R!D0y+q1HNE99pRW*#U zPbr50;eDu_lwr9Uy>&}HXgmvd6PkETx5Bx__I3B_J`||I$tX$RgA+T9ldY%m9+sB( zvHYrmSM2 zqLq7rjtPvM4wlsF4u|r!)aL2LMfTPWMBAYwq?$yy@Z|$l7$aa~&cK4_-|bWi?~4Q!VLCxJYkjfNmg|KjiA3ucLa;n#y}>G?fS97vE<%3>jD1GxV46h zam(%h%DSR!>$;WJ5byaozL{>r3|R#+cIoSU#4AZVEyJi9yEh!Y2KZJ!*=57KQS851 z;_n}@_nJ^AE{Di=yYJ8!*lHzu%7n$Zh6b+)gq2vBs8q7TmNOXU04CmVT7f~mfovZ^ z5(0?jXS;vGI!)I!F>)3^Q@Ys_4j_XD&7Z}{Szq^t$zJ@4jQ2oI!zVZI5|mMqOqVDcI<&YljlY`JFNmY-l0^PMR?SKBh$P=+mTBPv!es zWijYb8%8wLfP1v{I?8kMW*qoxDvP|g_58sRNvtEc?p;G+>rF|wL3#AkTG;ZrxM!gh zX=Nd&&>&Q&ab8hA;AE(6O`r6bBy9P=`aeIqTJLx94IM@B2fbLJCd{E&mIJxm^2EME zWeg9s$J%x@sSX{T2&L5uv~9!@3D3Ze58+KDbN4i%9TBAcR$Pfy+MR*9!O_A4)#@)4 zMSgDYxYjoR`#q_rM@_!XsfyUuss7cI8L$lT6BTxvyij(x$mUe6d|2bO?OJpp&geb z`wSmYo-aYb9N4+>;~HV#M%5uxX}zLykee$YxL$GS9ECdO%LYEA=J(mPjNZ7uyeZPf%!NFFc1s(rki@w zS!rGz%;scmslJo)t4oF1y;t1ZQmrgRMK22#EY7+!*&Xt;uDB(k%C^R$Ml8mYm4I57 zby=lHKo6K-y|B>Z_spSZ&iM`{wN-q^lG>`PO}-=H1Y+d~s;?l3X>bVi{-F;o3jkM9A-Pr093WD zb}zZKXk2A|{F=Lhz^PG|4t!g-FiYuxW?#7Nagn?DED|J?^HrYhr~Si172pN9IM#A<_?8)t;4y8Pf|?=>&yVM9}mk`rLcCh ztnhTKs%s+k&Ms01u(yKeibuZB{pyJxUXFM#tZHA9ERH==H z{51uCQ;Ng;u_YIqHKHPJHgGl?JMSgK;n7eU#H@mA8@1qF1E*-&E@`rjC-fuS-@5Tl zmg7Y4g?X;>LF$j0p46PdVogga3#yb&j(yVe`0CZJ{RE6o6-oAngQUUj+(is}kOs;6 zd6{0dB8h0?$l<(}R zh|bh0O$}4^{E*`tSAp?7iKywS&WuK0v@w9?UY#(>20cmyfw=SD zWdm`5xdj1cDQb2L`Ev+!@g6)gY+`lnd~rkLCRcY+7cpTo9|y5@i>oc+`ounFFl;O= zC4I1z8+0?hxdyG3Fzi{nH%;a-8b48)*>?JGO8KK?u$cP94J7JImhQL5!-&M&Ty?Vq zm=zyFRoEPWlMpb@cxqn|D`$7PnBxMmsgE+}{Pp%k9IU3C=pk zEV@=A4rFX_T@~aG>pv#oczYuy(}?fsXr&OgxPl9;enPYd6UPA*`B$SCdHya8m*iQv+s~=#0nQ`HKb+13T25<5=mq zy62vb&j1%R*nMTolQGr(Ey+7C#)wiM-_K%1o>PauWgwjHV&EYPu96? zSHsvktZbI6NZlAOiOm}|6``Bcv4!4AP-46q*~EdMwW(F<0mWHd^&eLf-$>0=fp>@Z zBZ{Nn`Psv><&E9_p~jZ@x;4K1TZyq~wYq5|59J6!=dY)BT9V}cnd}aU8|a?f7(jZbG82axnaQyv;?KvU^p%EV(SBh)r*1aHUL(^C^;>U z$oZtRx-Td1(-S4Fi;!rrl<6f@b%TFl(g&ki4tPw4B1JywLc$YUY9F8YcC6qUn{I6; ztDmMyUmqCaOxVS(W=X6$_kB2}Rvd>}*n?rWVD9mtnde}yqnlL)0`Z%-C zsWDa}NOD{ACqxbd+5Pb~8PsD8#k~N?HxQHG8oRSt&kk$2?umIcWM53t{(ao?nOeJ% zpgXxMeXh>AZFhRHmf9Zxg;63lZOQ4hR$BU8*Ia+S(hge+cS*y68$1mzN8-0v8k7fc zt0bLHWCY2!qV`SIbz#pZI1{X9%X_9f-UkxI8O+7oW}vZcP2?qJMagnb%;h^!&$Yrh zT>ARqJRB-^pnQa+c~}1^^;yXcPRamI5OcZ*3Q+mI2!DC!s~V&xCAw;L=mN}Qtj9!@ z6F_EFNch6}zoiPv8dw9JpMa%<5Vak$Mey_ODGfh#+LY>kZoG5n{9<;C9}RpMEVwIq z39E+|vhD$j3&^lt|IrI!jDO*wSnPEa`g+XhzxJD|#2SDzpn2_GdE5=iR^TLW!AxB^F>0 z&_bdBL?WI4-H~N`VNJGv+v3BEA@feUWtWw8%Y#_V?iRz{?H4sSNQCzL0Fg}5}SR8vhl^4WeTbBt^tsgllpg~(e-jy6&6CYXavBdHG|Y0(2%51GJCv=nMgzgr zq4z^e2;=DZ_p6{GlQe3jK>u%}ndvd8I=&&P?ZFw!RLkoi(zVPBC*0v7qP8iCNZE|THlX=Ip`3xA^g z2~;tlkFS1emk}GKd;Zh_ujcn7cR`tY{j)_-5u)K&ug&$s{I>A@NmNN>>HjjL;$=tw z3imSB9_BJ!h(Jn4bcaW_r|c4$C^CX9hFvL5xl;xaNAJ5{Wn0G8($)st=VsFAXe&C& ze|3ssorB_w@qCy!%Qkg(}9yRBlwdxoW5d;if ziqCwT;S7LH@-KGh5&lrF-3#y?^^3>o`O3<8yRcyOIN=#=`)h z3oP;rYw2RC!yQ!d17L7lEw1ptg#jKZk6TL1gE%o6@ZhS|Cc+wkfrA*IiRCh7 z&x(Eayl6mR&0ij%rMH1#P%V8J>|pex${T%K6sBT*v?u)vr-dJ$(|C(ylu^YH_OD}P zbs_^fBS|Q3F5r)ywICH6A2e$V`S;ghRfs{DO{Ft3(~@2Vrmmn1w;5t=x!npGq=Cl~ zX+|4o0`JX<|3?)>NaSQn#f)@pC_24%@6+L8`0o|@KoUdK#vOiEPjX_G?_O>tF;k9J zK5ZK0-VptX2wFqyJweQqhq-3eFlOq@*k*C2bch3xRC)5&=lXlk0hy$xHg_GRDguf! z1jfUQCCWL`T6MyX%Z1LS-@6<&dxCI|pcb`MB06Q3c>b;)M)HD#WVi>|l6iEe_?=w`KAUt$XJ zTYw!!R}+JkE*gDcoj(V5Ct_w(Z^n6cosDxJt8iX2T@KLZh!S&MGt*_?tW(-CJE9T= z#15X!Loj++Q9GYpFYPFy>u}H9pCJ?&{&(+q=CkjYyk5`rp54Bi;z03w)I`*#+ry9y zi9T;F-Efp2Y2c?|V<1UOcEZ+!XQSf28O{__dN1}AR1vt*c0|yBn{uWp7}ZWp zGyw%^o4wopM=Z-<*&XFf&eue1PkvQ354^$Bp2mC9<9-{^&#D!q8p&DhAN+>}q4c${ zUNvvC$#$bV7>iIe0M1**dS1>76{tPGyf``s*E_RU@UwGw(y4+k*0ba*9YbepoOh@ z+O6I4^ERW#I{R9qN^e_n(N?5VrDfpYPLAjAs|Wc_Eu4z4nCV zB`NN*<6!d=48?cyoVe;G+h$1BHIfvC!;O5&5vkjFgkp|UN%i;M!0YEiR@$lQH@pDl z>=-T1hY$$0RF;dFw}hr)8`BmtL+Zni4r3hrr`Bkp)*M; zSGu%=zG_K+OUn>u5}`K>3!DPtTq%Fvfh5~<@kYHuWGTG7`Yc{`9r^RXhwa}DUAome z2^=a?6aa0i-{oEKd1fq_Q*8JJ4iY+PHOTfw8-=w@mX8i~>?SNe*^1&?31LdKzl~9S!vMgN~r?!gkPi9BCoba5;-7 zaexK;(`u&A-V3wX1SMp74cpl##P>dJkciP^cD61Fx%}8AfO?YQMdAX|?Fm2?oh+qWQi?DVH8d|ZGu2+tj1OS^q9Zm- zoy2+o8y6}(EkN}2FN)t_p3S1xj+?JzBXu%ufAjfYky?POPa+{;Q5%b=ul6SmuaSIt z3CB|CiOo_!vX6qv>~=0#I$3oIfBY&J0GXcB)b^sg?nnPAg1Yc(ScNVxos=T|5h}6Q z9m2+g+wm~r789C$?{iw(AKcr6Nq(LE+m?or71&eQaWKazD$4mIF{YI!M{WNB31Uc@ z_S;Wi5<}1z+|8AZAB%1TGoj1vA6Od<)0R{&SeQL*O20(3=|8qG_*BCK*)A4J5Y*vw zVb=_Ac73mfesd5~kWXwiE0f;K5a_G&69H4lwbeQHqpp((%5Fx7fwi8{G#{Z=MVRq# z;U=yUmG@X_-B$|Q<`hSPSzX%gyNU)moPYqEKvX9Kh}PoAZ6zFIec$w<4K9a&F{Qs7 z!DC6C$E^W-Zfiu^)te?9B)RUH9!~vx>Il6;@dSL8|Akw~@eHL7n(Tv9FhjKPsP*;F z2HyN)fBA_iWib+)|7IAtoS&IPSt`z#_Z{r=NHbFV6f#rvzN@(5`_PTP4`r0374pr~ z`WQ!Jq~;_>3#okydK$ng>dOZ4)L7PBfrK_3T7lW0UJoEKGBZk)R=vq z2TXnvLqyQg6vzV))m~Dt|#`YbIM|!{^L`-nZF#P~;y;5uU9z+!;SbHJ6v%J{Z z!F+B3oT#Dz!4!UzW64I?ayLnz;=Z+6i0qoJG>>R}opebHO$gS5#0lJc-ayU_pDUPM zxb=VoWC4LDWS?FhB*Zx>y3PiFT9_158izX>{&rU2&N@0)?n(m~1%dDYLc5Q1n!k5S z(Ifw&1xuXTf033AwOfV)V64(+?biTZ738D0BDV33U<^ zNLlslheAd#?K9gCh+WYsbs$k$o-H?z%3dbRc)%>DmC$E2(I5*L?-Z5%mJrK+ycQ^R zNW}2r_ynMJq1za;6!N*co)~3wS1LMUPXdZ3ka+_>ZT=zac71nWl^qpDx%hYdnggctAJO9(StsX30o^w|}L4%GGJWuGMyk{|@ zSzmn}GJD#SDVPE6%EGZ4jYd)s?=};K5>$Cj!=idDkm%fQg6F?E4-(-Kt7~H(!8<|# zMN?XOuhT~?xZ?Q|k;qU&l(gV^TQ|pvAiv*Y;s%>eAyMwxoI=!7~a3o4|+<_#t^#qxV&bSV8#!#Scs zdPj60BX<<8RV5(Yf!u#@cy~si;R>3i`_rC7ruVTA@aL%M?yo6l4%Vt$d794M<#xC_ zxO2DNNNFk*4zFzjASd|_Q~ka@;HmcKls*_I+F}XB;h?;`F|xn=H2?2Ow4=WRYFsQy z(b__f0mJ%sCCyZ8-EAeWi8I?8w6qgq399S+$_NCJa*QWhl~)gGMtX19(94JmP|V|I%@h9|Fh#l$w?_o J)_yYy`yUONfA|0Z diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/Contents.json b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 90eea7ec..00000000 --- a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "AppIcon-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "AppIcon-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "AppIcon-29x29@2x-1.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "AppIcon-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "AppIcon-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "AppIcon-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "AppIcon-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "AppIcon-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "AppIcon-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "AppIcon-20x20@2x-1.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "AppIcon-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "AppIcon-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "AppIcon-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "AppIcon-40x40@2x-1.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "AppIcon-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "AppIcon-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "AppIcon-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "AppIcon-512@2x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/src-tauri/gen/apple/Assets.xcassets/Contents.json b/src-tauri/gen/apple/Assets.xcassets/Contents.json deleted file mode 100644 index da4a164c..00000000 --- a/src-tauri/gen/apple/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/src-tauri/gen/apple/ExportOptions.plist b/src-tauri/gen/apple/ExportOptions.plist deleted file mode 100644 index b69cf1de..00000000 --- a/src-tauri/gen/apple/ExportOptions.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - method - development - - diff --git a/src-tauri/gen/apple/Podfile b/src-tauri/gen/apple/Podfile deleted file mode 100644 index e3cff877..00000000 --- a/src-tauri/gen/apple/Podfile +++ /dev/null @@ -1,21 +0,0 @@ -# Uncomment the next line to define a global platform for your project - -target 'yaak-app_iOS' do -platform :ios, '13.0' - # Pods for yaak-app_iOS -end - -target 'yaak-app_macOS' do -platform :osx, '11.0' - # Pods for yaak-app_macOS -end - -# Delete the deployment target for iOS and macOS, causing it to be inherited from the Podfile -post_install do |installer| - installer.pods_project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' - config.build_settings.delete 'MACOSX_DEPLOYMENT_TARGET' - end - end -end diff --git a/src-tauri/gen/apple/Sources/yaak-app/bindings/bindings.h b/src-tauri/gen/apple/Sources/yaak-app/bindings/bindings.h deleted file mode 100644 index 51522007..00000000 --- a/src-tauri/gen/apple/Sources/yaak-app/bindings/bindings.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -namespace ffi { - extern "C" { - void start_app(); - } -} - diff --git a/src-tauri/gen/apple/Sources/yaak-app/main.mm b/src-tauri/gen/apple/Sources/yaak-app/main.mm deleted file mode 100644 index 7793a9d5..00000000 --- a/src-tauri/gen/apple/Sources/yaak-app/main.mm +++ /dev/null @@ -1,6 +0,0 @@ -#include "bindings/bindings.h" - -int main(int argc, char * argv[]) { - ffi::start_app(); - return 0; -} diff --git a/src-tauri/gen/apple/project.yml b/src-tauri/gen/apple/project.yml deleted file mode 100644 index 9d5d67f4..00000000 --- a/src-tauri/gen/apple/project.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: yaak-app -options: - bundleIdPrefix: app.yaak - deploymentTarget: - iOS: 13.0 -fileGroups: [../../src] -configs: - debug: debug - release: release -settingGroups: - app: - base: - PRODUCT_NAME: Yaak - PRODUCT_BUNDLE_IDENTIFIER: app.yaak.yaak-app - DEVELOPMENT_TEAM: 7PU3P6ELJ8 -targetTemplates: - app: - type: application - sources: - - path: Sources - scheme: - environmentVariables: - RUST_BACKTRACE: full - RUST_LOG: info - settings: - groups: [app] -targets: - yaak-app_iOS: - type: application - platform: iOS - sources: - - path: Sources - - path: Assets.xcassets - - path: Externals - - path: yaak-app_iOS - - path: assets - buildPhase: resources - type: folder - info: - path: yaak-app_iOS/Info.plist - properties: - LSRequiresIPhoneOS: true - UILaunchStoryboardName: LaunchScreen - UIRequiredDeviceCapabilities: [arm64, metal] - UISupportedInterfaceOrientations: - - UIInterfaceOrientationPortrait - - UIInterfaceOrientationLandscapeLeft - - UIInterfaceOrientationLandscapeRight - UISupportedInterfaceOrientations~ipad: - - UIInterfaceOrientationPortrait - - UIInterfaceOrientationPortraitUpsideDown - - UIInterfaceOrientationLandscapeLeft - - UIInterfaceOrientationLandscapeRight - CFBundleShortVersionString: 2024.3.10 - CFBundleVersion: 2024.3.10 - entitlements: - path: yaak-app_iOS/yaak-app_iOS.entitlements - scheme: - environmentVariables: - RUST_BACKTRACE: full - RUST_LOG: info - settings: - base: - ENABLE_BITCODE: false - ARCHS: [arm64, arm64-sim] - VALID_ARCHS: arm64 arm64-sim - LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) - LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) - LIBRARY_SEARCH_PATHS[arch=arm64-sim]: $(inherited) $(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true - EXCLUDED_ARCHS[sdk=iphonesimulator*]: arm64 - EXCLUDED_ARCHS[sdk=iphoneos*]: arm64-sim x86_64 - groups: [app] - dependencies: - - framework: libapp_lib.a - embed: false - - sdk: CoreGraphics.framework - - sdk: Metal.framework - - sdk: MetalKit.framework - - sdk: QuartzCore.framework - - sdk: Security.framework - - sdk: UIKit.framework - - sdk: WebKit.framework - preBuildScripts: - - script: node tauri ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths "${FRAMEWORK_SEARCH_PATHS:?}" --header-search-paths "${HEADER_SEARCH_PATHS:?}" --gcc-preprocessor-definitions "${GCC_PREPROCESSOR_DEFINITIONS:-}" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?} - name: Build Rust Code - basedOnDependencyAnalysis: false - outputFiles: - - $(SRCROOT)/target/aarch64-apple-ios/${CONFIGURATION}/deps/libapp_lib.a - - $(SRCROOT)/target/x86_64-apple-ios/${CONFIGURATION}/deps/libapp_lib.a \ No newline at end of file diff --git a/src-tauri/gen/apple/yaak-app.xcodeproj/project.pbxproj b/src-tauri/gen/apple/yaak-app.xcodeproj/project.pbxproj deleted file mode 100644 index b076dfd1..00000000 --- a/src-tauri/gen/apple/yaak-app.xcodeproj/project.pbxproj +++ /dev/null @@ -1,481 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 0AC23E163631EF3775908406 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EDEF0D2E01608E7F464F71B6 /* WebKit.framework */; }; - 1B1BFDF8BC345D0D980E4427 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EF0B8CF73BE8166011E2CEAB /* QuartzCore.framework */; }; - 36588BE1A75B386BB2FEDAC5 /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A93A95F6B2F31FA92AA099E0 /* MetalKit.framework */; }; - 38E2C1B0E9FCC9A5FDE8876D /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DF2908761467DF191C2A8939 /* Metal.framework */; }; - 8D518C1A67069BD7D339D055 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F34A96C5084EFDF1802A634 /* CoreGraphics.framework */; }; - 8DF67739DC49E577EB0FAE3F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 396F45DCFBE2C71866817528 /* Assets.xcassets */; }; - A1D932F0E7399066AD07DC6D /* libapp_lib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 75D938BE0FA8770BA965AE1E /* libapp_lib.a */; }; - AF0EEC868306E1D1C85994D0 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B5BF2E39256494269E65F8E /* Security.framework */; }; - BE9FFDF51EB7DEBF707BB39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5415A3F2D217A47DD3BA40B3 /* UIKit.framework */; }; - F0627C04787F4E187EF416F4 /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 2A615609009B3AE2728043E4 /* assets */; }; - FEE5934F5FFB0FBE10883AF2 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = C754460F1DAF2D414038A7EA /* main.mm */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 106BE62BE01A35403424018C /* main.rs */ = {isa = PBXFileReference; path = main.rs; sourceTree = ""; }; - 14F240DAC31C5C52D7B4BB96 /* window_ext.rs */ = {isa = PBXFileReference; path = window_ext.rs; sourceTree = ""; }; - 1B5226A88D8B805E878524C8 /* updates.rs */ = {isa = PBXFileReference; path = updates.rs; sourceTree = ""; }; - 1F34A96C5084EFDF1802A634 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 1F5A647F82A24722F3C830BB /* plugin.rs */ = {isa = PBXFileReference; path = plugin.rs; sourceTree = ""; }; - 2A615609009B3AE2728043E4 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = SOURCE_ROOT; }; - 396F45DCFBE2C71866817528 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 53872C1120171EDC4A6DFEDD /* analytics.rs */ = {isa = PBXFileReference; path = analytics.rs; sourceTree = ""; }; - 5415A3F2D217A47DD3BA40B3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 5C1B6610F62B56E1947BEBBD /* http.rs */ = {isa = PBXFileReference; path = http.rs; sourceTree = ""; }; - 6286C385ABAD2E04237679D7 /* yaak-app_iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "yaak-app_iOS.entitlements"; sourceTree = ""; }; - 75D938BE0FA8770BA965AE1E /* libapp_lib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libapp_lib.a; sourceTree = ""; }; - 7B5BF2E39256494269E65F8E /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; - A2CC02313D71CECB68031D53 /* grpc.rs */ = {isa = PBXFileReference; path = grpc.rs; sourceTree = ""; }; - A6DA9B210723CA84891876F8 /* bindings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bindings.h; sourceTree = ""; }; - A93A95F6B2F31FA92AA099E0 /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; }; - C754460F1DAF2D414038A7EA /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; - D69BFB768591FDEEF65198EE /* yaak-app_iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "yaak-app_iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - DDDE197D9C6BC5680EEEEA00 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; - DF2908761467DF191C2A8939 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; }; - DF45D08D97DE587CABF9537E /* window_menu.rs */ = {isa = PBXFileReference; path = window_menu.rs; sourceTree = ""; }; - E1E84E267D81D6437901B1C6 /* render.rs */ = {isa = PBXFileReference; path = render.rs; sourceTree = ""; }; - E964D3637BAED49E34B91739 /* models.rs */ = {isa = PBXFileReference; path = models.rs; sourceTree = ""; }; - EDEF0D2E01608E7F464F71B6 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; - EF0B8CF73BE8166011E2CEAB /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - FB34CB48BB9F25D49F80D513 /* lib.rs */ = {isa = PBXFileReference; path = lib.rs; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - D8E8888B0F3E4411B98AE8EE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A1D932F0E7399066AD07DC6D /* libapp_lib.a in Frameworks */, - 8D518C1A67069BD7D339D055 /* CoreGraphics.framework in Frameworks */, - 38E2C1B0E9FCC9A5FDE8876D /* Metal.framework in Frameworks */, - 36588BE1A75B386BB2FEDAC5 /* MetalKit.framework in Frameworks */, - 1B1BFDF8BC345D0D980E4427 /* QuartzCore.framework in Frameworks */, - AF0EEC868306E1D1C85994D0 /* Security.framework in Frameworks */, - BE9FFDF51EB7DEBF707BB39A /* UIKit.framework in Frameworks */, - 0AC23E163631EF3775908406 /* WebKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0844ACEFE550685042AC6029 /* Products */ = { - isa = PBXGroup; - children = ( - D69BFB768591FDEEF65198EE /* yaak-app_iOS.app */, - ); - name = Products; - sourceTree = ""; - }; - 6D0B6FF641B88DAF74C78B00 /* Externals */ = { - isa = PBXGroup; - children = ( - ); - path = Externals; - sourceTree = ""; - }; - 8A07575CB8654BB9107F9A32 /* bindings */ = { - isa = PBXGroup; - children = ( - A6DA9B210723CA84891876F8 /* bindings.h */, - ); - path = bindings; - sourceTree = ""; - }; - 8F0B46911FBEF2B246BE3385 /* yaak-app */ = { - isa = PBXGroup; - children = ( - C754460F1DAF2D414038A7EA /* main.mm */, - 8A07575CB8654BB9107F9A32 /* bindings */, - ); - path = "yaak-app"; - sourceTree = ""; - }; - 90E982C0E9B45CBAAE66E16D /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1F34A96C5084EFDF1802A634 /* CoreGraphics.framework */, - 75D938BE0FA8770BA965AE1E /* libapp_lib.a */, - DF2908761467DF191C2A8939 /* Metal.framework */, - A93A95F6B2F31FA92AA099E0 /* MetalKit.framework */, - EF0B8CF73BE8166011E2CEAB /* QuartzCore.framework */, - 7B5BF2E39256494269E65F8E /* Security.framework */, - 5415A3F2D217A47DD3BA40B3 /* UIKit.framework */, - EDEF0D2E01608E7F464F71B6 /* WebKit.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - C88F9D29DC52F052255C35A3 = { - isa = PBXGroup; - children = ( - 2A615609009B3AE2728043E4 /* assets */, - 396F45DCFBE2C71866817528 /* Assets.xcassets */, - 6D0B6FF641B88DAF74C78B00 /* Externals */, - EBC83899FBFA4A3D0A92837F /* Sources */, - F3A6B45E25E23922AB1BDB34 /* src */, - D49CF68C9105CE84E2084C14 /* yaak-app_iOS */, - 90E982C0E9B45CBAAE66E16D /* Frameworks */, - 0844ACEFE550685042AC6029 /* Products */, - ); - sourceTree = ""; - }; - D49CF68C9105CE84E2084C14 /* yaak-app_iOS */ = { - isa = PBXGroup; - children = ( - DDDE197D9C6BC5680EEEEA00 /* Info.plist */, - 6286C385ABAD2E04237679D7 /* yaak-app_iOS.entitlements */, - ); - path = "yaak-app_iOS"; - sourceTree = ""; - }; - EBC83899FBFA4A3D0A92837F /* Sources */ = { - isa = PBXGroup; - children = ( - 8F0B46911FBEF2B246BE3385 /* yaak-app */, - ); - path = Sources; - sourceTree = ""; - }; - F3A6B45E25E23922AB1BDB34 /* src */ = { - isa = PBXGroup; - children = ( - 53872C1120171EDC4A6DFEDD /* analytics.rs */, - A2CC02313D71CECB68031D53 /* grpc.rs */, - 5C1B6610F62B56E1947BEBBD /* http.rs */, - FB34CB48BB9F25D49F80D513 /* lib.rs */, - 106BE62BE01A35403424018C /* main.rs */, - E964D3637BAED49E34B91739 /* models.rs */, - 1F5A647F82A24722F3C830BB /* plugin.rs */, - E1E84E267D81D6437901B1C6 /* render.rs */, - 1B5226A88D8B805E878524C8 /* updates.rs */, - 14F240DAC31C5C52D7B4BB96 /* window_ext.rs */, - DF45D08D97DE587CABF9537E /* window_menu.rs */, - ); - name = src; - path = ../../src; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 7C3E2AC18A0A227C2DF356E2 /* yaak-app_iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = C05E07AE7C7B25CACFADCDD4 /* Build configuration list for PBXNativeTarget "yaak-app_iOS" */; - buildPhases = ( - 5454ED506FC51D41C81A0318 /* Build Rust Code */, - C3495A2849227C6276D3876E /* Sources */, - E148188313FB67F061AB4E59 /* Resources */, - D8E8888B0F3E4411B98AE8EE /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "yaak-app_iOS"; - productName = "yaak-app_iOS"; - productReference = D69BFB768591FDEEF65198EE /* yaak-app_iOS.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - A8F6206BC76F061F1FEFD439 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1430; - TargetAttributes = { - 7C3E2AC18A0A227C2DF356E2 = { - DevelopmentTeam = 7PU3P6ELJ8; - }; - }; - }; - buildConfigurationList = 24EF8D1B948FFF6B275FB0F4 /* Build configuration list for PBXProject "yaak-app" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - Base, - en, - ); - mainGroup = C88F9D29DC52F052255C35A3; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 7C3E2AC18A0A227C2DF356E2 /* yaak-app_iOS */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - E148188313FB67F061AB4E59 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DF67739DC49E577EB0FAE3F /* Assets.xcassets in Resources */, - F0627C04787F4E187EF416F4 /* assets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 5454ED506FC51D41C81A0318 /* Build Rust Code */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Build Rust Code"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(SRCROOT)/target/aarch64-apple-ios/${CONFIGURATION}/deps/libapp_lib.a", - "$(SRCROOT)/target/x86_64-apple-ios/${CONFIGURATION}/deps/libapp_lib.a", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "node tauri ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths \"${FRAMEWORK_SEARCH_PATHS:?}\" --header-search-paths \"${HEADER_SEARCH_PATHS:?}\" --gcc-preprocessor-definitions \"${GCC_PREPROCESSOR_DEFINITIONS:-}\" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - C3495A2849227C6276D3876E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FEE5934F5FFB0FBE10883AF2 /* main.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 35D1DB294FFD067C835186C7 /* debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "DEBUG=1", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = debug; - }; - 368BB1E364597E7675463634 /* release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ARCHS = ( - arm64, - "arm64-sim", - ); - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = "yaak-app_iOS/yaak-app_iOS.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = 7PU3P6ELJ8; - ENABLE_BITCODE = NO; - "EXCLUDED_ARCHS[sdk=iphoneos*]" = "arm64-sim x86_64"; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\".\"", - ); - INFOPLIST_FILE = "yaak-app_iOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - "LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; - "LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; - "LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; - PRODUCT_BUNDLE_IDENTIFIER = "app.yaak.yaak-app"; - PRODUCT_NAME = Yaak; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = "arm64 arm64-sim"; - }; - name = release; - }; - 45382E89556BF93E8D1F1C2D /* debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ARCHS = ( - arm64, - "arm64-sim", - ); - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = "yaak-app_iOS/yaak-app_iOS.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = 7PU3P6ELJ8; - ENABLE_BITCODE = NO; - "EXCLUDED_ARCHS[sdk=iphoneos*]" = "arm64-sim x86_64"; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\".\"", - ); - INFOPLIST_FILE = "yaak-app_iOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - "LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; - "LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; - "LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"; - PRODUCT_BUNDLE_IDENTIFIER = "app.yaak.yaak-app"; - PRODUCT_NAME = Yaak; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = "arm64 arm64-sim"; - }; - name = debug; - }; - ABD0A3DD3D5C66C839496F44 /* release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - }; - name = release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 24EF8D1B948FFF6B275FB0F4 /* Build configuration list for PBXProject "yaak-app" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 35D1DB294FFD067C835186C7 /* debug */, - ABD0A3DD3D5C66C839496F44 /* release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = debug; - }; - C05E07AE7C7B25CACFADCDD4 /* Build configuration list for PBXNativeTarget "yaak-app_iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 45382E89556BF93E8D1F1C2D /* debug */, - 368BB1E364597E7675463634 /* release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = A8F6206BC76F061F1FEFD439 /* Project object */; -} diff --git a/src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a6..00000000 --- a/src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index ac90d5ac..00000000 --- a/src-tauri/gen/apple/yaak-app.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,10 +0,0 @@ - - - - - BuildSystemType - Original - DisableBuildSystemDeprecationDiagnostic - - - diff --git a/src-tauri/gen/apple/yaak-app.xcodeproj/xcshareddata/xcschemes/yaak-app_iOS.xcscheme b/src-tauri/gen/apple/yaak-app.xcodeproj/xcshareddata/xcschemes/yaak-app_iOS.xcscheme deleted file mode 100644 index ceed736e..00000000 --- a/src-tauri/gen/apple/yaak-app.xcodeproj/xcshareddata/xcschemes/yaak-app_iOS.xcscheme +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src-tauri/gen/apple/yaak-app_iOS/Info.plist b/src-tauri/gen/apple/yaak-app_iOS/Info.plist deleted file mode 100644 index 449b577a..00000000 --- a/src-tauri/gen/apple/yaak-app_iOS/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 2024.3.10 - CFBundleVersion - 2024.3.10 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - arm64 - metal - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/src-tauri/gen/apple/yaak-app_iOS/yaak-app_iOS.entitlements b/src-tauri/gen/apple/yaak-app_iOS/yaak-app_iOS.entitlements deleted file mode 100644 index 0c67376e..00000000 --- a/src-tauri/gen/apple/yaak-app_iOS/yaak-app_iOS.entitlements +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src-tauri/gen/schemas/acl-manifests.json b/src-tauri/gen/schemas/acl-manifests.json index 890be7a6..8d07ffef 100644 --- a/src-tauri/gen/schemas/acl-manifests.json +++ b/src-tauri/gen/schemas/acl-manifests.json @@ -1 +1 @@ -{"app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"clipboard-manager":{"default_permission":null,"permissions":{"allow-clear":{"identifier":"allow-clear","description":"Enables the clear command without any pre-configured scope.","commands":{"allow":["clear"],"deny":[]}},"allow-read-image":{"identifier":"allow-read-image","description":"Enables the read_image command without any pre-configured scope.","commands":{"allow":["read_image"],"deny":[]}},"allow-read-text":{"identifier":"allow-read-text","description":"Enables the read_text command without any pre-configured scope.","commands":{"allow":["read_text"],"deny":[]}},"allow-write-html":{"identifier":"allow-write-html","description":"Enables the write_html command without any pre-configured scope.","commands":{"allow":["write_html"],"deny":[]}},"allow-write-image":{"identifier":"allow-write-image","description":"Enables the write_image command without any pre-configured scope.","commands":{"allow":["write_image"],"deny":[]}},"allow-write-text":{"identifier":"allow-write-text","description":"Enables the write_text command without any pre-configured scope.","commands":{"allow":["write_text"],"deny":[]}},"deny-clear":{"identifier":"deny-clear","description":"Denies the clear command without any pre-configured scope.","commands":{"allow":[],"deny":["clear"]}},"deny-read-image":{"identifier":"deny-read-image","description":"Denies the read_image command without any pre-configured scope.","commands":{"allow":[],"deny":["read_image"]}},"deny-read-text":{"identifier":"deny-read-text","description":"Denies the read_text command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text"]}},"deny-write-html":{"identifier":"deny-write-html","description":"Denies the write_html command without any pre-configured scope.","commands":{"allow":[],"deny":["write_html"]}},"deny-write-image":{"identifier":"deny-write-image","description":"Denies the write_image command without any pre-configured scope.","commands":{"allow":[],"deny":["write_image"]}},"deny-write-text":{"identifier":"deny-write-text","description":"Denies the write_text command without any pre-configured scope.","commands":{"allow":[],"deny":["write_text"]}}},"permission_sets":{},"global_scope_schema":null},"dialog":{"default_permission":null,"permissions":{"allow-ask":{"identifier":"allow-ask","description":"Enables the ask command without any pre-configured scope.","commands":{"allow":["ask"],"deny":[]}},"allow-confirm":{"identifier":"allow-confirm","description":"Enables the confirm command without any pre-configured scope.","commands":{"allow":["confirm"],"deny":[]}},"allow-message":{"identifier":"allow-message","description":"Enables the message command without any pre-configured scope.","commands":{"allow":["message"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-save":{"identifier":"allow-save","description":"Enables the save command without any pre-configured scope.","commands":{"allow":["save"],"deny":[]}},"deny-ask":{"identifier":"deny-ask","description":"Denies the ask command without any pre-configured scope.","commands":{"allow":[],"deny":["ask"]}},"deny-confirm":{"identifier":"deny-confirm","description":"Denies the confirm command without any pre-configured scope.","commands":{"allow":[],"deny":["confirm"]}},"deny-message":{"identifier":"deny-message","description":"Denies the message command without any pre-configured scope.","commands":{"allow":[],"deny":["message"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-save":{"identifier":"deny-save","description":"Denies the save command without any pre-configured scope.","commands":{"allow":[],"deny":["save"]}}},"permission_sets":{},"global_scope_schema":null},"event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"fs":{"default_permission":{"identifier":"default","description":"# Tauri `fs` default permissions\n\nThis configuration file defines the default permissions granted\nto the filesystem.\n\n### Granted Permissions\n\nThis default permission set enables all read-related commands and\nallows access to the `$APP` folder and sub directories created in it.\nThe location of the `$APP` folder depends on the operating system,\nwhere the application is run.\n\nIn general the `$APP` folder needs to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\n### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n","permissions":["read-all","scope-app-recursive","deny-default"]},"permissions":{"allow-copy-file":{"identifier":"allow-copy-file","description":"Enables the copy_file command without any pre-configured scope.","commands":{"allow":["copy_file"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-exists":{"identifier":"allow-exists","description":"Enables the exists command without any pre-configured scope.","commands":{"allow":["exists"],"deny":[]}},"allow-fstat":{"identifier":"allow-fstat","description":"Enables the fstat command without any pre-configured scope.","commands":{"allow":["fstat"],"deny":[]}},"allow-ftruncate":{"identifier":"allow-ftruncate","description":"Enables the ftruncate command without any pre-configured scope.","commands":{"allow":["ftruncate"],"deny":[]}},"allow-lstat":{"identifier":"allow-lstat","description":"Enables the lstat command without any pre-configured scope.","commands":{"allow":["lstat"],"deny":[]}},"allow-mkdir":{"identifier":"allow-mkdir","description":"Enables the mkdir command without any pre-configured scope.","commands":{"allow":["mkdir"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-read":{"identifier":"allow-read","description":"Enables the read command without any pre-configured scope.","commands":{"allow":["read"],"deny":[]}},"allow-read-dir":{"identifier":"allow-read-dir","description":"Enables the read_dir command without any pre-configured scope.","commands":{"allow":["read_dir"],"deny":[]}},"allow-read-file":{"identifier":"allow-read-file","description":"Enables the read_file command without any pre-configured scope.","commands":{"allow":["read_file"],"deny":[]}},"allow-read-text-file":{"identifier":"allow-read-text-file","description":"Enables the read_text_file command without any pre-configured scope.","commands":{"allow":["read_text_file"],"deny":[]}},"allow-read-text-file-lines":{"identifier":"allow-read-text-file-lines","description":"Enables the read_text_file_lines command without any pre-configured scope.","commands":{"allow":["read_text_file_lines"],"deny":[]}},"allow-read-text-file-lines-next":{"identifier":"allow-read-text-file-lines-next","description":"Enables the read_text_file_lines_next command without any pre-configured scope.","commands":{"allow":["read_text_file_lines_next"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-rename":{"identifier":"allow-rename","description":"Enables the rename command without any pre-configured scope.","commands":{"allow":["rename"],"deny":[]}},"allow-seek":{"identifier":"allow-seek","description":"Enables the seek command without any pre-configured scope.","commands":{"allow":["seek"],"deny":[]}},"allow-stat":{"identifier":"allow-stat","description":"Enables the stat command without any pre-configured scope.","commands":{"allow":["stat"],"deny":[]}},"allow-truncate":{"identifier":"allow-truncate","description":"Enables the truncate command without any pre-configured scope.","commands":{"allow":["truncate"],"deny":[]}},"allow-unwatch":{"identifier":"allow-unwatch","description":"Enables the unwatch command without any pre-configured scope.","commands":{"allow":["unwatch"],"deny":[]}},"allow-watch":{"identifier":"allow-watch","description":"Enables the watch command without any pre-configured scope.","commands":{"allow":["watch"],"deny":[]}},"allow-write":{"identifier":"allow-write","description":"Enables the write command without any pre-configured scope.","commands":{"allow":["write"],"deny":[]}},"allow-write-file":{"identifier":"allow-write-file","description":"Enables the write_file command without any pre-configured scope.","commands":{"allow":["write_file"],"deny":[]}},"allow-write-text-file":{"identifier":"allow-write-text-file","description":"Enables the write_text_file command without any pre-configured scope.","commands":{"allow":["write_text_file"],"deny":[]}},"deny-copy-file":{"identifier":"deny-copy-file","description":"Denies the copy_file command without any pre-configured scope.","commands":{"allow":[],"deny":["copy_file"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-exists":{"identifier":"deny-exists","description":"Denies the exists command without any pre-configured scope.","commands":{"allow":[],"deny":["exists"]}},"deny-fstat":{"identifier":"deny-fstat","description":"Denies the fstat command without any pre-configured scope.","commands":{"allow":[],"deny":["fstat"]}},"deny-ftruncate":{"identifier":"deny-ftruncate","description":"Denies the ftruncate command without any pre-configured scope.","commands":{"allow":[],"deny":["ftruncate"]}},"deny-lstat":{"identifier":"deny-lstat","description":"Denies the lstat command without any pre-configured scope.","commands":{"allow":[],"deny":["lstat"]}},"deny-mkdir":{"identifier":"deny-mkdir","description":"Denies the mkdir command without any pre-configured scope.","commands":{"allow":[],"deny":["mkdir"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-read":{"identifier":"deny-read","description":"Denies the read command without any pre-configured scope.","commands":{"allow":[],"deny":["read"]}},"deny-read-dir":{"identifier":"deny-read-dir","description":"Denies the read_dir command without any pre-configured scope.","commands":{"allow":[],"deny":["read_dir"]}},"deny-read-file":{"identifier":"deny-read-file","description":"Denies the read_file command without any pre-configured scope.","commands":{"allow":[],"deny":["read_file"]}},"deny-read-text-file":{"identifier":"deny-read-text-file","description":"Denies the read_text_file command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text_file"]}},"deny-read-text-file-lines":{"identifier":"deny-read-text-file-lines","description":"Denies the read_text_file_lines command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text_file_lines"]}},"deny-read-text-file-lines-next":{"identifier":"deny-read-text-file-lines-next","description":"Denies the read_text_file_lines_next command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text_file_lines_next"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-rename":{"identifier":"deny-rename","description":"Denies the rename command without any pre-configured scope.","commands":{"allow":[],"deny":["rename"]}},"deny-seek":{"identifier":"deny-seek","description":"Denies the seek command without any pre-configured scope.","commands":{"allow":[],"deny":["seek"]}},"deny-stat":{"identifier":"deny-stat","description":"Denies the stat command without any pre-configured scope.","commands":{"allow":[],"deny":["stat"]}},"deny-truncate":{"identifier":"deny-truncate","description":"Denies the truncate command without any pre-configured scope.","commands":{"allow":[],"deny":["truncate"]}},"deny-unwatch":{"identifier":"deny-unwatch","description":"Denies the unwatch command without any pre-configured scope.","commands":{"allow":[],"deny":["unwatch"]}},"deny-watch":{"identifier":"deny-watch","description":"Denies the watch command without any pre-configured scope.","commands":{"allow":[],"deny":["watch"]}},"deny-webview-data-linux":{"identifier":"deny-webview-data-linux","description":"This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.","commands":{"allow":[],"deny":[]}},"deny-webview-data-windows":{"identifier":"deny-webview-data-windows","description":"This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.","commands":{"allow":[],"deny":[]}},"deny-write":{"identifier":"deny-write","description":"Denies the write command without any pre-configured scope.","commands":{"allow":[],"deny":["write"]}},"deny-write-file":{"identifier":"deny-write-file","description":"Denies the write_file command without any pre-configured scope.","commands":{"allow":[],"deny":["write_file"]}},"deny-write-text-file":{"identifier":"deny-write-text-file","description":"Denies the write_text_file command without any pre-configured scope.","commands":{"allow":[],"deny":["write_text_file"]}},"read-all":{"identifier":"read-all","description":"This enables all read related commands without any pre-configured accessible paths.","commands":{"allow":["read_dir","read_file","read","open","read_text_file","read_text_file_lines","read_text_file_lines_next","seek","stat","lstat","fstat","exists","watch","unwatch"],"deny":[]}},"read-dirs":{"identifier":"read-dirs","description":"This enables directory read and file metadata related commands without any pre-configured accessible paths.","commands":{"allow":["read_dir","stat","lstat","fstat","exists"],"deny":[]}},"read-files":{"identifier":"read-files","description":"This enables file read related commands without any pre-configured accessible paths.","commands":{"allow":["read_file","read","open","read_text_file","read_text_file_lines","read_text_file_lines_next","seek","stat","lstat","fstat","exists"],"deny":[]}},"read-meta":{"identifier":"read-meta","description":"This enables all index or metadata related commands without any pre-configured accessible paths.","commands":{"allow":["read_dir","stat","lstat","fstat","exists"],"deny":[]}},"scope":{"identifier":"scope","description":"An empty permission you can use to modify the global scope.","commands":{"allow":[],"deny":[]}},"scope-app":{"identifier":"scope-app","description":"This scope permits access to all files and list content of top level directories in the `$APP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APP/*"}]}},"scope-app-index":{"identifier":"scope-app-index","description":"This scope permits to list all files and folders in the `$APP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APP/"}]}},"scope-app-recursive":{"identifier":"scope-app-recursive","description":"This scope recursive access to the complete `$APP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APP/**"}]}},"scope-appcache":{"identifier":"scope-appcache","description":"This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE/*"}]}},"scope-appcache-index":{"identifier":"scope-appcache-index","description":"This scope permits to list all files and folders in the `$APPCACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE/"}]}},"scope-appcache-recursive":{"identifier":"scope-appcache-recursive","description":"This scope recursive access to the complete `$APPCACHE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE/**"}]}},"scope-appconfig":{"identifier":"scope-appconfig","description":"This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG/*"}]}},"scope-appconfig-index":{"identifier":"scope-appconfig-index","description":"This scope permits to list all files and folders in the `$APPCONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG/"}]}},"scope-appconfig-recursive":{"identifier":"scope-appconfig-recursive","description":"This scope recursive access to the complete `$APPCONFIG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG/**"}]}},"scope-appdata":{"identifier":"scope-appdata","description":"This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA/*"}]}},"scope-appdata-index":{"identifier":"scope-appdata-index","description":"This scope permits to list all files and folders in the `$APPDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA/"}]}},"scope-appdata-recursive":{"identifier":"scope-appdata-recursive","description":"This scope recursive access to the complete `$APPDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA/**"}]}},"scope-applocaldata":{"identifier":"scope-applocaldata","description":"This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA/*"}]}},"scope-applocaldata-index":{"identifier":"scope-applocaldata-index","description":"This scope permits to list all files and folders in the `$APPLOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA/"}]}},"scope-applocaldata-recursive":{"identifier":"scope-applocaldata-recursive","description":"This scope recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA/**"}]}},"scope-applog":{"identifier":"scope-applog","description":"This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG/*"}]}},"scope-applog-index":{"identifier":"scope-applog-index","description":"This scope permits to list all files and folders in the `$APPLOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG/"}]}},"scope-applog-recursive":{"identifier":"scope-applog-recursive","description":"This scope recursive access to the complete `$APPLOG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG/**"}]}},"scope-audio":{"identifier":"scope-audio","description":"This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO/*"}]}},"scope-audio-index":{"identifier":"scope-audio-index","description":"This scope permits to list all files and folders in the `$AUDIO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO/"}]}},"scope-audio-recursive":{"identifier":"scope-audio-recursive","description":"This scope recursive access to the complete `$AUDIO` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO/**"}]}},"scope-cache":{"identifier":"scope-cache","description":"This scope permits access to all files and list content of top level directories in the `$CACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE/*"}]}},"scope-cache-index":{"identifier":"scope-cache-index","description":"This scope permits to list all files and folders in the `$CACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE/"}]}},"scope-cache-recursive":{"identifier":"scope-cache-recursive","description":"This scope recursive access to the complete `$CACHE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE/**"}]}},"scope-config":{"identifier":"scope-config","description":"This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG/*"}]}},"scope-config-index":{"identifier":"scope-config-index","description":"This scope permits to list all files and folders in the `$CONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG/"}]}},"scope-config-recursive":{"identifier":"scope-config-recursive","description":"This scope recursive access to the complete `$CONFIG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG/**"}]}},"scope-data":{"identifier":"scope-data","description":"This scope permits access to all files and list content of top level directories in the `$DATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA/*"}]}},"scope-data-index":{"identifier":"scope-data-index","description":"This scope permits to list all files and folders in the `$DATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA/"}]}},"scope-data-recursive":{"identifier":"scope-data-recursive","description":"This scope recursive access to the complete `$DATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA/**"}]}},"scope-desktop":{"identifier":"scope-desktop","description":"This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP/*"}]}},"scope-desktop-index":{"identifier":"scope-desktop-index","description":"This scope permits to list all files and folders in the `$DESKTOP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP/"}]}},"scope-desktop-recursive":{"identifier":"scope-desktop-recursive","description":"This scope recursive access to the complete `$DESKTOP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP/**"}]}},"scope-document":{"identifier":"scope-document","description":"This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT/*"}]}},"scope-document-index":{"identifier":"scope-document-index","description":"This scope permits to list all files and folders in the `$DOCUMENT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT/"}]}},"scope-document-recursive":{"identifier":"scope-document-recursive","description":"This scope recursive access to the complete `$DOCUMENT` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT/**"}]}},"scope-download":{"identifier":"scope-download","description":"This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD/*"}]}},"scope-download-index":{"identifier":"scope-download-index","description":"This scope permits to list all files and folders in the `$DOWNLOAD`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD/"}]}},"scope-download-recursive":{"identifier":"scope-download-recursive","description":"This scope recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD/**"}]}},"scope-exe":{"identifier":"scope-exe","description":"This scope permits access to all files and list content of top level directories in the `$EXE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE/*"}]}},"scope-exe-index":{"identifier":"scope-exe-index","description":"This scope permits to list all files and folders in the `$EXE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE/"}]}},"scope-exe-recursive":{"identifier":"scope-exe-recursive","description":"This scope recursive access to the complete `$EXE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE/**"}]}},"scope-font":{"identifier":"scope-font","description":"This scope permits access to all files and list content of top level directories in the `$FONT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT/*"}]}},"scope-font-index":{"identifier":"scope-font-index","description":"This scope permits to list all files and folders in the `$FONT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT/"}]}},"scope-font-recursive":{"identifier":"scope-font-recursive","description":"This scope recursive access to the complete `$FONT` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT/**"}]}},"scope-home":{"identifier":"scope-home","description":"This scope permits access to all files and list content of top level directories in the `$HOME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME/*"}]}},"scope-home-index":{"identifier":"scope-home-index","description":"This scope permits to list all files and folders in the `$HOME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME/"}]}},"scope-home-recursive":{"identifier":"scope-home-recursive","description":"This scope recursive access to the complete `$HOME` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME/**"}]}},"scope-localdata":{"identifier":"scope-localdata","description":"This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA/*"}]}},"scope-localdata-index":{"identifier":"scope-localdata-index","description":"This scope permits to list all files and folders in the `$LOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA/"}]}},"scope-localdata-recursive":{"identifier":"scope-localdata-recursive","description":"This scope recursive access to the complete `$LOCALDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA/**"}]}},"scope-log":{"identifier":"scope-log","description":"This scope permits access to all files and list content of top level directories in the `$LOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG/*"}]}},"scope-log-index":{"identifier":"scope-log-index","description":"This scope permits to list all files and folders in the `$LOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG/"}]}},"scope-log-recursive":{"identifier":"scope-log-recursive","description":"This scope recursive access to the complete `$LOG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG/**"}]}},"scope-picture":{"identifier":"scope-picture","description":"This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE/*"}]}},"scope-picture-index":{"identifier":"scope-picture-index","description":"This scope permits to list all files and folders in the `$PICTURE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE/"}]}},"scope-picture-recursive":{"identifier":"scope-picture-recursive","description":"This scope recursive access to the complete `$PICTURE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE/**"}]}},"scope-public":{"identifier":"scope-public","description":"This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC/*"}]}},"scope-public-index":{"identifier":"scope-public-index","description":"This scope permits to list all files and folders in the `$PUBLIC`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC/"}]}},"scope-public-recursive":{"identifier":"scope-public-recursive","description":"This scope recursive access to the complete `$PUBLIC` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC/**"}]}},"scope-resource":{"identifier":"scope-resource","description":"This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE/*"}]}},"scope-resource-index":{"identifier":"scope-resource-index","description":"This scope permits to list all files and folders in the `$RESOURCE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE/"}]}},"scope-resource-recursive":{"identifier":"scope-resource-recursive","description":"This scope recursive access to the complete `$RESOURCE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE/**"}]}},"scope-runtime":{"identifier":"scope-runtime","description":"This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME/*"}]}},"scope-runtime-index":{"identifier":"scope-runtime-index","description":"This scope permits to list all files and folders in the `$RUNTIME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME/"}]}},"scope-runtime-recursive":{"identifier":"scope-runtime-recursive","description":"This scope recursive access to the complete `$RUNTIME` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME/**"}]}},"scope-temp":{"identifier":"scope-temp","description":"This scope permits access to all files and list content of top level directories in the `$TEMP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP/*"}]}},"scope-temp-index":{"identifier":"scope-temp-index","description":"This scope permits to list all files and folders in the `$TEMP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP/"}]}},"scope-temp-recursive":{"identifier":"scope-temp-recursive","description":"This scope recursive access to the complete `$TEMP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP/**"}]}},"scope-template":{"identifier":"scope-template","description":"This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE/*"}]}},"scope-template-index":{"identifier":"scope-template-index","description":"This scope permits to list all files and folders in the `$TEMPLATE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE/"}]}},"scope-template-recursive":{"identifier":"scope-template-recursive","description":"This scope recursive access to the complete `$TEMPLATE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE/**"}]}},"scope-video":{"identifier":"scope-video","description":"This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO/*"}]}},"scope-video-index":{"identifier":"scope-video-index","description":"This scope permits to list all files and folders in the `$VIDEO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO/"}]}},"scope-video-recursive":{"identifier":"scope-video-recursive","description":"This scope recursive access to the complete `$VIDEO` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO/**"}]}},"write-all":{"identifier":"write-all","description":"This enables all write related commands without any pre-configured accessible paths.","commands":{"allow":["mkdir","create","copy_file","remove","rename","truncate","ftruncate","write","write_file","write_text_file"],"deny":[]}},"write-files":{"identifier":"write-files","description":"This enables all file write related commands without any pre-configured accessible paths.","commands":{"allow":["create","copy_file","remove","rename","truncate","ftruncate","write","write_file","write_text_file"],"deny":[]}}},"permission_sets":{"allow-app-meta":{"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"]},"allow-app-meta-recursive":{"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"]},"allow-app-read":{"identifier":"allow-app-read","description":"This allows non-recursive read access to the `$APP` folder.","permissions":["read-all","scope-app"]},"allow-app-read-recursive":{"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"]},"allow-app-write":{"identifier":"allow-app-write","description":"This allows non-recursive write access to the `$APP` folder.","permissions":["write-all","scope-app"]},"allow-app-write-recursive":{"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"]},"allow-appcache-meta":{"identifier":"allow-appcache-meta","description":"This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-appcache-index"]},"allow-appcache-meta-recursive":{"identifier":"allow-appcache-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-appcache-recursive"]},"allow-appcache-read":{"identifier":"allow-appcache-read","description":"This allows non-recursive read access to the `$APPCACHE` folder.","permissions":["read-all","scope-appcache"]},"allow-appcache-read-recursive":{"identifier":"allow-appcache-read-recursive","description":"This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.","permissions":["read-all","scope-appcache-recursive"]},"allow-appcache-write":{"identifier":"allow-appcache-write","description":"This allows non-recursive write access to the `$APPCACHE` folder.","permissions":["write-all","scope-appcache"]},"allow-appcache-write-recursive":{"identifier":"allow-appcache-write-recursive","description":"This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.","permissions":["write-all","scope-appcache-recursive"]},"allow-appconfig-meta":{"identifier":"allow-appconfig-meta","description":"This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-appconfig-index"]},"allow-appconfig-meta-recursive":{"identifier":"allow-appconfig-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-appconfig-recursive"]},"allow-appconfig-read":{"identifier":"allow-appconfig-read","description":"This allows non-recursive read access to the `$APPCONFIG` folder.","permissions":["read-all","scope-appconfig"]},"allow-appconfig-read-recursive":{"identifier":"allow-appconfig-read-recursive","description":"This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.","permissions":["read-all","scope-appconfig-recursive"]},"allow-appconfig-write":{"identifier":"allow-appconfig-write","description":"This allows non-recursive write access to the `$APPCONFIG` folder.","permissions":["write-all","scope-appconfig"]},"allow-appconfig-write-recursive":{"identifier":"allow-appconfig-write-recursive","description":"This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.","permissions":["write-all","scope-appconfig-recursive"]},"allow-appdata-meta":{"identifier":"allow-appdata-meta","description":"This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-appdata-index"]},"allow-appdata-meta-recursive":{"identifier":"allow-appdata-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-appdata-recursive"]},"allow-appdata-read":{"identifier":"allow-appdata-read","description":"This allows non-recursive read access to the `$APPDATA` folder.","permissions":["read-all","scope-appdata"]},"allow-appdata-read-recursive":{"identifier":"allow-appdata-read-recursive","description":"This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.","permissions":["read-all","scope-appdata-recursive"]},"allow-appdata-write":{"identifier":"allow-appdata-write","description":"This allows non-recursive write access to the `$APPDATA` folder.","permissions":["write-all","scope-appdata"]},"allow-appdata-write-recursive":{"identifier":"allow-appdata-write-recursive","description":"This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.","permissions":["write-all","scope-appdata-recursive"]},"allow-applocaldata-meta":{"identifier":"allow-applocaldata-meta","description":"This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-applocaldata-index"]},"allow-applocaldata-meta-recursive":{"identifier":"allow-applocaldata-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-applocaldata-recursive"]},"allow-applocaldata-read":{"identifier":"allow-applocaldata-read","description":"This allows non-recursive read access to the `$APPLOCALDATA` folder.","permissions":["read-all","scope-applocaldata"]},"allow-applocaldata-read-recursive":{"identifier":"allow-applocaldata-read-recursive","description":"This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.","permissions":["read-all","scope-applocaldata-recursive"]},"allow-applocaldata-write":{"identifier":"allow-applocaldata-write","description":"This allows non-recursive write access to the `$APPLOCALDATA` folder.","permissions":["write-all","scope-applocaldata"]},"allow-applocaldata-write-recursive":{"identifier":"allow-applocaldata-write-recursive","description":"This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.","permissions":["write-all","scope-applocaldata-recursive"]},"allow-applog-meta":{"identifier":"allow-applog-meta","description":"This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.","permissions":["read-meta","scope-applog-index"]},"allow-applog-meta-recursive":{"identifier":"allow-applog-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.","permissions":["read-meta","scope-applog-recursive"]},"allow-applog-read":{"identifier":"allow-applog-read","description":"This allows non-recursive read access to the `$APPLOG` folder.","permissions":["read-all","scope-applog"]},"allow-applog-read-recursive":{"identifier":"allow-applog-read-recursive","description":"This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.","permissions":["read-all","scope-applog-recursive"]},"allow-applog-write":{"identifier":"allow-applog-write","description":"This allows non-recursive write access to the `$APPLOG` folder.","permissions":["write-all","scope-applog"]},"allow-applog-write-recursive":{"identifier":"allow-applog-write-recursive","description":"This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.","permissions":["write-all","scope-applog-recursive"]},"allow-audio-meta":{"identifier":"allow-audio-meta","description":"This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.","permissions":["read-meta","scope-audio-index"]},"allow-audio-meta-recursive":{"identifier":"allow-audio-meta-recursive","description":"This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.","permissions":["read-meta","scope-audio-recursive"]},"allow-audio-read":{"identifier":"allow-audio-read","description":"This allows non-recursive read access to the `$AUDIO` folder.","permissions":["read-all","scope-audio"]},"allow-audio-read-recursive":{"identifier":"allow-audio-read-recursive","description":"This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.","permissions":["read-all","scope-audio-recursive"]},"allow-audio-write":{"identifier":"allow-audio-write","description":"This allows non-recursive write access to the `$AUDIO` folder.","permissions":["write-all","scope-audio"]},"allow-audio-write-recursive":{"identifier":"allow-audio-write-recursive","description":"This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.","permissions":["write-all","scope-audio-recursive"]},"allow-cache-meta":{"identifier":"allow-cache-meta","description":"This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-cache-index"]},"allow-cache-meta-recursive":{"identifier":"allow-cache-meta-recursive","description":"This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-cache-recursive"]},"allow-cache-read":{"identifier":"allow-cache-read","description":"This allows non-recursive read access to the `$CACHE` folder.","permissions":["read-all","scope-cache"]},"allow-cache-read-recursive":{"identifier":"allow-cache-read-recursive","description":"This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.","permissions":["read-all","scope-cache-recursive"]},"allow-cache-write":{"identifier":"allow-cache-write","description":"This allows non-recursive write access to the `$CACHE` folder.","permissions":["write-all","scope-cache"]},"allow-cache-write-recursive":{"identifier":"allow-cache-write-recursive","description":"This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.","permissions":["write-all","scope-cache-recursive"]},"allow-config-meta":{"identifier":"allow-config-meta","description":"This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-config-index"]},"allow-config-meta-recursive":{"identifier":"allow-config-meta-recursive","description":"This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-config-recursive"]},"allow-config-read":{"identifier":"allow-config-read","description":"This allows non-recursive read access to the `$CONFIG` folder.","permissions":["read-all","scope-config"]},"allow-config-read-recursive":{"identifier":"allow-config-read-recursive","description":"This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.","permissions":["read-all","scope-config-recursive"]},"allow-config-write":{"identifier":"allow-config-write","description":"This allows non-recursive write access to the `$CONFIG` folder.","permissions":["write-all","scope-config"]},"allow-config-write-recursive":{"identifier":"allow-config-write-recursive","description":"This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.","permissions":["write-all","scope-config-recursive"]},"allow-data-meta":{"identifier":"allow-data-meta","description":"This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.","permissions":["read-meta","scope-data-index"]},"allow-data-meta-recursive":{"identifier":"allow-data-meta-recursive","description":"This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.","permissions":["read-meta","scope-data-recursive"]},"allow-data-read":{"identifier":"allow-data-read","description":"This allows non-recursive read access to the `$DATA` folder.","permissions":["read-all","scope-data"]},"allow-data-read-recursive":{"identifier":"allow-data-read-recursive","description":"This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.","permissions":["read-all","scope-data-recursive"]},"allow-data-write":{"identifier":"allow-data-write","description":"This allows non-recursive write access to the `$DATA` folder.","permissions":["write-all","scope-data"]},"allow-data-write-recursive":{"identifier":"allow-data-write-recursive","description":"This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.","permissions":["write-all","scope-data-recursive"]},"allow-desktop-meta":{"identifier":"allow-desktop-meta","description":"This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.","permissions":["read-meta","scope-desktop-index"]},"allow-desktop-meta-recursive":{"identifier":"allow-desktop-meta-recursive","description":"This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.","permissions":["read-meta","scope-desktop-recursive"]},"allow-desktop-read":{"identifier":"allow-desktop-read","description":"This allows non-recursive read access to the `$DESKTOP` folder.","permissions":["read-all","scope-desktop"]},"allow-desktop-read-recursive":{"identifier":"allow-desktop-read-recursive","description":"This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.","permissions":["read-all","scope-desktop-recursive"]},"allow-desktop-write":{"identifier":"allow-desktop-write","description":"This allows non-recursive write access to the `$DESKTOP` folder.","permissions":["write-all","scope-desktop"]},"allow-desktop-write-recursive":{"identifier":"allow-desktop-write-recursive","description":"This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.","permissions":["write-all","scope-desktop-recursive"]},"allow-document-meta":{"identifier":"allow-document-meta","description":"This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.","permissions":["read-meta","scope-document-index"]},"allow-document-meta-recursive":{"identifier":"allow-document-meta-recursive","description":"This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.","permissions":["read-meta","scope-document-recursive"]},"allow-document-read":{"identifier":"allow-document-read","description":"This allows non-recursive read access to the `$DOCUMENT` folder.","permissions":["read-all","scope-document"]},"allow-document-read-recursive":{"identifier":"allow-document-read-recursive","description":"This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.","permissions":["read-all","scope-document-recursive"]},"allow-document-write":{"identifier":"allow-document-write","description":"This allows non-recursive write access to the `$DOCUMENT` folder.","permissions":["write-all","scope-document"]},"allow-document-write-recursive":{"identifier":"allow-document-write-recursive","description":"This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.","permissions":["write-all","scope-document-recursive"]},"allow-download-meta":{"identifier":"allow-download-meta","description":"This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.","permissions":["read-meta","scope-download-index"]},"allow-download-meta-recursive":{"identifier":"allow-download-meta-recursive","description":"This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.","permissions":["read-meta","scope-download-recursive"]},"allow-download-read":{"identifier":"allow-download-read","description":"This allows non-recursive read access to the `$DOWNLOAD` folder.","permissions":["read-all","scope-download"]},"allow-download-read-recursive":{"identifier":"allow-download-read-recursive","description":"This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.","permissions":["read-all","scope-download-recursive"]},"allow-download-write":{"identifier":"allow-download-write","description":"This allows non-recursive write access to the `$DOWNLOAD` folder.","permissions":["write-all","scope-download"]},"allow-download-write-recursive":{"identifier":"allow-download-write-recursive","description":"This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.","permissions":["write-all","scope-download-recursive"]},"allow-exe-meta":{"identifier":"allow-exe-meta","description":"This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.","permissions":["read-meta","scope-exe-index"]},"allow-exe-meta-recursive":{"identifier":"allow-exe-meta-recursive","description":"This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.","permissions":["read-meta","scope-exe-recursive"]},"allow-exe-read":{"identifier":"allow-exe-read","description":"This allows non-recursive read access to the `$EXE` folder.","permissions":["read-all","scope-exe"]},"allow-exe-read-recursive":{"identifier":"allow-exe-read-recursive","description":"This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.","permissions":["read-all","scope-exe-recursive"]},"allow-exe-write":{"identifier":"allow-exe-write","description":"This allows non-recursive write access to the `$EXE` folder.","permissions":["write-all","scope-exe"]},"allow-exe-write-recursive":{"identifier":"allow-exe-write-recursive","description":"This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.","permissions":["write-all","scope-exe-recursive"]},"allow-font-meta":{"identifier":"allow-font-meta","description":"This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.","permissions":["read-meta","scope-font-index"]},"allow-font-meta-recursive":{"identifier":"allow-font-meta-recursive","description":"This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.","permissions":["read-meta","scope-font-recursive"]},"allow-font-read":{"identifier":"allow-font-read","description":"This allows non-recursive read access to the `$FONT` folder.","permissions":["read-all","scope-font"]},"allow-font-read-recursive":{"identifier":"allow-font-read-recursive","description":"This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.","permissions":["read-all","scope-font-recursive"]},"allow-font-write":{"identifier":"allow-font-write","description":"This allows non-recursive write access to the `$FONT` folder.","permissions":["write-all","scope-font"]},"allow-font-write-recursive":{"identifier":"allow-font-write-recursive","description":"This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.","permissions":["write-all","scope-font-recursive"]},"allow-home-meta":{"identifier":"allow-home-meta","description":"This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.","permissions":["read-meta","scope-home-index"]},"allow-home-meta-recursive":{"identifier":"allow-home-meta-recursive","description":"This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.","permissions":["read-meta","scope-home-recursive"]},"allow-home-read":{"identifier":"allow-home-read","description":"This allows non-recursive read access to the `$HOME` folder.","permissions":["read-all","scope-home"]},"allow-home-read-recursive":{"identifier":"allow-home-read-recursive","description":"This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.","permissions":["read-all","scope-home-recursive"]},"allow-home-write":{"identifier":"allow-home-write","description":"This allows non-recursive write access to the `$HOME` folder.","permissions":["write-all","scope-home"]},"allow-home-write-recursive":{"identifier":"allow-home-write-recursive","description":"This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.","permissions":["write-all","scope-home-recursive"]},"allow-localdata-meta":{"identifier":"allow-localdata-meta","description":"This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-localdata-index"]},"allow-localdata-meta-recursive":{"identifier":"allow-localdata-meta-recursive","description":"This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-localdata-recursive"]},"allow-localdata-read":{"identifier":"allow-localdata-read","description":"This allows non-recursive read access to the `$LOCALDATA` folder.","permissions":["read-all","scope-localdata"]},"allow-localdata-read-recursive":{"identifier":"allow-localdata-read-recursive","description":"This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.","permissions":["read-all","scope-localdata-recursive"]},"allow-localdata-write":{"identifier":"allow-localdata-write","description":"This allows non-recursive write access to the `$LOCALDATA` folder.","permissions":["write-all","scope-localdata"]},"allow-localdata-write-recursive":{"identifier":"allow-localdata-write-recursive","description":"This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.","permissions":["write-all","scope-localdata-recursive"]},"allow-log-meta":{"identifier":"allow-log-meta","description":"This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.","permissions":["read-meta","scope-log-index"]},"allow-log-meta-recursive":{"identifier":"allow-log-meta-recursive","description":"This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.","permissions":["read-meta","scope-log-recursive"]},"allow-log-read":{"identifier":"allow-log-read","description":"This allows non-recursive read access to the `$LOG` folder.","permissions":["read-all","scope-log"]},"allow-log-read-recursive":{"identifier":"allow-log-read-recursive","description":"This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.","permissions":["read-all","scope-log-recursive"]},"allow-log-write":{"identifier":"allow-log-write","description":"This allows non-recursive write access to the `$LOG` folder.","permissions":["write-all","scope-log"]},"allow-log-write-recursive":{"identifier":"allow-log-write-recursive","description":"This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.","permissions":["write-all","scope-log-recursive"]},"allow-picture-meta":{"identifier":"allow-picture-meta","description":"This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.","permissions":["read-meta","scope-picture-index"]},"allow-picture-meta-recursive":{"identifier":"allow-picture-meta-recursive","description":"This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.","permissions":["read-meta","scope-picture-recursive"]},"allow-picture-read":{"identifier":"allow-picture-read","description":"This allows non-recursive read access to the `$PICTURE` folder.","permissions":["read-all","scope-picture"]},"allow-picture-read-recursive":{"identifier":"allow-picture-read-recursive","description":"This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.","permissions":["read-all","scope-picture-recursive"]},"allow-picture-write":{"identifier":"allow-picture-write","description":"This allows non-recursive write access to the `$PICTURE` folder.","permissions":["write-all","scope-picture"]},"allow-picture-write-recursive":{"identifier":"allow-picture-write-recursive","description":"This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.","permissions":["write-all","scope-picture-recursive"]},"allow-public-meta":{"identifier":"allow-public-meta","description":"This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.","permissions":["read-meta","scope-public-index"]},"allow-public-meta-recursive":{"identifier":"allow-public-meta-recursive","description":"This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.","permissions":["read-meta","scope-public-recursive"]},"allow-public-read":{"identifier":"allow-public-read","description":"This allows non-recursive read access to the `$PUBLIC` folder.","permissions":["read-all","scope-public"]},"allow-public-read-recursive":{"identifier":"allow-public-read-recursive","description":"This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.","permissions":["read-all","scope-public-recursive"]},"allow-public-write":{"identifier":"allow-public-write","description":"This allows non-recursive write access to the `$PUBLIC` folder.","permissions":["write-all","scope-public"]},"allow-public-write-recursive":{"identifier":"allow-public-write-recursive","description":"This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.","permissions":["write-all","scope-public-recursive"]},"allow-resource-meta":{"identifier":"allow-resource-meta","description":"This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.","permissions":["read-meta","scope-resource-index"]},"allow-resource-meta-recursive":{"identifier":"allow-resource-meta-recursive","description":"This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.","permissions":["read-meta","scope-resource-recursive"]},"allow-resource-read":{"identifier":"allow-resource-read","description":"This allows non-recursive read access to the `$RESOURCE` folder.","permissions":["read-all","scope-resource"]},"allow-resource-read-recursive":{"identifier":"allow-resource-read-recursive","description":"This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.","permissions":["read-all","scope-resource-recursive"]},"allow-resource-write":{"identifier":"allow-resource-write","description":"This allows non-recursive write access to the `$RESOURCE` folder.","permissions":["write-all","scope-resource"]},"allow-resource-write-recursive":{"identifier":"allow-resource-write-recursive","description":"This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.","permissions":["write-all","scope-resource-recursive"]},"allow-runtime-meta":{"identifier":"allow-runtime-meta","description":"This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.","permissions":["read-meta","scope-runtime-index"]},"allow-runtime-meta-recursive":{"identifier":"allow-runtime-meta-recursive","description":"This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.","permissions":["read-meta","scope-runtime-recursive"]},"allow-runtime-read":{"identifier":"allow-runtime-read","description":"This allows non-recursive read access to the `$RUNTIME` folder.","permissions":["read-all","scope-runtime"]},"allow-runtime-read-recursive":{"identifier":"allow-runtime-read-recursive","description":"This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.","permissions":["read-all","scope-runtime-recursive"]},"allow-runtime-write":{"identifier":"allow-runtime-write","description":"This allows non-recursive write access to the `$RUNTIME` folder.","permissions":["write-all","scope-runtime"]},"allow-runtime-write-recursive":{"identifier":"allow-runtime-write-recursive","description":"This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.","permissions":["write-all","scope-runtime-recursive"]},"allow-temp-meta":{"identifier":"allow-temp-meta","description":"This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.","permissions":["read-meta","scope-temp-index"]},"allow-temp-meta-recursive":{"identifier":"allow-temp-meta-recursive","description":"This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.","permissions":["read-meta","scope-temp-recursive"]},"allow-temp-read":{"identifier":"allow-temp-read","description":"This allows non-recursive read access to the `$TEMP` folder.","permissions":["read-all","scope-temp"]},"allow-temp-read-recursive":{"identifier":"allow-temp-read-recursive","description":"This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.","permissions":["read-all","scope-temp-recursive"]},"allow-temp-write":{"identifier":"allow-temp-write","description":"This allows non-recursive write access to the `$TEMP` folder.","permissions":["write-all","scope-temp"]},"allow-temp-write-recursive":{"identifier":"allow-temp-write-recursive","description":"This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.","permissions":["write-all","scope-temp-recursive"]},"allow-template-meta":{"identifier":"allow-template-meta","description":"This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.","permissions":["read-meta","scope-template-index"]},"allow-template-meta-recursive":{"identifier":"allow-template-meta-recursive","description":"This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.","permissions":["read-meta","scope-template-recursive"]},"allow-template-read":{"identifier":"allow-template-read","description":"This allows non-recursive read access to the `$TEMPLATE` folder.","permissions":["read-all","scope-template"]},"allow-template-read-recursive":{"identifier":"allow-template-read-recursive","description":"This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.","permissions":["read-all","scope-template-recursive"]},"allow-template-write":{"identifier":"allow-template-write","description":"This allows non-recursive write access to the `$TEMPLATE` folder.","permissions":["write-all","scope-template"]},"allow-template-write-recursive":{"identifier":"allow-template-write-recursive","description":"This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.","permissions":["write-all","scope-template-recursive"]},"allow-video-meta":{"identifier":"allow-video-meta","description":"This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.","permissions":["read-meta","scope-video-index"]},"allow-video-meta-recursive":{"identifier":"allow-video-meta-recursive","description":"This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.","permissions":["read-meta","scope-video-recursive"]},"allow-video-read":{"identifier":"allow-video-read","description":"This allows non-recursive read access to the `$VIDEO` folder.","permissions":["read-all","scope-video"]},"allow-video-read-recursive":{"identifier":"allow-video-read-recursive","description":"This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.","permissions":["read-all","scope-video-recursive"]},"allow-video-write":{"identifier":"allow-video-write","description":"This allows non-recursive write access to the `$VIDEO` folder.","permissions":["write-all","scope-video"]},"allow-video-write-recursive":{"identifier":"allow-video-write-recursive","description":"This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.","permissions":["write-all","scope-video-recursive"]},"deny-default":{"identifier":"deny-default","description":"This denies access to dangerous Tauri relevant files and folders by default.","permissions":["deny-webview-data-linux","deny-webview-data-windows"]}},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"description":"FS scope path.","type":"string"},{"properties":{"path":{"description":"FS scope path.","type":"string"}},"required":["path"],"type":"object"}],"description":"FS scope entry.","title":"FsScopeEntry"}},"image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"log":{"default_permission":{"identifier":"default","description":"Allows the log command","permissions":["allow-log"]},"permissions":{"allow-log":{"identifier":"allow-log","description":"Enables the log command without any pre-configured scope.","commands":{"allow":["log"],"deny":[]}},"deny-log":{"identifier":"deny-log","description":"Denies the log command without any pre-configured scope.","commands":{"allow":[],"deny":["log"]}}},"permission_sets":{},"global_scope_schema":null},"menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":[]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"os":{"default_permission":null,"permissions":{"allow-arch":{"identifier":"allow-arch","description":"Enables the arch command without any pre-configured scope.","commands":{"allow":["arch"],"deny":[]}},"allow-exe-extension":{"identifier":"allow-exe-extension","description":"Enables the exe_extension command without any pre-configured scope.","commands":{"allow":["exe_extension"],"deny":[]}},"allow-family":{"identifier":"allow-family","description":"Enables the family command without any pre-configured scope.","commands":{"allow":["family"],"deny":[]}},"allow-hostname":{"identifier":"allow-hostname","description":"Enables the hostname command without any pre-configured scope.","commands":{"allow":["hostname"],"deny":[]}},"allow-locale":{"identifier":"allow-locale","description":"Enables the locale command without any pre-configured scope.","commands":{"allow":["locale"],"deny":[]}},"allow-os-type":{"identifier":"allow-os-type","description":"Enables the os_type command without any pre-configured scope.","commands":{"allow":["os_type"],"deny":[]}},"allow-platform":{"identifier":"allow-platform","description":"Enables the platform command without any pre-configured scope.","commands":{"allow":["platform"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-arch":{"identifier":"deny-arch","description":"Denies the arch command without any pre-configured scope.","commands":{"allow":[],"deny":["arch"]}},"deny-exe-extension":{"identifier":"deny-exe-extension","description":"Denies the exe_extension command without any pre-configured scope.","commands":{"allow":[],"deny":["exe_extension"]}},"deny-family":{"identifier":"deny-family","description":"Denies the family command without any pre-configured scope.","commands":{"allow":[],"deny":["family"]}},"deny-hostname":{"identifier":"deny-hostname","description":"Denies the hostname command without any pre-configured scope.","commands":{"allow":[],"deny":["hostname"]}},"deny-locale":{"identifier":"deny-locale","description":"Denies the locale command without any pre-configured scope.","commands":{"allow":[],"deny":["locale"]}},"deny-os-type":{"identifier":"deny-os-type","description":"Denies the os_type command without any pre-configured scope.","commands":{"allow":[],"deny":["os_type"]}},"deny-platform":{"identifier":"deny-platform","description":"Denies the platform command without any pre-configured scope.","commands":{"allow":[],"deny":["platform"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":null,"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","definitions":{"ShellAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\n[regex]: https://docs.rs/regex/latest/regex/#syntax","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"A command allowed to be executed by the webview API.","properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellAllowedArgs"}],"description":"The allowed arguments for the command execution."},"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`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["args","cmd","name","sidecar"],"title":"Entry","type":"object"}},"tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":[]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"updater":{"default_permission":{"identifier":"default","description":"Allows checking for new updates and installing them","permissions":["allow-check","allow-download-and-install"]},"permissions":{"allow-check":{"identifier":"allow-check","description":"Enables the check command without any pre-configured scope.","commands":{"allow":["check"],"deny":[]}},"allow-download-and-install":{"identifier":"allow-download-and-install","description":"Enables the download_and_install command without any pre-configured scope.","commands":{"allow":["download_and_install"],"deny":[]}},"deny-check":{"identifier":"deny-check","description":"Denies the check command without any pre-configured scope.","commands":{"allow":[],"deny":["check"]}},"deny-download-and-install":{"identifier":"deny-download-and-install","description":"Denies the download_and_install command without any pre-configured scope.","commands":{"allow":[],"deny":["download_and_install"]}}},"permission_sets":{},"global_scope_schema":null},"webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-title","allow-current-monitor","allow-primary-monitor","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"window-state":{"default_permission":null,"permissions":{"allow-filename":{"identifier":"allow-filename","description":"Enables the filename command without any pre-configured scope.","commands":{"allow":["filename"],"deny":[]}},"allow-restore-state":{"identifier":"allow-restore-state","description":"Enables the restore_state command without any pre-configured scope.","commands":{"allow":["restore_state"],"deny":[]}},"allow-save-window-state":{"identifier":"allow-save-window-state","description":"Enables the save_window_state command without any pre-configured scope.","commands":{"allow":["save_window_state"],"deny":[]}},"deny-filename":{"identifier":"deny-filename","description":"Denies the filename command without any pre-configured scope.","commands":{"allow":[],"deny":["filename"]}},"deny-restore-state":{"identifier":"deny-restore-state","description":"Denies the restore_state command without any pre-configured scope.","commands":{"allow":[],"deny":["restore_state"]}},"deny-save-window-state":{"identifier":"deny-save-window-state","description":"Denies the save_window_state command without any pre-configured scope.","commands":{"allow":[],"deny":["save_window_state"]}}},"permission_sets":{},"global_scope_schema":null}} \ No newline at end of file +{"app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"clipboard-manager":{"default_permission":null,"permissions":{"allow-clear":{"identifier":"allow-clear","description":"Enables the clear command without any pre-configured scope.","commands":{"allow":["clear"],"deny":[]}},"allow-read-image":{"identifier":"allow-read-image","description":"Enables the read_image command without any pre-configured scope.","commands":{"allow":["read_image"],"deny":[]}},"allow-read-text":{"identifier":"allow-read-text","description":"Enables the read_text command without any pre-configured scope.","commands":{"allow":["read_text"],"deny":[]}},"allow-write-html":{"identifier":"allow-write-html","description":"Enables the write_html command without any pre-configured scope.","commands":{"allow":["write_html"],"deny":[]}},"allow-write-image":{"identifier":"allow-write-image","description":"Enables the write_image command without any pre-configured scope.","commands":{"allow":["write_image"],"deny":[]}},"allow-write-text":{"identifier":"allow-write-text","description":"Enables the write_text command without any pre-configured scope.","commands":{"allow":["write_text"],"deny":[]}},"deny-clear":{"identifier":"deny-clear","description":"Denies the clear command without any pre-configured scope.","commands":{"allow":[],"deny":["clear"]}},"deny-read-image":{"identifier":"deny-read-image","description":"Denies the read_image command without any pre-configured scope.","commands":{"allow":[],"deny":["read_image"]}},"deny-read-text":{"identifier":"deny-read-text","description":"Denies the read_text command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text"]}},"deny-write-html":{"identifier":"deny-write-html","description":"Denies the write_html command without any pre-configured scope.","commands":{"allow":[],"deny":["write_html"]}},"deny-write-image":{"identifier":"deny-write-image","description":"Denies the write_image command without any pre-configured scope.","commands":{"allow":[],"deny":["write_image"]}},"deny-write-text":{"identifier":"deny-write-text","description":"Denies the write_text command without any pre-configured scope.","commands":{"allow":[],"deny":["write_text"]}}},"permission_sets":{},"global_scope_schema":null},"deep-link":{"default_permission":{"identifier":"default","description":"Allows reading the opened deep link via the get_current command","permissions":["allow-get-current"]},"permissions":{"allow-get-current":{"identifier":"allow-get-current","description":"Enables the get_current command without any pre-configured scope.","commands":{"allow":["get_current"],"deny":[]}},"allow-is-registered":{"identifier":"allow-is-registered","description":"Enables the is_registered command without any pre-configured scope.","commands":{"allow":["is_registered"],"deny":[]}},"allow-register":{"identifier":"allow-register","description":"Enables the register command without any pre-configured scope.","commands":{"allow":["register"],"deny":[]}},"allow-unregister":{"identifier":"allow-unregister","description":"Enables the unregister command without any pre-configured scope.","commands":{"allow":["unregister"],"deny":[]}},"deny-get-current":{"identifier":"deny-get-current","description":"Denies the get_current command without any pre-configured scope.","commands":{"allow":[],"deny":["get_current"]}},"deny-is-registered":{"identifier":"deny-is-registered","description":"Denies the is_registered command without any pre-configured scope.","commands":{"allow":[],"deny":["is_registered"]}},"deny-register":{"identifier":"deny-register","description":"Denies the register command without any pre-configured scope.","commands":{"allow":[],"deny":["register"]}},"deny-unregister":{"identifier":"deny-unregister","description":"Denies the unregister command without any pre-configured scope.","commands":{"allow":[],"deny":["unregister"]}}},"permission_sets":{},"global_scope_schema":null},"dialog":{"default_permission":null,"permissions":{"allow-ask":{"identifier":"allow-ask","description":"Enables the ask command without any pre-configured scope.","commands":{"allow":["ask"],"deny":[]}},"allow-confirm":{"identifier":"allow-confirm","description":"Enables the confirm command without any pre-configured scope.","commands":{"allow":["confirm"],"deny":[]}},"allow-message":{"identifier":"allow-message","description":"Enables the message command without any pre-configured scope.","commands":{"allow":["message"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-save":{"identifier":"allow-save","description":"Enables the save command without any pre-configured scope.","commands":{"allow":["save"],"deny":[]}},"deny-ask":{"identifier":"deny-ask","description":"Denies the ask command without any pre-configured scope.","commands":{"allow":[],"deny":["ask"]}},"deny-confirm":{"identifier":"deny-confirm","description":"Denies the confirm command without any pre-configured scope.","commands":{"allow":[],"deny":["confirm"]}},"deny-message":{"identifier":"deny-message","description":"Denies the message command without any pre-configured scope.","commands":{"allow":[],"deny":["message"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-save":{"identifier":"deny-save","description":"Denies the save command without any pre-configured scope.","commands":{"allow":[],"deny":["save"]}}},"permission_sets":{},"global_scope_schema":null},"event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"fs":{"default_permission":{"identifier":"default","description":"# Tauri `fs` default permissions\n\nThis configuration file defines the default permissions granted\nto the filesystem.\n\n### Granted Permissions\n\nThis default permission set enables all read-related commands and\nallows access to the `$APP` folder and sub directories created in it.\nThe location of the `$APP` folder depends on the operating system,\nwhere the application is run.\n\nIn general the `$APP` folder needs to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\n### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n","permissions":["read-all","scope-app-recursive","deny-default"]},"permissions":{"allow-copy-file":{"identifier":"allow-copy-file","description":"Enables the copy_file command without any pre-configured scope.","commands":{"allow":["copy_file"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-exists":{"identifier":"allow-exists","description":"Enables the exists command without any pre-configured scope.","commands":{"allow":["exists"],"deny":[]}},"allow-fstat":{"identifier":"allow-fstat","description":"Enables the fstat command without any pre-configured scope.","commands":{"allow":["fstat"],"deny":[]}},"allow-ftruncate":{"identifier":"allow-ftruncate","description":"Enables the ftruncate command without any pre-configured scope.","commands":{"allow":["ftruncate"],"deny":[]}},"allow-lstat":{"identifier":"allow-lstat","description":"Enables the lstat command without any pre-configured scope.","commands":{"allow":["lstat"],"deny":[]}},"allow-mkdir":{"identifier":"allow-mkdir","description":"Enables the mkdir command without any pre-configured scope.","commands":{"allow":["mkdir"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-read":{"identifier":"allow-read","description":"Enables the read command without any pre-configured scope.","commands":{"allow":["read"],"deny":[]}},"allow-read-dir":{"identifier":"allow-read-dir","description":"Enables the read_dir command without any pre-configured scope.","commands":{"allow":["read_dir"],"deny":[]}},"allow-read-file":{"identifier":"allow-read-file","description":"Enables the read_file command without any pre-configured scope.","commands":{"allow":["read_file"],"deny":[]}},"allow-read-text-file":{"identifier":"allow-read-text-file","description":"Enables the read_text_file command without any pre-configured scope.","commands":{"allow":["read_text_file"],"deny":[]}},"allow-read-text-file-lines":{"identifier":"allow-read-text-file-lines","description":"Enables the read_text_file_lines command without any pre-configured scope.","commands":{"allow":["read_text_file_lines"],"deny":[]}},"allow-read-text-file-lines-next":{"identifier":"allow-read-text-file-lines-next","description":"Enables the read_text_file_lines_next command without any pre-configured scope.","commands":{"allow":["read_text_file_lines_next"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-rename":{"identifier":"allow-rename","description":"Enables the rename command without any pre-configured scope.","commands":{"allow":["rename"],"deny":[]}},"allow-seek":{"identifier":"allow-seek","description":"Enables the seek command without any pre-configured scope.","commands":{"allow":["seek"],"deny":[]}},"allow-stat":{"identifier":"allow-stat","description":"Enables the stat command without any pre-configured scope.","commands":{"allow":["stat"],"deny":[]}},"allow-truncate":{"identifier":"allow-truncate","description":"Enables the truncate command without any pre-configured scope.","commands":{"allow":["truncate"],"deny":[]}},"allow-unwatch":{"identifier":"allow-unwatch","description":"Enables the unwatch command without any pre-configured scope.","commands":{"allow":["unwatch"],"deny":[]}},"allow-watch":{"identifier":"allow-watch","description":"Enables the watch command without any pre-configured scope.","commands":{"allow":["watch"],"deny":[]}},"allow-write":{"identifier":"allow-write","description":"Enables the write command without any pre-configured scope.","commands":{"allow":["write"],"deny":[]}},"allow-write-file":{"identifier":"allow-write-file","description":"Enables the write_file command without any pre-configured scope.","commands":{"allow":["write_file"],"deny":[]}},"allow-write-text-file":{"identifier":"allow-write-text-file","description":"Enables the write_text_file command without any pre-configured scope.","commands":{"allow":["write_text_file"],"deny":[]}},"deny-copy-file":{"identifier":"deny-copy-file","description":"Denies the copy_file command without any pre-configured scope.","commands":{"allow":[],"deny":["copy_file"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-exists":{"identifier":"deny-exists","description":"Denies the exists command without any pre-configured scope.","commands":{"allow":[],"deny":["exists"]}},"deny-fstat":{"identifier":"deny-fstat","description":"Denies the fstat command without any pre-configured scope.","commands":{"allow":[],"deny":["fstat"]}},"deny-ftruncate":{"identifier":"deny-ftruncate","description":"Denies the ftruncate command without any pre-configured scope.","commands":{"allow":[],"deny":["ftruncate"]}},"deny-lstat":{"identifier":"deny-lstat","description":"Denies the lstat command without any pre-configured scope.","commands":{"allow":[],"deny":["lstat"]}},"deny-mkdir":{"identifier":"deny-mkdir","description":"Denies the mkdir command without any pre-configured scope.","commands":{"allow":[],"deny":["mkdir"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-read":{"identifier":"deny-read","description":"Denies the read command without any pre-configured scope.","commands":{"allow":[],"deny":["read"]}},"deny-read-dir":{"identifier":"deny-read-dir","description":"Denies the read_dir command without any pre-configured scope.","commands":{"allow":[],"deny":["read_dir"]}},"deny-read-file":{"identifier":"deny-read-file","description":"Denies the read_file command without any pre-configured scope.","commands":{"allow":[],"deny":["read_file"]}},"deny-read-text-file":{"identifier":"deny-read-text-file","description":"Denies the read_text_file command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text_file"]}},"deny-read-text-file-lines":{"identifier":"deny-read-text-file-lines","description":"Denies the read_text_file_lines command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text_file_lines"]}},"deny-read-text-file-lines-next":{"identifier":"deny-read-text-file-lines-next","description":"Denies the read_text_file_lines_next command without any pre-configured scope.","commands":{"allow":[],"deny":["read_text_file_lines_next"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-rename":{"identifier":"deny-rename","description":"Denies the rename command without any pre-configured scope.","commands":{"allow":[],"deny":["rename"]}},"deny-seek":{"identifier":"deny-seek","description":"Denies the seek command without any pre-configured scope.","commands":{"allow":[],"deny":["seek"]}},"deny-stat":{"identifier":"deny-stat","description":"Denies the stat command without any pre-configured scope.","commands":{"allow":[],"deny":["stat"]}},"deny-truncate":{"identifier":"deny-truncate","description":"Denies the truncate command without any pre-configured scope.","commands":{"allow":[],"deny":["truncate"]}},"deny-unwatch":{"identifier":"deny-unwatch","description":"Denies the unwatch command without any pre-configured scope.","commands":{"allow":[],"deny":["unwatch"]}},"deny-watch":{"identifier":"deny-watch","description":"Denies the watch command without any pre-configured scope.","commands":{"allow":[],"deny":["watch"]}},"deny-webview-data-linux":{"identifier":"deny-webview-data-linux","description":"This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.","commands":{"allow":[],"deny":[]}},"deny-webview-data-windows":{"identifier":"deny-webview-data-windows","description":"This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.","commands":{"allow":[],"deny":[]}},"deny-write":{"identifier":"deny-write","description":"Denies the write command without any pre-configured scope.","commands":{"allow":[],"deny":["write"]}},"deny-write-file":{"identifier":"deny-write-file","description":"Denies the write_file command without any pre-configured scope.","commands":{"allow":[],"deny":["write_file"]}},"deny-write-text-file":{"identifier":"deny-write-text-file","description":"Denies the write_text_file command without any pre-configured scope.","commands":{"allow":[],"deny":["write_text_file"]}},"read-all":{"identifier":"read-all","description":"This enables all read related commands without any pre-configured accessible paths.","commands":{"allow":["read_dir","read_file","read","open","read_text_file","read_text_file_lines","read_text_file_lines_next","seek","stat","lstat","fstat","exists","watch","unwatch"],"deny":[]}},"read-dirs":{"identifier":"read-dirs","description":"This enables directory read and file metadata related commands without any pre-configured accessible paths.","commands":{"allow":["read_dir","stat","lstat","fstat","exists"],"deny":[]}},"read-files":{"identifier":"read-files","description":"This enables file read related commands without any pre-configured accessible paths.","commands":{"allow":["read_file","read","open","read_text_file","read_text_file_lines","read_text_file_lines_next","seek","stat","lstat","fstat","exists"],"deny":[]}},"read-meta":{"identifier":"read-meta","description":"This enables all index or metadata related commands without any pre-configured accessible paths.","commands":{"allow":["read_dir","stat","lstat","fstat","exists"],"deny":[]}},"scope":{"identifier":"scope","description":"An empty permission you can use to modify the global scope.","commands":{"allow":[],"deny":[]}},"scope-app":{"identifier":"scope-app","description":"This scope permits access to all files and list content of top level directories in the `$APP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APP/*"}]}},"scope-app-index":{"identifier":"scope-app-index","description":"This scope permits to list all files and folders in the `$APP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APP/"}]}},"scope-app-recursive":{"identifier":"scope-app-recursive","description":"This scope recursive access to the complete `$APP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APP/**"}]}},"scope-appcache":{"identifier":"scope-appcache","description":"This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE/*"}]}},"scope-appcache-index":{"identifier":"scope-appcache-index","description":"This scope permits to list all files and folders in the `$APPCACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE/"}]}},"scope-appcache-recursive":{"identifier":"scope-appcache-recursive","description":"This scope recursive access to the complete `$APPCACHE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE/**"}]}},"scope-appconfig":{"identifier":"scope-appconfig","description":"This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG/*"}]}},"scope-appconfig-index":{"identifier":"scope-appconfig-index","description":"This scope permits to list all files and folders in the `$APPCONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG/"}]}},"scope-appconfig-recursive":{"identifier":"scope-appconfig-recursive","description":"This scope recursive access to the complete `$APPCONFIG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG/**"}]}},"scope-appdata":{"identifier":"scope-appdata","description":"This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA/*"}]}},"scope-appdata-index":{"identifier":"scope-appdata-index","description":"This scope permits to list all files and folders in the `$APPDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA/"}]}},"scope-appdata-recursive":{"identifier":"scope-appdata-recursive","description":"This scope recursive access to the complete `$APPDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA/**"}]}},"scope-applocaldata":{"identifier":"scope-applocaldata","description":"This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA/*"}]}},"scope-applocaldata-index":{"identifier":"scope-applocaldata-index","description":"This scope permits to list all files and folders in the `$APPLOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA/"}]}},"scope-applocaldata-recursive":{"identifier":"scope-applocaldata-recursive","description":"This scope recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA/**"}]}},"scope-applog":{"identifier":"scope-applog","description":"This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG/*"}]}},"scope-applog-index":{"identifier":"scope-applog-index","description":"This scope permits to list all files and folders in the `$APPLOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG/"}]}},"scope-applog-recursive":{"identifier":"scope-applog-recursive","description":"This scope recursive access to the complete `$APPLOG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG/**"}]}},"scope-audio":{"identifier":"scope-audio","description":"This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO/*"}]}},"scope-audio-index":{"identifier":"scope-audio-index","description":"This scope permits to list all files and folders in the `$AUDIO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO/"}]}},"scope-audio-recursive":{"identifier":"scope-audio-recursive","description":"This scope recursive access to the complete `$AUDIO` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO/**"}]}},"scope-cache":{"identifier":"scope-cache","description":"This scope permits access to all files and list content of top level directories in the `$CACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE/*"}]}},"scope-cache-index":{"identifier":"scope-cache-index","description":"This scope permits to list all files and folders in the `$CACHE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE/"}]}},"scope-cache-recursive":{"identifier":"scope-cache-recursive","description":"This scope recursive access to the complete `$CACHE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE/**"}]}},"scope-config":{"identifier":"scope-config","description":"This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG/*"}]}},"scope-config-index":{"identifier":"scope-config-index","description":"This scope permits to list all files and folders in the `$CONFIG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG/"}]}},"scope-config-recursive":{"identifier":"scope-config-recursive","description":"This scope recursive access to the complete `$CONFIG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG/**"}]}},"scope-data":{"identifier":"scope-data","description":"This scope permits access to all files and list content of top level directories in the `$DATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA/*"}]}},"scope-data-index":{"identifier":"scope-data-index","description":"This scope permits to list all files and folders in the `$DATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA/"}]}},"scope-data-recursive":{"identifier":"scope-data-recursive","description":"This scope recursive access to the complete `$DATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA/**"}]}},"scope-desktop":{"identifier":"scope-desktop","description":"This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP/*"}]}},"scope-desktop-index":{"identifier":"scope-desktop-index","description":"This scope permits to list all files and folders in the `$DESKTOP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP/"}]}},"scope-desktop-recursive":{"identifier":"scope-desktop-recursive","description":"This scope recursive access to the complete `$DESKTOP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP/**"}]}},"scope-document":{"identifier":"scope-document","description":"This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT/*"}]}},"scope-document-index":{"identifier":"scope-document-index","description":"This scope permits to list all files and folders in the `$DOCUMENT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT/"}]}},"scope-document-recursive":{"identifier":"scope-document-recursive","description":"This scope recursive access to the complete `$DOCUMENT` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT/**"}]}},"scope-download":{"identifier":"scope-download","description":"This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD/*"}]}},"scope-download-index":{"identifier":"scope-download-index","description":"This scope permits to list all files and folders in the `$DOWNLOAD`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD/"}]}},"scope-download-recursive":{"identifier":"scope-download-recursive","description":"This scope recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD/**"}]}},"scope-exe":{"identifier":"scope-exe","description":"This scope permits access to all files and list content of top level directories in the `$EXE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE/*"}]}},"scope-exe-index":{"identifier":"scope-exe-index","description":"This scope permits to list all files and folders in the `$EXE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE/"}]}},"scope-exe-recursive":{"identifier":"scope-exe-recursive","description":"This scope recursive access to the complete `$EXE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE/**"}]}},"scope-font":{"identifier":"scope-font","description":"This scope permits access to all files and list content of top level directories in the `$FONT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT/*"}]}},"scope-font-index":{"identifier":"scope-font-index","description":"This scope permits to list all files and folders in the `$FONT`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT/"}]}},"scope-font-recursive":{"identifier":"scope-font-recursive","description":"This scope recursive access to the complete `$FONT` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT/**"}]}},"scope-home":{"identifier":"scope-home","description":"This scope permits access to all files and list content of top level directories in the `$HOME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME/*"}]}},"scope-home-index":{"identifier":"scope-home-index","description":"This scope permits to list all files and folders in the `$HOME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME/"}]}},"scope-home-recursive":{"identifier":"scope-home-recursive","description":"This scope recursive access to the complete `$HOME` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME/**"}]}},"scope-localdata":{"identifier":"scope-localdata","description":"This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA/*"}]}},"scope-localdata-index":{"identifier":"scope-localdata-index","description":"This scope permits to list all files and folders in the `$LOCALDATA`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA/"}]}},"scope-localdata-recursive":{"identifier":"scope-localdata-recursive","description":"This scope recursive access to the complete `$LOCALDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA/**"}]}},"scope-log":{"identifier":"scope-log","description":"This scope permits access to all files and list content of top level directories in the `$LOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG/*"}]}},"scope-log-index":{"identifier":"scope-log-index","description":"This scope permits to list all files and folders in the `$LOG`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG/"}]}},"scope-log-recursive":{"identifier":"scope-log-recursive","description":"This scope recursive access to the complete `$LOG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG/**"}]}},"scope-picture":{"identifier":"scope-picture","description":"This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE/*"}]}},"scope-picture-index":{"identifier":"scope-picture-index","description":"This scope permits to list all files and folders in the `$PICTURE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE/"}]}},"scope-picture-recursive":{"identifier":"scope-picture-recursive","description":"This scope recursive access to the complete `$PICTURE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE/**"}]}},"scope-public":{"identifier":"scope-public","description":"This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC/*"}]}},"scope-public-index":{"identifier":"scope-public-index","description":"This scope permits to list all files and folders in the `$PUBLIC`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC/"}]}},"scope-public-recursive":{"identifier":"scope-public-recursive","description":"This scope recursive access to the complete `$PUBLIC` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC/**"}]}},"scope-resource":{"identifier":"scope-resource","description":"This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE/*"}]}},"scope-resource-index":{"identifier":"scope-resource-index","description":"This scope permits to list all files and folders in the `$RESOURCE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE/"}]}},"scope-resource-recursive":{"identifier":"scope-resource-recursive","description":"This scope recursive access to the complete `$RESOURCE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE/**"}]}},"scope-runtime":{"identifier":"scope-runtime","description":"This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME/*"}]}},"scope-runtime-index":{"identifier":"scope-runtime-index","description":"This scope permits to list all files and folders in the `$RUNTIME`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME/"}]}},"scope-runtime-recursive":{"identifier":"scope-runtime-recursive","description":"This scope recursive access to the complete `$RUNTIME` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME/**"}]}},"scope-temp":{"identifier":"scope-temp","description":"This scope permits access to all files and list content of top level directories in the `$TEMP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP/*"}]}},"scope-temp-index":{"identifier":"scope-temp-index","description":"This scope permits to list all files and folders in the `$TEMP`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP/"}]}},"scope-temp-recursive":{"identifier":"scope-temp-recursive","description":"This scope recursive access to the complete `$TEMP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP/**"}]}},"scope-template":{"identifier":"scope-template","description":"This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE/*"}]}},"scope-template-index":{"identifier":"scope-template-index","description":"This scope permits to list all files and folders in the `$TEMPLATE`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE/"}]}},"scope-template-recursive":{"identifier":"scope-template-recursive","description":"This scope recursive access to the complete `$TEMPLATE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE/**"}]}},"scope-video":{"identifier":"scope-video","description":"This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO/*"}]}},"scope-video-index":{"identifier":"scope-video-index","description":"This scope permits to list all files and folders in the `$VIDEO`folder.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO/"}]}},"scope-video-recursive":{"identifier":"scope-video-recursive","description":"This scope recursive access to the complete `$VIDEO` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO/**"}]}},"write-all":{"identifier":"write-all","description":"This enables all write related commands without any pre-configured accessible paths.","commands":{"allow":["mkdir","create","copy_file","remove","rename","truncate","ftruncate","write","write_file","write_text_file"],"deny":[]}},"write-files":{"identifier":"write-files","description":"This enables all file write related commands without any pre-configured accessible paths.","commands":{"allow":["create","copy_file","remove","rename","truncate","ftruncate","write","write_file","write_text_file"],"deny":[]}}},"permission_sets":{"allow-app-meta":{"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"]},"allow-app-meta-recursive":{"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"]},"allow-app-read":{"identifier":"allow-app-read","description":"This allows non-recursive read access to the `$APP` folder.","permissions":["read-all","scope-app"]},"allow-app-read-recursive":{"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"]},"allow-app-write":{"identifier":"allow-app-write","description":"This allows non-recursive write access to the `$APP` folder.","permissions":["write-all","scope-app"]},"allow-app-write-recursive":{"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"]},"allow-appcache-meta":{"identifier":"allow-appcache-meta","description":"This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-appcache-index"]},"allow-appcache-meta-recursive":{"identifier":"allow-appcache-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-appcache-recursive"]},"allow-appcache-read":{"identifier":"allow-appcache-read","description":"This allows non-recursive read access to the `$APPCACHE` folder.","permissions":["read-all","scope-appcache"]},"allow-appcache-read-recursive":{"identifier":"allow-appcache-read-recursive","description":"This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.","permissions":["read-all","scope-appcache-recursive"]},"allow-appcache-write":{"identifier":"allow-appcache-write","description":"This allows non-recursive write access to the `$APPCACHE` folder.","permissions":["write-all","scope-appcache"]},"allow-appcache-write-recursive":{"identifier":"allow-appcache-write-recursive","description":"This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.","permissions":["write-all","scope-appcache-recursive"]},"allow-appconfig-meta":{"identifier":"allow-appconfig-meta","description":"This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-appconfig-index"]},"allow-appconfig-meta-recursive":{"identifier":"allow-appconfig-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-appconfig-recursive"]},"allow-appconfig-read":{"identifier":"allow-appconfig-read","description":"This allows non-recursive read access to the `$APPCONFIG` folder.","permissions":["read-all","scope-appconfig"]},"allow-appconfig-read-recursive":{"identifier":"allow-appconfig-read-recursive","description":"This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.","permissions":["read-all","scope-appconfig-recursive"]},"allow-appconfig-write":{"identifier":"allow-appconfig-write","description":"This allows non-recursive write access to the `$APPCONFIG` folder.","permissions":["write-all","scope-appconfig"]},"allow-appconfig-write-recursive":{"identifier":"allow-appconfig-write-recursive","description":"This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.","permissions":["write-all","scope-appconfig-recursive"]},"allow-appdata-meta":{"identifier":"allow-appdata-meta","description":"This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-appdata-index"]},"allow-appdata-meta-recursive":{"identifier":"allow-appdata-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-appdata-recursive"]},"allow-appdata-read":{"identifier":"allow-appdata-read","description":"This allows non-recursive read access to the `$APPDATA` folder.","permissions":["read-all","scope-appdata"]},"allow-appdata-read-recursive":{"identifier":"allow-appdata-read-recursive","description":"This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.","permissions":["read-all","scope-appdata-recursive"]},"allow-appdata-write":{"identifier":"allow-appdata-write","description":"This allows non-recursive write access to the `$APPDATA` folder.","permissions":["write-all","scope-appdata"]},"allow-appdata-write-recursive":{"identifier":"allow-appdata-write-recursive","description":"This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.","permissions":["write-all","scope-appdata-recursive"]},"allow-applocaldata-meta":{"identifier":"allow-applocaldata-meta","description":"This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-applocaldata-index"]},"allow-applocaldata-meta-recursive":{"identifier":"allow-applocaldata-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-applocaldata-recursive"]},"allow-applocaldata-read":{"identifier":"allow-applocaldata-read","description":"This allows non-recursive read access to the `$APPLOCALDATA` folder.","permissions":["read-all","scope-applocaldata"]},"allow-applocaldata-read-recursive":{"identifier":"allow-applocaldata-read-recursive","description":"This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.","permissions":["read-all","scope-applocaldata-recursive"]},"allow-applocaldata-write":{"identifier":"allow-applocaldata-write","description":"This allows non-recursive write access to the `$APPLOCALDATA` folder.","permissions":["write-all","scope-applocaldata"]},"allow-applocaldata-write-recursive":{"identifier":"allow-applocaldata-write-recursive","description":"This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.","permissions":["write-all","scope-applocaldata-recursive"]},"allow-applog-meta":{"identifier":"allow-applog-meta","description":"This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.","permissions":["read-meta","scope-applog-index"]},"allow-applog-meta-recursive":{"identifier":"allow-applog-meta-recursive","description":"This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.","permissions":["read-meta","scope-applog-recursive"]},"allow-applog-read":{"identifier":"allow-applog-read","description":"This allows non-recursive read access to the `$APPLOG` folder.","permissions":["read-all","scope-applog"]},"allow-applog-read-recursive":{"identifier":"allow-applog-read-recursive","description":"This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.","permissions":["read-all","scope-applog-recursive"]},"allow-applog-write":{"identifier":"allow-applog-write","description":"This allows non-recursive write access to the `$APPLOG` folder.","permissions":["write-all","scope-applog"]},"allow-applog-write-recursive":{"identifier":"allow-applog-write-recursive","description":"This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.","permissions":["write-all","scope-applog-recursive"]},"allow-audio-meta":{"identifier":"allow-audio-meta","description":"This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.","permissions":["read-meta","scope-audio-index"]},"allow-audio-meta-recursive":{"identifier":"allow-audio-meta-recursive","description":"This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.","permissions":["read-meta","scope-audio-recursive"]},"allow-audio-read":{"identifier":"allow-audio-read","description":"This allows non-recursive read access to the `$AUDIO` folder.","permissions":["read-all","scope-audio"]},"allow-audio-read-recursive":{"identifier":"allow-audio-read-recursive","description":"This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.","permissions":["read-all","scope-audio-recursive"]},"allow-audio-write":{"identifier":"allow-audio-write","description":"This allows non-recursive write access to the `$AUDIO` folder.","permissions":["write-all","scope-audio"]},"allow-audio-write-recursive":{"identifier":"allow-audio-write-recursive","description":"This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.","permissions":["write-all","scope-audio-recursive"]},"allow-cache-meta":{"identifier":"allow-cache-meta","description":"This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-cache-index"]},"allow-cache-meta-recursive":{"identifier":"allow-cache-meta-recursive","description":"This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.","permissions":["read-meta","scope-cache-recursive"]},"allow-cache-read":{"identifier":"allow-cache-read","description":"This allows non-recursive read access to the `$CACHE` folder.","permissions":["read-all","scope-cache"]},"allow-cache-read-recursive":{"identifier":"allow-cache-read-recursive","description":"This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.","permissions":["read-all","scope-cache-recursive"]},"allow-cache-write":{"identifier":"allow-cache-write","description":"This allows non-recursive write access to the `$CACHE` folder.","permissions":["write-all","scope-cache"]},"allow-cache-write-recursive":{"identifier":"allow-cache-write-recursive","description":"This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.","permissions":["write-all","scope-cache-recursive"]},"allow-config-meta":{"identifier":"allow-config-meta","description":"This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-config-index"]},"allow-config-meta-recursive":{"identifier":"allow-config-meta-recursive","description":"This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.","permissions":["read-meta","scope-config-recursive"]},"allow-config-read":{"identifier":"allow-config-read","description":"This allows non-recursive read access to the `$CONFIG` folder.","permissions":["read-all","scope-config"]},"allow-config-read-recursive":{"identifier":"allow-config-read-recursive","description":"This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.","permissions":["read-all","scope-config-recursive"]},"allow-config-write":{"identifier":"allow-config-write","description":"This allows non-recursive write access to the `$CONFIG` folder.","permissions":["write-all","scope-config"]},"allow-config-write-recursive":{"identifier":"allow-config-write-recursive","description":"This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.","permissions":["write-all","scope-config-recursive"]},"allow-data-meta":{"identifier":"allow-data-meta","description":"This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.","permissions":["read-meta","scope-data-index"]},"allow-data-meta-recursive":{"identifier":"allow-data-meta-recursive","description":"This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.","permissions":["read-meta","scope-data-recursive"]},"allow-data-read":{"identifier":"allow-data-read","description":"This allows non-recursive read access to the `$DATA` folder.","permissions":["read-all","scope-data"]},"allow-data-read-recursive":{"identifier":"allow-data-read-recursive","description":"This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.","permissions":["read-all","scope-data-recursive"]},"allow-data-write":{"identifier":"allow-data-write","description":"This allows non-recursive write access to the `$DATA` folder.","permissions":["write-all","scope-data"]},"allow-data-write-recursive":{"identifier":"allow-data-write-recursive","description":"This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.","permissions":["write-all","scope-data-recursive"]},"allow-desktop-meta":{"identifier":"allow-desktop-meta","description":"This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.","permissions":["read-meta","scope-desktop-index"]},"allow-desktop-meta-recursive":{"identifier":"allow-desktop-meta-recursive","description":"This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.","permissions":["read-meta","scope-desktop-recursive"]},"allow-desktop-read":{"identifier":"allow-desktop-read","description":"This allows non-recursive read access to the `$DESKTOP` folder.","permissions":["read-all","scope-desktop"]},"allow-desktop-read-recursive":{"identifier":"allow-desktop-read-recursive","description":"This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.","permissions":["read-all","scope-desktop-recursive"]},"allow-desktop-write":{"identifier":"allow-desktop-write","description":"This allows non-recursive write access to the `$DESKTOP` folder.","permissions":["write-all","scope-desktop"]},"allow-desktop-write-recursive":{"identifier":"allow-desktop-write-recursive","description":"This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.","permissions":["write-all","scope-desktop-recursive"]},"allow-document-meta":{"identifier":"allow-document-meta","description":"This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.","permissions":["read-meta","scope-document-index"]},"allow-document-meta-recursive":{"identifier":"allow-document-meta-recursive","description":"This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.","permissions":["read-meta","scope-document-recursive"]},"allow-document-read":{"identifier":"allow-document-read","description":"This allows non-recursive read access to the `$DOCUMENT` folder.","permissions":["read-all","scope-document"]},"allow-document-read-recursive":{"identifier":"allow-document-read-recursive","description":"This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.","permissions":["read-all","scope-document-recursive"]},"allow-document-write":{"identifier":"allow-document-write","description":"This allows non-recursive write access to the `$DOCUMENT` folder.","permissions":["write-all","scope-document"]},"allow-document-write-recursive":{"identifier":"allow-document-write-recursive","description":"This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.","permissions":["write-all","scope-document-recursive"]},"allow-download-meta":{"identifier":"allow-download-meta","description":"This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.","permissions":["read-meta","scope-download-index"]},"allow-download-meta-recursive":{"identifier":"allow-download-meta-recursive","description":"This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.","permissions":["read-meta","scope-download-recursive"]},"allow-download-read":{"identifier":"allow-download-read","description":"This allows non-recursive read access to the `$DOWNLOAD` folder.","permissions":["read-all","scope-download"]},"allow-download-read-recursive":{"identifier":"allow-download-read-recursive","description":"This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.","permissions":["read-all","scope-download-recursive"]},"allow-download-write":{"identifier":"allow-download-write","description":"This allows non-recursive write access to the `$DOWNLOAD` folder.","permissions":["write-all","scope-download"]},"allow-download-write-recursive":{"identifier":"allow-download-write-recursive","description":"This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.","permissions":["write-all","scope-download-recursive"]},"allow-exe-meta":{"identifier":"allow-exe-meta","description":"This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.","permissions":["read-meta","scope-exe-index"]},"allow-exe-meta-recursive":{"identifier":"allow-exe-meta-recursive","description":"This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.","permissions":["read-meta","scope-exe-recursive"]},"allow-exe-read":{"identifier":"allow-exe-read","description":"This allows non-recursive read access to the `$EXE` folder.","permissions":["read-all","scope-exe"]},"allow-exe-read-recursive":{"identifier":"allow-exe-read-recursive","description":"This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.","permissions":["read-all","scope-exe-recursive"]},"allow-exe-write":{"identifier":"allow-exe-write","description":"This allows non-recursive write access to the `$EXE` folder.","permissions":["write-all","scope-exe"]},"allow-exe-write-recursive":{"identifier":"allow-exe-write-recursive","description":"This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.","permissions":["write-all","scope-exe-recursive"]},"allow-font-meta":{"identifier":"allow-font-meta","description":"This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.","permissions":["read-meta","scope-font-index"]},"allow-font-meta-recursive":{"identifier":"allow-font-meta-recursive","description":"This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.","permissions":["read-meta","scope-font-recursive"]},"allow-font-read":{"identifier":"allow-font-read","description":"This allows non-recursive read access to the `$FONT` folder.","permissions":["read-all","scope-font"]},"allow-font-read-recursive":{"identifier":"allow-font-read-recursive","description":"This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.","permissions":["read-all","scope-font-recursive"]},"allow-font-write":{"identifier":"allow-font-write","description":"This allows non-recursive write access to the `$FONT` folder.","permissions":["write-all","scope-font"]},"allow-font-write-recursive":{"identifier":"allow-font-write-recursive","description":"This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.","permissions":["write-all","scope-font-recursive"]},"allow-home-meta":{"identifier":"allow-home-meta","description":"This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.","permissions":["read-meta","scope-home-index"]},"allow-home-meta-recursive":{"identifier":"allow-home-meta-recursive","description":"This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.","permissions":["read-meta","scope-home-recursive"]},"allow-home-read":{"identifier":"allow-home-read","description":"This allows non-recursive read access to the `$HOME` folder.","permissions":["read-all","scope-home"]},"allow-home-read-recursive":{"identifier":"allow-home-read-recursive","description":"This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.","permissions":["read-all","scope-home-recursive"]},"allow-home-write":{"identifier":"allow-home-write","description":"This allows non-recursive write access to the `$HOME` folder.","permissions":["write-all","scope-home"]},"allow-home-write-recursive":{"identifier":"allow-home-write-recursive","description":"This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.","permissions":["write-all","scope-home-recursive"]},"allow-localdata-meta":{"identifier":"allow-localdata-meta","description":"This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-localdata-index"]},"allow-localdata-meta-recursive":{"identifier":"allow-localdata-meta-recursive","description":"This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.","permissions":["read-meta","scope-localdata-recursive"]},"allow-localdata-read":{"identifier":"allow-localdata-read","description":"This allows non-recursive read access to the `$LOCALDATA` folder.","permissions":["read-all","scope-localdata"]},"allow-localdata-read-recursive":{"identifier":"allow-localdata-read-recursive","description":"This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.","permissions":["read-all","scope-localdata-recursive"]},"allow-localdata-write":{"identifier":"allow-localdata-write","description":"This allows non-recursive write access to the `$LOCALDATA` folder.","permissions":["write-all","scope-localdata"]},"allow-localdata-write-recursive":{"identifier":"allow-localdata-write-recursive","description":"This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.","permissions":["write-all","scope-localdata-recursive"]},"allow-log-meta":{"identifier":"allow-log-meta","description":"This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.","permissions":["read-meta","scope-log-index"]},"allow-log-meta-recursive":{"identifier":"allow-log-meta-recursive","description":"This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.","permissions":["read-meta","scope-log-recursive"]},"allow-log-read":{"identifier":"allow-log-read","description":"This allows non-recursive read access to the `$LOG` folder.","permissions":["read-all","scope-log"]},"allow-log-read-recursive":{"identifier":"allow-log-read-recursive","description":"This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.","permissions":["read-all","scope-log-recursive"]},"allow-log-write":{"identifier":"allow-log-write","description":"This allows non-recursive write access to the `$LOG` folder.","permissions":["write-all","scope-log"]},"allow-log-write-recursive":{"identifier":"allow-log-write-recursive","description":"This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.","permissions":["write-all","scope-log-recursive"]},"allow-picture-meta":{"identifier":"allow-picture-meta","description":"This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.","permissions":["read-meta","scope-picture-index"]},"allow-picture-meta-recursive":{"identifier":"allow-picture-meta-recursive","description":"This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.","permissions":["read-meta","scope-picture-recursive"]},"allow-picture-read":{"identifier":"allow-picture-read","description":"This allows non-recursive read access to the `$PICTURE` folder.","permissions":["read-all","scope-picture"]},"allow-picture-read-recursive":{"identifier":"allow-picture-read-recursive","description":"This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.","permissions":["read-all","scope-picture-recursive"]},"allow-picture-write":{"identifier":"allow-picture-write","description":"This allows non-recursive write access to the `$PICTURE` folder.","permissions":["write-all","scope-picture"]},"allow-picture-write-recursive":{"identifier":"allow-picture-write-recursive","description":"This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.","permissions":["write-all","scope-picture-recursive"]},"allow-public-meta":{"identifier":"allow-public-meta","description":"This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.","permissions":["read-meta","scope-public-index"]},"allow-public-meta-recursive":{"identifier":"allow-public-meta-recursive","description":"This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.","permissions":["read-meta","scope-public-recursive"]},"allow-public-read":{"identifier":"allow-public-read","description":"This allows non-recursive read access to the `$PUBLIC` folder.","permissions":["read-all","scope-public"]},"allow-public-read-recursive":{"identifier":"allow-public-read-recursive","description":"This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.","permissions":["read-all","scope-public-recursive"]},"allow-public-write":{"identifier":"allow-public-write","description":"This allows non-recursive write access to the `$PUBLIC` folder.","permissions":["write-all","scope-public"]},"allow-public-write-recursive":{"identifier":"allow-public-write-recursive","description":"This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.","permissions":["write-all","scope-public-recursive"]},"allow-resource-meta":{"identifier":"allow-resource-meta","description":"This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.","permissions":["read-meta","scope-resource-index"]},"allow-resource-meta-recursive":{"identifier":"allow-resource-meta-recursive","description":"This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.","permissions":["read-meta","scope-resource-recursive"]},"allow-resource-read":{"identifier":"allow-resource-read","description":"This allows non-recursive read access to the `$RESOURCE` folder.","permissions":["read-all","scope-resource"]},"allow-resource-read-recursive":{"identifier":"allow-resource-read-recursive","description":"This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.","permissions":["read-all","scope-resource-recursive"]},"allow-resource-write":{"identifier":"allow-resource-write","description":"This allows non-recursive write access to the `$RESOURCE` folder.","permissions":["write-all","scope-resource"]},"allow-resource-write-recursive":{"identifier":"allow-resource-write-recursive","description":"This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.","permissions":["write-all","scope-resource-recursive"]},"allow-runtime-meta":{"identifier":"allow-runtime-meta","description":"This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.","permissions":["read-meta","scope-runtime-index"]},"allow-runtime-meta-recursive":{"identifier":"allow-runtime-meta-recursive","description":"This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.","permissions":["read-meta","scope-runtime-recursive"]},"allow-runtime-read":{"identifier":"allow-runtime-read","description":"This allows non-recursive read access to the `$RUNTIME` folder.","permissions":["read-all","scope-runtime"]},"allow-runtime-read-recursive":{"identifier":"allow-runtime-read-recursive","description":"This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.","permissions":["read-all","scope-runtime-recursive"]},"allow-runtime-write":{"identifier":"allow-runtime-write","description":"This allows non-recursive write access to the `$RUNTIME` folder.","permissions":["write-all","scope-runtime"]},"allow-runtime-write-recursive":{"identifier":"allow-runtime-write-recursive","description":"This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.","permissions":["write-all","scope-runtime-recursive"]},"allow-temp-meta":{"identifier":"allow-temp-meta","description":"This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.","permissions":["read-meta","scope-temp-index"]},"allow-temp-meta-recursive":{"identifier":"allow-temp-meta-recursive","description":"This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.","permissions":["read-meta","scope-temp-recursive"]},"allow-temp-read":{"identifier":"allow-temp-read","description":"This allows non-recursive read access to the `$TEMP` folder.","permissions":["read-all","scope-temp"]},"allow-temp-read-recursive":{"identifier":"allow-temp-read-recursive","description":"This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.","permissions":["read-all","scope-temp-recursive"]},"allow-temp-write":{"identifier":"allow-temp-write","description":"This allows non-recursive write access to the `$TEMP` folder.","permissions":["write-all","scope-temp"]},"allow-temp-write-recursive":{"identifier":"allow-temp-write-recursive","description":"This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.","permissions":["write-all","scope-temp-recursive"]},"allow-template-meta":{"identifier":"allow-template-meta","description":"This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.","permissions":["read-meta","scope-template-index"]},"allow-template-meta-recursive":{"identifier":"allow-template-meta-recursive","description":"This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.","permissions":["read-meta","scope-template-recursive"]},"allow-template-read":{"identifier":"allow-template-read","description":"This allows non-recursive read access to the `$TEMPLATE` folder.","permissions":["read-all","scope-template"]},"allow-template-read-recursive":{"identifier":"allow-template-read-recursive","description":"This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.","permissions":["read-all","scope-template-recursive"]},"allow-template-write":{"identifier":"allow-template-write","description":"This allows non-recursive write access to the `$TEMPLATE` folder.","permissions":["write-all","scope-template"]},"allow-template-write-recursive":{"identifier":"allow-template-write-recursive","description":"This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.","permissions":["write-all","scope-template-recursive"]},"allow-video-meta":{"identifier":"allow-video-meta","description":"This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.","permissions":["read-meta","scope-video-index"]},"allow-video-meta-recursive":{"identifier":"allow-video-meta-recursive","description":"This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.","permissions":["read-meta","scope-video-recursive"]},"allow-video-read":{"identifier":"allow-video-read","description":"This allows non-recursive read access to the `$VIDEO` folder.","permissions":["read-all","scope-video"]},"allow-video-read-recursive":{"identifier":"allow-video-read-recursive","description":"This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.","permissions":["read-all","scope-video-recursive"]},"allow-video-write":{"identifier":"allow-video-write","description":"This allows non-recursive write access to the `$VIDEO` folder.","permissions":["write-all","scope-video"]},"allow-video-write-recursive":{"identifier":"allow-video-write-recursive","description":"This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.","permissions":["write-all","scope-video-recursive"]},"deny-default":{"identifier":"deny-default","description":"This denies access to dangerous Tauri relevant files and folders by default.","permissions":["deny-webview-data-linux","deny-webview-data-windows"]}},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"description":"FS scope path.","type":"string"},{"properties":{"path":{"description":"FS scope path.","type":"string"}},"required":["path"],"type":"object"}],"description":"FS scope entry.","title":"FsScopeEntry"}},"image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"log":{"default_permission":{"identifier":"default","description":"Allows the log command","permissions":["allow-log"]},"permissions":{"allow-log":{"identifier":"allow-log","description":"Enables the log command without any pre-configured scope.","commands":{"allow":["log"],"deny":[]}},"deny-log":{"identifier":"deny-log","description":"Denies the log command without any pre-configured scope.","commands":{"allow":[],"deny":["log"]}}},"permission_sets":{},"global_scope_schema":null},"menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":[]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"os":{"default_permission":null,"permissions":{"allow-arch":{"identifier":"allow-arch","description":"Enables the arch command without any pre-configured scope.","commands":{"allow":["arch"],"deny":[]}},"allow-exe-extension":{"identifier":"allow-exe-extension","description":"Enables the exe_extension command without any pre-configured scope.","commands":{"allow":["exe_extension"],"deny":[]}},"allow-family":{"identifier":"allow-family","description":"Enables the family command without any pre-configured scope.","commands":{"allow":["family"],"deny":[]}},"allow-hostname":{"identifier":"allow-hostname","description":"Enables the hostname command without any pre-configured scope.","commands":{"allow":["hostname"],"deny":[]}},"allow-locale":{"identifier":"allow-locale","description":"Enables the locale command without any pre-configured scope.","commands":{"allow":["locale"],"deny":[]}},"allow-os-type":{"identifier":"allow-os-type","description":"Enables the os_type command without any pre-configured scope.","commands":{"allow":["os_type"],"deny":[]}},"allow-platform":{"identifier":"allow-platform","description":"Enables the platform command without any pre-configured scope.","commands":{"allow":["platform"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-arch":{"identifier":"deny-arch","description":"Denies the arch command without any pre-configured scope.","commands":{"allow":[],"deny":["arch"]}},"deny-exe-extension":{"identifier":"deny-exe-extension","description":"Denies the exe_extension command without any pre-configured scope.","commands":{"allow":[],"deny":["exe_extension"]}},"deny-family":{"identifier":"deny-family","description":"Denies the family command without any pre-configured scope.","commands":{"allow":[],"deny":["family"]}},"deny-hostname":{"identifier":"deny-hostname","description":"Denies the hostname command without any pre-configured scope.","commands":{"allow":[],"deny":["hostname"]}},"deny-locale":{"identifier":"deny-locale","description":"Denies the locale command without any pre-configured scope.","commands":{"allow":[],"deny":["locale"]}},"deny-os-type":{"identifier":"deny-os-type","description":"Denies the os_type command without any pre-configured scope.","commands":{"allow":[],"deny":["os_type"]}},"deny-platform":{"identifier":"deny-platform","description":"Denies the platform command without any pre-configured scope.","commands":{"allow":[],"deny":["platform"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":null,"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","definitions":{"ShellAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\n[regex]: https://docs.rs/regex/latest/regex/#syntax","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"A command allowed to be executed by the webview API.","properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellAllowedArgs"}],"description":"The allowed arguments for the command execution."},"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`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["args","cmd","name","sidecar"],"title":"Entry","type":"object"}},"tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":[]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"updater":{"default_permission":{"identifier":"default","description":"Allows checking for new updates and installing them","permissions":["allow-check","allow-download","allow-install","allow-download-and-install"]},"permissions":{"allow-check":{"identifier":"allow-check","description":"Enables the check command without any pre-configured scope.","commands":{"allow":["check"],"deny":[]}},"allow-download":{"identifier":"allow-download","description":"Enables the download command without any pre-configured scope.","commands":{"allow":["download"],"deny":[]}},"allow-download-and-install":{"identifier":"allow-download-and-install","description":"Enables the download_and_install command without any pre-configured scope.","commands":{"allow":["download_and_install"],"deny":[]}},"allow-install":{"identifier":"allow-install","description":"Enables the install command without any pre-configured scope.","commands":{"allow":["install"],"deny":[]}},"deny-check":{"identifier":"deny-check","description":"Denies the check command without any pre-configured scope.","commands":{"allow":[],"deny":["check"]}},"deny-download":{"identifier":"deny-download","description":"Denies the download command without any pre-configured scope.","commands":{"allow":[],"deny":["download"]}},"deny-download-and-install":{"identifier":"deny-download-and-install","description":"Denies the download_and_install command without any pre-configured scope.","commands":{"allow":[],"deny":["download_and_install"]}},"deny-install":{"identifier":"deny-install","description":"Denies the install command without any pre-configured scope.","commands":{"allow":[],"deny":["install"]}}},"permission_sets":{},"global_scope_schema":null},"webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"window-state":{"default_permission":null,"permissions":{"allow-filename":{"identifier":"allow-filename","description":"Enables the filename command without any pre-configured scope.","commands":{"allow":["filename"],"deny":[]}},"allow-restore-state":{"identifier":"allow-restore-state","description":"Enables the restore_state command without any pre-configured scope.","commands":{"allow":["restore_state"],"deny":[]}},"allow-save-window-state":{"identifier":"allow-save-window-state","description":"Enables the save_window_state command without any pre-configured scope.","commands":{"allow":["save_window_state"],"deny":[]}},"deny-filename":{"identifier":"deny-filename","description":"Denies the filename command without any pre-configured scope.","commands":{"allow":[],"deny":["filename"]}},"deny-restore-state":{"identifier":"deny-restore-state","description":"Denies the restore_state command without any pre-configured scope.","commands":{"allow":[],"deny":["restore_state"]}},"deny-save-window-state":{"identifier":"deny-save-window-state","description":"Denies the save_window_state command without any pre-configured scope.","commands":{"allow":[],"deny":["save_window_state"]}}},"permission_sets":{},"global_scope_schema":null}} \ No newline at end of file diff --git a/src-tauri/gen/schemas/capabilities.json b/src-tauri/gen/schemas/capabilities.json index b09e85af..192c449c 100644 --- a/src-tauri/gen/schemas/capabilities.json +++ b/src-tauri/gen/schemas/capabilities.json @@ -1 +1 @@ -{"main":{"identifier":"main","description":"Main permissions","local":true,"windows":["*"],"permissions":["os:allow-os-type","event:allow-emit","clipboard-manager:allow-write-text","clipboard-manager:allow-read-text","dialog:allow-open","dialog:allow-save","event:allow-listen","event:allow-unlisten","fs:allow-read-file","fs:allow-read-text-file",{"identifier":"fs:scope","allow":[{"path":"$APPDATA"},{"path":"$APPDATA/**"}]},"shell:allow-open",{"identifier":"shell:allow-execute","allow":[{"args":true,"name":"protoc","sidecar":true}]},"window:allow-close","window:allow-is-fullscreen","window:allow-maximize","window:allow-minimize","window:allow-toggle-maximize","window:allow-set-decorations","window:allow-set-title","window:allow-start-dragging","window:allow-unmaximize","clipboard-manager:allow-read-text","clipboard-manager:allow-write-text"]}} \ No newline at end of file +{"main":{"identifier":"main","description":"Main permissions","local":true,"windows":["*"],"permissions":["os:allow-os-type","event:allow-emit","clipboard-manager:allow-write-text","clipboard-manager:allow-read-text","dialog:allow-open","dialog:allow-save","event:allow-listen","event:allow-unlisten","fs:allow-read-file","fs:allow-read-text-file",{"identifier":"fs:scope","allow":[{"path":"$APPDATA"},{"path":"$APPDATA/**"}]},"shell:allow-open",{"identifier":"shell:allow-execute","allow":[{"args":true,"name":"protoc","sidecar":true}]},"webview:allow-set-webview-zoom","window:allow-close","window:allow-is-fullscreen","window:allow-maximize","window:allow-minimize","window:allow-toggle-maximize","window:allow-set-decorations","window:allow-set-title","window:allow-start-dragging","window:allow-unmaximize","window:allow-theme","clipboard-manager:allow-read-text","clipboard-manager:allow-write-text"]}} \ No newline at end of file diff --git a/src-tauri/gen/schemas/desktop-schema.json b/src-tauri/gen/schemas/desktop-schema.json index e35feebf..4776f4b7 100644 --- a/src-tauri/gen/schemas/desktop-schema.json +++ b/src-tauri/gen/schemas/desktop-schema.json @@ -2216,6 +2216,13 @@ "shell:allow-open" ] }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-spawn" + ] + }, { "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", "type": "string", @@ -2244,6 +2251,13 @@ "shell:deny-open" ] }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-spawn" + ] + }, { "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", "type": "string", @@ -2498,6 +2512,69 @@ "clipboard-manager:deny-write-text" ] }, + { + "description": "deep-link:default -> Allows reading the opened deep link via the get_current command", + "type": "string", + "enum": [ + "deep-link:default" + ] + }, + { + "description": "deep-link:allow-get-current -> Enables the get_current command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-get-current" + ] + }, + { + "description": "deep-link:allow-is-registered -> Enables the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-is-registered" + ] + }, + { + "description": "deep-link:allow-register -> Enables the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-register" + ] + }, + { + "description": "deep-link:allow-unregister -> Enables the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-unregister" + ] + }, + { + "description": "deep-link:deny-get-current -> Denies the get_current command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-get-current" + ] + }, + { + "description": "deep-link:deny-is-registered -> Denies the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-is-registered" + ] + }, + { + "description": "deep-link:deny-register -> Denies the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-register" + ] + }, + { + "description": "deep-link:deny-unregister -> Denies the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-unregister" + ] + }, { "type": "string", "enum": [ @@ -5323,6 +5400,13 @@ "shell:allow-open" ] }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-spawn" + ] + }, { "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", "type": "string", @@ -5351,6 +5435,13 @@ "shell:deny-open" ] }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-spawn" + ] + }, { "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", "type": "string", @@ -5533,6 +5624,13 @@ "updater:allow-check" ] }, + { + "description": "updater:allow-download -> Enables the download command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-download" + ] + }, { "description": "updater:allow-download-and-install -> Enables the download_and_install command without any pre-configured scope.", "type": "string", @@ -5540,6 +5638,13 @@ "updater:allow-download-and-install" ] }, + { + "description": "updater:allow-install -> Enables the install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-install" + ] + }, { "description": "updater:deny-check -> Denies the check command without any pre-configured scope.", "type": "string", @@ -5547,6 +5652,13 @@ "updater:deny-check" ] }, + { + "description": "updater:deny-download -> Denies the download command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-download" + ] + }, { "description": "updater:deny-download-and-install -> Denies the download_and_install command without any pre-configured scope.", "type": "string", @@ -5554,6 +5666,13 @@ "updater:deny-download-and-install" ] }, + { + "description": "updater:deny-install -> Denies the install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-install" + ] + }, { "description": "webview:default -> Default permissions for the plugin.", "type": "string", @@ -5897,6 +6016,13 @@ "window:allow-minimize" ] }, + { + "description": "window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-monitor-from-point" + ] + }, { "description": "window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", "type": "string", @@ -6331,6 +6457,13 @@ "window:deny-minimize" ] }, + { + "description": "window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-monitor-from-point" + ] + }, { "description": "window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", "type": "string", diff --git a/src-tauri/gen/schemas/linux-schema.json b/src-tauri/gen/schemas/linux-schema.json index e35feebf..4776f4b7 100644 --- a/src-tauri/gen/schemas/linux-schema.json +++ b/src-tauri/gen/schemas/linux-schema.json @@ -2216,6 +2216,13 @@ "shell:allow-open" ] }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-spawn" + ] + }, { "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", "type": "string", @@ -2244,6 +2251,13 @@ "shell:deny-open" ] }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-spawn" + ] + }, { "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", "type": "string", @@ -2498,6 +2512,69 @@ "clipboard-manager:deny-write-text" ] }, + { + "description": "deep-link:default -> Allows reading the opened deep link via the get_current command", + "type": "string", + "enum": [ + "deep-link:default" + ] + }, + { + "description": "deep-link:allow-get-current -> Enables the get_current command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-get-current" + ] + }, + { + "description": "deep-link:allow-is-registered -> Enables the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-is-registered" + ] + }, + { + "description": "deep-link:allow-register -> Enables the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-register" + ] + }, + { + "description": "deep-link:allow-unregister -> Enables the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-unregister" + ] + }, + { + "description": "deep-link:deny-get-current -> Denies the get_current command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-get-current" + ] + }, + { + "description": "deep-link:deny-is-registered -> Denies the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-is-registered" + ] + }, + { + "description": "deep-link:deny-register -> Denies the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-register" + ] + }, + { + "description": "deep-link:deny-unregister -> Denies the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-unregister" + ] + }, { "type": "string", "enum": [ @@ -5323,6 +5400,13 @@ "shell:allow-open" ] }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-spawn" + ] + }, { "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", "type": "string", @@ -5351,6 +5435,13 @@ "shell:deny-open" ] }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-spawn" + ] + }, { "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", "type": "string", @@ -5533,6 +5624,13 @@ "updater:allow-check" ] }, + { + "description": "updater:allow-download -> Enables the download command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-download" + ] + }, { "description": "updater:allow-download-and-install -> Enables the download_and_install command without any pre-configured scope.", "type": "string", @@ -5540,6 +5638,13 @@ "updater:allow-download-and-install" ] }, + { + "description": "updater:allow-install -> Enables the install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-install" + ] + }, { "description": "updater:deny-check -> Denies the check command without any pre-configured scope.", "type": "string", @@ -5547,6 +5652,13 @@ "updater:deny-check" ] }, + { + "description": "updater:deny-download -> Denies the download command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-download" + ] + }, { "description": "updater:deny-download-and-install -> Denies the download_and_install command without any pre-configured scope.", "type": "string", @@ -5554,6 +5666,13 @@ "updater:deny-download-and-install" ] }, + { + "description": "updater:deny-install -> Denies the install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-install" + ] + }, { "description": "webview:default -> Default permissions for the plugin.", "type": "string", @@ -5897,6 +6016,13 @@ "window:allow-minimize" ] }, + { + "description": "window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-monitor-from-point" + ] + }, { "description": "window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", "type": "string", @@ -6331,6 +6457,13 @@ "window:deny-minimize" ] }, + { + "description": "window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-monitor-from-point" + ] + }, { "description": "window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", "type": "string", diff --git a/src-tauri/gen/schemas/macOS-schema.json b/src-tauri/gen/schemas/macOS-schema.json index e35feebf..4776f4b7 100644 --- a/src-tauri/gen/schemas/macOS-schema.json +++ b/src-tauri/gen/schemas/macOS-schema.json @@ -2216,6 +2216,13 @@ "shell:allow-open" ] }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-spawn" + ] + }, { "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", "type": "string", @@ -2244,6 +2251,13 @@ "shell:deny-open" ] }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-spawn" + ] + }, { "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", "type": "string", @@ -2498,6 +2512,69 @@ "clipboard-manager:deny-write-text" ] }, + { + "description": "deep-link:default -> Allows reading the opened deep link via the get_current command", + "type": "string", + "enum": [ + "deep-link:default" + ] + }, + { + "description": "deep-link:allow-get-current -> Enables the get_current command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-get-current" + ] + }, + { + "description": "deep-link:allow-is-registered -> Enables the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-is-registered" + ] + }, + { + "description": "deep-link:allow-register -> Enables the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-register" + ] + }, + { + "description": "deep-link:allow-unregister -> Enables the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-unregister" + ] + }, + { + "description": "deep-link:deny-get-current -> Denies the get_current command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-get-current" + ] + }, + { + "description": "deep-link:deny-is-registered -> Denies the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-is-registered" + ] + }, + { + "description": "deep-link:deny-register -> Denies the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-register" + ] + }, + { + "description": "deep-link:deny-unregister -> Denies the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-unregister" + ] + }, { "type": "string", "enum": [ @@ -5323,6 +5400,13 @@ "shell:allow-open" ] }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-spawn" + ] + }, { "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", "type": "string", @@ -5351,6 +5435,13 @@ "shell:deny-open" ] }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-spawn" + ] + }, { "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", "type": "string", @@ -5533,6 +5624,13 @@ "updater:allow-check" ] }, + { + "description": "updater:allow-download -> Enables the download command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-download" + ] + }, { "description": "updater:allow-download-and-install -> Enables the download_and_install command without any pre-configured scope.", "type": "string", @@ -5540,6 +5638,13 @@ "updater:allow-download-and-install" ] }, + { + "description": "updater:allow-install -> Enables the install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-install" + ] + }, { "description": "updater:deny-check -> Denies the check command without any pre-configured scope.", "type": "string", @@ -5547,6 +5652,13 @@ "updater:deny-check" ] }, + { + "description": "updater:deny-download -> Denies the download command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-download" + ] + }, { "description": "updater:deny-download-and-install -> Denies the download_and_install command without any pre-configured scope.", "type": "string", @@ -5554,6 +5666,13 @@ "updater:deny-download-and-install" ] }, + { + "description": "updater:deny-install -> Denies the install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-install" + ] + }, { "description": "webview:default -> Default permissions for the plugin.", "type": "string", @@ -5897,6 +6016,13 @@ "window:allow-minimize" ] }, + { + "description": "window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-monitor-from-point" + ] + }, { "description": "window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", "type": "string", @@ -6331,6 +6457,13 @@ "window:deny-minimize" ] }, + { + "description": "window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-monitor-from-point" + ] + }, { "description": "window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", "type": "string", diff --git a/src-tauri/gen/schemas/windows-schema.json b/src-tauri/gen/schemas/windows-schema.json new file mode 100644 index 00000000..4776f4b7 --- /dev/null +++ b/src-tauri/gen/schemas/windows-schema.json @@ -0,0 +1,6924 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "a grouping and boundary mechanism developers can use to separate windows or plugins functionality from each other at runtime.\n\nIf a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create trust groups and reduce impact of vulnerabilities in certain plugins or windows. Windows can be added to a capability by exact name or glob patterns like *, admin-* or main-window.", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.", + "type": "string" + }, + "description": { + "description": "Description of the capability.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that uses this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that uses this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability. Must include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`.", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + } + }, + "platforms": { + "description": "Target platforms this capability applies. By default all platforms are affected by this capability.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n# Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "oneOf": [ + { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "identifier": { + "oneOf": [ + { + "description": "fs:default -> # Tauri `fs` default permissions\n\nThis configuration file defines the default permissions granted\nto the filesystem.\n\n### Granted Permissions\n\nThis default permission set enables all read-related commands and\nallows access to the `$APP` folder and sub directories created in it.\nThe location of the `$APP` folder depends on the operating system,\nwhere the application is run.\n\nIn general the `$APP` folder needs to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\n### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n", + "type": "string", + "enum": [ + "fs:default" + ] + }, + { + "description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, 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.", + "type": "string", + "enum": [ + "fs:allow-app-meta-recursive" + ] + }, + { + "description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.", + "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.", + "type": "string", + "enum": [ + "fs:allow-app-read-recursive" + ] + }, + { + "description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.", + "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.", + "type": "string", + "enum": [ + "fs:allow-app-write-recursive" + ] + }, + { + "description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appcache-meta" + ] + }, + { + "description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appcache-meta-recursive" + ] + }, + { + "description": "fs:allow-appcache-read -> This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "enum": [ + "fs:allow-appcache-read" + ] + }, + { + "description": "fs:allow-appcache-read-recursive -> This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appcache-read-recursive" + ] + }, + { + "description": "fs:allow-appcache-write -> This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "enum": [ + "fs:allow-appcache-write" + ] + }, + { + "description": "fs:allow-appcache-write-recursive -> This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appcache-write-recursive" + ] + }, + { + "description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appconfig-meta" + ] + }, + { + "description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appconfig-meta-recursive" + ] + }, + { + "description": "fs:allow-appconfig-read -> This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "enum": [ + "fs:allow-appconfig-read" + ] + }, + { + "description": "fs:allow-appconfig-read-recursive -> This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appconfig-read-recursive" + ] + }, + { + "description": "fs:allow-appconfig-write -> This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "enum": [ + "fs:allow-appconfig-write" + ] + }, + { + "description": "fs:allow-appconfig-write-recursive -> This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appconfig-write-recursive" + ] + }, + { + "description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appdata-meta" + ] + }, + { + "description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appdata-meta-recursive" + ] + }, + { + "description": "fs:allow-appdata-read -> This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-appdata-read" + ] + }, + { + "description": "fs:allow-appdata-read-recursive -> This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appdata-read-recursive" + ] + }, + { + "description": "fs:allow-appdata-write -> This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-appdata-write" + ] + }, + { + "description": "fs:allow-appdata-write-recursive -> This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appdata-write-recursive" + ] + }, + { + "description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-meta" + ] + }, + { + "description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-meta-recursive" + ] + }, + { + "description": "fs:allow-applocaldata-read -> This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-read" + ] + }, + { + "description": "fs:allow-applocaldata-read-recursive -> This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-read-recursive" + ] + }, + { + "description": "fs:allow-applocaldata-write -> This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-write" + ] + }, + { + "description": "fs:allow-applocaldata-write-recursive -> This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-write-recursive" + ] + }, + { + "description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-applog-meta" + ] + }, + { + "description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-applog-meta-recursive" + ] + }, + { + "description": "fs:allow-applog-read -> This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "enum": [ + "fs:allow-applog-read" + ] + }, + { + "description": "fs:allow-applog-read-recursive -> This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-applog-read-recursive" + ] + }, + { + "description": "fs:allow-applog-write -> This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "enum": [ + "fs:allow-applog-write" + ] + }, + { + "description": "fs:allow-applog-write-recursive -> This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-applog-write-recursive" + ] + }, + { + "description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-audio-meta" + ] + }, + { + "description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-audio-meta-recursive" + ] + }, + { + "description": "fs:allow-audio-read -> This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "enum": [ + "fs:allow-audio-read" + ] + }, + { + "description": "fs:allow-audio-read-recursive -> This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-audio-read-recursive" + ] + }, + { + "description": "fs:allow-audio-write -> This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "enum": [ + "fs:allow-audio-write" + ] + }, + { + "description": "fs:allow-audio-write-recursive -> This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-audio-write-recursive" + ] + }, + { + "description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-cache-meta" + ] + }, + { + "description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-cache-meta-recursive" + ] + }, + { + "description": "fs:allow-cache-read -> This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "enum": [ + "fs:allow-cache-read" + ] + }, + { + "description": "fs:allow-cache-read-recursive -> This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-cache-read-recursive" + ] + }, + { + "description": "fs:allow-cache-write -> This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "enum": [ + "fs:allow-cache-write" + ] + }, + { + "description": "fs:allow-cache-write-recursive -> This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-cache-write-recursive" + ] + }, + { + "description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-config-meta" + ] + }, + { + "description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-config-meta-recursive" + ] + }, + { + "description": "fs:allow-config-read -> This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "enum": [ + "fs:allow-config-read" + ] + }, + { + "description": "fs:allow-config-read-recursive -> This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-config-read-recursive" + ] + }, + { + "description": "fs:allow-config-write -> This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "enum": [ + "fs:allow-config-write" + ] + }, + { + "description": "fs:allow-config-write-recursive -> This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-config-write-recursive" + ] + }, + { + "description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-data-meta" + ] + }, + { + "description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-data-meta-recursive" + ] + }, + { + "description": "fs:allow-data-read -> This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "enum": [ + "fs:allow-data-read" + ] + }, + { + "description": "fs:allow-data-read-recursive -> This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-data-read-recursive" + ] + }, + { + "description": "fs:allow-data-write -> This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "enum": [ + "fs:allow-data-write" + ] + }, + { + "description": "fs:allow-data-write-recursive -> This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-data-write-recursive" + ] + }, + { + "description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-desktop-meta" + ] + }, + { + "description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-desktop-meta-recursive" + ] + }, + { + "description": "fs:allow-desktop-read -> This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "enum": [ + "fs:allow-desktop-read" + ] + }, + { + "description": "fs:allow-desktop-read-recursive -> This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-desktop-read-recursive" + ] + }, + { + "description": "fs:allow-desktop-write -> This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "enum": [ + "fs:allow-desktop-write" + ] + }, + { + "description": "fs:allow-desktop-write-recursive -> This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-desktop-write-recursive" + ] + }, + { + "description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-document-meta" + ] + }, + { + "description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-document-meta-recursive" + ] + }, + { + "description": "fs:allow-document-read -> This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "enum": [ + "fs:allow-document-read" + ] + }, + { + "description": "fs:allow-document-read-recursive -> This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-document-read-recursive" + ] + }, + { + "description": "fs:allow-document-write -> This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "enum": [ + "fs:allow-document-write" + ] + }, + { + "description": "fs:allow-document-write-recursive -> This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-document-write-recursive" + ] + }, + { + "description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-download-meta" + ] + }, + { + "description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-download-meta-recursive" + ] + }, + { + "description": "fs:allow-download-read -> This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": [ + "fs:allow-download-read" + ] + }, + { + "description": "fs:allow-download-read-recursive -> This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-download-read-recursive" + ] + }, + { + "description": "fs:allow-download-write -> This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": [ + "fs:allow-download-write" + ] + }, + { + "description": "fs:allow-download-write-recursive -> This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-download-write-recursive" + ] + }, + { + "description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-exe-meta" + ] + }, + { + "description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-exe-meta-recursive" + ] + }, + { + "description": "fs:allow-exe-read -> This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "enum": [ + "fs:allow-exe-read" + ] + }, + { + "description": "fs:allow-exe-read-recursive -> This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-exe-read-recursive" + ] + }, + { + "description": "fs:allow-exe-write -> This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "enum": [ + "fs:allow-exe-write" + ] + }, + { + "description": "fs:allow-exe-write-recursive -> This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-exe-write-recursive" + ] + }, + { + "description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-font-meta" + ] + }, + { + "description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-font-meta-recursive" + ] + }, + { + "description": "fs:allow-font-read -> This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "enum": [ + "fs:allow-font-read" + ] + }, + { + "description": "fs:allow-font-read-recursive -> This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-font-read-recursive" + ] + }, + { + "description": "fs:allow-font-write -> This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "enum": [ + "fs:allow-font-write" + ] + }, + { + "description": "fs:allow-font-write-recursive -> This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-font-write-recursive" + ] + }, + { + "description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-home-meta" + ] + }, + { + "description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-home-meta-recursive" + ] + }, + { + "description": "fs:allow-home-read -> This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "enum": [ + "fs:allow-home-read" + ] + }, + { + "description": "fs:allow-home-read-recursive -> This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-home-read-recursive" + ] + }, + { + "description": "fs:allow-home-write -> This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "enum": [ + "fs:allow-home-write" + ] + }, + { + "description": "fs:allow-home-write-recursive -> This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-home-write-recursive" + ] + }, + { + "description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-localdata-meta" + ] + }, + { + "description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-localdata-meta-recursive" + ] + }, + { + "description": "fs:allow-localdata-read -> This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-localdata-read" + ] + }, + { + "description": "fs:allow-localdata-read-recursive -> This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-localdata-read-recursive" + ] + }, + { + "description": "fs:allow-localdata-write -> This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-localdata-write" + ] + }, + { + "description": "fs:allow-localdata-write-recursive -> This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-localdata-write-recursive" + ] + }, + { + "description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-log-meta" + ] + }, + { + "description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-log-meta-recursive" + ] + }, + { + "description": "fs:allow-log-read -> This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "enum": [ + "fs:allow-log-read" + ] + }, + { + "description": "fs:allow-log-read-recursive -> This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-log-read-recursive" + ] + }, + { + "description": "fs:allow-log-write -> This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "enum": [ + "fs:allow-log-write" + ] + }, + { + "description": "fs:allow-log-write-recursive -> This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-log-write-recursive" + ] + }, + { + "description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-picture-meta" + ] + }, + { + "description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-picture-meta-recursive" + ] + }, + { + "description": "fs:allow-picture-read -> This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "enum": [ + "fs:allow-picture-read" + ] + }, + { + "description": "fs:allow-picture-read-recursive -> This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-picture-read-recursive" + ] + }, + { + "description": "fs:allow-picture-write -> This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "enum": [ + "fs:allow-picture-write" + ] + }, + { + "description": "fs:allow-picture-write-recursive -> This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-picture-write-recursive" + ] + }, + { + "description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-public-meta" + ] + }, + { + "description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-public-meta-recursive" + ] + }, + { + "description": "fs:allow-public-read -> This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "enum": [ + "fs:allow-public-read" + ] + }, + { + "description": "fs:allow-public-read-recursive -> This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-public-read-recursive" + ] + }, + { + "description": "fs:allow-public-write -> This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "enum": [ + "fs:allow-public-write" + ] + }, + { + "description": "fs:allow-public-write-recursive -> This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-public-write-recursive" + ] + }, + { + "description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-resource-meta" + ] + }, + { + "description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-resource-meta-recursive" + ] + }, + { + "description": "fs:allow-resource-read -> This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "enum": [ + "fs:allow-resource-read" + ] + }, + { + "description": "fs:allow-resource-read-recursive -> This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-resource-read-recursive" + ] + }, + { + "description": "fs:allow-resource-write -> This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "enum": [ + "fs:allow-resource-write" + ] + }, + { + "description": "fs:allow-resource-write-recursive -> This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-resource-write-recursive" + ] + }, + { + "description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-runtime-meta" + ] + }, + { + "description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-runtime-meta-recursive" + ] + }, + { + "description": "fs:allow-runtime-read -> This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "enum": [ + "fs:allow-runtime-read" + ] + }, + { + "description": "fs:allow-runtime-read-recursive -> This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-runtime-read-recursive" + ] + }, + { + "description": "fs:allow-runtime-write -> This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "enum": [ + "fs:allow-runtime-write" + ] + }, + { + "description": "fs:allow-runtime-write-recursive -> This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-runtime-write-recursive" + ] + }, + { + "description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-temp-meta" + ] + }, + { + "description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-temp-meta-recursive" + ] + }, + { + "description": "fs:allow-temp-read -> This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "enum": [ + "fs:allow-temp-read" + ] + }, + { + "description": "fs:allow-temp-read-recursive -> This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-temp-read-recursive" + ] + }, + { + "description": "fs:allow-temp-write -> This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "enum": [ + "fs:allow-temp-write" + ] + }, + { + "description": "fs:allow-temp-write-recursive -> This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-temp-write-recursive" + ] + }, + { + "description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-template-meta" + ] + }, + { + "description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-template-meta-recursive" + ] + }, + { + "description": "fs:allow-template-read -> This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "enum": [ + "fs:allow-template-read" + ] + }, + { + "description": "fs:allow-template-read-recursive -> This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-template-read-recursive" + ] + }, + { + "description": "fs:allow-template-write -> This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "enum": [ + "fs:allow-template-write" + ] + }, + { + "description": "fs:allow-template-write-recursive -> This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-template-write-recursive" + ] + }, + { + "description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-video-meta" + ] + }, + { + "description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-video-meta-recursive" + ] + }, + { + "description": "fs:allow-video-read -> This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "enum": [ + "fs:allow-video-read" + ] + }, + { + "description": "fs:allow-video-read-recursive -> This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-video-read-recursive" + ] + }, + { + "description": "fs:allow-video-write -> This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "enum": [ + "fs:allow-video-write" + ] + }, + { + "description": "fs:allow-video-write-recursive -> This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-video-write-recursive" + ] + }, + { + "description": "fs:deny-default -> This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "enum": [ + "fs:deny-default" + ] + }, + { + "description": "fs:allow-copy-file -> Enables the copy_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-copy-file" + ] + }, + { + "description": "fs:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-create" + ] + }, + { + "description": "fs:allow-exists -> Enables the exists command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-exists" + ] + }, + { + "description": "fs:allow-fstat -> Enables the fstat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-fstat" + ] + }, + { + "description": "fs:allow-ftruncate -> Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-ftruncate" + ] + }, + { + "description": "fs:allow-lstat -> Enables the lstat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-lstat" + ] + }, + { + "description": "fs:allow-mkdir -> Enables the mkdir command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-mkdir" + ] + }, + { + "description": "fs:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-open" + ] + }, + { + "description": "fs:allow-read -> Enables the read command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read" + ] + }, + { + "description": "fs:allow-read-dir -> Enables the read_dir command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-dir" + ] + }, + { + "description": "fs:allow-read-file -> Enables the read_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-file" + ] + }, + { + "description": "fs:allow-read-text-file -> Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-text-file" + ] + }, + { + "description": "fs:allow-read-text-file-lines -> Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-text-file-lines" + ] + }, + { + "description": "fs:allow-read-text-file-lines-next -> Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-text-file-lines-next" + ] + }, + { + "description": "fs:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-remove" + ] + }, + { + "description": "fs:allow-rename -> Enables the rename command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-rename" + ] + }, + { + "description": "fs:allow-seek -> Enables the seek command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-seek" + ] + }, + { + "description": "fs:allow-stat -> Enables the stat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-stat" + ] + }, + { + "description": "fs:allow-truncate -> Enables the truncate command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-truncate" + ] + }, + { + "description": "fs:allow-unwatch -> Enables the unwatch command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-unwatch" + ] + }, + { + "description": "fs:allow-watch -> Enables the watch command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-watch" + ] + }, + { + "description": "fs:allow-write -> Enables the write command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-write" + ] + }, + { + "description": "fs:allow-write-file -> Enables the write_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-write-file" + ] + }, + { + "description": "fs:allow-write-text-file -> Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-write-text-file" + ] + }, + { + "description": "fs:deny-copy-file -> Denies the copy_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-copy-file" + ] + }, + { + "description": "fs:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-create" + ] + }, + { + "description": "fs:deny-exists -> Denies the exists command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-exists" + ] + }, + { + "description": "fs:deny-fstat -> Denies the fstat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-fstat" + ] + }, + { + "description": "fs:deny-ftruncate -> Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-ftruncate" + ] + }, + { + "description": "fs:deny-lstat -> Denies the lstat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-lstat" + ] + }, + { + "description": "fs:deny-mkdir -> Denies the mkdir command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-mkdir" + ] + }, + { + "description": "fs:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-open" + ] + }, + { + "description": "fs:deny-read -> Denies the read command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read" + ] + }, + { + "description": "fs:deny-read-dir -> Denies the read_dir command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-dir" + ] + }, + { + "description": "fs:deny-read-file -> Denies the read_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-file" + ] + }, + { + "description": "fs:deny-read-text-file -> Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-text-file" + ] + }, + { + "description": "fs:deny-read-text-file-lines -> Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-text-file-lines" + ] + }, + { + "description": "fs:deny-read-text-file-lines-next -> Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-text-file-lines-next" + ] + }, + { + "description": "fs:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-remove" + ] + }, + { + "description": "fs:deny-rename -> Denies the rename command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-rename" + ] + }, + { + "description": "fs:deny-seek -> Denies the seek command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-seek" + ] + }, + { + "description": "fs:deny-stat -> Denies the stat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-stat" + ] + }, + { + "description": "fs:deny-truncate -> Denies the truncate command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-truncate" + ] + }, + { + "description": "fs:deny-unwatch -> Denies the unwatch command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-unwatch" + ] + }, + { + "description": "fs:deny-watch -> Denies the watch command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-watch" + ] + }, + { + "description": "fs:deny-webview-data-linux -> This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": [ + "fs:deny-webview-data-linux" + ] + }, + { + "description": "fs:deny-webview-data-windows -> This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": [ + "fs:deny-webview-data-windows" + ] + }, + { + "description": "fs:deny-write -> Denies the write command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-write" + ] + }, + { + "description": "fs:deny-write-file -> Denies the write_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-write-file" + ] + }, + { + "description": "fs:deny-write-text-file -> Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-write-text-file" + ] + }, + { + "description": "fs:read-all -> This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:read-all" + ] + }, + { + "description": "fs:read-dirs -> This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:read-dirs" + ] + }, + { + "description": "fs:read-files -> This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:read-files" + ] + }, + { + "description": "fs:read-meta -> This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:read-meta" + ] + }, + { + "description": "fs:scope -> An empty permission you can use to modify the global scope.", + "type": "string", + "enum": [ + "fs:scope" + ] + }, + { + "description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.", + "type": "string", + "enum": [ + "fs:scope-app" + ] + }, + { + "description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.", + "type": "string", + "enum": [ + "fs:scope-app-index" + ] + }, + { + "description": "fs:scope-app-recursive -> This scope recursive access to the complete `$APP` folder, 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.", + "type": "string", + "enum": [ + "fs:scope-appcache" + ] + }, + { + "description": "fs:scope-appcache-index -> This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "enum": [ + "fs:scope-appcache-index" + ] + }, + { + "description": "fs:scope-appcache-recursive -> This scope recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-appcache-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-appconfig-index -> This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "enum": [ + "fs:scope-appconfig-index" + ] + }, + { + "description": "fs:scope-appconfig-recursive -> This scope recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-appconfig-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-appdata-index -> This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "enum": [ + "fs:scope-appdata-index" + ] + }, + { + "description": "fs:scope-appdata-recursive -> This scope recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-appdata-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-applocaldata-index -> This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": [ + "fs:scope-applocaldata-index" + ] + }, + { + "description": "fs:scope-applocaldata-recursive -> This scope recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-applocaldata-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-applog-index -> This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "enum": [ + "fs:scope-applog-index" + ] + }, + { + "description": "fs:scope-applog-recursive -> This scope recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-applog-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-audio-index -> This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "enum": [ + "fs:scope-audio-index" + ] + }, + { + "description": "fs:scope-audio-recursive -> This scope recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-audio-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-cache-index -> This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "enum": [ + "fs:scope-cache-index" + ] + }, + { + "description": "fs:scope-cache-recursive -> This scope recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-cache-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-config-index -> This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "enum": [ + "fs:scope-config-index" + ] + }, + { + "description": "fs:scope-config-recursive -> This scope recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-config-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-data-index -> This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "enum": [ + "fs:scope-data-index" + ] + }, + { + "description": "fs:scope-data-recursive -> This scope recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-data-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-desktop-index -> This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "enum": [ + "fs:scope-desktop-index" + ] + }, + { + "description": "fs:scope-desktop-recursive -> This scope recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-desktop-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-document-index -> This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "enum": [ + "fs:scope-document-index" + ] + }, + { + "description": "fs:scope-document-recursive -> This scope recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-document-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-download-index -> This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "enum": [ + "fs:scope-download-index" + ] + }, + { + "description": "fs:scope-download-recursive -> This scope recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-download-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-exe-index -> This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "enum": [ + "fs:scope-exe-index" + ] + }, + { + "description": "fs:scope-exe-recursive -> This scope recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-exe-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-font-index -> This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "enum": [ + "fs:scope-font-index" + ] + }, + { + "description": "fs:scope-font-recursive -> This scope recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-font-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-home-index -> This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "enum": [ + "fs:scope-home-index" + ] + }, + { + "description": "fs:scope-home-recursive -> This scope recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-home-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-localdata-index -> This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "enum": [ + "fs:scope-localdata-index" + ] + }, + { + "description": "fs:scope-localdata-recursive -> This scope recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-localdata-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-log-index -> This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "enum": [ + "fs:scope-log-index" + ] + }, + { + "description": "fs:scope-log-recursive -> This scope recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-log-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-picture-index -> This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "enum": [ + "fs:scope-picture-index" + ] + }, + { + "description": "fs:scope-picture-recursive -> This scope recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-picture-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-public-index -> This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "enum": [ + "fs:scope-public-index" + ] + }, + { + "description": "fs:scope-public-recursive -> This scope recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-public-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-resource-index -> This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "enum": [ + "fs:scope-resource-index" + ] + }, + { + "description": "fs:scope-resource-recursive -> This scope recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-resource-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-runtime-index -> This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "enum": [ + "fs:scope-runtime-index" + ] + }, + { + "description": "fs:scope-runtime-recursive -> This scope recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-runtime-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-temp-index -> This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "enum": [ + "fs:scope-temp-index" + ] + }, + { + "description": "fs:scope-temp-recursive -> This scope recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-temp-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-template-index -> This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "enum": [ + "fs:scope-template-index" + ] + }, + { + "description": "fs:scope-template-recursive -> This scope recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-template-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-video-index -> This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "enum": [ + "fs:scope-video-index" + ] + }, + { + "description": "fs:scope-video-recursive -> This scope recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-video-recursive" + ] + }, + { + "description": "fs:write-all -> This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:write-all" + ] + }, + { + "description": "fs:write-files -> This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:write-files" + ] + } + ] + }, + "allow": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "identifier": { + "oneOf": [ + { + "type": "string", + "enum": [ + "shell:default" + ] + }, + { + "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-execute" + ] + }, + { + "description": "shell:allow-kill -> Enables the kill command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-kill" + ] + }, + { + "description": "shell:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-open" + ] + }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-spawn" + ] + }, + { + "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-stdin-write" + ] + }, + { + "description": "shell:deny-execute -> Denies the execute command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-execute" + ] + }, + { + "description": "shell:deny-kill -> Denies the kill command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-kill" + ] + }, + { + "description": "shell:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-open" + ] + }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-spawn" + ] + }, + { + "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-stdin-write" + ] + } + ] + }, + "allow": { + "items": { + "title": "Entry", + "description": "A command allowed to be executed by the webview API.", + "type": "object", + "required": [ + "args", + "cmd", + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellAllowedArgs" + } + ] + }, + "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`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + } + } + }, + "deny": { + "items": { + "title": "Entry", + "description": "A command allowed to be executed by the webview API.", + "type": "object", + "required": [ + "args", + "cmd", + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellAllowedArgs" + } + ] + }, + "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`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + } + } + } + } + } + ] + } + ] + }, + "Identifier": { + "oneOf": [ + { + "description": "app:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "app:default" + ] + }, + { + "description": "app:allow-app-hide -> Enables the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-app-hide" + ] + }, + { + "description": "app:allow-app-show -> Enables the app_show command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-app-show" + ] + }, + { + "description": "app:allow-name -> Enables the name command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-name" + ] + }, + { + "description": "app:allow-tauri-version -> Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-tauri-version" + ] + }, + { + "description": "app:allow-version -> Enables the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:allow-version" + ] + }, + { + "description": "app:deny-app-hide -> Denies the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-app-hide" + ] + }, + { + "description": "app:deny-app-show -> Denies the app_show command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-app-show" + ] + }, + { + "description": "app:deny-name -> Denies the name command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-name" + ] + }, + { + "description": "app:deny-tauri-version -> Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-tauri-version" + ] + }, + { + "description": "app:deny-version -> Denies the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "app:deny-version" + ] + }, + { + "type": "string", + "enum": [ + "clipboard-manager:default" + ] + }, + { + "description": "clipboard-manager:allow-clear -> Enables the clear command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-clear" + ] + }, + { + "description": "clipboard-manager:allow-read-image -> Enables the read_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-read-image" + ] + }, + { + "description": "clipboard-manager:allow-read-text -> Enables the read_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-read-text" + ] + }, + { + "description": "clipboard-manager:allow-write-html -> Enables the write_html command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-write-html" + ] + }, + { + "description": "clipboard-manager:allow-write-image -> Enables the write_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-write-image" + ] + }, + { + "description": "clipboard-manager:allow-write-text -> Enables the write_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:allow-write-text" + ] + }, + { + "description": "clipboard-manager:deny-clear -> Denies the clear command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-clear" + ] + }, + { + "description": "clipboard-manager:deny-read-image -> Denies the read_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-read-image" + ] + }, + { + "description": "clipboard-manager:deny-read-text -> Denies the read_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-read-text" + ] + }, + { + "description": "clipboard-manager:deny-write-html -> Denies the write_html command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-write-html" + ] + }, + { + "description": "clipboard-manager:deny-write-image -> Denies the write_image command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-write-image" + ] + }, + { + "description": "clipboard-manager:deny-write-text -> Denies the write_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "clipboard-manager:deny-write-text" + ] + }, + { + "description": "deep-link:default -> Allows reading the opened deep link via the get_current command", + "type": "string", + "enum": [ + "deep-link:default" + ] + }, + { + "description": "deep-link:allow-get-current -> Enables the get_current command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-get-current" + ] + }, + { + "description": "deep-link:allow-is-registered -> Enables the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-is-registered" + ] + }, + { + "description": "deep-link:allow-register -> Enables the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-register" + ] + }, + { + "description": "deep-link:allow-unregister -> Enables the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:allow-unregister" + ] + }, + { + "description": "deep-link:deny-get-current -> Denies the get_current command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-get-current" + ] + }, + { + "description": "deep-link:deny-is-registered -> Denies the is_registered command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-is-registered" + ] + }, + { + "description": "deep-link:deny-register -> Denies the register command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-register" + ] + }, + { + "description": "deep-link:deny-unregister -> Denies the unregister command without any pre-configured scope.", + "type": "string", + "enum": [ + "deep-link:deny-unregister" + ] + }, + { + "type": "string", + "enum": [ + "dialog:default" + ] + }, + { + "description": "dialog:allow-ask -> Enables the ask command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:allow-ask" + ] + }, + { + "description": "dialog:allow-confirm -> Enables the confirm command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:allow-confirm" + ] + }, + { + "description": "dialog:allow-message -> Enables the message command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:allow-message" + ] + }, + { + "description": "dialog:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:allow-open" + ] + }, + { + "description": "dialog:allow-save -> Enables the save command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:allow-save" + ] + }, + { + "description": "dialog:deny-ask -> Denies the ask command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:deny-ask" + ] + }, + { + "description": "dialog:deny-confirm -> Denies the confirm command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:deny-confirm" + ] + }, + { + "description": "dialog:deny-message -> Denies the message command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:deny-message" + ] + }, + { + "description": "dialog:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:deny-open" + ] + }, + { + "description": "dialog:deny-save -> Denies the save command without any pre-configured scope.", + "type": "string", + "enum": [ + "dialog:deny-save" + ] + }, + { + "description": "event:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "event:default" + ] + }, + { + "description": "event:allow-emit -> Enables the emit command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-emit" + ] + }, + { + "description": "event:allow-emit-to -> Enables the emit_to command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-emit-to" + ] + }, + { + "description": "event:allow-listen -> Enables the listen command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-listen" + ] + }, + { + "description": "event:allow-unlisten -> Enables the unlisten command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:allow-unlisten" + ] + }, + { + "description": "event:deny-emit -> Denies the emit command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-emit" + ] + }, + { + "description": "event:deny-emit-to -> Denies the emit_to command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-emit-to" + ] + }, + { + "description": "event:deny-listen -> Denies the listen command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-listen" + ] + }, + { + "description": "event:deny-unlisten -> Denies the unlisten command without any pre-configured scope.", + "type": "string", + "enum": [ + "event:deny-unlisten" + ] + }, + { + "description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, 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.", + "type": "string", + "enum": [ + "fs:allow-app-meta-recursive" + ] + }, + { + "description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.", + "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.", + "type": "string", + "enum": [ + "fs:allow-app-read-recursive" + ] + }, + { + "description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.", + "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.", + "type": "string", + "enum": [ + "fs:allow-app-write-recursive" + ] + }, + { + "description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appcache-meta" + ] + }, + { + "description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appcache-meta-recursive" + ] + }, + { + "description": "fs:allow-appcache-read -> This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "enum": [ + "fs:allow-appcache-read" + ] + }, + { + "description": "fs:allow-appcache-read-recursive -> This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appcache-read-recursive" + ] + }, + { + "description": "fs:allow-appcache-write -> This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "enum": [ + "fs:allow-appcache-write" + ] + }, + { + "description": "fs:allow-appcache-write-recursive -> This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appcache-write-recursive" + ] + }, + { + "description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appconfig-meta" + ] + }, + { + "description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appconfig-meta-recursive" + ] + }, + { + "description": "fs:allow-appconfig-read -> This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "enum": [ + "fs:allow-appconfig-read" + ] + }, + { + "description": "fs:allow-appconfig-read-recursive -> This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appconfig-read-recursive" + ] + }, + { + "description": "fs:allow-appconfig-write -> This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "enum": [ + "fs:allow-appconfig-write" + ] + }, + { + "description": "fs:allow-appconfig-write-recursive -> This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appconfig-write-recursive" + ] + }, + { + "description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appdata-meta" + ] + }, + { + "description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-appdata-meta-recursive" + ] + }, + { + "description": "fs:allow-appdata-read -> This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-appdata-read" + ] + }, + { + "description": "fs:allow-appdata-read-recursive -> This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appdata-read-recursive" + ] + }, + { + "description": "fs:allow-appdata-write -> This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-appdata-write" + ] + }, + { + "description": "fs:allow-appdata-write-recursive -> This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-appdata-write-recursive" + ] + }, + { + "description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-meta" + ] + }, + { + "description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-meta-recursive" + ] + }, + { + "description": "fs:allow-applocaldata-read -> This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-read" + ] + }, + { + "description": "fs:allow-applocaldata-read-recursive -> This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-read-recursive" + ] + }, + { + "description": "fs:allow-applocaldata-write -> This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-write" + ] + }, + { + "description": "fs:allow-applocaldata-write-recursive -> This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-applocaldata-write-recursive" + ] + }, + { + "description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-applog-meta" + ] + }, + { + "description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-applog-meta-recursive" + ] + }, + { + "description": "fs:allow-applog-read -> This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "enum": [ + "fs:allow-applog-read" + ] + }, + { + "description": "fs:allow-applog-read-recursive -> This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-applog-read-recursive" + ] + }, + { + "description": "fs:allow-applog-write -> This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "enum": [ + "fs:allow-applog-write" + ] + }, + { + "description": "fs:allow-applog-write-recursive -> This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-applog-write-recursive" + ] + }, + { + "description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-audio-meta" + ] + }, + { + "description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-audio-meta-recursive" + ] + }, + { + "description": "fs:allow-audio-read -> This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "enum": [ + "fs:allow-audio-read" + ] + }, + { + "description": "fs:allow-audio-read-recursive -> This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-audio-read-recursive" + ] + }, + { + "description": "fs:allow-audio-write -> This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "enum": [ + "fs:allow-audio-write" + ] + }, + { + "description": "fs:allow-audio-write-recursive -> This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-audio-write-recursive" + ] + }, + { + "description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-cache-meta" + ] + }, + { + "description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-cache-meta-recursive" + ] + }, + { + "description": "fs:allow-cache-read -> This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "enum": [ + "fs:allow-cache-read" + ] + }, + { + "description": "fs:allow-cache-read-recursive -> This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-cache-read-recursive" + ] + }, + { + "description": "fs:allow-cache-write -> This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "enum": [ + "fs:allow-cache-write" + ] + }, + { + "description": "fs:allow-cache-write-recursive -> This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-cache-write-recursive" + ] + }, + { + "description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-config-meta" + ] + }, + { + "description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-config-meta-recursive" + ] + }, + { + "description": "fs:allow-config-read -> This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "enum": [ + "fs:allow-config-read" + ] + }, + { + "description": "fs:allow-config-read-recursive -> This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-config-read-recursive" + ] + }, + { + "description": "fs:allow-config-write -> This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "enum": [ + "fs:allow-config-write" + ] + }, + { + "description": "fs:allow-config-write-recursive -> This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-config-write-recursive" + ] + }, + { + "description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-data-meta" + ] + }, + { + "description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-data-meta-recursive" + ] + }, + { + "description": "fs:allow-data-read -> This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "enum": [ + "fs:allow-data-read" + ] + }, + { + "description": "fs:allow-data-read-recursive -> This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-data-read-recursive" + ] + }, + { + "description": "fs:allow-data-write -> This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "enum": [ + "fs:allow-data-write" + ] + }, + { + "description": "fs:allow-data-write-recursive -> This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-data-write-recursive" + ] + }, + { + "description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-desktop-meta" + ] + }, + { + "description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-desktop-meta-recursive" + ] + }, + { + "description": "fs:allow-desktop-read -> This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "enum": [ + "fs:allow-desktop-read" + ] + }, + { + "description": "fs:allow-desktop-read-recursive -> This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-desktop-read-recursive" + ] + }, + { + "description": "fs:allow-desktop-write -> This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "enum": [ + "fs:allow-desktop-write" + ] + }, + { + "description": "fs:allow-desktop-write-recursive -> This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-desktop-write-recursive" + ] + }, + { + "description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-document-meta" + ] + }, + { + "description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-document-meta-recursive" + ] + }, + { + "description": "fs:allow-document-read -> This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "enum": [ + "fs:allow-document-read" + ] + }, + { + "description": "fs:allow-document-read-recursive -> This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-document-read-recursive" + ] + }, + { + "description": "fs:allow-document-write -> This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "enum": [ + "fs:allow-document-write" + ] + }, + { + "description": "fs:allow-document-write-recursive -> This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-document-write-recursive" + ] + }, + { + "description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-download-meta" + ] + }, + { + "description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-download-meta-recursive" + ] + }, + { + "description": "fs:allow-download-read -> This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": [ + "fs:allow-download-read" + ] + }, + { + "description": "fs:allow-download-read-recursive -> This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-download-read-recursive" + ] + }, + { + "description": "fs:allow-download-write -> This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": [ + "fs:allow-download-write" + ] + }, + { + "description": "fs:allow-download-write-recursive -> This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-download-write-recursive" + ] + }, + { + "description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-exe-meta" + ] + }, + { + "description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-exe-meta-recursive" + ] + }, + { + "description": "fs:allow-exe-read -> This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "enum": [ + "fs:allow-exe-read" + ] + }, + { + "description": "fs:allow-exe-read-recursive -> This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-exe-read-recursive" + ] + }, + { + "description": "fs:allow-exe-write -> This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "enum": [ + "fs:allow-exe-write" + ] + }, + { + "description": "fs:allow-exe-write-recursive -> This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-exe-write-recursive" + ] + }, + { + "description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-font-meta" + ] + }, + { + "description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-font-meta-recursive" + ] + }, + { + "description": "fs:allow-font-read -> This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "enum": [ + "fs:allow-font-read" + ] + }, + { + "description": "fs:allow-font-read-recursive -> This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-font-read-recursive" + ] + }, + { + "description": "fs:allow-font-write -> This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "enum": [ + "fs:allow-font-write" + ] + }, + { + "description": "fs:allow-font-write-recursive -> This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-font-write-recursive" + ] + }, + { + "description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-home-meta" + ] + }, + { + "description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-home-meta-recursive" + ] + }, + { + "description": "fs:allow-home-read -> This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "enum": [ + "fs:allow-home-read" + ] + }, + { + "description": "fs:allow-home-read-recursive -> This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-home-read-recursive" + ] + }, + { + "description": "fs:allow-home-write -> This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "enum": [ + "fs:allow-home-write" + ] + }, + { + "description": "fs:allow-home-write-recursive -> This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-home-write-recursive" + ] + }, + { + "description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-localdata-meta" + ] + }, + { + "description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-localdata-meta-recursive" + ] + }, + { + "description": "fs:allow-localdata-read -> This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-localdata-read" + ] + }, + { + "description": "fs:allow-localdata-read-recursive -> This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-localdata-read-recursive" + ] + }, + { + "description": "fs:allow-localdata-write -> This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "enum": [ + "fs:allow-localdata-write" + ] + }, + { + "description": "fs:allow-localdata-write-recursive -> This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-localdata-write-recursive" + ] + }, + { + "description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-log-meta" + ] + }, + { + "description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-log-meta-recursive" + ] + }, + { + "description": "fs:allow-log-read -> This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "enum": [ + "fs:allow-log-read" + ] + }, + { + "description": "fs:allow-log-read-recursive -> This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-log-read-recursive" + ] + }, + { + "description": "fs:allow-log-write -> This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "enum": [ + "fs:allow-log-write" + ] + }, + { + "description": "fs:allow-log-write-recursive -> This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-log-write-recursive" + ] + }, + { + "description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-picture-meta" + ] + }, + { + "description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-picture-meta-recursive" + ] + }, + { + "description": "fs:allow-picture-read -> This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "enum": [ + "fs:allow-picture-read" + ] + }, + { + "description": "fs:allow-picture-read-recursive -> This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-picture-read-recursive" + ] + }, + { + "description": "fs:allow-picture-write -> This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "enum": [ + "fs:allow-picture-write" + ] + }, + { + "description": "fs:allow-picture-write-recursive -> This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-picture-write-recursive" + ] + }, + { + "description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-public-meta" + ] + }, + { + "description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-public-meta-recursive" + ] + }, + { + "description": "fs:allow-public-read -> This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "enum": [ + "fs:allow-public-read" + ] + }, + { + "description": "fs:allow-public-read-recursive -> This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-public-read-recursive" + ] + }, + { + "description": "fs:allow-public-write -> This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "enum": [ + "fs:allow-public-write" + ] + }, + { + "description": "fs:allow-public-write-recursive -> This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-public-write-recursive" + ] + }, + { + "description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-resource-meta" + ] + }, + { + "description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-resource-meta-recursive" + ] + }, + { + "description": "fs:allow-resource-read -> This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "enum": [ + "fs:allow-resource-read" + ] + }, + { + "description": "fs:allow-resource-read-recursive -> This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-resource-read-recursive" + ] + }, + { + "description": "fs:allow-resource-write -> This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "enum": [ + "fs:allow-resource-write" + ] + }, + { + "description": "fs:allow-resource-write-recursive -> This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-resource-write-recursive" + ] + }, + { + "description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-runtime-meta" + ] + }, + { + "description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-runtime-meta-recursive" + ] + }, + { + "description": "fs:allow-runtime-read -> This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "enum": [ + "fs:allow-runtime-read" + ] + }, + { + "description": "fs:allow-runtime-read-recursive -> This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-runtime-read-recursive" + ] + }, + { + "description": "fs:allow-runtime-write -> This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "enum": [ + "fs:allow-runtime-write" + ] + }, + { + "description": "fs:allow-runtime-write-recursive -> This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-runtime-write-recursive" + ] + }, + { + "description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-temp-meta" + ] + }, + { + "description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-temp-meta-recursive" + ] + }, + { + "description": "fs:allow-temp-read -> This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "enum": [ + "fs:allow-temp-read" + ] + }, + { + "description": "fs:allow-temp-read-recursive -> This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-temp-read-recursive" + ] + }, + { + "description": "fs:allow-temp-write -> This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "enum": [ + "fs:allow-temp-write" + ] + }, + { + "description": "fs:allow-temp-write-recursive -> This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-temp-write-recursive" + ] + }, + { + "description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-template-meta" + ] + }, + { + "description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-template-meta-recursive" + ] + }, + { + "description": "fs:allow-template-read -> This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "enum": [ + "fs:allow-template-read" + ] + }, + { + "description": "fs:allow-template-read-recursive -> This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-template-read-recursive" + ] + }, + { + "description": "fs:allow-template-write -> This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "enum": [ + "fs:allow-template-write" + ] + }, + { + "description": "fs:allow-template-write-recursive -> This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-template-write-recursive" + ] + }, + { + "description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-video-meta" + ] + }, + { + "description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": [ + "fs:allow-video-meta-recursive" + ] + }, + { + "description": "fs:allow-video-read -> This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "enum": [ + "fs:allow-video-read" + ] + }, + { + "description": "fs:allow-video-read-recursive -> This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-video-read-recursive" + ] + }, + { + "description": "fs:allow-video-write -> This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "enum": [ + "fs:allow-video-write" + ] + }, + { + "description": "fs:allow-video-write-recursive -> This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": [ + "fs:allow-video-write-recursive" + ] + }, + { + "description": "fs:deny-default -> This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "enum": [ + "fs:deny-default" + ] + }, + { + "description": "fs:default -> # Tauri `fs` default permissions\n\nThis configuration file defines the default permissions granted\nto the filesystem.\n\n### Granted Permissions\n\nThis default permission set enables all read-related commands and\nallows access to the `$APP` folder and sub directories created in it.\nThe location of the `$APP` folder depends on the operating system,\nwhere the application is run.\n\nIn general the `$APP` folder needs to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\n### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n", + "type": "string", + "enum": [ + "fs:default" + ] + }, + { + "description": "fs:allow-copy-file -> Enables the copy_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-copy-file" + ] + }, + { + "description": "fs:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-create" + ] + }, + { + "description": "fs:allow-exists -> Enables the exists command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-exists" + ] + }, + { + "description": "fs:allow-fstat -> Enables the fstat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-fstat" + ] + }, + { + "description": "fs:allow-ftruncate -> Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-ftruncate" + ] + }, + { + "description": "fs:allow-lstat -> Enables the lstat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-lstat" + ] + }, + { + "description": "fs:allow-mkdir -> Enables the mkdir command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-mkdir" + ] + }, + { + "description": "fs:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-open" + ] + }, + { + "description": "fs:allow-read -> Enables the read command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read" + ] + }, + { + "description": "fs:allow-read-dir -> Enables the read_dir command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-dir" + ] + }, + { + "description": "fs:allow-read-file -> Enables the read_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-file" + ] + }, + { + "description": "fs:allow-read-text-file -> Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-text-file" + ] + }, + { + "description": "fs:allow-read-text-file-lines -> Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-text-file-lines" + ] + }, + { + "description": "fs:allow-read-text-file-lines-next -> Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-read-text-file-lines-next" + ] + }, + { + "description": "fs:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-remove" + ] + }, + { + "description": "fs:allow-rename -> Enables the rename command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-rename" + ] + }, + { + "description": "fs:allow-seek -> Enables the seek command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-seek" + ] + }, + { + "description": "fs:allow-stat -> Enables the stat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-stat" + ] + }, + { + "description": "fs:allow-truncate -> Enables the truncate command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-truncate" + ] + }, + { + "description": "fs:allow-unwatch -> Enables the unwatch command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-unwatch" + ] + }, + { + "description": "fs:allow-watch -> Enables the watch command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-watch" + ] + }, + { + "description": "fs:allow-write -> Enables the write command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-write" + ] + }, + { + "description": "fs:allow-write-file -> Enables the write_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-write-file" + ] + }, + { + "description": "fs:allow-write-text-file -> Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:allow-write-text-file" + ] + }, + { + "description": "fs:deny-copy-file -> Denies the copy_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-copy-file" + ] + }, + { + "description": "fs:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-create" + ] + }, + { + "description": "fs:deny-exists -> Denies the exists command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-exists" + ] + }, + { + "description": "fs:deny-fstat -> Denies the fstat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-fstat" + ] + }, + { + "description": "fs:deny-ftruncate -> Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-ftruncate" + ] + }, + { + "description": "fs:deny-lstat -> Denies the lstat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-lstat" + ] + }, + { + "description": "fs:deny-mkdir -> Denies the mkdir command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-mkdir" + ] + }, + { + "description": "fs:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-open" + ] + }, + { + "description": "fs:deny-read -> Denies the read command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read" + ] + }, + { + "description": "fs:deny-read-dir -> Denies the read_dir command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-dir" + ] + }, + { + "description": "fs:deny-read-file -> Denies the read_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-file" + ] + }, + { + "description": "fs:deny-read-text-file -> Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-text-file" + ] + }, + { + "description": "fs:deny-read-text-file-lines -> Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-text-file-lines" + ] + }, + { + "description": "fs:deny-read-text-file-lines-next -> Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-read-text-file-lines-next" + ] + }, + { + "description": "fs:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-remove" + ] + }, + { + "description": "fs:deny-rename -> Denies the rename command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-rename" + ] + }, + { + "description": "fs:deny-seek -> Denies the seek command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-seek" + ] + }, + { + "description": "fs:deny-stat -> Denies the stat command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-stat" + ] + }, + { + "description": "fs:deny-truncate -> Denies the truncate command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-truncate" + ] + }, + { + "description": "fs:deny-unwatch -> Denies the unwatch command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-unwatch" + ] + }, + { + "description": "fs:deny-watch -> Denies the watch command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-watch" + ] + }, + { + "description": "fs:deny-webview-data-linux -> This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": [ + "fs:deny-webview-data-linux" + ] + }, + { + "description": "fs:deny-webview-data-windows -> This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": [ + "fs:deny-webview-data-windows" + ] + }, + { + "description": "fs:deny-write -> Denies the write command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-write" + ] + }, + { + "description": "fs:deny-write-file -> Denies the write_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-write-file" + ] + }, + { + "description": "fs:deny-write-text-file -> Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": [ + "fs:deny-write-text-file" + ] + }, + { + "description": "fs:read-all -> This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:read-all" + ] + }, + { + "description": "fs:read-dirs -> This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:read-dirs" + ] + }, + { + "description": "fs:read-files -> This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:read-files" + ] + }, + { + "description": "fs:read-meta -> This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:read-meta" + ] + }, + { + "description": "fs:scope -> An empty permission you can use to modify the global scope.", + "type": "string", + "enum": [ + "fs:scope" + ] + }, + { + "description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.", + "type": "string", + "enum": [ + "fs:scope-app" + ] + }, + { + "description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.", + "type": "string", + "enum": [ + "fs:scope-app-index" + ] + }, + { + "description": "fs:scope-app-recursive -> This scope recursive access to the complete `$APP` folder, 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.", + "type": "string", + "enum": [ + "fs:scope-appcache" + ] + }, + { + "description": "fs:scope-appcache-index -> This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "enum": [ + "fs:scope-appcache-index" + ] + }, + { + "description": "fs:scope-appcache-recursive -> This scope recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-appcache-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-appconfig-index -> This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "enum": [ + "fs:scope-appconfig-index" + ] + }, + { + "description": "fs:scope-appconfig-recursive -> This scope recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-appconfig-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-appdata-index -> This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "enum": [ + "fs:scope-appdata-index" + ] + }, + { + "description": "fs:scope-appdata-recursive -> This scope recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-appdata-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-applocaldata-index -> This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": [ + "fs:scope-applocaldata-index" + ] + }, + { + "description": "fs:scope-applocaldata-recursive -> This scope recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-applocaldata-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-applog-index -> This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "enum": [ + "fs:scope-applog-index" + ] + }, + { + "description": "fs:scope-applog-recursive -> This scope recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-applog-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-audio-index -> This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "enum": [ + "fs:scope-audio-index" + ] + }, + { + "description": "fs:scope-audio-recursive -> This scope recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-audio-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-cache-index -> This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "enum": [ + "fs:scope-cache-index" + ] + }, + { + "description": "fs:scope-cache-recursive -> This scope recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-cache-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-config-index -> This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "enum": [ + "fs:scope-config-index" + ] + }, + { + "description": "fs:scope-config-recursive -> This scope recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-config-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-data-index -> This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "enum": [ + "fs:scope-data-index" + ] + }, + { + "description": "fs:scope-data-recursive -> This scope recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-data-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-desktop-index -> This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "enum": [ + "fs:scope-desktop-index" + ] + }, + { + "description": "fs:scope-desktop-recursive -> This scope recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-desktop-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-document-index -> This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "enum": [ + "fs:scope-document-index" + ] + }, + { + "description": "fs:scope-document-recursive -> This scope recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-document-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-download-index -> This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "enum": [ + "fs:scope-download-index" + ] + }, + { + "description": "fs:scope-download-recursive -> This scope recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-download-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-exe-index -> This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "enum": [ + "fs:scope-exe-index" + ] + }, + { + "description": "fs:scope-exe-recursive -> This scope recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-exe-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-font-index -> This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "enum": [ + "fs:scope-font-index" + ] + }, + { + "description": "fs:scope-font-recursive -> This scope recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-font-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-home-index -> This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "enum": [ + "fs:scope-home-index" + ] + }, + { + "description": "fs:scope-home-recursive -> This scope recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-home-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-localdata-index -> This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "enum": [ + "fs:scope-localdata-index" + ] + }, + { + "description": "fs:scope-localdata-recursive -> This scope recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-localdata-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-log-index -> This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "enum": [ + "fs:scope-log-index" + ] + }, + { + "description": "fs:scope-log-recursive -> This scope recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-log-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-picture-index -> This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "enum": [ + "fs:scope-picture-index" + ] + }, + { + "description": "fs:scope-picture-recursive -> This scope recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-picture-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-public-index -> This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "enum": [ + "fs:scope-public-index" + ] + }, + { + "description": "fs:scope-public-recursive -> This scope recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-public-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-resource-index -> This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "enum": [ + "fs:scope-resource-index" + ] + }, + { + "description": "fs:scope-resource-recursive -> This scope recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-resource-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-runtime-index -> This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "enum": [ + "fs:scope-runtime-index" + ] + }, + { + "description": "fs:scope-runtime-recursive -> This scope recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-runtime-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-temp-index -> This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "enum": [ + "fs:scope-temp-index" + ] + }, + { + "description": "fs:scope-temp-recursive -> This scope recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-temp-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-template-index -> This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "enum": [ + "fs:scope-template-index" + ] + }, + { + "description": "fs:scope-template-recursive -> This scope recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-template-recursive" + ] + }, + { + "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" + ] + }, + { + "description": "fs:scope-video-index -> This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "enum": [ + "fs:scope-video-index" + ] + }, + { + "description": "fs:scope-video-recursive -> This scope recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "enum": [ + "fs:scope-video-recursive" + ] + }, + { + "description": "fs:write-all -> This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:write-all" + ] + }, + { + "description": "fs:write-files -> This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": [ + "fs:write-files" + ] + }, + { + "description": "image:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "image:default" + ] + }, + { + "description": "image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-from-bytes" + ] + }, + { + "description": "image:allow-from-path -> Enables the from_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-from-path" + ] + }, + { + "description": "image:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-new" + ] + }, + { + "description": "image:allow-rgba -> Enables the rgba command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-rgba" + ] + }, + { + "description": "image:allow-size -> Enables the size command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:allow-size" + ] + }, + { + "description": "image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-from-bytes" + ] + }, + { + "description": "image:deny-from-path -> Denies the from_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-from-path" + ] + }, + { + "description": "image:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-new" + ] + }, + { + "description": "image:deny-rgba -> Denies the rgba command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-rgba" + ] + }, + { + "description": "image:deny-size -> Denies the size command without any pre-configured scope.", + "type": "string", + "enum": [ + "image:deny-size" + ] + }, + { + "description": "log:default -> Allows the log command", + "type": "string", + "enum": [ + "log:default" + ] + }, + { + "description": "log:allow-log -> Enables the log command without any pre-configured scope.", + "type": "string", + "enum": [ + "log:allow-log" + ] + }, + { + "description": "log:deny-log -> Denies the log command without any pre-configured scope.", + "type": "string", + "enum": [ + "log:deny-log" + ] + }, + { + "description": "menu:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "menu:default" + ] + }, + { + "description": "menu:allow-append -> Enables the append command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-append" + ] + }, + { + "description": "menu:allow-create-default -> Enables the create_default command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-create-default" + ] + }, + { + "description": "menu:allow-get -> Enables the get command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-get" + ] + }, + { + "description": "menu:allow-insert -> Enables the insert command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-insert" + ] + }, + { + "description": "menu:allow-is-checked -> Enables the is_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-is-checked" + ] + }, + { + "description": "menu:allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-is-enabled" + ] + }, + { + "description": "menu:allow-items -> Enables the items command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-items" + ] + }, + { + "description": "menu:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-new" + ] + }, + { + "description": "menu:allow-popup -> Enables the popup command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-popup" + ] + }, + { + "description": "menu:allow-prepend -> Enables the prepend command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-prepend" + ] + }, + { + "description": "menu:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-remove" + ] + }, + { + "description": "menu:allow-remove-at -> Enables the remove_at command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-remove-at" + ] + }, + { + "description": "menu:allow-set-accelerator -> Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-accelerator" + ] + }, + { + "description": "menu:allow-set-as-app-menu -> Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-app-menu" + ] + }, + { + "description": "menu:allow-set-as-help-menu-for-nsapp -> Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-help-menu-for-nsapp" + ] + }, + { + "description": "menu:allow-set-as-window-menu -> Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-window-menu" + ] + }, + { + "description": "menu:allow-set-as-windows-menu-for-nsapp -> Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-as-windows-menu-for-nsapp" + ] + }, + { + "description": "menu:allow-set-checked -> Enables the set_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-checked" + ] + }, + { + "description": "menu:allow-set-enabled -> Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-enabled" + ] + }, + { + "description": "menu:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-icon" + ] + }, + { + "description": "menu:allow-set-text -> Enables the set_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-set-text" + ] + }, + { + "description": "menu:allow-text -> Enables the text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:allow-text" + ] + }, + { + "description": "menu:deny-append -> Denies the append command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-append" + ] + }, + { + "description": "menu:deny-create-default -> Denies the create_default command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-create-default" + ] + }, + { + "description": "menu:deny-get -> Denies the get command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-get" + ] + }, + { + "description": "menu:deny-insert -> Denies the insert command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-insert" + ] + }, + { + "description": "menu:deny-is-checked -> Denies the is_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-is-checked" + ] + }, + { + "description": "menu:deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-is-enabled" + ] + }, + { + "description": "menu:deny-items -> Denies the items command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-items" + ] + }, + { + "description": "menu:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-new" + ] + }, + { + "description": "menu:deny-popup -> Denies the popup command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-popup" + ] + }, + { + "description": "menu:deny-prepend -> Denies the prepend command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-prepend" + ] + }, + { + "description": "menu:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-remove" + ] + }, + { + "description": "menu:deny-remove-at -> Denies the remove_at command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-remove-at" + ] + }, + { + "description": "menu:deny-set-accelerator -> Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-accelerator" + ] + }, + { + "description": "menu:deny-set-as-app-menu -> Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-app-menu" + ] + }, + { + "description": "menu:deny-set-as-help-menu-for-nsapp -> Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-help-menu-for-nsapp" + ] + }, + { + "description": "menu:deny-set-as-window-menu -> Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-window-menu" + ] + }, + { + "description": "menu:deny-set-as-windows-menu-for-nsapp -> Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-as-windows-menu-for-nsapp" + ] + }, + { + "description": "menu:deny-set-checked -> Denies the set_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-checked" + ] + }, + { + "description": "menu:deny-set-enabled -> Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-enabled" + ] + }, + { + "description": "menu:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-icon" + ] + }, + { + "description": "menu:deny-set-text -> Denies the set_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-set-text" + ] + }, + { + "description": "menu:deny-text -> Denies the text command without any pre-configured scope.", + "type": "string", + "enum": [ + "menu:deny-text" + ] + }, + { + "type": "string", + "enum": [ + "os:default" + ] + }, + { + "description": "os:allow-arch -> Enables the arch command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:allow-arch" + ] + }, + { + "description": "os:allow-exe-extension -> Enables the exe_extension command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:allow-exe-extension" + ] + }, + { + "description": "os:allow-family -> Enables the family command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:allow-family" + ] + }, + { + "description": "os:allow-hostname -> Enables the hostname command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:allow-hostname" + ] + }, + { + "description": "os:allow-locale -> Enables the locale command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:allow-locale" + ] + }, + { + "description": "os:allow-os-type -> Enables the os_type command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:allow-os-type" + ] + }, + { + "description": "os:allow-platform -> Enables the platform command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:allow-platform" + ] + }, + { + "description": "os:allow-version -> Enables the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:allow-version" + ] + }, + { + "description": "os:deny-arch -> Denies the arch command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:deny-arch" + ] + }, + { + "description": "os:deny-exe-extension -> Denies the exe_extension command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:deny-exe-extension" + ] + }, + { + "description": "os:deny-family -> Denies the family command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:deny-family" + ] + }, + { + "description": "os:deny-hostname -> Denies the hostname command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:deny-hostname" + ] + }, + { + "description": "os:deny-locale -> Denies the locale command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:deny-locale" + ] + }, + { + "description": "os:deny-os-type -> Denies the os_type command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:deny-os-type" + ] + }, + { + "description": "os:deny-platform -> Denies the platform command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:deny-platform" + ] + }, + { + "description": "os:deny-version -> Denies the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "os:deny-version" + ] + }, + { + "description": "path:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "path:default" + ] + }, + { + "description": "path:allow-basename -> Enables the basename command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-basename" + ] + }, + { + "description": "path:allow-dirname -> Enables the dirname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-dirname" + ] + }, + { + "description": "path:allow-extname -> Enables the extname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-extname" + ] + }, + { + "description": "path:allow-is-absolute -> Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-is-absolute" + ] + }, + { + "description": "path:allow-join -> Enables the join command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-join" + ] + }, + { + "description": "path:allow-normalize -> Enables the normalize command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-normalize" + ] + }, + { + "description": "path:allow-resolve -> Enables the resolve command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-resolve" + ] + }, + { + "description": "path:allow-resolve-directory -> Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:allow-resolve-directory" + ] + }, + { + "description": "path:deny-basename -> Denies the basename command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-basename" + ] + }, + { + "description": "path:deny-dirname -> Denies the dirname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-dirname" + ] + }, + { + "description": "path:deny-extname -> Denies the extname command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-extname" + ] + }, + { + "description": "path:deny-is-absolute -> Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-is-absolute" + ] + }, + { + "description": "path:deny-join -> Denies the join command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-join" + ] + }, + { + "description": "path:deny-normalize -> Denies the normalize command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-normalize" + ] + }, + { + "description": "path:deny-resolve -> Denies the resolve command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-resolve" + ] + }, + { + "description": "path:deny-resolve-directory -> Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": [ + "path:deny-resolve-directory" + ] + }, + { + "description": "resources:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "resources:default" + ] + }, + { + "description": "resources:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "resources:allow-close" + ] + }, + { + "description": "resources:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "resources:deny-close" + ] + }, + { + "type": "string", + "enum": [ + "shell:default" + ] + }, + { + "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-execute" + ] + }, + { + "description": "shell:allow-kill -> Enables the kill command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-kill" + ] + }, + { + "description": "shell:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-open" + ] + }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-spawn" + ] + }, + { + "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:allow-stdin-write" + ] + }, + { + "description": "shell:deny-execute -> Denies the execute command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-execute" + ] + }, + { + "description": "shell:deny-kill -> Denies the kill command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-kill" + ] + }, + { + "description": "shell:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-open" + ] + }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-spawn" + ] + }, + { + "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": [ + "shell:deny-stdin-write" + ] + }, + { + "description": "tray:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "tray:default" + ] + }, + { + "description": "tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-get-by-id" + ] + }, + { + "description": "tray:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-new" + ] + }, + { + "description": "tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-remove-by-id" + ] + }, + { + "description": "tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-icon" + ] + }, + { + "description": "tray:allow-set-icon-as-template -> Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-icon-as-template" + ] + }, + { + "description": "tray:allow-set-menu -> Enables the set_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-menu" + ] + }, + { + "description": "tray:allow-set-show-menu-on-left-click -> Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-show-menu-on-left-click" + ] + }, + { + "description": "tray:allow-set-temp-dir-path -> Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-temp-dir-path" + ] + }, + { + "description": "tray:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-title" + ] + }, + { + "description": "tray:allow-set-tooltip -> Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-tooltip" + ] + }, + { + "description": "tray:allow-set-visible -> Enables the set_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:allow-set-visible" + ] + }, + { + "description": "tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-get-by-id" + ] + }, + { + "description": "tray:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-new" + ] + }, + { + "description": "tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-remove-by-id" + ] + }, + { + "description": "tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-icon" + ] + }, + { + "description": "tray:deny-set-icon-as-template -> Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-icon-as-template" + ] + }, + { + "description": "tray:deny-set-menu -> Denies the set_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-menu" + ] + }, + { + "description": "tray:deny-set-show-menu-on-left-click -> Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-show-menu-on-left-click" + ] + }, + { + "description": "tray:deny-set-temp-dir-path -> Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-temp-dir-path" + ] + }, + { + "description": "tray:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-title" + ] + }, + { + "description": "tray:deny-set-tooltip -> Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-tooltip" + ] + }, + { + "description": "tray:deny-set-visible -> Denies the set_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "tray:deny-set-visible" + ] + }, + { + "description": "updater:default -> Allows checking for new updates and installing them", + "type": "string", + "enum": [ + "updater:default" + ] + }, + { + "description": "updater:allow-check -> Enables the check command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-check" + ] + }, + { + "description": "updater:allow-download -> Enables the download command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-download" + ] + }, + { + "description": "updater:allow-download-and-install -> Enables the download_and_install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-download-and-install" + ] + }, + { + "description": "updater:allow-install -> Enables the install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:allow-install" + ] + }, + { + "description": "updater:deny-check -> Denies the check command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-check" + ] + }, + { + "description": "updater:deny-download -> Denies the download command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-download" + ] + }, + { + "description": "updater:deny-download-and-install -> Denies the download_and_install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-download-and-install" + ] + }, + { + "description": "updater:deny-install -> Denies the install command without any pre-configured scope.", + "type": "string", + "enum": [ + "updater:deny-install" + ] + }, + { + "description": "webview:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "webview:default" + ] + }, + { + "description": "webview:allow-create-webview -> Enables the create_webview command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-create-webview" + ] + }, + { + "description": "webview:allow-create-webview-window -> Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-create-webview-window" + ] + }, + { + "description": "webview:allow-internal-toggle-devtools -> Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-internal-toggle-devtools" + ] + }, + { + "description": "webview:allow-print -> Enables the print command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-print" + ] + }, + { + "description": "webview:allow-reparent -> Enables the reparent command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-reparent" + ] + }, + { + "description": "webview:allow-set-webview-focus -> Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-focus" + ] + }, + { + "description": "webview:allow-set-webview-position -> Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-position" + ] + }, + { + "description": "webview:allow-set-webview-size -> Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-size" + ] + }, + { + "description": "webview:allow-set-webview-zoom -> Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-set-webview-zoom" + ] + }, + { + "description": "webview:allow-webview-close -> Enables the webview_close command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-webview-close" + ] + }, + { + "description": "webview:allow-webview-position -> Enables the webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-webview-position" + ] + }, + { + "description": "webview:allow-webview-size -> Enables the webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:allow-webview-size" + ] + }, + { + "description": "webview:deny-create-webview -> Denies the create_webview command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-create-webview" + ] + }, + { + "description": "webview:deny-create-webview-window -> Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-create-webview-window" + ] + }, + { + "description": "webview:deny-internal-toggle-devtools -> Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-internal-toggle-devtools" + ] + }, + { + "description": "webview:deny-print -> Denies the print command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-print" + ] + }, + { + "description": "webview:deny-reparent -> Denies the reparent command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-reparent" + ] + }, + { + "description": "webview:deny-set-webview-focus -> Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-focus" + ] + }, + { + "description": "webview:deny-set-webview-position -> Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-position" + ] + }, + { + "description": "webview:deny-set-webview-size -> Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-size" + ] + }, + { + "description": "webview:deny-set-webview-zoom -> Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-set-webview-zoom" + ] + }, + { + "description": "webview:deny-webview-close -> Denies the webview_close command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-webview-close" + ] + }, + { + "description": "webview:deny-webview-position -> Denies the webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-webview-position" + ] + }, + { + "description": "webview:deny-webview-size -> Denies the webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "webview:deny-webview-size" + ] + }, + { + "description": "window:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "window:default" + ] + }, + { + "description": "window:allow-available-monitors -> Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-available-monitors" + ] + }, + { + "description": "window:allow-center -> Enables the center command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-center" + ] + }, + { + "description": "window:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-close" + ] + }, + { + "description": "window:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-create" + ] + }, + { + "description": "window:allow-current-monitor -> Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-current-monitor" + ] + }, + { + "description": "window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-cursor-position" + ] + }, + { + "description": "window:allow-destroy -> Enables the destroy command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-destroy" + ] + }, + { + "description": "window:allow-hide -> Enables the hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-hide" + ] + }, + { + "description": "window:allow-inner-position -> Enables the inner_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-inner-position" + ] + }, + { + "description": "window:allow-inner-size -> Enables the inner_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-inner-size" + ] + }, + { + "description": "window:allow-internal-toggle-maximize -> Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-internal-toggle-maximize" + ] + }, + { + "description": "window:allow-is-closable -> Enables the is_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-closable" + ] + }, + { + "description": "window:allow-is-decorated -> Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-decorated" + ] + }, + { + "description": "window:allow-is-focused -> Enables the is_focused command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-focused" + ] + }, + { + "description": "window:allow-is-fullscreen -> Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-fullscreen" + ] + }, + { + "description": "window:allow-is-maximizable -> Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-maximizable" + ] + }, + { + "description": "window:allow-is-maximized -> Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-maximized" + ] + }, + { + "description": "window:allow-is-minimizable -> Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-minimizable" + ] + }, + { + "description": "window:allow-is-minimized -> Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-minimized" + ] + }, + { + "description": "window:allow-is-resizable -> Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-resizable" + ] + }, + { + "description": "window:allow-is-visible -> Enables the is_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-is-visible" + ] + }, + { + "description": "window:allow-maximize -> Enables the maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-maximize" + ] + }, + { + "description": "window:allow-minimize -> Enables the minimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-minimize" + ] + }, + { + "description": "window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-monitor-from-point" + ] + }, + { + "description": "window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-outer-position" + ] + }, + { + "description": "window:allow-outer-size -> Enables the outer_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-outer-size" + ] + }, + { + "description": "window:allow-primary-monitor -> Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-primary-monitor" + ] + }, + { + "description": "window:allow-request-user-attention -> Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-request-user-attention" + ] + }, + { + "description": "window:allow-scale-factor -> Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-scale-factor" + ] + }, + { + "description": "window:allow-set-always-on-bottom -> Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-always-on-bottom" + ] + }, + { + "description": "window:allow-set-always-on-top -> Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-always-on-top" + ] + }, + { + "description": "window:allow-set-closable -> Enables the set_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-closable" + ] + }, + { + "description": "window:allow-set-content-protected -> Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-content-protected" + ] + }, + { + "description": "window:allow-set-cursor-grab -> Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-grab" + ] + }, + { + "description": "window:allow-set-cursor-icon -> Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-icon" + ] + }, + { + "description": "window:allow-set-cursor-position -> Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-position" + ] + }, + { + "description": "window:allow-set-cursor-visible -> Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-cursor-visible" + ] + }, + { + "description": "window:allow-set-decorations -> Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-decorations" + ] + }, + { + "description": "window:allow-set-effects -> Enables the set_effects command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-effects" + ] + }, + { + "description": "window:allow-set-focus -> Enables the set_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-focus" + ] + }, + { + "description": "window:allow-set-fullscreen -> Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-fullscreen" + ] + }, + { + "description": "window:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-icon" + ] + }, + { + "description": "window:allow-set-ignore-cursor-events -> Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-ignore-cursor-events" + ] + }, + { + "description": "window:allow-set-max-size -> Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-max-size" + ] + }, + { + "description": "window:allow-set-maximizable -> Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-maximizable" + ] + }, + { + "description": "window:allow-set-min-size -> Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-min-size" + ] + }, + { + "description": "window:allow-set-minimizable -> Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-minimizable" + ] + }, + { + "description": "window:allow-set-position -> Enables the set_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-position" + ] + }, + { + "description": "window:allow-set-progress-bar -> Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-progress-bar" + ] + }, + { + "description": "window:allow-set-resizable -> Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-resizable" + ] + }, + { + "description": "window:allow-set-shadow -> Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-shadow" + ] + }, + { + "description": "window:allow-set-size -> Enables the set_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-size" + ] + }, + { + "description": "window:allow-set-skip-taskbar -> Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-skip-taskbar" + ] + }, + { + "description": "window:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-title" + ] + }, + { + "description": "window:allow-set-visible-on-all-workspaces -> Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-set-visible-on-all-workspaces" + ] + }, + { + "description": "window:allow-show -> Enables the show command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-show" + ] + }, + { + "description": "window:allow-start-dragging -> Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-start-dragging" + ] + }, + { + "description": "window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-start-resize-dragging" + ] + }, + { + "description": "window:allow-theme -> Enables the theme command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-theme" + ] + }, + { + "description": "window:allow-title -> Enables the title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-title" + ] + }, + { + "description": "window:allow-toggle-maximize -> Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-toggle-maximize" + ] + }, + { + "description": "window:allow-unmaximize -> Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-unmaximize" + ] + }, + { + "description": "window:allow-unminimize -> Enables the unminimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:allow-unminimize" + ] + }, + { + "description": "window:deny-available-monitors -> Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-available-monitors" + ] + }, + { + "description": "window:deny-center -> Denies the center command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-center" + ] + }, + { + "description": "window:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-close" + ] + }, + { + "description": "window:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-create" + ] + }, + { + "description": "window:deny-current-monitor -> Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-current-monitor" + ] + }, + { + "description": "window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-cursor-position" + ] + }, + { + "description": "window:deny-destroy -> Denies the destroy command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-destroy" + ] + }, + { + "description": "window:deny-hide -> Denies the hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-hide" + ] + }, + { + "description": "window:deny-inner-position -> Denies the inner_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-inner-position" + ] + }, + { + "description": "window:deny-inner-size -> Denies the inner_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-inner-size" + ] + }, + { + "description": "window:deny-internal-toggle-maximize -> Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-internal-toggle-maximize" + ] + }, + { + "description": "window:deny-is-closable -> Denies the is_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-closable" + ] + }, + { + "description": "window:deny-is-decorated -> Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-decorated" + ] + }, + { + "description": "window:deny-is-focused -> Denies the is_focused command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-focused" + ] + }, + { + "description": "window:deny-is-fullscreen -> Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-fullscreen" + ] + }, + { + "description": "window:deny-is-maximizable -> Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-maximizable" + ] + }, + { + "description": "window:deny-is-maximized -> Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-maximized" + ] + }, + { + "description": "window:deny-is-minimizable -> Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-minimizable" + ] + }, + { + "description": "window:deny-is-minimized -> Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-minimized" + ] + }, + { + "description": "window:deny-is-resizable -> Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-resizable" + ] + }, + { + "description": "window:deny-is-visible -> Denies the is_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-is-visible" + ] + }, + { + "description": "window:deny-maximize -> Denies the maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-maximize" + ] + }, + { + "description": "window:deny-minimize -> Denies the minimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-minimize" + ] + }, + { + "description": "window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-monitor-from-point" + ] + }, + { + "description": "window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-outer-position" + ] + }, + { + "description": "window:deny-outer-size -> Denies the outer_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-outer-size" + ] + }, + { + "description": "window:deny-primary-monitor -> Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-primary-monitor" + ] + }, + { + "description": "window:deny-request-user-attention -> Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-request-user-attention" + ] + }, + { + "description": "window:deny-scale-factor -> Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-scale-factor" + ] + }, + { + "description": "window:deny-set-always-on-bottom -> Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-always-on-bottom" + ] + }, + { + "description": "window:deny-set-always-on-top -> Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-always-on-top" + ] + }, + { + "description": "window:deny-set-closable -> Denies the set_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-closable" + ] + }, + { + "description": "window:deny-set-content-protected -> Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-content-protected" + ] + }, + { + "description": "window:deny-set-cursor-grab -> Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-grab" + ] + }, + { + "description": "window:deny-set-cursor-icon -> Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-icon" + ] + }, + { + "description": "window:deny-set-cursor-position -> Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-position" + ] + }, + { + "description": "window:deny-set-cursor-visible -> Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-cursor-visible" + ] + }, + { + "description": "window:deny-set-decorations -> Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-decorations" + ] + }, + { + "description": "window:deny-set-effects -> Denies the set_effects command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-effects" + ] + }, + { + "description": "window:deny-set-focus -> Denies the set_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-focus" + ] + }, + { + "description": "window:deny-set-fullscreen -> Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-fullscreen" + ] + }, + { + "description": "window:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-icon" + ] + }, + { + "description": "window:deny-set-ignore-cursor-events -> Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-ignore-cursor-events" + ] + }, + { + "description": "window:deny-set-max-size -> Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-max-size" + ] + }, + { + "description": "window:deny-set-maximizable -> Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-maximizable" + ] + }, + { + "description": "window:deny-set-min-size -> Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-min-size" + ] + }, + { + "description": "window:deny-set-minimizable -> Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-minimizable" + ] + }, + { + "description": "window:deny-set-position -> Denies the set_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-position" + ] + }, + { + "description": "window:deny-set-progress-bar -> Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-progress-bar" + ] + }, + { + "description": "window:deny-set-resizable -> Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-resizable" + ] + }, + { + "description": "window:deny-set-shadow -> Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-shadow" + ] + }, + { + "description": "window:deny-set-size -> Denies the set_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-size" + ] + }, + { + "description": "window:deny-set-skip-taskbar -> Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-skip-taskbar" + ] + }, + { + "description": "window:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-title" + ] + }, + { + "description": "window:deny-set-visible-on-all-workspaces -> Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-set-visible-on-all-workspaces" + ] + }, + { + "description": "window:deny-show -> Denies the show command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-show" + ] + }, + { + "description": "window:deny-start-dragging -> Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-start-dragging" + ] + }, + { + "description": "window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-start-resize-dragging" + ] + }, + { + "description": "window:deny-theme -> Denies the theme command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-theme" + ] + }, + { + "description": "window:deny-title -> Denies the title command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-title" + ] + }, + { + "description": "window:deny-toggle-maximize -> Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-toggle-maximize" + ] + }, + { + "description": "window:deny-unmaximize -> Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-unmaximize" + ] + }, + { + "description": "window:deny-unminimize -> Denies the unminimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "window:deny-unminimize" + ] + }, + { + "type": "string", + "enum": [ + "window-state:default" + ] + }, + { + "description": "window-state:allow-filename -> Enables the filename command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:allow-filename" + ] + }, + { + "description": "window-state:allow-restore-state -> Enables the restore_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:allow-restore-state" + ] + }, + { + "description": "window-state:allow-save-window-state -> Enables the save_window_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:allow-save-window-state" + ] + }, + { + "description": "window-state:deny-filename -> Denies the filename command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:deny-filename" + ] + }, + { + "description": "window-state:deny-restore-state -> Denies the restore_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:deny-restore-state" + ] + }, + { + "description": "window-state:deny-save-window-state -> Denies the save_window_state command without any pre-configured scope.", + "type": "string", + "enum": [ + "window-state:deny-save-window-state" + ] + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "ShellAllowedArg": { + "description": "A command argument allowed to be executed by the webview API.", + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "description": "A variable that is set while calling the command from the webview API.", + "type": "object", + "required": [ + "validator" + ], + "properties": { + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\n[regex]: https://docs.rs/regex/latest/regex/#syntax", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "ShellAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellAllowedArg" + } + } + ] + } + } +} \ No newline at end of file diff --git a/src-tauri/migrations/20240522031045_theme-settings.sql b/src-tauri/migrations/20240522031045_theme-settings.sql new file mode 100644 index 00000000..57c51e23 --- /dev/null +++ b/src-tauri/migrations/20240522031045_theme-settings.sql @@ -0,0 +1,4 @@ +ALTER TABLE settings + ADD COLUMN theme_dark TEXT DEFAULT 'yaak-dark' NOT NULL; +ALTER TABLE settings + ADD COLUMN theme_light TEXT DEFAULT 'yaak-light' NOT NULL; diff --git a/src-tauri/migrations/20240529143147_more-settings.sql b/src-tauri/migrations/20240529143147_more-settings.sql new file mode 100644 index 00000000..70c247a9 --- /dev/null +++ b/src-tauri/migrations/20240529143147_more-settings.sql @@ -0,0 +1,4 @@ +ALTER TABLE settings ADD COLUMN interface_font_size INTEGER DEFAULT 15 NOT NULL; +ALTER TABLE settings ADD COLUMN interface_scale INTEGER DEFAULT 1 NOT NULL; +ALTER TABLE settings ADD COLUMN editor_font_size INTEGER DEFAULT 13 NOT NULL; +ALTER TABLE settings ADD COLUMN editor_soft_wrap BOOLEAN DEFAULT 1 NOT NULL; diff --git a/src-tauri/plugins/importer-postman/index.mjs b/src-tauri/plugins/importer-postman/index.mjs index fd6d58c9..0e813e99 100644 --- a/src-tauri/plugins/importer-postman/index.mjs +++ b/src-tauri/plugins/importer-postman/index.mjs @@ -131,6 +131,7 @@ function j(e) { form: b(t.formdata).map( (n) => n.src != null ? { enabled: !n.disabled, + contentType: n.contentType ?? null, name: n.key ?? "", file: n.src ?? "" } : { diff --git a/src-tauri/src/analytics.rs b/src-tauri/src/analytics.rs index 1d19741b..e944c3bd 100644 --- a/src-tauri/src/analytics.rs +++ b/src-tauri/src/analytics.rs @@ -1,6 +1,6 @@ use std::fmt::Display; -use log::warn; +use log::{debug, warn}; use serde::{Deserialize, Serialize}; use serde_json::json; use sqlx::types::JsonValue; @@ -19,6 +19,7 @@ const NUM_LAUNCHES_KEY: &str = "num_launches"; #[serde(rename_all = "snake_case")] pub enum AnalyticsResource { App, + Appearance, CookieJar, Dialog, Environment, @@ -29,9 +30,10 @@ pub enum AnalyticsResource { HttpRequest, HttpResponse, KeyValue, - Sidebar, - Workspace, Setting, + Sidebar, + Theme, + Workspace, } impl AnalyticsResource { @@ -187,7 +189,7 @@ pub async fn track_event( // Disable analytics actual sending in dev if is_dev() { - // debug!("track: {} {} {:?}", event, attributes_json, params); + debug!("track: {}", event); return; } @@ -247,4 +249,4 @@ async fn get_id(app_handle: &AppHandle) -> String { pub async fn get_num_launches(app: &AppHandle) -> i32 { get_key_value_int(app, NAMESPACE, NUM_LAUNCHES_KEY, 0).await -} \ No newline at end of file +} diff --git a/src-tauri/src/http.rs b/src-tauri/src/http_request.rs similarity index 93% rename from src-tauri/src/http.rs rename to src-tauri/src/http_request.rs index 88976218..23d25fb3 100644 --- a/src-tauri/src/http.rs +++ b/src-tauri/src/http_request.rs @@ -7,11 +7,11 @@ use std::sync::Arc; use std::time::Duration; use base64::Engine; -use http::{HeaderMap, HeaderName, HeaderValue, Method}; use http::header::{ACCEPT, USER_AGENT}; +use http::{HeaderMap, HeaderName, HeaderValue, Method}; use log::{error, info, warn}; -use reqwest::{multipart, Url}; use reqwest::redirect::Policy; +use reqwest::{multipart, Url}; use sqlx::types::{Json, JsonValue}; use tauri::{Manager, WebviewWindow}; use tokio::sync::oneshot; @@ -89,14 +89,24 @@ pub async fn send_http_request( let uri = match http::Uri::from_str(url_string.as_str()) { Ok(u) => u, Err(e) => { - return response_err(response, e.to_string(), window).await; + return response_err( + response, + format!("Failed to parse URL \"{}\": {}", url_string, e.to_string()), + window, + ) + .await; } }; // Yes, we're parsing both URI and URL because they could return different errors let url = match Url::from_str(uri.to_string().as_str()) { Ok(u) => u, Err(e) => { - return response_err(response, e.to_string(), window).await; + return response_err( + response, + format!("Failed to parse URL \"{}\": {}", url_string, e.to_string()), + window, + ) + .await; } }; @@ -290,7 +300,7 @@ pub async fn send_http_request( .unwrap_or_default(); let name = render::render(name_raw, &workspace, environment_ref); - let part = if file_path.is_empty() { + let mut part = if file_path.is_empty() { multipart::Part::text(render::render( value_raw, &workspace, @@ -311,23 +321,24 @@ pub async fn send_http_request( .as_str() .unwrap_or_default(); - multipart_form = multipart_form.part( - name, - if ct_raw.is_empty() { - part - } else { - let content_type = render::render(ct_raw, &workspace, environment_ref); - let filename = PathBuf::from(file_path) - .file_name() - .unwrap_or_default() - .to_str() - .unwrap_or_default() - .to_string(); - part.file_name(filename) - .mime_str(content_type.as_str()) - .map_err(|e| e.to_string())? - }, - ); + if !ct_raw.is_empty() { + let content_type = render::render(ct_raw, &workspace, environment_ref); + part = part + .mime_str(content_type.as_str()) + .map_err(|e| e.to_string())?; + } + + if !file_path.is_empty() { + let filename = PathBuf::from(file_path) + .file_name() + .unwrap_or_default() + .to_str() + .unwrap_or_default() + .to_string(); + part = part.file_name(filename); + } + + multipart_form = multipart_form.part(name, part); } } headers.remove("Content-Type"); // reqwest will add this automatically diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index bec94c40..1bc5203e 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -6,72 +6,77 @@ extern crate objc; use std::collections::HashMap; use std::env::current_dir; use std::fs; -use std::fs::{create_dir_all, File, read_to_string}; +use std::fs::{create_dir_all, read_to_string, File}; use std::path::PathBuf; use std::process::exit; use std::str::FromStr; use std::time::Duration; -use ::http::Uri; use ::http::uri::InvalidUri; +use ::http::Uri; use base64::Engine; use fern::colors::ColoredLevelConfig; use log::{debug, error, info, warn}; use rand::random; use serde_json::{json, Value}; -use sqlx::{Pool, Sqlite, SqlitePool}; use sqlx::migrate::Migrator; use sqlx::sqlite::SqliteConnectOptions; use sqlx::types::Json; -use tauri::{AppHandle, RunEvent, State, WebviewUrl, WebviewWindow}; -use tauri::{Manager, WindowEvent}; +use sqlx::{Pool, Sqlite, SqlitePool}; use tauri::path::BaseDirectory; #[cfg(target_os = "macos")] use tauri::TitleBarStyle; +use tauri::{AppHandle, LogicalSize, RunEvent, State, WebviewUrl, WebviewWindow}; +use tauri::{Manager, WindowEvent}; use tauri_plugin_log::{fern, Target, TargetKind}; use tauri_plugin_shell::ShellExt; use tokio::sync::Mutex; -use ::grpc::{Code, deserialize_message, serialize_message, ServiceDefinition}; use ::grpc::manager::{DynamicMessage, GrpcHandle}; -use window_ext::TrafficLightWindowExt; +use ::grpc::{deserialize_message, serialize_message, Code, ServiceDefinition}; use crate::analytics::{AnalyticsAction, AnalyticsResource}; use crate::grpc::metadata_to_map; -use crate::http::send_http_request; +use crate::http_request::send_http_request; use crate::models::{ - cancel_pending_grpc_connections, cancel_pending_responses, CookieJar, - create_http_response, delete_all_grpc_connections, delete_all_http_responses, delete_cookie_jar, - delete_environment, delete_folder, delete_grpc_connection, delete_grpc_request, - delete_http_request, delete_http_response, delete_workspace, duplicate_grpc_request, - duplicate_http_request, Environment, EnvironmentVariable, Folder, generate_model_id, - get_cookie_jar, get_environment, get_folder, get_grpc_connection, + cancel_pending_grpc_connections, cancel_pending_responses, create_http_response, + delete_all_grpc_connections, delete_all_http_responses, delete_cookie_jar, delete_environment, + delete_folder, delete_grpc_connection, delete_grpc_request, delete_http_request, + delete_http_response, delete_workspace, duplicate_grpc_request, duplicate_http_request, + generate_model_id, get_cookie_jar, get_environment, get_folder, get_grpc_connection, get_grpc_request, get_http_request, get_http_response, get_key_value_raw, - get_or_create_settings, get_workspace, get_workspace_export_resources, GrpcConnection, GrpcEvent, - GrpcEventType, GrpcRequest, HttpRequest, HttpResponse, - KeyValue, list_cookie_jars, list_environments, list_folders, list_grpc_connections, - list_grpc_events, list_grpc_requests, list_http_requests, list_responses, list_workspaces, - ModelType, set_key_value_raw, Settings, update_response_if_id, update_settings, upsert_cookie_jar, - upsert_environment, upsert_folder, upsert_grpc_connection, upsert_grpc_event, upsert_grpc_request, upsert_http_request, upsert_workspace, - Workspace, WorkspaceExportResources, + get_or_create_settings, get_workspace, get_workspace_export_resources, list_cookie_jars, + list_environments, list_folders, list_grpc_connections, list_grpc_events, list_grpc_requests, + list_http_requests, list_responses, list_workspaces, set_key_value_raw, update_response_if_id, + update_settings, upsert_cookie_jar, upsert_environment, upsert_folder, upsert_grpc_connection, + upsert_grpc_event, upsert_grpc_request, upsert_http_request, upsert_workspace, CookieJar, + Environment, EnvironmentVariable, Folder, GrpcConnection, GrpcEvent, GrpcEventType, + GrpcRequest, HttpRequest, HttpResponse, KeyValue, ModelType, Settings, Workspace, + WorkspaceExportResources, }; use crate::notifications::YaakNotifier; -use crate::plugin::{ImportResult, run_plugin_export_curl, run_plugin_import}; +use crate::plugin::{run_plugin_export_curl, run_plugin_import, ImportResult}; use crate::render::render_request; use crate::updates::{UpdateMode, YaakUpdater}; use crate::window_menu::app_menu; mod analytics; mod grpc; -mod http; +mod http_request; mod models; mod notifications; mod plugin; mod render; +#[cfg(target_os = "macos")] +mod tauri_plugin_mac_window; +#[cfg(target_os = "windows")] +mod tauri_plugin_windows_window; mod updates; -mod window_ext; mod window_menu; +const DEFAULT_WINDOW_WIDTH: f64 = 1100.0; +const DEFAULT_WINDOW_HEIGHT: f64 = 600.0; + async fn migrate_db(app_handle: &AppHandle, db: &Mutex>) -> Result<(), String> { let pool = &*db.lock().await; let p = app_handle @@ -747,16 +752,16 @@ async fn cmd_import_data( ) -> Result { let mut result: Option = None; let plugins = vec![ - "importer-yaak", - "importer-insomnia", "importer-postman", + "importer-insomnia", + "importer-yaak", "importer-curl", ]; - let file = fs::read_to_string(file_path) + let file = read_to_string(file_path) .unwrap_or_else(|_| panic!("Unable to read file {}", file_path)); let file_contents = file.as_str(); for plugin_name in plugins { - let v = plugin::run_plugin_import(&w.app_handle(), plugin_name, file_contents) + let v = run_plugin_import(&w.app_handle(), plugin_name, file_contents) .await .map_err(|e| e.to_string())?; if let Some(r) = v { @@ -1290,6 +1295,15 @@ async fn cmd_update_folder(folder: Folder, w: WebviewWindow) -> Result Result<(), String> { + if !is_dev() { + panic!("Cannot write arbitrary files when not in dev mode"); + } + + fs::write(pathname, contents).map_err(|e| e.to_string()) +} + #[tauri::command] async fn cmd_delete_folder(w: WebviewWindow, folder_id: &str) -> Result { delete_folder(&w, folder_id) @@ -1491,8 +1505,19 @@ async fn cmd_list_workspaces(w: WebviewWindow) -> Result, String> } #[tauri::command] -async fn cmd_new_window(window: WebviewWindow, url: &str) -> Result<(), String> { - create_window(&window.app_handle(), Some(url)); +async fn cmd_new_window(app_handle: AppHandle, url: &str) -> Result<(), String> { + create_window(&app_handle, url); + Ok(()) +} + +#[tauri::command] +async fn cmd_new_nested_window( + window: WebviewWindow, + url: &str, + label: &str, + title: &str, +) -> Result<(), String> { + create_nested_window(&window, label, url, title); Ok(()) } @@ -1519,14 +1544,31 @@ async fn cmd_check_for_updates( #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { - tauri::Builder::default() + let mut builder = tauri::Builder::default() .plugin(tauri_plugin_clipboard_manager::init()) .plugin(tauri_plugin_window_state::Builder::default().build()) .plugin(tauri_plugin_shell::init()) .plugin(tauri_plugin_updater::Builder::new().build()) .plugin(tauri_plugin_dialog::init()) .plugin(tauri_plugin_os::init()) - .plugin(tauri_plugin_fs::init()) + .plugin(tauri_plugin_fs::init()); + + #[cfg(target_os = "windows")] + { + builder = builder.plugin(tauri_plugin_windows_window::init()); + } + + #[cfg(target_os = "macos")] + { + builder = builder.plugin(tauri_plugin_mac_window::init()); + } + + #[cfg(target_os = "linux")] + { + builder = builder; // Don't complain about not being mut + } + + builder .plugin( tauri_plugin_log::Builder::default() .targets([ @@ -1652,6 +1694,7 @@ pub fn run() { cmd_list_http_responses, cmd_list_workspaces, cmd_metadata, + cmd_new_nested_window, cmd_new_window, cmd_request_to_curl, cmd_dismiss_notification, @@ -1667,13 +1710,20 @@ pub fn run() { cmd_update_http_request, cmd_update_settings, cmd_update_workspace, + cmd_write_file_dev, ]) + .register_uri_scheme_protocol("yaak", |_app, _req| { + debug!("Testing yaak protocol"); + tauri::http::Response::builder() + .body("Success".as_bytes().to_vec()) + .unwrap() + }) .build(tauri::generate_context!()) .expect("error while running tauri application") .run(|app_handle, event| { match event { RunEvent::Ready => { - create_window(app_handle, None); + create_window(app_handle, "/"); let h = app_handle.clone(); tauri::async_runtime::spawn(async move { let info = analytics::track_launch_event(&h).await; @@ -1719,36 +1769,30 @@ fn is_dev() -> bool { } } -fn create_window(handle: &AppHandle, url: Option<&str>) -> WebviewWindow { - let menu = app_menu(handle).unwrap(); - - // This causes the window to not be clickable (in AppImage), so disable on Linux - #[cfg(not(target_os = "linux"))] - handle.set_menu(menu).expect("Failed to set app menu"); - - let window_num = handle.webview_windows().len(); - let window_id = format!("wnd_{}", window_num); +fn create_nested_window( + window: &WebviewWindow, + label: &str, + url: &str, + title: &str, +) -> WebviewWindow { + info!("Create new nested window label={label}"); let mut win_builder = tauri::WebviewWindowBuilder::new( - handle, - window_id, - WebviewUrl::App(url.unwrap_or_default().into()), + window, + format!("nested_{}_{}", window.label(), label), + WebviewUrl::App(url.into()), ) .resizable(true) .fullscreen(false) .disable_drag_drop_handler() // Required for frontend Dnd on windows - .inner_size(1100.0, 600.0) - .position( - // Randomly offset so windows don't stack exactly - 100.0 + random::() * 30.0, - 100.0 + random::() * 30.0, - ) - .title(handle.package_info().name.to_string()); + .title(title) + .parent(&window) + .unwrap() + .inner_size(DEFAULT_WINDOW_WIDTH * 0.7, DEFAULT_WINDOW_HEIGHT * 0.9); // Add macOS-only things #[cfg(target_os = "macos")] { win_builder = win_builder - // .menu(app_menu) .hidden_title(true) .title_bar_style(TitleBarStyle::Overlay); } @@ -1756,17 +1800,56 @@ fn create_window(handle: &AppHandle, url: Option<&str>) -> WebviewWindow { // Add non-MacOS things #[cfg(not(target_os = "macos"))] { - // Doesn't seem to work from Rust, here, so we do it in JS win_builder = win_builder.decorations(false); } let win = win_builder.build().expect("failed to build window"); - // Tauri doesn't support shadows when hiding decorations, so we add our own - // #[cfg(any(windows, target_os = "macos"))] - // set_shadow(&win, true).unwrap(); + win +} - let win2 = win.clone(); +fn create_window(handle: &AppHandle, url: &str) -> WebviewWindow { + #[allow(unused_variables)] + let menu = app_menu(handle).unwrap(); + + // This causes the window to not be clickable (in AppImage), so disable on Linux + #[cfg(not(target_os = "linux"))] + handle.set_menu(menu).expect("Failed to set app menu"); + + let window_num = handle.webview_windows().len(); + let label = format!("main_{}", window_num); + info!("Create new window label={label}"); + let mut win_builder = + tauri::WebviewWindowBuilder::new(handle, label, WebviewUrl::App(url.into())) + .resizable(true) + .fullscreen(false) + .disable_drag_drop_handler() // Required for frontend Dnd on windows + .inner_size(DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT) + .position( + // Randomly offset so windows don't stack exactly + 100.0 + random::() * 30.0, + 100.0 + random::() * 30.0, + ) + .title(handle.package_info().name.to_string()); + + // Add macOS-only things + #[cfg(target_os = "macos")] + { + win_builder = win_builder + .hidden_title(true) + .title_bar_style(TitleBarStyle::Overlay); + } + + // Add non-MacOS things + #[cfg(not(target_os = "macos"))] + { + // Doesn't seem to work from Rust, here, so we do it in main.tsx + win_builder = win_builder.decorations(false); + } + + let win = win_builder.build().expect("failed to build window"); + + let webview_window = win.clone(); win.on_menu_event(move |w, event| { if !w.is_focused().unwrap() { return; @@ -1775,48 +1858,39 @@ fn create_window(handle: &AppHandle, url: Option<&str>) -> WebviewWindow { match event.id().0.as_str() { "quit" => exit(0), "close" => w.close().unwrap(), - "zoom_reset" => w.emit("zoom", 0).unwrap(), - "zoom_in" => w.emit("zoom", 1).unwrap(), - "zoom_out" => w.emit("zoom", -1).unwrap(), + "zoom_reset" => w.emit("zoom_reset", true).unwrap(), + "zoom_in" => w.emit("zoom_in", true).unwrap(), + "zoom_out" => w.emit("zoom_out", true).unwrap(), "settings" => w.emit("settings", true).unwrap(), - "duplicate_request" => w.emit("duplicate_request", true).unwrap(), - "refresh" => win2.eval("location.reload()").unwrap(), "open_feedback" => { - _ = win2 + _ = webview_window .app_handle() .shell() .open("https://yaak.canny.io", None) } - "toggle_devtools" => { - if win2.is_devtools_open() { - win2.close_devtools(); + + // Commands for development + "dev.reset_size" => webview_window + .set_size(LogicalSize::new( + DEFAULT_WINDOW_WIDTH, + DEFAULT_WINDOW_HEIGHT, + )) + .unwrap(), + "dev.refresh" => webview_window.eval("location.reload()").unwrap(), + "dev.generate_theme_css" => { + w.emit("generate_theme_css", true).unwrap(); + } + "dev.toggle_devtools" => { + if webview_window.is_devtools_open() { + webview_window.close_devtools(); } else { - win2.open_devtools(); + webview_window.open_devtools(); } } _ => {} } }); - let win3 = win.clone(); - win.on_window_event(move |e| { - let apply_offset = || { - win3.position_traffic_lights(); - }; - - match e { - WindowEvent::Resized(..) => apply_offset(), - WindowEvent::ThemeChanged(..) => apply_offset(), - WindowEvent::Focused(..) => apply_offset(), - WindowEvent::ScaleFactorChanged { .. } => apply_offset(), - WindowEvent::CloseRequested { .. } => { - // api.prevent_close(); - } - _ => {} - } - }); - - win.position_traffic_lights(); win } diff --git a/src-tauri/src/models.rs b/src-tauri/src/models.rs index fcaf4409..2982526f 100644 --- a/src-tauri/src/models.rs +++ b/src-tauri/src/models.rs @@ -52,7 +52,13 @@ pub struct Settings { pub updated_at: NaiveDateTime, pub theme: String, pub appearance: String, + pub theme_dark: String, + pub theme_light: String, pub update_channel: String, + pub interface_font_size: i64, + pub interface_scale: i64, + pub editor_font_size: i64, + pub editor_soft_wrap: bool, } #[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize, Default)] @@ -883,7 +889,9 @@ async fn get_settings(mgr: &impl Manager) -> Result Settings, r#" SELECT - id, model, created_at, updated_at, theme, appearance, update_channel + id, model, created_at, updated_at, theme, appearance, + theme_dark, theme_light, update_channel, + interface_font_size, interface_scale, editor_font_size, editor_soft_wrap FROM settings WHERE id = 'default' "#, @@ -919,12 +927,19 @@ pub async fn update_settings( sqlx::query!( r#" UPDATE settings SET ( - theme, appearance, update_channel - ) = (?, ?, ?) WHERE id = 'default'; + theme, appearance, theme_dark, theme_light, update_channel, + interface_font_size, interface_scale, editor_font_size, editor_soft_wrap + ) = (?, ?, ?, ?, ?, ?, ?, ?, ?) WHERE id = 'default'; "#, settings.theme, settings.appearance, - settings.update_channel + settings.theme_dark, + settings.theme_light, + settings.update_channel, + settings.interface_font_size, + settings.interface_scale, + settings.editor_font_size, + settings.editor_soft_wrap, ) .execute(&db) .await?; diff --git a/src-tauri/src/plugin.rs b/src-tauri/src/plugin.rs index c55ac836..1fd56d14 100644 --- a/src-tauri/src/plugin.rs +++ b/src-tauri/src/plugin.rs @@ -1,16 +1,16 @@ use std::rc::Rc; -use boa_engine::{ - Context, js_string, JsNativeError, JsValue, Module, module::SimpleModuleLoader, - property::Attribute, Source, -}; use boa_engine::builtins::promise::PromiseState; +use boa_engine::{ + js_string, module::SimpleModuleLoader, property::Attribute, Context, JsNativeError, JsValue, + Module, Source, +}; use boa_runtime::Console; use log::{debug, error}; use serde::{Deserialize, Serialize}; use serde_json::json; -use tauri::{AppHandle, Manager}; use tauri::path::BaseDirectory; +use tauri::{AppHandle, Manager}; use crate::models::{HttpRequest, WorkspaceExportResources}; diff --git a/src-tauri/src/tauri_plugin_mac_window.rs b/src-tauri/src/tauri_plugin_mac_window.rs new file mode 100644 index 00000000..3cfbd439 --- /dev/null +++ b/src-tauri/src/tauri_plugin_mac_window.rs @@ -0,0 +1,450 @@ +use hex_color::HexColor; +use objc::{msg_send, sel, sel_impl}; +use rand::{distributions::Alphanumeric, Rng}; +use tauri::{ + plugin::{Builder, TauriPlugin}, + Manager, Runtime, Window, WindowEvent, +}; + +const WINDOW_CONTROL_PAD_X: f64 = 13.0; +const WINDOW_CONTROL_PAD_Y: f64 = 18.0; + +struct UnsafeWindowHandle(*mut std::ffi::c_void); + +unsafe impl Send for UnsafeWindowHandle {} + +unsafe impl Sync for UnsafeWindowHandle {} + +pub fn init() -> TauriPlugin { + Builder::new("mac_window") + .on_window_ready(|window| { + #[cfg(target_os = "macos")] + { + setup_traffic_light_positioner(&window); + let h = window.app_handle(); + + let window_for_theme = window.clone(); + let id1 = h.listen("yaak_bg_changed", move |ev| { + let payload = serde_json::from_str::<&str>(ev.payload()).unwrap().trim(); + let color = HexColor::parse_rgb(payload).unwrap(); + update_window_theme(window_for_theme.clone(), color); + }); + + let window_for_title = window.clone(); + let id2 = h.listen("yaak_title_changed", move |ev| { + let payload = serde_json::from_str::<&str>(ev.payload()).unwrap().trim(); + update_window_title(window_for_title.clone(), payload.to_string()); + }); + + let h = h.clone(); + window.on_window_event(move |e| { + match e { + WindowEvent::Destroyed => { + h.unlisten(id1); + h.unlisten(id2); + } + _ => {} + }; + }); + } + return; + }) + .build() +} + +#[cfg(target_os = "macos")] +fn update_window_title(window: Window, title: String) { + use cocoa::{appkit::NSWindow, base::nil, foundation::NSString}; + + unsafe { + let window_handle = UnsafeWindowHandle(window.ns_window().unwrap()); + + let window2 = window.clone(); + let label = window.label().to_string(); + let _ = window.run_on_main_thread(move || { + let win_title = NSString::alloc(nil).init_str(&title); + let handle = window_handle; + NSWindow::setTitle_(handle.0 as cocoa::base::id, win_title); + position_traffic_lights( + UnsafeWindowHandle(window2.ns_window().expect("Failed to create window handle")), + WINDOW_CONTROL_PAD_X, + WINDOW_CONTROL_PAD_Y, + label, + ); + }); + } +} + +#[cfg(target_os = "macos")] +fn update_window_theme(window: Window, color: HexColor) { + use cocoa::appkit::{ + NSAppearance, NSAppearanceNameVibrantDark, NSAppearanceNameVibrantLight, NSWindow, + }; + + let brightness = (color.r as u64 + color.g as u64 + color.b as u64) / 3; + let label = window.label().to_string(); + + unsafe { + let window_handle = UnsafeWindowHandle(window.ns_window().unwrap()); + let window2 = window.clone(); + let _ = window.run_on_main_thread(move || { + let handle = window_handle; + + let selected_appearance = if brightness >= 128 { + NSAppearance(NSAppearanceNameVibrantLight) + } else { + NSAppearance(NSAppearanceNameVibrantDark) + }; + + NSWindow::setAppearance(handle.0 as cocoa::base::id, selected_appearance); + position_traffic_lights( + UnsafeWindowHandle(window2.ns_window().expect("Failed to create window handle")), + WINDOW_CONTROL_PAD_X, + WINDOW_CONTROL_PAD_Y, + label, + ); + }); + } +} + +#[cfg(target_os = "macos")] +fn position_traffic_lights(ns_window_handle: UnsafeWindowHandle, x: f64, y: f64, label: String) { + if label.starts_with("nested_") { + return; + } + + use cocoa::appkit::{NSView, NSWindow, NSWindowButton}; + use cocoa::foundation::NSRect; + + let ns_window = ns_window_handle.0 as cocoa::base::id; + unsafe { + let close = ns_window.standardWindowButton_(NSWindowButton::NSWindowCloseButton); + let miniaturize = + ns_window.standardWindowButton_(NSWindowButton::NSWindowMiniaturizeButton); + let zoom = ns_window.standardWindowButton_(NSWindowButton::NSWindowZoomButton); + + let title_bar_container_view = close.superview().superview(); + + let close_rect: NSRect = msg_send![close, frame]; + let button_height = close_rect.size.height; + + let title_bar_frame_height = button_height + y; + let mut title_bar_rect = NSView::frame(title_bar_container_view); + title_bar_rect.size.height = title_bar_frame_height; + title_bar_rect.origin.y = NSView::frame(ns_window).size.height - title_bar_frame_height; + let _: () = msg_send![title_bar_container_view, setFrame: title_bar_rect]; + + let window_buttons = vec![close, miniaturize, zoom]; + let space_between = NSView::frame(miniaturize).origin.x - NSView::frame(close).origin.x; + + for (i, button) in window_buttons.into_iter().enumerate() { + let mut rect: NSRect = NSView::frame(button); + rect.origin.x = x + (i as f64 * space_between); + button.setFrameOrigin(rect.origin); + } + } +} + +#[cfg(target_os = "macos")] +#[derive(Debug)] +struct WindowState { + window: Window, +} + +#[cfg(target_os = "macos")] +pub fn setup_traffic_light_positioner(window: &Window) { + use cocoa::appkit::NSWindow; + use cocoa::base::{id, BOOL}; + use cocoa::delegate; + use cocoa::foundation::NSUInteger; + use objc::runtime::{Object, Sel}; + use std::ffi::c_void; + + position_traffic_lights( + UnsafeWindowHandle(window.ns_window().expect("Failed to create window handle")), + WINDOW_CONTROL_PAD_X, + WINDOW_CONTROL_PAD_Y, + window.label().to_string(), + ); + + // Ensure they stay in place while resizing the window. + fn with_window_state) -> T, T>( + this: &Object, + func: F, + ) { + let ptr = unsafe { + let x: *mut c_void = *this.get_ivar("app_box"); + &mut *(x as *mut WindowState) + }; + func(ptr); + } + + unsafe { + let ns_win = window + .ns_window() + .expect("NS Window should exist to mount traffic light delegate.") + as id; + + let current_delegate: id = ns_win.delegate(); + + extern "C" fn on_window_should_close(this: &Object, _cmd: Sel, sender: id) -> BOOL { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + msg_send![super_del, windowShouldClose: sender] + } + } + extern "C" fn on_window_will_close(this: &Object, _cmd: Sel, notification: id) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowWillClose: notification]; + } + } + extern "C" fn on_window_did_resize(this: &Object, _cmd: Sel, notification: id) { + unsafe { + with_window_state(&*this, |state: &mut WindowState| { + let id = state + .window + .ns_window() + .expect("NS window should exist on state to handle resize") + as id; + + position_traffic_lights( + UnsafeWindowHandle(id as *mut c_void), + WINDOW_CONTROL_PAD_X, + WINDOW_CONTROL_PAD_Y, + state.window.label().to_string(), + ); + }); + + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowDidResize: notification]; + } + } + extern "C" fn on_window_did_move(this: &Object, _cmd: Sel, notification: id) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowDidMove: notification]; + } + } + extern "C" fn on_window_did_change_backing_properties( + this: &Object, + _cmd: Sel, + notification: id, + ) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowDidChangeBackingProperties: notification]; + } + } + extern "C" fn on_window_did_become_key(this: &Object, _cmd: Sel, notification: id) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowDidBecomeKey: notification]; + } + } + extern "C" fn on_window_did_resign_key(this: &Object, _cmd: Sel, notification: id) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowDidResignKey: notification]; + } + } + extern "C" fn on_dragging_entered(this: &Object, _cmd: Sel, notification: id) -> BOOL { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + msg_send![super_del, draggingEntered: notification] + } + } + extern "C" fn on_prepare_for_drag_operation( + this: &Object, + _cmd: Sel, + notification: id, + ) -> BOOL { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + msg_send![super_del, prepareForDragOperation: notification] + } + } + extern "C" fn on_perform_drag_operation(this: &Object, _cmd: Sel, sender: id) -> BOOL { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + msg_send![super_del, performDragOperation: sender] + } + } + extern "C" fn on_conclude_drag_operation(this: &Object, _cmd: Sel, notification: id) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, concludeDragOperation: notification]; + } + } + extern "C" fn on_dragging_exited(this: &Object, _cmd: Sel, notification: id) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, draggingExited: notification]; + } + } + extern "C" fn on_window_will_use_full_screen_presentation_options( + this: &Object, + _cmd: Sel, + window: id, + proposed_options: NSUInteger, + ) -> NSUInteger { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + msg_send![super_del, window: window willUseFullScreenPresentationOptions: proposed_options] + } + } + extern "C" fn on_window_did_enter_full_screen( + this: &Object, + _cmd: Sel, + notification: id, + ) { + unsafe { + with_window_state(&*this, |state: &mut WindowState| { + state + .window + .emit("did-enter-fullscreen", ()) + .expect("Failed to emit event"); + }); + + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowDidEnterFullScreen: notification]; + } + } + extern "C" fn on_window_will_enter_full_screen( + this: &Object, + _cmd: Sel, + notification: id, + ) { + unsafe { + with_window_state(&*this, |state: &mut WindowState| { + state + .window + .emit("will-enter-fullscreen", ()) + .expect("Failed to emit event"); + }); + + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowWillEnterFullScreen: notification]; + } + } + extern "C" fn on_window_did_exit_full_screen( + this: &Object, + _cmd: Sel, + notification: id, + ) { + unsafe { + with_window_state(&*this, |state: &mut WindowState| { + state + .window + .emit("did-exit-fullscreen", ()) + .expect("Failed to emit event"); + + let id = state.window.ns_window().expect("Failed to emit event") as id; + position_traffic_lights( + UnsafeWindowHandle(id as *mut c_void), + WINDOW_CONTROL_PAD_X, + WINDOW_CONTROL_PAD_Y, + state.window.label().to_string(), + ); + }); + + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowDidExitFullScreen: notification]; + } + } + extern "C" fn on_window_will_exit_full_screen( + this: &Object, + _cmd: Sel, + notification: id, + ) { + unsafe { + with_window_state(&*this, |state: &mut WindowState| { + state + .window + .emit("will-exit-fullscreen", ()) + .expect("Failed to emit event"); + }); + + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowWillExitFullScreen: notification]; + } + } + extern "C" fn on_window_did_fail_to_enter_full_screen( + this: &Object, + _cmd: Sel, + window: id, + ) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, windowDidFailToEnterFullScreen: window]; + } + } + extern "C" fn on_effective_appearance_did_change( + this: &Object, + _cmd: Sel, + notification: id, + ) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![super_del, effectiveAppearanceDidChange: notification]; + } + } + extern "C" fn on_effective_appearance_did_changed_on_main_thread( + this: &Object, + _cmd: Sel, + notification: id, + ) { + unsafe { + let super_del: id = *this.get_ivar("super_delegate"); + let _: () = msg_send![ + super_del, + effectiveAppearanceDidChangedOnMainThread: notification + ]; + } + } + + // Are we de-allocing this properly ? (I miss safe Rust :( ) + let window_label = window.label().to_string(); + + let app_state = WindowState { + window: window.clone(), + }; + let app_box = Box::into_raw(Box::new(app_state)) as *mut c_void; + let random_str: String = rand::thread_rng() + .sample_iter(&Alphanumeric) + .take(20) + .map(char::from) + .collect(); + + // We need to ensure we have a unique delegate name, otherwise we will panic while trying to create a duplicate + // delegate with the same name. + let delegate_name = format!("windowDelegate_{}_{}", window_label, random_str); + + ns_win.setDelegate_(delegate!(&delegate_name, { + window: id = ns_win, + app_box: *mut c_void = app_box, + toolbar: id = cocoa::base::nil, + super_delegate: id = current_delegate, + (windowShouldClose:) => on_window_should_close as extern fn(&Object, Sel, id) -> BOOL, + (windowWillClose:) => on_window_will_close as extern fn(&Object, Sel, id), + (windowDidResize:) => on_window_did_resize:: as extern fn(&Object, Sel, id), + (windowDidMove:) => on_window_did_move as extern fn(&Object, Sel, id), + (windowDidChangeBackingProperties:) => on_window_did_change_backing_properties as extern fn(&Object, Sel, id), + (windowDidBecomeKey:) => on_window_did_become_key as extern fn(&Object, Sel, id), + (windowDidResignKey:) => on_window_did_resign_key as extern fn(&Object, Sel, id), + (draggingEntered:) => on_dragging_entered as extern fn(&Object, Sel, id) -> BOOL, + (prepareForDragOperation:) => on_prepare_for_drag_operation as extern fn(&Object, Sel, id) -> BOOL, + (performDragOperation:) => on_perform_drag_operation as extern fn(&Object, Sel, id) -> BOOL, + (concludeDragOperation:) => on_conclude_drag_operation as extern fn(&Object, Sel, id), + (draggingExited:) => on_dragging_exited as extern fn(&Object, Sel, id), + (window:willUseFullScreenPresentationOptions:) => on_window_will_use_full_screen_presentation_options as extern fn(&Object, Sel, id, NSUInteger) -> NSUInteger, + (windowDidEnterFullScreen:) => on_window_did_enter_full_screen:: as extern fn(&Object, Sel, id), + (windowWillEnterFullScreen:) => on_window_will_enter_full_screen:: as extern fn(&Object, Sel, id), + (windowDidExitFullScreen:) => on_window_did_exit_full_screen:: as extern fn(&Object, Sel, id), + (windowWillExitFullScreen:) => on_window_will_exit_full_screen:: as extern fn(&Object, Sel, id), + (windowDidFailToEnterFullScreen:) => on_window_did_fail_to_enter_full_screen as extern fn(&Object, Sel, id), + (effectiveAppearanceDidChange:) => on_effective_appearance_did_change as extern fn(&Object, Sel, id), + (effectiveAppearanceDidChangedOnMainThread:) => on_effective_appearance_did_changed_on_main_thread as extern fn(&Object, Sel, id) + })) + } +} diff --git a/src-tauri/src/tauri_plugin_windows_window.rs b/src-tauri/src/tauri_plugin_windows_window.rs new file mode 100644 index 00000000..d40ad003 --- /dev/null +++ b/src-tauri/src/tauri_plugin_windows_window.rs @@ -0,0 +1,97 @@ +use hex_color::HexColor; +use tauri::{Manager, Runtime, Window, WindowEvent}; + +use std::mem::transmute; +use std::{ffi::c_void, mem::size_of, ptr}; +use tauri::plugin::{Builder, TauriPlugin}; + +use windows::Win32::UI::Controls::{ + WTA_NONCLIENT, WTNCA_NODRAWICON, WTNCA_NOMIRRORHELP, WTNCA_NOSYSMENU, +}; + +use windows::Win32::Foundation::COLORREF; +use windows::Win32::Foundation::{BOOL, HWND}; +use windows::Win32::Graphics::Dwm::DwmSetWindowAttribute; +use windows::Win32::Graphics::Dwm::DWMWA_CAPTION_COLOR; +use windows::Win32::Graphics::Dwm::DWMWA_USE_IMMERSIVE_DARK_MODE; +use windows::Win32::UI::Controls::SetWindowThemeAttribute; +use windows::Win32::UI::Controls::WTNCA_NODRAWCAPTION; + +pub fn init() -> TauriPlugin { + Builder::new("windows_window") + .on_window_ready(|window| { + #[cfg(target_os = "windows")] + setup_win_window(window); + return; + }) + .build() +} + +fn hex_color_to_colorref(color: HexColor) -> COLORREF { + // TODO: Remove this unsafe, This operation doesn't need to be unsafe! + unsafe { COLORREF(transmute::<[u8; 4], u32>([color.r, color.g, color.b, 0])) } +} + +struct WinThemeAttribute { + #[allow(dead_code)] + flag: u32, + #[allow(dead_code)] + mask: u32, +} + +#[cfg(target_os = "windows")] +fn update_bg_color(hwnd: &HWND, bg_color: HexColor) { + let use_dark_mode = BOOL::from(true); + + let final_color = hex_color_to_colorref(bg_color); + + unsafe { + DwmSetWindowAttribute( + HWND(hwnd.0), + DWMWA_USE_IMMERSIVE_DARK_MODE, + ptr::addr_of!(use_dark_mode) as *const c_void, + size_of::().try_into().unwrap(), + ) + .unwrap(); + + DwmSetWindowAttribute( + HWND(hwnd.0), + DWMWA_CAPTION_COLOR, + ptr::addr_of!(final_color) as *const c_void, + size_of::().try_into().unwrap(), + ) + .unwrap(); + + let flags = WTNCA_NODRAWCAPTION | WTNCA_NODRAWICON; + let mask = WTNCA_NODRAWCAPTION | WTNCA_NODRAWICON | WTNCA_NOSYSMENU | WTNCA_NOMIRRORHELP; + let options = WinThemeAttribute { flag: flags, mask }; + + SetWindowThemeAttribute( + HWND(hwnd.0), + WTA_NONCLIENT, + ptr::addr_of!(options) as *const c_void, + size_of::().try_into().unwrap(), + ) + .unwrap(); + } +} + +#[cfg(target_os = "windows")] +pub fn setup_win_window(window: Window) { + let win_handle = window.hwnd().unwrap(); + let win_clone = win_handle.clone(); + + let event_id = window.listen("yaak_bg_changed", move |ev| { + let payload = serde_json::from_str::<&str>(ev.payload()).unwrap().trim(); + let color = HexColor::parse_rgb(payload).unwrap(); + update_bg_color(&HWND(win_clone.0), color); + }); + + let h = window.app_handle().clone(); + window.on_window_event(move |e| match e { + WindowEvent::Destroyed => { + h.unlisten(event_id); + } + _ => {} + }) +} diff --git a/src-tauri/src/updates.rs b/src-tauri/src/updates.rs index e65c25ab..414ae59c 100644 --- a/src-tauri/src/updates.rs +++ b/src-tauri/src/updates.rs @@ -19,6 +19,7 @@ pub struct YaakUpdater { pub enum UpdateMode { Stable, Beta, + Alpha, } impl Display for UpdateMode { @@ -26,6 +27,7 @@ impl Display for UpdateMode { let s = match self { UpdateMode::Stable => "stable", UpdateMode::Beta => "beta", + UpdateMode::Alpha => "alpha", }; write!(f, "{}", s) } @@ -35,6 +37,7 @@ impl UpdateMode { pub fn new(mode: &str) -> UpdateMode { match mode { "beta" => UpdateMode::Beta, + "alpha" => UpdateMode::Alpha, _ => UpdateMode::Stable, } } @@ -53,13 +56,8 @@ impl YaakUpdater { ) -> Result { self.last_update_check = SystemTime::now(); - let enabled = !is_dev(); - info!("Checking for updates mode={} enabled={}", mode, enabled); + info!("Checking for updates mode={}", mode); - if !enabled { - return Ok(false); - } - let update_check_result = app_handle .updater_builder() .header("X-Update-Mode", mode.to_string())? @@ -67,8 +65,7 @@ impl YaakUpdater { .check() .await; - match update_check_result - { + match update_check_result { Ok(Some(update)) => { let h = app_handle.clone(); app_handle @@ -121,6 +118,11 @@ impl YaakUpdater { return Ok(false); } + // Don't check if dev + if is_dev() { + return Ok(false); + } + self.force_check(app_handle, mode).await } } diff --git a/src-tauri/src/window_ext.rs b/src-tauri/src/window_ext.rs deleted file mode 100644 index 6126277c..00000000 --- a/src-tauri/src/window_ext.rs +++ /dev/null @@ -1,53 +0,0 @@ -use tauri::WebviewWindow; - -const TRAFFIC_LIGHT_OFFSET_X: f64 = 13.0; -const TRAFFIC_LIGHT_OFFSET_Y: f64 = 18.0; - -pub trait TrafficLightWindowExt { - fn position_traffic_lights(&self); -} - -impl TrafficLightWindowExt for WebviewWindow { - #[cfg(not(target_os = "macos"))] - fn position_traffic_lights(&self) { - // No-op on other platforms - } - - #[cfg(target_os = "macos")] - fn position_traffic_lights(&self) { - use cocoa::appkit::{NSView, NSWindow, NSWindowButton}; - use cocoa::foundation::NSRect; - - let window = self.ns_window().unwrap() as cocoa::base::id; - - let x = TRAFFIC_LIGHT_OFFSET_X; - let y = TRAFFIC_LIGHT_OFFSET_Y; - - unsafe { - let close = window.standardWindowButton_(NSWindowButton::NSWindowCloseButton); - let miniaturize = - window.standardWindowButton_(NSWindowButton::NSWindowMiniaturizeButton); - let zoom = window.standardWindowButton_(NSWindowButton::NSWindowZoomButton); - - let title_bar_container_view = close.superview().superview(); - - let close_rect: NSRect = msg_send![close, frame]; - let button_height = close_rect.size.height; - - let title_bar_frame_height = button_height + y; - let mut title_bar_rect = NSView::frame(title_bar_container_view); - title_bar_rect.size.height = title_bar_frame_height; - title_bar_rect.origin.y = NSView::frame(window).size.height - title_bar_frame_height; - let _: () = msg_send![title_bar_container_view, setFrame: title_bar_rect]; - - let window_buttons = vec![close, miniaturize, zoom]; - let space_between = NSView::frame(miniaturize).origin.x - NSView::frame(close).origin.x; - - for (i, button) in window_buttons.into_iter().enumerate() { - let mut rect: NSRect = NSView::frame(button); - rect.origin.x = x + (i as f64 * space_between); - button.setFrameOrigin(rect.origin); - } - } - } -} diff --git a/src-tauri/src/window_menu.rs b/src-tauri/src/window_menu.rs index 773af11c..d9739634 100644 --- a/src-tauri/src/window_menu.rs +++ b/src-tauri/src/window_menu.rs @@ -126,12 +126,16 @@ pub fn app_menu(app_handle: &AppHandle) -> tauri::Result> { "Develop", true, &[ - &MenuItemBuilder::with_id("refresh".to_string(), "Refresh") + &MenuItemBuilder::with_id("dev.refresh".to_string(), "Refresh") .accelerator("CmdOrCtrl+Shift+r") .build(app_handle)?, - &MenuItemBuilder::with_id("toggle_devtools".to_string(), "Open Devtools") + &MenuItemBuilder::with_id("dev.toggle_devtools".to_string(), "Open Devtools") .accelerator("CmdOrCtrl+Option+i") .build(app_handle)?, + &MenuItemBuilder::with_id("dev.reset_size".to_string(), "Reset Size") + .build(app_handle)?, + &MenuItemBuilder::with_id("dev.generate_theme_css".to_string(), "Generate Theme CSS") + .build(app_handle)?, ], )?, ], diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 6300764d..7cac88fb 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -6,7 +6,7 @@ "frontendDist": "../dist" }, "productName": "Yaak", - "version": "2024.4.2", + "version": "2024.5.0", "identifier": "app.yaak.desktop", "app": { "withGlobalTauri": false, @@ -22,6 +22,14 @@ } }, "plugins": { + "deep-link": { + "mobile": [], + "desktop": { + "schemes": [ + "yaak" + ] + } + }, "updater": { "endpoints": [ "https://update.yaak.app/check/{{target}}/{{arch}}/{{current_version}}" @@ -42,13 +50,13 @@ "icons/release/icon.icns", "icons/release/icon.ico" ], - "longDescription": "The best cross-platform visual API client", + "longDescription": "A cross-platform desktop app for interacting with REST, GraphQL, and gRPC", "resources": [ "migrations/*", "plugins/*", "protoc-vendored/include/*" ], - "shortDescription": "The best API client", + "shortDescription": "Desktop API client", "targets": [ "deb", "appimage", @@ -57,6 +65,9 @@ "dmg", "updater" ], + "iOS": { + "developmentTeam": "7PU3P6ELJ8" + }, "macOS": { "exceptionDomain": "", "entitlements": "macos/entitlements.plist", diff --git a/src-web/components/AppRouter.tsx b/src-web/components/AppRouter.tsx index 40939be4..70f96a4b 100644 --- a/src-web/components/AppRouter.tsx +++ b/src-web/components/AppRouter.tsx @@ -3,6 +3,7 @@ import { routePaths, useAppRoutes } from '../hooks/useAppRoutes'; import { DefaultLayout } from './DefaultLayout'; import { RedirectToLatestWorkspace } from './RedirectToLatestWorkspace'; import RouteError from './RouteError'; +import { Settings } from './Settings/Settings'; import Workspace from './Workspace'; const router = createBrowserRouter([ @@ -36,6 +37,12 @@ const router = createBrowserRouter([ path: '/workspaces/:workspaceId/environments/:environmentId/requests/:requestId', element: , }, + { + path: routePaths.workspaceSettings({ + workspaceId: ':workspaceId', + }), + element: , + }, ], }, ]); diff --git a/src-web/components/BinaryFileEditor.tsx b/src-web/components/BinaryFileEditor.tsx index f54a3dea..cb742039 100644 --- a/src-web/components/BinaryFileEditor.tsx +++ b/src-web/components/BinaryFileEditor.tsx @@ -45,11 +45,11 @@ export function BinaryFileEditor({ return ( - - -

+
{/* Special character to insert ltr text in rtl element without making things wonky */} ‎ {filePath ?? 'Select File'} @@ -57,22 +57,22 @@ export function BinaryFileEditor({ {filePath != null && mimeType !== contentType && !ignoreContentType.value && ( -
+
Set Content-Type header
{mimeType} for current request?
+ - )} diff --git a/src-web/components/CommandPalette.tsx b/src-web/components/CommandPalette.tsx index a781e1fa..92c2f5c6 100644 --- a/src-web/components/CommandPalette.tsx +++ b/src-web/components/CommandPalette.tsx @@ -1,6 +1,6 @@ import classNames from 'classnames'; import type { ReactNode } from 'react'; -import { useMemo, useCallback, useState } from 'react'; +import { useCallback, useMemo, useState } from 'react'; import { useActiveEnvironmentId } from '../hooks/useActiveEnvironmentId'; import { useAppRoutes } from '../hooks/useAppRoutes'; import { getRecentEnvironments } from '../hooks/useRecentEnvironments'; @@ -117,8 +117,8 @@ function CommandPaletteItem({
{activeEvent.error && ( -
+
{activeEvent.error}
)} @@ -183,21 +181,21 @@ function EventRow({ className={classNames( 'w-full grid grid-cols-[auto_minmax(0,3fr)_auto] gap-2 items-center text-left', 'px-1.5 py-1 font-mono cursor-default group focus:outline-none rounded', - isActive && '!bg-highlight text-gray-900', - 'text-gray-800 hover:text-gray-900', + isActive && '!bg-background-highlight-secondary !text-fg', + 'text-fg-subtle hover:text-fg', )} > 0) - ? 'text-orange-600' + ? 'text-fg-danger' : eventType === 'connection_end' - ? 'text-green-600' - : 'text-gray-700' + ? 'text-fg-success' + : 'text-fg-subtle' } title={ eventType === 'server_message' @@ -222,11 +220,11 @@ function EventRow({ : 'info' } /> -
+
{content.slice(0, 1000)} - {error && ({error})} + {error && ({error})}
-
+
{format(createdAt + 'Z', 'HH:mm:ss.SSS')}
diff --git a/src-web/components/GrpcConnectionSetupPane.tsx b/src-web/components/GrpcConnectionSetupPane.tsx index ff28dd88..929b12f4 100644 --- a/src-web/components/GrpcConnectionSetupPane.tsx +++ b/src-web/components/GrpcConnectionSetupPane.tsx @@ -199,17 +199,17 @@ export function GrpcConnectionSetupPane({ label: 'Refresh', type: 'default', key: 'custom', - leftSlot: , + leftSlot: , }, ]} >