From 8357bf016d92d97ef5ddf5e4a357885864f7fb66 Mon Sep 17 00:00:00 2001 From: brianling Date: Sun, 19 Jul 2026 13:12:37 +0800 Subject: [PATCH] =?UTF-8?q?Initial=20commit:=20AI=20=E9=98=85=E5=8D=B7?= =?UTF-8?q?=E5=8A=A9=E6=89=8B=20Tauri=20v2=20+=20Vue=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 + LICENSE | 21 + README.md | 83 + index.html | 12 + package-lock.json | 2443 ++++++++ package.json | 30 + scripts/gen-icons.cjs | 46 + src-tauri/Cargo.lock | 6464 +++++++++++++++++++++ src-tauri/Cargo.toml | 32 + src-tauri/build.rs | 3 + src-tauri/capabilities/default.json | 30 + src-tauri/gen/schemas/acl-manifests.json | 1 + src-tauri/gen/schemas/capabilities.json | 1 + src-tauri/gen/schemas/desktop-schema.json | 6174 ++++++++++++++++++++ src-tauri/gen/schemas/windows-schema.json | 6174 ++++++++++++++++++++ src-tauri/icons/128x128.png | Bin 0 -> 105877 bytes src-tauri/icons/128x128@2x.png | Bin 0 -> 105877 bytes src-tauri/icons/32x32.png | Bin 0 -> 105877 bytes src-tauri/icons/icon.ico | Bin 0 -> 105899 bytes src-tauri/icons/icon.png | Bin 0 -> 105877 bytes src-tauri/src/ai.rs | 211 + src-tauri/src/commands/grading.rs | 63 + src-tauri/src/commands/history.rs | 20 + src-tauri/src/commands/mod.rs | 89 + src-tauri/src/commands/rubric.rs | 112 + src-tauri/src/commands/screenshot.rs | 105 + src-tauri/src/commands/settings.rs | 68 + src-tauri/src/commands/template.rs | 119 + src-tauri/src/db.rs | 240 + src-tauri/src/lib.rs | 235 + src-tauri/src/main.rs | 5 + src-tauri/tauri.conf.json | 27 + src/App.vue | 75 + src/components/FloatingToolbar.vue | 216 + src/components/ResultDrawer.vue | 284 + src/components/RubricEditor.vue | 249 + src/components/ScreenshotOverlay.vue | 98 + src/components/SettingDialog.vue | 137 + src/main.ts | 13 + src/pages/HistoryDialog.vue | 182 + src/pages/TemplateDialog.vue | 123 + src/router/index.ts | 20 + src/stores/app.ts | 32 + src/stores/grading.ts | 39 + src/stores/settings.ts | 35 + src/styles/main.css | 9 + src/types/index.ts | 61 + src/utils/image.ts | 20 + src/vite-env.d.ts | 7 + tsconfig.json | 21 + vite.config.ts | 23 + 51 files changed, 24458 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scripts/gen-icons.cjs create mode 100644 src-tauri/Cargo.lock create mode 100644 src-tauri/Cargo.toml create mode 100644 src-tauri/build.rs create mode 100644 src-tauri/capabilities/default.json create mode 100644 src-tauri/gen/schemas/acl-manifests.json create mode 100644 src-tauri/gen/schemas/capabilities.json create mode 100644 src-tauri/gen/schemas/desktop-schema.json create mode 100644 src-tauri/gen/schemas/windows-schema.json create mode 100644 src-tauri/icons/128x128.png create mode 100644 src-tauri/icons/128x128@2x.png create mode 100644 src-tauri/icons/32x32.png create mode 100644 src-tauri/icons/icon.ico create mode 100644 src-tauri/icons/icon.png create mode 100644 src-tauri/src/ai.rs create mode 100644 src-tauri/src/commands/grading.rs create mode 100644 src-tauri/src/commands/history.rs create mode 100644 src-tauri/src/commands/mod.rs create mode 100644 src-tauri/src/commands/rubric.rs create mode 100644 src-tauri/src/commands/screenshot.rs create mode 100644 src-tauri/src/commands/settings.rs create mode 100644 src-tauri/src/commands/template.rs create mode 100644 src-tauri/src/db.rs create mode 100644 src-tauri/src/lib.rs create mode 100644 src-tauri/src/main.rs create mode 100644 src-tauri/tauri.conf.json create mode 100644 src/App.vue create mode 100644 src/components/FloatingToolbar.vue create mode 100644 src/components/ResultDrawer.vue create mode 100644 src/components/RubricEditor.vue create mode 100644 src/components/ScreenshotOverlay.vue create mode 100644 src/components/SettingDialog.vue create mode 100644 src/main.ts create mode 100644 src/pages/HistoryDialog.vue create mode 100644 src/pages/TemplateDialog.vue create mode 100644 src/router/index.ts create mode 100644 src/stores/app.ts create mode 100644 src/stores/grading.ts create mode 100644 src/stores/settings.ts create mode 100644 src/styles/main.css create mode 100644 src/types/index.ts create mode 100644 src/utils/image.ts create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fe70a56 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules/ +dist/ +src-tauri/target/ +*.db +.DS_Store +*.log diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a45408a --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 AI 阅卷助手 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..904f1cb --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +# AI 阅卷助手 (AI Grading Assistant) + +基于 Tauri v2 + Vue 3 的桌面端 AI 辅助阅卷工具,支持截图批改、评分标准管理、历史记录等功能。 + +## 技术栈 + +| 层面 | 技术 | +| -------- | --------------------------------------------- | +| 前端 | Vue 3 + TypeScript + Pinia + Vue Router | +| UI | Element Plus | +| 桌面框架 | Tauri v2 (Rust) | +| 后端 | Rust (rusqlite, reqwest, xcap, image, base64) | +| 数据库 | SQLite (bundled via rusqlite) | + +## 前置条件 + +- [Node.js](https://nodejs.org/) >= 18 +- [Rust](https://rustup.rs/) (stable) +- Windows: [Microsoft Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) 或 Visual Studio (C++ 工作负载) +- 系统依赖参考 [Tauri v2 前置条件文档](https://v2.tauri.app/start/prerequisites/) + +## 开发 + +```bash +# 1. 安装前端依赖 +npm install + +# 2. 启动开发模式(自动启动 Vite HMR + Tauri 窗口) +npm run tauri dev +``` + +Tauri 开发模式会先启动 Vite 开发服务器(端口 5173),然后打开 Tauri 应用窗口,支持热更新。 + +## 构建 + +```bash +# 1. 构建前端 + Rust 二进制 +npm run tauri build + +# 2. 产物位于 src-tauri/target/release/bundle/ +# - Windows: MSI 安装包 (.msi) 或 NSIS 安装程序 (.exe) +# - 便携版: src-tauri/target/release/ai-grading-assistant.exe +``` + +## 项目结构 + +``` +AIGA-Tauri/ +├── src/ # Vue 前端源码 +│ ├── components/ # 组件(FloatingToolbar, ResultDrawer, 等) +│ ├── pages/ # 页面级组件(HistoryDialog, TemplateDialog) +│ ├── stores/ # Pinia 状态管理 +│ ├── styles/ # 全局样式 +│ ├── types/ # TypeScript 类型定义 +│ ├── utils/ # 工具函数 +│ ├── App.vue # 根组件 +│ └── main.ts # 入口 +├── src-tauri/ # Rust 后端源码 +│ ├── src/ +│ │ ├── commands/ # Tauri IPC 命令 +│ │ ├── ai.rs # AI 评分逻辑 +│ │ ├── db.rs # SQLite 数据库 +│ │ └── lib.rs # Tauri 应用入口、窗口管理 +│ ├── icons/ # 应用图标 +│ ├── Cargo.toml +│ └── tauri.conf.json +├── package.json +└── README.md +``` + +## 功能 + +- **悬浮工具栏**:全局置顶,支持拖拽,快捷键截图 +- **截图批改**:框选区域后调用 AI 模型自动评分 +- **评分标准管理**:多题目、评分细则、参考答案(含图片) +- **模板管理**:保存/导入/导出评分模板 +- **设置**:API Key / Base URL / 模型 / 快捷键 / 代理等 +- **历史记录**:评分记录查询、详情查看、删除 +- **系统托盘**:关闭窗口后后台运行,托盘菜单唤出 + +## 许可 + +MIT diff --git a/index.html b/index.html new file mode 100644 index 0000000..19657b0 --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + + + + + + AI 阅卷助手 + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4503077 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2443 @@ +{ + "name": "ai-grading-assistant", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ai-grading-assistant", + "version": "1.0.0", + "dependencies": { + "@tauri-apps/api": "^2.0.0", + "@tauri-apps/plugin-dialog": "^2.0.0", + "@tauri-apps/plugin-fs": "^2.0.0", + "@tauri-apps/plugin-global-shortcut": "^2.0.0", + "@tauri-apps/plugin-store": "^2.0.0", + "element-plus": "^2.14.3", + "pinia": "^4.0.1", + "vue": "^3.5.39", + "vue-router": "^5.1.0" + }, + "devDependencies": { + "@tauri-apps/cli": "^2.0.0", + "@vitejs/plugin-vue": "^5.0.0", + "typescript": "^5.5.0", + "vite": "^5.4.0", + "vue-tsc": "^3.3.7" + } + }, + "node_modules/@babel/generator": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-8.0.0.tgz", + "integrity": "sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^8.0.0", + "@babel/types": "^8.0.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "@types/jsesc": "^2.5.0", + "jsesc": "^3.0.2" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/helper-string-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", + "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.4", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.4.tgz", + "integrity": "sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==", + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/parser": { + "version": "8.0.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-8.0.4.tgz", + "integrity": "sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==", + "license": "MIT", + "dependencies": { + "@babel/types": "^8.0.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/types": { + "version": "8.0.4", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-8.0.4.tgz", + "integrity": "sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0", + "@babel/helper-validator-identifier": "^8.0.4" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-4.2.0.tgz", + "integrity": "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz", + "integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.8.0.tgz", + "integrity": "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.8.0.tgz", + "integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.8.0", + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.12", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.12.tgz", + "integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==", + "license": "MIT" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.8", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.8.tgz", + "integrity": "sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", + "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", + "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", + "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", + "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", + "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", + "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", + "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", + "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", + "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", + "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", + "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", + "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", + "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", + "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", + "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", + "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", + "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", + "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", + "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", + "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", + "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", + "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", + "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", + "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", + "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tauri-apps/api": { + "version": "2.11.1", + "resolved": "https://registry.npmmirror.com/@tauri-apps/api/-/api-2.11.1.tgz", + "integrity": "sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==", + "license": "Apache-2.0 OR MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli/-/cli-2.11.4.tgz", + "integrity": "sha512-R8xGtMpwyetawSqm9kYOuMmEqkhUbvcUy8n0aNXIxollKBLESUu5f4Fx+64hgASYm1H+jSWq6jCW6zqTnH6hqQ==", + "dev": true, + "license": "Apache-2.0 OR MIT", + "bin": { + "tauri": "tauri.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "2.11.4", + "@tauri-apps/cli-darwin-x64": "2.11.4", + "@tauri-apps/cli-linux-arm-gnueabihf": "2.11.4", + "@tauri-apps/cli-linux-arm64-gnu": "2.11.4", + "@tauri-apps/cli-linux-arm64-musl": "2.11.4", + "@tauri-apps/cli-linux-riscv64-gnu": "2.11.4", + "@tauri-apps/cli-linux-x64-gnu": "2.11.4", + "@tauri-apps/cli-linux-x64-musl": "2.11.4", + "@tauri-apps/cli-win32-arm64-msvc": "2.11.4", + "@tauri-apps/cli-win32-ia32-msvc": "2.11.4", + "@tauri-apps/cli-win32-x64-msvc": "2.11.4" + } + }, + "node_modules/@tauri-apps/cli-darwin-arm64": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.11.4.tgz", + "integrity": "sha512-1ryOF3ZhpZ/nemHV5zVwBQBz9jDGKmKPvWPADOhc83ig0P4bMc2iER4NbC6r9sjeIZ6RVQ4g3RZIYvezhcl4TQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-darwin-x64": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.11.4.tgz", + "integrity": "sha512-uFsGQAAfuyz1k/yGLmkWfkBlgKAqZfxqlHmLWx81QU27RJWfmbNHCIq8T8w1e+VClleIuZUjpHWfoE4E3DLo3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.11.4.tgz", + "integrity": "sha512-IaHZn5CdBL21oUmjiVOS1ctw6Ip1O0pjp70FwOWmYz1myWe0SY96ZIj2FYf7pT0m8bI2h/hrs5ZbEXXh44/MkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.11.4.tgz", + "integrity": "sha512-N41/ukTRVe6XSuUTESuFdGeOW2i7k62tK+6gHK5Kd5/q5RPvvi19GaWAVPPb9u95HSGmTChSolBfzynUsssFaA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-musl": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.11.4.tgz", + "integrity": "sha512-v277UnT/fB64xAfSroL5N3Km3tLmvATWqJJw/wRI+g6o+HkeD0slyE7gOhNs1MbjE41R7bQOTxMVoL3aomUJmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-riscv64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.11.4.tgz", + "integrity": "sha512-qqgNkQ2u1yZHxjhxsZaxUtRDW8dIqIYm33rx/mzwQv0SfY9x1B+iraj8vWeFiXjjSVVhEMepXSOts1TqPzvXNQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.11.4.tgz", + "integrity": "sha512-2VRNWl84FOH0m2giiDkO2h0QXlcMJeX+zJDpI5kDIQAx6s+geF3v48F4DXfJez4GS/FdoDGnPnw1C2iYGbQ7bQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.11.4.tgz", + "integrity": "sha512-o9GyhYor/nc7xarmwDE3ka2szuW3uuZzXjHWh64Q8YX5AtSgxdQkFWzrY4O8KiGtVNvFBI14H3Q49Qj5TOIP/A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-arm64-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.11.4.tgz", + "integrity": "sha512-ld5Ehb598m0VkYyylRPNeCFsBe/km0jxis6KgMpl3IGY6I/i1RwQXO05I1AsXUXO2WC6AvB/Lw4qTf/asiuEiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-ia32-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.11.4.tgz", + "integrity": "sha512-12Hxi0XX/H5VFxO/bGgHkFWhml9VMgEOu9CidjeCeTNQ1l6fpUlbiGgSP7CLI3PFtW9/FfbeHieZ+kyWK5H7CA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-x64-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.11.4.tgz", + "integrity": "sha512-+vDiqBIU5dMISg/wNvX3sF+ZHfgJGJ5T0AcO+EHNXV9GGAG+P5fzodlDXD3QdKCRgZxMoCm5PPvj3BqLNjBthw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/plugin-dialog": { + "version": "2.7.2", + "resolved": "https://registry.npmmirror.com/@tauri-apps/plugin-dialog/-/plugin-dialog-2.7.2.tgz", + "integrity": "sha512-pX0IGm1I3I6wc+zeKYcq1GSqogK6okCNX5fOdaNU5ab1AjGS6l1E5wFNjEb7meg7ZFSp0JUs+0jQGQNyOvLrsg==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.11.0" + } + }, + "node_modules/@tauri-apps/plugin-fs": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@tauri-apps/plugin-fs/-/plugin-fs-2.5.1.tgz", + "integrity": "sha512-9Lz+Jopp6QyeEWhlpkMx4R/+P9HgR+AVAI4vOZhlT8Xaymtz8iVI/Ov984/XTqgJz/5gz5NretqPB/XEMS3NhQ==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.11.0" + } + }, + "node_modules/@tauri-apps/plugin-global-shortcut": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/@tauri-apps/plugin-global-shortcut/-/plugin-global-shortcut-2.3.2.tgz", + "integrity": "sha512-UReHNXrLvpEjylE4jb4oCYiy96uRykPUthoCQCmRXYrd5hs5X9DrW+qOn7GLW57EJN4tdK8bgK5twBTz2NOxzA==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.11.0" + } + }, + "node_modules/@tauri-apps/plugin-store": { + "version": "2.4.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/plugin-store/-/plugin-store-2.4.4.tgz", + "integrity": "sha512-oxSMaj/QpVfJcBMYX5aOQV94fWvga0MwQMfD6TLlbK2dh+ShPWAzefd8HWXhvOKjPRJdGVAkW7ZGO76JzzjaDA==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.11.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@types/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==", + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.24", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.28", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.28.tgz", + "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.28" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.28", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.28.tgz", + "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.28", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.28.tgz", + "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue-macros/common": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/@vue-macros/common/-/common-3.1.3.tgz", + "integrity": "sha512-pphnexn8CDKugcA4TYSKlg1XanBYPbILST+eZK9ZGqG8sVbNR5L0kXEpRqs8+iSznosHt/Jo2k1FGl0tnWIpyg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-sfc": "^3.5.22", + "ast-kit": "^2.1.2", + "local-pkg": "^1.1.2", + "magic-string-ast": "^1.0.2", + "unplugin-utils": "^0.3.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/vue-macros" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.2.25" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.40.tgz", + "integrity": "sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@vue/shared": "3.5.40", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.40.tgz", + "integrity": "sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.40", + "@vue/shared": "3.5.40" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.40.tgz", + "integrity": "sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@vue/compiler-core": "3.5.40", + "@vue/compiler-dom": "3.5.40", + "@vue/compiler-ssr": "3.5.40", + "@vue/shared": "3.5.40", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.19", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.40.tgz", + "integrity": "sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.40", + "@vue/shared": "3.5.40" + } + }, + "node_modules/@vue/devtools-api": { + "version": "8.1.5", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-8.1.5.tgz", + "integrity": "sha512-YJipMVAKe5wT5CWf5kTYCaNV7NMNjFVxJkIkJaJ4W/nCxEBzlZzrOsYKeCymdCrFZmBS/+wTWFoUs3Jf/Q6XSQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^8.1.5" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "8.1.5", + "resolved": "https://registry.npmmirror.com/@vue/devtools-kit/-/devtools-kit-8.1.5.tgz", + "integrity": "sha512-FcSAxsi4eWuXLCB7Rv9lj0aIVHHPNVQ2BazGf4RJTc2JCqb4BQg0hk87ZFhminCfl+mD5OUI0rX2cgyu4kJOGA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^8.1.5", + "birpc": "^2.6.1", + "hookable": "^5.5.3", + "perfect-debounce": "^2.0.0" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "8.1.5", + "resolved": "https://registry.npmmirror.com/@vue/devtools-shared/-/devtools-shared-8.1.5.tgz", + "integrity": "sha512-mhT4zcPFhF+Xk1O4BfhhrbXzpmfqY03fS6xGpcllbQG7lDjhQf8pQHcTIhqQIYx1hfwtHmk/6jM96ele0UxPqQ==", + "license": "MIT" + }, + "node_modules/@vue/language-core": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-3.3.7.tgz", + "integrity": "sha512-LzmkKinXAMMoh8Jfi/jMUSDUjuPdv8mynH5WJGKfXyZtDw3hQ6GBaoI6Bcnl/Xqlu32q/0Z6i/trp4VXykzyLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "@vue/compiler-dom": "^3.5.0", + "@vue/shared": "^3.5.0", + "alien-signals": "^3.2.1", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1", + "picomatch": "^4.0.4" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.40.tgz", + "integrity": "sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.40" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.40.tgz", + "integrity": "sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.40", + "@vue/shared": "3.5.40" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.40.tgz", + "integrity": "sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.40", + "@vue/runtime-core": "3.5.40", + "@vue/shared": "3.5.40", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.40.tgz", + "integrity": "sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.40", + "@vue/runtime-dom": "3.5.40", + "@vue/shared": "3.5.40" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.40.tgz", + "integrity": "sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==", + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "14.3.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-14.3.0.tgz", + "integrity": "sha512-aHfz47g0ZhMtTVHmIzMVpJy8ePhhOy68GY5bv110+5DVtZ+W7BsOx+m61UNQqfrWyPztIHIanWa3E2tib3NFIw==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "14.3.0", + "@vueuse/shared": "14.3.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/metadata": { + "version": "14.3.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-14.3.0.tgz", + "integrity": "sha512-BwxmbAzwAVF50+MW57GXOUEV61nFBGnlBvrTqj49PqWJu3uw7hdu72ztXeZ33RdZtDY6kO+bfCAE1PCn88Tktw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "14.3.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-14.3.0.tgz", + "integrity": "sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/acorn": { + "version": "8.17.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.17.0.tgz", + "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/alien-signals": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-3.2.1.tgz", + "integrity": "sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==", + "dev": true, + "license": "MIT" + }, + "node_modules/ast-kit": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/ast-kit/-/ast-kit-2.2.0.tgz", + "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "pathe": "^2.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/ast-walker-scope": { + "version": "0.9.0", + "resolved": "https://registry.npmmirror.com/ast-walker-scope/-/ast-walker-scope-0.9.0.tgz", + "integrity": "sha512-IJdzo2vLiElBxKzwS36VsCue/62d6IdWjnPB2v3nuPKeWGynp6FF/CYoLa5i/3jXH/z97ZDdsXz6abpgM6w07A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@babel/types": "^7.29.0", + "ast-kit": "^2.2.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "license": "MIT" + }, + "node_modules/birpc": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.21", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.21.tgz", + "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", + "license": "MIT" + }, + "node_modules/element-plus": { + "version": "2.14.3", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.14.3.tgz", + "integrity": "sha512-pJcvxcpZjYruNzuJhAeVwnbYjfNgzBKnWHwSVEhwzM2/kcLI3brzmtIBxtPqd4hQWJfD1PRnjoc1WipLw2eBGg==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.2.0", + "@element-plus/icons-vue": "^2.3.2", + "@floating-ui/dom": "^1.7.6", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.8", + "@types/lodash": "^4.17.24", + "@types/lodash-es": "^4.17.12", + "@vueuse/core": "14.3.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.20", + "lodash": "^4.18.1", + "lodash-es": "^4.18.1", + "lodash-unified": "^1.0.3", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0", + "vue-component-type-helpers": "^3.3.5" + }, + "peerDependencies": { + "vue": "^3.3.7" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/exsolve": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/exsolve/-/exsolve-1.1.0.tgz", + "integrity": "sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==", + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/local-pkg": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.2.1.tgz", + "integrity": "sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.18.1", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", + "license": "MIT" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "license": "MIT", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magic-string-ast": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/magic-string-ast/-/magic-string-ast-1.0.3.tgz", + "integrity": "sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==", + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.19" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "node_modules/mlly": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.16", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.16.tgz", + "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", + "license": "BSD-3-Clause" + }, + "node_modules/nostics": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/nostics/-/nostics-1.2.0.tgz", + "integrity": "sha512-FGqEfhQjrvo1lL8KFifdTQiNwwQHJxC1jtYE1Rc54qF/jxONUNL+kC9gS1krX8Q65PgrQ5fCqH/I4NhWBvdSqg==", + "license": "MIT" + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-4.0.2.tgz", + "integrity": "sha512-yKVVA7bSj5oRZFp/Ab9wLlmyb5gPUYEiIm4ryiWTe/xe7PtkRdMVOp1X1ggvq0c6Uj7Q0Du1HnV2mtAwM0Ks1g==", + "license": "MIT", + "dependencies": { + "nostics": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/devtools-api": "^8.1.5", + "typescript": ">=5.6.0", + "vue": "^3.5.11" + }, + "peerDependenciesMeta": { + "@vue/devtools-api": { + "optional": false + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pkg-types": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-2.3.1.tgz", + "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.4", + "exsolve": "^1.0.8", + "pathe": "^2.0.3" + } + }, + "node_modules/postcss": { + "version": "8.5.19", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.19.tgz", + "integrity": "sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmmirror.com/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rollup": { + "version": "4.62.2", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.62.2.tgz", + "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.62.2", + "@rollup/rollup-android-arm64": "4.62.2", + "@rollup/rollup-darwin-arm64": "4.62.2", + "@rollup/rollup-darwin-x64": "4.62.2", + "@rollup/rollup-freebsd-arm64": "4.62.2", + "@rollup/rollup-freebsd-x64": "4.62.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", + "@rollup/rollup-linux-arm-musleabihf": "4.62.2", + "@rollup/rollup-linux-arm64-gnu": "4.62.2", + "@rollup/rollup-linux-arm64-musl": "4.62.2", + "@rollup/rollup-linux-loong64-gnu": "4.62.2", + "@rollup/rollup-linux-loong64-musl": "4.62.2", + "@rollup/rollup-linux-ppc64-gnu": "4.62.2", + "@rollup/rollup-linux-ppc64-musl": "4.62.2", + "@rollup/rollup-linux-riscv64-gnu": "4.62.2", + "@rollup/rollup-linux-riscv64-musl": "4.62.2", + "@rollup/rollup-linux-s390x-gnu": "4.62.2", + "@rollup/rollup-linux-x64-gnu": "4.62.2", + "@rollup/rollup-linux-x64-musl": "4.62.2", + "@rollup/rollup-openbsd-x64": "4.62.2", + "@rollup/rollup-openharmony-arm64": "4.62.2", + "@rollup/rollup-win32-arm64-msvc": "4.62.2", + "@rollup/rollup-win32-ia32-msvc": "4.62.2", + "@rollup/rollup-win32-x64-gnu": "4.62.2", + "@rollup/rollup-win32-x64-msvc": "4.62.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "license": "MIT" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.4", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.6.4.tgz", + "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==", + "license": "MIT" + }, + "node_modules/unplugin": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-3.3.0.tgz", + "integrity": "sha512-qa66K+crbfyE6JK10GjvbJeRrOsuC/JpbnHctfyp/i4oBTxWOzJfRZyDiOk1PtErMFRu8JhsU/wPvOdBNWe5Rg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.4", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@farmfe/core": "*", + "@rspack/core": "*", + "bun-types-no-globals": "*", + "esbuild": "*", + "rolldown": "*", + "rollup": "*", + "unloader": "*", + "vite": "*", + "webpack": "*" + }, + "peerDependenciesMeta": { + "@farmfe/core": { + "optional": true + }, + "@rspack/core": { + "optional": true + }, + "bun-types-no-globals": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + }, + "unloader": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/unplugin-utils": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/unplugin-utils/-/unplugin-utils-0.3.2.tgz", + "integrity": "sha512-xVToRh2CTmLk2HnEG7ac4rl1MJTT3RFkpS8B++/SnB0kXvuaavD+n3m/vrzyWQOdJNSZQACnbz01pnppbwV5BA==", + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.40", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.40.tgz", + "integrity": "sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.40", + "@vue/compiler-sfc": "3.5.40", + "@vue/runtime-dom": "3.5.40", + "@vue/server-renderer": "3.5.40", + "@vue/shared": "3.5.40" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-component-type-helpers": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/vue-component-type-helpers/-/vue-component-type-helpers-3.3.7.tgz", + "integrity": "sha512-Skkhw9agYSgsWqv7bxSOGJZa9SaiJbZVGdXuFWnrzKaQYHnw9qbjD630rw6RyMqDbp54nfLCLw5SZA55if7JLg==", + "license": "MIT" + }, + "node_modules/vue-router": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-5.2.0.tgz", + "integrity": "sha512-QAC5i0LEb1GLG0LXDQmHu8L7FX12j0KwU/JTKmLQUJMrn04gQdKP6Du+p0QwpHb3iy71vBlqnHQ8WAfOSAWhqw==", + "license": "MIT", + "dependencies": { + "@babel/generator": "^8.0.0", + "@vue-macros/common": "^3.1.3", + "@vue/devtools-api": "^8.1.5", + "ast-walker-scope": "^0.9.0", + "chokidar": "^5.0.0", + "json5": "^2.2.3", + "local-pkg": "^1.2.1", + "magic-string": "^0.30.21", + "mlly": "^1.8.2", + "muggle-string": "^0.4.1", + "nostics": "^1.1.4", + "pathe": "^2.0.3", + "picomatch": "^4.0.5", + "scule": "^1.3.0", + "tinyglobby": "^0.2.17", + "unplugin": "^3.3.0", + "unplugin-utils": "^0.3.2", + "yaml": "^2.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@pinia/colada": ">=0.21.2", + "@vue/compiler-sfc": "^3.5.34 || ^4.0.0", + "pinia": "^3.0.4 || ^4.0.2", + "vite": "^7.3.0 || ^8.0.0", + "vue": "^3.5.34 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@pinia/colada": { + "optional": true + }, + "@vue/compiler-sfc": { + "optional": true + }, + "pinia": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/vue-tsc": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-3.3.7.tgz", + "integrity": "sha512-+C+rgD49wAQ5bUTl2sp5a8Bzg4YoldMNXM+g7CFe604MYcQ8PrZPMQhIjJSzKXtPBCa+C5ayMipqjbA7splekQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/typescript": "2.4.28", + "@vue/language-core": "3.3.7" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "license": "MIT" + }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ec7b3b9 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "ai-grading-assistant", + "version": "1.0.0", + "description": "AI 阅卷助手 - Tauri版桌面端 AI Copilot", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit --skipLibCheck && vite build", + "preview": "vite preview", + "tauri": "tauri" + }, + "dependencies": { + "@tauri-apps/api": "^2.0.0", + "@tauri-apps/plugin-dialog": "^2.0.0", + "@tauri-apps/plugin-global-shortcut": "^2.0.0", + "@tauri-apps/plugin-store": "^2.0.0", + "@tauri-apps/plugin-fs": "^2.0.0", + "element-plus": "^2.14.3", + "pinia": "^4.0.1", + "vue": "^3.5.39", + "vue-router": "^5.1.0" + }, + "devDependencies": { + "@tauri-apps/cli": "^2.0.0", + "@vitejs/plugin-vue": "^5.0.0", + "typescript": "^5.5.0", + "vite": "^5.4.0", + "vue-tsc": "^3.3.7" + } +} diff --git a/scripts/gen-icons.cjs b/scripts/gen-icons.cjs new file mode 100644 index 0000000..0aa6473 --- /dev/null +++ b/scripts/gen-icons.cjs @@ -0,0 +1,46 @@ +const fs = require('fs'); +const path = require('path'); + +const dir = path.join(__dirname, '..', 'src-tauri', 'icons'); +fs.mkdirSync(dir, { recursive: true }); + +// Pre-computed CRC32 for IHDR, IDAT, IEND chunks +// 1x1 white pixel PNG +const pngBuf = Buffer.from([ + 0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A, + 0x00,0x00,0x00,0x0D,0x49,0x48,0x44,0x52, + 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01, + 0x08,0x02,0x00,0x00,0x00,0x90,0x77,0x53, + 0xDE, + 0x00,0x00,0x00,0x0C,0x49,0x44,0x41,0x54, + 0x08,0xD7,0x63,0x60,0x60,0x60,0x00, + 0x00,0x00,0x04,0x00,0x01,0x27,0x34,0x27, + 0x00,0x00,0x00,0x00,0x49,0x45,0x4E,0x44, + 0xAE,0x42,0x60,0x82 +]); + +fs.writeFileSync(path.join(dir, '32x32.png'), pngBuf); +fs.writeFileSync(path.join(dir, '128x128.png'), pngBuf); +fs.writeFileSync(path.join(dir, '128x128@2x.png'), pngBuf); +fs.writeFileSync(path.join(dir, 'icon.png'), pngBuf); + +// Create ICO file +const header = Buffer.alloc(6); +header.writeUInt16LE(0, 0); +header.writeUInt16LE(1, 2); +header.writeUInt16LE(1, 4); + +const entry = Buffer.alloc(16); +entry.writeUInt8(1, 0); +entry.writeUInt8(1, 1); +entry.writeUInt8(0, 2); +entry.writeUInt8(0, 3); +entry.writeUInt16LE(1, 4); +entry.writeUInt16LE(32, 6); +entry.writeUInt32LE(pngBuf.length, 8); +entry.writeUInt32LE(22, 12); + +const ico = Buffer.concat([header, entry, pngBuf]); +fs.writeFileSync(path.join(dir, 'icon.ico'), ico); + +console.log('All icons created in ' + dir); diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock new file mode 100644 index 0000000..06ce448 --- /dev/null +++ b/src-tauri/Cargo.lock @@ -0,0 +1,6464 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "ai-grading-assistant" +version = "1.0.0" +dependencies = [ + "base64 0.22.1", + "env_logger", + "image 0.25.10", + "log", + "reqwest 0.12.28", + "rusqlite", + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-dialog", + "tauri-plugin-fs", + "tauri-plugin-global-shortcut", + "tauri-plugin-store", + "tokio", + "xcap", +] + +[[package]] +name = "aligned" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" +dependencies = [ + "as-slice", +] + +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "arrayvec" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" + +[[package]] +name = "as-slice" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "av-scenechange" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" +dependencies = [ + "aligned", + "anyhow", + "arg_enum_proc_macro", + "arrayvec", + "log", + "num-rational", + "num-traits", + "pastey", + "rayon", + "thiserror 2.0.19", + "v_frame", + "y4m", +] + +[[package]] +name = "av1-grain" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bit_field" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" +dependencies = [ + "serde_core", +] + +[[package]] +name = "bitstream-io" +version = "4.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" +dependencies = [ + "no_std_io2", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + +[[package]] +name = "brotli" +version = "8.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "built" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "bytemuck" +version = "1.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6aedf8ae72766347502cf3cb4f41cf5e9cc37d28bee90f1fdaaae15f9cf9424" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.13.1", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f2d30e4173c4026932d51d31d6b0613b1fd3014bf3f9f8943d4ba139c437ba0" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.19", +] + +[[package]] +name = "cargo_toml" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +dependencies = [ + "serde", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "cc" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89588d05638b5b4594a3348a2d6c20277e43a7f5c5202b05cc56888475a47b8" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" +dependencies = [ + "bitflags 2.13.1", + "core-foundation 0.10.1", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.13.1", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ctor" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" +dependencies = [ + "ctor-proc-macro", + "dtor", +] + +[[package]] +name = "ctor-proc-macro" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.119", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "dbus" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab69f03cc8c4340c9c8e315114e1658e6775a9b16a04357973aa21cec22b32e" +dependencies = [ + "libc", + "libdbus-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.19", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "serde_core", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.119", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "dispatch2" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a0d569e003ff27784e0e14e4a594048698e0c0f0b66cabcb51511be55a7caa0" +dependencies = [ + "bitflags 2.13.1", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.13.1", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "dlopen2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "dom_query" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" +dependencies = [ + "bit-set", + "cssparser", + "foldhash", + "html5ever", + "precomputed-hash", + "selectors", + "tendril", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dtor" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" +dependencies = [ + "dtor-proc-macro", +] + +[[package]] +name = "dtor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "either" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" + +[[package]] +name = "embed-resource" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbfdaacccebec3b28e4866b8973543c7647797db5ada1bdab552e48fe665fbbd" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 1.1.3+spec-1.1.0", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "env_filter" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900d271a03799a1ee8d1ca9b19893b48ca674a9284fefcfb85f05e74ed314217" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de671bd27a75a797dc9ae289ba1e77276e75e2026408aab65185384e2d5cd3f6" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "exr" +version = "1.74.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711fe42c9964295e01ee3fba3f9fe0e1d24b98886950d68efe81b1c76e21adf3" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide", + "num-complex", + "pulp", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + +[[package]] +name = "fax" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" + +[[package]] +name = "futures-executor" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" + +[[package]] +name = "futures-macro" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "futures-sink" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" + +[[package]] +name = "futures-task" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" + +[[package]] +name = "futures-util" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix", + "windows-link 0.2.1", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", +] + +[[package]] +name = "gif" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.13.1", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "global-hotkey" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c386b0a4a70cb2d39fffd74480f985b6f0bfbcb934b6a6b6b7e630e448f242e" +dependencies = [ + "crossbeam-channel", + "keyboard-types", + "objc2", + "objc2-app-kit", + "once_cell", + "serde", + "thiserror 2.0.19", + "windows-sys 0.59.0", + "x11rb", + "xkeysym", +] + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "h2" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.14.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "hashlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" +dependencies = [ + "log", + "markup5ever", +] + +[[package]] +name = "http" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" +dependencies = [ + "byteorder", + "png 0.17.16", +] + +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-traits", +] + +[[package]] +name = "image" +version = "0.25.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" +dependencies = [ + "bytemuck", + "byteorder-lite", + "color_quant", + "exr", + "gif", + "image-webp", + "moxcms", + "num-traits", + "png 0.18.1", + "qoi", + "ravif", + "rayon", + "rgb", + "tiff", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "image-webp" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" +dependencies = [ + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imgref" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89194689a993ab15268672e99e7b0e19da2da3268ac682e8f02d29d4d1434cd7" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", + "serde", + "serde_core", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jiff" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc43d6fb25860892c78ef7ce2ffed572087a6853ecb60f587f499329717ed7da" +dependencies = [ + "defmt", + "jiff-core", + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09" +dependencies = [ + "defmt", +] + +[[package]] +name = "jiff-static" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96fb828bff41eeb269a9665f950cb359e8018f7288b8f34db24937ff54ed8fc5" +dependencies = [ + "jiff-core", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.13.1", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lebe" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "libdbus-sys" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "libfuzzer-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" +dependencies = [ + "arbitrary", + "cc", +] + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "libredox" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" +dependencies = [ + "libc", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c10584274047cb335c23d3e61bcef8e323adae7c5c8c760540f73610177fc3f" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libwayshot" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2efa01ecfd021b1e7db27f21f4e79b35b048081c9cae9d2f898eddc98444d69" +dependencies = [ + "image 0.24.9", + "log", + "memmap2", + "nix", + "thiserror 1.0.69", + "wayland-client", + "wayland-protocols", + "wayland-protocols-wlr", +] + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + +[[package]] +name = "markup5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" +dependencies = [ + "log", + "tendril", + "web_atoms", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "memmap2" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "muda" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "once_cell", + "png 0.18.1", + "serde", + "thiserror 2.0.19", + "windows-sys 0.61.2", +] + +[[package]] +name = "native-tls" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.13.1", + "jni-sys 0.3.1", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys 0.3.1", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.13.1", + "cfg-if", + "libc", +] + +[[package]] +name = "no_std_io2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" +dependencies = [ + "memchr", +] + +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[package]] +name = "num-bigint" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "bytemuck", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.13.1", + "block2", + "libc", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-text", + "objc2-core-video", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-av-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478ae33fcac9df0a18db8302387c666b8ef08a3e2d62b510ca4fc278a384b6c0" +dependencies = [ + "bitflags 2.13.1", + "block2", + "dispatch2 0.3.1", + "objc2", + "objc2-avf-audio", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-video", + "objc2-foundation", + "objc2-image-io", + "objc2-media-toolbox", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-avf-audio" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a380031deed8e99db00065c45937da434ca987c034e13b87e4441f9e4090be" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-audio" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2" +dependencies = [ + "dispatch2 0.3.1", + "objc2", + "objc2-core-audio-types", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-core-audio-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c" +dependencies = [ + "bitflags 2.13.1", + "objc2", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.13.1", + "block2", + "dispatch2 0.3.1", + "libc", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.13.1", + "block2", + "dispatch2 0.3.1", + "libc", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", + "objc2-metal", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-location" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-media" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ec576860167a15dd9fce7fbee7512beb4e31f532159d3482d1f9c6caedf31d" +dependencies = [ + "bitflags 2.13.1", + "block2", + "dispatch2 0.3.1", + "objc2", + "objc2-core-audio", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-core-video", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-core-video" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" +dependencies = [ + "bitflags 2.13.1", + "block2", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-io-surface", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.13.1", + "block2", + "libc", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-image-io" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b0446e98cf4a784cc7a0177715ff317eeaa8463841c616cfc78aa4f953c4ea" +dependencies = [ + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-media-toolbox" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd9fdde720df3da7046bb9097811000c1e7ab5cd579fa89d96b27d56781fb30" +dependencies = [ + "objc2", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-core-media", +] + +[[package]] +name = "objc2-metal" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.13.1", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-location", + "objc2-core-text", + "objc2-foundation", + "objc2-quartz-core", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" +dependencies = [ + "bitflags 2.13.1", + "block2", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "openssl" +version = "0.10.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" +dependencies = [ + "bitflags 2.13.1", + "cfg-if", + "foreign-types 0.3.2", + "libc", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "openssl-sys" +version = "0.9.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros", + "phf_shared", + "serde", +] + +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plist" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1d65da6dd5d1e44199ac0f58712d241c0f439f80adea8924d832384087f85" +dependencies = [ + "base64 0.22.1", + "indexmap 2.14.0", + "quick-xml 0.41.0", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.13.1", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "portable-atomic" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3" + +[[package]] +name = "portable-atomic-util" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.13+spec-1.1.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "pulp" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046aa45b989642ec2e4717c8e72d677b13edd831a4d3b6cf37d9a3e54912496a" +dependencies = [ + "bytemuck", + "cfg-if", + "libm", + "num-complex", + "paste", + "pulp-wasm-simd-flag", + "raw-cpuid", + "reborrow", + "version_check", +] + +[[package]] +name = "pulp-wasm-simd-flag" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8f70e07b9c3962945a74e59ca1c511bba65b6419468acc217c457d93f3c740" + +[[package]] +name = "pxfm" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", +] + +[[package]] +name = "quick-xml" +version = "0.39.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" +dependencies = [ + "memchr", +] + +[[package]] +name = "quick-xml" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rav1e" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" +dependencies = [ + "aligned-vec", + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av-scenechange", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "paste", + "profiling", + "rand", + "rand_chacha", + "simd_helpers", + "thiserror 2.0.19", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags 2.13.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "reborrow" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.1", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.19", +] + +[[package]] +name = "ref-cast" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216e8f773d7923bcba9ceb86a86c93cabb3903a11872fc3f138c49630e50b96d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9283685feec7d69af75fb0e858d5e7378f33fe4fc699383b2916ab9273e03c" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.0", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "reqwest" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "rfd" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672" +dependencies = [ + "block2", + "dispatch2 0.3.1", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.60.2", +] + +[[package]] +name = "rgb" +version = "0.8.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rusqlite" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b838eba278d213a8beaf485bd313fd580ca4505a00d5871caeb1457c55322cae" +dependencies = [ + "bitflags 2.13.1", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.13.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.119", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags 2.13.1", + "core-foundation 0.10.1", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "selectors" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +dependencies = [ + "bitflags 2.13.1", + "cssparser", + "derive_more", + "log", + "new_debug_unreachable", + "phf", + "phf_codegen", + "precomputed-hash", + "rustc-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.0", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "serde_json" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.0", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" +dependencies = [ + "base64 0.22.1", + "bs58", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "servo_arc" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" + +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "bytemuck", + "js-sys", + "ndk", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "tracing", + "wasm-bindgen", + "web-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "string_cache_codegen" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fac314a64dc9a36e61a9eb4261a5e9bbfbc922b27e518af97bc32b926cf967" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "system-configuration" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" +dependencies = [ + "bitflags 2.13.1", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.35.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1c93047acf68669466a34690ac58cca7010bd1b201e1ec86f1fd0a75d3dd4a9" +dependencies = [ + "bitflags 2.13.1", + "block2", + "core-foundation 0.10.1", + "core-graphics", + "crossbeam-channel", + "dbus", + "dispatch2 0.3.1", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "libc", + "log", + "ndk", + "ndk-sys", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "once_cell", + "parking_lot", + "percent-encoding", + "raw-window-handle", + "tao-macros", + "unicode-segmentation", + "url", + "windows 0.61.3", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "667b20e2726d572dea2de7370da16e188eb06008faf9a92fab7cdc46791190b5" +dependencies = [ + "anyhow", + "bytes", + "cookie", + "dirs", + "dunce", + "embed_plist", + "getrandom 0.3.4", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest 0.13.4", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.19", + "tokio", + "tray-icon", + "url", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows 0.61.3", +] + +[[package]] +name = "tauri-build" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9ce40b16101cb6ea63d3e221567affd1c3a9205f95d7bc574941a10636b632" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars 0.8.22", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08279169ff42f8fc45a1dbc9dcae888893ba95288142e5880c59b93a26d2cfc5" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png 0.17.16", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.119", + "tauri-utils", + "thiserror 2.0.19", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b394794f399a421811d06966343e7933fcae92d59f5180b9388d1174497a45" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74be5dd4bed9afbd145e5716b5fa2ec28cbc29c34ffa61c258c9273d896c8020" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri-utils", + "walkdir", +] + +[[package]] +name = "tauri-plugin-dialog" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2d3c1dbe38037e7f590cdf2492594d5ceebe031e7bc7e827509b22a999d2940" +dependencies = [ + "log", + "raw-window-handle", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror 2.0.19", + "url", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ecc274121aca0c036a2b42d1cbe83d368d348f54e0bb8a735c2b1548e8f371" +dependencies = [ + "anyhow", + "dunce", + "glob", + "log", + "objc2-foundation", + "percent-encoding", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.19", + "toml 1.1.3+spec-1.1.0", + "url", +] + +[[package]] +name = "tauri-plugin-global-shortcut" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4dd9f4c5136c09cd962da0c86dc4accd4666db2ea591cf16e6597435843bd2b" +dependencies = [ + "global-hotkey", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.19", +] + +[[package]] +name = "tauri-plugin-store" +version = "2.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6708afbe549f176b712066e71648ba8fafba20789453718260c7ca356733cb0c" +dependencies = [ + "dunce", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.19", + "tokio", + "tracing", +] + +[[package]] +name = "tauri-runtime" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0b4bc95aed361b0019067d189a1174a603d460d0f6c72606512d59fc9c12ec8" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2", + "objc2-ui-kit", + "objc2-web-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.19", + "url", + "webkit2gtk", + "webview2-com", + "windows 0.61.3", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e6fac707727b7a2f48e4ded90976324267371073edbb415ffb73bb0458d203f" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows 0.61.3", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dom_query", + "dunce", + "glob", + "http", + "infer", + "json-patch", + "log", + "memchr", + "phf", + "plist", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.19", + "toml 1.1.3+spec-1.1.0", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6" +dependencies = [ + "dunce", + "embed-resource", + "toml 1.1.3+spec-1.1.0", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "tendril" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fed54709c5b3a53d09bb1c113ea4f5ceafd1e772ddcb0030a82e1d56c087b08" +dependencies = [ + "new_debug_unreachable", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" +dependencies = [ + "thiserror-impl 2.0.19", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.0", +] + +[[package]] +name = "tiff" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" +dependencies = [ + "fax", + "flate2", + "half", + "quick-error", + "weezl", + "zune-jpeg", +] + +[[package]] +name = "time" +version = "0.3.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "time-macros" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d988bcd52dbe076d3d46903332f58c912b87a2c49b1428419a5845154762ffee" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 1.0.4", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.14.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.25.13+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.4", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow 1.0.4", +] + +[[package]] +name = "toml_writer" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "bitflags 2.13.1", + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65ba1e5f6b9ef9fd87e21b9c6f351554dbd717960089168fcfdef854686961dc" +dependencies = [ + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "once_cell", + "png 0.18.1", + "serde", + "thiserror 2.0.19", + "windows-sys 0.61.2", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" +dependencies = [ + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "v_frame" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version-compare" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.119", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wayland-backend" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" +dependencies = [ + "bitflags 2.13.1", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" +dependencies = [ + "proc-macro2", + "quick-xml 0.39.4", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web_atoms" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "075474b12bcb3d2e3d4546580e9de478eeeead668a1761e2a8860c836b7ef297" +dependencies = [ + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows 0.61.3", + "windows-core 0.61.2", + "windows-implement 0.60.2", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "webview2-com-sys" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" +dependencies = [ + "thiserror 2.0.19", + "windows 0.61.3", + "windows-core 0.61.2", +] + +[[package]] +name = "weezl" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf874e74c7a99773e62b1c671427abf01a425e77c3d3fb9fb1e4883ea934529" +dependencies = [ + "windows-collections 0.1.1", + "windows-core 0.60.1", + "windows-future 0.1.1", + "windows-link 0.1.3", + "windows-numerics 0.1.1", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections 0.2.0", + "windows-core 0.61.2", + "windows-future 0.2.1", + "windows-link 0.1.3", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows-collections" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5467f79cc1ba3f52ebb2ed41dbb459b8e7db636cc3429458d9a852e15bc24dec" +dependencies = [ + "windows-core 0.60.1", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca21a92a9cae9bf4ccae5cf8368dce0837100ddf6e6d57936749e85f152f6247" +dependencies = [ + "windows-implement 0.59.0", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.3.1", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a787db4595e7eb80239b74ce8babfb1363d8e343ab072f2ffe901400c03349f0" +dependencies = [ + "windows-core 0.60.1", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005dea54e2f6499f2cee279b8f703b3cf3b5734a2d8d21867c8f44003182eeed" +dependencies = [ + "windows-core 0.60.1", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + +[[package]] +name = "winnow" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "wry" +version = "0.55.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514" +dependencies = [ + "base64 0.22.1", + "block2", + "cookie", + "crossbeam-channel", + "dirs", + "dom_query", + "dpi", + "dunce", + "gdkx11", + "gtk", + "http", + "javascriptcore-rs", + "jni", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.19", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows 0.61.3", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "gethostname", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + +[[package]] +name = "xcap" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabd25cdb442bb7f63f13fdee2f59d991b04668d37c69aee00dc2a1cc9d0e9a1" +dependencies = [ + "dbus", + "dispatch2 0.2.0", + "image 0.25.10", + "lazy_static", + "libwayshot", + "log", + "objc2", + "objc2-app-kit", + "objc2-av-foundation", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-media", + "objc2-core-video", + "objc2-foundation", + "percent-encoding", + "scopeguard", + "thiserror 2.0.19", + "widestring", + "windows 0.60.0", + "xcb", +] + +[[package]] +name = "xcb" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4c580d8205abb0a5cf4eb7e927bd664e425b6c3263f9c5310583da96970cf6" +dependencies = [ + "bitflags 1.3.2", + "libc", + "quick-xml 0.30.0", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "y4m" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zune-core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core", +] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml new file mode 100644 index 0000000..9d72e70 --- /dev/null +++ b/src-tauri/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "ai-grading-assistant" +version = "1.0.0" +edition = "2021" + +[lib] +name = "ai_grading_assistant_lib" +crate-type = ["lib", "cdylib", "staticlib"] + +[[bin]] +name = "ai-grading-assistant" +path = "src/main.rs" + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = ["tray-icon"] } +tauri-plugin-dialog = "2" +tauri-plugin-global-shortcut = "2" +tauri-plugin-store = "2" +tauri-plugin-fs = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +rusqlite = { version = "0.31", features = ["bundled"] } +reqwest = { version = "0.12", features = ["json"] } +tokio = { version = "1", features = ["full"] } +base64 = "0.22" +xcap = "0.4" +image = "0.25" +log = "0.4" +env_logger = "0.11" diff --git a/src-tauri/build.rs b/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json new file mode 100644 index 0000000..63d19b0 --- /dev/null +++ b/src-tauri/capabilities/default.json @@ -0,0 +1,30 @@ +{ + "identifier": "default", + "description": "Default capability set", + "windows": ["*"], + "permissions": [ + "core:default", + "core:window:default", + "core:window:allow-create", + "core:window:allow-close", + "core:window:allow-set-size", + "core:window:allow-set-position", + "core:window:allow-set-focus", + "core:window:allow-hide", + "core:window:allow-show", + "core:window:allow-set-always-on-top", + "core:window:allow-center", + "core:window:allow-start-dragging", + "core:event:default", + "core:event:allow-listen", + "core:event:allow-emit", + "dialog:default", + "dialog:allow-open", + "dialog:allow-save", + "global-shortcut:default", + "global-shortcut:allow-register", + "global-shortcut:allow-unregister", + "store:default", + "fs:default" + ] +} diff --git a/src-tauri/gen/schemas/acl-manifests.json b/src-tauri/gen/schemas/acl-manifests.json new file mode 100644 index 0000000..0aa381d --- /dev/null +++ b/src-tauri/gen/schemas/acl-manifests.json @@ -0,0 +1 @@ +{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener","allow-supports-multiple-windows"]},"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-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-supports-multiple-windows":{"identifier":"allow-supports-multiple-windows","description":"Enables the supports_multiple_windows command without any pre-configured scope.","commands":{"allow":["supports_multiple_windows"],"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-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-remove-listener":{"identifier":"deny-remove-listener","description":"Denies the remove_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_listener"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-supports-multiple-windows":{"identifier":"deny-supports-multiple-windows","description":"Denies the supports_multiple_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["supports_multiple_windows"]}},"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},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","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},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","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},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"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},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","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},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","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},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-icon-with-as-template","allow-set-show-menu-on-left-click"]},"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-icon-with-as-template":{"identifier":"allow-set-icon-with-as-template","description":"Enables the set_icon_with_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_with_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-icon-with-as-template":{"identifier":"deny-set-icon-with-as-template","description":"Denies the set_icon_with_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_with_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},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"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-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"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-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"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-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"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-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"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-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"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-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"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-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"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-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"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-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"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},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","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-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-activity-name","allow-scene-identifier","allow-internal-toggle-maximize"]},"permissions":{"allow-activity-name":{"identifier":"allow-activity-name","description":"Enables the activity_name command without any pre-configured scope.","commands":{"allow":["activity_name"],"deny":[]}},"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-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"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-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"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-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"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-scene-identifier":{"identifier":"allow-scene-identifier","description":"Enables the scene_identifier command without any pre-configured scope.","commands":{"allow":["scene_identifier"],"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-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"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-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"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-focusable":{"identifier":"allow-set-focusable","description":"Enables the set_focusable command without any pre-configured scope.","commands":{"allow":["set_focusable"],"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-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"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-simple-fullscreen":{"identifier":"allow-set-simple-fullscreen","description":"Enables the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":["set_simple_fullscreen"],"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-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"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-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"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-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"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-activity-name":{"identifier":"deny-activity-name","description":"Denies the activity_name command without any pre-configured scope.","commands":{"allow":[],"deny":["activity_name"]}},"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-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"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-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"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-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"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-scene-identifier":{"identifier":"deny-scene-identifier","description":"Denies the scene_identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["scene_identifier"]}},"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-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"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-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"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-focusable":{"identifier":"deny-set-focusable","description":"Denies the set_focusable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focusable"]}},"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-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"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-simple-fullscreen":{"identifier":"deny-set-simple-fullscreen","description":"Denies the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_simple_fullscreen"]}},"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-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"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-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"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-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"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},"dialog":{"default_permission":{"identifier":"default","description":"This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n","permissions":["allow-message","allow-save","allow-open"]},"permissions":{"allow-ask":{"identifier":"allow-ask","description":"Enables the ask command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)","commands":{"allow":["message"],"deny":[]}},"allow-confirm":{"identifier":"allow-confirm","description":"Enables the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)","commands":{"allow":["message"],"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. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)","commands":{"allow":[],"deny":["message"]}},"deny-confirm":{"identifier":"deny-confirm","description":"Denies the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)","commands":{"allow":[],"deny":["message"]}},"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},"fs":{"default_permission":{"identifier":"default","description":"This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\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","permissions":["create-app-specific-dirs","read-app-specific-dirs-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","read_text_file_lines_next"],"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-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"allow-start-accessing-security-scoped-resource":{"identifier":"allow-start-accessing-security-scoped-resource","description":"Enables the start_accessing_security_scoped_resource command without any pre-configured scope.","commands":{"allow":["start_accessing_security_scoped_resource"],"deny":[]}},"allow-stat":{"identifier":"allow-stat","description":"Enables the stat command without any pre-configured scope.","commands":{"allow":["stat"],"deny":[]}},"allow-stop-accessing-security-scoped-resource":{"identifier":"allow-stop-accessing-security-scoped-resource","description":"Enables the stop_accessing_security_scoped_resource command without any pre-configured scope.","commands":{"allow":["stop_accessing_security_scoped_resource"],"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","open","write"],"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":[]}},"create-app-specific-dirs":{"identifier":"create-app-specific-dirs","description":"This permissions allows to create the application specific directories.\n","commands":{"allow":["mkdir","scope-app-index"],"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-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}},"deny-start-accessing-security-scoped-resource":{"identifier":"deny-start-accessing-security-scoped-resource","description":"Denies the start_accessing_security_scoped_resource command without any pre-configured scope.","commands":{"allow":[],"deny":["start_accessing_security_scoped_resource"]}},"deny-stat":{"identifier":"deny-stat","description":"Denies the stat command without any pre-configured scope.","commands":{"allow":[],"deny":["stat"]}},"deny-stop-accessing-security-scoped-resource":{"identifier":"deny-stop-accessing-security-scoped-resource","description":"Denies the stop_accessing_security_scoped_resource command without any pre-configured scope.","commands":{"allow":[],"deny":["stop_accessing_security_scoped_resource"]}},"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-app-specific-dirs-recursive":{"identifier":"read-app-specific-dirs-recursive","description":"This permission allows recursive read functionality on the application\nspecific base directories. \n","commands":{"allow":["read_dir","read_file","read_text_file","read_text_file_lines","read_text_file_lines_next","exists","scope-app-recursive"],"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","size"],"deny":[]}},"scope":{"identifier":"scope","description":"An empty permission you can use to modify the global scope.\n\n## Example\n\n```json\n{\n \"identifier\": \"read-documents\",\n \"windows\": [\"main\"],\n \"permissions\": [\n \"fs:allow-read\",\n {\n \"identifier\": \"fs:scope\",\n \"allow\": [\n \"$APPDATA/documents/**/*\"\n ],\n \"deny\": [\n \"$APPDATA/documents/secret.txt\"\n ]\n }\n ]\n}\n```\n","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 application folders.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"},{"path":"$APPCONFIG/*"},{"path":"$APPDATA"},{"path":"$APPDATA/*"},{"path":"$APPLOCALDATA"},{"path":"$APPLOCALDATA/*"},{"path":"$APPCACHE"},{"path":"$APPCACHE/*"},{"path":"$APPLOG"},{"path":"$APPLOG/*"}]}},"scope-app-index":{"identifier":"scope-app-index","description":"This scope permits to list all files and folders in the application directories.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"},{"path":"$APPDATA"},{"path":"$APPLOCALDATA"},{"path":"$APPCACHE"},{"path":"$APPLOG"}]}},"scope-app-recursive":{"identifier":"scope-app-recursive","description":"This scope permits recursive access to the complete application folders, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"},{"path":"$APPCONFIG/**"},{"path":"$APPDATA"},{"path":"$APPDATA/**"},{"path":"$APPLOCALDATA"},{"path":"$APPLOCALDATA/**"},{"path":"$APPCACHE"},{"path":"$APPCACHE/**"},{"path":"$APPLOG"},{"path":"$APPLOG/**"}]}},"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"},{"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 permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCACHE"},{"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"},{"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 permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPCONFIG"},{"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"},{"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 permits recursive access to the complete `$APPDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPDATA"},{"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"},{"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 permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOCALDATA"},{"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"},{"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 permits recursive access to the complete `$APPLOG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$APPLOG"},{"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"},{"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 permits recursive access to the complete `$AUDIO` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$AUDIO"},{"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"},{"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 permits recursive access to the complete `$CACHE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CACHE"},{"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"},{"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 permits recursive access to the complete `$CONFIG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$CONFIG"},{"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"},{"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 permits recursive access to the complete `$DATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DATA"},{"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"},{"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 permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DESKTOP"},{"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"},{"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 permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOCUMENT"},{"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"},{"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 permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$DOWNLOAD"},{"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"},{"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 permits recursive access to the complete `$EXE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$EXE"},{"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"},{"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 permits recursive access to the complete `$FONT` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$FONT"},{"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"},{"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 permits recursive access to the complete `$HOME` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$HOME"},{"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"},{"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 permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOCALDATA"},{"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"},{"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 permits recursive access to the complete `$LOG` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$LOG"},{"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"},{"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 permits recursive access to the complete `$PICTURE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PICTURE"},{"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"},{"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 permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$PUBLIC"},{"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"},{"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 permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RESOURCE"},{"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"},{"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 permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$RUNTIME"},{"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"},{"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 permits recursive access to the complete `$TEMP` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMP"},{"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"},{"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 permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$TEMPLATE"},{"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"},{"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 permits recursive access to the complete `$VIDEO` folder, including sub directories and files.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"path":"$VIDEO"},{"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 application folders, 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 application folders, 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 application folders.","permissions":["read-all","scope-app"]},"allow-app-read-recursive":{"identifier":"allow-app-read-recursive","description":"This allows full recursive read access to the complete application folders, files and subdirectories.","permissions":["read-all","scope-app-recursive"]},"allow-app-write":{"identifier":"allow-app-write","description":"This allows non-recursive write access to the application folders.","permissions":["write-all","scope-app"]},"allow-app-write-recursive":{"identifier":"allow-app-write-recursive","description":"This allows full recursive write access to the complete application folders, files and subdirectories.","permissions":["write-all","scope-app-recursive"]},"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":"A path that can be accessed by the webview when using the fs APIs. FS scope path pattern.\n\nThe pattern 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"},{"properties":{"path":{"description":"A path that can be accessed by the webview when using the fs APIs.\n\nThe pattern 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"}},"required":["path"],"type":"object"}],"description":"FS scope entry.","title":"FsScopeEntry"}},"global-shortcut":{"default_permission":{"identifier":"default","description":"No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n","permissions":[]},"permissions":{"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-register-all":{"identifier":"allow-register-all","description":"Enables the register_all command without any pre-configured scope.","commands":{"allow":["register_all"],"deny":[]}},"allow-unregister":{"identifier":"allow-unregister","description":"Enables the unregister command without any pre-configured scope.","commands":{"allow":["unregister"],"deny":[]}},"allow-unregister-all":{"identifier":"allow-unregister-all","description":"Enables the unregister_all command without any pre-configured scope.","commands":{"allow":["unregister_all"],"deny":[]}},"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-register-all":{"identifier":"deny-register-all","description":"Denies the register_all command without any pre-configured scope.","commands":{"allow":[],"deny":["register_all"]}},"deny-unregister":{"identifier":"deny-unregister","description":"Denies the unregister command without any pre-configured scope.","commands":{"allow":[],"deny":["unregister"]}},"deny-unregister-all":{"identifier":"deny-unregister-all","description":"Denies the unregister_all command without any pre-configured scope.","commands":{"allow":[],"deny":["unregister_all"]}}},"permission_sets":{},"global_scope_schema":null},"store":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n","permissions":["allow-load","allow-get-store","allow-set","allow-get","allow-has","allow-delete","allow-clear","allow-reset","allow-keys","allow-values","allow-entries","allow-length","allow-reload","allow-save"]},"permissions":{"allow-clear":{"identifier":"allow-clear","description":"Enables the clear command without any pre-configured scope.","commands":{"allow":["clear"],"deny":[]}},"allow-delete":{"identifier":"allow-delete","description":"Enables the delete command without any pre-configured scope.","commands":{"allow":["delete"],"deny":[]}},"allow-entries":{"identifier":"allow-entries","description":"Enables the entries command without any pre-configured scope.","commands":{"allow":["entries"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-get-store":{"identifier":"allow-get-store","description":"Enables the get_store command without any pre-configured scope.","commands":{"allow":["get_store"],"deny":[]}},"allow-has":{"identifier":"allow-has","description":"Enables the has command without any pre-configured scope.","commands":{"allow":["has"],"deny":[]}},"allow-keys":{"identifier":"allow-keys","description":"Enables the keys command without any pre-configured scope.","commands":{"allow":["keys"],"deny":[]}},"allow-length":{"identifier":"allow-length","description":"Enables the length command without any pre-configured scope.","commands":{"allow":["length"],"deny":[]}},"allow-load":{"identifier":"allow-load","description":"Enables the load command without any pre-configured scope.","commands":{"allow":["load"],"deny":[]}},"allow-reload":{"identifier":"allow-reload","description":"Enables the reload command without any pre-configured scope.","commands":{"allow":["reload"],"deny":[]}},"allow-reset":{"identifier":"allow-reset","description":"Enables the reset command without any pre-configured scope.","commands":{"allow":["reset"],"deny":[]}},"allow-save":{"identifier":"allow-save","description":"Enables the save command without any pre-configured scope.","commands":{"allow":["save"],"deny":[]}},"allow-set":{"identifier":"allow-set","description":"Enables the set command without any pre-configured scope.","commands":{"allow":["set"],"deny":[]}},"allow-values":{"identifier":"allow-values","description":"Enables the values command without any pre-configured scope.","commands":{"allow":["values"],"deny":[]}},"deny-clear":{"identifier":"deny-clear","description":"Denies the clear command without any pre-configured scope.","commands":{"allow":[],"deny":["clear"]}},"deny-delete":{"identifier":"deny-delete","description":"Denies the delete command without any pre-configured scope.","commands":{"allow":[],"deny":["delete"]}},"deny-entries":{"identifier":"deny-entries","description":"Denies the entries command without any pre-configured scope.","commands":{"allow":[],"deny":["entries"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-get-store":{"identifier":"deny-get-store","description":"Denies the get_store command without any pre-configured scope.","commands":{"allow":[],"deny":["get_store"]}},"deny-has":{"identifier":"deny-has","description":"Denies the has command without any pre-configured scope.","commands":{"allow":[],"deny":["has"]}},"deny-keys":{"identifier":"deny-keys","description":"Denies the keys command without any pre-configured scope.","commands":{"allow":[],"deny":["keys"]}},"deny-length":{"identifier":"deny-length","description":"Denies the length command without any pre-configured scope.","commands":{"allow":[],"deny":["length"]}},"deny-load":{"identifier":"deny-load","description":"Denies the load command without any pre-configured scope.","commands":{"allow":[],"deny":["load"]}},"deny-reload":{"identifier":"deny-reload","description":"Denies the reload command without any pre-configured scope.","commands":{"allow":[],"deny":["reload"]}},"deny-reset":{"identifier":"deny-reset","description":"Denies the reset command without any pre-configured scope.","commands":{"allow":[],"deny":["reset"]}},"deny-save":{"identifier":"deny-save","description":"Denies the save command without any pre-configured scope.","commands":{"allow":[],"deny":["save"]}},"deny-set":{"identifier":"deny-set","description":"Denies the set command without any pre-configured scope.","commands":{"allow":[],"deny":["set"]}},"deny-values":{"identifier":"deny-values","description":"Denies the values command without any pre-configured scope.","commands":{"allow":[],"deny":["values"]}}},"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 new file mode 100644 index 0000000..ae475f1 --- /dev/null +++ b/src-tauri/gen/schemas/capabilities.json @@ -0,0 +1 @@ +{"default":{"identifier":"default","description":"Default capability set","local":true,"windows":["*"],"permissions":["core:default","core:window:default","core:window:allow-create","core:window:allow-close","core:window:allow-set-size","core:window:allow-set-position","core:window:allow-set-focus","core:window:allow-hide","core:window:allow-show","core:window:allow-set-always-on-top","core:window:allow-center","core:window:allow-start-dragging","core:event:default","core:event:allow-listen","core:event:allow-emit","dialog:default","dialog:allow-open","dialog:allow-save","global-shortcut:default","global-shortcut:allow-register","global-shortcut:allow-unregister","store:default","fs:default"]}} \ No newline at end of file diff --git a/src-tauri/gen/schemas/desktop-schema.json b/src-tauri/gen/schemas/desktop-schema.json new file mode 100644 index 0000000..9ef0b50 --- /dev/null +++ b/src-tauri/gen/schemas/desktop-schema.json @@ -0,0 +1,6174 @@ +{ + "$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 isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "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 are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "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", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\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#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`", + "type": "string", + "const": "fs:default", + "markdownDescription": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\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#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`", + "type": "string", + "const": "fs:allow-app-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`", + "type": "string", + "const": "fs:allow-app-read", + "markdownDescription": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`", + "type": "string", + "const": "fs:allow-app-write", + "markdownDescription": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`", + "type": "string", + "const": "fs:allow-appcache-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`", + "type": "string", + "const": "fs:allow-appcache-read", + "markdownDescription": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`", + "type": "string", + "const": "fs:allow-appcache-write", + "markdownDescription": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`", + "type": "string", + "const": "fs:allow-appconfig-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`", + "type": "string", + "const": "fs:allow-appconfig-read", + "markdownDescription": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`", + "type": "string", + "const": "fs:allow-appconfig-write", + "markdownDescription": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`", + "type": "string", + "const": "fs:allow-appdata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`", + "type": "string", + "const": "fs:allow-appdata-read", + "markdownDescription": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`", + "type": "string", + "const": "fs:allow-appdata-write", + "markdownDescription": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`", + "type": "string", + "const": "fs:allow-applocaldata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`", + "type": "string", + "const": "fs:allow-applocaldata-read", + "markdownDescription": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`", + "type": "string", + "const": "fs:allow-applocaldata-write", + "markdownDescription": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`", + "type": "string", + "const": "fs:allow-applog-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`", + "type": "string", + "const": "fs:allow-applog-read", + "markdownDescription": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`", + "type": "string", + "const": "fs:allow-applog-write", + "markdownDescription": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`", + "type": "string", + "const": "fs:allow-audio-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`", + "type": "string", + "const": "fs:allow-audio-read", + "markdownDescription": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`", + "type": "string", + "const": "fs:allow-audio-write", + "markdownDescription": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`", + "type": "string", + "const": "fs:allow-cache-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`", + "type": "string", + "const": "fs:allow-cache-read", + "markdownDescription": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`", + "type": "string", + "const": "fs:allow-cache-write", + "markdownDescription": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`", + "type": "string", + "const": "fs:allow-config-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`", + "type": "string", + "const": "fs:allow-config-read", + "markdownDescription": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`", + "type": "string", + "const": "fs:allow-config-write", + "markdownDescription": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`", + "type": "string", + "const": "fs:allow-data-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`", + "type": "string", + "const": "fs:allow-data-read", + "markdownDescription": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`", + "type": "string", + "const": "fs:allow-data-write", + "markdownDescription": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`", + "type": "string", + "const": "fs:allow-desktop-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`", + "type": "string", + "const": "fs:allow-desktop-read", + "markdownDescription": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`", + "type": "string", + "const": "fs:allow-desktop-write", + "markdownDescription": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`", + "type": "string", + "const": "fs:allow-document-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`", + "type": "string", + "const": "fs:allow-document-read", + "markdownDescription": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`", + "type": "string", + "const": "fs:allow-document-write", + "markdownDescription": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`", + "type": "string", + "const": "fs:allow-download-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`", + "type": "string", + "const": "fs:allow-download-read", + "markdownDescription": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`", + "type": "string", + "const": "fs:allow-download-write", + "markdownDescription": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`", + "type": "string", + "const": "fs:allow-exe-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`", + "type": "string", + "const": "fs:allow-exe-read", + "markdownDescription": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`", + "type": "string", + "const": "fs:allow-exe-write", + "markdownDescription": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`", + "type": "string", + "const": "fs:allow-font-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`", + "type": "string", + "const": "fs:allow-font-read", + "markdownDescription": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`", + "type": "string", + "const": "fs:allow-font-write", + "markdownDescription": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`", + "type": "string", + "const": "fs:allow-home-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`", + "type": "string", + "const": "fs:allow-home-read", + "markdownDescription": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`", + "type": "string", + "const": "fs:allow-home-write", + "markdownDescription": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`", + "type": "string", + "const": "fs:allow-localdata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`", + "type": "string", + "const": "fs:allow-localdata-read", + "markdownDescription": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`", + "type": "string", + "const": "fs:allow-localdata-write", + "markdownDescription": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`", + "type": "string", + "const": "fs:allow-log-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`", + "type": "string", + "const": "fs:allow-log-read", + "markdownDescription": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`", + "type": "string", + "const": "fs:allow-log-write", + "markdownDescription": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`", + "type": "string", + "const": "fs:allow-picture-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`", + "type": "string", + "const": "fs:allow-picture-read", + "markdownDescription": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`", + "type": "string", + "const": "fs:allow-picture-write", + "markdownDescription": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`", + "type": "string", + "const": "fs:allow-public-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`", + "type": "string", + "const": "fs:allow-public-read", + "markdownDescription": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`", + "type": "string", + "const": "fs:allow-public-write", + "markdownDescription": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`", + "type": "string", + "const": "fs:allow-resource-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`", + "type": "string", + "const": "fs:allow-resource-read", + "markdownDescription": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`", + "type": "string", + "const": "fs:allow-resource-write", + "markdownDescription": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`", + "type": "string", + "const": "fs:allow-runtime-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`", + "type": "string", + "const": "fs:allow-runtime-read", + "markdownDescription": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`", + "type": "string", + "const": "fs:allow-runtime-write", + "markdownDescription": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`", + "type": "string", + "const": "fs:allow-temp-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`", + "type": "string", + "const": "fs:allow-temp-read", + "markdownDescription": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`", + "type": "string", + "const": "fs:allow-temp-write", + "markdownDescription": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`", + "type": "string", + "const": "fs:allow-template-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`", + "type": "string", + "const": "fs:allow-template-read", + "markdownDescription": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`", + "type": "string", + "const": "fs:allow-template-write", + "markdownDescription": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`", + "type": "string", + "const": "fs:allow-video-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`", + "type": "string", + "const": "fs:allow-video-read", + "markdownDescription": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`", + "type": "string", + "const": "fs:allow-video-write", + "markdownDescription": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`", + "type": "string", + "const": "fs:deny-default", + "markdownDescription": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file", + "markdownDescription": "Enables the copy_file command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists", + "markdownDescription": "Enables the exists command without any pre-configured scope." + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat", + "markdownDescription": "Enables the fstat command without any pre-configured scope." + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate", + "markdownDescription": "Enables the ftruncate command without any pre-configured scope." + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat", + "markdownDescription": "Enables the lstat command without any pre-configured scope." + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir", + "markdownDescription": "Enables the mkdir command without any pre-configured scope." + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open", + "markdownDescription": "Enables the open command without any pre-configured scope." + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read", + "markdownDescription": "Enables the read command without any pre-configured scope." + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir", + "markdownDescription": "Enables the read_dir command without any pre-configured scope." + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file", + "markdownDescription": "Enables the read_file command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file", + "markdownDescription": "Enables the read_text_file command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines", + "markdownDescription": "Enables the read_text_file_lines command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next", + "markdownDescription": "Enables the read_text_file_lines_next command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename", + "markdownDescription": "Enables the rename command without any pre-configured scope." + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek", + "markdownDescription": "Enables the seek command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Enables the start_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-start-accessing-security-scoped-resource", + "markdownDescription": "Enables the start_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat", + "markdownDescription": "Enables the stat command without any pre-configured scope." + }, + { + "description": "Enables the stop_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stop-accessing-security-scoped-resource", + "markdownDescription": "Enables the stop_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate", + "markdownDescription": "Enables the truncate command without any pre-configured scope." + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch", + "markdownDescription": "Enables the unwatch command without any pre-configured scope." + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch", + "markdownDescription": "Enables the watch command without any pre-configured scope." + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write", + "markdownDescription": "Enables the write command without any pre-configured scope." + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file", + "markdownDescription": "Enables the write_file command without any pre-configured scope." + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file", + "markdownDescription": "Enables the write_text_file command without any pre-configured scope." + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs", + "markdownDescription": "This permissions allows to create the application specific directories.\n" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file", + "markdownDescription": "Denies the copy_file command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists", + "markdownDescription": "Denies the exists command without any pre-configured scope." + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat", + "markdownDescription": "Denies the fstat command without any pre-configured scope." + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate", + "markdownDescription": "Denies the ftruncate command without any pre-configured scope." + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat", + "markdownDescription": "Denies the lstat command without any pre-configured scope." + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir", + "markdownDescription": "Denies the mkdir command without any pre-configured scope." + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open", + "markdownDescription": "Denies the open command without any pre-configured scope." + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read", + "markdownDescription": "Denies the read command without any pre-configured scope." + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir", + "markdownDescription": "Denies the read_dir command without any pre-configured scope." + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file", + "markdownDescription": "Denies the read_file command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file", + "markdownDescription": "Denies the read_text_file command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines", + "markdownDescription": "Denies the read_text_file_lines command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next", + "markdownDescription": "Denies the read_text_file_lines_next command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename", + "markdownDescription": "Denies the rename command without any pre-configured scope." + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek", + "markdownDescription": "Denies the seek command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Denies the start_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-start-accessing-security-scoped-resource", + "markdownDescription": "Denies the start_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat", + "markdownDescription": "Denies the stat command without any pre-configured scope." + }, + { + "description": "Denies the stop_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stop-accessing-security-scoped-resource", + "markdownDescription": "Denies the stop_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate", + "markdownDescription": "Denies the truncate command without any pre-configured scope." + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch", + "markdownDescription": "Denies the unwatch command without any pre-configured scope." + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch", + "markdownDescription": "Denies the watch command without any pre-configured scope." + }, + { + "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.", + "type": "string", + "const": "fs:deny-webview-data-linux", + "markdownDescription": "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." + }, + { + "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.", + "type": "string", + "const": "fs:deny-webview-data-windows", + "markdownDescription": "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." + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write", + "markdownDescription": "Denies the write command without any pre-configured scope." + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file", + "markdownDescription": "Denies the write_file command without any pre-configured scope." + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file", + "markdownDescription": "Denies the write_text_file command without any pre-configured scope." + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all", + "markdownDescription": "This enables all read related commands without any pre-configured accessible paths." + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive", + "markdownDescription": "This permission allows recursive read functionality on the application\nspecific base directories. \n" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs", + "markdownDescription": "This enables directory read and file metadata related commands without any pre-configured accessible paths." + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files", + "markdownDescription": "This enables file read related commands without any pre-configured accessible paths." + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta", + "markdownDescription": "This enables all index or metadata related commands without any pre-configured accessible paths." + }, + { + "description": "An empty permission you can use to modify the global scope.\n\n## Example\n\n```json\n{\n \"identifier\": \"read-documents\",\n \"windows\": [\"main\"],\n \"permissions\": [\n \"fs:allow-read\",\n {\n \"identifier\": \"fs:scope\",\n \"allow\": [\n \"$APPDATA/documents/**/*\"\n ],\n \"deny\": [\n \"$APPDATA/documents/secret.txt\"\n ]\n }\n ]\n}\n```\n", + "type": "string", + "const": "fs:scope", + "markdownDescription": "An empty permission you can use to modify the global scope.\n\n## Example\n\n```json\n{\n \"identifier\": \"read-documents\",\n \"windows\": [\"main\"],\n \"permissions\": [\n \"fs:allow-read\",\n {\n \"identifier\": \"fs:scope\",\n \"allow\": [\n \"$APPDATA/documents/**/*\"\n ],\n \"deny\": [\n \"$APPDATA/documents/secret.txt\"\n ]\n }\n ]\n}\n```\n" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the application folders." + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index", + "markdownDescription": "This scope permits to list all files and folders in the application directories." + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive", + "markdownDescription": "This scope permits recursive access to the complete application folders, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPCACHE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPCONFIG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPLOG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index", + "markdownDescription": "This scope permits to list all files and folders in the `$AUDIO`folder." + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index", + "markdownDescription": "This scope permits to list all files and folders in the `$CACHE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index", + "markdownDescription": "This scope permits to list all files and folders in the `$CONFIG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DESKTOP`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DOCUMENT`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DOWNLOAD`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$EXE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index", + "markdownDescription": "This scope permits to list all files and folders in the `$EXE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$FONT` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index", + "markdownDescription": "This scope permits to list all files and folders in the `$FONT`folder." + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$HOME` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index", + "markdownDescription": "This scope permits to list all files and folders in the `$HOME`folder." + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$LOCALDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index", + "markdownDescription": "This scope permits to list all files and folders in the `$LOG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index", + "markdownDescription": "This scope permits to list all files and folders in the `$PICTURE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index", + "markdownDescription": "This scope permits to list all files and folders in the `$PUBLIC`folder." + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index", + "markdownDescription": "This scope permits to list all files and folders in the `$RESOURCE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index", + "markdownDescription": "This scope permits to list all files and folders in the `$RUNTIME`folder." + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index", + "markdownDescription": "This scope permits to list all files and folders in the `$TEMP`folder." + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index", + "markdownDescription": "This scope permits to list all files and folders in the `$TEMPLATE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index", + "markdownDescription": "This scope permits to list all files and folders in the `$VIDEO`folder." + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files." + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all", + "markdownDescription": "This enables all write related commands without any pre-configured accessible paths." + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files", + "markdownDescription": "This enables all file write related commands without any pre-configured accessible paths." + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "A path that can be accessed by the webview when using the fs APIs. FS scope path pattern.\n\nThe pattern 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" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "A path that can be accessed by the webview when using the fs APIs.\n\nThe pattern 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" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "A path that can be accessed by the webview when using the fs APIs. FS scope path pattern.\n\nThe pattern 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" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "A path that can be accessed by the webview when using the fs APIs.\n\nThe pattern 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" + } + } + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`", + "type": "string", + "const": "core:default", + "markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`" + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`", + "type": "string", + "const": "core:app:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide", + "markdownDescription": "Enables the app_hide command without any pre-configured scope." + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show", + "markdownDescription": "Enables the app_show command without any pre-configured scope." + }, + { + "description": "Enables the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-bundle-type", + "markdownDescription": "Enables the bundle_type command without any pre-configured scope." + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon", + "markdownDescription": "Enables the default_window_icon command without any pre-configured scope." + }, + { + "description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-fetch-data-store-identifiers", + "markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Enables the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-identifier", + "markdownDescription": "Enables the identifier command without any pre-configured scope." + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name", + "markdownDescription": "Enables the name command without any pre-configured scope." + }, + { + "description": "Enables the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-register-listener", + "markdownDescription": "Enables the register_listener command without any pre-configured scope." + }, + { + "description": "Enables the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-data-store", + "markdownDescription": "Enables the remove_data_store command without any pre-configured scope." + }, + { + "description": "Enables the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-listener", + "markdownDescription": "Enables the remove_listener command without any pre-configured scope." + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme", + "markdownDescription": "Enables the set_app_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-dock-visibility", + "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Enables the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-supports-multiple-windows", + "markdownDescription": "Enables the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version", + "markdownDescription": "Enables the tauri_version command without any pre-configured scope." + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version", + "markdownDescription": "Enables the version command without any pre-configured scope." + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide", + "markdownDescription": "Denies the app_hide command without any pre-configured scope." + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show", + "markdownDescription": "Denies the app_show command without any pre-configured scope." + }, + { + "description": "Denies the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-bundle-type", + "markdownDescription": "Denies the bundle_type command without any pre-configured scope." + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon", + "markdownDescription": "Denies the default_window_icon command without any pre-configured scope." + }, + { + "description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-fetch-data-store-identifiers", + "markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Denies the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-identifier", + "markdownDescription": "Denies the identifier command without any pre-configured scope." + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name", + "markdownDescription": "Denies the name command without any pre-configured scope." + }, + { + "description": "Denies the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-register-listener", + "markdownDescription": "Denies the register_listener command without any pre-configured scope." + }, + { + "description": "Denies the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-data-store", + "markdownDescription": "Denies the remove_data_store command without any pre-configured scope." + }, + { + "description": "Denies the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-listener", + "markdownDescription": "Denies the remove_listener command without any pre-configured scope." + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme", + "markdownDescription": "Denies the set_app_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-dock-visibility", + "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Denies the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-supports-multiple-windows", + "markdownDescription": "Denies the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version", + "markdownDescription": "Denies the tauri_version command without any pre-configured scope." + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version", + "markdownDescription": "Denies the version command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`", + "type": "string", + "const": "core:event:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit", + "markdownDescription": "Enables the emit command without any pre-configured scope." + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to", + "markdownDescription": "Enables the emit_to command without any pre-configured scope." + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen", + "markdownDescription": "Enables the listen command without any pre-configured scope." + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten", + "markdownDescription": "Enables the unlisten command without any pre-configured scope." + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit", + "markdownDescription": "Denies the emit command without any pre-configured scope." + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to", + "markdownDescription": "Denies the emit_to command without any pre-configured scope." + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen", + "markdownDescription": "Denies the listen command without any pre-configured scope." + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten", + "markdownDescription": "Denies the unlisten command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`", + "type": "string", + "const": "core:image:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes", + "markdownDescription": "Enables the from_bytes command without any pre-configured scope." + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path", + "markdownDescription": "Enables the from_path command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba", + "markdownDescription": "Enables the rgba command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes", + "markdownDescription": "Denies the from_bytes command without any pre-configured scope." + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path", + "markdownDescription": "Denies the from_path command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba", + "markdownDescription": "Denies the rgba command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`", + "type": "string", + "const": "core:menu:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append", + "markdownDescription": "Enables the append command without any pre-configured scope." + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default", + "markdownDescription": "Enables the create_default command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert", + "markdownDescription": "Enables the insert command without any pre-configured scope." + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked", + "markdownDescription": "Enables the is_checked command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items", + "markdownDescription": "Enables the items command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup", + "markdownDescription": "Enables the popup command without any pre-configured scope." + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend", + "markdownDescription": "Enables the prepend command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at", + "markdownDescription": "Enables the remove_at command without any pre-configured scope." + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator", + "markdownDescription": "Enables the set_accelerator command without any pre-configured scope." + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu", + "markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp", + "markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu", + "markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp", + "markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked", + "markdownDescription": "Enables the set_checked command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text", + "markdownDescription": "Enables the set_text command without any pre-configured scope." + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text", + "markdownDescription": "Enables the text command without any pre-configured scope." + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append", + "markdownDescription": "Denies the append command without any pre-configured scope." + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default", + "markdownDescription": "Denies the create_default command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert", + "markdownDescription": "Denies the insert command without any pre-configured scope." + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked", + "markdownDescription": "Denies the is_checked command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items", + "markdownDescription": "Denies the items command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup", + "markdownDescription": "Denies the popup command without any pre-configured scope." + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend", + "markdownDescription": "Denies the prepend command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at", + "markdownDescription": "Denies the remove_at command without any pre-configured scope." + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator", + "markdownDescription": "Denies the set_accelerator command without any pre-configured scope." + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu", + "markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp", + "markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu", + "markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp", + "markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked", + "markdownDescription": "Denies the set_checked command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text", + "markdownDescription": "Denies the set_text command without any pre-configured scope." + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text", + "markdownDescription": "Denies the text command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`", + "type": "string", + "const": "core:path:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename", + "markdownDescription": "Enables the basename command without any pre-configured scope." + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname", + "markdownDescription": "Enables the dirname command without any pre-configured scope." + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname", + "markdownDescription": "Enables the extname command without any pre-configured scope." + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute", + "markdownDescription": "Enables the is_absolute command without any pre-configured scope." + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join", + "markdownDescription": "Enables the join command without any pre-configured scope." + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize", + "markdownDescription": "Enables the normalize command without any pre-configured scope." + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve", + "markdownDescription": "Enables the resolve command without any pre-configured scope." + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory", + "markdownDescription": "Enables the resolve_directory command without any pre-configured scope." + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename", + "markdownDescription": "Denies the basename command without any pre-configured scope." + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname", + "markdownDescription": "Denies the dirname command without any pre-configured scope." + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname", + "markdownDescription": "Denies the extname command without any pre-configured scope." + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute", + "markdownDescription": "Denies the is_absolute command without any pre-configured scope." + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join", + "markdownDescription": "Denies the join command without any pre-configured scope." + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize", + "markdownDescription": "Denies the normalize command without any pre-configured scope." + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve", + "markdownDescription": "Denies the resolve command without any pre-configured scope." + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory", + "markdownDescription": "Denies the resolve_directory command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`", + "type": "string", + "const": "core:resources:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`", + "type": "string", + "const": "core:tray:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id", + "markdownDescription": "Enables the get_by_id command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id", + "markdownDescription": "Enables the remove_by_id command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template", + "markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-with-as-template", + "markdownDescription": "Enables the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu", + "markdownDescription": "Enables the set_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click", + "markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path", + "markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip", + "markdownDescription": "Enables the set_tooltip command without any pre-configured scope." + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible", + "markdownDescription": "Enables the set_visible command without any pre-configured scope." + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id", + "markdownDescription": "Denies the get_by_id command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id", + "markdownDescription": "Denies the remove_by_id command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template", + "markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-with-as-template", + "markdownDescription": "Denies the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu", + "markdownDescription": "Denies the set_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click", + "markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path", + "markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip", + "markdownDescription": "Denies the set_tooltip command without any pre-configured scope." + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible", + "markdownDescription": "Denies the set_visible command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`", + "type": "string", + "const": "core:webview:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data", + "markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview", + "markdownDescription": "Enables the create_webview command without any pre-configured scope." + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window", + "markdownDescription": "Enables the create_webview_window command without any pre-configured scope." + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews", + "markdownDescription": "Enables the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools", + "markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print", + "markdownDescription": "Enables the print command without any pre-configured scope." + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent", + "markdownDescription": "Enables the reparent command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-auto-resize", + "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-background-color", + "markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus", + "markdownDescription": "Enables the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position", + "markdownDescription": "Enables the set_webview_position command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size", + "markdownDescription": "Enables the set_webview_size command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom", + "markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close", + "markdownDescription": "Enables the webview_close command without any pre-configured scope." + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide", + "markdownDescription": "Enables the webview_hide command without any pre-configured scope." + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position", + "markdownDescription": "Enables the webview_position command without any pre-configured scope." + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show", + "markdownDescription": "Enables the webview_show command without any pre-configured scope." + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size", + "markdownDescription": "Enables the webview_size command without any pre-configured scope." + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data", + "markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview", + "markdownDescription": "Denies the create_webview command without any pre-configured scope." + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window", + "markdownDescription": "Denies the create_webview_window command without any pre-configured scope." + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews", + "markdownDescription": "Denies the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools", + "markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print", + "markdownDescription": "Denies the print command without any pre-configured scope." + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent", + "markdownDescription": "Denies the reparent command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-auto-resize", + "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-background-color", + "markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus", + "markdownDescription": "Denies the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position", + "markdownDescription": "Denies the set_webview_position command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size", + "markdownDescription": "Denies the set_webview_size command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom", + "markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close", + "markdownDescription": "Denies the webview_close command without any pre-configured scope." + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide", + "markdownDescription": "Denies the webview_hide command without any pre-configured scope." + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position", + "markdownDescription": "Denies the webview_position command without any pre-configured scope." + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show", + "markdownDescription": "Denies the webview_show command without any pre-configured scope." + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size", + "markdownDescription": "Denies the webview_size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`", + "type": "string", + "const": "core:window:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`" + }, + { + "description": "Enables the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-activity-name", + "markdownDescription": "Enables the activity_name command without any pre-configured scope." + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors", + "markdownDescription": "Enables the available_monitors command without any pre-configured scope." + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center", + "markdownDescription": "Enables the center command without any pre-configured scope." + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor", + "markdownDescription": "Enables the current_monitor command without any pre-configured scope." + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position", + "markdownDescription": "Enables the cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy", + "markdownDescription": "Enables the destroy command without any pre-configured scope." + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows", + "markdownDescription": "Enables the get_all_windows command without any pre-configured scope." + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide", + "markdownDescription": "Enables the hide command without any pre-configured scope." + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position", + "markdownDescription": "Enables the inner_position command without any pre-configured scope." + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size", + "markdownDescription": "Enables the inner_size command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize", + "markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-always-on-top", + "markdownDescription": "Enables the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable", + "markdownDescription": "Enables the is_closable command without any pre-configured scope." + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated", + "markdownDescription": "Enables the is_decorated command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused", + "markdownDescription": "Enables the is_focused command without any pre-configured scope." + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen", + "markdownDescription": "Enables the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable", + "markdownDescription": "Enables the is_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized", + "markdownDescription": "Enables the is_maximized command without any pre-configured scope." + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable", + "markdownDescription": "Enables the is_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized", + "markdownDescription": "Enables the is_minimized command without any pre-configured scope." + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable", + "markdownDescription": "Enables the is_resizable command without any pre-configured scope." + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible", + "markdownDescription": "Enables the is_visible command without any pre-configured scope." + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize", + "markdownDescription": "Enables the maximize command without any pre-configured scope." + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize", + "markdownDescription": "Enables the minimize command without any pre-configured scope." + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point", + "markdownDescription": "Enables the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position", + "markdownDescription": "Enables the outer_position command without any pre-configured scope." + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size", + "markdownDescription": "Enables the outer_size command without any pre-configured scope." + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor", + "markdownDescription": "Enables the primary_monitor command without any pre-configured scope." + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention", + "markdownDescription": "Enables the request_user_attention command without any pre-configured scope." + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor", + "markdownDescription": "Enables the scale_factor command without any pre-configured scope." + }, + { + "description": "Enables the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scene-identifier", + "markdownDescription": "Enables the scene_identifier command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom", + "markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top", + "markdownDescription": "Enables the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-background-color", + "markdownDescription": "Enables the set_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-count", + "markdownDescription": "Enables the set_badge_count command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-label", + "markdownDescription": "Enables the set_badge_label command without any pre-configured scope." + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable", + "markdownDescription": "Enables the set_closable command without any pre-configured scope." + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected", + "markdownDescription": "Enables the set_content_protected command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab", + "markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon", + "markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position", + "markdownDescription": "Enables the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible", + "markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations", + "markdownDescription": "Enables the set_decorations command without any pre-configured scope." + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects", + "markdownDescription": "Enables the set_effects command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus", + "markdownDescription": "Enables the set_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focusable", + "markdownDescription": "Enables the set_focusable command without any pre-configured scope." + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen", + "markdownDescription": "Enables the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events", + "markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size", + "markdownDescription": "Enables the set_max_size command without any pre-configured scope." + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable", + "markdownDescription": "Enables the set_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size", + "markdownDescription": "Enables the set_min_size command without any pre-configured scope." + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable", + "markdownDescription": "Enables the set_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-overlay-icon", + "markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position", + "markdownDescription": "Enables the set_position command without any pre-configured scope." + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar", + "markdownDescription": "Enables the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable", + "markdownDescription": "Enables the set_resizable command without any pre-configured scope." + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow", + "markdownDescription": "Enables the set_shadow command without any pre-configured scope." + }, + { + "description": "Enables the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-simple-fullscreen", + "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size", + "markdownDescription": "Enables the set_size command without any pre-configured scope." + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints", + "markdownDescription": "Enables the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar", + "markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme", + "markdownDescription": "Enables the set_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style", + "markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces", + "markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show", + "markdownDescription": "Enables the show command without any pre-configured scope." + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging", + "markdownDescription": "Enables the start_dragging command without any pre-configured scope." + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging", + "markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme", + "markdownDescription": "Enables the theme command without any pre-configured scope." + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title", + "markdownDescription": "Enables the title command without any pre-configured scope." + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize", + "markdownDescription": "Enables the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize", + "markdownDescription": "Enables the unmaximize command without any pre-configured scope." + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize", + "markdownDescription": "Enables the unminimize command without any pre-configured scope." + }, + { + "description": "Denies the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-activity-name", + "markdownDescription": "Denies the activity_name command without any pre-configured scope." + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors", + "markdownDescription": "Denies the available_monitors command without any pre-configured scope." + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center", + "markdownDescription": "Denies the center command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor", + "markdownDescription": "Denies the current_monitor command without any pre-configured scope." + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position", + "markdownDescription": "Denies the cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy", + "markdownDescription": "Denies the destroy command without any pre-configured scope." + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows", + "markdownDescription": "Denies the get_all_windows command without any pre-configured scope." + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide", + "markdownDescription": "Denies the hide command without any pre-configured scope." + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position", + "markdownDescription": "Denies the inner_position command without any pre-configured scope." + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size", + "markdownDescription": "Denies the inner_size command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize", + "markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-always-on-top", + "markdownDescription": "Denies the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable", + "markdownDescription": "Denies the is_closable command without any pre-configured scope." + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated", + "markdownDescription": "Denies the is_decorated command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused", + "markdownDescription": "Denies the is_focused command without any pre-configured scope." + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen", + "markdownDescription": "Denies the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable", + "markdownDescription": "Denies the is_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized", + "markdownDescription": "Denies the is_maximized command without any pre-configured scope." + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable", + "markdownDescription": "Denies the is_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized", + "markdownDescription": "Denies the is_minimized command without any pre-configured scope." + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable", + "markdownDescription": "Denies the is_resizable command without any pre-configured scope." + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible", + "markdownDescription": "Denies the is_visible command without any pre-configured scope." + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize", + "markdownDescription": "Denies the maximize command without any pre-configured scope." + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize", + "markdownDescription": "Denies the minimize command without any pre-configured scope." + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point", + "markdownDescription": "Denies the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position", + "markdownDescription": "Denies the outer_position command without any pre-configured scope." + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size", + "markdownDescription": "Denies the outer_size command without any pre-configured scope." + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor", + "markdownDescription": "Denies the primary_monitor command without any pre-configured scope." + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention", + "markdownDescription": "Denies the request_user_attention command without any pre-configured scope." + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor", + "markdownDescription": "Denies the scale_factor command without any pre-configured scope." + }, + { + "description": "Denies the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scene-identifier", + "markdownDescription": "Denies the scene_identifier command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom", + "markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top", + "markdownDescription": "Denies the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-background-color", + "markdownDescription": "Denies the set_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-count", + "markdownDescription": "Denies the set_badge_count command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-label", + "markdownDescription": "Denies the set_badge_label command without any pre-configured scope." + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable", + "markdownDescription": "Denies the set_closable command without any pre-configured scope." + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected", + "markdownDescription": "Denies the set_content_protected command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab", + "markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon", + "markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position", + "markdownDescription": "Denies the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible", + "markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations", + "markdownDescription": "Denies the set_decorations command without any pre-configured scope." + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects", + "markdownDescription": "Denies the set_effects command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus", + "markdownDescription": "Denies the set_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focusable", + "markdownDescription": "Denies the set_focusable command without any pre-configured scope." + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen", + "markdownDescription": "Denies the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events", + "markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size", + "markdownDescription": "Denies the set_max_size command without any pre-configured scope." + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable", + "markdownDescription": "Denies the set_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size", + "markdownDescription": "Denies the set_min_size command without any pre-configured scope." + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable", + "markdownDescription": "Denies the set_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-overlay-icon", + "markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position", + "markdownDescription": "Denies the set_position command without any pre-configured scope." + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar", + "markdownDescription": "Denies the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable", + "markdownDescription": "Denies the set_resizable command without any pre-configured scope." + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow", + "markdownDescription": "Denies the set_shadow command without any pre-configured scope." + }, + { + "description": "Denies the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-simple-fullscreen", + "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size", + "markdownDescription": "Denies the set_size command without any pre-configured scope." + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints", + "markdownDescription": "Denies the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar", + "markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme", + "markdownDescription": "Denies the set_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style", + "markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces", + "markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show", + "markdownDescription": "Denies the show command without any pre-configured scope." + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging", + "markdownDescription": "Denies the start_dragging command without any pre-configured scope." + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging", + "markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme", + "markdownDescription": "Denies the theme command without any pre-configured scope." + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title", + "markdownDescription": "Denies the title command without any pre-configured scope." + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize", + "markdownDescription": "Denies the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize", + "markdownDescription": "Denies the unmaximize command without any pre-configured scope." + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize", + "markdownDescription": "Denies the unminimize command without any pre-configured scope." + }, + { + "description": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n\n#### This default permission set includes:\n\n- `allow-message`\n- `allow-save`\n- `allow-open`", + "type": "string", + "const": "dialog:default", + "markdownDescription": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n\n#### This default permission set includes:\n\n- `allow-message`\n- `allow-save`\n- `allow-open`" + }, + { + "description": "Enables the ask command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)", + "type": "string", + "const": "dialog:allow-ask", + "markdownDescription": "Enables the ask command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)" + }, + { + "description": "Enables the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)", + "type": "string", + "const": "dialog:allow-confirm", + "markdownDescription": "Enables the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)" + }, + { + "description": "Enables the message command without any pre-configured scope.", + "type": "string", + "const": "dialog:allow-message", + "markdownDescription": "Enables the message command without any pre-configured scope." + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "dialog:allow-open", + "markdownDescription": "Enables the open command without any pre-configured scope." + }, + { + "description": "Enables the save command without any pre-configured scope.", + "type": "string", + "const": "dialog:allow-save", + "markdownDescription": "Enables the save command without any pre-configured scope." + }, + { + "description": "Denies the ask command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)", + "type": "string", + "const": "dialog:deny-ask", + "markdownDescription": "Denies the ask command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)" + }, + { + "description": "Denies the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)", + "type": "string", + "const": "dialog:deny-confirm", + "markdownDescription": "Denies the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)" + }, + { + "description": "Denies the message command without any pre-configured scope.", + "type": "string", + "const": "dialog:deny-message", + "markdownDescription": "Denies the message command without any pre-configured scope." + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "dialog:deny-open", + "markdownDescription": "Denies the open command without any pre-configured scope." + }, + { + "description": "Denies the save command without any pre-configured scope.", + "type": "string", + "const": "dialog:deny-save", + "markdownDescription": "Denies the save command without any pre-configured scope." + }, + { + "description": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\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#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`", + "type": "string", + "const": "fs:default", + "markdownDescription": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\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#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`", + "type": "string", + "const": "fs:allow-app-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`", + "type": "string", + "const": "fs:allow-app-read", + "markdownDescription": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`", + "type": "string", + "const": "fs:allow-app-write", + "markdownDescription": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`", + "type": "string", + "const": "fs:allow-appcache-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`", + "type": "string", + "const": "fs:allow-appcache-read", + "markdownDescription": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`", + "type": "string", + "const": "fs:allow-appcache-write", + "markdownDescription": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`", + "type": "string", + "const": "fs:allow-appconfig-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`", + "type": "string", + "const": "fs:allow-appconfig-read", + "markdownDescription": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`", + "type": "string", + "const": "fs:allow-appconfig-write", + "markdownDescription": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`", + "type": "string", + "const": "fs:allow-appdata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`", + "type": "string", + "const": "fs:allow-appdata-read", + "markdownDescription": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`", + "type": "string", + "const": "fs:allow-appdata-write", + "markdownDescription": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`", + "type": "string", + "const": "fs:allow-applocaldata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`", + "type": "string", + "const": "fs:allow-applocaldata-read", + "markdownDescription": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`", + "type": "string", + "const": "fs:allow-applocaldata-write", + "markdownDescription": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`", + "type": "string", + "const": "fs:allow-applog-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`", + "type": "string", + "const": "fs:allow-applog-read", + "markdownDescription": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`", + "type": "string", + "const": "fs:allow-applog-write", + "markdownDescription": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`", + "type": "string", + "const": "fs:allow-audio-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`", + "type": "string", + "const": "fs:allow-audio-read", + "markdownDescription": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`", + "type": "string", + "const": "fs:allow-audio-write", + "markdownDescription": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`", + "type": "string", + "const": "fs:allow-cache-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`", + "type": "string", + "const": "fs:allow-cache-read", + "markdownDescription": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`", + "type": "string", + "const": "fs:allow-cache-write", + "markdownDescription": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`", + "type": "string", + "const": "fs:allow-config-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`", + "type": "string", + "const": "fs:allow-config-read", + "markdownDescription": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`", + "type": "string", + "const": "fs:allow-config-write", + "markdownDescription": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`", + "type": "string", + "const": "fs:allow-data-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`", + "type": "string", + "const": "fs:allow-data-read", + "markdownDescription": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`", + "type": "string", + "const": "fs:allow-data-write", + "markdownDescription": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`", + "type": "string", + "const": "fs:allow-desktop-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`", + "type": "string", + "const": "fs:allow-desktop-read", + "markdownDescription": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`", + "type": "string", + "const": "fs:allow-desktop-write", + "markdownDescription": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`", + "type": "string", + "const": "fs:allow-document-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`", + "type": "string", + "const": "fs:allow-document-read", + "markdownDescription": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`", + "type": "string", + "const": "fs:allow-document-write", + "markdownDescription": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`", + "type": "string", + "const": "fs:allow-download-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`", + "type": "string", + "const": "fs:allow-download-read", + "markdownDescription": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`", + "type": "string", + "const": "fs:allow-download-write", + "markdownDescription": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`", + "type": "string", + "const": "fs:allow-exe-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`", + "type": "string", + "const": "fs:allow-exe-read", + "markdownDescription": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`", + "type": "string", + "const": "fs:allow-exe-write", + "markdownDescription": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`", + "type": "string", + "const": "fs:allow-font-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`", + "type": "string", + "const": "fs:allow-font-read", + "markdownDescription": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`", + "type": "string", + "const": "fs:allow-font-write", + "markdownDescription": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`", + "type": "string", + "const": "fs:allow-home-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`", + "type": "string", + "const": "fs:allow-home-read", + "markdownDescription": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`", + "type": "string", + "const": "fs:allow-home-write", + "markdownDescription": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`", + "type": "string", + "const": "fs:allow-localdata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`", + "type": "string", + "const": "fs:allow-localdata-read", + "markdownDescription": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`", + "type": "string", + "const": "fs:allow-localdata-write", + "markdownDescription": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`", + "type": "string", + "const": "fs:allow-log-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`", + "type": "string", + "const": "fs:allow-log-read", + "markdownDescription": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`", + "type": "string", + "const": "fs:allow-log-write", + "markdownDescription": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`", + "type": "string", + "const": "fs:allow-picture-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`", + "type": "string", + "const": "fs:allow-picture-read", + "markdownDescription": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`", + "type": "string", + "const": "fs:allow-picture-write", + "markdownDescription": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`", + "type": "string", + "const": "fs:allow-public-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`", + "type": "string", + "const": "fs:allow-public-read", + "markdownDescription": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`", + "type": "string", + "const": "fs:allow-public-write", + "markdownDescription": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`", + "type": "string", + "const": "fs:allow-resource-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`", + "type": "string", + "const": "fs:allow-resource-read", + "markdownDescription": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`", + "type": "string", + "const": "fs:allow-resource-write", + "markdownDescription": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`", + "type": "string", + "const": "fs:allow-runtime-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`", + "type": "string", + "const": "fs:allow-runtime-read", + "markdownDescription": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`", + "type": "string", + "const": "fs:allow-runtime-write", + "markdownDescription": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`", + "type": "string", + "const": "fs:allow-temp-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`", + "type": "string", + "const": "fs:allow-temp-read", + "markdownDescription": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`", + "type": "string", + "const": "fs:allow-temp-write", + "markdownDescription": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`", + "type": "string", + "const": "fs:allow-template-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`", + "type": "string", + "const": "fs:allow-template-read", + "markdownDescription": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`", + "type": "string", + "const": "fs:allow-template-write", + "markdownDescription": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`", + "type": "string", + "const": "fs:allow-video-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`", + "type": "string", + "const": "fs:allow-video-read", + "markdownDescription": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`", + "type": "string", + "const": "fs:allow-video-write", + "markdownDescription": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`", + "type": "string", + "const": "fs:deny-default", + "markdownDescription": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file", + "markdownDescription": "Enables the copy_file command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists", + "markdownDescription": "Enables the exists command without any pre-configured scope." + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat", + "markdownDescription": "Enables the fstat command without any pre-configured scope." + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate", + "markdownDescription": "Enables the ftruncate command without any pre-configured scope." + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat", + "markdownDescription": "Enables the lstat command without any pre-configured scope." + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir", + "markdownDescription": "Enables the mkdir command without any pre-configured scope." + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open", + "markdownDescription": "Enables the open command without any pre-configured scope." + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read", + "markdownDescription": "Enables the read command without any pre-configured scope." + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir", + "markdownDescription": "Enables the read_dir command without any pre-configured scope." + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file", + "markdownDescription": "Enables the read_file command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file", + "markdownDescription": "Enables the read_text_file command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines", + "markdownDescription": "Enables the read_text_file_lines command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next", + "markdownDescription": "Enables the read_text_file_lines_next command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename", + "markdownDescription": "Enables the rename command without any pre-configured scope." + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek", + "markdownDescription": "Enables the seek command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Enables the start_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-start-accessing-security-scoped-resource", + "markdownDescription": "Enables the start_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat", + "markdownDescription": "Enables the stat command without any pre-configured scope." + }, + { + "description": "Enables the stop_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stop-accessing-security-scoped-resource", + "markdownDescription": "Enables the stop_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate", + "markdownDescription": "Enables the truncate command without any pre-configured scope." + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch", + "markdownDescription": "Enables the unwatch command without any pre-configured scope." + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch", + "markdownDescription": "Enables the watch command without any pre-configured scope." + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write", + "markdownDescription": "Enables the write command without any pre-configured scope." + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file", + "markdownDescription": "Enables the write_file command without any pre-configured scope." + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file", + "markdownDescription": "Enables the write_text_file command without any pre-configured scope." + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs", + "markdownDescription": "This permissions allows to create the application specific directories.\n" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file", + "markdownDescription": "Denies the copy_file command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists", + "markdownDescription": "Denies the exists command without any pre-configured scope." + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat", + "markdownDescription": "Denies the fstat command without any pre-configured scope." + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate", + "markdownDescription": "Denies the ftruncate command without any pre-configured scope." + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat", + "markdownDescription": "Denies the lstat command without any pre-configured scope." + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir", + "markdownDescription": "Denies the mkdir command without any pre-configured scope." + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open", + "markdownDescription": "Denies the open command without any pre-configured scope." + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read", + "markdownDescription": "Denies the read command without any pre-configured scope." + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir", + "markdownDescription": "Denies the read_dir command without any pre-configured scope." + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file", + "markdownDescription": "Denies the read_file command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file", + "markdownDescription": "Denies the read_text_file command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines", + "markdownDescription": "Denies the read_text_file_lines command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next", + "markdownDescription": "Denies the read_text_file_lines_next command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename", + "markdownDescription": "Denies the rename command without any pre-configured scope." + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek", + "markdownDescription": "Denies the seek command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Denies the start_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-start-accessing-security-scoped-resource", + "markdownDescription": "Denies the start_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat", + "markdownDescription": "Denies the stat command without any pre-configured scope." + }, + { + "description": "Denies the stop_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stop-accessing-security-scoped-resource", + "markdownDescription": "Denies the stop_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate", + "markdownDescription": "Denies the truncate command without any pre-configured scope." + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch", + "markdownDescription": "Denies the unwatch command without any pre-configured scope." + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch", + "markdownDescription": "Denies the watch command without any pre-configured scope." + }, + { + "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.", + "type": "string", + "const": "fs:deny-webview-data-linux", + "markdownDescription": "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." + }, + { + "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.", + "type": "string", + "const": "fs:deny-webview-data-windows", + "markdownDescription": "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." + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write", + "markdownDescription": "Denies the write command without any pre-configured scope." + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file", + "markdownDescription": "Denies the write_file command without any pre-configured scope." + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file", + "markdownDescription": "Denies the write_text_file command without any pre-configured scope." + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all", + "markdownDescription": "This enables all read related commands without any pre-configured accessible paths." + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive", + "markdownDescription": "This permission allows recursive read functionality on the application\nspecific base directories. \n" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs", + "markdownDescription": "This enables directory read and file metadata related commands without any pre-configured accessible paths." + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files", + "markdownDescription": "This enables file read related commands without any pre-configured accessible paths." + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta", + "markdownDescription": "This enables all index or metadata related commands without any pre-configured accessible paths." + }, + { + "description": "An empty permission you can use to modify the global scope.\n\n## Example\n\n```json\n{\n \"identifier\": \"read-documents\",\n \"windows\": [\"main\"],\n \"permissions\": [\n \"fs:allow-read\",\n {\n \"identifier\": \"fs:scope\",\n \"allow\": [\n \"$APPDATA/documents/**/*\"\n ],\n \"deny\": [\n \"$APPDATA/documents/secret.txt\"\n ]\n }\n ]\n}\n```\n", + "type": "string", + "const": "fs:scope", + "markdownDescription": "An empty permission you can use to modify the global scope.\n\n## Example\n\n```json\n{\n \"identifier\": \"read-documents\",\n \"windows\": [\"main\"],\n \"permissions\": [\n \"fs:allow-read\",\n {\n \"identifier\": \"fs:scope\",\n \"allow\": [\n \"$APPDATA/documents/**/*\"\n ],\n \"deny\": [\n \"$APPDATA/documents/secret.txt\"\n ]\n }\n ]\n}\n```\n" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the application folders." + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index", + "markdownDescription": "This scope permits to list all files and folders in the application directories." + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive", + "markdownDescription": "This scope permits recursive access to the complete application folders, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPCACHE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPCONFIG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPLOG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index", + "markdownDescription": "This scope permits to list all files and folders in the `$AUDIO`folder." + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index", + "markdownDescription": "This scope permits to list all files and folders in the `$CACHE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index", + "markdownDescription": "This scope permits to list all files and folders in the `$CONFIG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DESKTOP`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DOCUMENT`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DOWNLOAD`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$EXE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index", + "markdownDescription": "This scope permits to list all files and folders in the `$EXE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$FONT` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index", + "markdownDescription": "This scope permits to list all files and folders in the `$FONT`folder." + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$HOME` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index", + "markdownDescription": "This scope permits to list all files and folders in the `$HOME`folder." + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$LOCALDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index", + "markdownDescription": "This scope permits to list all files and folders in the `$LOG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index", + "markdownDescription": "This scope permits to list all files and folders in the `$PICTURE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index", + "markdownDescription": "This scope permits to list all files and folders in the `$PUBLIC`folder." + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index", + "markdownDescription": "This scope permits to list all files and folders in the `$RESOURCE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index", + "markdownDescription": "This scope permits to list all files and folders in the `$RUNTIME`folder." + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index", + "markdownDescription": "This scope permits to list all files and folders in the `$TEMP`folder." + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index", + "markdownDescription": "This scope permits to list all files and folders in the `$TEMPLATE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index", + "markdownDescription": "This scope permits to list all files and folders in the `$VIDEO`folder." + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files." + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all", + "markdownDescription": "This enables all write related commands without any pre-configured accessible paths." + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files", + "markdownDescription": "This enables all file write related commands without any pre-configured accessible paths." + }, + { + "description": "No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n", + "type": "string", + "const": "global-shortcut:default", + "markdownDescription": "No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n" + }, + { + "description": "Enables the is_registered command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-is-registered", + "markdownDescription": "Enables the is_registered command without any pre-configured scope." + }, + { + "description": "Enables the register command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-register", + "markdownDescription": "Enables the register command without any pre-configured scope." + }, + { + "description": "Enables the register_all command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-register-all", + "markdownDescription": "Enables the register_all command without any pre-configured scope." + }, + { + "description": "Enables the unregister command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-unregister", + "markdownDescription": "Enables the unregister command without any pre-configured scope." + }, + { + "description": "Enables the unregister_all command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-unregister-all", + "markdownDescription": "Enables the unregister_all command without any pre-configured scope." + }, + { + "description": "Denies the is_registered command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-is-registered", + "markdownDescription": "Denies the is_registered command without any pre-configured scope." + }, + { + "description": "Denies the register command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-register", + "markdownDescription": "Denies the register command without any pre-configured scope." + }, + { + "description": "Denies the register_all command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-register-all", + "markdownDescription": "Denies the register_all command without any pre-configured scope." + }, + { + "description": "Denies the unregister command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-unregister", + "markdownDescription": "Denies the unregister command without any pre-configured scope." + }, + { + "description": "Denies the unregister_all command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-unregister-all", + "markdownDescription": "Denies the unregister_all command without any pre-configured scope." + }, + { + "description": "This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-load`\n- `allow-get-store`\n- `allow-set`\n- `allow-get`\n- `allow-has`\n- `allow-delete`\n- `allow-clear`\n- `allow-reset`\n- `allow-keys`\n- `allow-values`\n- `allow-entries`\n- `allow-length`\n- `allow-reload`\n- `allow-save`", + "type": "string", + "const": "store:default", + "markdownDescription": "This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-load`\n- `allow-get-store`\n- `allow-set`\n- `allow-get`\n- `allow-has`\n- `allow-delete`\n- `allow-clear`\n- `allow-reset`\n- `allow-keys`\n- `allow-values`\n- `allow-entries`\n- `allow-length`\n- `allow-reload`\n- `allow-save`" + }, + { + "description": "Enables the clear command without any pre-configured scope.", + "type": "string", + "const": "store:allow-clear", + "markdownDescription": "Enables the clear command without any pre-configured scope." + }, + { + "description": "Enables the delete command without any pre-configured scope.", + "type": "string", + "const": "store:allow-delete", + "markdownDescription": "Enables the delete command without any pre-configured scope." + }, + { + "description": "Enables the entries command without any pre-configured scope.", + "type": "string", + "const": "store:allow-entries", + "markdownDescription": "Enables the entries command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "store:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the get_store command without any pre-configured scope.", + "type": "string", + "const": "store:allow-get-store", + "markdownDescription": "Enables the get_store command without any pre-configured scope." + }, + { + "description": "Enables the has command without any pre-configured scope.", + "type": "string", + "const": "store:allow-has", + "markdownDescription": "Enables the has command without any pre-configured scope." + }, + { + "description": "Enables the keys command without any pre-configured scope.", + "type": "string", + "const": "store:allow-keys", + "markdownDescription": "Enables the keys command without any pre-configured scope." + }, + { + "description": "Enables the length command without any pre-configured scope.", + "type": "string", + "const": "store:allow-length", + "markdownDescription": "Enables the length command without any pre-configured scope." + }, + { + "description": "Enables the load command without any pre-configured scope.", + "type": "string", + "const": "store:allow-load", + "markdownDescription": "Enables the load command without any pre-configured scope." + }, + { + "description": "Enables the reload command without any pre-configured scope.", + "type": "string", + "const": "store:allow-reload", + "markdownDescription": "Enables the reload command without any pre-configured scope." + }, + { + "description": "Enables the reset command without any pre-configured scope.", + "type": "string", + "const": "store:allow-reset", + "markdownDescription": "Enables the reset command without any pre-configured scope." + }, + { + "description": "Enables the save command without any pre-configured scope.", + "type": "string", + "const": "store:allow-save", + "markdownDescription": "Enables the save command without any pre-configured scope." + }, + { + "description": "Enables the set command without any pre-configured scope.", + "type": "string", + "const": "store:allow-set", + "markdownDescription": "Enables the set command without any pre-configured scope." + }, + { + "description": "Enables the values command without any pre-configured scope.", + "type": "string", + "const": "store:allow-values", + "markdownDescription": "Enables the values command without any pre-configured scope." + }, + { + "description": "Denies the clear command without any pre-configured scope.", + "type": "string", + "const": "store:deny-clear", + "markdownDescription": "Denies the clear command without any pre-configured scope." + }, + { + "description": "Denies the delete command without any pre-configured scope.", + "type": "string", + "const": "store:deny-delete", + "markdownDescription": "Denies the delete command without any pre-configured scope." + }, + { + "description": "Denies the entries command without any pre-configured scope.", + "type": "string", + "const": "store:deny-entries", + "markdownDescription": "Denies the entries command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "store:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the get_store command without any pre-configured scope.", + "type": "string", + "const": "store:deny-get-store", + "markdownDescription": "Denies the get_store command without any pre-configured scope." + }, + { + "description": "Denies the has command without any pre-configured scope.", + "type": "string", + "const": "store:deny-has", + "markdownDescription": "Denies the has command without any pre-configured scope." + }, + { + "description": "Denies the keys command without any pre-configured scope.", + "type": "string", + "const": "store:deny-keys", + "markdownDescription": "Denies the keys command without any pre-configured scope." + }, + { + "description": "Denies the length command without any pre-configured scope.", + "type": "string", + "const": "store:deny-length", + "markdownDescription": "Denies the length command without any pre-configured scope." + }, + { + "description": "Denies the load command without any pre-configured scope.", + "type": "string", + "const": "store:deny-load", + "markdownDescription": "Denies the load command without any pre-configured scope." + }, + { + "description": "Denies the reload command without any pre-configured scope.", + "type": "string", + "const": "store:deny-reload", + "markdownDescription": "Denies the reload command without any pre-configured scope." + }, + { + "description": "Denies the reset command without any pre-configured scope.", + "type": "string", + "const": "store:deny-reset", + "markdownDescription": "Denies the reset command without any pre-configured scope." + }, + { + "description": "Denies the save command without any pre-configured scope.", + "type": "string", + "const": "store:deny-save", + "markdownDescription": "Denies the save command without any pre-configured scope." + }, + { + "description": "Denies the set command without any pre-configured scope.", + "type": "string", + "const": "store:deny-set", + "markdownDescription": "Denies the set command without any pre-configured scope." + }, + { + "description": "Denies the values command without any pre-configured scope.", + "type": "string", + "const": "store:deny-values", + "markdownDescription": "Denies the values command without any pre-configured scope." + } + ] + }, + "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" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/src-tauri/gen/schemas/windows-schema.json b/src-tauri/gen/schemas/windows-schema.json new file mode 100644 index 0000000..9ef0b50 --- /dev/null +++ b/src-tauri/gen/schemas/windows-schema.json @@ -0,0 +1,6174 @@ +{ + "$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 isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "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 are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "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", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\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#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`", + "type": "string", + "const": "fs:default", + "markdownDescription": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\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#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`", + "type": "string", + "const": "fs:allow-app-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`", + "type": "string", + "const": "fs:allow-app-read", + "markdownDescription": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`", + "type": "string", + "const": "fs:allow-app-write", + "markdownDescription": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`", + "type": "string", + "const": "fs:allow-appcache-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`", + "type": "string", + "const": "fs:allow-appcache-read", + "markdownDescription": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`", + "type": "string", + "const": "fs:allow-appcache-write", + "markdownDescription": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`", + "type": "string", + "const": "fs:allow-appconfig-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`", + "type": "string", + "const": "fs:allow-appconfig-read", + "markdownDescription": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`", + "type": "string", + "const": "fs:allow-appconfig-write", + "markdownDescription": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`", + "type": "string", + "const": "fs:allow-appdata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`", + "type": "string", + "const": "fs:allow-appdata-read", + "markdownDescription": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`", + "type": "string", + "const": "fs:allow-appdata-write", + "markdownDescription": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`", + "type": "string", + "const": "fs:allow-applocaldata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`", + "type": "string", + "const": "fs:allow-applocaldata-read", + "markdownDescription": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`", + "type": "string", + "const": "fs:allow-applocaldata-write", + "markdownDescription": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`", + "type": "string", + "const": "fs:allow-applog-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`", + "type": "string", + "const": "fs:allow-applog-read", + "markdownDescription": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`", + "type": "string", + "const": "fs:allow-applog-write", + "markdownDescription": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`", + "type": "string", + "const": "fs:allow-audio-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`", + "type": "string", + "const": "fs:allow-audio-read", + "markdownDescription": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`", + "type": "string", + "const": "fs:allow-audio-write", + "markdownDescription": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`", + "type": "string", + "const": "fs:allow-cache-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`", + "type": "string", + "const": "fs:allow-cache-read", + "markdownDescription": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`", + "type": "string", + "const": "fs:allow-cache-write", + "markdownDescription": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`", + "type": "string", + "const": "fs:allow-config-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`", + "type": "string", + "const": "fs:allow-config-read", + "markdownDescription": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`", + "type": "string", + "const": "fs:allow-config-write", + "markdownDescription": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`", + "type": "string", + "const": "fs:allow-data-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`", + "type": "string", + "const": "fs:allow-data-read", + "markdownDescription": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`", + "type": "string", + "const": "fs:allow-data-write", + "markdownDescription": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`", + "type": "string", + "const": "fs:allow-desktop-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`", + "type": "string", + "const": "fs:allow-desktop-read", + "markdownDescription": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`", + "type": "string", + "const": "fs:allow-desktop-write", + "markdownDescription": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`", + "type": "string", + "const": "fs:allow-document-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`", + "type": "string", + "const": "fs:allow-document-read", + "markdownDescription": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`", + "type": "string", + "const": "fs:allow-document-write", + "markdownDescription": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`", + "type": "string", + "const": "fs:allow-download-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`", + "type": "string", + "const": "fs:allow-download-read", + "markdownDescription": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`", + "type": "string", + "const": "fs:allow-download-write", + "markdownDescription": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`", + "type": "string", + "const": "fs:allow-exe-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`", + "type": "string", + "const": "fs:allow-exe-read", + "markdownDescription": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`", + "type": "string", + "const": "fs:allow-exe-write", + "markdownDescription": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`", + "type": "string", + "const": "fs:allow-font-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`", + "type": "string", + "const": "fs:allow-font-read", + "markdownDescription": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`", + "type": "string", + "const": "fs:allow-font-write", + "markdownDescription": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`", + "type": "string", + "const": "fs:allow-home-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`", + "type": "string", + "const": "fs:allow-home-read", + "markdownDescription": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`", + "type": "string", + "const": "fs:allow-home-write", + "markdownDescription": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`", + "type": "string", + "const": "fs:allow-localdata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`", + "type": "string", + "const": "fs:allow-localdata-read", + "markdownDescription": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`", + "type": "string", + "const": "fs:allow-localdata-write", + "markdownDescription": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`", + "type": "string", + "const": "fs:allow-log-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`", + "type": "string", + "const": "fs:allow-log-read", + "markdownDescription": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`", + "type": "string", + "const": "fs:allow-log-write", + "markdownDescription": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`", + "type": "string", + "const": "fs:allow-picture-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`", + "type": "string", + "const": "fs:allow-picture-read", + "markdownDescription": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`", + "type": "string", + "const": "fs:allow-picture-write", + "markdownDescription": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`", + "type": "string", + "const": "fs:allow-public-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`", + "type": "string", + "const": "fs:allow-public-read", + "markdownDescription": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`", + "type": "string", + "const": "fs:allow-public-write", + "markdownDescription": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`", + "type": "string", + "const": "fs:allow-resource-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`", + "type": "string", + "const": "fs:allow-resource-read", + "markdownDescription": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`", + "type": "string", + "const": "fs:allow-resource-write", + "markdownDescription": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`", + "type": "string", + "const": "fs:allow-runtime-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`", + "type": "string", + "const": "fs:allow-runtime-read", + "markdownDescription": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`", + "type": "string", + "const": "fs:allow-runtime-write", + "markdownDescription": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`", + "type": "string", + "const": "fs:allow-temp-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`", + "type": "string", + "const": "fs:allow-temp-read", + "markdownDescription": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`", + "type": "string", + "const": "fs:allow-temp-write", + "markdownDescription": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`", + "type": "string", + "const": "fs:allow-template-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`", + "type": "string", + "const": "fs:allow-template-read", + "markdownDescription": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`", + "type": "string", + "const": "fs:allow-template-write", + "markdownDescription": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`", + "type": "string", + "const": "fs:allow-video-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`", + "type": "string", + "const": "fs:allow-video-read", + "markdownDescription": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`", + "type": "string", + "const": "fs:allow-video-write", + "markdownDescription": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`", + "type": "string", + "const": "fs:deny-default", + "markdownDescription": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file", + "markdownDescription": "Enables the copy_file command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists", + "markdownDescription": "Enables the exists command without any pre-configured scope." + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat", + "markdownDescription": "Enables the fstat command without any pre-configured scope." + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate", + "markdownDescription": "Enables the ftruncate command without any pre-configured scope." + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat", + "markdownDescription": "Enables the lstat command without any pre-configured scope." + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir", + "markdownDescription": "Enables the mkdir command without any pre-configured scope." + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open", + "markdownDescription": "Enables the open command without any pre-configured scope." + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read", + "markdownDescription": "Enables the read command without any pre-configured scope." + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir", + "markdownDescription": "Enables the read_dir command without any pre-configured scope." + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file", + "markdownDescription": "Enables the read_file command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file", + "markdownDescription": "Enables the read_text_file command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines", + "markdownDescription": "Enables the read_text_file_lines command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next", + "markdownDescription": "Enables the read_text_file_lines_next command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename", + "markdownDescription": "Enables the rename command without any pre-configured scope." + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek", + "markdownDescription": "Enables the seek command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Enables the start_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-start-accessing-security-scoped-resource", + "markdownDescription": "Enables the start_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat", + "markdownDescription": "Enables the stat command without any pre-configured scope." + }, + { + "description": "Enables the stop_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stop-accessing-security-scoped-resource", + "markdownDescription": "Enables the stop_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate", + "markdownDescription": "Enables the truncate command without any pre-configured scope." + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch", + "markdownDescription": "Enables the unwatch command without any pre-configured scope." + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch", + "markdownDescription": "Enables the watch command without any pre-configured scope." + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write", + "markdownDescription": "Enables the write command without any pre-configured scope." + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file", + "markdownDescription": "Enables the write_file command without any pre-configured scope." + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file", + "markdownDescription": "Enables the write_text_file command without any pre-configured scope." + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs", + "markdownDescription": "This permissions allows to create the application specific directories.\n" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file", + "markdownDescription": "Denies the copy_file command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists", + "markdownDescription": "Denies the exists command without any pre-configured scope." + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat", + "markdownDescription": "Denies the fstat command without any pre-configured scope." + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate", + "markdownDescription": "Denies the ftruncate command without any pre-configured scope." + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat", + "markdownDescription": "Denies the lstat command without any pre-configured scope." + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir", + "markdownDescription": "Denies the mkdir command without any pre-configured scope." + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open", + "markdownDescription": "Denies the open command without any pre-configured scope." + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read", + "markdownDescription": "Denies the read command without any pre-configured scope." + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir", + "markdownDescription": "Denies the read_dir command without any pre-configured scope." + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file", + "markdownDescription": "Denies the read_file command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file", + "markdownDescription": "Denies the read_text_file command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines", + "markdownDescription": "Denies the read_text_file_lines command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next", + "markdownDescription": "Denies the read_text_file_lines_next command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename", + "markdownDescription": "Denies the rename command without any pre-configured scope." + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek", + "markdownDescription": "Denies the seek command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Denies the start_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-start-accessing-security-scoped-resource", + "markdownDescription": "Denies the start_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat", + "markdownDescription": "Denies the stat command without any pre-configured scope." + }, + { + "description": "Denies the stop_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stop-accessing-security-scoped-resource", + "markdownDescription": "Denies the stop_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate", + "markdownDescription": "Denies the truncate command without any pre-configured scope." + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch", + "markdownDescription": "Denies the unwatch command without any pre-configured scope." + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch", + "markdownDescription": "Denies the watch command without any pre-configured scope." + }, + { + "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.", + "type": "string", + "const": "fs:deny-webview-data-linux", + "markdownDescription": "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." + }, + { + "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.", + "type": "string", + "const": "fs:deny-webview-data-windows", + "markdownDescription": "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." + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write", + "markdownDescription": "Denies the write command without any pre-configured scope." + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file", + "markdownDescription": "Denies the write_file command without any pre-configured scope." + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file", + "markdownDescription": "Denies the write_text_file command without any pre-configured scope." + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all", + "markdownDescription": "This enables all read related commands without any pre-configured accessible paths." + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive", + "markdownDescription": "This permission allows recursive read functionality on the application\nspecific base directories. \n" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs", + "markdownDescription": "This enables directory read and file metadata related commands without any pre-configured accessible paths." + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files", + "markdownDescription": "This enables file read related commands without any pre-configured accessible paths." + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta", + "markdownDescription": "This enables all index or metadata related commands without any pre-configured accessible paths." + }, + { + "description": "An empty permission you can use to modify the global scope.\n\n## Example\n\n```json\n{\n \"identifier\": \"read-documents\",\n \"windows\": [\"main\"],\n \"permissions\": [\n \"fs:allow-read\",\n {\n \"identifier\": \"fs:scope\",\n \"allow\": [\n \"$APPDATA/documents/**/*\"\n ],\n \"deny\": [\n \"$APPDATA/documents/secret.txt\"\n ]\n }\n ]\n}\n```\n", + "type": "string", + "const": "fs:scope", + "markdownDescription": "An empty permission you can use to modify the global scope.\n\n## Example\n\n```json\n{\n \"identifier\": \"read-documents\",\n \"windows\": [\"main\"],\n \"permissions\": [\n \"fs:allow-read\",\n {\n \"identifier\": \"fs:scope\",\n \"allow\": [\n \"$APPDATA/documents/**/*\"\n ],\n \"deny\": [\n \"$APPDATA/documents/secret.txt\"\n ]\n }\n ]\n}\n```\n" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the application folders." + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index", + "markdownDescription": "This scope permits to list all files and folders in the application directories." + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive", + "markdownDescription": "This scope permits recursive access to the complete application folders, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPCACHE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPCONFIG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPLOG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index", + "markdownDescription": "This scope permits to list all files and folders in the `$AUDIO`folder." + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index", + "markdownDescription": "This scope permits to list all files and folders in the `$CACHE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index", + "markdownDescription": "This scope permits to list all files and folders in the `$CONFIG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DESKTOP`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DOCUMENT`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DOWNLOAD`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$EXE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index", + "markdownDescription": "This scope permits to list all files and folders in the `$EXE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$FONT` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index", + "markdownDescription": "This scope permits to list all files and folders in the `$FONT`folder." + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$HOME` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index", + "markdownDescription": "This scope permits to list all files and folders in the `$HOME`folder." + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$LOCALDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index", + "markdownDescription": "This scope permits to list all files and folders in the `$LOG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index", + "markdownDescription": "This scope permits to list all files and folders in the `$PICTURE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index", + "markdownDescription": "This scope permits to list all files and folders in the `$PUBLIC`folder." + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index", + "markdownDescription": "This scope permits to list all files and folders in the `$RESOURCE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index", + "markdownDescription": "This scope permits to list all files and folders in the `$RUNTIME`folder." + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index", + "markdownDescription": "This scope permits to list all files and folders in the `$TEMP`folder." + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index", + "markdownDescription": "This scope permits to list all files and folders in the `$TEMPLATE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index", + "markdownDescription": "This scope permits to list all files and folders in the `$VIDEO`folder." + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files." + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all", + "markdownDescription": "This enables all write related commands without any pre-configured accessible paths." + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files", + "markdownDescription": "This enables all file write related commands without any pre-configured accessible paths." + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "A path that can be accessed by the webview when using the fs APIs. FS scope path pattern.\n\nThe pattern 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" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "A path that can be accessed by the webview when using the fs APIs.\n\nThe pattern 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" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "A path that can be accessed by the webview when using the fs APIs. FS scope path pattern.\n\nThe pattern 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" + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "A path that can be accessed by the webview when using the fs APIs.\n\nThe pattern 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" + } + } + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`", + "type": "string", + "const": "core:default", + "markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`" + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`", + "type": "string", + "const": "core:app:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide", + "markdownDescription": "Enables the app_hide command without any pre-configured scope." + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show", + "markdownDescription": "Enables the app_show command without any pre-configured scope." + }, + { + "description": "Enables the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-bundle-type", + "markdownDescription": "Enables the bundle_type command without any pre-configured scope." + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon", + "markdownDescription": "Enables the default_window_icon command without any pre-configured scope." + }, + { + "description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-fetch-data-store-identifiers", + "markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Enables the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-identifier", + "markdownDescription": "Enables the identifier command without any pre-configured scope." + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name", + "markdownDescription": "Enables the name command without any pre-configured scope." + }, + { + "description": "Enables the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-register-listener", + "markdownDescription": "Enables the register_listener command without any pre-configured scope." + }, + { + "description": "Enables the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-data-store", + "markdownDescription": "Enables the remove_data_store command without any pre-configured scope." + }, + { + "description": "Enables the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-listener", + "markdownDescription": "Enables the remove_listener command without any pre-configured scope." + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme", + "markdownDescription": "Enables the set_app_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-dock-visibility", + "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Enables the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-supports-multiple-windows", + "markdownDescription": "Enables the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version", + "markdownDescription": "Enables the tauri_version command without any pre-configured scope." + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version", + "markdownDescription": "Enables the version command without any pre-configured scope." + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide", + "markdownDescription": "Denies the app_hide command without any pre-configured scope." + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show", + "markdownDescription": "Denies the app_show command without any pre-configured scope." + }, + { + "description": "Denies the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-bundle-type", + "markdownDescription": "Denies the bundle_type command without any pre-configured scope." + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon", + "markdownDescription": "Denies the default_window_icon command without any pre-configured scope." + }, + { + "description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-fetch-data-store-identifiers", + "markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Denies the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-identifier", + "markdownDescription": "Denies the identifier command without any pre-configured scope." + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name", + "markdownDescription": "Denies the name command without any pre-configured scope." + }, + { + "description": "Denies the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-register-listener", + "markdownDescription": "Denies the register_listener command without any pre-configured scope." + }, + { + "description": "Denies the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-data-store", + "markdownDescription": "Denies the remove_data_store command without any pre-configured scope." + }, + { + "description": "Denies the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-listener", + "markdownDescription": "Denies the remove_listener command without any pre-configured scope." + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme", + "markdownDescription": "Denies the set_app_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-dock-visibility", + "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Denies the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-supports-multiple-windows", + "markdownDescription": "Denies the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version", + "markdownDescription": "Denies the tauri_version command without any pre-configured scope." + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version", + "markdownDescription": "Denies the version command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`", + "type": "string", + "const": "core:event:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit", + "markdownDescription": "Enables the emit command without any pre-configured scope." + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to", + "markdownDescription": "Enables the emit_to command without any pre-configured scope." + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen", + "markdownDescription": "Enables the listen command without any pre-configured scope." + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten", + "markdownDescription": "Enables the unlisten command without any pre-configured scope." + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit", + "markdownDescription": "Denies the emit command without any pre-configured scope." + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to", + "markdownDescription": "Denies the emit_to command without any pre-configured scope." + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen", + "markdownDescription": "Denies the listen command without any pre-configured scope." + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten", + "markdownDescription": "Denies the unlisten command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`", + "type": "string", + "const": "core:image:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes", + "markdownDescription": "Enables the from_bytes command without any pre-configured scope." + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path", + "markdownDescription": "Enables the from_path command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba", + "markdownDescription": "Enables the rgba command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes", + "markdownDescription": "Denies the from_bytes command without any pre-configured scope." + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path", + "markdownDescription": "Denies the from_path command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba", + "markdownDescription": "Denies the rgba command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`", + "type": "string", + "const": "core:menu:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append", + "markdownDescription": "Enables the append command without any pre-configured scope." + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default", + "markdownDescription": "Enables the create_default command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert", + "markdownDescription": "Enables the insert command without any pre-configured scope." + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked", + "markdownDescription": "Enables the is_checked command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items", + "markdownDescription": "Enables the items command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup", + "markdownDescription": "Enables the popup command without any pre-configured scope." + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend", + "markdownDescription": "Enables the prepend command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at", + "markdownDescription": "Enables the remove_at command without any pre-configured scope." + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator", + "markdownDescription": "Enables the set_accelerator command without any pre-configured scope." + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu", + "markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp", + "markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu", + "markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp", + "markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked", + "markdownDescription": "Enables the set_checked command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text", + "markdownDescription": "Enables the set_text command without any pre-configured scope." + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text", + "markdownDescription": "Enables the text command without any pre-configured scope." + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append", + "markdownDescription": "Denies the append command without any pre-configured scope." + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default", + "markdownDescription": "Denies the create_default command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert", + "markdownDescription": "Denies the insert command without any pre-configured scope." + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked", + "markdownDescription": "Denies the is_checked command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items", + "markdownDescription": "Denies the items command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup", + "markdownDescription": "Denies the popup command without any pre-configured scope." + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend", + "markdownDescription": "Denies the prepend command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at", + "markdownDescription": "Denies the remove_at command without any pre-configured scope." + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator", + "markdownDescription": "Denies the set_accelerator command without any pre-configured scope." + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu", + "markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp", + "markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu", + "markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp", + "markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked", + "markdownDescription": "Denies the set_checked command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text", + "markdownDescription": "Denies the set_text command without any pre-configured scope." + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text", + "markdownDescription": "Denies the text command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`", + "type": "string", + "const": "core:path:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename", + "markdownDescription": "Enables the basename command without any pre-configured scope." + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname", + "markdownDescription": "Enables the dirname command without any pre-configured scope." + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname", + "markdownDescription": "Enables the extname command without any pre-configured scope." + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute", + "markdownDescription": "Enables the is_absolute command without any pre-configured scope." + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join", + "markdownDescription": "Enables the join command without any pre-configured scope." + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize", + "markdownDescription": "Enables the normalize command without any pre-configured scope." + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve", + "markdownDescription": "Enables the resolve command without any pre-configured scope." + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory", + "markdownDescription": "Enables the resolve_directory command without any pre-configured scope." + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename", + "markdownDescription": "Denies the basename command without any pre-configured scope." + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname", + "markdownDescription": "Denies the dirname command without any pre-configured scope." + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname", + "markdownDescription": "Denies the extname command without any pre-configured scope." + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute", + "markdownDescription": "Denies the is_absolute command without any pre-configured scope." + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join", + "markdownDescription": "Denies the join command without any pre-configured scope." + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize", + "markdownDescription": "Denies the normalize command without any pre-configured scope." + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve", + "markdownDescription": "Denies the resolve command without any pre-configured scope." + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory", + "markdownDescription": "Denies the resolve_directory command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`", + "type": "string", + "const": "core:resources:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`", + "type": "string", + "const": "core:tray:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id", + "markdownDescription": "Enables the get_by_id command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id", + "markdownDescription": "Enables the remove_by_id command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template", + "markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-with-as-template", + "markdownDescription": "Enables the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu", + "markdownDescription": "Enables the set_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click", + "markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path", + "markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip", + "markdownDescription": "Enables the set_tooltip command without any pre-configured scope." + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible", + "markdownDescription": "Enables the set_visible command without any pre-configured scope." + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id", + "markdownDescription": "Denies the get_by_id command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id", + "markdownDescription": "Denies the remove_by_id command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template", + "markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-with-as-template", + "markdownDescription": "Denies the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu", + "markdownDescription": "Denies the set_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click", + "markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path", + "markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip", + "markdownDescription": "Denies the set_tooltip command without any pre-configured scope." + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible", + "markdownDescription": "Denies the set_visible command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`", + "type": "string", + "const": "core:webview:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data", + "markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview", + "markdownDescription": "Enables the create_webview command without any pre-configured scope." + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window", + "markdownDescription": "Enables the create_webview_window command without any pre-configured scope." + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews", + "markdownDescription": "Enables the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools", + "markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print", + "markdownDescription": "Enables the print command without any pre-configured scope." + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent", + "markdownDescription": "Enables the reparent command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-auto-resize", + "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-background-color", + "markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus", + "markdownDescription": "Enables the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position", + "markdownDescription": "Enables the set_webview_position command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size", + "markdownDescription": "Enables the set_webview_size command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom", + "markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close", + "markdownDescription": "Enables the webview_close command without any pre-configured scope." + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide", + "markdownDescription": "Enables the webview_hide command without any pre-configured scope." + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position", + "markdownDescription": "Enables the webview_position command without any pre-configured scope." + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show", + "markdownDescription": "Enables the webview_show command without any pre-configured scope." + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size", + "markdownDescription": "Enables the webview_size command without any pre-configured scope." + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data", + "markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview", + "markdownDescription": "Denies the create_webview command without any pre-configured scope." + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window", + "markdownDescription": "Denies the create_webview_window command without any pre-configured scope." + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews", + "markdownDescription": "Denies the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools", + "markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print", + "markdownDescription": "Denies the print command without any pre-configured scope." + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent", + "markdownDescription": "Denies the reparent command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-auto-resize", + "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-background-color", + "markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus", + "markdownDescription": "Denies the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position", + "markdownDescription": "Denies the set_webview_position command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size", + "markdownDescription": "Denies the set_webview_size command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom", + "markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close", + "markdownDescription": "Denies the webview_close command without any pre-configured scope." + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide", + "markdownDescription": "Denies the webview_hide command without any pre-configured scope." + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position", + "markdownDescription": "Denies the webview_position command without any pre-configured scope." + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show", + "markdownDescription": "Denies the webview_show command without any pre-configured scope." + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size", + "markdownDescription": "Denies the webview_size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`", + "type": "string", + "const": "core:window:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`" + }, + { + "description": "Enables the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-activity-name", + "markdownDescription": "Enables the activity_name command without any pre-configured scope." + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors", + "markdownDescription": "Enables the available_monitors command without any pre-configured scope." + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center", + "markdownDescription": "Enables the center command without any pre-configured scope." + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor", + "markdownDescription": "Enables the current_monitor command without any pre-configured scope." + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position", + "markdownDescription": "Enables the cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy", + "markdownDescription": "Enables the destroy command without any pre-configured scope." + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows", + "markdownDescription": "Enables the get_all_windows command without any pre-configured scope." + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide", + "markdownDescription": "Enables the hide command without any pre-configured scope." + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position", + "markdownDescription": "Enables the inner_position command without any pre-configured scope." + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size", + "markdownDescription": "Enables the inner_size command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize", + "markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-always-on-top", + "markdownDescription": "Enables the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable", + "markdownDescription": "Enables the is_closable command without any pre-configured scope." + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated", + "markdownDescription": "Enables the is_decorated command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused", + "markdownDescription": "Enables the is_focused command without any pre-configured scope." + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen", + "markdownDescription": "Enables the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable", + "markdownDescription": "Enables the is_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized", + "markdownDescription": "Enables the is_maximized command without any pre-configured scope." + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable", + "markdownDescription": "Enables the is_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized", + "markdownDescription": "Enables the is_minimized command without any pre-configured scope." + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable", + "markdownDescription": "Enables the is_resizable command without any pre-configured scope." + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible", + "markdownDescription": "Enables the is_visible command without any pre-configured scope." + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize", + "markdownDescription": "Enables the maximize command without any pre-configured scope." + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize", + "markdownDescription": "Enables the minimize command without any pre-configured scope." + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point", + "markdownDescription": "Enables the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position", + "markdownDescription": "Enables the outer_position command without any pre-configured scope." + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size", + "markdownDescription": "Enables the outer_size command without any pre-configured scope." + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor", + "markdownDescription": "Enables the primary_monitor command without any pre-configured scope." + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention", + "markdownDescription": "Enables the request_user_attention command without any pre-configured scope." + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor", + "markdownDescription": "Enables the scale_factor command without any pre-configured scope." + }, + { + "description": "Enables the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scene-identifier", + "markdownDescription": "Enables the scene_identifier command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom", + "markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top", + "markdownDescription": "Enables the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-background-color", + "markdownDescription": "Enables the set_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-count", + "markdownDescription": "Enables the set_badge_count command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-label", + "markdownDescription": "Enables the set_badge_label command without any pre-configured scope." + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable", + "markdownDescription": "Enables the set_closable command without any pre-configured scope." + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected", + "markdownDescription": "Enables the set_content_protected command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab", + "markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon", + "markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position", + "markdownDescription": "Enables the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible", + "markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations", + "markdownDescription": "Enables the set_decorations command without any pre-configured scope." + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects", + "markdownDescription": "Enables the set_effects command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus", + "markdownDescription": "Enables the set_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focusable", + "markdownDescription": "Enables the set_focusable command without any pre-configured scope." + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen", + "markdownDescription": "Enables the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events", + "markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size", + "markdownDescription": "Enables the set_max_size command without any pre-configured scope." + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable", + "markdownDescription": "Enables the set_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size", + "markdownDescription": "Enables the set_min_size command without any pre-configured scope." + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable", + "markdownDescription": "Enables the set_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-overlay-icon", + "markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position", + "markdownDescription": "Enables the set_position command without any pre-configured scope." + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar", + "markdownDescription": "Enables the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable", + "markdownDescription": "Enables the set_resizable command without any pre-configured scope." + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow", + "markdownDescription": "Enables the set_shadow command without any pre-configured scope." + }, + { + "description": "Enables the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-simple-fullscreen", + "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size", + "markdownDescription": "Enables the set_size command without any pre-configured scope." + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints", + "markdownDescription": "Enables the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar", + "markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme", + "markdownDescription": "Enables the set_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style", + "markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces", + "markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show", + "markdownDescription": "Enables the show command without any pre-configured scope." + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging", + "markdownDescription": "Enables the start_dragging command without any pre-configured scope." + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging", + "markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme", + "markdownDescription": "Enables the theme command without any pre-configured scope." + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title", + "markdownDescription": "Enables the title command without any pre-configured scope." + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize", + "markdownDescription": "Enables the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize", + "markdownDescription": "Enables the unmaximize command without any pre-configured scope." + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize", + "markdownDescription": "Enables the unminimize command without any pre-configured scope." + }, + { + "description": "Denies the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-activity-name", + "markdownDescription": "Denies the activity_name command without any pre-configured scope." + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors", + "markdownDescription": "Denies the available_monitors command without any pre-configured scope." + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center", + "markdownDescription": "Denies the center command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor", + "markdownDescription": "Denies the current_monitor command without any pre-configured scope." + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position", + "markdownDescription": "Denies the cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy", + "markdownDescription": "Denies the destroy command without any pre-configured scope." + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows", + "markdownDescription": "Denies the get_all_windows command without any pre-configured scope." + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide", + "markdownDescription": "Denies the hide command without any pre-configured scope." + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position", + "markdownDescription": "Denies the inner_position command without any pre-configured scope." + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size", + "markdownDescription": "Denies the inner_size command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize", + "markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-always-on-top", + "markdownDescription": "Denies the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable", + "markdownDescription": "Denies the is_closable command without any pre-configured scope." + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated", + "markdownDescription": "Denies the is_decorated command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused", + "markdownDescription": "Denies the is_focused command without any pre-configured scope." + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen", + "markdownDescription": "Denies the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable", + "markdownDescription": "Denies the is_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized", + "markdownDescription": "Denies the is_maximized command without any pre-configured scope." + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable", + "markdownDescription": "Denies the is_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized", + "markdownDescription": "Denies the is_minimized command without any pre-configured scope." + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable", + "markdownDescription": "Denies the is_resizable command without any pre-configured scope." + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible", + "markdownDescription": "Denies the is_visible command without any pre-configured scope." + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize", + "markdownDescription": "Denies the maximize command without any pre-configured scope." + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize", + "markdownDescription": "Denies the minimize command without any pre-configured scope." + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point", + "markdownDescription": "Denies the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position", + "markdownDescription": "Denies the outer_position command without any pre-configured scope." + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size", + "markdownDescription": "Denies the outer_size command without any pre-configured scope." + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor", + "markdownDescription": "Denies the primary_monitor command without any pre-configured scope." + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention", + "markdownDescription": "Denies the request_user_attention command without any pre-configured scope." + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor", + "markdownDescription": "Denies the scale_factor command without any pre-configured scope." + }, + { + "description": "Denies the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scene-identifier", + "markdownDescription": "Denies the scene_identifier command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom", + "markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top", + "markdownDescription": "Denies the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-background-color", + "markdownDescription": "Denies the set_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-count", + "markdownDescription": "Denies the set_badge_count command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-label", + "markdownDescription": "Denies the set_badge_label command without any pre-configured scope." + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable", + "markdownDescription": "Denies the set_closable command without any pre-configured scope." + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected", + "markdownDescription": "Denies the set_content_protected command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab", + "markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon", + "markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position", + "markdownDescription": "Denies the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible", + "markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations", + "markdownDescription": "Denies the set_decorations command without any pre-configured scope." + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects", + "markdownDescription": "Denies the set_effects command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus", + "markdownDescription": "Denies the set_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focusable", + "markdownDescription": "Denies the set_focusable command without any pre-configured scope." + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen", + "markdownDescription": "Denies the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events", + "markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size", + "markdownDescription": "Denies the set_max_size command without any pre-configured scope." + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable", + "markdownDescription": "Denies the set_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size", + "markdownDescription": "Denies the set_min_size command without any pre-configured scope." + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable", + "markdownDescription": "Denies the set_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-overlay-icon", + "markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position", + "markdownDescription": "Denies the set_position command without any pre-configured scope." + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar", + "markdownDescription": "Denies the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable", + "markdownDescription": "Denies the set_resizable command without any pre-configured scope." + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow", + "markdownDescription": "Denies the set_shadow command without any pre-configured scope." + }, + { + "description": "Denies the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-simple-fullscreen", + "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size", + "markdownDescription": "Denies the set_size command without any pre-configured scope." + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints", + "markdownDescription": "Denies the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar", + "markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme", + "markdownDescription": "Denies the set_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style", + "markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces", + "markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show", + "markdownDescription": "Denies the show command without any pre-configured scope." + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging", + "markdownDescription": "Denies the start_dragging command without any pre-configured scope." + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging", + "markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme", + "markdownDescription": "Denies the theme command without any pre-configured scope." + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title", + "markdownDescription": "Denies the title command without any pre-configured scope." + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize", + "markdownDescription": "Denies the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize", + "markdownDescription": "Denies the unmaximize command without any pre-configured scope." + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize", + "markdownDescription": "Denies the unminimize command without any pre-configured scope." + }, + { + "description": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n\n#### This default permission set includes:\n\n- `allow-message`\n- `allow-save`\n- `allow-open`", + "type": "string", + "const": "dialog:default", + "markdownDescription": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n\n#### This default permission set includes:\n\n- `allow-message`\n- `allow-save`\n- `allow-open`" + }, + { + "description": "Enables the ask command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)", + "type": "string", + "const": "dialog:allow-ask", + "markdownDescription": "Enables the ask command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)" + }, + { + "description": "Enables the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)", + "type": "string", + "const": "dialog:allow-confirm", + "markdownDescription": "Enables the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `allow-message` and will be removed in v3)" + }, + { + "description": "Enables the message command without any pre-configured scope.", + "type": "string", + "const": "dialog:allow-message", + "markdownDescription": "Enables the message command without any pre-configured scope." + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "dialog:allow-open", + "markdownDescription": "Enables the open command without any pre-configured scope." + }, + { + "description": "Enables the save command without any pre-configured scope.", + "type": "string", + "const": "dialog:allow-save", + "markdownDescription": "Enables the save command without any pre-configured scope." + }, + { + "description": "Denies the ask command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)", + "type": "string", + "const": "dialog:deny-ask", + "markdownDescription": "Denies the ask command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)" + }, + { + "description": "Denies the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)", + "type": "string", + "const": "dialog:deny-confirm", + "markdownDescription": "Denies the confirm command without any pre-configured scope. (**DEPRECATED**: This is now an alias to `deny-message` and will be removed in v3)" + }, + { + "description": "Denies the message command without any pre-configured scope.", + "type": "string", + "const": "dialog:deny-message", + "markdownDescription": "Denies the message command without any pre-configured scope." + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "dialog:deny-open", + "markdownDescription": "Denies the open command without any pre-configured scope." + }, + { + "description": "Denies the save command without any pre-configured scope.", + "type": "string", + "const": "dialog:deny-save", + "markdownDescription": "Denies the save command without any pre-configured scope." + }, + { + "description": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\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#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`", + "type": "string", + "const": "fs:default", + "markdownDescription": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\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#### This default permission set includes:\n\n- `create-app-specific-dirs`\n- `read-app-specific-dirs-recursive`\n- `deny-default`" + }, + { + "description": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`", + "type": "string", + "const": "fs:allow-app-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-index`" + }, + { + "description": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the application folders, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`", + "type": "string", + "const": "fs:allow-app-read", + "markdownDescription": "This allows non-recursive read access to the application folders.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app`" + }, + { + "description": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`", + "type": "string", + "const": "fs:allow-app-write", + "markdownDescription": "This allows non-recursive write access to the application folders.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app`" + }, + { + "description": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`", + "type": "string", + "const": "fs:allow-app-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete application folders, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-app-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`", + "type": "string", + "const": "fs:allow-appcache-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`", + "type": "string", + "const": "fs:allow-appcache-read", + "markdownDescription": "This allows non-recursive read access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache`" + }, + { + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`", + "type": "string", + "const": "fs:allow-appcache-write", + "markdownDescription": "This allows non-recursive write access to the `$APPCACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache`" + }, + { + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`", + "type": "string", + "const": "fs:allow-appcache-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appcache-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`", + "type": "string", + "const": "fs:allow-appconfig-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`", + "type": "string", + "const": "fs:allow-appconfig-read", + "markdownDescription": "This allows non-recursive read access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig`" + }, + { + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`", + "type": "string", + "const": "fs:allow-appconfig-write", + "markdownDescription": "This allows non-recursive write access to the `$APPCONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig`" + }, + { + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`", + "type": "string", + "const": "fs:allow-appconfig-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appconfig-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`", + "type": "string", + "const": "fs:allow-appdata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`", + "type": "string", + "const": "fs:allow-appdata-read", + "markdownDescription": "This allows non-recursive read access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata`" + }, + { + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`", + "type": "string", + "const": "fs:allow-appdata-write", + "markdownDescription": "This allows non-recursive write access to the `$APPDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata`" + }, + { + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`", + "type": "string", + "const": "fs:allow-appdata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-appdata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`", + "type": "string", + "const": "fs:allow-applocaldata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`", + "type": "string", + "const": "fs:allow-applocaldata-read", + "markdownDescription": "This allows non-recursive read access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata`" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`", + "type": "string", + "const": "fs:allow-applocaldata-write", + "markdownDescription": "This allows non-recursive write access to the `$APPLOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata`" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`", + "type": "string", + "const": "fs:allow-applocaldata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applocaldata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`", + "type": "string", + "const": "fs:allow-applog-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`", + "type": "string", + "const": "fs:allow-applog-read", + "markdownDescription": "This allows non-recursive read access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog`" + }, + { + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`", + "type": "string", + "const": "fs:allow-applog-write", + "markdownDescription": "This allows non-recursive write access to the `$APPLOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog`" + }, + { + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`", + "type": "string", + "const": "fs:allow-applog-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-applog-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`", + "type": "string", + "const": "fs:allow-audio-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`", + "type": "string", + "const": "fs:allow-audio-read", + "markdownDescription": "This allows non-recursive read access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio`" + }, + { + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`", + "type": "string", + "const": "fs:allow-audio-write", + "markdownDescription": "This allows non-recursive write access to the `$AUDIO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio`" + }, + { + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`", + "type": "string", + "const": "fs:allow-audio-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-audio-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`", + "type": "string", + "const": "fs:allow-cache-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`", + "type": "string", + "const": "fs:allow-cache-read", + "markdownDescription": "This allows non-recursive read access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache`" + }, + { + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`", + "type": "string", + "const": "fs:allow-cache-write", + "markdownDescription": "This allows non-recursive write access to the `$CACHE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache`" + }, + { + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`", + "type": "string", + "const": "fs:allow-cache-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-cache-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`", + "type": "string", + "const": "fs:allow-config-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`", + "type": "string", + "const": "fs:allow-config-read", + "markdownDescription": "This allows non-recursive read access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config`" + }, + { + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`", + "type": "string", + "const": "fs:allow-config-write", + "markdownDescription": "This allows non-recursive write access to the `$CONFIG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config`" + }, + { + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`", + "type": "string", + "const": "fs:allow-config-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-config-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`", + "type": "string", + "const": "fs:allow-data-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`", + "type": "string", + "const": "fs:allow-data-read", + "markdownDescription": "This allows non-recursive read access to the `$DATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data`" + }, + { + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`", + "type": "string", + "const": "fs:allow-data-write", + "markdownDescription": "This allows non-recursive write access to the `$DATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data`" + }, + { + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`", + "type": "string", + "const": "fs:allow-data-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-data-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`", + "type": "string", + "const": "fs:allow-desktop-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`", + "type": "string", + "const": "fs:allow-desktop-read", + "markdownDescription": "This allows non-recursive read access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop`" + }, + { + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`", + "type": "string", + "const": "fs:allow-desktop-write", + "markdownDescription": "This allows non-recursive write access to the `$DESKTOP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop`" + }, + { + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`", + "type": "string", + "const": "fs:allow-desktop-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-desktop-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`", + "type": "string", + "const": "fs:allow-document-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`", + "type": "string", + "const": "fs:allow-document-read", + "markdownDescription": "This allows non-recursive read access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document`" + }, + { + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`", + "type": "string", + "const": "fs:allow-document-write", + "markdownDescription": "This allows non-recursive write access to the `$DOCUMENT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document`" + }, + { + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`", + "type": "string", + "const": "fs:allow-document-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-document-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`", + "type": "string", + "const": "fs:allow-download-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`", + "type": "string", + "const": "fs:allow-download-read", + "markdownDescription": "This allows non-recursive read access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download`" + }, + { + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`", + "type": "string", + "const": "fs:allow-download-write", + "markdownDescription": "This allows non-recursive write access to the `$DOWNLOAD` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download`" + }, + { + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`", + "type": "string", + "const": "fs:allow-download-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-download-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`", + "type": "string", + "const": "fs:allow-exe-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`", + "type": "string", + "const": "fs:allow-exe-read", + "markdownDescription": "This allows non-recursive read access to the `$EXE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe`" + }, + { + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`", + "type": "string", + "const": "fs:allow-exe-write", + "markdownDescription": "This allows non-recursive write access to the `$EXE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe`" + }, + { + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`", + "type": "string", + "const": "fs:allow-exe-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-exe-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`", + "type": "string", + "const": "fs:allow-font-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`", + "type": "string", + "const": "fs:allow-font-read", + "markdownDescription": "This allows non-recursive read access to the `$FONT` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font`" + }, + { + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`", + "type": "string", + "const": "fs:allow-font-write", + "markdownDescription": "This allows non-recursive write access to the `$FONT` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font`" + }, + { + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`", + "type": "string", + "const": "fs:allow-font-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-font-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`", + "type": "string", + "const": "fs:allow-home-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`", + "type": "string", + "const": "fs:allow-home-read", + "markdownDescription": "This allows non-recursive read access to the `$HOME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home`" + }, + { + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`", + "type": "string", + "const": "fs:allow-home-write", + "markdownDescription": "This allows non-recursive write access to the `$HOME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home`" + }, + { + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`", + "type": "string", + "const": "fs:allow-home-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-home-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`", + "type": "string", + "const": "fs:allow-localdata-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`", + "type": "string", + "const": "fs:allow-localdata-read", + "markdownDescription": "This allows non-recursive read access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata`" + }, + { + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`", + "type": "string", + "const": "fs:allow-localdata-write", + "markdownDescription": "This allows non-recursive write access to the `$LOCALDATA` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata`" + }, + { + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`", + "type": "string", + "const": "fs:allow-localdata-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-localdata-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`", + "type": "string", + "const": "fs:allow-log-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`", + "type": "string", + "const": "fs:allow-log-read", + "markdownDescription": "This allows non-recursive read access to the `$LOG` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log`" + }, + { + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`", + "type": "string", + "const": "fs:allow-log-write", + "markdownDescription": "This allows non-recursive write access to the `$LOG` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log`" + }, + { + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`", + "type": "string", + "const": "fs:allow-log-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-log-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`", + "type": "string", + "const": "fs:allow-picture-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`", + "type": "string", + "const": "fs:allow-picture-read", + "markdownDescription": "This allows non-recursive read access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture`" + }, + { + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`", + "type": "string", + "const": "fs:allow-picture-write", + "markdownDescription": "This allows non-recursive write access to the `$PICTURE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture`" + }, + { + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`", + "type": "string", + "const": "fs:allow-picture-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-picture-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`", + "type": "string", + "const": "fs:allow-public-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`", + "type": "string", + "const": "fs:allow-public-read", + "markdownDescription": "This allows non-recursive read access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public`" + }, + { + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`", + "type": "string", + "const": "fs:allow-public-write", + "markdownDescription": "This allows non-recursive write access to the `$PUBLIC` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public`" + }, + { + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`", + "type": "string", + "const": "fs:allow-public-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-public-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`", + "type": "string", + "const": "fs:allow-resource-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`", + "type": "string", + "const": "fs:allow-resource-read", + "markdownDescription": "This allows non-recursive read access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource`" + }, + { + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`", + "type": "string", + "const": "fs:allow-resource-write", + "markdownDescription": "This allows non-recursive write access to the `$RESOURCE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource`" + }, + { + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`", + "type": "string", + "const": "fs:allow-resource-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-resource-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`", + "type": "string", + "const": "fs:allow-runtime-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`", + "type": "string", + "const": "fs:allow-runtime-read", + "markdownDescription": "This allows non-recursive read access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime`" + }, + { + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`", + "type": "string", + "const": "fs:allow-runtime-write", + "markdownDescription": "This allows non-recursive write access to the `$RUNTIME` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime`" + }, + { + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`", + "type": "string", + "const": "fs:allow-runtime-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-runtime-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`", + "type": "string", + "const": "fs:allow-temp-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`", + "type": "string", + "const": "fs:allow-temp-read", + "markdownDescription": "This allows non-recursive read access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp`" + }, + { + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`", + "type": "string", + "const": "fs:allow-temp-write", + "markdownDescription": "This allows non-recursive write access to the `$TEMP` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp`" + }, + { + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`", + "type": "string", + "const": "fs:allow-temp-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-temp-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`", + "type": "string", + "const": "fs:allow-template-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`", + "type": "string", + "const": "fs:allow-template-read", + "markdownDescription": "This allows non-recursive read access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template`" + }, + { + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`", + "type": "string", + "const": "fs:allow-template-write", + "markdownDescription": "This allows non-recursive write access to the `$TEMPLATE` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template`" + }, + { + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`", + "type": "string", + "const": "fs:allow-template-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-template-recursive`" + }, + { + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`", + "type": "string", + "const": "fs:allow-video-meta", + "markdownDescription": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-index`" + }, + { + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-meta-recursive", + "markdownDescription": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.\n#### This permission set includes:\n\n- `read-meta`\n- `scope-video-recursive`" + }, + { + "description": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`", + "type": "string", + "const": "fs:allow-video-read", + "markdownDescription": "This allows non-recursive read access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video`" + }, + { + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-read-recursive", + "markdownDescription": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `read-all`\n- `scope-video-recursive`" + }, + { + "description": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`", + "type": "string", + "const": "fs:allow-video-write", + "markdownDescription": "This allows non-recursive write access to the `$VIDEO` folder.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video`" + }, + { + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`", + "type": "string", + "const": "fs:allow-video-write-recursive", + "markdownDescription": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.\n#### This permission set includes:\n\n- `write-all`\n- `scope-video-recursive`" + }, + { + "description": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`", + "type": "string", + "const": "fs:deny-default", + "markdownDescription": "This denies access to dangerous Tauri relevant files and folders by default.\n#### This permission set includes:\n\n- `deny-webview-data-linux`\n- `deny-webview-data-windows`" + }, + { + "description": "Enables the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-copy-file", + "markdownDescription": "Enables the copy_file command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-exists", + "markdownDescription": "Enables the exists command without any pre-configured scope." + }, + { + "description": "Enables the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-fstat", + "markdownDescription": "Enables the fstat command without any pre-configured scope." + }, + { + "description": "Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-ftruncate", + "markdownDescription": "Enables the ftruncate command without any pre-configured scope." + }, + { + "description": "Enables the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-lstat", + "markdownDescription": "Enables the lstat command without any pre-configured scope." + }, + { + "description": "Enables the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-mkdir", + "markdownDescription": "Enables the mkdir command without any pre-configured scope." + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-open", + "markdownDescription": "Enables the open command without any pre-configured scope." + }, + { + "description": "Enables the read command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read", + "markdownDescription": "Enables the read command without any pre-configured scope." + }, + { + "description": "Enables the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-dir", + "markdownDescription": "Enables the read_dir command without any pre-configured scope." + }, + { + "description": "Enables the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-file", + "markdownDescription": "Enables the read_file command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file", + "markdownDescription": "Enables the read_text_file command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines", + "markdownDescription": "Enables the read_text_file_lines command without any pre-configured scope." + }, + { + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-read-text-file-lines-next", + "markdownDescription": "Enables the read_text_file_lines_next command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-rename", + "markdownDescription": "Enables the rename command without any pre-configured scope." + }, + { + "description": "Enables the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-seek", + "markdownDescription": "Enables the seek command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Enables the start_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-start-accessing-security-scoped-resource", + "markdownDescription": "Enables the start_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Enables the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stat", + "markdownDescription": "Enables the stat command without any pre-configured scope." + }, + { + "description": "Enables the stop_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-stop-accessing-security-scoped-resource", + "markdownDescription": "Enables the stop_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Enables the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-truncate", + "markdownDescription": "Enables the truncate command without any pre-configured scope." + }, + { + "description": "Enables the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-unwatch", + "markdownDescription": "Enables the unwatch command without any pre-configured scope." + }, + { + "description": "Enables the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-watch", + "markdownDescription": "Enables the watch command without any pre-configured scope." + }, + { + "description": "Enables the write command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write", + "markdownDescription": "Enables the write command without any pre-configured scope." + }, + { + "description": "Enables the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-file", + "markdownDescription": "Enables the write_file command without any pre-configured scope." + }, + { + "description": "Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:allow-write-text-file", + "markdownDescription": "Enables the write_text_file command without any pre-configured scope." + }, + { + "description": "This permissions allows to create the application specific directories.\n", + "type": "string", + "const": "fs:create-app-specific-dirs", + "markdownDescription": "This permissions allows to create the application specific directories.\n" + }, + { + "description": "Denies the copy_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-copy-file", + "markdownDescription": "Denies the copy_file command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the exists command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-exists", + "markdownDescription": "Denies the exists command without any pre-configured scope." + }, + { + "description": "Denies the fstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-fstat", + "markdownDescription": "Denies the fstat command without any pre-configured scope." + }, + { + "description": "Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-ftruncate", + "markdownDescription": "Denies the ftruncate command without any pre-configured scope." + }, + { + "description": "Denies the lstat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-lstat", + "markdownDescription": "Denies the lstat command without any pre-configured scope." + }, + { + "description": "Denies the mkdir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-mkdir", + "markdownDescription": "Denies the mkdir command without any pre-configured scope." + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-open", + "markdownDescription": "Denies the open command without any pre-configured scope." + }, + { + "description": "Denies the read command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read", + "markdownDescription": "Denies the read command without any pre-configured scope." + }, + { + "description": "Denies the read_dir command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-dir", + "markdownDescription": "Denies the read_dir command without any pre-configured scope." + }, + { + "description": "Denies the read_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-file", + "markdownDescription": "Denies the read_file command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file", + "markdownDescription": "Denies the read_text_file command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines", + "markdownDescription": "Denies the read_text_file_lines command without any pre-configured scope." + }, + { + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-read-text-file-lines-next", + "markdownDescription": "Denies the read_text_file_lines_next command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the rename command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-rename", + "markdownDescription": "Denies the rename command without any pre-configured scope." + }, + { + "description": "Denies the seek command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-seek", + "markdownDescription": "Denies the seek command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Denies the start_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-start-accessing-security-scoped-resource", + "markdownDescription": "Denies the start_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Denies the stat command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stat", + "markdownDescription": "Denies the stat command without any pre-configured scope." + }, + { + "description": "Denies the stop_accessing_security_scoped_resource command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-stop-accessing-security-scoped-resource", + "markdownDescription": "Denies the stop_accessing_security_scoped_resource command without any pre-configured scope." + }, + { + "description": "Denies the truncate command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-truncate", + "markdownDescription": "Denies the truncate command without any pre-configured scope." + }, + { + "description": "Denies the unwatch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-unwatch", + "markdownDescription": "Denies the unwatch command without any pre-configured scope." + }, + { + "description": "Denies the watch command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-watch", + "markdownDescription": "Denies the watch command without any pre-configured scope." + }, + { + "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.", + "type": "string", + "const": "fs:deny-webview-data-linux", + "markdownDescription": "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." + }, + { + "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.", + "type": "string", + "const": "fs:deny-webview-data-windows", + "markdownDescription": "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." + }, + { + "description": "Denies the write command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write", + "markdownDescription": "Denies the write command without any pre-configured scope." + }, + { + "description": "Denies the write_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-file", + "markdownDescription": "Denies the write_file command without any pre-configured scope." + }, + { + "description": "Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "const": "fs:deny-write-text-file", + "markdownDescription": "Denies the write_text_file command without any pre-configured scope." + }, + { + "description": "This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-all", + "markdownDescription": "This enables all read related commands without any pre-configured accessible paths." + }, + { + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "const": "fs:read-app-specific-dirs-recursive", + "markdownDescription": "This permission allows recursive read functionality on the application\nspecific base directories. \n" + }, + { + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-dirs", + "markdownDescription": "This enables directory read and file metadata related commands without any pre-configured accessible paths." + }, + { + "description": "This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-files", + "markdownDescription": "This enables file read related commands without any pre-configured accessible paths." + }, + { + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:read-meta", + "markdownDescription": "This enables all index or metadata related commands without any pre-configured accessible paths." + }, + { + "description": "An empty permission you can use to modify the global scope.\n\n## Example\n\n```json\n{\n \"identifier\": \"read-documents\",\n \"windows\": [\"main\"],\n \"permissions\": [\n \"fs:allow-read\",\n {\n \"identifier\": \"fs:scope\",\n \"allow\": [\n \"$APPDATA/documents/**/*\"\n ],\n \"deny\": [\n \"$APPDATA/documents/secret.txt\"\n ]\n }\n ]\n}\n```\n", + "type": "string", + "const": "fs:scope", + "markdownDescription": "An empty permission you can use to modify the global scope.\n\n## Example\n\n```json\n{\n \"identifier\": \"read-documents\",\n \"windows\": [\"main\"],\n \"permissions\": [\n \"fs:allow-read\",\n {\n \"identifier\": \"fs:scope\",\n \"allow\": [\n \"$APPDATA/documents/**/*\"\n ],\n \"deny\": [\n \"$APPDATA/documents/secret.txt\"\n ]\n }\n ]\n}\n```\n" + }, + { + "description": "This scope permits access to all files and list content of top level directories in the application folders.", + "type": "string", + "const": "fs:scope-app", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the application folders." + }, + { + "description": "This scope permits to list all files and folders in the application directories.", + "type": "string", + "const": "fs:scope-app-index", + "markdownDescription": "This scope permits to list all files and folders in the application directories." + }, + { + "description": "This scope permits recursive access to the complete application folders, including sub directories and files.", + "type": "string", + "const": "fs:scope-app-recursive", + "markdownDescription": "This scope permits recursive access to the complete application folders, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.", + "type": "string", + "const": "fs:scope-appcache", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "const": "fs:scope-appcache-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPCACHE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appcache-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.", + "type": "string", + "const": "fs:scope-appconfig", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "const": "fs:scope-appconfig-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPCONFIG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appconfig-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.", + "type": "string", + "const": "fs:scope-appdata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "const": "fs:scope-appdata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-appdata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.", + "type": "string", + "const": "fs:scope-applocaldata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "const": "fs:scope-applocaldata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applocaldata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.", + "type": "string", + "const": "fs:scope-applog", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "const": "fs:scope-applog-index", + "markdownDescription": "This scope permits to list all files and folders in the `$APPLOG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-applog-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.", + "type": "string", + "const": "fs:scope-audio", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "const": "fs:scope-audio-index", + "markdownDescription": "This scope permits to list all files and folders in the `$AUDIO`folder." + }, + { + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-audio-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder.", + "type": "string", + "const": "fs:scope-cache", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CACHE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "const": "fs:scope-cache-index", + "markdownDescription": "This scope permits to list all files and folders in the `$CACHE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-cache-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.", + "type": "string", + "const": "fs:scope-config", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "const": "fs:scope-config-index", + "markdownDescription": "This scope permits to list all files and folders in the `$CONFIG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-config-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DATA` folder.", + "type": "string", + "const": "fs:scope-data", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "const": "fs:scope-data-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-data-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.", + "type": "string", + "const": "fs:scope-desktop", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "const": "fs:scope-desktop-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DESKTOP`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-desktop-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.", + "type": "string", + "const": "fs:scope-document", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "const": "fs:scope-document-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DOCUMENT`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-document-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.", + "type": "string", + "const": "fs:scope-download", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "const": "fs:scope-download-index", + "markdownDescription": "This scope permits to list all files and folders in the `$DOWNLOAD`folder." + }, + { + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-download-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$EXE` folder.", + "type": "string", + "const": "fs:scope-exe", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$EXE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "const": "fs:scope-exe-index", + "markdownDescription": "This scope permits to list all files and folders in the `$EXE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-exe-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$FONT` folder.", + "type": "string", + "const": "fs:scope-font", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$FONT` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "const": "fs:scope-font-index", + "markdownDescription": "This scope permits to list all files and folders in the `$FONT`folder." + }, + { + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-font-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$HOME` folder.", + "type": "string", + "const": "fs:scope-home", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$HOME` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "const": "fs:scope-home-index", + "markdownDescription": "This scope permits to list all files and folders in the `$HOME`folder." + }, + { + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-home-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.", + "type": "string", + "const": "fs:scope-localdata", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "const": "fs:scope-localdata-index", + "markdownDescription": "This scope permits to list all files and folders in the `$LOCALDATA`folder." + }, + { + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-localdata-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$LOG` folder.", + "type": "string", + "const": "fs:scope-log", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$LOG` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "const": "fs:scope-log-index", + "markdownDescription": "This scope permits to list all files and folders in the `$LOG`folder." + }, + { + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-log-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.", + "type": "string", + "const": "fs:scope-picture", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "const": "fs:scope-picture-index", + "markdownDescription": "This scope permits to list all files and folders in the `$PICTURE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-picture-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.", + "type": "string", + "const": "fs:scope-public", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "const": "fs:scope-public-index", + "markdownDescription": "This scope permits to list all files and folders in the `$PUBLIC`folder." + }, + { + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-public-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.", + "type": "string", + "const": "fs:scope-resource", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "const": "fs:scope-resource-index", + "markdownDescription": "This scope permits to list all files and folders in the `$RESOURCE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-resource-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.", + "type": "string", + "const": "fs:scope-runtime", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "const": "fs:scope-runtime-index", + "markdownDescription": "This scope permits to list all files and folders in the `$RUNTIME`folder." + }, + { + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-runtime-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder.", + "type": "string", + "const": "fs:scope-temp", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMP` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "const": "fs:scope-temp-index", + "markdownDescription": "This scope permits to list all files and folders in the `$TEMP`folder." + }, + { + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-temp-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.", + "type": "string", + "const": "fs:scope-template", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "const": "fs:scope-template-index", + "markdownDescription": "This scope permits to list all files and folders in the `$TEMPLATE`folder." + }, + { + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-template-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files." + }, + { + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.", + "type": "string", + "const": "fs:scope-video", + "markdownDescription": "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder." + }, + { + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "const": "fs:scope-video-index", + "markdownDescription": "This scope permits to list all files and folders in the `$VIDEO`folder." + }, + { + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "const": "fs:scope-video-recursive", + "markdownDescription": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files." + }, + { + "description": "This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-all", + "markdownDescription": "This enables all write related commands without any pre-configured accessible paths." + }, + { + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "const": "fs:write-files", + "markdownDescription": "This enables all file write related commands without any pre-configured accessible paths." + }, + { + "description": "No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n", + "type": "string", + "const": "global-shortcut:default", + "markdownDescription": "No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n" + }, + { + "description": "Enables the is_registered command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-is-registered", + "markdownDescription": "Enables the is_registered command without any pre-configured scope." + }, + { + "description": "Enables the register command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-register", + "markdownDescription": "Enables the register command without any pre-configured scope." + }, + { + "description": "Enables the register_all command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-register-all", + "markdownDescription": "Enables the register_all command without any pre-configured scope." + }, + { + "description": "Enables the unregister command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-unregister", + "markdownDescription": "Enables the unregister command without any pre-configured scope." + }, + { + "description": "Enables the unregister_all command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:allow-unregister-all", + "markdownDescription": "Enables the unregister_all command without any pre-configured scope." + }, + { + "description": "Denies the is_registered command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-is-registered", + "markdownDescription": "Denies the is_registered command without any pre-configured scope." + }, + { + "description": "Denies the register command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-register", + "markdownDescription": "Denies the register command without any pre-configured scope." + }, + { + "description": "Denies the register_all command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-register-all", + "markdownDescription": "Denies the register_all command without any pre-configured scope." + }, + { + "description": "Denies the unregister command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-unregister", + "markdownDescription": "Denies the unregister command without any pre-configured scope." + }, + { + "description": "Denies the unregister_all command without any pre-configured scope.", + "type": "string", + "const": "global-shortcut:deny-unregister-all", + "markdownDescription": "Denies the unregister_all command without any pre-configured scope." + }, + { + "description": "This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-load`\n- `allow-get-store`\n- `allow-set`\n- `allow-get`\n- `allow-has`\n- `allow-delete`\n- `allow-clear`\n- `allow-reset`\n- `allow-keys`\n- `allow-values`\n- `allow-entries`\n- `allow-length`\n- `allow-reload`\n- `allow-save`", + "type": "string", + "const": "store:default", + "markdownDescription": "This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-load`\n- `allow-get-store`\n- `allow-set`\n- `allow-get`\n- `allow-has`\n- `allow-delete`\n- `allow-clear`\n- `allow-reset`\n- `allow-keys`\n- `allow-values`\n- `allow-entries`\n- `allow-length`\n- `allow-reload`\n- `allow-save`" + }, + { + "description": "Enables the clear command without any pre-configured scope.", + "type": "string", + "const": "store:allow-clear", + "markdownDescription": "Enables the clear command without any pre-configured scope." + }, + { + "description": "Enables the delete command without any pre-configured scope.", + "type": "string", + "const": "store:allow-delete", + "markdownDescription": "Enables the delete command without any pre-configured scope." + }, + { + "description": "Enables the entries command without any pre-configured scope.", + "type": "string", + "const": "store:allow-entries", + "markdownDescription": "Enables the entries command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "store:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the get_store command without any pre-configured scope.", + "type": "string", + "const": "store:allow-get-store", + "markdownDescription": "Enables the get_store command without any pre-configured scope." + }, + { + "description": "Enables the has command without any pre-configured scope.", + "type": "string", + "const": "store:allow-has", + "markdownDescription": "Enables the has command without any pre-configured scope." + }, + { + "description": "Enables the keys command without any pre-configured scope.", + "type": "string", + "const": "store:allow-keys", + "markdownDescription": "Enables the keys command without any pre-configured scope." + }, + { + "description": "Enables the length command without any pre-configured scope.", + "type": "string", + "const": "store:allow-length", + "markdownDescription": "Enables the length command without any pre-configured scope." + }, + { + "description": "Enables the load command without any pre-configured scope.", + "type": "string", + "const": "store:allow-load", + "markdownDescription": "Enables the load command without any pre-configured scope." + }, + { + "description": "Enables the reload command without any pre-configured scope.", + "type": "string", + "const": "store:allow-reload", + "markdownDescription": "Enables the reload command without any pre-configured scope." + }, + { + "description": "Enables the reset command without any pre-configured scope.", + "type": "string", + "const": "store:allow-reset", + "markdownDescription": "Enables the reset command without any pre-configured scope." + }, + { + "description": "Enables the save command without any pre-configured scope.", + "type": "string", + "const": "store:allow-save", + "markdownDescription": "Enables the save command without any pre-configured scope." + }, + { + "description": "Enables the set command without any pre-configured scope.", + "type": "string", + "const": "store:allow-set", + "markdownDescription": "Enables the set command without any pre-configured scope." + }, + { + "description": "Enables the values command without any pre-configured scope.", + "type": "string", + "const": "store:allow-values", + "markdownDescription": "Enables the values command without any pre-configured scope." + }, + { + "description": "Denies the clear command without any pre-configured scope.", + "type": "string", + "const": "store:deny-clear", + "markdownDescription": "Denies the clear command without any pre-configured scope." + }, + { + "description": "Denies the delete command without any pre-configured scope.", + "type": "string", + "const": "store:deny-delete", + "markdownDescription": "Denies the delete command without any pre-configured scope." + }, + { + "description": "Denies the entries command without any pre-configured scope.", + "type": "string", + "const": "store:deny-entries", + "markdownDescription": "Denies the entries command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "store:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the get_store command without any pre-configured scope.", + "type": "string", + "const": "store:deny-get-store", + "markdownDescription": "Denies the get_store command without any pre-configured scope." + }, + { + "description": "Denies the has command without any pre-configured scope.", + "type": "string", + "const": "store:deny-has", + "markdownDescription": "Denies the has command without any pre-configured scope." + }, + { + "description": "Denies the keys command without any pre-configured scope.", + "type": "string", + "const": "store:deny-keys", + "markdownDescription": "Denies the keys command without any pre-configured scope." + }, + { + "description": "Denies the length command without any pre-configured scope.", + "type": "string", + "const": "store:deny-length", + "markdownDescription": "Denies the length command without any pre-configured scope." + }, + { + "description": "Denies the load command without any pre-configured scope.", + "type": "string", + "const": "store:deny-load", + "markdownDescription": "Denies the load command without any pre-configured scope." + }, + { + "description": "Denies the reload command without any pre-configured scope.", + "type": "string", + "const": "store:deny-reload", + "markdownDescription": "Denies the reload command without any pre-configured scope." + }, + { + "description": "Denies the reset command without any pre-configured scope.", + "type": "string", + "const": "store:deny-reset", + "markdownDescription": "Denies the reset command without any pre-configured scope." + }, + { + "description": "Denies the save command without any pre-configured scope.", + "type": "string", + "const": "store:deny-save", + "markdownDescription": "Denies the save command without any pre-configured scope." + }, + { + "description": "Denies the set command without any pre-configured scope.", + "type": "string", + "const": "store:deny-set", + "markdownDescription": "Denies the set command without any pre-configured scope." + }, + { + "description": "Denies the values command without any pre-configured scope.", + "type": "string", + "const": "store:deny-values", + "markdownDescription": "Denies the values command without any pre-configured scope." + } + ] + }, + "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" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..eced21d6f1230dcb9bbdde14aee1a4e2b17e314f GIT binary patch literal 105877 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, + pub comment: String, +} + +pub async fn call_ai_api( + image_base64: &str, + rubric: &str, + config: &ApiConfig, + max_score: Option, + reference_answer: Option<&str>, + question_title: Option<&str>, + reference_answer_image: Option<&str>, + timeout_secs: u64, +) -> Result { + let system_role = "你是一名高校阅卷老师,根据评分标准和答案对学生答案评分。请输出JSON格式的结果。"; + + let has_ref_image = reference_answer_image.is_some_and(|s| !s.is_empty()); + let max_s = max_score.unwrap_or(100.0); + + let prompt = if has_ref_image { + format!( + "题目:{}\n评分标准:{}\n参考答案:{}\n满分:{}\n\n图片1是标准答案,图片2是学生答案。\n请根据评分标准和标准答案(图片1)给学生答案(图片2)评分。\n\n评分规则:\n1. 逐项评分,各项得分之和不超过满分{}\n2. 空白或无关答案给0分\n3. 部分正确酌情给分\n\n请输出JSON:\n{{\"score\":分数,\"confidence\":置信度0~1,\"deductions\":[\"扣分项\"],\"comment\":\"评语\"}}\n\n只输出JSON,不要包含其他文字和markdown标记。", + question_title.unwrap_or(""), + rubric, + reference_answer.unwrap_or("无"), + max_s, + max_s + ) + } else { + format!( + "题目:{}\n评分标准:{}\n参考答案:{}\n满分:{}\n\n图片是学生答案,请根据评分标准评分。\n\n评分规则:\n1. 逐项评分,各项得分之和不超过满分{}\n2. 空白或无关答案给0分\n3. 部分正确酌情给分\n\n请输出JSON:\n{{\"score\":分数,\"confidence\":置信度0~1,\"deductions\":[\"扣分项\"],\"comment\":\"评语\"}}\n\n只输出JSON,不要包含其他文字和markdown标记。", + question_title.unwrap_or(""), + rubric, + reference_answer.unwrap_or("无"), + max_s, + max_s + ) + }; + + let body = if has_ref_image { + serde_json::json!({ + "model": config.model, + "messages": [ + {"role": "system", "content": system_role}, + {"role": "user", "content": [ + {"type": "text", "text": &prompt}, + {"type": "image_url", "image_url": {"url": reference_answer_image.unwrap_or("")}}, + {"type": "image_url", "image_url": {"url": format!("data:image/png;base64,{}", image_base64)}} + ]} + ], + "max_tokens": 4096, + "temperature": 0.3 + }) + } else { + serde_json::json!({ + "model": config.model, + "messages": [ + {"role": "system", "content": system_role}, + {"role": "user", "content": [ + {"type": "text", "text": &prompt}, + {"type": "image_url", "image_url": {"url": format!("data:image/png;base64,{}", image_base64)}} + ]} + ], + "max_tokens": 4096, + "temperature": 0.3 + }) + }; + + let client = reqwest::Client::builder() + .timeout(std::time::Duration::from_secs(timeout_secs)) + .build() + .map_err(|e| format!("Failed to create HTTP client: {}", e))?; + + let url = format!("{}/chat/completions", config.base_url.trim_end_matches('/')); + + let mut last_error = String::new(); + + for attempt in 1..=3 { + match client + .post(&url) + .header("Content-Type", "application/json") + .header("Authorization", format!("Bearer {}", config.api_key)) + .json(&body) + .send() + .await + { + Ok(response) => { + let status = response.status(); + if !status.is_success() { + let error_text = response.text().await.unwrap_or_default(); + if error_text.contains("does not support image") || error_text.contains("does not support") && error_text.contains("image") { + last_error = "当前模型不支持图片输入,请在设置中更换为支持视觉的模型(如 Qwen/Qwen2.5-32B-Instruct、gpt-4o 等)".to_string(); + } else { + last_error = format!("API 返回错误 ({}): {}", status, &error_text); + } + log::warn!("AI API attempt {}/3 failed: {}", attempt, last_error); + if attempt < 3 { + tokio::time::sleep(std::time::Duration::from_secs(2)).await; + continue; + } + return Err(last_error); + } + + let body = response.text().await.map_err(|e| e.to_string())?; + if body.contains("does not support image") || body.contains("does not support") && body.contains("image") { + last_error = "当前模型不支持图片输入,请在设置中更换为支持视觉的模型(如 Qwen/Qwen2.5-32B-Instruct、gpt-4o 等)".to_string(); + log::warn!("AI API body error: {}", last_error); + return Err(last_error); + } + let json: Value = serde_json::from_str(&body).map_err(|e| format!("解析返回JSON失败: {}", e))?; + if let Some(err_msg) = json["error"]["message"].as_str() { + if err_msg.contains("does not support image") || err_msg.contains("image input") { + last_error = "当前模型不支持图片输入,请在设置中更换为支持视觉的模型(如 Qwen/Qwen2.5-32B-Instruct、gpt-4o 等)".to_string(); + return Err(last_error); + } + } + let content = json["choices"][0]["message"]["content"] + .as_str() + .unwrap_or("") + .to_string(); + if content.is_empty() { + last_error = format!("API 返回为空 (尝试 {}/3)", attempt); + log::warn!("AI API empty response, attempt {}/3", attempt); + if attempt < 3 { + tokio::time::sleep(std::time::Duration::from_secs(2)).await; + continue; + } + return Err(last_error); + } + match try_parse_json(&content) { + Some(parsed) => { + return Ok(GradeResult { + score: parsed["score"].as_f64().unwrap_or(0.0), + confidence: parsed["confidence"].as_f64().unwrap_or(0.5), + deductions: parsed["deductions"].as_array() + .map(|a| a.iter().filter_map(|v| v.as_str().map(|s| s.to_string())).collect()) + .unwrap_or_default(), + comment: parsed["comment"].as_str().or_else(|| parsed["commit"].as_str()) + .unwrap_or("") + .to_string(), + }); + } + None => { + last_error = format!("AI 返回 JSON 解析失败 (尝试 {}/3)", attempt); + log::warn!("AI JSON parse failed, attempt {}/3: {}", attempt, &content[..content.len().min(200)]); + if attempt < 3 { + tokio::time::sleep(std::time::Duration::from_secs(2)).await; + continue; + } + return Err(last_error); + } + } + } + Err(e) => { + last_error = format!("API request failed: {}", e); + log::warn!("AI API attempt {}/3 failed: {}", attempt, last_error); + if attempt < 3 { + tokio::time::sleep(std::time::Duration::from_secs(2)).await; + continue; + } + return Err(last_error); + } + } + } + + Err(last_error) +} + +fn try_parse_json(text: &str) -> Option { + let mut cleaned = text.trim().to_string(); + // remove markdown code fences + cleaned = cleaned.replace("```json", "").replace("```JSON", "").replace("```", "").trim().to_string(); + // if there's still non-JSON text, extract the first {...} object + if !cleaned.starts_with('{') && !cleaned.starts_with('[') { + if let Some(start) = cleaned.find('{') { + if let Some(end) = cleaned.rfind('}') { + cleaned = cleaned[start..=end].to_string(); + } + } + } + // attempt direct parse + if let Ok(v) = serde_json::from_str::(&cleaned) { + return Some(v); + } + // fix single quotes -> double quotes + let fixed = cleaned + .replace('\'', "\"") + .replace(",\n]", "\n]") + .replace(",\n}", "\n}") + .replace(",]", "]") + .replace(",}", "}"); + if let Ok(v) = serde_json::from_str::(&fixed) { + return Some(v); + } + None +} diff --git a/src-tauri/src/commands/grading.rs b/src-tauri/src/commands/grading.rs new file mode 100644 index 0000000..b01fca7 --- /dev/null +++ b/src-tauri/src/commands/grading.rs @@ -0,0 +1,63 @@ +use crate::AppState; +use serde::{Deserialize, Serialize}; +use tauri::State; + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct GradingSubmitData { + pub question_id: Option, + pub image_path: Option, + pub ai_score: f64, + pub teacher_score: f64, + pub confidence: f64, + pub student_answer: Option, + pub question_title: Option, + pub max_score: Option, + pub reference_answer: Option, + pub rubric: Option, + pub deductions: Option>, + pub comment: Option, + pub result_json: Option, + pub image_data: Option, + pub reference_answer_image: Option, +} + +#[tauri::command] +pub fn grading_submit(state: State, data: GradingSubmitData) -> Result { + let db = state.db.lock().map_err(|e| e.to_string())?; + let json = serde_json::json!({ + "questionId": data.question_id.unwrap_or(0), + "imagePath": data.image_path.unwrap_or_default(), + "studentAnswer": data.student_answer.unwrap_or_default(), + "aiScore": data.ai_score, + "teacherScore": data.teacher_score, + "confidence": data.confidence, + "questionTitle": data.question_title.unwrap_or_default(), + "maxScore": data.max_score.unwrap_or(100.0), + "referenceAnswer": data.reference_answer.unwrap_or_default(), + "rubric": data.rubric.unwrap_or_default(), + "deductions": serde_json::to_string(&data.deductions.unwrap_or_default()).unwrap_or_else(|_| "[]".to_string()), + "comment": data.comment.unwrap_or_default(), + "resultJson": data.result_json.unwrap_or_default(), + "imageData": data.image_data.unwrap_or_default(), + "referenceAnswerImage": data.reference_answer_image.unwrap_or_default(), + }); + Ok(db.insert_history(&json)) +} + +#[tauri::command] +pub fn grading_store_data(state: State, data: serde_json::Value) -> Result<(), String> { + let mut payload = state.grading_payload.lock().map_err(|e| e.to_string())?; + *payload = Some(data.to_string()); + Ok(()) +} + +#[tauri::command] +pub fn grading_get_data(state: State) -> Result, String> { + let mut payload = state.grading_payload.lock().map_err(|e| e.to_string())?; + let data = payload.take(); + match data { + Some(s) => serde_json::from_str(&s).map(Some).map_err(|e| e.to_string()), + None => Ok(None), + } +} diff --git a/src-tauri/src/commands/history.rs b/src-tauri/src/commands/history.rs new file mode 100644 index 0000000..8192bf9 --- /dev/null +++ b/src-tauri/src/commands/history.rs @@ -0,0 +1,20 @@ +use crate::AppState; +use tauri::State; + +#[tauri::command] +pub fn history_list(state: State) -> Result, String> { + let db = state.db.lock().map_err(|e| e.to_string())?; + Ok(db.list_history()) +} + +#[tauri::command] +pub fn history_delete(state: State, id: i64) -> Result { + let db = state.db.lock().map_err(|e| e.to_string())?; + Ok(db.delete_history(id)) +} + +#[tauri::command] +pub fn history_get_by_id(state: State, id: i64) -> Result, String> { + let db = state.db.lock().map_err(|e| e.to_string())?; + Ok(db.get_history_by_id(id)) +} diff --git a/src-tauri/src/commands/mod.rs b/src-tauri/src/commands/mod.rs new file mode 100644 index 0000000..855b22a --- /dev/null +++ b/src-tauri/src/commands/mod.rs @@ -0,0 +1,89 @@ +pub mod settings; +pub mod screenshot; +pub mod history; +pub mod grading; +pub mod rubric; +pub mod template; + +use crate::ai; +use crate::create_dialog_window; +use base64::Engine; +use serde::{Deserialize, Serialize}; +use tauri::AppHandle; +use tauri_plugin_dialog::DialogExt; +use tauri_plugin_store::StoreExt; + +#[derive(Debug, Serialize, Deserialize)] +pub struct ImageResult { + pub base64: String, + pub mime: String, + pub file_path: String, +} + +#[tauri::command] +pub async fn dialog_open(app: AppHandle, dialog_type: String) -> Result<(), String> { + let sizes: [(&str, f64, f64); 5] = [ + ("settings", 520.0, 540.0), + ("history", 860.0, 660.0), + ("templates", 720.0, 540.0), + ("rubric", 650.0, 700.0), + ("result", 620.0, 680.0), + ]; + let (_, w, h) = sizes.iter().find(|(t, _, _)| *t == dialog_type).unwrap_or(&("result", 600.0, 780.0)); + create_dialog_window(&app, &dialog_type, *w, *h).map_err(|e| e.to_string()) +} + +#[tauri::command] +pub async fn dialog_open_image(app: AppHandle) -> Result, String> { + let file = app.dialog() + .file() + .add_filter("图片", &["png", "jpg", "jpeg", "bmp", "gif", "webp"]) + .blocking_pick_file(); + match file { + Some(path) => { + let path_str = path.as_path().unwrap().to_string_lossy().to_string(); + let ext = std::path::Path::new(&path_str) + .extension() + .and_then(|e| e.to_str()) + .unwrap_or("png") + .to_lowercase(); + let mime = if ext == "jpg" { "jpeg".to_string() } else { ext.clone() }; + let bytes = std::fs::read(&path_str).map_err(|e| format!("Failed to read file: {}", e))?; + let base64 = base64::engine::general_purpose::STANDARD.encode(&bytes); + Ok(Some(ImageResult { base64, mime, file_path: path_str })) + } + None => Ok(None), + } +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct GradeRequest { + pub image_base64: String, + pub rubric: String, + pub api_config: ai::ApiConfig, + pub max_score: Option, + pub reference_answer: Option, + pub question_title: Option, + pub reference_answer_image: Option, +} + +#[tauri::command] +pub async fn ai_grade(app: AppHandle, request: GradeRequest) -> Result { + let timeout = app.store("settings.json") + .ok() + .and_then(|store| store.get("timeout").and_then(|v| v.as_i64().map(|i| i as u64))) + .unwrap_or(120); + + ai::call_ai_api( + &request.image_base64, + &request.rubric, + &request.api_config, + request.max_score, + request.reference_answer.as_deref(), + request.question_title.as_deref(), + request.reference_answer_image.as_deref(), + timeout, + ) + .await +} diff --git a/src-tauri/src/commands/rubric.rs b/src-tauri/src/commands/rubric.rs new file mode 100644 index 0000000..2e5d47c --- /dev/null +++ b/src-tauri/src/commands/rubric.rs @@ -0,0 +1,112 @@ +use crate::AppState; +use serde::{Deserialize, Serialize}; +use tauri::{AppHandle, Emitter, State}; +use tauri_plugin_dialog::DialogExt; + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct RubricData { + pub questions: Vec, + pub current_index: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct QuestionItem { + pub question_title: String, + pub max_score: f64, + pub reference_answer: String, + pub rubric: String, + pub reference_answer_image: Option, +} + +#[tauri::command] +pub fn rubric_store_data(app: AppHandle, state: State, data: RubricData) -> Result<(), String> { + let db = state.db.lock().map_err(|e| e.to_string())?; + db.clear_rubric(); + for (i, q) in data.questions.iter().enumerate() { + db.insert_rubric_question(&serde_json::json!(q), i as i32); + } + drop(db); + let _ = app.emit("rubric-updated", ()); + Ok(()) +} + +#[tauri::command] +pub fn rubric_get_data(state: State) -> Result, String> { + let db = state.db.lock().map_err(|e| e.to_string())?; + let questions = db.get_rubric_questions(); + if questions.is_empty() { + Ok(None) + } else { + Ok(Some(serde_json::json!({ + "questions": questions, + "currentIndex": 0 + }))) + } +} + +#[tauri::command] +pub async fn rubric_export_json(app: AppHandle, state: State<'_, AppState>) -> Result { + let questions = { + let db = state.db.lock().map_err(|e| e.to_string())?; + db.get_rubric_questions() + }; + if questions.is_empty() { + return Err("暂无评分标准可导出".to_string()); + } + let file = app.dialog() + .file() + .add_filter("JSON", &["json"]) + .set_file_name("评分标准.json") + .blocking_save_file(); + match file { + Some(path) => { + let path_str = path.as_path().unwrap().to_string_lossy().to_string(); + let content = serde_json::to_string_pretty(&questions).map_err(|e| e.to_string())?; + std::fs::write(&path_str, &content).map_err(|e| e.to_string())?; + Ok(true) + } + None => Ok(false), + } +} + +#[tauri::command] +pub async fn rubric_import_json(app: AppHandle) -> Result, String> { + let file = app.dialog() + .file() + .add_filter("JSON", &["json"]) + .blocking_pick_file(); + match file { + Some(path) => { + let path_str = path.as_path().unwrap().to_string_lossy().to_string(); + let content = std::fs::read_to_string(&path_str).map_err(|e| e.to_string())?; + let questions: Vec = serde_json::from_str(&content).map_err(|e| format!("JSON 格式错误:{}", e))?; + Ok(Some(serde_json::json!({ + "questions": questions, + "currentIndex": 0 + }))) + } + None => Ok(None), + } +} + +#[tauri::command] +pub fn rubric_get_next_index(state: State) -> Result { + let idx = state.rubric_next_index.lock().map_err(|e| e.to_string())?; + Ok(*idx) +} + +#[tauri::command] +pub fn rubric_set_next_index(state: State, idx: i32) -> Result<(), String> { + let mut next = state.rubric_next_index.lock().map_err(|e| e.to_string())?; + *next = idx; + Ok(()) +} + +#[tauri::command] +pub fn rubric_reset_next_index(state: State) -> Result<(), String> { + let mut next = state.rubric_next_index.lock().map_err(|e| e.to_string())?; + *next = 0; + Ok(()) +} diff --git a/src-tauri/src/commands/screenshot.rs b/src-tauri/src/commands/screenshot.rs new file mode 100644 index 0000000..c6228a0 --- /dev/null +++ b/src-tauri/src/commands/screenshot.rs @@ -0,0 +1,105 @@ +use crate::get_screenshot_window; +use base64::Engine; +use serde::{Deserialize, Serialize}; +use tauri::{AppHandle, Emitter, Manager}; + +#[derive(Debug, Serialize, Deserialize)] +pub struct CaptureRegion { + pub x: i32, + pub y: i32, + pub width: i32, + pub height: i32, +} + +#[tauri::command] +pub async fn screenshot_start(app: AppHandle) -> Result<(), String> { + if let Some(main) = app.get_webview_window("main") { + let _ = main.hide(); + } + get_screenshot_window(&app).map_err(|e| e.to_string())?; + Ok(()) +} + +fn get_monitor_at_cursor(app: &AppHandle) -> Result { + let monitors = xcap::Monitor::all().map_err(|e| format!("Failed to list monitors: {}", e))?; + let cursor = app.get_webview_window("main").and_then(|w| w.outer_position().ok()); + for m in monitors { + let mx = m.x().map_err(|e| format!("Monitor x error: {}", e))?; + let my = m.y().map_err(|e| format!("Monitor y error: {}", e))?; + let mw = m.width().map_err(|e| format!("Monitor width error: {}", e))? as i32; + let mh = m.height().map_err(|e| format!("Monitor height error: {}", e))? as i32; + if let Some(c) = cursor { + let cx = c.x as i32; + let cy = c.y as i32; + if cx >= mx && cx < (mx + mw) && cy >= my && cy < (my + mh) { + return Ok(m); + } + } + } + xcap::Monitor::all() + .map_err(|e| format!("Failed to list monitors: {}", e))? + .into_iter() + .next() + .ok_or_else(|| "No monitor found".to_string()) +} + +#[tauri::command] +pub async fn screenshot_capture(app: AppHandle, region: CaptureRegion) -> Result, String> { + let target = get_monitor_at_cursor(&app)?; + + let img = target.capture_image().map_err(|e| format!("Failed to capture screen: {}", e))?; + let (img_w, img_h) = (img.width() as f64, img.height() as f64); + let (disp_w, disp_h) = ( + target.width().map_err(|e| format!("Monitor width error: {}", e))? as f64, + target.height().map_err(|e| format!("Monitor height error: {}", e))? as f64, + ); + + let ratio_x = img_w / disp_w; + let ratio_y = img_h / disp_h; + + let crop_x = (region.x as f64 * ratio_x).max(0.0) as u32; + let crop_y = (region.y as f64 * ratio_y).max(0.0) as u32; + let crop_w = (region.width as f64 * ratio_x).min((img_w - crop_x as f64).max(0.0)) as u32; + let crop_h = (region.height as f64 * ratio_y).min((img_h - crop_y as f64).max(0.0)) as u32; + + let cropped = image::DynamicImage::ImageRgba8(img).crop_imm(crop_x, crop_y, crop_w, crop_h); + let mut png_bytes: Vec = Vec::new(); + cropped.write_to(&mut std::io::Cursor::new(&mut png_bytes), image::ImageFormat::Png) + .map_err(|e| format!("Failed to encode PNG: {}", e))?; + + let base64_str = base64::engine::general_purpose::STANDARD.encode(&png_bytes); + + if let Ok(store) = tauri_plugin_store::StoreExt::store(&app, "settings.json") { + if let Some(path) = store.get("screenshotSavePath").and_then(|v| v.as_str().map(|s| s.to_string())) { + if !path.is_empty() { + let timestamp = std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH).unwrap().as_millis(); + let filename = format!("screenshot_{}.png", timestamp); + let full_path = std::path::Path::new(&path).join(&filename); + let _ = std::fs::write(&full_path, &png_bytes); + } + } + } + + if let Some(sw) = app.get_webview_window("screenshot") { + let _ = sw.close(); + } + if let Some(main) = app.get_webview_window("main") { + let _ = main.show(); + let _ = main.set_focus(); + } + let _ = app.emit("screenshot-completed", &base64_str); + Ok(Some(base64_str)) +} + +#[tauri::command] +pub async fn screenshot_cancel(app: AppHandle) -> Result<(), String> { + if let Some(sw) = app.get_webview_window("screenshot") { + let _ = sw.close(); + } + if let Some(main) = app.get_webview_window("main") { + let _ = main.show(); + let _ = main.set_focus(); + } + Ok(()) +} diff --git a/src-tauri/src/commands/settings.rs b/src-tauri/src/commands/settings.rs new file mode 100644 index 0000000..7abe1e8 --- /dev/null +++ b/src-tauri/src/commands/settings.rs @@ -0,0 +1,68 @@ +use serde::{Deserialize, Serialize}; +use tauri::AppHandle; +use tauri_plugin_store::StoreExt; + +#[derive(Debug, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase")] +pub struct AppSettings { + pub api_key: String, + pub base_url: String, + pub model: String, + pub shortcut: String, + pub theme: String, + pub font_size: i32, + pub proxy: String, + pub timeout: i32, + pub screenshot_save_path: String, +} + +impl Default for AppSettings { + fn default() -> Self { + AppSettings { + api_key: String::new(), + base_url: "https://api.siliconflow.cn/v1".to_string(), + model: String::new(), + shortcut: "Alt+Q".to_string(), + theme: "light".to_string(), + font_size: 14, + proxy: String::new(), + timeout: 120, + screenshot_save_path: String::new(), + } + } +} + +#[tauri::command] +pub async fn settings_get(app: AppHandle) -> Result { + let store = app.store("settings.json").map_err(|e| e.to_string())?; + Ok(AppSettings { + api_key: store.get("apiKey").and_then(|v| v.as_str().map(|s| s.to_string())).unwrap_or_default(), + base_url: store.get("baseUrl").and_then(|v| v.as_str().map(|s| s.to_string())).unwrap_or_else(|| "https://api.siliconflow.cn/v1".to_string()), + model: store.get("model").and_then(|v| v.as_str().map(|s| s.to_string())).unwrap_or_default(), + shortcut: store.get("shortcut").and_then(|v| v.as_str().map(|s| s.to_string())).unwrap_or_else(|| "Alt+Q".to_string()), + theme: store.get("theme").and_then(|v| v.as_str().map(|s| s.to_string())).unwrap_or_else(|| "light".to_string()), + font_size: store.get("fontSize").and_then(|v| v.as_i64().map(|i| i as i32)).unwrap_or(14), + proxy: store.get("proxy").and_then(|v| v.as_str().map(|s| s.to_string())).unwrap_or_default(), + timeout: store.get("timeout").and_then(|v| v.as_i64().map(|i| { + let t = i as i32; + if t < 60 { 120 } else { t } + })).unwrap_or(120), + screenshot_save_path: store.get("screenshotSavePath").and_then(|v| v.as_str().map(|s| s.to_string())).unwrap_or_default(), + }) +} + +#[tauri::command] +pub async fn settings_set(app: AppHandle, settings: AppSettings) -> Result { + let store = app.store("settings.json").map_err(|e| e.to_string())?; + store.set("apiKey", serde_json::Value::String(settings.api_key)); + store.set("baseUrl", serde_json::Value::String(settings.base_url)); + store.set("model", serde_json::Value::String(settings.model)); + store.set("shortcut", serde_json::Value::String(settings.shortcut)); + store.set("theme", serde_json::Value::String(settings.theme)); + store.set("fontSize", serde_json::Value::Number(serde_json::Number::from(settings.font_size))); + store.set("proxy", serde_json::Value::String(settings.proxy)); + store.set("timeout", serde_json::Value::Number(serde_json::Number::from(settings.timeout))); + store.set("screenshotSavePath", serde_json::Value::String(settings.screenshot_save_path)); + store.save().map_err(|e| e.to_string())?; + Ok(true) +} diff --git a/src-tauri/src/commands/template.rs b/src-tauri/src/commands/template.rs new file mode 100644 index 0000000..e874491 --- /dev/null +++ b/src-tauri/src/commands/template.rs @@ -0,0 +1,119 @@ +use crate::AppState; +use serde::{Deserialize, Serialize}; +use tauri::{AppHandle, Emitter, State}; +use tauri_plugin_dialog::DialogExt; + +#[derive(Debug, Serialize, Deserialize)] +pub struct TemplateSaveData { + pub name: String, + pub course: String, + pub questions: Option>, +} + +#[tauri::command] +pub fn template_list(state: State) -> Result, String> { + let db = state.db.lock().map_err(|e| e.to_string())?; + Ok(db.list_templates()) +} + +#[tauri::command] +pub fn template_save(state: State, data: TemplateSaveData) -> Result { + let db = state.db.lock().map_err(|e| e.to_string())?; + let questions_json = serde_json::to_string(&data.questions.unwrap_or_default()).unwrap_or_else(|_| "[]".to_string()); + Ok(db.save_template(&data.name, &data.course, &questions_json)) +} + +#[tauri::command] +pub fn template_delete(state: State, id: i64) -> Result { + let db = state.db.lock().map_err(|e| e.to_string())?; + Ok(db.delete_template(id)) +} + +#[tauri::command] +pub fn template_apply(app: AppHandle, state: State, id: i64) -> Result { + let tpl = { + let db = state.db.lock().map_err(|e| e.to_string())?; + db.get_template_by_id(id) + }; + match tpl { + Some(t) => { + let questions = t["questions"].as_array().ok_or("模板中没有题目")?.clone(); + if questions.is_empty() { + return Err("模板中没有题目".to_string()); + } + { + let db = state.db.lock().map_err(|e| e.to_string())?; + db.clear_rubric(); + for (i, q) in questions.iter().enumerate() { + db.insert_rubric_question(q, i as i32); + } + } + { + let mut idx = state.rubric_next_index.lock().map_err(|e| e.to_string())?; + *idx = 0; + } + let _ = app.emit("rubric-updated", ()); + Ok(true) + } + None => Err("模板不存在".to_string()), + } +} + +#[tauri::command] +pub async fn template_export_json(app: AppHandle, state: State<'_, AppState>) -> Result { + let templates = { + let db = state.db.lock().map_err(|e| e.to_string())?; + db.list_templates() + }; + if templates.is_empty() { + return Err("暂无模板可导出".to_string()); + } + let file = app.dialog() + .file() + .add_filter("JSON", &["json"]) + .set_file_name("评分模板.json") + .blocking_save_file(); + match file { + Some(path) => { + let path_str = path.as_path().unwrap().to_string_lossy().to_string(); + let export_data: Vec = templates.iter().map(|t| { + serde_json::json!({ + "name": t["name"], + "course": t["course"], + "questions": t["questions"], + "created_at": t["created_at"] + }) + }).collect(); + let content = serde_json::to_string_pretty(&export_data).map_err(|e| e.to_string())?; + std::fs::write(&path_str, &content).map_err(|e| e.to_string())?; + Ok(true) + } + None => Ok(false), + } +} + +#[tauri::command] +pub async fn template_import_json(app: AppHandle, state: State<'_, AppState>) -> Result, String> { + let file = app.dialog() + .file() + .add_filter("JSON", &["json"]) + .blocking_pick_file(); + match file { + Some(path) => { + let path_str = path.as_path().unwrap().to_string_lossy().to_string(); + let content = std::fs::read_to_string(&path_str).map_err(|e| e.to_string())?; + let data: Vec = serde_json::from_str(&content).map_err(|e| format!("JSON 格式错误:应为数组 - {}", e))?; + let db = state.db.lock().map_err(|e| e.to_string())?; + let mut count = 0; + for tpl in &data { + if let (Some(name), Some(course)) = (tpl["name"].as_str(), tpl["course"].as_str()) { + let questions_json = serde_json::to_string(&tpl["questions"]).unwrap_or_else(|_| "[]".to_string()); + db.save_template(name, course, &questions_json); + count += 1; + } + } + Ok(Some(serde_json::json!({ "count": count }))) + } + None => Ok(None), + } +} diff --git a/src-tauri/src/db.rs b/src-tauri/src/db.rs new file mode 100644 index 0000000..5f2a295 --- /dev/null +++ b/src-tauri/src/db.rs @@ -0,0 +1,240 @@ +use rusqlite::{Connection, params}; +use std::path::PathBuf; + +pub struct Database { + conn: Connection, +} + +impl Database { + pub fn new(path: PathBuf) -> Self { + if let Some(parent) = path.parent() { + std::fs::create_dir_all(parent).expect("Failed to create database directory"); + } + let conn = Connection::open(&path).unwrap_or_else(|e| { + panic!("Failed to open database at {}: {}", path.display(), e) + }); + conn.execute_batch( + "CREATE TABLE IF NOT EXISTS history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + question_id INTEGER DEFAULT 0, + image_path TEXT DEFAULT '', + student_answer TEXT DEFAULT '', + ai_score REAL DEFAULT 0, + teacher_score REAL DEFAULT 0, + confidence REAL DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + question_title TEXT DEFAULT '', + max_score REAL DEFAULT 100, + reference_answer TEXT DEFAULT '', + rubric TEXT DEFAULT '', + deductions TEXT DEFAULT '', + comment TEXT DEFAULT '', + result_json TEXT DEFAULT '', + image_data TEXT DEFAULT '', + reference_answer_image TEXT DEFAULT '' + ); + CREATE TABLE IF NOT EXISTS exam ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL DEFAULT '', + course TEXT NOT NULL DEFAULT '', + questions_json TEXT DEFAULT '', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ); + CREATE TABLE IF NOT EXISTS rubric ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + question_title TEXT NOT NULL DEFAULT '', + max_score REAL NOT NULL DEFAULT 100, + reference_answer TEXT NOT NULL DEFAULT '', + rubric TEXT NOT NULL DEFAULT '', + sort_order INTEGER NOT NULL DEFAULT 0, + reference_answer_image TEXT NOT NULL DEFAULT '' + );" + ).expect("Failed to create tables"); + Database { conn } + } + + pub fn get_conn(&self) -> &Connection { + &self.conn + } + + // History methods + pub fn list_history(&self) -> Vec { + let mut stmt = self.conn.prepare( + "SELECT * FROM history ORDER BY created_at DESC LIMIT 100" + ).unwrap(); + let rows = stmt.query_map([], |row| { + let id: i64 = row.get(0)?; + let question_id: i64 = row.get(1)?; + let image_path: String = row.get(2)?; + let student_answer: String = row.get(3)?; + let ai_score: f64 = row.get(4)?; + let teacher_score: f64 = row.get(5)?; + let confidence: f64 = row.get(6)?; + let created_at: String = row.get(7)?; + let question_title: String = row.get(8)?; + let max_score: f64 = row.get(9)?; + let reference_answer: String = row.get(10)?; + let rubric: String = row.get(11)?; + let deductions: String = row.get(12)?; + let comment: String = row.get(13)?; + let result_json: String = row.get(14)?; + let image_data: String = row.get(15)?; + let reference_answer_image: String = row.get(16)?; + Ok(serde_json::json!({ + "id": id, "question_id": question_id, "image_path": image_path, + "student_answer": student_answer, "ai_score": ai_score, + "teacher_score": teacher_score, "confidence": confidence, + "created_at": created_at, "question_title": question_title, + "max_score": max_score, "reference_answer": reference_answer, + "rubric": rubric, "deductions": deductions, "comment": comment, + "result_json": result_json, "image_data": image_data, + "reference_answer_image": reference_answer_image + })) + }).unwrap(); + rows.filter_map(|r| r.ok()).collect() + } + + pub fn get_history_by_id(&self, id: i64) -> Option { + self.conn.prepare( + "SELECT * FROM history WHERE id = ?" + ).ok().and_then(|mut stmt| { + stmt.query_row(params![id], |row| { + Ok(serde_json::json!({ + "id": row.get::<_, i64>(0)?, + "question_id": row.get::<_, i64>(1)?, + "image_path": row.get::<_, String>(2)?, + "student_answer": row.get::<_, String>(3)?, + "ai_score": row.get::<_, f64>(4)?, + "teacher_score": row.get::<_, f64>(5)?, + "confidence": row.get::<_, f64>(6)?, + "created_at": row.get::<_, String>(7)?, + "question_title": row.get::<_, String>(8)?, + "max_score": row.get::<_, f64>(9)?, + "reference_answer": row.get::<_, String>(10)?, + "rubric": row.get::<_, String>(11)?, + "deductions": row.get::<_, String>(12)?, + "comment": row.get::<_, String>(13)?, + "result_json": row.get::<_, String>(14)?, + "image_data": row.get::<_, String>(15)?, + "reference_answer_image": row.get::<_, String>(16)? + })) + }).ok() + }) + } + + pub fn delete_history(&self, id: i64) -> bool { + self.conn.execute("DELETE FROM history WHERE id = ?", params![id]).is_ok() + } + + pub fn insert_history(&self, data: &serde_json::Value) -> bool { + self.conn.execute( + "INSERT INTO history (question_id, image_path, student_answer, ai_score, teacher_score, confidence, question_title, max_score, reference_answer, rubric, deductions, comment, result_json, image_data, reference_answer_image) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15)", + params![ + data["questionId"].as_i64().unwrap_or(0), + data["imagePath"].as_str().unwrap_or(""), + data["studentAnswer"].as_str().unwrap_or(""), + data["aiScore"].as_f64().unwrap_or(0.0), + data["teacherScore"].as_f64().unwrap_or(0.0), + data["confidence"].as_f64().unwrap_or(0.0), + data["questionTitle"].as_str().unwrap_or(""), + data["maxScore"].as_f64().unwrap_or(100.0), + data["referenceAnswer"].as_str().unwrap_or(""), + data["rubric"].as_str().unwrap_or(""), + data["deductions"].as_str().unwrap_or("[]"), + data["comment"].as_str().unwrap_or(""), + data["resultJson"].as_str().unwrap_or(""), + data["imageData"].as_str().unwrap_or(""), + data["referenceAnswerImage"].as_str().unwrap_or(""), + ] + ).is_ok() + } + + // Rubric methods + pub fn get_rubric_questions(&self) -> Vec { + let mut stmt = self.conn.prepare( + "SELECT * FROM rubric ORDER BY sort_order" + ).unwrap(); + let rows = stmt.query_map([], |row| { + let q_title: String = row.get(1)?; + let q_max: f64 = row.get(2)?; + let q_ref: String = row.get(3)?; + let q_rubric: String = row.get(4)?; + let q_img: String = row.get(5)?; + let ref_img = if q_img.is_empty() || q_img.starts_with("data:") { q_img } else { format!("data:image/png;base64,{}", q_img) }; + Ok(serde_json::json!({ + "questionTitle": q_title, + "maxScore": q_max, + "referenceAnswer": q_ref, + "rubric": q_rubric, + "referenceAnswerImage": ref_img + })) + }).unwrap(); + rows.filter_map(|r| r.ok()).collect() + } + + pub fn clear_rubric(&self) { + let _ = self.conn.execute("DELETE FROM rubric", []); + } + + pub fn insert_rubric_question(&self, q: &serde_json::Value, sort_order: i32) -> bool { + self.conn.execute( + "INSERT INTO rubric (question_title, max_score, reference_answer, rubric, sort_order, reference_answer_image) VALUES (?1, ?2, ?3, ?4, ?5, ?6)", + params![ + q["questionTitle"].as_str().unwrap_or(""), + q["maxScore"].as_f64().unwrap_or(100.0), + q["referenceAnswer"].as_str().unwrap_or(""), + q["rubric"].as_str().unwrap_or(""), + sort_order, + q["referenceAnswerImage"].as_str().unwrap_or(""), + ] + ).is_ok() + } + + // Template (exam) methods + pub fn list_templates(&self) -> Vec { + let mut stmt = self.conn.prepare( + "SELECT * FROM exam ORDER BY created_at DESC" + ).unwrap(); + let rows = stmt.query_map([], |row| { + let id: i64 = row.get(0)?; + let name: String = row.get(1)?; + let course: String = row.get(2)?; + let questions_json: String = row.get(3)?; + let created_at: String = row.get(4)?; + let questions: serde_json::Value = serde_json::from_str(&questions_json).unwrap_or(serde_json::Value::Array(vec![])); + Ok(serde_json::json!({ + "id": id, "name": name, "course": course, + "questions": questions, "created_at": created_at + })) + }).unwrap(); + rows.filter_map(|r| r.ok()).collect() + } + + pub fn get_template_by_id(&self, id: i64) -> Option { + self.conn.prepare("SELECT * FROM exam WHERE id = ?").ok().and_then(|mut stmt| { + stmt.query_row(params![id], |row| { + let questions_json: String = row.get(3)?; + let questions: serde_json::Value = serde_json::from_str(&questions_json).unwrap_or(serde_json::Value::Array(vec![])); + Ok(serde_json::json!({ + "id": row.get::<_, i64>(0)?, + "name": row.get::<_, String>(1)?, + "course": row.get::<_, String>(2)?, + "questions": questions, + "created_at": row.get::<_, String>(4)? + })) + }).ok() + }) + } + + pub fn save_template(&self, name: &str, course: &str, questions: &str) -> i64 { + self.conn.execute( + "INSERT INTO exam (name, course, questions_json) VALUES (?1, ?2, ?3)", + params![name, course, questions] + ).ok(); + self.conn.last_insert_rowid() + } + + pub fn delete_template(&self, id: i64) -> bool { + self.conn.execute("DELETE FROM exam WHERE id = ?", params![id]).is_ok() + } +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs new file mode 100644 index 0000000..aef3707 --- /dev/null +++ b/src-tauri/src/lib.rs @@ -0,0 +1,235 @@ +mod ai; +mod commands; +mod db; + +use db::Database; +use std::sync::Mutex; +use tauri::{ + image::Image, + menu::{Menu, MenuItem}, + tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, + Manager, PhysicalPosition, WebviewUrl, WebviewWindowBuilder, WindowEvent, +}; + +pub struct AppState { + pub db: Mutex, + pub grading_payload: Mutex>, + pub rubric_next_index: Mutex, +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + env_logger::init(); + + tauri::Builder::default() + .on_window_event(|window, event| { + if let WindowEvent::CloseRequested { api, .. } = event { + if window.label() == "main" { + let _ = window.hide(); + api.prevent_close(); + } + } + }) + .plugin(tauri_plugin_dialog::init()) + .plugin(tauri_plugin_global_shortcut::Builder::new().build()) + .plugin(tauri_plugin_store::Builder::new().build()) + .plugin(tauri_plugin_fs::init()) + .setup(|app| { + let app_handle = app.handle().clone(); + let db = Database::new(app_handle.path().app_data_dir()?.join("grading.db")); + app.manage(AppState { + db: Mutex::new(db), + grading_payload: Mutex::new(None), + rubric_next_index: Mutex::new(0), + }); + + // tray icon + let show_item = MenuItem::with_id(app, "show", "显示", true, None::<&str>)?; + let quit_item = MenuItem::with_id(app, "quit", "退出", true, None::<&str>)?; + let menu = Menu::with_items(app, &[&show_item, &quit_item])?; + let img = image::load_from_memory(include_bytes!("../icons/icon.png")) + .expect("Failed to decode tray icon") + .into_rgba8(); + let (iw, ih) = img.dimensions(); + let icon = Image::new_owned(img.into_raw(), iw, ih); + TrayIconBuilder::new() + .icon(icon) + .menu(&menu) + .tooltip("AI 阅卷助手") + .on_menu_event(|app, event| { + match event.id().as_ref() { + "show" => { + if let Some(window) = app.get_webview_window("main") { + let _ = window.show(); + let _ = window.set_focus(); + } + } + "quit" => { + app.exit(0); + } + _ => {} + } + }) + .on_tray_icon_event(|tray, event| { + if let TrayIconEvent::Click { + button: MouseButton::Left, + button_state: MouseButtonState::Up, + .. + } = event + { + let app = tray.app_handle(); + if let Some(window) = app.get_webview_window("main") { + let _ = window.show(); + let _ = window.set_focus(); + } + } + }) + .build(app)?; + + let _ = create_main_window(app.handle()); + Ok(()) + }) + .invoke_handler(tauri::generate_handler![ + commands::settings::settings_get, + commands::settings::settings_set, + commands::screenshot::screenshot_start, + commands::screenshot::screenshot_capture, + commands::screenshot::screenshot_cancel, + commands::ai_grade, + commands::history::history_list, + commands::history::history_delete, + commands::history::history_get_by_id, + commands::grading::grading_submit, + commands::grading::grading_store_data, + commands::grading::grading_get_data, + commands::rubric::rubric_store_data, + commands::rubric::rubric_get_data, + commands::rubric::rubric_export_json, + commands::rubric::rubric_import_json, + commands::rubric::rubric_get_next_index, + commands::rubric::rubric_set_next_index, + commands::rubric::rubric_reset_next_index, + commands::template::template_list, + commands::template::template_save, + commands::template::template_delete, + commands::template::template_apply, + commands::template::template_export_json, + commands::template::template_import_json, + commands::dialog_open, + commands::dialog_open_image, + ]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} + +fn create_main_window(app: &tauri::AppHandle) -> Result<(), Box> { + let (wx, wy) = app.primary_monitor() + .ok() + .flatten() + .map(|m| { + let scale = m.scale_factor(); + let w = m.size().width as f64 / scale; + let x = (w - 600.0) / 2.0 + m.position().x as f64 / scale; + let y = m.position().y as f64 / scale; + (x, y) + }) + .unwrap_or((0.0, 0.0)); + + let window = WebviewWindowBuilder::new(app, "main", WebviewUrl::App("index.html".into())) + .title("AI 阅卷助手") + .inner_size(600.0, 64.0) + .min_inner_size(200.0, 64.0) + .max_inner_size(1200.0, 76.0) + .decorations(false) + .always_on_top(true) + .resizable(false) + .build()?; + window.set_position(PhysicalPosition::new(wx as i32, wy as i32))?; + Ok(()) +} + +pub fn create_dialog_window( + app: &tauri::AppHandle, + dialog_type: &str, + width: f64, + height: f64, +) -> Result<(), Box> { + let label = format!("dialog-{}", dialog_type); + if let Some(window) = app.get_webview_window(&label) { + window.set_focus()?; + return Ok(()); + } + let (dx, dy) = get_dialog_position(app, width, height); + WebviewWindowBuilder::new(app, &label, WebviewUrl::App(format!("index.html?dialog={}", dialog_type).into())) + .title(match dialog_type { + "settings" => "设置", + "history" => "历史记录", + "templates" => "模板管理", + "rubric" => "评分标准", + "result" => "评分结果", + _ => "AI 阅卷助手", + }) + .inner_size(width, height) + .position(dx, dy) + .decorations(false) + .resizable(false) + .build()?; + Ok(()) +} + +fn get_dialog_position(app: &tauri::AppHandle, width: f64, _height: f64) -> (f64, f64) { + if let Some(main) = app.get_webview_window("main") { + if let (Ok(pos), Ok(size)) = (main.outer_position(), main.outer_size()) { + let mx = pos.x as f64; + let my = pos.y as f64; + let mw = size.width as f64; + let mh = size.height as f64; + let dx = mx + (mw - width) / 2.0; + let dy = my + mh; + return (dx.max(0.0), dy.max(0.0)); + } + } + (0.0, 0.0) +} + +fn get_screenshot_window(app: &tauri::AppHandle) -> Result<(), Box> { + if let Some(sw) = app.get_webview_window("screenshot") { + sw.set_focus()?; + return Ok(()); + } + let all_monitors = xcap::Monitor::all()?; + let cursor = app.get_webview_window("main").and_then(|w| w.outer_position().ok()); + let monitor = all_monitors.into_iter().find(|m| { + if let (Ok(mx), Ok(my)) = (m.x(), m.y()) { + if let (Ok(mw), Ok(mh)) = (m.width(), m.height()) { + if let Some(c) = cursor { + let cx = c.x as i32; + let cy = c.y as i32; + return cx >= mx && cx < (mx + mw as i32) && cy >= my && cy < (my + mh as i32); + } + } + } + false + }).unwrap_or_else(|| { + xcap::Monitor::all().ok().and_then(|m| m.into_iter().next()) + .expect("No monitor found") + }); + + let scale = monitor.scale_factor().unwrap_or(1.0) as f64; + let w = monitor.width().unwrap_or(1920) as f64 / scale; + let h = monitor.height().unwrap_or(1080) as f64 / scale; + let x = monitor.x().unwrap_or(0) as f64; + let y = monitor.y().unwrap_or(0) as f64; + + WebviewWindowBuilder::new(app, "screenshot", WebviewUrl::App("index.html#/screenshot".into())) + .title("截图") + .inner_size(w, h) + .position(x, y) + .decorations(false) + .transparent(true) + .always_on_top(true) + .skip_taskbar(true) + .resizable(false) + .build()?; + Ok(()) +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs new file mode 100644 index 0000000..ac593df --- /dev/null +++ b/src-tauri/src/main.rs @@ -0,0 +1,5 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + ai_grading_assistant_lib::run() +} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json new file mode 100644 index 0000000..8cbd322 --- /dev/null +++ b/src-tauri/tauri.conf.json @@ -0,0 +1,27 @@ +{ + "$schema": "https://raw.githubusercontent.com/nicegui-org/nicegui-tauri/main/tauri.conf.schema.json", + "productName": "AI阅卷助手", + "version": "1.0.0", + "identifier": "com.ai-grading-assistant.app", + "build": { + "frontendDist": "../dist", + "devUrl": "http://localhost:5173", + "beforeDevCommand": "npm run dev", + "beforeBuildCommand": "npm run build" + }, + "app": { + "windows": [], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png" + ] + } +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..4452d2a --- /dev/null +++ b/src/App.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/components/FloatingToolbar.vue b/src/components/FloatingToolbar.vue new file mode 100644 index 0000000..5050b5f --- /dev/null +++ b/src/components/FloatingToolbar.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/components/ResultDrawer.vue b/src/components/ResultDrawer.vue new file mode 100644 index 0000000..ae33fc2 --- /dev/null +++ b/src/components/ResultDrawer.vue @@ -0,0 +1,284 @@ + + + + + diff --git a/src/components/RubricEditor.vue b/src/components/RubricEditor.vue new file mode 100644 index 0000000..50102e6 --- /dev/null +++ b/src/components/RubricEditor.vue @@ -0,0 +1,249 @@ + + + + + diff --git a/src/components/ScreenshotOverlay.vue b/src/components/ScreenshotOverlay.vue new file mode 100644 index 0000000..0886fd5 --- /dev/null +++ b/src/components/ScreenshotOverlay.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/src/components/SettingDialog.vue b/src/components/SettingDialog.vue new file mode 100644 index 0000000..840573c --- /dev/null +++ b/src/components/SettingDialog.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..4e8544d --- /dev/null +++ b/src/main.ts @@ -0,0 +1,13 @@ +import { createApp } from 'vue' +import { createPinia } from 'pinia' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' +import App from './App.vue' +import router from './router' +import './styles/main.css' + +const app = createApp(App) +app.use(createPinia()) +app.use(router) +app.use(ElementPlus) +app.mount('#app') diff --git a/src/pages/HistoryDialog.vue b/src/pages/HistoryDialog.vue new file mode 100644 index 0000000..c6d5512 --- /dev/null +++ b/src/pages/HistoryDialog.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/pages/TemplateDialog.vue b/src/pages/TemplateDialog.vue new file mode 100644 index 0000000..3345f76 --- /dev/null +++ b/src/pages/TemplateDialog.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..45336a2 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,20 @@ +import { createRouter, createWebHashHistory } from 'vue-router' +import FloatingToolbar from '@/components/FloatingToolbar.vue' + +const router = createRouter({ + history: createWebHashHistory(), + routes: [ + { + path: '/', + name: 'toolbar', + component: FloatingToolbar + }, + { + path: '/screenshot', + name: 'screenshot', + component: () => import('@/components/ScreenshotOverlay.vue') + } + ] +}) + +export default router diff --git a/src/stores/app.ts b/src/stores/app.ts new file mode 100644 index 0000000..a0e9626 --- /dev/null +++ b/src/stores/app.ts @@ -0,0 +1,32 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' + +export const useAppStore = defineStore('app', () => { + const isToolbarVisible = ref(true) + const isResultDrawerOpen = ref(false) + const isSettingDialogOpen = ref(false) + const isHistoryDialogOpen = ref(false) + const isTemplateDialogOpen = ref(false) + const isRubricEditorOpen = ref(false) + const isGrading = ref(false) + + function toggleToolbar() { isToolbarVisible.value = !isToolbarVisible.value } + function openResultDrawer() { isResultDrawerOpen.value = true } + function closeResultDrawer() { isResultDrawerOpen.value = false } + function openSettingDialog() { isSettingDialogOpen.value = true } + function closeSettingDialog() { isSettingDialogOpen.value = false } + function openHistoryDialog() { isHistoryDialogOpen.value = true } + function closeHistoryDialog() { isHistoryDialogOpen.value = false } + function openTemplateDialog() { isTemplateDialogOpen.value = true } + function closeTemplateDialog() { isTemplateDialogOpen.value = false } + function openRubricEditor() { isRubricEditorOpen.value = true } + function closeRubricEditor() { isRubricEditorOpen.value = false } + + return { + isToolbarVisible, isResultDrawerOpen, isSettingDialogOpen, isHistoryDialogOpen, + isTemplateDialogOpen, isRubricEditorOpen, isGrading, + toggleToolbar, openResultDrawer, closeResultDrawer, openSettingDialog, closeSettingDialog, + openHistoryDialog, closeHistoryDialog, openTemplateDialog, closeTemplateDialog, + openRubricEditor, closeRubricEditor + } +}) diff --git a/src/stores/grading.ts b/src/stores/grading.ts new file mode 100644 index 0000000..ca1d4ca --- /dev/null +++ b/src/stores/grading.ts @@ -0,0 +1,39 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import type { GradeResult, QuestionItem } from '@/types' + +export const useGradingStore = defineStore('grading', () => { + const currentImage = ref(null) + const currentResult = ref(null) + const questions = ref([]) + const currentQuestionIndex = ref(0) + const rubric = ref('') + const questionTitle = ref('') + const maxScore = ref(100) + const referenceAnswer = ref('') + const teacherScore = ref(null) + const teacherComment = ref('') + + function setImage(base64: string) { currentImage.value = base64 } + function setResult(result: GradeResult) { currentResult.value = result } + function setRubric(text: string) { rubric.value = text } + function setQuestionTitle(text: string) { questionTitle.value = text } + function setMaxScore(val: number) { maxScore.value = val } + function setReferenceAnswer(val: string) { referenceAnswer.value = val } + function setQuestions(list: QuestionItem[]) { questions.value = list } + function setCurrentQuestionIndex(idx: number) { currentQuestionIndex.value = idx } + + function reset() { + currentImage.value = null + currentResult.value = null + teacherScore.value = null + teacherComment.value = '' + } + + return { + currentImage, currentResult, questions, currentQuestionIndex, rubric, + questionTitle, maxScore, referenceAnswer, teacherScore, teacherComment, + setImage, setResult, setRubric, setQuestionTitle, setMaxScore, setReferenceAnswer, + setQuestions, setCurrentQuestionIndex, reset + } +}) diff --git a/src/stores/settings.ts b/src/stores/settings.ts new file mode 100644 index 0000000..cea54d5 --- /dev/null +++ b/src/stores/settings.ts @@ -0,0 +1,35 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import type { AppSettings } from '@/types' + +export const useSettingsStore = defineStore('settings', () => { + const settings = ref({ + apiKey: '', + baseUrl: 'https://api.siliconflow.cn/v1', + model: '', + shortcut: 'Alt+Q', + theme: 'light', + fontSize: 14, + proxy: '', + timeout: 120, + screenshotSavePath: '' + }) + + async function loadSettings() { + try { + const { invoke } = await import('@tauri-apps/api/core') + const result: AppSettings = await invoke('settings_get') + if (result) { + settings.value = { ...settings.value, ...result } + } + } catch {} + } + + async function saveSettings(partial: Partial) { + Object.assign(settings.value, partial) + const { invoke } = await import('@tauri-apps/api/core') + await invoke('settings_set', { settings: settings.value }) + } + + return { settings, loadSettings, saveSettings } +}) diff --git a/src/styles/main.css b/src/styles/main.css new file mode 100644 index 0000000..5f493b8 --- /dev/null +++ b/src/styles/main.css @@ -0,0 +1,9 @@ +* { margin: 0; padding: 0; box-sizing: border-box; } +html[data-window="win-main"] { background: #1e1e1e; } +html[data-window="win-dialog"] { background: #f5f7fa; } +html[data-window="win-screenshot"] { background: transparent; } +body { user-select: none; } +#app { width: 100%; height: 100%; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; } +::-webkit-scrollbar { width: 6px; } +::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.2); border-radius: 3px; } +::-webkit-scrollbar-track { background: transparent; } \ No newline at end of file diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000..0bbc709 --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1,61 @@ +export interface QuestionItem { + questionTitle: string + maxScore: number + referenceAnswer: string + rubric: string + referenceAnswerImage?: string +} + +export interface GradeResult { + score: number + confidence: number + deductions: string[] + comment: string + commit?: string +} + +export interface ApiConfig { + apiKey: string + baseUrl: string + model: string +} + +export interface AppSettings { + apiKey: string + baseUrl: string + model: string + shortcut: string + theme: string + fontSize: number + proxy: string + timeout: number + screenshotSavePath: string +} + +export interface HistoryRecord { + id: number + question_id: number + image_path: string + student_answer: string + ai_score: number + teacher_score: number + confidence: number + created_at: string + question_title?: string + max_score?: number + reference_answer?: string + rubric?: string + deductions?: string + comment?: string + result_json?: string + image_data?: string + reference_answer_image?: string +} + +export interface TemplateItem { + id: number + name: string + course: string + questions: QuestionItem[] + created_at: string +} diff --git a/src/utils/image.ts b/src/utils/image.ts new file mode 100644 index 0000000..15ee546 --- /dev/null +++ b/src/utils/image.ts @@ -0,0 +1,20 @@ +export function addWatermark(base64: string, text: string): Promise { + return new Promise((resolve, reject) => { + const img = new Image() + img.onload = () => { + let w = img.width; let h = img.height; const MAX = 2048; let scale = 1 + if (w > MAX || h > MAX) { scale = Math.min(MAX / w, MAX / h, 1); w = Math.round(w * scale); h = Math.round(h * scale) } + const canvas = document.createElement('canvas'); canvas.width = w; canvas.height = h + const ctx = canvas.getContext('2d') + if (!ctx) return reject(new Error('Canvas 2D context not available')) + ctx.drawImage(img, 0, 0, w, h) + ctx.font = `bold ${Math.max(28, Math.round(w / 20))}px sans-serif` + ctx.fillStyle = 'rgba(255, 0, 0, 0.85)'; ctx.textBaseline = 'top' + const padding = Math.max(8, Math.round(w / 60)) + ctx.fillText(text, padding, padding) + resolve(canvas.toDataURL('image/png').replace(/^data:image\/png;base64,/, '')) + } + img.onerror = () => reject(new Error('Failed to load image for watermark')) + img.src = `data:image/png;base64,${base64}` + }) +} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..323c78a --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,7 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..651de98 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "jsx": "preserve", + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "noEmit": true, + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.vue"], + "exclude": ["node_modules", "dist"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..4d9abf9 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import { resolve } from 'path' + +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + '@': resolve(__dirname, 'src') + } + }, + clearScreen: false, + server: { + port: 5173, + strictPort: true + }, + envPrefix: ['VITE_', 'TAURI_'], + build: { + target: process.env.TAURI_PLATFORM === 'windows' ? 'chrome105' : 'safari14', + minify: !process.env.TAURI_DEBUG ? 'esbuild' : false, + sourcemap: !!process.env.TAURI_DEBUG + } +})