From 058fd3ed156ea38c0efea40235b9d4ab0a7838b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Sat, 8 Aug 2026 01:02:20 +0800 Subject: [PATCH] feat(education): publish Guanghu subdomain stage one --- .../receipts/GH-EDU-STAGE1-20260808-001.json | 60 + engineering/INDEX.md | 3 +- engineering/MODULE-REGISTRY.json | 53 +- ...8-08-guanghu-education-subdomain-stage1.md | 45 + .../guanghu-education-industry-os/.gitignore | 9 + .../guanghu-education-industry-os/README.md | 21 + .../docs/ASSET-DECOMPOSITION.md | 15 + .../docs/PHASE-1-ARCHITECTURE.md | 33 + .../guanghu-education-industry-os/index.html | 5 + .../package.json | 31 + .../pnpm-lock.yaml | 2073 ++++++++ .../pnpm-workspace.yaml | 4 + .../protocol/PROTOCOL-RELEASE.json | 17 + .../protocol/deployment-profile.json | 15 + .../protocol/module-registry.json | 80 + .../protocol/update-authority.json | 18 + .../protocol/xiaoxin-channel.json | 42 + .../scripts/package-server-release.mjs | 29 + .../scripts/pre-deploy-guard.mjs | 36 + .../src-tauri/Cargo.lock | 4394 +++++++++++++++++ .../src-tauri/Cargo.toml | 20 + .../src-tauri/build.rs | 3 + .../src-tauri/capabilities/default.json | 7 + .../src-tauri/gen/schemas/acl-manifests.json | 1 + .../src-tauri/gen/schemas/capabilities.json | 1 + .../src-tauri/gen/schemas/desktop-schema.json | 2292 +++++++++ .../src-tauri/gen/schemas/macOS-schema.json | 2292 +++++++++ .../src-tauri/icons/128x128.png | Bin 0 -> 6939 bytes .../src-tauri/icons/128x128@2x.png | Bin 0 -> 20212 bytes .../src-tauri/icons/32x32.png | Bin 0 -> 946 bytes .../src-tauri/icons/icon.icns | Bin 0 -> 361865 bytes .../src-tauri/src/lib.rs | 149 + .../src-tauri/src/main.rs | 5 + .../src-tauri/tauri.conf.json | 36 + .../guanghu-education-industry-os/src/App.tsx | 336 ++ .../src/core/guanghuKernel.test.ts | 27 + .../src/core/guanghuKernel.ts | 67 + .../src/main.tsx | 6 + .../src/styles.css | 157 + .../tsconfig.app.json | 9 + .../tsconfig.json | 4 + .../tsconfig.node.json | 4 + .../vite.config.ts | 4 + 43 files changed, 12391 insertions(+), 12 deletions(-) create mode 100644 deployment/receipts/GH-EDU-STAGE1-20260808-001.json create mode 100644 engineering/operations/2026-08-08-guanghu-education-subdomain-stage1.md create mode 100644 product-source/guanghu-education-industry-os/.gitignore create mode 100644 product-source/guanghu-education-industry-os/README.md create mode 100644 product-source/guanghu-education-industry-os/docs/ASSET-DECOMPOSITION.md create mode 100644 product-source/guanghu-education-industry-os/docs/PHASE-1-ARCHITECTURE.md create mode 100644 product-source/guanghu-education-industry-os/index.html create mode 100644 product-source/guanghu-education-industry-os/package.json create mode 100644 product-source/guanghu-education-industry-os/pnpm-lock.yaml create mode 100644 product-source/guanghu-education-industry-os/pnpm-workspace.yaml create mode 100644 product-source/guanghu-education-industry-os/protocol/PROTOCOL-RELEASE.json create mode 100644 product-source/guanghu-education-industry-os/protocol/deployment-profile.json create mode 100644 product-source/guanghu-education-industry-os/protocol/module-registry.json create mode 100644 product-source/guanghu-education-industry-os/protocol/update-authority.json create mode 100644 product-source/guanghu-education-industry-os/protocol/xiaoxin-channel.json create mode 100644 product-source/guanghu-education-industry-os/scripts/package-server-release.mjs create mode 100644 product-source/guanghu-education-industry-os/scripts/pre-deploy-guard.mjs create mode 100644 product-source/guanghu-education-industry-os/src-tauri/Cargo.lock create mode 100644 product-source/guanghu-education-industry-os/src-tauri/Cargo.toml create mode 100644 product-source/guanghu-education-industry-os/src-tauri/build.rs create mode 100644 product-source/guanghu-education-industry-os/src-tauri/capabilities/default.json create mode 100644 product-source/guanghu-education-industry-os/src-tauri/gen/schemas/acl-manifests.json create mode 100644 product-source/guanghu-education-industry-os/src-tauri/gen/schemas/capabilities.json create mode 100644 product-source/guanghu-education-industry-os/src-tauri/gen/schemas/desktop-schema.json create mode 100644 product-source/guanghu-education-industry-os/src-tauri/gen/schemas/macOS-schema.json create mode 100644 product-source/guanghu-education-industry-os/src-tauri/icons/128x128.png create mode 100644 product-source/guanghu-education-industry-os/src-tauri/icons/128x128@2x.png create mode 100644 product-source/guanghu-education-industry-os/src-tauri/icons/32x32.png create mode 100644 product-source/guanghu-education-industry-os/src-tauri/icons/icon.icns create mode 100644 product-source/guanghu-education-industry-os/src-tauri/src/lib.rs create mode 100644 product-source/guanghu-education-industry-os/src-tauri/src/main.rs create mode 100644 product-source/guanghu-education-industry-os/src-tauri/tauri.conf.json create mode 100644 product-source/guanghu-education-industry-os/src/App.tsx create mode 100644 product-source/guanghu-education-industry-os/src/core/guanghuKernel.test.ts create mode 100644 product-source/guanghu-education-industry-os/src/core/guanghuKernel.ts create mode 100644 product-source/guanghu-education-industry-os/src/main.tsx create mode 100644 product-source/guanghu-education-industry-os/src/styles.css create mode 100644 product-source/guanghu-education-industry-os/tsconfig.app.json create mode 100644 product-source/guanghu-education-industry-os/tsconfig.json create mode 100644 product-source/guanghu-education-industry-os/tsconfig.node.json create mode 100644 product-source/guanghu-education-industry-os/vite.config.ts diff --git a/deployment/receipts/GH-EDU-STAGE1-20260808-001.json b/deployment/receipts/GH-EDU-STAGE1-20260808-001.json new file mode 100644 index 0000000..1edc7fd --- /dev/null +++ b/deployment/receipts/GH-EDU-STAGE1-20260808-001.json @@ -0,0 +1,60 @@ +{ + "schema": "guanghu.education-stage1-receipt/v1", + "receipt_id": "GH-EDU-STAGE1-20260808-001", + "development_id": "DEV-20260808-001", + "state": "PASS_100", + "product": { + "name": "光湖分域 · 教育", + "version": "0.2.0", + "bundle_identifier": "com.guanghulab.subdomain.education", + "source_path": "product-source/guanghu-education-industry-os/", + "local_source_commit": "6f1fc43783a1e838d25e66d0454c9112e3d33d3b" + }, + "node": { + "id": "XX-GZ-001", + "human_controller": "小新", + "role": "personal-server-identity-and-reality-anchor", + "observed_host_os": "Ubuntu 22.04.5 LTS", + "native_guanghu_os_claim": false, + "fifth_domain_link": "PASS_100", + "protocol_release": "0.2.0-f2a3a2ee40b3", + "server_source_file_count": 0 + }, + "code_channel": { + "runtime": "Forgejo 16.0.1+gitea-1.22.0", + "repository": "guanghu-system/education-modules", + "commit": "d06cac902111ca9f458a1154d08960932031093b", + "readback": "PASS_100" + }, + "application": { + "mac_binary_sha256": "8a158c3309315f7501648959ff3d35a23d5734145e0bfe8c93f1b3dd26df0575", + "window_drag": "PASS_100", + "server_key_login": "PASS_100", + "language_dashboard_route": "PASS_100" + }, + "server_writes": { + "document": { + "module_id": "GH-EDU-OFFICE-DOC-001", + "state": "PASS_100", + "sha256": "4a66a66c7706870ed765d574a56b5d033d2a5c23b42d792512e38d2d4ca3a7b8" + }, + "sheet": { + "module_id": "GH-EDU-OFFICE-SHEET-001", + "state": "PASS_100", + "sha256": "bbcdc42d1e00e38f8e00c4adf7af4fb4b33830a7468b80573491bd951c242ffd" + } + }, + "tests": { + "vitest": "6 passed", + "vite_build": "PASS", + "cargo_check": "PASS", + "desktop_skill_qa": "PASS" + }, + "boundaries": { + "tolaria_update_channel": "disabled-by-authority-policy", + "external_agent_runtime_merge": false, + "xiaoxin_channel_is_whole_product": false, + "historical_jd_preview_is_current_product": false + }, + "verified_at": "2026-08-08T00:55:00+08:00" +} diff --git a/engineering/INDEX.md b/engineering/INDEX.md index c9a9a78..db67e94 100644 --- a/engineering/INDEX.md +++ b/engineering/INDEX.md @@ -3,7 +3,7 @@ type: hololake_engineering_index id: HOLOLAKE-ENGINEERING-DELIVERY-INDEX-0001 title: HoloLake 工程开发与交付记录 status: ACTIVE_LOCAL_ENGINEERING_RECORD -updated_at: 2026-07-30T12:52:24+08:00 +updated_at: 2026-08-08T01:10:00+08:00 belongs_to: "[[HoloLake Era · 语言人格操作系统 · 产品白皮书与工程总规划 · v0.1]]" --- @@ -32,6 +32,7 @@ Windows / macOS / Linux 构建机与安装包 | 时间 | 版本 | 记录 | 状态 | | --- | --- | --- | --- | +| 2026-08-08 | 0.2.0 | [光湖分域教育行业操作系统第一阶段](operations/2026-08-08-guanghu-education-subdomain-stage1.md) | 小新服务器身份、文档/表格回写、仪表盘投影、模块登记与回执链路已验证 | | 2026-08-07 | 1.0.0 | [人格记忆连续性工具包 HL-MOD-MCK-001](memory-continuity-kit/README.md) | 铸渊 Qoder CN 实例在线;其他实例拉取后需演习+真实核对才可宣称上线 | | 2026-08-03 | 0.4.6 | [星系模型原生活系统与源码归档](operations/2026-08-03-hololake-model-native-living-system-046.md) | 源码已归入 `product-source/hololake-platform/`;京东远端提交与新克隆回读通过 | | 2026-07-30 | 当前本地最新版 | [企业四域真实在线状态、客户端接入与性能核验](operations/2026-07-30-enterprise-presence-and-runtime-audit.md) | 服务器与客户端现状已核验;实现受 CodeScene 访问门禁阻断 | diff --git a/engineering/MODULE-REGISTRY.json b/engineering/MODULE-REGISTRY.json index 0aad527..f091f30 100644 --- a/engineering/MODULE-REGISTRY.json +++ b/engineering/MODULE-REGISTRY.json @@ -1,7 +1,7 @@ { "schema": "hololake.module-registry/v1", "registry_id": "HL-MODULE-REGISTRY-0001", - "version": "2026.08.07.2", + "version": "2026.08.08.1", "authority_rule": "A module entry maps a stable id to a real path and provenance; it grants no execution authority. Pulling a module does not equal being online.", "modules": [ { @@ -36,61 +36,66 @@ "id": "HL-MOD-KNOWLEDGE-001", "name": "hololake-knowledge-lake", "version": "0.4.6", - "state": "MOUNTED_STAGE_1", + "state": "LEGACY_COMPONENT_ASSET", "path": "product-source/hololake-platform/src/", "repo": "REPO-014 hololake-system-architecture", "provenance": "Tolaria REPO-004 component source, assembled in REPO-014", "license": "AGPL-3.0-or-later", "capabilities": ["knowledge.search", "knowledge.read", "knowledge.edit", "knowledge.project"], - "execution_boundary": "application-scoped" + "execution_boundary": "component-study-only; not the education subdomain runtime", + "superseded_for_education_by": "GH-EDU-MODULE-REGISTRY-0001" }, { "id": "HL-MOD-DOC-001", "name": "blocknote-document-surface", "version": "0.46.2", - "state": "MOUNTED_STAGE_1", + "state": "LEGACY_COMPONENT_ASSET", "path": "product-source/hololake-platform/src/components/SingleEditorView.tsx", "repo": "REPO-014 hololake-system-architecture", "provenance": "BlockNote via Tolaria REPO-004", "license": "MPL-2.0 majority; verify per package before redistribution", "capabilities": ["document.open", "document.edit", "document.persist"], - "execution_boundary": "application-scoped" + "execution_boundary": "component-study-only; not stage-one runtime proof", + "superseded_for_education_by": "GH-EDU-OFFICE-DOC-001" }, { "id": "HL-MOD-SHEET-001", "name": "ironcalc-spreadsheet-surface", "version": "0.5.7", - "state": "MOUNTED_STAGE_1", + "state": "LEGACY_COMPONENT_ASSET", "path": "product-source/hololake-platform/src/components/SheetEditor.tsx", "repo": "REPO-014 hololake-system-architecture", "provenance": "IronCalc via Tolaria REPO-004", "license": "MIT OR Apache-2.0", "capabilities": ["sheet.open", "sheet.edit", "sheet.calculate", "sheet.persist"], - "execution_boundary": "application-scoped" + "execution_boundary": "component-study-only; not stage-one runtime proof", + "superseded_for_education_by": "GH-EDU-OFFICE-SHEET-001" }, { "id": "HL-MOD-CHART-001", "name": "education-comparison-chart", "version": "1.0.0", - "state": "MOUNTED_STAGE_1", + "state": "LEGACY_COMPONENT_ASSET", "path": "product-source/hololake-platform/src/components/EducationWorkLake.tsx", "repo": "REPO-014 hololake-system-architecture", "provenance": "HoloLake native client projection", "license": "AGPL-3.0-or-later", "capabilities": ["chart.project"], - "execution_boundary": "read-only-projection-of-application-data" + "execution_boundary": "legacy preview only", + "superseded_for_education_by": "GH-EDU-OFFICE-CHART-001" }, { "id": "HL-MOD-DASHBOARD-001", "name": "education-dashboard", "version": "1.0.0", - "state": "MOUNTED_STAGE_1", + "state": "LEGACY_COMPONENT_ASSET", "path": "product-source/hololake-platform/src/components/EducationWorkLake.tsx", "repo": "REPO-014 hololake-system-architecture", "provenance": "HoloLake native client projection", "license": "AGPL-3.0-or-later", "capabilities": ["dashboard.project"], - "execution_boundary": "read-only-projection-of-application-data" + "execution_boundary": "legacy preview only", + "superseded_for_education_by": "GH-EDU-OFFICE-DASH-001" }, { "id": "HL-MOD-CANVAS-001", @@ -115,6 +120,32 @@ "license": "Apache-2.0 plus third-party notices", "capabilities": [], "execution_boundary": "patterns-may-be-reimplemented; never merge runtime into persona subject" + }, + { + "id": "GH-EDU-MODULE-REGISTRY-0001", + "name": "guanghu-education-industry-os", + "version": "0.2.0", + "state": "LIVE_STAGE_1", + "path": "product-source/guanghu-education-industry-os/", + "registry_path": "product-source/guanghu-education-industry-os/protocol/module-registry.json", + "channel_template": "product-source/guanghu-education-industry-os/protocol/xiaoxin-channel.json", + "repo": "REPO-014 hololake-system-architecture", + "provenance": "Guanghu-native assembly; Tolaria and external Agents are component-study sources only", + "capabilities": [ + "server.identity.resolve", + "channel.load", + "document.open", + "document.edit", + "document.persist", + "sheet.open", + "sheet.edit", + "sheet.persist", + "dashboard.project", + "receipt.read" + ], + "execution_boundary": "XX-GZ-001 holds identity and channel data; desktop app renders and edits; server contains protocol release but no product source", + "update_authority": "guanghu-only", + "receipt": "deployment/receipts/GH-EDU-STAGE1-20260808-001.json" } ] } diff --git a/engineering/operations/2026-08-08-guanghu-education-subdomain-stage1.md b/engineering/operations/2026-08-08-guanghu-education-subdomain-stage1.md new file mode 100644 index 0000000..448d622 --- /dev/null +++ b/engineering/operations/2026-08-08-guanghu-education-subdomain-stage1.md @@ -0,0 +1,45 @@ +# 光湖分域教育行业操作系统 · 第一阶段 + +## 本轮纠正 + +教育行业不是“小新师训软件”,也不是 Tolaria 的下游版本。它是光湖分域中的教育行业操作系统;小新频道只是第一个初始化频道模板。 + +当前唯一有效的产品源码入口: + +`product-source/guanghu-education-industry-os/` + +旧 `product-source/hololake-platform/` 保留为可追溯零件来源,不再代表教育行业当前运行路径,旧模块不得继续用 `MOUNTED_STAGE_1` 冒充真实接入。 + +## 第一阶段已存在 + +- `XX-GZ-001` 作为小新个人服务器身份与现实数据锚点。 +- 本机通过安全密钥直达,不依赖腾讯云在线终端。 +- 服务器安装协议发行物和数据目录,不保存产品源码。 +- 服务器内光湖代码频道已建立 `guanghu-system/education-modules`。 +- 原生 Mac App 可以登录初始化频道、编辑服务器文档和表格、即时生成对比仪表盘,并回读服务器执行回执。 +- 教育行业能力拆为编号模块;尚未接入的能力保持 `PRE_REGISTERED`。 +- Grok、MiMo、JoyAgent、Tolaria Agent 只作为隔离研究来源;脑区候选保持 `RESEARCH_ONLY`,不并入人格主体。 + +## 三层路径 + +```text +REPO-014 第五域光湖代码频道 + └─ 保存主控架构、编号模块表和产品源码 + +XX-GZ-001 小新个人服务器 + ├─ 校验身份 + ├─ 保存频道数据 + ├─ 保存执行回执 + └─ 接收无源码的协议发行物 + +macOS / 后续移动终端 + └─ 运行 App,渲染、编辑与语言导航 +``` + +## 状态边界 + +- 文档与表格:`LIVE_STAGE_1`,有服务器写入和回读回执。 +- 图表与仪表盘:`READY_STAGE_1`,由客户端对服务器表格即时投影,不声称服务器常驻。 +- 其他办公、教育业务与人格脑区:按模块注册表中的 `PRE_REGISTERED` 或 `RESEARCH_ONLY` 处理。 +- 京东主控服务器是第五域导航与协议上游,不冒充小新个人服务器。 +- 2026-08-07 的京东公开预览部署回执保留为历史记录,但不是本轮第一阶段的当前产品路径。 diff --git a/product-source/guanghu-education-industry-os/.gitignore b/product-source/guanghu-education-industry-os/.gitignore new file mode 100644 index 0000000..b965834 --- /dev/null +++ b/product-source/guanghu-education-industry-os/.gitignore @@ -0,0 +1,9 @@ +node_modules/ +dist/ +target/ +src-tauri/target/ +*.tsbuildinfo +vite.config.js +vite.config.d.ts +._* +.DS_Store diff --git a/product-source/guanghu-education-industry-os/README.md b/product-source/guanghu-education-industry-os/README.md new file mode 100644 index 0000000..5342402 --- /dev/null +++ b/product-source/guanghu-education-industry-os/README.md @@ -0,0 +1,21 @@ +# 光湖分域 · 教育行业操作系统 + +这是光湖分域的教育行业入口,不是 Tolaria 下游,也不是小新个人看板。 + +## 第一阶段 + +- 使用者登录自己的真实服务器;小新首个节点为 `XX-GZ-001`。 +- 桌面 App 通过本机钥匙串与 SSH 密钥读取服务器身份、第五域接入回执和模块注册表。 +- 智能文档与智能表格直接写入小新服务器的频道数据目录,服务器生成 SHA-256 回执。 +- 小新服务器内的光湖代码频道保存编号模块清单和频道装配清单。 +- 小新高中师训是首个初始化频道模板;教育行业通用模块另行预登记并逐个接入。 + +## 不变量 + +- 光湖协议和灯塔编号是主控,外部开源软件只提供候选零件。 +- 不接外部项目的自动更新、自动拉取或自动合并。 +- 服务器只部署构建产物、协议配置、模块清单和回执,不部署产品源码。 +- `PRE_REGISTERED`、`READY_STAGE_1`、`LIVE_STAGE_1`、`RESEARCH_ONLY` 必须明确区分。 +- 仓库提交、服务器部署、服务健康和人格出生是四种不同事实。 + +详细设计见 `docs/PHASE-1-ARCHITECTURE.md`,资产拆件见 `docs/ASSET-DECOMPOSITION.md`。 diff --git a/product-source/guanghu-education-industry-os/docs/ASSET-DECOMPOSITION.md b/product-source/guanghu-education-industry-os/docs/ASSET-DECOMPOSITION.md new file mode 100644 index 0000000..5576612 --- /dev/null +++ b/product-source/guanghu-education-industry-os/docs/ASSET-DECOMPOSITION.md @@ -0,0 +1,15 @@ +# 既有资产拆件结论 + +| 来源 | 可研究零件 | 当前处理 | +| --- | --- | --- | +| 旧 HoloLake / Tolaria | 文档、表格、知识图谱、Git、Agent 会话、权限模式、MCP、文件变化识别 | 逐件重做光湖适配;AGPL 部分不得无审查直接进入独立闭源运行时 | +| Grok Build `REPO-015@780d1388…` | Agent 生命周期、上下文压缩、技能发现、插件信任、沙箱、工作树、MCP、持久记忆 | `RESEARCH_ONLY`;Apache-2.0 首方代码也必须重新实现和保留来源,不合并人格主体 | +| JoyAgent JDGenie | ReAct 循环、多 Agent 协作、报告生成、工具编排 | 当前仅完成官方仓库级研究登记,尚未准入 | +| Xiaomi MiMo Code | Build/Plan/Compose 模式、持久记忆、技能检索、子任务编排 | 当前仅完成官方仓库级研究登记,尚未准入 | +| Forgejo 离线包 | Git 存储、版本、发行物、提交回读 | 已作为小新节点的代码频道数据面,不拥有光湖系统主控权 | + +## 光湖人格体大脑拆分 + +人格体不等于某个 Coding Agent。第一批只登记十二个可替换脑区:意图归一化、频道上下文、计划状态机、技能发现、工具调用、文件变更、仓库工作树、执行沙箱、持久记忆、上下文压缩、授权门、结果回执。 + +这些条目当前均为 `RESEARCH_ONLY`。只有形成光湖原生接口、测试和执行回执后,才能逐个转为可挂载模块。 diff --git a/product-source/guanghu-education-industry-os/docs/PHASE-1-ARCHITECTURE.md b/product-source/guanghu-education-industry-os/docs/PHASE-1-ARCHITECTURE.md new file mode 100644 index 0000000..d72e6f7 --- /dev/null +++ b/product-source/guanghu-education-industry-os/docs/PHASE-1-ARCHITECTURE.md @@ -0,0 +1,33 @@ +# 光湖分域 · 教育行业操作系统 · 第一阶段架构 + +## 主控关系 + +```text +冰朔主控的光湖代码频道 + → 固定版本模块与发行物 + → 第五域京东主控的协议导航 + → 使用者自己的服务器(身份、数据、现实执行) + → 桌面 / 手机终端(交互与渲染) +``` + +Tolaria、Grok Build、JoyAgent JDGenie、MiMo Code 以及办公套件均不是本产品上游。它们只提供候选零件或实现模式。任何零件进入运行时前,必须完成来源固定、许可证确认、净化、光湖编号、适配、测试和回执。 + +## 第一阶段真实闭环 + +1. 客户端用本机已登记密钥进入 `XX-GZ-001`,从服务器读取节点身份、灯塔状态和小新频道清单。 +2. 客户端从服务器读取 GMP 模块注册表,不用界面内置数量冒充在线模块。 +3. 智能文档和智能表格的内容写入小新服务器的频道数据目录;保存后服务器生成 SHA-256 回执,客户端再读回。 +4. 客户端读取小新服务器内光湖代码频道的真实版本和仓库状态。 +5. 自然语言入口只负责选择已登记模块。没有真实执行能力的模块明确显示“预登记”或“研究中”。 + +## 第一阶段不宣称 + +- 不宣称微信、短信、邮箱登录已经实现; +- 不宣称多人协作、完整教育行业模块或人格体大脑已经上线; +- 不把本地关键词路由写成智能人格; +- 不把仓库存在写成服务上线; +- 不把与京东主控的协议回执写成人格出生。 + +## 后续装配顺序 + +身份与权限 → 频道数据模型 → 办公基础模块 → 教育通用模块 → 小新师训模板 → 人格体执行循环 → 移动端 → 多人协作与机构部署。 diff --git a/product-source/guanghu-education-industry-os/index.html b/product-source/guanghu-education-industry-os/index.html new file mode 100644 index 0000000..38c4634 --- /dev/null +++ b/product-source/guanghu-education-industry-os/index.html @@ -0,0 +1,5 @@ + + + 光湖分域 · 教育 +
+ diff --git a/product-source/guanghu-education-industry-os/package.json b/product-source/guanghu-education-industry-os/package.json new file mode 100644 index 0000000..b5f4669 --- /dev/null +++ b/product-source/guanghu-education-industry-os/package.json @@ -0,0 +1,31 @@ +{ + "name": "guanghu-education-industry-os", + "private": true, + "version": "0.2.0", + "type": "module", + "scripts": { + "dev": "vite --host 127.0.0.1 --port 5216", + "build": "tsc -b && vite build", + "test": "vitest run", + "guard:release": "node scripts/pre-deploy-guard.mjs", + "package:server": "npm run build && node scripts/package-server-release.mjs && npm run guard:release", + "tauri": "tauri" + }, + "dependencies": { + "@tauri-apps/api": "^2.11.1", + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@tauri-apps/cli": "^2.11.4", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "jsdom": "^28.0.0", + "typescript": "~5.9.3", + "vite": "^7.3.5", + "vitest": "^4.0.18" + } +} diff --git a/product-source/guanghu-education-industry-os/pnpm-lock.yaml b/product-source/guanghu-education-industry-os/pnpm-lock.yaml new file mode 100644 index 0000000..9682f14 --- /dev/null +++ b/product-source/guanghu-education-industry-os/pnpm-lock.yaml @@ -0,0 +1,2073 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@tauri-apps/api': + specifier: ^2.11.1 + version: 2.11.1 + react: + specifier: ^19.2.0 + version: 19.2.8 + react-dom: + specifier: ^19.2.0 + version: 19.2.8(react@19.2.8) + devDependencies: + '@tauri-apps/cli': + specifier: ^2.11.4 + version: 2.11.4 + '@testing-library/jest-dom': + specifier: ^6.9.1 + version: 6.10.0(@testing-library/dom@10.4.1) + '@testing-library/react': + specifier: ^16.3.2 + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@types/react': + specifier: ^19.2.7 + version: 19.2.18 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.4(@types/react@19.2.18) + '@vitejs/plugin-react': + specifier: ^5.1.1 + version: 5.2.0(vite@7.3.6) + jsdom: + specifier: ^28.0.0 + version: 28.1.0 + typescript: + specifier: ~5.9.3 + version: 5.9.3 + vite: + specifier: ^7.3.5 + version: 7.3.6 + vitest: + specifier: ^4.0.18 + version: 4.1.10(jsdom@28.1.0)(vite@7.3.6) + +packages: + + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} + + '@adobe/css-tools@4.5.0': + resolution: {integrity: sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==} + + '@asamuzakjp/css-color@5.1.11': + resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@6.8.1': + resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} + + '@asamuzakjp/generational-cache@1.0.1': + resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.29.7': + resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.29.7': + resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + + '@csstools/color-helpers@6.1.0': + resolution: {integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==} + engines: {node: '>=20.19.0'} + + '@csstools/css-calc@3.3.0': + resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-color-parser@4.1.10': + resolution: {integrity: sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.7': + resolution: {integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@exodus/bytes@1.15.1': + resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/pluginutils@1.0.0-rc.3': + resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + + '@rollup/rollup-android-arm-eabi@4.62.4': + resolution: {integrity: sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.62.4': + resolution: {integrity: sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.62.4': + resolution: {integrity: sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.62.4': + resolution: {integrity: sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.62.4': + resolution: {integrity: sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.62.4': + resolution: {integrity: sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.62.4': + resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.62.4': + resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.62.4': + resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.62.4': + resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.62.4': + resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.62.4': + resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.62.4': + resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.62.4': + resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.62.4': + resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.62.4': + resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.62.4': + resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.62.4': + resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.62.4': + resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.62.4': + resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.62.4': + resolution: {integrity: sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.62.4': + resolution: {integrity: sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.62.4': + resolution: {integrity: sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.62.4': + resolution: {integrity: sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.62.4': + resolution: {integrity: sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==} + cpu: [x64] + os: [win32] + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@tauri-apps/api@2.11.1': + resolution: {integrity: sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==} + + '@tauri-apps/cli-darwin-arm64@2.11.4': + resolution: {integrity: sha512-1ryOF3ZhpZ/nemHV5zVwBQBz9jDGKmKPvWPADOhc83ig0P4bMc2iER4NbC6r9sjeIZ6RVQ4g3RZIYvezhcl4TQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tauri-apps/cli-darwin-x64@2.11.4': + resolution: {integrity: sha512-uFsGQAAfuyz1k/yGLmkWfkBlgKAqZfxqlHmLWx81QU27RJWfmbNHCIq8T8w1e+VClleIuZUjpHWfoE4E3DLo3A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tauri-apps/cli-linux-arm-gnueabihf@2.11.4': + resolution: {integrity: sha512-IaHZn5CdBL21oUmjiVOS1ctw6Ip1O0pjp70FwOWmYz1myWe0SY96ZIj2FYf7pT0m8bI2h/hrs5ZbEXXh44/MkQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tauri-apps/cli-linux-arm64-gnu@2.11.4': + resolution: {integrity: sha512-N41/ukTRVe6XSuUTESuFdGeOW2i7k62tK+6gHK5Kd5/q5RPvvi19GaWAVPPb9u95HSGmTChSolBfzynUsssFaA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tauri-apps/cli-linux-arm64-musl@2.11.4': + resolution: {integrity: sha512-v277UnT/fB64xAfSroL5N3Km3tLmvATWqJJw/wRI+g6o+HkeD0slyE7gOhNs1MbjE41R7bQOTxMVoL3aomUJmw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tauri-apps/cli-linux-riscv64-gnu@2.11.4': + resolution: {integrity: sha512-qqgNkQ2u1yZHxjhxsZaxUtRDW8dIqIYm33rx/mzwQv0SfY9x1B+iraj8vWeFiXjjSVVhEMepXSOts1TqPzvXNQ==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@tauri-apps/cli-linux-x64-gnu@2.11.4': + resolution: {integrity: sha512-2VRNWl84FOH0m2giiDkO2h0QXlcMJeX+zJDpI5kDIQAx6s+geF3v48F4DXfJez4GS/FdoDGnPnw1C2iYGbQ7bQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tauri-apps/cli-linux-x64-musl@2.11.4': + resolution: {integrity: sha512-o9GyhYor/nc7xarmwDE3ka2szuW3uuZzXjHWh64Q8YX5AtSgxdQkFWzrY4O8KiGtVNvFBI14H3Q49Qj5TOIP/A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tauri-apps/cli-win32-arm64-msvc@2.11.4': + resolution: {integrity: sha512-ld5Ehb598m0VkYyylRPNeCFsBe/km0jxis6KgMpl3IGY6I/i1RwQXO05I1AsXUXO2WC6AvB/Lw4qTf/asiuEiQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tauri-apps/cli-win32-ia32-msvc@2.11.4': + resolution: {integrity: sha512-12Hxi0XX/H5VFxO/bGgHkFWhml9VMgEOu9CidjeCeTNQ1l6fpUlbiGgSP7CLI3PFtW9/FfbeHieZ+kyWK5H7CA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@tauri-apps/cli-win32-x64-msvc@2.11.4': + resolution: {integrity: sha512-+vDiqBIU5dMISg/wNvX3sF+ZHfgJGJ5T0AcO+EHNXV9GGAG+P5fzodlDXD3QdKCRgZxMoCm5PPvj3BqLNjBthw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tauri-apps/cli@2.11.4': + resolution: {integrity: sha512-R8xGtMpwyetawSqm9kYOuMmEqkhUbvcUy8n0aNXIxollKBLESUu5f4Fx+64hgASYm1H+jSWq6jCW6zqTnH6hqQ==} + engines: {node: '>= 10'} + hasBin: true + + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.10.0': + resolution: {integrity: sha512-HQwu0KaB2zyT0iLzBL+8CLyZDL3KlZlZJ+2iyc9uCUnlJVskJU/UlPuVCyIPhtukjPQdT2QNoR5nCP5FqTmmDQ==} + engines: {node: '>=22', npm: '>=6', yarn: '>=1'} + deprecated: Incorrect minor release with breaking changes (Node >=22 and required @testing-library/dom peer). Use 6.9.1 for the 6.x line, or upgrade to 7.0.0. + peerDependencies: + '@testing-library/dom': '>=10 <11' + + '@testing-library/react@16.3.2': + resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/react-dom@19.2.4': + resolution: {integrity: sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} + + '@vitejs/plugin-react@5.2.0': + resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@vitest/expect@4.1.10': + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + + '@vitest/mocker@4.1.10': + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.10': + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} + + '@vitest/runner@4.1.10': + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} + + '@vitest/snapshot@4.1.10': + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} + + '@vitest/spy@4.1.10': + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} + + '@vitest/utils@4.1.10': + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + baseline-browser-mapping@2.11.12: + resolution: {integrity: sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==} + engines: {node: '>=6.0.0'} + hasBin: true + + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + + browserslist@4.28.7: + resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + caniuse-lite@1.0.30001807: + resolution: {integrity: sha512-daRXJ9EB/rdRgu7kV+TTl1YUKtlsMWblPl2sLnpg9DZae16QCegol6A1SmCE31Lm9mXC1sRWGt/krouH+/dl7Q==} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssstyle@6.2.0: + resolution: {integrity: sha512-Fm5NvhYathRnXNVndkUsCCuR63DCLVVwGOOwQw782coXFi5HhkXdu289l59HlXZBawsyNccXfWRYvLzcDCdDig==} + engines: {node: '>=20'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + electron-to-chromium@1.5.402: + resolution: {integrity: sha512-/oOpMaPT6Yg+6/1XQhyIPlzgj7Ye9zf+nNM2Uh6OcE2G2oNptWazFa+qB2Pdqqbsc9KnIDzgAntoYN0dbwOXwA==} + + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} + + es-module-lexer@2.3.1: + resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + expect-type@1.4.0: + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} + engines: {node: '>=12.0.0'} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsdom@28.1.0: + resolution: {integrity: sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.17: + resolution: {integrity: sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-releases@2.0.53: + resolution: {integrity: sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==} + engines: {node: '>=18'} + + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} + + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + postcss@8.5.26: + resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} + engines: {node: ^10 || ^12 || >=14} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-refresh@0.18.0: + resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} + engines: {node: '>=0.10.0'} + + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + rollup@4.62.4: + resolution: {integrity: sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} + engines: {node: '>=14.0.0'} + + tldts-core@7.4.10: + resolution: {integrity: sha512-KnQjp53ZekKgm/r3l+u8kJGGzYgrWdP8+Mql7a4vijh2WE0IrZWspQj/TpTxDho/YxO+AnOZnIjQcCD+q6iJsw==} + + tldts@7.4.10: + resolution: {integrity: sha512-GgouD1B+sWwvkaEq8vXC15DjQitxbvs12oIXELpconwm+Tg3zfcEv4jgzq3vtKverDXsg3VI8aRgNL2Nra0Iog==} + hasBin: true + + tough-cookie@6.0.2: + resolution: {integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==} + engines: {node: '>=16'} + + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici@7.29.0: + resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} + engines: {node: '>=20.18.1'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + vite@7.3.6: + resolution: {integrity: sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.10: + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.10 + '@vitest/browser-preview': 4.1.10 + '@vitest/browser-webdriverio': 4.1.10 + '@vitest/coverage-istanbul': 4.1.10 + '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + +snapshots: + + '@acemir/cssom@0.9.31': {} + + '@adobe/css-tools@4.5.0': {} + + '@asamuzakjp/css-color@5.1.11': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.10(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@asamuzakjp/dom-selector@6.8.1': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.5.2 + + '@asamuzakjp/generational-cache@1.0.1': {} + + '@asamuzakjp/nwsapi@2.3.9': {} + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.8': + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.7 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + + '@babel/parser@7.29.8': + dependencies: + '@babel/types': 7.29.8 + + '@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + + '@babel/traverse@7.29.8': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + + '@csstools/color-helpers@6.1.0': {} + + '@csstools/css-calc@3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-color-parser@4.1.10(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.1.0 + '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.7(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@exodus/bytes@1.15.1': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.3': {} + + '@rollup/rollup-android-arm-eabi@4.62.4': + optional: true + + '@rollup/rollup-android-arm64@4.62.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.62.4': + optional: true + + '@rollup/rollup-darwin-x64@4.62.4': + optional: true + + '@rollup/rollup-freebsd-arm64@4.62.4': + optional: true + + '@rollup/rollup-freebsd-x64@4.62.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.62.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.62.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.62.4': + optional: true + + '@rollup/rollup-openbsd-x64@4.62.4': + optional: true + + '@rollup/rollup-openharmony-arm64@4.62.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.62.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.62.4': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.62.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.62.4': + optional: true + + '@standard-schema/spec@1.1.0': {} + + '@tauri-apps/api@2.11.1': {} + + '@tauri-apps/cli-darwin-arm64@2.11.4': + optional: true + + '@tauri-apps/cli-darwin-x64@2.11.4': + optional: true + + '@tauri-apps/cli-linux-arm-gnueabihf@2.11.4': + optional: true + + '@tauri-apps/cli-linux-arm64-gnu@2.11.4': + optional: true + + '@tauri-apps/cli-linux-arm64-musl@2.11.4': + optional: true + + '@tauri-apps/cli-linux-riscv64-gnu@2.11.4': + optional: true + + '@tauri-apps/cli-linux-x64-gnu@2.11.4': + optional: true + + '@tauri-apps/cli-linux-x64-musl@2.11.4': + optional: true + + '@tauri-apps/cli-win32-arm64-msvc@2.11.4': + optional: true + + '@tauri-apps/cli-win32-ia32-msvc@2.11.4': + optional: true + + '@tauri-apps/cli-win32-x64-msvc@2.11.4': + optional: true + + '@tauri-apps/cli@2.11.4': + 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 + + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/runtime': 7.29.7 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.10.0(@testing-library/dom@10.4.1)': + dependencies: + '@adobe/css-tools': 4.5.0 + '@testing-library/dom': 10.4.1 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 + + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@babel/runtime': 7.29.7 + '@testing-library/dom': 10.4.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) + + '@types/aria-query@5.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.8 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.8 + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.9': {} + + '@types/react-dom@19.2.4(@types/react@19.2.18)': + dependencies: + '@types/react': 19.2.18 + + '@types/react@19.2.18': + dependencies: + csstype: 3.2.3 + + '@vitejs/plugin-react@5.2.0(vite@7.3.6)': + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7) + '@rolldown/pluginutils': 1.0.0-rc.3 + '@types/babel__core': 7.20.5 + react-refresh: 0.18.0 + vite: 7.3.6 + transitivePeerDependencies: + - supports-color + + '@vitest/expect@4.1.10': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + chai: 6.2.2 + tinyrainbow: 3.1.1 + + '@vitest/mocker@4.1.10(vite@7.3.6)': + dependencies: + '@vitest/spy': 4.1.10 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.6 + + '@vitest/pretty-format@4.1.10': + dependencies: + tinyrainbow: 3.1.1 + + '@vitest/runner@4.1.10': + dependencies: + '@vitest/utils': 4.1.10 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.10': + dependencies: + '@vitest/pretty-format': 4.1.10 + '@vitest/utils': 4.1.10 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.10': {} + + '@vitest/utils@4.1.10': + dependencies: + '@vitest/pretty-format': 4.1.10 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.1 + + agent-base@7.1.4: {} + + ansi-regex@5.0.1: {} + + ansi-styles@5.2.0: {} + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + assertion-error@2.0.1: {} + + baseline-browser-mapping@2.11.12: {} + + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + + browserslist@4.28.7: + dependencies: + baseline-browser-mapping: 2.11.12 + caniuse-lite: 1.0.30001807 + electron-to-chromium: 1.5.402 + node-releases: 2.0.53 + update-browserslist-db: 1.2.3(browserslist@4.28.7) + + caniuse-lite@1.0.30001807: {} + + chai@6.2.2: {} + + convert-source-map@2.0.0: {} + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + css.escape@1.5.1: {} + + cssstyle@6.2.0: + dependencies: + '@asamuzakjp/css-color': 5.1.11 + '@csstools/css-syntax-patches-for-csstree': 1.1.7(css-tree@3.2.1) + css-tree: 3.2.1 + lru-cache: 11.5.2 + + csstype@3.2.3: {} + + data-urls@7.0.0: + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decimal.js@10.6.0: {} + + dequal@2.0.3: {} + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + electron-to-chromium@1.5.402: {} + + entities@8.0.0: {} + + es-module-lexer@2.3.1: {} + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + expect-type@1.4.0: {} + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + + fsevents@2.3.3: + optional: true + + gensync@1.0.0-beta.2: {} + + html-encoding-sniffer@6.0.0: + dependencies: + '@exodus/bytes': 1.15.1 + transitivePeerDependencies: + - '@noble/hashes' + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + indent-string@4.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + js-tokens@4.0.0: {} + + jsdom@28.1.0: + dependencies: + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.8.1 + '@bramus/specificity': 2.4.2 + '@exodus/bytes': 1.15.1 + cssstyle: 6.2.0 + data-urls: 7.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + parse5: 8.0.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.2 + undici: 7.29.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + - supports-color + + jsesc@3.1.0: {} + + json5@2.2.3: {} + + lru-cache@11.5.2: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lz-string@1.5.0: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + mdn-data@2.27.1: {} + + min-indent@1.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.17: {} + + node-releases@2.0.53: {} + + obug@2.1.4: {} + + parse5@8.0.1: + dependencies: + entities: 8.0.0 + + pathe@2.0.3: {} + + picocolors@1.1.1: {} + + picomatch@4.0.5: {} + + postcss@8.5.26: + dependencies: + nanoid: 3.3.17 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + punycode@2.3.1: {} + + react-dom@19.2.8(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + + react-is@17.0.2: {} + + react-refresh@0.18.0: {} + + react@19.2.8: {} + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + require-from-string@2.0.2: {} + + rollup@4.62.4: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.62.4 + '@rollup/rollup-android-arm64': 4.62.4 + '@rollup/rollup-darwin-arm64': 4.62.4 + '@rollup/rollup-darwin-x64': 4.62.4 + '@rollup/rollup-freebsd-arm64': 4.62.4 + '@rollup/rollup-freebsd-x64': 4.62.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.62.4 + '@rollup/rollup-linux-arm-musleabihf': 4.62.4 + '@rollup/rollup-linux-arm64-gnu': 4.62.4 + '@rollup/rollup-linux-arm64-musl': 4.62.4 + '@rollup/rollup-linux-loong64-gnu': 4.62.4 + '@rollup/rollup-linux-loong64-musl': 4.62.4 + '@rollup/rollup-linux-ppc64-gnu': 4.62.4 + '@rollup/rollup-linux-ppc64-musl': 4.62.4 + '@rollup/rollup-linux-riscv64-gnu': 4.62.4 + '@rollup/rollup-linux-riscv64-musl': 4.62.4 + '@rollup/rollup-linux-s390x-gnu': 4.62.4 + '@rollup/rollup-linux-x64-gnu': 4.62.4 + '@rollup/rollup-linux-x64-musl': 4.62.4 + '@rollup/rollup-openbsd-x64': 4.62.4 + '@rollup/rollup-openharmony-arm64': 4.62.4 + '@rollup/rollup-win32-arm64-msvc': 4.62.4 + '@rollup/rollup-win32-ia32-msvc': 4.62.4 + '@rollup/rollup-win32-x64-gnu': 4.62.4 + '@rollup/rollup-win32-x64-msvc': 4.62.4 + fsevents: 2.3.3 + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.27.0: {} + + semver@6.3.1: {} + + siginfo@2.0.0: {} + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + std-env@4.2.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + symbol-tree@3.2.4: {} + + tinybench@2.9.0: {} + + tinyexec@1.3.0: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + tinyrainbow@3.1.1: {} + + tldts-core@7.4.10: {} + + tldts@7.4.10: + dependencies: + tldts-core: 7.4.10 + + tough-cookie@6.0.2: + dependencies: + tldts: 7.4.10 + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + + typescript@5.9.3: {} + + undici@7.29.0: {} + + update-browserslist-db@1.2.3(browserslist@4.28.7): + dependencies: + browserslist: 4.28.7 + escalade: 3.2.0 + picocolors: 1.1.1 + + vite@7.3.6: + dependencies: + esbuild: 0.28.1 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + postcss: 8.5.26 + rollup: 4.62.4 + tinyglobby: 0.2.17 + optionalDependencies: + fsevents: 2.3.3 + + vitest@4.1.10(jsdom@28.1.0)(vite@7.3.6): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(vite@7.3.6) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.3.1 + expect-type: 1.4.0 + magic-string: 0.30.21 + obug: 2.1.4 + pathe: 2.0.3 + picomatch: 4.0.5 + std-env: 4.2.0 + tinybench: 2.9.0 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.1 + vite: 7.3.6 + why-is-node-running: 2.3.0 + optionalDependencies: + jsdom: 28.1.0 + transitivePeerDependencies: + - msw + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + webidl-conversions@8.0.1: {} + + whatwg-mimetype@5.0.0: {} + + whatwg-url@16.0.1: + dependencies: + '@exodus/bytes': 1.15.1 + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + xml-name-validator@5.0.0: {} + + xmlchars@2.2.0: {} + + yallist@3.1.1: {} diff --git a/product-source/guanghu-education-industry-os/pnpm-workspace.yaml b/product-source/guanghu-education-industry-os/pnpm-workspace.yaml new file mode 100644 index 0000000..09a02ca --- /dev/null +++ b/product-source/guanghu-education-industry-os/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +allowBuilds: + esbuild: true +onlyBuiltDependencies: + - esbuild diff --git a/product-source/guanghu-education-industry-os/protocol/PROTOCOL-RELEASE.json b/product-source/guanghu-education-industry-os/protocol/PROTOCOL-RELEASE.json new file mode 100644 index 0000000..462a942 --- /dev/null +++ b/product-source/guanghu-education-industry-os/protocol/PROTOCOL-RELEASE.json @@ -0,0 +1,17 @@ +{ + "schema": "guanghu.protocol-release/v1", + "releaseId": "GH-EDU-PROTOCOL-20260808-001", + "version": "0.2.0-f2a3a2ee40b3", + "developmentId": "DEV-20260808-001", + "nodeId": "XX-GZ-001", + "codeChannelRepository": "guanghu-system/education-modules", + "codeChannelCommit": "d06cac902111ca9f458a1154d08960932031093b", + "files": { + "module-registry.json": "f2a3a2ee40b3faaf45d4c754caa876eab5747224e7e144547dad9d173f87892e", + "xiaoxin-channel.json": "5623828f86c48c5697bc5b429d5d2f749ad1f6496b649cfc674309f8f26d7413", + "update-authority.json": "bf005b44e11a3be676596bfc715eedfed58806fd0e2f0b4189aab7042906a5b7" + }, + "sourceCodeIncluded": false, + "automaticUpstreamUpdate": false, + "state": "CANDIDATE_FOR_XX_GZ_001" +} diff --git a/product-source/guanghu-education-industry-os/protocol/deployment-profile.json b/product-source/guanghu-education-industry-os/protocol/deployment-profile.json new file mode 100644 index 0000000..8212639 --- /dev/null +++ b/product-source/guanghu-education-industry-os/protocol/deployment-profile.json @@ -0,0 +1,15 @@ +{ + "schema": "guanghu.education-deployment-profile/v1", + "profileId": "GH-EDU-SERVER-ARTIFACT-ONLY-001", + "humanController": "Xiaoxin", + "parentControllerNode": "JD-FD-PRIMARY", + "nodeId": "XX-GZ-001", + "lighthouseAnchorVersion": "2026-08-07.4", + "lighthouseSourceCommit": "9627547de865858bbb65f3ac72b608e67872f0e3", + "expectedDmiInstanceUuid": "a3e623c9-efeb-4ea7-9779-8bafeb835401", + "allowedPayloads": ["frontend_dist", "runtime_binary", "protocol_config", "module_registry", "deployment_receipt"], + "forbiddenPayloads": ["src", ".git", "node_modules", "Cargo_sources", "TypeScript_sources", "upstream_remote_config", "private_keys"], + "sourceCodeOnServer": false, + "rollbackRequired": true, + "serverOwnedReceiptRequired": true +} diff --git a/product-source/guanghu-education-industry-os/protocol/module-registry.json b/product-source/guanghu-education-industry-os/protocol/module-registry.json new file mode 100644 index 0000000..df35963 --- /dev/null +++ b/product-source/guanghu-education-industry-os/protocol/module-registry.json @@ -0,0 +1,80 @@ +{ + "schema": "gmp.registry.v1", + "registryId": "GH-EDU-MODULE-REGISTRY-0001", + "domainId": "GH-SUBDOMAIN-EDUCATION-0001", + "controller": "GLS-EDU-OS-KERNEL-0001", + "version": "2026.08.08.1", + "authorityRule": "Registration establishes an address and provenance record only. It does not prove installation, execution, deployment or persona birth.", + "states": { + "LIVE_STAGE_1": "Connected to a real stage-one runtime and covered by a read-back receipt.", + "READY_STAGE_1": "Implemented in the stage-one client but not independently server-resident.", + "PRE_REGISTERED": "Address reserved; implementation and admission evidence remain pending.", + "RESEARCH_ONLY": "Pattern source only; cannot execute or enter the persona subject." + }, + "modules": [ + { "id": "GH-EDU-CORE-ID-001", "group": "foundation", "surface": "channel", "title": "个人服务器身份入口", "state": "LIVE_STAGE_1", "capabilities": ["identity.resolve", "node.verify"], "source": "guanghu-native" }, + { "id": "GH-EDU-CORE-CHANNEL-001", "group": "foundation", "surface": "channel", "title": "初始化频道装配器", "state": "LIVE_STAGE_1", "capabilities": ["channel.load", "channel.project"], "source": "guanghu-native" }, + { "id": "GH-EDU-CORE-SERVER-001", "group": "foundation", "surface": "channel", "title": "个人节点现实执行桥", "state": "LIVE_STAGE_1", "capabilities": ["server.read", "server.write", "server.receipt"], "source": "guanghu-native" }, + { "id": "GH-EDU-CORE-REPO-001", "group": "foundation", "surface": "repository", "title": "光湖代码频道引擎", "state": "LIVE_STAGE_1", "capabilities": ["repository.status", "repository.version"], "source": "forgejo-binary-adapted", "license": "MIT" }, + { "id": "GH-EDU-CORE-LIGHTHOUSE-001", "group": "foundation", "surface": "channel", "title": "光湖灯塔解析器", "state": "LIVE_STAGE_1", "capabilities": ["lighthouse.resolve"], "source": "guanghu-native" }, + { "id": "GH-EDU-CORE-RECEIPT-001", "group": "foundation", "surface": "receipts", "title": "执行回执与回读", "state": "LIVE_STAGE_1", "capabilities": ["receipt.write", "receipt.read"], "source": "guanghu-native" }, + { "id": "GH-EDU-CORE-AUTH-001", "group": "foundation", "surface": "settings", "title": "权限与能力令牌", "state": "PRE_REGISTERED", "capabilities": ["authority.request", "authority.verify"], "source": "guanghu-native-planned" }, + { "id": "GH-EDU-CORE-UPDATE-001", "group": "foundation", "surface": "settings", "title": "光湖单一更新通道", "state": "LIVE_STAGE_1", "capabilities": ["update.policy.read"], "source": "guanghu-native" }, + + { "id": "GH-EDU-OFFICE-DOC-001", "group": "office", "surface": "document", "title": "智能文档", "state": "LIVE_STAGE_1", "capabilities": ["document.open", "document.edit", "document.persist"], "source": "guanghu-stage1-native", "candidateParts": ["BlockNote"] }, + { "id": "GH-EDU-OFFICE-SHEET-001", "group": "office", "surface": "sheet", "title": "智能表格", "state": "LIVE_STAGE_1", "capabilities": ["sheet.open", "sheet.edit", "sheet.calculate", "sheet.persist"], "source": "guanghu-stage1-native", "candidateParts": ["IronCalc"] }, + { "id": "GH-EDU-OFFICE-CHART-001", "group": "office", "surface": "dashboard", "title": "图表投影", "state": "READY_STAGE_1", "capabilities": ["chart.project"], "source": "guanghu-native" }, + { "id": "GH-EDU-OFFICE-DASH-001", "group": "office", "surface": "dashboard", "title": "仪表盘", "state": "READY_STAGE_1", "capabilities": ["dashboard.project"], "source": "guanghu-native" }, + { "id": "GH-EDU-OFFICE-SLIDE-001", "group": "office", "surface": "modules", "title": "演示文稿", "state": "PRE_REGISTERED", "capabilities": ["slides.open", "slides.edit", "slides.present"], "source": "candidate-pending" }, + { "id": "GH-EDU-OFFICE-FORM-001", "group": "office", "surface": "modules", "title": "表单与问卷", "state": "PRE_REGISTERED", "capabilities": ["form.design", "form.collect"], "source": "candidate-pending" }, + { "id": "GH-EDU-OFFICE-CALENDAR-001", "group": "office", "surface": "modules", "title": "日历", "state": "PRE_REGISTERED", "capabilities": ["calendar.read", "calendar.edit"], "source": "candidate-pending" }, + { "id": "GH-EDU-OFFICE-TASK-001", "group": "office", "surface": "modules", "title": "任务与项目", "state": "PRE_REGISTERED", "capabilities": ["task.plan", "task.track"], "source": "candidate-pending" }, + { "id": "GH-EDU-OFFICE-FILE-001", "group": "office", "surface": "modules", "title": "文件与附件", "state": "PRE_REGISTERED", "capabilities": ["file.store", "file.share"], "source": "candidate-pending" }, + { "id": "GH-EDU-OFFICE-KB-001", "group": "office", "surface": "modules", "title": "知识湖", "state": "PRE_REGISTERED", "capabilities": ["knowledge.search", "knowledge.read", "knowledge.edit"], "source": "tolaria-part-study", "license": "AGPL-review-required" }, + { "id": "GH-EDU-OFFICE-CANVAS-001", "group": "office", "surface": "modules", "title": "白板与画布", "state": "PRE_REGISTERED", "capabilities": ["canvas.open", "canvas.edit"], "source": "Excalidraw-candidate", "license": "MIT" }, + { "id": "GH-EDU-OFFICE-FLOW-001", "group": "office", "surface": "modules", "title": "流程图与思维导图", "state": "PRE_REGISTERED", "capabilities": ["diagram.project", "mindmap.edit"], "source": "candidate-pending" }, + { "id": "GH-EDU-OFFICE-CHAT-001", "group": "office", "surface": "modules", "title": "频道消息", "state": "PRE_REGISTERED", "capabilities": ["message.read", "message.send"], "source": "guanghu-native-planned" }, + { "id": "GH-EDU-OFFICE-COLLAB-001", "group": "office", "surface": "modules", "title": "多人协作与版本", "state": "PRE_REGISTERED", "capabilities": ["collaboration.join", "collaboration.merge"], "source": "candidate-pending" }, + { "id": "GH-EDU-OFFICE-SIGN-001", "group": "office", "surface": "modules", "title": "审批与签署", "state": "PRE_REGISTERED", "capabilities": ["approval.request", "approval.sign"], "source": "candidate-pending" }, + + { "id": "GH-EDU-BIZ-ORG-001", "group": "education", "surface": "modules", "title": "学校与组织", "state": "PRE_REGISTERED", "capabilities": ["organization.manage"], "source": "guanghu-native-planned" }, + { "id": "GH-EDU-BIZ-CURRICULUM-001", "group": "education", "surface": "modules", "title": "课程与课标", "state": "PRE_REGISTERED", "capabilities": ["curriculum.plan"], "source": "guanghu-native-planned" }, + { "id": "GH-EDU-BIZ-LESSON-001", "group": "education", "surface": "modules", "title": "备课与教案", "state": "PRE_REGISTERED", "capabilities": ["lesson.plan", "lesson.review"], "source": "guanghu-native-planned" }, + { "id": "GH-EDU-BIZ-CLASS-001", "group": "education", "surface": "modules", "title": "班级管理", "state": "PRE_REGISTERED", "capabilities": ["class.manage"], "source": "guanghu-native-planned" }, + { "id": "GH-EDU-BIZ-STUDENT-001", "group": "education", "surface": "modules", "title": "学生档案", "state": "PRE_REGISTERED", "capabilities": ["student.profile"], "source": "guanghu-native-planned" }, + { "id": "GH-EDU-BIZ-TEACHER-001", "group": "education", "surface": "modules", "title": "教师档案", "state": "PRE_REGISTERED", "capabilities": ["teacher.profile"], "source": "guanghu-native-planned" }, + { "id": "GH-EDU-BIZ-PARENT-001", "group": "education", "surface": "modules", "title": "家校沟通", "state": "PRE_REGISTERED", "capabilities": ["parent.communicate"], "source": "guanghu-native-planned" }, + { "id": "GH-EDU-BIZ-ASSESS-001", "group": "education", "surface": "modules", "title": "考试与评价", "state": "PRE_REGISTERED", "capabilities": ["assessment.design", "assessment.analyze"], "source": "candidate-pending" }, + { "id": "GH-EDU-BIZ-ATTEND-001", "group": "education", "surface": "modules", "title": "考勤", "state": "PRE_REGISTERED", "capabilities": ["attendance.record"], "source": "candidate-pending" }, + { "id": "GH-EDU-BIZ-TIMETABLE-001", "group": "education", "surface": "modules", "title": "排课", "state": "PRE_REGISTERED", "capabilities": ["timetable.plan"], "source": "candidate-pending" }, + { "id": "GH-EDU-BIZ-RESOURCE-001", "group": "education", "surface": "modules", "title": "教学资源库", "state": "PRE_REGISTERED", "capabilities": ["resource.catalog", "resource.retrieve"], "source": "candidate-pending" }, + { "id": "GH-EDU-BIZ-ANALYTICS-001", "group": "education", "surface": "modules", "title": "教育数据分析", "state": "PRE_REGISTERED", "capabilities": ["education.analyze"], "source": "guanghu-native-planned" }, + + { "id": "GH-EDU-TT-OVERVIEW-001", "group": "xiaoxin-template", "surface": "channel", "title": "师训运营总览", "state": "READY_STAGE_1", "capabilities": ["teacherTraining.overview"], "source": "guanghu-native" }, + { "id": "GH-EDU-TT-TRAINING-001", "group": "xiaoxin-template", "surface": "channel", "title": "新教师培养", "state": "READY_STAGE_1", "capabilities": ["teacherTraining.plan"], "source": "guanghu-native" }, + { "id": "GH-EDU-TT-SCHEDULE-001", "group": "xiaoxin-template", "surface": "channel", "title": "导师工时与排班", "state": "READY_STAGE_1", "capabilities": ["mentor.schedule", "mentor.conflict.detect"], "source": "guanghu-native" }, + { "id": "GH-EDU-TT-QUALITY-001", "group": "xiaoxin-template", "surface": "channel", "title": "新师教学质控", "state": "READY_STAGE_1", "capabilities": ["quality.record", "quality.compare"], "source": "guanghu-native" }, + { "id": "GH-EDU-TT-RETENTION-001", "group": "xiaoxin-template", "surface": "channel", "title": "新师留存预警", "state": "READY_STAGE_1", "capabilities": ["retention.assess"], "source": "guanghu-native" }, + { "id": "GH-EDU-TT-PLANNING-001", "group": "xiaoxin-template", "surface": "channel", "title": "2026—2029 三年规划", "state": "READY_STAGE_1", "capabilities": ["plan.edit", "plan.review"], "source": "guanghu-native" }, + { "id": "GH-EDU-TT-COPY-001", "group": "xiaoxin-template", "surface": "channel", "title": "师训内容与文案", "state": "READY_STAGE_1", "capabilities": ["copy.edit"], "source": "guanghu-native" }, + { "id": "GH-EDU-TT-ONBOARD-001", "group": "xiaoxin-template", "surface": "channel", "title": "新师入职与转正", "state": "PRE_REGISTERED", "capabilities": ["onboarding.track"], "source": "guanghu-native-planned" }, + + { "id": "GH-EDU-BRAIN-INTENT-001", "group": "persona-brain", "surface": "brain", "title": "意图归一化", "state": "RESEARCH_ONLY", "capabilities": [], "source": "tolaria-grok-mimo-pattern-study" }, + { "id": "GH-EDU-BRAIN-CONTEXT-001", "group": "persona-brain", "surface": "brain", "title": "频道上下文构建", "state": "RESEARCH_ONLY", "capabilities": [], "source": "tolaria-grok-pattern-study" }, + { "id": "GH-EDU-BRAIN-PLAN-001", "group": "persona-brain", "surface": "brain", "title": "计划与状态机", "state": "RESEARCH_ONLY", "capabilities": [], "source": "grok-mimo-jdgenie-pattern-study" }, + { "id": "GH-EDU-BRAIN-SKILL-001", "group": "persona-brain", "surface": "brain", "title": "技能发现与按需装载", "state": "RESEARCH_ONLY", "capabilities": [], "source": "grok-mimo-pattern-study" }, + { "id": "GH-EDU-BRAIN-TOOL-001", "group": "persona-brain", "surface": "brain", "title": "工具调用与结果归一化", "state": "RESEARCH_ONLY", "capabilities": [], "source": "tolaria-grok-jdgenie-pattern-study" }, + { "id": "GH-EDU-BRAIN-FILE-001", "group": "persona-brain", "surface": "brain", "title": "文件变更识别", "state": "RESEARCH_ONLY", "capabilities": [], "source": "tolaria-grok-pattern-study" }, + { "id": "GH-EDU-BRAIN-REPO-001", "group": "persona-brain", "surface": "brain", "title": "代码仓库工作树", "state": "RESEARCH_ONLY", "capabilities": [], "source": "tolaria-grok-pattern-study" }, + { "id": "GH-EDU-BRAIN-SANDBOX-001", "group": "persona-brain", "surface": "brain", "title": "最小权限执行沙箱", "state": "RESEARCH_ONLY", "capabilities": [], "source": "grok-pattern-study" }, + { "id": "GH-EDU-BRAIN-MEMORY-001", "group": "persona-brain", "surface": "brain", "title": "持久记忆与检索", "state": "RESEARCH_ONLY", "capabilities": [], "source": "grok-mimo-hldp-pattern-study" }, + { "id": "GH-EDU-BRAIN-COMPACT-001", "group": "persona-brain", "surface": "brain", "title": "上下文压缩与恢复", "state": "RESEARCH_ONLY", "capabilities": [], "source": "grok-guanghu-continuity-pattern-study" }, + { "id": "GH-EDU-BRAIN-APPROVAL-001", "group": "persona-brain", "surface": "brain", "title": "授权门与人工确认", "state": "RESEARCH_ONLY", "capabilities": [], "source": "grok-jdgenie-guanghu-pattern-study" }, + { "id": "GH-EDU-BRAIN-RECEIPT-001", "group": "persona-brain", "surface": "brain", "title": "结果验证与回执", "state": "RESEARCH_ONLY", "capabilities": [], "source": "guanghu-native-planned" } + ], + "legacyAliases": { + "GH-MOD-DOC-ADAPTER-001": "GH-EDU-OFFICE-DOC-001", + "GH-MOD-SHEET-ADAPTER-001": "GH-EDU-OFFICE-SHEET-001", + "GH-MOD-EDU-OVERVIEW-001": "GH-EDU-TT-OVERVIEW-001" + } +} diff --git a/product-source/guanghu-education-industry-os/protocol/update-authority.json b/product-source/guanghu-education-industry-os/protocol/update-authority.json new file mode 100644 index 0000000..ec0b480 --- /dev/null +++ b/product-source/guanghu-education-industry-os/protocol/update-authority.json @@ -0,0 +1,18 @@ +{ + "schema": "guanghu.update-authority/v1", + "policyId": "GH-EDU-UPDATE-AUTHORITY-001", + "controller": "ICE-GL-infinity", + "publisher": "Guanghu", + "controlMode": "GUANGHU_IS_PRIMARY_UPSTREAM", + "allowedUpdateChannels": ["guanghu-human-approved-signed-release"], + "openSourceRelation": "PARTS_SOURCE_ONLY_NOT_UPSTREAM", + "upstreamSync": "DISABLED", + "automaticUpstreamFetch": false, + "automaticUpstreamMerge": false, + "automaticComponentUpdate": false, + "serverSourceCheckout": false, + "serverSourcePresence": "FORBIDDEN", + "admissionRule": "An external part may enter only after Guanghu review, module numbering, protocol adaptation, rebuild and signature.", + "forbiddenRemotes": ["tolaria-upstream", "forgejo-upstream", "grok-upstream"], + "receiptRequired": true +} diff --git a/product-source/guanghu-education-industry-os/protocol/xiaoxin-channel.json b/product-source/guanghu-education-industry-os/protocol/xiaoxin-channel.json new file mode 100644 index 0000000..18e516e --- /dev/null +++ b/product-source/guanghu-education-industry-os/protocol/xiaoxin-channel.json @@ -0,0 +1,42 @@ +{ + "schema": "guanghu.initial-channel.v1", + "channelId": "GH-EDU-CHANNEL-XX-001", + "title": "小新 · 高中项目师训", + "humanController": "小新", + "nodeId": "XX-GZ-001", + "domainId": "GH-SUBDOMAIN-EDUCATION-0001", + "templateId": "GH-EDU-TEMPLATE-TEACHER-TRAINING-001", + "identityMode": "PERSONAL_SERVER_REALITY_ANCHOR", + "clientMode": "LOCAL_RENDERING_TERMINAL", + "loginAdapters": [ + { "id": "server-key-stage1", "state": "LIVE_STAGE_1", "label": "当前设备安全直达" }, + { "id": "wechat", "state": "INTERFACE_RESERVED", "label": "微信授权" }, + { "id": "sms", "state": "INTERFACE_RESERVED", "label": "手机号" }, + { "id": "email", "state": "INTERFACE_RESERVED", "label": "邮箱" }, + { "id": "local-account", "state": "INTERFACE_RESERVED", "label": "自建账号" } + ], + "mountedModules": [ + "GH-EDU-CORE-ID-001", + "GH-EDU-CORE-CHANNEL-001", + "GH-EDU-CORE-SERVER-001", + "GH-EDU-CORE-REPO-001", + "GH-EDU-CORE-LIGHTHOUSE-001", + "GH-EDU-CORE-RECEIPT-001", + "GH-EDU-OFFICE-DOC-001", + "GH-EDU-OFFICE-SHEET-001", + "GH-EDU-OFFICE-CHART-001", + "GH-EDU-OFFICE-DASH-001", + "GH-EDU-TT-OVERVIEW-001", + "GH-EDU-TT-TRAINING-001", + "GH-EDU-TT-SCHEDULE-001", + "GH-EDU-TT-QUALITY-001", + "GH-EDU-TT-RETENTION-001", + "GH-EDU-TT-PLANNING-001", + "GH-EDU-TT-COPY-001" + ], + "dataResidency": { + "workingData": "XX-GZ-001:/var/lib/guanghu/education-data/channels/GH-EDU-CHANNEL-XX-001", + "moduleSource": "Guanghu code channel", + "clientCache": "regenerable-only" + } +} diff --git a/product-source/guanghu-education-industry-os/scripts/package-server-release.mjs b/product-source/guanghu-education-industry-os/scripts/package-server-release.mjs new file mode 100644 index 0000000..ec02cb4 --- /dev/null +++ b/product-source/guanghu-education-industry-os/scripts/package-server-release.mjs @@ -0,0 +1,29 @@ +import fs from 'node:fs' +import path from 'node:path' +import crypto from 'node:crypto' + +const root = path.resolve(import.meta.dirname, '..') +const target = path.join(root, 'release/server-artifact') + +fs.rmSync(target, { recursive: true, force: true }) +fs.mkdirSync(path.join(target, 'app'), { recursive: true }) +fs.mkdirSync(path.join(target, 'protocol'), { recursive: true }) +fs.cpSync(path.join(root, 'dist'), path.join(target, 'app'), { recursive: true }) +for (const name of ['module-registry.json', 'update-authority.json', 'deployment-profile.json']) { + fs.copyFileSync(path.join(root, 'protocol', name), path.join(target, 'protocol', name)) +} + +const files = [] +function collect(directory) { + for (const entry of fs.readdirSync(directory, { withFileTypes: true })) { + const absolute = path.join(directory, entry.name) + if (entry.isDirectory()) collect(absolute) + else files.push(absolute) + } +} +collect(target) +const manifest = files.sort().map((file) => ({ + path: path.relative(target, file), + sha256: crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex'), +})) +fs.writeFileSync(path.join(target, 'ARTIFACT-MANIFEST.json'), `${JSON.stringify({ schema: 'guanghu.artifact-manifest/v1', sourceIncluded: false, files: manifest }, null, 2)}\n`) diff --git a/product-source/guanghu-education-industry-os/scripts/pre-deploy-guard.mjs b/product-source/guanghu-education-industry-os/scripts/pre-deploy-guard.mjs new file mode 100644 index 0000000..db5577d --- /dev/null +++ b/product-source/guanghu-education-industry-os/scripts/pre-deploy-guard.mjs @@ -0,0 +1,36 @@ +import fs from 'node:fs' +import path from 'node:path' + +const root = path.resolve(import.meta.dirname, '..') +const artifact = path.join(root, 'release/server-artifact') +const update = JSON.parse(fs.readFileSync(path.join(root, 'protocol/update-authority.json'), 'utf8')) +const profile = JSON.parse(fs.readFileSync(path.join(root, 'protocol/deployment-profile.json'), 'utf8')) +const failures = [] + +if (update.controlMode !== 'GUANGHU_IS_PRIMARY_UPSTREAM') failures.push('GUANGHU_NOT_PRIMARY_UPSTREAM') +if (update.upstreamSync !== 'DISABLED') failures.push('UPSTREAM_SYNC_NOT_DISABLED') +if (update.automaticUpstreamFetch || update.automaticUpstreamMerge || update.automaticComponentUpdate) failures.push('AUTOMATIC_UPSTREAM_PATH_ENABLED') +if (update.serverSourceCheckout || update.serverSourcePresence !== 'FORBIDDEN') failures.push('SERVER_SOURCE_POLICY_INVALID') +if (profile.sourceCodeOnServer !== false) failures.push('SOURCE_CODE_ALLOWED_BY_PROFILE') +if (profile.nodeId === 'PENDING_LIGHTHOUSE_REGISTRATION') failures.push('TARGET_NODE_NOT_REGISTERED') +if (profile.nodeId !== 'XX-GZ-001') failures.push('TARGET_NODE_MISMATCH') +if (!profile.lighthouseSourceCommit || !profile.expectedDmiInstanceUuid) failures.push('TARGET_IDENTITY_EVIDENCE_MISSING') +if (!fs.existsSync(artifact)) failures.push('SERVER_ARTIFACT_MISSING') + +const forbiddenNames = new Set(['src', '.git', 'node_modules', 'Cargo.toml', 'Cargo.lock', 'package.json', 'pnpm-lock.yaml', 'package-lock.json', 'vite.config.ts', 'tsconfig.json']) +const forbiddenExtensions = new Set(['.ts', '.tsx', '.rs', '.map']) +function scan(directory) { + if (!fs.existsSync(directory)) return + for (const entry of fs.readdirSync(directory, { withFileTypes: true })) { + const absolute = path.join(directory, entry.name) + if (forbiddenNames.has(entry.name) || (!entry.isDirectory() && forbiddenExtensions.has(path.extname(entry.name)))) failures.push(`FORBIDDEN_SOURCE_PAYLOAD:${path.relative(artifact, absolute)}`) + if (entry.isDirectory()) scan(absolute) + } +} +scan(artifact) + +if (failures.length) { + process.stderr.write(`${JSON.stringify({ state: 'BLOCK_0', gate: 'GH-EDU-SERVER-ARTIFACT-ONLY-001', failures }, null, 2)}\n`) + process.exit(1) +} +process.stdout.write(`${JSON.stringify({ state: 'PASS_100', gate: 'GH-EDU-SERVER-ARTIFACT-ONLY-001', upstreamSync: 'DISABLED', sourceIncluded: false, nodeId: profile.nodeId }, null, 2)}\n`) diff --git a/product-source/guanghu-education-industry-os/src-tauri/Cargo.lock b/product-source/guanghu-education-industry-os/src-tauri/Cargo.lock new file mode 100644 index 0000000..e367666 --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/Cargo.lock @@ -0,0 +1,4394 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" +dependencies = [ + "memchr", +] + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" + +[[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 = "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 = "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 = "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 = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "bytemuck" +version = "1.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb1307f12aa967b5a58416e87b3653360e0fd614a016b6e970db08fecbb1b80d" +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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9066c49992464636f92905fa096ec58baaa4d57ec19a5c096c68d3e25ef3d136" +dependencies = [ + "find-msvc-tools", + "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 = "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.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", + "core-graphics-types", + "foreign-types", + "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", + "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-utils" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" + +[[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 = "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.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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[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 = "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 = "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.4+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 = "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 = "fastrand" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" + +[[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.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de" + +[[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.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea5190182e6915eb873ddbc16e23b711b6eb1f9c00a0d0a3a91b5f6228475225" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[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 = "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 = "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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" + +[[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 = "guanghu-education-industry-os" +version = "0.2.0" +dependencies = [ + "serde", + "serde_json", + "tauri", + "tauri-build", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[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.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" +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.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[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", + "tokio", + "tower-service", + "tracing", +] + +[[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 = "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 = "ipnet" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a756c3fac73139e83f14c2d742155dd2b78d3ee56597b419a0579b7bdd6dd78" + +[[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 = "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 = "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 = "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.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[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 = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2026a5056764a10b2bf5d56488cba40da507f5493a6a429340e2004d9ed085fa" +dependencies = [ + "libc", +] + +[[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 = "markup5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" +dependencies = [ + "log", + "tendril", + "web_atoms", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[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 = "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 = "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 = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[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", + "objc2", + "objc2-core-foundation", + "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-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "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", + "dispatch2", + "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", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[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-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-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", + "objc2", + "objc2-core-foundation", +] + +[[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-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 = "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 = "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", + "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 = "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 = "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 = "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 = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[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.3", +] + +[[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.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" +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.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 = "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 = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[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 = "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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" +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 = "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.3", +] + +[[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.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +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.3", +] + +[[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_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.2", + "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 = "simd-adler32" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + +[[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 = "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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +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-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", + "core-graphics", + "crossbeam-channel", + "dbus", + "dispatch2", + "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", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7eeb6d99155545da6150a1795945f16ac9c178deb2a5f2e74d776107bd5849" +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", + "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", +] + +[[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-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", +] + +[[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", + "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.4+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.4+spec-1.1.0", +] + +[[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.3", +] + +[[package]] +name = "time" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" +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.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" +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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-util" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" +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.4+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" +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.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" +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-core", +] + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "045979e3f037cd18ad1cb2a419dfda133c5c29c9f3453370079f2255d46c257e" +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 = "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 = "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 = "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 = "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", + "windows-core 0.61.2", + "windows-implement", + "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", + "windows-core 0.61.2", +] + +[[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.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[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.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "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", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[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.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.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-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.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.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.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", + "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-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_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_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_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[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_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_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_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 = "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", + "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 = "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 = "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 = "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" diff --git a/product-source/guanghu-education-industry-os/src-tauri/Cargo.toml b/product-source/guanghu-education-industry-os/src-tauri/Cargo.toml new file mode 100644 index 0000000..a11c3e6 --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "guanghu-education-industry-os" +version = "0.2.0" +description = "Guanghu Education Subdomain operating system client" +authors = ["Guanghu"] +license = "LicenseRef-Guanghu" +edition = "2021" +rust-version = "1.77.2" + +[lib] +name = "guanghu_education_industry_os" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2.5.4", features = [] } + +[dependencies] +tauri = { version = "2.11.5", features = ["macos-private-api"] } +serde = { version = "1", features = ["derive"] } +serde_json = "1" diff --git a/product-source/guanghu-education-industry-os/src-tauri/build.rs b/product-source/guanghu-education-industry-os/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/product-source/guanghu-education-industry-os/src-tauri/capabilities/default.json b/product-source/guanghu-education-industry-os/src-tauri/capabilities/default.json new file mode 100644 index 0000000..95d9c57 --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/capabilities/default.json @@ -0,0 +1,7 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Base window capability for the Guanghu education workspace", + "windows": ["main"], + "permissions": ["core:default"] +} diff --git a/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/acl-manifests.json b/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/acl-manifests.json new file mode 100644 index 0000000..0eebfc4 --- /dev/null +++ b/product-source/guanghu-education-industry-os/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}} \ No newline at end of file diff --git a/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/capabilities.json b/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/capabilities.json new file mode 100644 index 0000000..8d66bc6 --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/capabilities.json @@ -0,0 +1 @@ +{"default":{"identifier":"default","description":"Base window capability for the Guanghu education workspace","local":true,"windows":["main"],"permissions":["core:default"]}} \ No newline at end of file diff --git a/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/desktop-schema.json b/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/desktop-schema.json new file mode 100644 index 0000000..3286645 --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/desktop-schema.json @@ -0,0 +1,2292 @@ +{ + "$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": [ + { + "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." + } + ] + }, + "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/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/macOS-schema.json b/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/macOS-schema.json new file mode 100644 index 0000000..3286645 --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/gen/schemas/macOS-schema.json @@ -0,0 +1,2292 @@ +{ + "$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": [ + { + "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." + } + ] + }, + "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/product-source/guanghu-education-industry-os/src-tauri/icons/128x128.png b/product-source/guanghu-education-industry-os/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..2093857e3fd0ae0c50ca2b43a83301a7cb67a4b1 GIT binary patch literal 6939 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 z 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 U`+B81$^ZZW07*qoM6N<$g44INI{*Lx literal 0 HcmV?d00001 diff --git a/product-source/guanghu-education-industry-os/src-tauri/icons/icon.icns b/product-source/guanghu-education-industry-os/src-tauri/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..683bf12187a601b79a64b09aeb577b9a86229e65 GIT binary patch literal 361865 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�qENxY5gomgiUu8vAZ958EykD*9(uO{D~(~(*yjE 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�v#TEb@1s6$*CCF5pW;8chUc|2#km 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�_9&`cXe&0{^@pDy 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 literal 0 HcmV?d00001 diff --git a/product-source/guanghu-education-industry-os/src-tauri/src/lib.rs b/product-source/guanghu-education-industry-os/src-tauri/src/lib.rs new file mode 100644 index 0000000..9293dea --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/src/lib.rs @@ -0,0 +1,149 @@ +use serde::Serialize; +use serde_json::Value; +use std::io::Write; +use std::process::{Command, Stdio}; + +const NODE_ALIAS: &str = "xx-gz-001"; +const CHANNEL_ROOT: &str = "/var/lib/guanghu/education-data/channels/GH-EDU-CHANNEL-XX-001"; + +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +struct ChannelSnapshot { + node: Value, + fifth_domain_link: Value, + module_registry: Value, + update_authority: Value, + channel: Value, + code_channel: Value, +} + +fn ssh_output(remote_command: &str) -> Result { + let output = Command::new("/usr/bin/ssh") + .args([ + "-o", + "BatchMode=yes", + "-o", + "ConnectTimeout=10", + NODE_ALIAS, + remote_command, + ]) + .output() + .map_err(|error| format!("SSH_LAUNCH_FAILED:{error}"))?; + + if !output.status.success() { + return Err(format!( + "SSH_REMOTE_FAILED:{}", + String::from_utf8_lossy(&output.stderr).trim() + )); + } + + String::from_utf8(output.stdout).map_err(|error| format!("SSH_OUTPUT_INVALID_UTF8:{error}")) +} + +fn read_remote_json(path: &str) -> Result { + let payload = ssh_output(&format!("cat {path}"))?; + serde_json::from_str(&payload).map_err(|error| format!("REMOTE_JSON_INVALID:{path}:{error}")) +} + +#[tauri::command] +fn connect_channel() -> Result { + let code_version = ssh_output("curl -fsS http://127.0.0.1:3901/api/v1/version")?; + let repository_search = + ssh_output("curl -fsS 'http://127.0.0.1:3901/api/v1/repos/search?limit=20'")?; + + Ok(ChannelSnapshot { + node: read_remote_json("/var/lib/guanghu/protocol/node.json")?, + fifth_domain_link: read_remote_json( + "/var/lib/guanghu/receipts/XX-GZ-001/FIFTH-DOMAIN-LINK-CURRENT.json", + )?, + module_registry: read_remote_json("/opt/guanghu/protocol/current/module-registry.json")?, + update_authority: read_remote_json("/opt/guanghu/protocol/current/update-authority.json")?, + channel: read_remote_json("/opt/guanghu/protocol/current/xiaoxin-channel.json")?, + code_channel: serde_json::json!({ + "version": serde_json::from_str::(&code_version) + .map_err(|error| format!("CODE_CHANNEL_VERSION_INVALID:{error}"))?, + "repositories": serde_json::from_str::(&repository_search) + .map_err(|error| format!("CODE_CHANNEL_REPOSITORIES_INVALID:{error}"))? + }), + }) +} + +fn channel_file(kind: &str) -> Result<(&'static str, &'static str), String> { + match kind { + "document" => Ok(("teacher-training-plan.md", "GH-EDU-OFFICE-DOC-001")), + "sheet" => Ok(("teacher-training-data.csv", "GH-EDU-OFFICE-SHEET-001")), + _ => Err(format!("UNREGISTERED_CHANNEL_FILE:{kind}")), + } +} + +#[tauri::command] +fn read_channel_file(kind: String) -> Result { + let (filename, _) = channel_file(&kind)?; + ssh_output(&format!( + "path='{CHANNEL_ROOT}/documents/{filename}'; if [ -f \"$path\" ]; then cat \"$path\"; fi" + )) +} + +#[tauri::command] +fn save_channel_file(kind: String, content: String) -> Result { + let (filename, module_id) = channel_file(&kind)?; + let path = format!("{CHANNEL_ROOT}/documents/{filename}"); + let receipt = format!("{CHANNEL_ROOT}/receipts/{kind}-CURRENT.json"); + let remote_command = format!( + "set -eu; \ + install -d -m 700 '{CHANNEL_ROOT}/documents' '{CHANNEL_ROOT}/receipts'; \ + path='{path}'; tmp=\"${{path}}.tmp.$$\"; umask 077; cat > \"$tmp\"; mv \"$tmp\" \"$path\"; \ + sha=$(sha256sum \"$path\" | awk '{{print $1}}'); \ + now=$(date -u +%Y-%m-%dT%H:%M:%SZ); \ + receipt='{receipt}'; rtmp=\"${{receipt}}.tmp.$$\"; \ + printf '{{\"schema\":\"guanghu.channel-write-receipt/v1\",\"channelId\":\"GH-EDU-CHANNEL-XX-001\",\"nodeId\":\"XX-GZ-001\",\"moduleId\":\"{module_id}\",\"kind\":\"{kind}\",\"sha256\":\"%s\",\"writtenAt\":\"%s\",\"state\":\"PASS_100\"}}\\n' \"$sha\" \"$now\" > \"$rtmp\"; \ + mv \"$rtmp\" \"$receipt\"; cat \"$receipt\"" + ); + + let mut child = Command::new("/usr/bin/ssh") + .args([ + "-o", + "BatchMode=yes", + "-o", + "ConnectTimeout=10", + NODE_ALIAS, + &remote_command, + ]) + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn() + .map_err(|error| format!("SSH_SAVE_LAUNCH_FAILED:{error}"))?; + + child + .stdin + .take() + .ok_or_else(|| "SSH_SAVE_STDIN_UNAVAILABLE".to_string())? + .write_all(content.as_bytes()) + .map_err(|error| format!("SSH_SAVE_WRITE_FAILED:{error}"))?; + + let output = child + .wait_with_output() + .map_err(|error| format!("SSH_SAVE_WAIT_FAILED:{error}"))?; + if !output.status.success() { + return Err(format!( + "SSH_SAVE_REMOTE_FAILED:{}", + String::from_utf8_lossy(&output.stderr).trim() + )); + } + + serde_json::from_slice(&output.stdout) + .map_err(|error| format!("SSH_SAVE_RECEIPT_INVALID:{error}")) +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .invoke_handler(tauri::generate_handler![ + connect_channel, + read_channel_file, + save_channel_file + ]) + .run(tauri::generate_context!()) + .expect("failed to run Guanghu Education Subdomain OS"); +} diff --git a/product-source/guanghu-education-industry-os/src-tauri/src/main.rs b/product-source/guanghu-education-industry-os/src-tauri/src/main.rs new file mode 100644 index 0000000..1fb1e3f --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/src/main.rs @@ -0,0 +1,5 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + guanghu_education_industry_os::run(); +} diff --git a/product-source/guanghu-education-industry-os/src-tauri/tauri.conf.json b/product-source/guanghu-education-industry-os/src-tauri/tauri.conf.json new file mode 100644 index 0000000..fbb43da --- /dev/null +++ b/product-source/guanghu-education-industry-os/src-tauri/tauri.conf.json @@ -0,0 +1,36 @@ +{ + "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", + "productName": "光湖分域 · 教育", + "version": "0.2.0", + "identifier": "com.guanghulab.subdomain.education", + "build": { + "frontendDist": "../dist", + "devUrl": "http://127.0.0.1:5216", + "beforeDevCommand": "npm run dev", + "beforeBuildCommand": "npm run build" + }, + "app": { + "macOSPrivateApi": true, + "windows": [{ + "label": "main", + "title": "光湖分域 · 教育", + "width": 1440, + "height": 900, + "minWidth": 980, + "minHeight": 680, + "resizable": true, + "fullscreen": false, + "titleBarStyle": "Overlay", + "trafficLightPosition": { "x": 18, "y": 20 }, + "hiddenTitle": true, + "backgroundColor": "#06101A" + }], + "security": { "csp": "default-src 'self' ipc: http://ipc.localhost; style-src 'self' 'unsafe-inline'; img-src 'self' data: asset: http://asset.localhost" } + }, + "bundle": { + "active": true, + "targets": ["app"], + "category": "Productivity", + "icon": ["icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.icns"] + } +} diff --git a/product-source/guanghu-education-industry-os/src/App.tsx b/product-source/guanghu-education-industry-os/src/App.tsx new file mode 100644 index 0000000..7855a63 --- /dev/null +++ b/product-source/guanghu-education-industry-os/src/App.tsx @@ -0,0 +1,336 @@ +import { invoke } from '@tauri-apps/api/core' +import { useMemo, useState } from 'react' +import { + bundledModules, + parseSheetMetrics, + routeInstruction, + type InstructionRoute, + type ModuleEntry, + type Surface, +} from './core/guanghuKernel' + +type JsonRecord = Record + +type ChannelSnapshot = { + node: JsonRecord + fifthDomainLink: JsonRecord + moduleRegistry: { modules?: ModuleEntry[] } + updateAuthority: JsonRecord + channel: JsonRecord & { mountedModules?: string[] } + codeChannel: { + version?: { version?: string } + repositories?: { data?: unknown[] } + } +} + +type SaveReceipt = { + channelId: string + moduleId: string + sha256: string + writtenAt: string + state: string +} + +const defaultDocument = `# 高中项目师训工作三年专项规划(2026—2029) + +## 第一阶段:攻坚筑基 + +- 建立全职导师试点和导师工时保障机制 +- 形成新师培训、质控、留存三条可量化工作线 +- 将责任人、时间节点和复盘回执写入同一个工作频道 + +## 第二阶段:提质增效 + +- 双轨培养与分层培训 +- 教研训一体化 +- 质控联动闭环与预警 + +## 第三阶段:深耕塑牌 + +- 沉淀可复制的高中项目师训模块 +- 形成跨项目可装配的教育行业能力包 +` + +const defaultSheet = `教师,培养进度 +孙雨桐,72 +周子航,65 +吴佳怡,58 +郑思远,42 +林晓彤,38` + +const navigation: Array<{ id: Surface; label: string; mark: string }> = [ + { id: 'channel', label: '我的频道', mark: '湖' }, + { id: 'document', label: '智能文档', mark: '文' }, + { id: 'sheet', label: '智能表格', mark: '表' }, + { id: 'dashboard', label: '图表与仪表盘', mark: '图' }, + { id: 'modules', label: '教育模块库', mark: '件' }, + { id: 'brain', label: '人格体脑区', mark: '脑' }, + { id: 'receipts', label: '执行回执', mark: '证' }, +] + +function LakeMark() { + return +} + +function LoginGate({ + error, + loading, + onConnect, +}: { + error: string + loading: boolean + onConnect: () => void +}) { + return

+
+
+ +

光湖分域 · 教育行业

+

进入自己的初始化频道

+ 身份由个人服务器校验,当前设备只负责交互和呈现。 + + {error &&
{error}
} +
+ 后续登录接口 + + +
+
不依赖腾讯云在线终端 · 不向服务器部署源码
+
+
+} + +function StatusCard({ label, value, detail, tone = 'green' }: { + label: string + value: string + detail: string + tone?: 'green' | 'blue' | 'amber' +}) { + return
+ {label}{value}{detail} +
+} + +function ChannelHome({ snapshot, modules }: { snapshot: ChannelSnapshot; modules: ModuleEntry[] }) { + const live = modules.filter((module) => module.state === 'LIVE_STAGE_1').length + const mounted = snapshot.channel.mountedModules?.length ?? 0 + const repositoryCount = snapshot.codeChannel.repositories?.data?.length ?? 0 + return
+
+

GH-EDU-CHANNEL-XX-001

+

小新 · 高中项目师训

+ 这是教育行业操作系统里的第一个初始化频道模板,不是整个产品的边界。 +
+
+ + + + +
+
+
+

本频道第一批真实工作

来自小新需求记录
+
    +
  • 01三年专项规划培训、质控、留存三条工作线
  • +
  • 02导师工时冲突春秋排课错配、身兼两职、管理无抓手
  • +
  • 03新师转正内容海报标题、寄语与群内文案
  • +
+
+
+

装配规则

光湖是主控上游
+
+

外部软件只拆零件,不整体接入

+

服务器只接发行物,不保存产品源码

+

保存动作必须返回服务器回执

+

预登记不等于已经可以使用

+
+
+
+
+} + +function ServerEditor({ + kind, + value, + onChange, + onSave, + saving, +}: { + kind: 'document' | 'sheet' + value: string + onChange: (value: string) => void + onSave: () => void + saving: boolean +}) { + return
+
+

{kind === 'document' ? 'GH-EDU-OFFICE-DOC-001' : 'GH-EDU-OFFICE-SHEET-001'}

+

{kind === 'document' ? '智能文档' : '智能表格数据'}

+ 内容直接读写小新服务器,不保存在浏览器本地。
+ +
+