diff --git a/.github/workflows/_build.yml b/.github/workflows/_build.yml
index e1c749c5..eaa23bad 100644
--- a/.github/workflows/_build.yml
+++ b/.github/workflows/_build.yml
@@ -116,96 +116,11 @@ jobs:
uv run --with "setuptools>=69" --with "wheel>=0.43" python setup.py bdist_wheel
fi
- # This deliberately runs the packaged console script outside this
- # checkout. It exercises the wheel's bundled Rust binary and frontend,
- # rather than development fallbacks such as CARGO_MANIFEST_DIR.
+ # Installs the wheel into a fresh venv and runs the packaged console
+ # script outside this checkout, in the shipped viewer.
- name: Smoke test installed wheel in shipped viewer
if: inputs.wheel-smoke
- run: |
- set -euo pipefail
- SMOKE_ROOT="$RUNNER_TEMP/fastled-wheel-smoke"
- rm -rf "$SMOKE_ROOT"
- mkdir -p "$SMOKE_ROOT/home" "$SMOKE_ROOT/sketch/data" "$SMOKE_ROOT/artifacts" "$SMOKE_ROOT/asset-origin"
- uv venv "$SMOKE_ROOT/venv" --python "$UV_PYTHON"
- uv pip install --python "$SMOKE_ROOT/venv/bin/python" dist/*.whl
- test -x "$SMOKE_ROOT/venv/bin/uv"
- BASE_PYTHON_DIR="$("$SMOKE_ROOT/venv/bin/python" -c 'from pathlib import Path; import sys; print(Path(sys.executable).resolve().parent)')"
- test ! -e "$BASE_PYTHON_DIR/uv"
- cp -R "$GITHUB_WORKSPACE/tests/fixtures/wasm_vfs/." "$SMOKE_ROOT/sketch/"
- cp "$GITHUB_WORKSPACE/tests/fixtures/wasm_vfs_origin/probe.txt" "$SMOKE_ROOT/asset-origin/probe.txt"
- cat > "$SMOKE_ROOT/sketch/data/probe.txt.lnk" <<'EOF'
- http://127.0.0.1:18765/probe.txt
- sha256=2da77f7c1452125633beeeb43f366350018643c799306b4d24d8610d98f02b55
- size_bytes=15
- storage=vfs
- EOF
- cat > "$SMOKE_ROOT/asset_server.py" <<'PY'
- import http.server
- import sys
-
- class Handler(http.server.SimpleHTTPRequestHandler):
- def end_headers(self):
- self.send_header("Access-Control-Allow-Origin", "*")
- self.send_header("Cross-Origin-Resource-Policy", "cross-origin")
- super().end_headers()
-
- def log_message(self, *_args):
- pass
-
- handler = lambda *args, **kwargs: Handler(*args, directory=sys.argv[1], **kwargs)
- http.server.ThreadingHTTPServer(("127.0.0.1", 18765), handler).serve_forever()
- PY
- "$SMOKE_ROOT/venv/bin/python" "$SMOKE_ROOT/asset_server.py" "$SMOKE_ROOT/asset-origin" &
- ASSET_SERVER_PID=$!
- trap 'kill "$ASSET_SERVER_PID" 2>/dev/null || true' EXIT
- for _attempt in {1..20}; do
- if curl --fail --silent http://127.0.0.1:18765/probe.txt >/dev/null; then break; fi
- sleep 0.25
- done
- curl --fail --silent http://127.0.0.1:18765/probe.txt >/dev/null
-
- # The installed launcher must supply absolute wheel-venv uv, Python,
- # and frontend paths to the Rust binary. Deliberately omit ambient
- # uv, node, and bare python so this cannot accidentally pass by
- # resolving a developer tool from the runner image.
- cd "$SMOKE_ROOT"
- env -i \
- HOME="$SMOKE_ROOT/home" \
- PATH="/usr/bin:/bin:/usr/sbin:/sbin" \
- /bin/bash -ceu '
- for tool in uv node python; do
- if command -v "$tool" >/dev/null 2>&1; then
- echo "unexpected ambient $tool on restricted PATH" >&2
- exit 1
- fi
- done
- '
- env -i \
- HOME="$SMOKE_ROOT/home" \
- PATH="/usr/bin:/bin:/usr/sbin:/sbin" \
- "$SMOKE_ROOT/venv/bin/fastled" "$SMOKE_ROOT/sketch" \
- --check \
- --test-wait-secs=2 \
- --test-timeout-secs=240 \
- --test-ready-timeout-secs=45 \
- --test-screenshot="$SMOKE_ROOT/artifacts/screenmap.png" \
- --test-log="$SMOKE_ROOT/artifacts/viewer.log"
- grep -F "Asset 'data/probe.txt' sha256 verified" "$SMOKE_ROOT/artifacts/viewer.log"
- grep -F "All 1 filesystem asset(s) loaded completely before setup()." "$SMOKE_ROOT/artifacts/viewer.log"
- "$SMOKE_ROOT/venv/bin/python" - "$SMOKE_ROOT/artifacts/screenmap.png" <<'PY'
- from pathlib import Path
- import sys
-
- image = Path(sys.argv[1]).read_bytes()
- if image[:8] != b"\x89PNG\r\n\x1a\n":
- raise SystemExit("viewer screenshot is not a PNG")
- if image[12:16] != b"IHDR" or len(image) < 24:
- raise SystemExit("viewer screenshot is missing its IHDR header")
- width = int.from_bytes(image[16:20], "big")
- height = int.from_bytes(image[20:24], "big")
- if width <= 0 or height <= 0:
- raise SystemExit(f"viewer screenshot has invalid dimensions: {width}x{height}")
- PY
+ run: bash ci/smoke_installed_wheel.sh
- name: Upload installed wheel viewer screenshot
if: always() && inputs.wheel-smoke
diff --git a/.github/workflows/macos-arm-build.yml b/.github/workflows/macos-arm-build.yml
index 3073b887..a14df090 100644
--- a/.github/workflows/macos-arm-build.yml
+++ b/.github/workflows/macos-arm-build.yml
@@ -3,7 +3,8 @@ name: macOS ARM Build
on:
push:
branches: [main]
- pull_request:
+ # Pull requests run macos-arm-live-test.yml instead: it cross-compiles on
+ # Linux and holds a macOS runner only to execute the result.
workflow_dispatch:
# One live run per workflow per ref: a new push to a branch or PR cancels the
diff --git a/.github/workflows/macos-arm-integration-test.yml b/.github/workflows/macos-arm-integration-test.yml
index d32d9f0c..7d818969 100644
--- a/.github/workflows/macos-arm-integration-test.yml
+++ b/.github/workflows/macos-arm-integration-test.yml
@@ -3,7 +3,8 @@ name: macOS ARM Integration Test
on:
push:
branches: [main]
- pull_request:
+ # Pull requests run macos-arm-live-test.yml instead: it cross-compiles on
+ # Linux and holds a macOS runner only to execute the result.
workflow_dispatch:
# One live run per workflow per ref: a new push to a branch or PR cancels the
diff --git a/.github/workflows/macos-arm-lint.yml b/.github/workflows/macos-arm-lint.yml
index df737e7f..aa3bf385 100644
--- a/.github/workflows/macos-arm-lint.yml
+++ b/.github/workflows/macos-arm-lint.yml
@@ -3,7 +3,8 @@ name: macOS ARM Lint
on:
push:
branches: [main]
- pull_request:
+ # Pull requests run macos-arm-live-test.yml instead: it cross-compiles on
+ # Linux and holds a macOS runner only to execute the result.
workflow_dispatch:
# One live run per workflow per ref: a new push to a branch or PR cancels the
diff --git a/.github/workflows/macos-arm-live-test.yml b/.github/workflows/macos-arm-live-test.yml
new file mode 100644
index 00000000..e37a16ed
--- /dev/null
+++ b/.github/workflows/macos-arm-live-test.yml
@@ -0,0 +1,161 @@
+name: macOS ARM Live Test
+
+# Apple Silicon coverage for pull requests without compiling on a Mac.
+#
+# `cross-build` produces everything on Linux through Soldr's cross toolchain
+# (bundled LLVM plus the managed macOS SDK):
+# - the release `fastled` binary,
+# - the macOS wheel that bundles it,
+# - a nextest archive of the workspace's Rust tests.
+#
+# `run-on-macos` holds the macos-15 runner only to execute them:
+# - the Rust test archive,
+# - the installed wheel's live render in the shipped WKWebView viewer,
+# - a real Safari smoke test of the same compiled sketch.
+#
+# The native macOS build/lint/test workflows no longer run on pull requests;
+# they still run on main pushes and manual dispatch.
+# #251 tracks moving the execution into a docker-mac-x64 guest on Linux.
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ workflow_dispatch:
+
+# One live run per workflow per ref: a new push to a branch or PR cancels the
+# superseded run instead of queuing behind it in the shared account-wide runner
+# pool. Runs on main get a unique group, so they are never cancelled or coalesced.
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.ref }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
+
+env:
+ RUST_TARGET: aarch64-apple-darwin
+ TEST_ARCHIVE: fastled-macos-arm64-tests.tar.zst
+
+jobs:
+ cross-build:
+ runs-on: ubuntu-latest
+ timeout-minutes: 45
+ defaults:
+ run:
+ shell: bash
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: astral-sh/setup-uv@v5
+ with:
+ enable-cache: true
+ python-version: "3.11.9"
+
+ - name: Install Python
+ run: uv python install "$UV_PYTHON"
+
+ # Same pin as kernal-api's Apple cross lanes. It installs a current
+ # Soldr with `soldr build --target` and the managed macOS SDK; the
+ # v0.9.62 action used elsewhere here pins Soldr 0.7.51 (see #158),
+ # which has neither.
+ - uses: zackees/setup-soldr@bb28e96d2dc32c058242f56722297caf1efcbd90
+ env:
+ GITHUB_TOKEN: ${{ github.token }}
+ with:
+ cache-key-suffix: macos-arm-live-cross
+ cross-targets: aarch64-apple-darwin
+ toolchain-file: rust-toolchain.toml
+ prebuild-deps-flags: ""
+
+ # setup.py always rebuilds the bundled binary with
+ # `soldr cargo build --release --bin fastled [--target $FASTLED_RUST_TARGET]`.
+ # Build with exactly that command first so its rebuild is a no-op. The
+ # explicit target also keeps host build scripts on the host linker.
+ - name: Cross-build the release fastled binary
+ run: soldr cargo build --release --bin fastled --target "$RUST_TARGET"
+
+ - name: Package the macOS wheel
+ env:
+ FASTLED_RUST_TARGET: ${{ env.RUST_TARGET }}
+ run: |
+ uv run --with "setuptools>=69" --with "wheel>=0.43" python setup.py bdist_wheel --plat-name macosx_11_0_arm64
+ # The bundled binary must be an arm64 Mach-O, not a host binary.
+ test "$(od -A n -t x1 -N 8 src/fastled/bin/fastled | tr -d ' \n')" = "cffaedfe0c000001"
+ ls -l dist/
+
+ - name: Archive the Rust tests for macOS
+ run: soldr cargo nextest archive --workspace --target "$RUST_TARGET" --archive-file "$TEST_ARCHIVE"
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: macos-arm-live-inputs
+ path: |
+ dist/*.whl
+ ${{ env.TEST_ARCHIVE }}
+ if-no-files-found: error
+ retention-days: 1
+
+ run-on-macos:
+ needs: cross-build
+ runs-on: macos-15
+ timeout-minutes: 40
+ defaults:
+ run:
+ shell: bash
+ env:
+ PYTHONIOENCODING: utf-8
+ steps:
+ # The checkout provides the test fixtures and smoke scripts, and the
+ # workspace the test archive is remapped onto. Nothing is compiled.
+ - uses: actions/checkout@v4
+
+ - uses: astral-sh/setup-uv@v5
+ with:
+ enable-cache: true
+ python-version: "3.11.9"
+
+ - name: Install Python
+ run: uv python install "$UV_PYTHON"
+
+ - uses: actions/download-artifact@v4
+ with:
+ name: macos-arm-live-inputs
+ path: macos-arm-live-inputs
+
+ - name: Install cargo-nextest
+ run: |
+ mkdir -p "$HOME/.cargo/bin"
+ curl -LsSf https://get.nexte.st/latest/mac | tar zxf - -C "$HOME/.cargo/bin"
+ echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
+
+ - name: Run the cross-built Rust tests
+ # The frontend path is compiled in from the Linux builder
+ # (CARGO_MANIFEST_DIR); FASTLED_FRONTEND_DIR points tests at this
+ # checkout instead, the same override the installed wheel uses.
+ env:
+ FASTLED_FRONTEND_DIR: ${{ github.workspace }}/src/fastled/frontend
+ run: >-
+ cargo-nextest nextest run
+ --archive-file "macos-arm-live-inputs/$TEST_ARCHIVE"
+ --workspace-remap .
+
+ # The render and Safari checks still run when a Rust test fails, so one
+ # cycle reports every macOS result.
+ - name: Enable Safari automation
+ if: ${{ !cancelled() }}
+ run: sudo safaridriver --enable
+
+ - name: Live viewer render and Safari smoke of the installed wheel
+ if: ${{ !cancelled() }}
+ env:
+ FASTLED_SAFARI_SMOKE: "1"
+ run: |
+ mkdir -p dist
+ cp macos-arm-live-inputs/dist/*.whl dist/
+ bash ci/smoke_installed_wheel.sh
+
+ - name: Upload screenshots, logs and Safari state
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: macos-arm-live-results
+ path: ${{ runner.temp }}/fastled-wheel-smoke/artifacts/
+ if-no-files-found: warn
diff --git a/.github/workflows/macos-arm-unit-test.yml b/.github/workflows/macos-arm-unit-test.yml
index 34fa348c..ccbad0c6 100644
--- a/.github/workflows/macos-arm-unit-test.yml
+++ b/.github/workflows/macos-arm-unit-test.yml
@@ -3,7 +3,8 @@ name: macOS ARM Unit Test
on:
push:
branches: [main]
- pull_request:
+ # Pull requests run macos-arm-live-test.yml instead: it cross-compiles on
+ # Linux and holds a macOS runner only to execute the result.
workflow_dispatch:
# One live run per workflow per ref: a new push to a branch or PR cancels the
diff --git a/.github/workflows/macos-x86-build.yml b/.github/workflows/macos-x86-build.yml
index 69a7448d..76c84b2d 100644
--- a/.github/workflows/macos-x86-build.yml
+++ b/.github/workflows/macos-x86-build.yml
@@ -3,7 +3,8 @@ name: macOS x86 Build
on:
push:
branches: [main]
- pull_request:
+ # Pull requests run macos-arm-live-test.yml instead: it cross-compiles on
+ # Linux and holds a macOS runner only to execute the result.
workflow_dispatch:
# One live run per workflow per ref: a new push to a branch or PR cancels the
diff --git a/.github/workflows/macos-x86-integration-test.yml b/.github/workflows/macos-x86-integration-test.yml
index 0eb88dc6..a41fc143 100644
--- a/.github/workflows/macos-x86-integration-test.yml
+++ b/.github/workflows/macos-x86-integration-test.yml
@@ -3,7 +3,8 @@ name: macOS x86 Integration Test
on:
push:
branches: [main]
- pull_request:
+ # Pull requests run macos-arm-live-test.yml instead: it cross-compiles on
+ # Linux and holds a macOS runner only to execute the result.
workflow_dispatch:
# One live run per workflow per ref: a new push to a branch or PR cancels the
diff --git a/.github/workflows/macos-x86-lint.yml b/.github/workflows/macos-x86-lint.yml
index 7a23585a..e6334e16 100644
--- a/.github/workflows/macos-x86-lint.yml
+++ b/.github/workflows/macos-x86-lint.yml
@@ -3,7 +3,8 @@ name: macOS x86 Lint
on:
push:
branches: [main]
- pull_request:
+ # Pull requests run macos-arm-live-test.yml instead: it cross-compiles on
+ # Linux and holds a macOS runner only to execute the result.
workflow_dispatch:
# One live run per workflow per ref: a new push to a branch or PR cancels the
diff --git a/.github/workflows/macos-x86-unit-test.yml b/.github/workflows/macos-x86-unit-test.yml
index 548cc0b8..90d5f851 100644
--- a/.github/workflows/macos-x86-unit-test.yml
+++ b/.github/workflows/macos-x86-unit-test.yml
@@ -3,7 +3,8 @@ name: macOS x86 Unit Test
on:
push:
branches: [main]
- pull_request:
+ # Pull requests run macos-arm-live-test.yml instead: it cross-compiles on
+ # Linux and holds a macOS runner only to execute the result.
workflow_dispatch:
# One live run per workflow per ref: a new push to a branch or PR cancels the
diff --git a/Cargo.lock b/Cargo.lock
index 8705f7b5..5a3f0af5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -28,21 +28,6 @@ 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.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
-dependencies = [
- "alloc-no-stdlib",
-]
-
[[package]]
name = "android_system_properties"
version = "0.1.5"
@@ -117,12 +102,6 @@ dependencies = [
"derive_arbitrary",
]
-[[package]]
-name = "arrayref"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
-
[[package]]
name = "arrayvec"
version = "0.7.8"
@@ -164,61 +143,6 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
-[[package]]
-name = "axum"
-version = "0.8.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8"
-dependencies = [
- "axum-core",
- "base64 0.22.1",
- "bytes",
- "form_urlencoded",
- "futures-util",
- "http",
- "http-body",
- "http-body-util",
- "hyper",
- "hyper-util",
- "itoa",
- "matchit",
- "memchr",
- "mime",
- "percent-encoding",
- "pin-project-lite",
- "serde_core",
- "serde_json",
- "serde_path_to_error",
- "serde_urlencoded",
- "sha1",
- "sync_wrapper",
- "tokio",
- "tokio-tungstenite",
- "tower",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "axum-core"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1"
-dependencies = [
- "bytes",
- "futures-core",
- "http",
- "http-body",
- "http-body-util",
- "mime",
- "pin-project-lite",
- "sync_wrapper",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
[[package]]
name = "base64"
version = "0.21.7"
@@ -231,12 +155,6 @@ version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
-[[package]]
-name = "beef"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1"
-
[[package]]
name = "bit-set"
version = "0.8.0"
@@ -269,11 +187,10 @@ dependencies = [
[[package]]
name = "blake3"
-version = "1.8.5"
+version = "1.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce"
+checksum = "6d9e454fc11f76977dc803893aff6304ed33d6a26efae8696573bea74baa27ae"
dependencies = [
- "arrayref",
"arrayvec",
"cc",
"cfg-if",
@@ -300,27 +217,6 @@ dependencies = [
"objc2",
]
-[[package]]
-name = "brotli"
-version = "8.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
-dependencies = [
- "alloc-no-stdlib",
- "alloc-stdlib",
- "brotli-decompressor",
-]
-
-[[package]]
-name = "brotli-decompressor"
-version = "5.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
-dependencies = [
- "alloc-no-stdlib",
- "alloc-stdlib",
-]
-
[[package]]
name = "bstr"
version = "1.12.3"
@@ -351,9 +247,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
-version = "1.11.1"
+version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
+checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
dependencies = [
"serde",
]
@@ -431,7 +327,7 @@ dependencies = [
"semver",
"serde",
"serde_json",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
]
[[package]]
@@ -524,7 +420,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351"
dependencies = [
"clap_builder",
- "clap_derive",
]
[[package]]
@@ -539,18 +434,6 @@ dependencies = [
"strsim",
]
-[[package]]
-name = "clap_derive"
-version = "4.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a"
-dependencies = [
- "heck 0.5.0",
- "proc-macro2",
- "quote",
- "syn 2.0.117",
-]
-
[[package]]
name = "clap_lex"
version = "1.1.0"
@@ -585,12 +468,6 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"
-[[package]]
-name = "convert_case"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
-
[[package]]
name = "cookie"
version = "0.18.1"
@@ -601,16 +478,6 @@ dependencies = [
"version_check",
]
-[[package]]
-name = "core-foundation"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
[[package]]
name = "core-foundation"
version = "0.10.1"
@@ -634,7 +501,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97"
dependencies = [
"bitflags 2.11.0",
- "core-foundation 0.10.1",
+ "core-foundation",
"core-graphics-types",
"foreign-types 0.5.0",
"libc",
@@ -647,7 +514,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
dependencies = [
"bitflags 2.11.0",
- "core-foundation 0.10.1",
+ "core-foundation",
"libc",
]
@@ -669,30 +536,6 @@ dependencies = [
"libc",
]
-[[package]]
-name = "crash-context"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "031ed29858d90cfdf27fe49fae28028a1f20466db97962fa2f4ea34809aeebf3"
-dependencies = [
- "cfg-if",
- "libc",
- "mach2",
-]
-
-[[package]]
-name = "crash-handler"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2066907075af649bcb8bcb1b9b986329b243677e6918b2d920aa64b0aac5ace3"
-dependencies = [
- "cfg-if",
- "crash-context",
- "libc",
- "mach2",
- "parking_lot",
-]
-
[[package]]
name = "crc"
version = "3.4.0"
@@ -773,31 +616,6 @@ version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
-[[package]]
-name = "crossterm"
-version = "0.28.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6"
-dependencies = [
- "bitflags 2.11.0",
- "crossterm_winapi",
- "mio",
- "parking_lot",
- "rustix 0.38.44",
- "signal-hook",
- "signal-hook-mio",
- "winapi",
-]
-
-[[package]]
-name = "crossterm_winapi"
-version = "0.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
-dependencies = [
- "winapi",
-]
-
[[package]]
name = "crypto-common"
version = "0.1.7"
@@ -810,31 +628,27 @@ dependencies = [
[[package]]
name = "cssparser"
-version = "0.29.6"
+version = "0.36.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa"
+checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2"
dependencies = [
- "cssparser-macros",
+ "cssparser-macros 0.6.1",
"dtoa-short",
"itoa",
- "matches",
- "phf 0.10.1",
- "proc-macro2",
- "quote",
+ "phf",
"smallvec",
- "syn 1.0.109",
]
[[package]]
name = "cssparser"
-version = "0.36.0"
+version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2"
+checksum = "8c9cdaae01d5ed7882b04d795e7f752f46ff52d2fa3b50a20d28c464510bba98"
dependencies = [
- "cssparser-macros",
+ "cssparser-macros 0.7.1",
"dtoa-short",
"itoa",
- "phf 0.13.1",
+ "phf",
"smallvec",
]
@@ -849,27 +663,31 @@ dependencies = [
]
[[package]]
-name = "ctcb-core"
-version = "0.4.1"
+name = "cssparser-macros"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6d666d682b69add1b1bea317cb3184018f21a0ff95f3a9d1b44887bd5b01961"
+checksum = "d045de693cb712d0b22c6a64be5b953f67b3ce00ab5ad3dd5d8b441886ab8e1a"
dependencies = [
- "anyhow",
- "serde",
- "serde_json",
- "thiserror 2.0.18",
+ "quote",
+ "syn 3.0.5",
]
[[package]]
name = "ctor"
-version = "0.2.9"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
+checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98"
dependencies = [
- "quote",
- "syn 2.0.117",
+ "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"
@@ -937,19 +755,6 @@ dependencies = [
"syn 2.0.117",
]
-[[package]]
-name = "derive_more"
-version = "0.99.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f"
-dependencies = [
- "convert_case",
- "proc-macro2",
- "quote",
- "rustc_version",
- "syn 2.0.117",
-]
-
[[package]]
name = "derive_more"
version = "2.1.1"
@@ -982,34 +787,22 @@ dependencies = [
"subtle",
]
-[[package]]
-name = "dirs"
-version = "5.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
-dependencies = [
- "dirs-sys 0.4.1",
-]
-
[[package]]
name = "dirs"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
dependencies = [
- "dirs-sys 0.5.0",
+ "dirs-sys",
]
[[package]]
-name = "dirs-sys"
-version = "0.4.1"
+name = "dirs"
+version = "7.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+checksum = "8d57d423b3c82e89b9a24ca3091fee61f456a26edbd28d26c65906f4bc1dcd8f"
dependencies = [
- "libc",
- "option-ext",
- "redox_users 0.4.6",
- "windows-sys 0.48.0",
+ "dirs-sys",
]
[[package]]
@@ -1020,8 +813,8 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
dependencies = [
"libc",
"option-ext",
- "redox_users 0.5.2",
- "windows-sys 0.59.0",
+ "redox_users",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -1070,12 +863,6 @@ dependencies = [
"syn 2.0.117",
]
-[[package]]
-name = "doctest-file"
-version = "1.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2db04e74f0a9a93103b50e90b96024c9b2bdca8bce6a632ec71b88736d3d359"
-
[[package]]
name = "dom_query"
version = "0.27.0"
@@ -1084,11 +871,26 @@ checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89"
dependencies = [
"bit-set",
"cssparser 0.36.0",
- "foldhash 0.2.0",
+ "foldhash",
"html5ever 0.38.0",
"precomputed-hash",
"selectors 0.36.1",
- "tendril 0.5.0",
+ "tendril",
+]
+
+[[package]]
+name = "dom_query"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fac5fca71e65e94cc718a6e2af65d6e0f9c6027751c2aa562fbb5087fda639bc"
+dependencies = [
+ "bit-set",
+ "cssparser 0.37.0",
+ "foldhash",
+ "html5ever 0.39.0",
+ "precomputed-hash",
+ "selectors 0.38.0",
+ "tendril",
]
[[package]]
@@ -1121,6 +923,21 @@ 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"
@@ -1141,14 +958,14 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "embed-resource"
-version = "3.0.8"
+version = "3.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63a1d0de4f2249aa0ff5884d7080814f446bb241a559af6c170a41e878ed2d45"
+checksum = "fbfdaacccebec3b28e4866b8973543c7647797db5ada1bdab552e48fe665fbbd"
dependencies = [
"cc",
"memchr",
"rustc_version",
- "toml 0.9.12+spec-1.1.0",
+ "toml 1.1.2+spec-1.1.0",
"vswhom",
"winreg 0.55.0",
]
@@ -1159,15 +976,6 @@ version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
-[[package]]
-name = "encoding_rs"
-version = "0.8.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
-dependencies = [
- "cfg-if",
-]
-
[[package]]
name = "equivalent"
version = "1.0.2"
@@ -1192,50 +1000,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "fastled-cli"
version = "2.0.20"
dependencies = [
- "anyhow",
- "axum",
- "clap",
- "crossterm",
- "ctcb-core",
- "dirs 5.0.1",
- "flate2",
- "fs2",
- "getrandom 0.3.4",
- "globset",
- "gtk",
- "indexmap 1.9.3",
- "libc",
- "notify",
- "portable-pty",
- "reqwest 0.12.28",
- "running-process",
- "serde",
- "serde_json",
- "sha2",
- "shell-words",
- "strsim",
- "tar",
- "tauri",
- "tauri-build",
- "tempfile",
- "tokio",
- "tokio-stream",
- "toml 0.8.2",
- "tower-http",
- "tree-sitter",
- "tree-sitter-cpp",
- "webkit2gtk",
- "windows-sys 0.61.2",
- "zccache-fingerprint",
- "zip",
- "zstd",
+ "kernal-api",
]
[[package]]
@@ -1291,12 +1063,6 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
-[[package]]
-name = "fixedbitset"
-version = "0.5.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99"
-
[[package]]
name = "flate2"
version = "1.1.9"
@@ -1313,12 +1079,6 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-[[package]]
-name = "foldhash"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
-
[[package]]
name = "foldhash"
version = "0.2.0"
@@ -1376,16 +1136,6 @@ dependencies = [
"percent-encoding",
]
-[[package]]
-name = "fs2"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
-dependencies = [
- "libc",
- "winapi",
-]
-
[[package]]
name = "fsevent-sys"
version = "4.1.0"
@@ -1396,30 +1146,19 @@ dependencies = [
]
[[package]]
-name = "futf"
-version = "0.1.5"
+name = "futures-channel"
+version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
-dependencies = [
- "mac",
- "new_debug_unreachable",
-]
-
-[[package]]
-name = "futures-channel"
-version = "0.3.32"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
+checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
dependencies = [
"futures-core",
- "futures-sink",
]
[[package]]
name = "futures-core"
-version = "0.3.32"
+version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
+checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
[[package]]
name = "futures-executor"
@@ -1434,38 +1173,38 @@ dependencies = [
[[package]]
name = "futures-io"
-version = "0.3.32"
+version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
+checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed"
[[package]]
name = "futures-macro"
-version = "0.3.32"
+version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
+checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.117",
+ "syn 3.0.5",
]
[[package]]
name = "futures-sink"
-version = "0.3.32"
+version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
+checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d"
[[package]]
name = "futures-task"
-version = "0.3.32"
+version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
+checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
[[package]]
name = "futures-util"
-version = "0.3.32"
+version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
+checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
dependencies = [
"futures-core",
"futures-io",
@@ -1477,15 +1216,6 @@ dependencies = [
"slab",
]
-[[package]]
-name = "fxhash"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
-dependencies = [
- "byteorder",
-]
-
[[package]]
name = "gdk"
version = "0.18.2"
@@ -1558,33 +1288,6 @@ dependencies = [
"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"
@@ -1595,17 +1298,6 @@ dependencies = [
"version_check",
]
-[[package]]
-name = "getrandom"
-version = "0.1.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi 0.9.0+wasi-snapshot-preview1",
-]
-
[[package]]
name = "getrandom"
version = "0.2.17"
@@ -1614,7 +1306,7 @@ checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
dependencies = [
"cfg-if",
"libc",
- "wasi 0.11.1+wasi-snapshot-preview1",
+ "wasi",
]
[[package]]
@@ -1633,15 +1325,13 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
+checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
dependencies = [
"cfg-if",
"libc",
"r-efi 6.0.0",
- "wasip2",
- "wasip3",
]
[[package]]
@@ -1706,7 +1396,7 @@ 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-crate 2.0.0",
"proc-macro-error",
"proc-macro2",
"quote",
@@ -1805,40 +1495,12 @@ dependencies = [
"syn 2.0.117",
]
-[[package]]
-name = "h2"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54"
-dependencies = [
- "atomic-waker",
- "bytes",
- "fnv",
- "futures-core",
- "futures-sink",
- "http",
- "indexmap 2.14.0",
- "slab",
- "tokio",
- "tokio-util",
- "tracing",
-]
-
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
-[[package]]
-name = "hashbrown"
-version = "0.15.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
-dependencies = [
- "foldhash 0.1.5",
-]
-
[[package]]
name = "hashbrown"
version = "0.17.0"
@@ -1874,24 +1536,22 @@ dependencies = [
[[package]]
name = "html5ever"
-version = "0.29.1"
+version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c"
+checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2"
dependencies = [
"log",
- "mac",
- "markup5ever 0.14.1",
- "match_token",
+ "markup5ever 0.38.0",
]
[[package]]
name = "html5ever"
-version = "0.38.0"
+version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2"
+checksum = "46a1761807faccc9a19e86944bbf40610014066306f96edcdedc2fb714bcb7b8"
dependencies = [
"log",
- "markup5ever 0.38.0",
+ "markup5ever 0.39.0",
]
[[package]]
@@ -1916,9 +1576,9 @@ dependencies = [
[[package]]
name = "http-body-util"
-version = "0.1.3"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
+checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c"
dependencies = [
"bytes",
"futures-core",
@@ -1927,12 +1587,6 @@ dependencies = [
"pin-project-lite",
]
-[[package]]
-name = "http-range-header"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c"
-
[[package]]
name = "httparse"
version = "1.10.1"
@@ -1947,15 +1601,14 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hyper"
-version = "1.9.0"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca"
+checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72"
dependencies = [
"atomic-waker",
"bytes",
"futures-channel",
"futures-core",
- "h2",
"http",
"http-body",
"httparse",
@@ -1967,22 +1620,6 @@ dependencies = [
"want",
]
-[[package]]
-name = "hyper-rustls"
-version = "0.27.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
-dependencies = [
- "http",
- "hyper",
- "hyper-util",
- "rustls",
- "rustls-pki-types",
- "tokio",
- "tokio-rustls",
- "tower-service",
-]
-
[[package]]
name = "hyper-tls"
version = "0.6.0"
@@ -2017,11 +1654,9 @@ dependencies = [
"percent-encoding",
"pin-project-lite",
"socket2",
- "system-configuration",
"tokio",
"tower-service",
"tracing",
- "windows-registry",
]
[[package]]
@@ -2055,7 +1690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371"
dependencies = [
"byteorder",
- "png",
+ "png 0.17.16",
]
[[package]]
@@ -2140,12 +1775,6 @@ dependencies = [
"zerovec",
]
-[[package]]
-name = "id-arena"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
-
[[package]]
name = "ident_case"
version = "1.0.1"
@@ -2243,19 +1872,6 @@ dependencies = [
"cfg-if",
]
-[[package]]
-name = "interprocess"
-version = "2.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6cb02ffbf25e8ef0f4a95bff054eef75f6d1bf16919474cf2caa63b21997478a"
-dependencies = [
- "doctest-file",
- "libc",
- "recvmsg",
- "widestring",
- "windows-sys 0.61.2",
-]
-
[[package]]
name = "ipnet"
version = "2.12.0"
@@ -2278,15 +1894,6 @@ version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
-[[package]]
-name = "itertools"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
-dependencies = [
- "either",
-]
-
[[package]]
name = "itoa"
version = "1.0.18"
@@ -2414,6 +2021,63 @@ dependencies = [
"rayon",
]
+[[package]]
+name = "kernal-api"
+version = "0.1.6"
+source = "git+https://github.com/zackees/kernal-api.git?tag=v0.1.6#560a5137d6371464dd13f0541d8ad1efa9745c8e"
+dependencies = [
+ "blake3",
+ "bytes",
+ "clap",
+ "dirs 6.0.0",
+ "embed-resource",
+ "flate2",
+ "futures-core",
+ "futures-util",
+ "getrandom 0.4.3",
+ "globset",
+ "gtk",
+ "http-body-util",
+ "hyper",
+ "hyper-util",
+ "jwalk",
+ "libc",
+ "mach2",
+ "memmap2",
+ "notify",
+ "portable-pty",
+ "reflink-copy",
+ "reqwest 0.12.28",
+ "running-process",
+ "serde",
+ "serde_json",
+ "sha2",
+ "shell-words",
+ "strsim",
+ "sysinfo",
+ "tar",
+ "tauri",
+ "tauri-runtime",
+ "tauri-runtime-wry",
+ "tauri-utils",
+ "tempfile",
+ "thiserror 2.0.20",
+ "tokio",
+ "tokio-stream",
+ "tokio-tungstenite",
+ "toml 0.8.23",
+ "tree-sitter",
+ "tree-sitter-cpp",
+ "url",
+ "webkit2gtk",
+ "widestring",
+ "winapi",
+ "windows-sys 0.61.2",
+ "wry 0.57.0",
+ "zip",
+ "zstd",
+]
+
[[package]]
name = "keyboard-types"
version = "0.7.0"
@@ -2445,69 +2109,17 @@ dependencies = [
"libc",
]
-[[package]]
-name = "kuchikiki"
-version = "0.8.8-speedreader"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2"
-dependencies = [
- "cssparser 0.29.6",
- "html5ever 0.29.1",
- "indexmap 2.14.0",
- "selectors 0.24.0",
-]
-
[[package]]
name = "lazy_static"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
-[[package]]
-name = "leb128fmt"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
-
-[[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.184"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af"
-
-[[package]]
-name = "libloading"
-version = "0.7.4"
+version = "0.2.189"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
-dependencies = [
- "cfg-if",
- "winapi",
-]
+checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
[[package]]
name = "libredox"
@@ -2521,12 +2133,6 @@ dependencies = [
"redox_syscall 0.7.4",
]
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
-
[[package]]
name = "linux-raw-sys"
version = "0.12.1"
@@ -2554,40 +2160,6 @@ version = "0.4.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
-[[package]]
-name = "logos"
-version = "0.15.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff472f899b4ec2d99161c51f60ff7075eeb3097069a36050d8037a6325eb8154"
-dependencies = [
- "logos-derive",
-]
-
-[[package]]
-name = "logos-codegen"
-version = "0.15.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "192a3a2b90b0c05b27a0b2c43eecdb7c415e29243acc3f89cc8247a5b693045c"
-dependencies = [
- "beef",
- "fnv",
- "lazy_static",
- "proc-macro2",
- "quote",
- "regex-syntax",
- "rustc_version",
- "syn 2.0.117",
-]
-
-[[package]]
-name = "logos-derive"
-version = "0.15.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "605d9697bcd5ef3a42d38efc51541aa3d6a4a25f7ab6d1ed0da5ac632a26b470"
-dependencies = [
- "logos-codegen",
-]
-
[[package]]
name = "lzma-rs"
version = "0.3.0"
@@ -2609,12 +2181,6 @@ dependencies = [
"pkg-config",
]
-[[package]]
-name = "mac"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
-
[[package]]
name = "mach2"
version = "0.4.3"
@@ -2624,20 +2190,6 @@ dependencies = [
"libc",
]
-[[package]]
-name = "markup5ever"
-version = "0.14.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18"
-dependencies = [
- "log",
- "phf 0.11.3",
- "phf_codegen 0.11.3",
- "string_cache 0.8.9",
- "string_cache_codegen 0.5.4",
- "tendril 0.4.3",
-]
-
[[package]]
name = "markup5ever"
version = "0.38.0"
@@ -2645,33 +2197,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862"
dependencies = [
"log",
- "tendril 0.5.0",
+ "tendril",
"web_atoms",
]
[[package]]
-name = "match_token"
-version = "0.1.0"
+name = "markup5ever"
+version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b"
+checksum = "7122d987ec5f704ee56f6e5b41a7d93722e9aae27ae07cafa4036c4d3f9757de"
dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.117",
+ "log",
+ "tendril",
+ "web_atoms",
]
-[[package]]
-name = "matches"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
-
-[[package]]
-name = "matchit"
-version = "0.8.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
-
[[package]]
name = "memchr"
version = "2.8.0"
@@ -2696,44 +2236,12 @@ dependencies = [
"autocfg",
]
-[[package]]
-name = "miette"
-version = "7.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7"
-dependencies = [
- "cfg-if",
- "miette-derive",
- "unicode-width",
-]
-
-[[package]]
-name = "miette-derive"
-version = "7.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.117",
-]
-
[[package]]
name = "mime"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-[[package]]
-name = "mime_guess"
-version = "2.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
-dependencies = [
- "mime",
- "unicase",
-]
-
[[package]]
name = "miniz_oxide"
version = "0.8.9"
@@ -2752,15 +2260,15 @@ checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
dependencies = [
"libc",
"log",
- "wasi 0.11.1+wasi-snapshot-preview1",
+ "wasi",
"windows-sys 0.61.2",
]
[[package]]
name = "muda"
-version = "0.17.2"
+version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c9fec5a4e89860383d778d10563a605838f8f0b2f9303868937e5ff32e86177"
+checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878"
dependencies = [
"crossbeam-channel",
"dpi",
@@ -2771,18 +2279,12 @@ dependencies = [
"objc2-core-foundation",
"objc2-foundation",
"once_cell",
- "png",
+ "png 0.18.1",
"serde",
- "thiserror 2.0.18",
- "windows-sys 0.60.2",
+ "thiserror 2.0.20",
+ "windows-sys 0.61.2",
]
-[[package]]
-name = "multimap"
-version = "0.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084"
-
[[package]]
name = "native-tls"
version = "0.2.18"
@@ -2815,12 +2317,6 @@ dependencies = [
"thiserror 1.0.69",
]
-[[package]]
-name = "ndk-context"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
-
[[package]]
name = "ndk-sys"
version = "0.6.0+11769913"
@@ -2848,12 +2344,6 @@ dependencies = [
"libc",
]
-[[package]]
-name = "nodrop"
-version = "0.1.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
-
[[package]]
name = "notify"
version = "7.0.0"
@@ -2951,6 +2441,27 @@ dependencies = [
"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.11.0",
+ "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"
@@ -2975,6 +2486,38 @@ dependencies = [
"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.11.0",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+]
+
[[package]]
name = "objc2-encode"
version = "4.1.0"
@@ -3032,8 +2575,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
dependencies = [
"bitflags 2.11.0",
+ "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",
]
@@ -3177,116 +2739,25 @@ version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
-[[package]]
-name = "petgraph"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455"
-dependencies = [
- "fixedbitset",
- "hashbrown 0.15.5",
- "indexmap 2.14.0",
-]
-
-[[package]]
-name = "phf"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
-dependencies = [
- "phf_shared 0.8.0",
-]
-
-[[package]]
-name = "phf"
-version = "0.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
-dependencies = [
- "phf_macros 0.10.0",
- "phf_shared 0.10.0",
- "proc-macro-hack",
-]
-
-[[package]]
-name = "phf"
-version = "0.11.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
-dependencies = [
- "phf_macros 0.11.3",
- "phf_shared 0.11.3",
-]
-
[[package]]
name = "phf"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
dependencies = [
- "phf_macros 0.13.1",
- "phf_shared 0.13.1",
+ "phf_macros",
+ "phf_shared",
"serde",
]
-[[package]]
-name = "phf_codegen"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815"
-dependencies = [
- "phf_generator 0.8.0",
- "phf_shared 0.8.0",
-]
-
-[[package]]
-name = "phf_codegen"
-version = "0.11.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
-dependencies = [
- "phf_generator 0.11.3",
- "phf_shared 0.11.3",
-]
-
[[package]]
name = "phf_codegen"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1"
dependencies = [
- "phf_generator 0.13.1",
- "phf_shared 0.13.1",
-]
-
-[[package]]
-name = "phf_generator"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526"
-dependencies = [
- "phf_shared 0.8.0",
- "rand 0.7.3",
-]
-
-[[package]]
-name = "phf_generator"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
-dependencies = [
- "phf_shared 0.10.0",
- "rand 0.8.5",
-]
-
-[[package]]
-name = "phf_generator"
-version = "0.11.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
-dependencies = [
- "phf_shared 0.11.3",
- "rand 0.8.5",
+ "phf_generator",
+ "phf_shared",
]
[[package]]
@@ -3296,34 +2767,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"
dependencies = [
"fastrand",
- "phf_shared 0.13.1",
-]
-
-[[package]]
-name = "phf_macros"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
-dependencies = [
- "phf_generator 0.10.0",
- "phf_shared 0.10.0",
- "proc-macro-hack",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "phf_macros"
-version = "0.11.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
-dependencies = [
- "phf_generator 0.11.3",
- "phf_shared 0.11.3",
- "proc-macro2",
- "quote",
- "syn 2.0.117",
+ "phf_shared",
]
[[package]]
@@ -3332,47 +2776,20 @@ version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef"
dependencies = [
- "phf_generator 0.13.1",
- "phf_shared 0.13.1",
+ "phf_generator",
+ "phf_shared",
"proc-macro2",
"quote",
"syn 2.0.117",
]
-[[package]]
-name = "phf_shared"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
-dependencies = [
- "siphasher 0.3.11",
-]
-
-[[package]]
-name = "phf_shared"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
-dependencies = [
- "siphasher 0.3.11",
-]
-
-[[package]]
-name = "phf_shared"
-version = "0.11.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
-dependencies = [
- "siphasher 1.0.2",
-]
-
[[package]]
name = "phf_shared"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
dependencies = [
- "siphasher 1.0.2",
+ "siphasher",
]
[[package]]
@@ -3419,6 +2836,19 @@ dependencies = [
"miniz_oxide",
]
+[[package]]
+name = "png"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
+dependencies = [
+ "bitflags 2.11.0",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide",
+]
+
[[package]]
name = "portable-pty"
version = "0.9.0"
@@ -3470,16 +2900,6 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
-[[package]]
-name = "prettyplease"
-version = "0.2.37"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
-dependencies = [
- "proc-macro2",
- "syn 2.0.117",
-]
-
[[package]]
name = "proc-macro-crate"
version = "1.3.1"
@@ -3492,11 +2912,10 @@ dependencies = [
[[package]]
name = "proc-macro-crate"
-version = "2.0.2"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
+checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
dependencies = [
- "toml_datetime 0.6.3",
"toml_edit 0.20.2",
]
@@ -3533,12 +2952,6 @@ dependencies = [
"version_check",
]
-[[package]]
-name = "proc-macro-hack"
-version = "0.5.20+deprecated"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
-
[[package]]
name = "proc-macro2"
version = "1.0.106"
@@ -3549,233 +2962,62 @@ dependencies = [
]
[[package]]
-name = "prost"
-version = "0.14.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568"
-dependencies = [
- "bytes",
- "prost-derive",
-]
-
-[[package]]
-name = "prost-build"
-version = "0.14.3"
+name = "quick-xml"
+version = "0.38.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7"
+checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c"
dependencies = [
- "heck 0.4.1",
- "itertools",
- "log",
- "multimap",
- "petgraph",
- "prettyplease",
- "prost",
- "prost-types",
- "regex",
- "syn 2.0.117",
- "tempfile",
+ "memchr",
]
[[package]]
-name = "prost-derive"
-version = "0.14.3"
+name = "quote"
+version = "1.0.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b"
+checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
dependencies = [
- "anyhow",
- "itertools",
"proc-macro2",
- "quote",
- "syn 2.0.117",
]
[[package]]
-name = "prost-reflect"
-version = "0.16.3"
+name = "r-efi"
+version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b89455ef41ed200cafc47c76c552ee7792370ac420497e551f16123a9135f76e"
-dependencies = [
- "logos",
- "miette",
- "prost",
- "prost-types",
-]
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
-name = "prost-types"
-version = "0.14.3"
+name = "r-efi"
+version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7"
-dependencies = [
- "prost",
-]
+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
[[package]]
-name = "protox"
-version = "0.9.1"
+name = "rand"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f25a07a73c6717f0b9bbbd685918f5df9815f7efba450b83d9c9dea41f0e3a1"
+checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41"
dependencies = [
- "bytes",
- "miette",
- "prost",
- "prost-reflect",
- "prost-types",
- "protox-parse",
- "thiserror 2.0.18",
+ "rand_chacha",
+ "rand_core",
]
[[package]]
-name = "protox-parse"
+name = "rand_chacha"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "072eee358134396a4643dff81cfff1c255c9fbd3fb296be14bdb6a26f9156366"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
- "logos",
- "miette",
- "prost-types",
- "thiserror 2.0.18",
+ "ppv-lite86",
+ "rand_core",
]
[[package]]
-name = "quick-xml"
-version = "0.38.4"
+name = "rand_core"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c"
+checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.45"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "r-efi"
-version = "5.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
-
-[[package]]
-name = "r-efi"
-version = "6.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
-
-[[package]]
-name = "rand"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
-dependencies = [
- "getrandom 0.1.16",
- "libc",
- "rand_chacha 0.2.2",
- "rand_core 0.5.1",
- "rand_hc",
- "rand_pcg",
-]
-
-[[package]]
-name = "rand"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-dependencies = [
- "libc",
- "rand_chacha 0.3.1",
- "rand_core 0.6.4",
-]
-
-[[package]]
-name = "rand"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41"
-dependencies = [
- "rand_chacha 0.9.0",
- "rand_core 0.9.5",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
-dependencies = [
- "ppv-lite86",
- "rand_core 0.5.1",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-dependencies = [
- "ppv-lite86",
- "rand_core 0.6.4",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
-dependencies = [
- "ppv-lite86",
- "rand_core 0.9.5",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
-dependencies = [
- "getrandom 0.1.16",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-dependencies = [
- "getrandom 0.2.17",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
-dependencies = [
- "getrandom 0.3.4",
-]
-
-[[package]]
-name = "rand_hc"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
-dependencies = [
- "rand_core 0.5.1",
-]
-
-[[package]]
-name = "rand_pcg"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
-dependencies = [
- "rand_core 0.5.1",
+ "getrandom 0.3.4",
]
[[package]]
@@ -3804,12 +3046,6 @@ dependencies = [
"crossbeam-utils",
]
-[[package]]
-name = "recvmsg"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175"
-
[[package]]
name = "redox_syscall"
version = "0.5.18"
@@ -3828,17 +3064,6 @@ dependencies = [
"bitflags 2.11.0",
]
-[[package]]
-name = "redox_users"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
-dependencies = [
- "getrandom 0.2.17",
- "libredox",
- "thiserror 1.0.69",
-]
-
[[package]]
name = "redox_users"
version = "0.5.2"
@@ -3847,7 +3072,7 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
dependencies = [
"getrandom 0.2.17",
"libredox",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
]
[[package]]
@@ -3870,6 +3095,18 @@ dependencies = [
"syn 2.0.117",
]
+[[package]]
+name = "reflink-copy"
+version = "0.1.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9dd7ab4af0363d5ccfd2838d782a28196cf32a5cc2e4fe3c5dc83f2be588b8b"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "rustix",
+ "windows 0.62.2",
+]
+
[[package]]
name = "regex"
version = "1.12.3"
@@ -3907,21 +3144,15 @@ checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
dependencies = [
"base64 0.22.1",
"bytes",
- "encoding_rs",
- "futures-channel",
"futures-core",
- "futures-util",
- "h2",
"http",
"http-body",
"http-body-util",
"hyper",
- "hyper-rustls",
"hyper-tls",
"hyper-util",
"js-sys",
"log",
- "mime",
"native-tls",
"percent-encoding",
"pin-project-lite",
@@ -3976,35 +3207,33 @@ dependencies = [
]
[[package]]
-name = "ring"
-version = "0.17.14"
+name = "running-process"
+version = "4.10.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
+checksum = "492c9f25a9a886d7e4281eae987e2d90732ee07f01a35860899618b3b3484cc3"
dependencies = [
- "cc",
- "cfg-if",
- "getrandom 0.2.17",
"libc",
- "untrusted",
- "windows-sys 0.52.0",
+ "running-process-platform-internal",
+ "sysinfo",
+ "thiserror 2.0.20",
+ "tokio",
+ "winapi",
+ "windows-sys 0.61.2",
]
[[package]]
-name = "running-process"
-version = "4.0.0"
+name = "running-process-platform-internal"
+version = "4.10.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f64479526e50ccc2d842a78361bcf452e12e09329159e0beafd19d6e9d659d9e"
+checksum = "ce466bd3d8c281e4f3f409bf0931011306172fbd74032787958eaf5272505391"
dependencies = [
"libc",
- "portable-pty",
- "prost-build",
- "protox",
- "serde",
- "serde_json",
"sysinfo",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
+ "tokio",
+ "widestring",
"winapi",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -4022,19 +3251,6 @@ dependencies = [
"semver",
]
-[[package]]
-name = "rustix"
-version = "0.38.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
-dependencies = [
- "bitflags 2.11.0",
- "errno",
- "libc",
- "linux-raw-sys 0.4.15",
- "windows-sys 0.59.0",
-]
-
[[package]]
name = "rustix"
version = "1.1.4"
@@ -4044,21 +3260,8 @@ dependencies = [
"bitflags 2.11.0",
"errno",
"libc",
- "linux-raw-sys 0.12.1",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "rustls"
-version = "0.23.37"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
-dependencies = [
- "once_cell",
- "rustls-pki-types",
- "rustls-webpki",
- "subtle",
- "zeroize",
+ "linux-raw-sys",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -4070,17 +3273,6 @@ dependencies = [
"zeroize",
]
-[[package]]
-name = "rustls-webpki"
-version = "0.103.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20a6af516fea4b20eccceaf166e8aa666ac996208e8a644ce3ef5aa783bc7cd4"
-dependencies = [
- "ring",
- "rustls-pki-types",
- "untrusted",
-]
-
[[package]]
name = "rustversion"
version = "1.0.22"
@@ -4175,7 +3367,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
dependencies = [
"bitflags 2.11.0",
- "core-foundation 0.10.1",
+ "core-foundation",
"core-foundation-sys",
"libc",
"security-framework-sys",
@@ -4193,38 +3385,39 @@ dependencies = [
[[package]]
name = "selectors"
-version = "0.24.0"
+version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416"
+checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c"
dependencies = [
- "bitflags 1.3.2",
- "cssparser 0.29.6",
- "derive_more 0.99.20",
- "fxhash",
+ "bitflags 2.11.0",
+ "cssparser 0.36.0",
+ "derive_more",
"log",
- "phf 0.8.0",
- "phf_codegen 0.8.0",
+ "new_debug_unreachable",
+ "phf",
+ "phf_codegen",
"precomputed-hash",
- "servo_arc 0.2.0",
+ "rustc-hash",
+ "servo_arc",
"smallvec",
]
[[package]]
name = "selectors"
-version = "0.36.1"
+version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c"
+checksum = "8adfa1c298912827b8a28b223b3b874357397ae706e6190acd9bf28cee99114d"
dependencies = [
"bitflags 2.11.0",
- "cssparser 0.36.0",
- "derive_more 2.1.1",
+ "cssparser 0.37.0",
+ "derive_more",
"log",
"new_debug_unreachable",
- "phf 0.13.1",
- "phf_codegen 0.13.1",
+ "phf",
+ "phf_codegen",
"precomputed-hash",
"rustc-hash",
- "servo_arc 0.4.3",
+ "servo_arc",
"smallvec",
]
@@ -4240,9 +3433,9 @@ dependencies = [
[[package]]
name = "serde"
-version = "1.0.228"
+version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
+checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
dependencies = [
"serde_core",
"serde_derive",
@@ -4262,22 +3455,22 @@ dependencies = [
[[package]]
name = "serde_core"
-version = "1.0.228"
+version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
+checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.228"
+version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
+checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.117",
+ "syn 3.0.5",
]
[[package]]
@@ -4293,9 +3486,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.149"
+version = "1.0.151"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
+checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
dependencies = [
"indexmap 2.14.0",
"itoa",
@@ -4305,17 +3498,6 @@ dependencies = [
"zmij",
]
-[[package]]
-name = "serde_path_to_error"
-version = "0.1.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
-dependencies = [
- "itoa",
- "serde",
- "serde_core",
-]
-
[[package]]
name = "serde_repr"
version = "0.1.20"
@@ -4390,9 +3572,9 @@ dependencies = [
[[package]]
name = "serial2"
-version = "0.2.37"
+version = "0.2.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9eb6ea5562eeaed6936b8b54e086aa0f88b9e5b1bef45beb038e2519fa1185b1"
+checksum = "b16809bc35793b19ce4e0c53924bc0dce3937f15487997cfdaed936004180730"
dependencies = [
"cfg-if",
"libc",
@@ -4421,16 +3603,6 @@ dependencies = [
"syn 2.0.117",
]
-[[package]]
-name = "servo_arc"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741"
-dependencies = [
- "nodrop",
- "stable_deref_trait",
-]
-
[[package]]
name = "servo_arc"
version = "0.4.3"
@@ -4484,27 +3656,6 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
-[[package]]
-name = "signal-hook"
-version = "0.3.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
-dependencies = [
- "libc",
- "signal-hook-registry",
-]
-
-[[package]]
-name = "signal-hook-mio"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc"
-dependencies = [
- "libc",
- "mio",
- "signal-hook",
-]
-
[[package]]
name = "signal-hook-registry"
version = "1.4.8"
@@ -4521,12 +3672,6 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
-[[package]]
-name = "siphasher"
-version = "0.3.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
-
[[package]]
name = "siphasher"
version = "1.0.2"
@@ -4615,19 +3760,6 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520"
-[[package]]
-name = "string_cache"
-version = "0.8.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f"
-dependencies = [
- "new_debug_unreachable",
- "parking_lot",
- "phf_shared 0.11.3",
- "precomputed-hash",
- "serde",
-]
-
[[package]]
name = "string_cache"
version = "0.9.0"
@@ -4636,30 +3768,18 @@ checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901"
dependencies = [
"new_debug_unreachable",
"parking_lot",
- "phf_shared 0.13.1",
+ "phf_shared",
"precomputed-hash",
]
-[[package]]
-name = "string_cache_codegen"
-version = "0.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0"
-dependencies = [
- "phf_generator 0.11.3",
- "phf_shared 0.11.3",
- "proc-macro2",
- "quote",
-]
-
[[package]]
name = "string_cache_codegen"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69"
dependencies = [
- "phf_generator 0.13.1",
- "phf_shared 0.13.1",
+ "phf_generator",
+ "phf_shared",
"proc-macro2",
"quote",
]
@@ -4694,7 +3814,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2",
- "quote",
"unicode-ident",
]
@@ -4709,6 +3828,17 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "syn"
+version = "3.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12df2e0110f65b775f769bb17ef989067a1d931b2eb822bd4346631eeada89f9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
[[package]]
name = "sync_wrapper"
version = "1.0.2"
@@ -4745,67 +3875,46 @@ dependencies = [
]
[[package]]
-name = "system-configuration"
-version = "0.7.0"
+name = "system-deps"
+version = "6.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b"
-dependencies = [
- "bitflags 2.11.0",
- "core-foundation 0.9.4",
- "system-configuration-sys",
-]
-
-[[package]]
-name = "system-configuration-sys"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "system-deps"
-version = "6.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
dependencies = [
"cfg-expr",
"heck 0.5.0",
"pkg-config",
- "toml 0.8.2",
+ "toml 0.8.23",
"version-compare",
]
[[package]]
name = "tao"
-version = "0.34.8"
+version = "0.35.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9103edf55f2da3c82aea4c7fab7c4241032bfeea0e71fa557d98e00e7ce7cc20"
+checksum = "d1c93047acf68669466a34690ac58cca7010bd1b201e1ec86f1fd0a75d3dd4a9"
dependencies = [
"bitflags 2.11.0",
"block2",
- "core-foundation 0.10.1",
+ "core-foundation",
"core-graphics",
"crossbeam-channel",
"dispatch2",
"dlopen2",
"dpi",
"gdkwayland-sys",
- "gdkx11-sys",
"gtk",
"jni",
"libc",
"log",
"ndk",
- "ndk-context",
"ndk-sys",
"objc2",
"objc2-app-kit",
"objc2-foundation",
+ "objc2-ui-kit",
"once_cell",
"parking_lot",
+ "percent-encoding",
"raw-window-handle",
"tao-macros",
"unicode-segmentation",
@@ -4813,14 +3922,13 @@ dependencies = [
"windows 0.61.3",
"windows-core 0.61.2",
"windows-version",
- "x11-dl",
]
[[package]]
name = "tao-macros"
-version = "0.1.3"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd"
+checksum = "5f7eeb6d99155545da6150a1795945f16ac9c178deb2a5f2e74d776107bd5849"
dependencies = [
"proc-macro2",
"quote",
@@ -4829,13 +3937,12 @@ dependencies = [
[[package]]
name = "tar"
-version = "0.4.45"
+version = "0.4.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973"
+checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840"
dependencies = [
"filetime",
"libc",
- "xattr",
]
[[package]]
@@ -4846,9 +3953,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "tauri"
-version = "2.10.3"
+version = "2.11.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da77cc00fb9028caf5b5d4650f75e31f1ef3693459dfca7f7e506d1ecef0ba2d"
+checksum = "667b20e2726d572dea2de7370da16e188eb06008faf9a92fab7cdc46791190b5"
dependencies = [
"anyhow",
"bytes",
@@ -4883,23 +3990,19 @@ dependencies = [
"tauri-build",
"tauri-macros",
"tauri-runtime",
- "tauri-runtime-wry",
"tauri-utils",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
"tokio",
- "tray-icon",
"url",
- "webkit2gtk",
- "webview2-com",
"window-vibrancy",
"windows 0.61.3",
]
[[package]]
name = "tauri-build"
-version = "2.5.6"
+version = "2.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bbc990d1dbf57a8e1c7fa2327f2a614d8b757805603c1b9ba5c81bade09fd4d"
+checksum = "bc9ce40b16101cb6ea63d3e221567affd1c3a9205f95d7bc574941a10636b632"
dependencies = [
"anyhow",
"cargo_toml",
@@ -4913,22 +4016,20 @@ dependencies = [
"serde_json",
"tauri-utils",
"tauri-winres",
- "toml 0.9.12+spec-1.1.0",
"walkdir",
]
[[package]]
name = "tauri-codegen"
-version = "2.5.5"
+version = "2.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4a24476afd977c5d5d169f72425868613d82747916dd29e0a357c84c4bd6d29"
+checksum = "08279169ff42f8fc45a1dbc9dcae888893ba95288142e5880c59b93a26d2cfc5"
dependencies = [
"base64 0.22.1",
- "brotli",
"ico",
"json-patch",
"plist",
- "png",
+ "png 0.17.16",
"proc-macro2",
"quote",
"semver",
@@ -4937,7 +4038,7 @@ dependencies = [
"sha2",
"syn 2.0.117",
"tauri-utils",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
"time",
"url",
"uuid",
@@ -4946,9 +4047,9 @@ dependencies = [
[[package]]
name = "tauri-macros"
-version = "2.5.5"
+version = "2.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d39b349a98dadaffebb73f0a40dcd1f23c999211e5a2e744403db384d0c33de7"
+checksum = "e8b394794f399a421811d06966343e7933fcae92d59f5180b9388d1174497a45"
dependencies = [
"heck 0.5.0",
"proc-macro2",
@@ -4960,9 +4061,9 @@ dependencies = [
[[package]]
name = "tauri-runtime"
-version = "2.10.1"
+version = "2.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2826d79a3297ed08cd6ea7f412644ef58e32969504bc4fbd8d7dbeabc4445ea2"
+checksum = "b0b4bc95aed361b0019067d189a1174a603d460d0f6c72606512d59fc9c12ec8"
dependencies = [
"cookie",
"dpi",
@@ -4976,18 +4077,18 @@ dependencies = [
"serde",
"serde_json",
"tauri-utils",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
"url",
"webkit2gtk",
- "webview2-com",
+ "webview2-com 0.38.2",
"windows 0.61.3",
]
[[package]]
name = "tauri-runtime-wry"
-version = "2.10.1"
+version = "2.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e11ea2e6f801d275fdd890d6c9603736012742a1c33b96d0db788c9cdebf7f9e"
+checksum = "4e6fac707727b7a2f48e4ded90976324267371073edbb415ffb73bb0458d203f"
dependencies = [
"gtk",
"http",
@@ -5004,31 +4105,30 @@ dependencies = [
"tauri-utils",
"url",
"webkit2gtk",
- "webview2-com",
+ "webview2-com 0.38.2",
"windows 0.61.3",
- "wry",
+ "wry 0.55.1",
]
[[package]]
name = "tauri-utils"
-version = "2.8.3"
+version = "2.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "219a1f983a2af3653f75b5747f76733b0da7ff03069c7a41901a5eb3ace4557d"
+checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887"
dependencies = [
"anyhow",
- "brotli",
"cargo_metadata",
"ctor",
+ "dom_query 0.27.0",
"dunce",
"glob",
- "html5ever 0.29.1",
"http",
"infer",
"json-patch",
- "kuchikiki",
"log",
"memchr",
- "phf 0.11.3",
+ "phf",
+ "plist",
"proc-macro2",
"quote",
"regex",
@@ -5039,7 +4139,7 @@ dependencies = [
"serde_json",
"serde_with",
"swift-rs",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
"toml 0.9.12+spec-1.1.0",
"url",
"urlpattern",
@@ -5065,21 +4165,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
dependencies = [
"fastrand",
- "getrandom 0.4.2",
+ "getrandom 0.4.3",
"once_cell",
- "rustix 1.1.4",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "tendril"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
-dependencies = [
- "futf",
- "mac",
- "utf-8",
+ "rustix",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -5103,11 +4192,11 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "2.0.18"
+version = "2.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
+checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
dependencies = [
- "thiserror-impl 2.0.18",
+ "thiserror-impl 2.0.20",
]
[[package]]
@@ -5123,13 +4212,13 @@ dependencies = [
[[package]]
name = "thiserror-impl"
-version = "2.0.18"
+version = "2.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
+checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.117",
+ "syn 3.0.5",
]
[[package]]
@@ -5175,14 +4264,13 @@ dependencies = [
[[package]]
name = "tokio"
-version = "1.51.1"
+version = "1.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f66bf9585cda4b724d3e78ab34b73fb2bbaba9011b9bfdf69dc836382ea13b8c"
+checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed"
dependencies = [
"bytes",
"libc",
"mio",
- "parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2",
@@ -5211,21 +4299,11 @@ dependencies = [
"tokio",
]
-[[package]]
-name = "tokio-rustls"
-version = "0.26.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
-dependencies = [
- "rustls",
- "tokio",
-]
-
[[package]]
name = "tokio-stream"
-version = "0.1.18"
+version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70"
+checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b"
dependencies = [
"futures-core",
"pin-project-lite",
@@ -5260,14 +4338,14 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.8.2"
+version = "0.8.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
+checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
dependencies = [
"serde",
"serde_spanned 0.6.9",
- "toml_datetime 0.6.3",
- "toml_edit 0.20.2",
+ "toml_datetime 0.6.11",
+ "toml_edit 0.22.27",
]
[[package]]
@@ -5285,11 +4363,26 @@ dependencies = [
"winnow 0.7.15",
]
+[[package]]
+name = "toml"
+version = "1.1.2+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
+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.1",
+]
+
[[package]]
name = "toml_datetime"
-version = "0.6.3"
+version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
dependencies = [
"serde",
]
@@ -5319,7 +4412,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
"indexmap 2.14.0",
- "toml_datetime 0.6.3",
+ "toml_datetime 0.6.11",
"winnow 0.5.40",
]
@@ -5328,12 +4421,24 @@ name = "toml_edit"
version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
+dependencies = [
+ "indexmap 2.14.0",
+ "toml_datetime 0.6.11",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
dependencies = [
"indexmap 2.14.0",
"serde",
"serde_spanned 0.6.9",
- "toml_datetime 0.6.3",
- "winnow 0.5.40",
+ "toml_datetime 0.6.11",
+ "toml_write",
+ "winnow 0.7.15",
]
[[package]]
@@ -5357,6 +4462,12 @@ dependencies = [
"winnow 1.0.1",
]
+[[package]]
+name = "toml_write"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
+
[[package]]
name = "toml_writer"
version = "1.1.1+spec-1.1.0"
@@ -5376,7 +4487,6 @@ dependencies = [
"tokio",
"tower-layer",
"tower-service",
- "tracing",
]
[[package]]
@@ -5387,24 +4497,14 @@ checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
dependencies = [
"bitflags 2.11.0",
"bytes",
- "futures-core",
"futures-util",
"http",
"http-body",
- "http-body-util",
- "http-range-header",
- "httpdate",
"iri-string",
- "mime",
- "mime_guess",
- "percent-encoding",
"pin-project-lite",
- "tokio",
- "tokio-util",
"tower",
"tower-layer",
"tower-service",
- "tracing",
]
[[package]]
@@ -5425,23 +4525,10 @@ version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
dependencies = [
- "log",
"pin-project-lite",
- "tracing-attributes",
"tracing-core",
]
-[[package]]
-name = "tracing-attributes"
-version = "0.1.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.117",
-]
-
[[package]]
name = "tracing-core"
version = "0.1.36"
@@ -5451,28 +4538,6 @@ dependencies = [
"once_cell",
]
-[[package]]
-name = "tray-icon"
-version = "0.21.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5e85aa143ceb072062fc4d6356c1b520a51d636e7bc8e77ec94be3608e5e80c"
-dependencies = [
- "crossbeam-channel",
- "dirs 6.0.0",
- "libappindicator",
- "muda",
- "objc2",
- "objc2-app-kit",
- "objc2-core-foundation",
- "objc2-core-graphics",
- "objc2-foundation",
- "once_cell",
- "png",
- "serde",
- "thiserror 2.0.18",
- "windows-sys 0.60.2",
-]
-
[[package]]
name = "tree-sitter"
version = "0.26.11"
@@ -5520,9 +4585,9 @@ dependencies = [
"http",
"httparse",
"log",
- "rand 0.9.5",
+ "rand",
"sha1",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
"utf-8",
]
@@ -5579,12 +4644,6 @@ dependencies = [
"unic-common",
]
-[[package]]
-name = "unicase"
-version = "2.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
-
[[package]]
name = "unicode-ident"
version = "1.0.24"
@@ -5597,24 +4656,6 @@ version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c"
-[[package]]
-name = "unicode-width"
-version = "0.1.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
-
-[[package]]
-name = "unicode-xid"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
-
-[[package]]
-name = "untrusted"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
-
[[package]]
name = "url"
version = "2.5.8"
@@ -5664,7 +4705,7 @@ version = "1.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9"
dependencies = [
- "getrandom 0.4.2",
+ "getrandom 0.4.3",
"js-sys",
"serde_core",
"wasm-bindgen",
@@ -5727,12 +4768,6 @@ dependencies = [
"try-lock",
]
-[[package]]
-name = "wasi"
-version = "0.9.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
-
[[package]]
name = "wasi"
version = "0.11.1+wasi-snapshot-preview1"
@@ -5748,15 +4783,6 @@ dependencies = [
"wit-bindgen",
]
-[[package]]
-name = "wasip3"
-version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
-dependencies = [
- "wit-bindgen",
-]
-
[[package]]
name = "wasm-bindgen"
version = "0.2.118"
@@ -5812,28 +4838,6 @@ dependencies = [
"unicode-ident",
]
-[[package]]
-name = "wasm-encoder"
-version = "0.244.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
-dependencies = [
- "leb128fmt",
- "wasmparser",
-]
-
-[[package]]
-name = "wasm-metadata"
-version = "0.244.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
-dependencies = [
- "anyhow",
- "indexmap 2.14.0",
- "wasm-encoder",
- "wasmparser",
-]
-
[[package]]
name = "wasm-streams"
version = "0.5.0"
@@ -5847,18 +4851,6 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "wasmparser"
-version = "0.244.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
-dependencies = [
- "bitflags 2.11.0",
- "hashbrown 0.15.5",
- "indexmap 2.14.0",
- "semver",
-]
-
[[package]]
name = "web-sys"
version = "0.3.95"
@@ -5875,10 +4867,10 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57a9779e9f04d2ac1ce317aee707aa2f6b773afba7b931222bff6983843b1576"
dependencies = [
- "phf 0.13.1",
- "phf_codegen 0.13.1",
- "string_cache 0.9.0",
- "string_cache_codegen 0.6.1",
+ "phf",
+ "phf_codegen",
+ "string_cache",
+ "string_cache_codegen",
]
[[package]]
@@ -5932,13 +4924,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a"
dependencies = [
"webview2-com-macros",
- "webview2-com-sys",
+ "webview2-com-sys 0.38.2",
"windows 0.61.3",
"windows-core 0.61.2",
"windows-implement",
"windows-interface",
]
+[[package]]
+name = "webview2-com"
+version = "0.39.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f89fca7a704cee10dcb3654c1dbb8941d1783132f1917358af75bec37a7d7e6"
+dependencies = [
+ "webview2-com-macros",
+ "webview2-com-sys 0.39.1",
+ "windows 0.62.2",
+ "windows-core 0.62.2",
+]
+
[[package]]
name = "webview2-com-macros"
version = "0.8.1"
@@ -5956,11 +4960,22 @@ version = "0.38.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c"
dependencies = [
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
"windows 0.61.3",
"windows-core 0.61.2",
]
+[[package]]
+name = "webview2-com-sys"
+version = "0.39.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3a07132775117d6065853d9d1178157b8c90e228de47129d6bce2c7edebedfb"
+dependencies = [
+ "thiserror 2.0.20",
+ "windows 0.62.2",
+ "windows-core 0.62.2",
+]
+
[[package]]
name = "widestring"
version = "1.2.1"
@@ -5989,7 +5004,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
- "windows-sys 0.48.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -6029,11 +5044,23 @@ version = "0.61.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
dependencies = [
- "windows-collections",
+ "windows-collections 0.2.0",
"windows-core 0.61.2",
- "windows-future",
+ "windows-future 0.2.1",
"windows-link 0.1.3",
- "windows-numerics",
+ "windows-numerics 0.2.0",
+]
+
+[[package]]
+name = "windows"
+version = "0.62.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580"
+dependencies = [
+ "windows-collections 0.3.2",
+ "windows-core 0.62.2",
+ "windows-future 0.3.2",
+ "windows-numerics 0.3.1",
]
[[package]]
@@ -6045,6 +5072,15 @@ dependencies = [
"windows-core 0.61.2",
]
+[[package]]
+name = "windows-collections"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610"
+dependencies = [
+ "windows-core 0.62.2",
+]
+
[[package]]
name = "windows-core"
version = "0.52.0"
@@ -6088,7 +5124,18 @@ checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
dependencies = [
"windows-core 0.61.2",
"windows-link 0.1.3",
- "windows-threading",
+ "windows-threading 0.1.0",
+]
+
+[[package]]
+name = "windows-future"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb"
+dependencies = [
+ "windows-core 0.62.2",
+ "windows-link 0.2.1",
+ "windows-threading 0.2.1",
]
[[package]]
@@ -6136,14 +5183,13 @@ dependencies = [
]
[[package]]
-name = "windows-registry"
-version = "0.6.1"
+name = "windows-numerics"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
+checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26"
dependencies = [
+ "windows-core 0.62.2",
"windows-link 0.2.1",
- "windows-result 0.4.1",
- "windows-strings 0.5.1",
]
[[package]]
@@ -6191,15 +5237,6 @@ dependencies = [
"windows-targets 0.42.2",
]
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets 0.48.5",
-]
-
[[package]]
name = "windows-sys"
version = "0.52.0"
@@ -6218,15 +5255,6 @@ dependencies = [
"windows-targets 0.52.6",
]
-[[package]]
-name = "windows-sys"
-version = "0.60.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
-dependencies = [
- "windows-targets 0.53.5",
-]
-
[[package]]
name = "windows-sys"
version = "0.61.2"
@@ -6251,21 +5279,6 @@ dependencies = [
"windows_x86_64_msvc 0.42.2",
]
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
-]
-
[[package]]
name = "windows-targets"
version = "0.52.6"
@@ -6275,7 +5288,7 @@ dependencies = [
"windows_aarch64_gnullvm 0.52.6",
"windows_aarch64_msvc 0.52.6",
"windows_i686_gnu 0.52.6",
- "windows_i686_gnullvm 0.52.6",
+ "windows_i686_gnullvm",
"windows_i686_msvc 0.52.6",
"windows_x86_64_gnu 0.52.6",
"windows_x86_64_gnullvm 0.52.6",
@@ -6283,29 +5296,21 @@ dependencies = [
]
[[package]]
-name = "windows-targets"
-version = "0.53.5"
+name = "windows-threading"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
dependencies = [
- "windows-link 0.2.1",
- "windows_aarch64_gnullvm 0.53.1",
- "windows_aarch64_msvc 0.53.1",
- "windows_i686_gnu 0.53.1",
- "windows_i686_gnullvm 0.53.1",
- "windows_i686_msvc 0.53.1",
- "windows_x86_64_gnu 0.53.1",
- "windows_x86_64_gnullvm 0.53.1",
- "windows_x86_64_msvc 0.53.1",
+ "windows-link 0.1.3",
]
[[package]]
name = "windows-threading"
-version = "0.1.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
+checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37"
dependencies = [
- "windows-link 0.1.3",
+ "windows-link 0.2.1",
]
[[package]]
@@ -6323,180 +5328,90 @@ version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
-
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
-
[[package]]
name = "windows_i686_gnu"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
-[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
-[[package]]
-name = "windows_i686_gnu"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
-
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
-
[[package]]
name = "windows_i686_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-[[package]]
-name = "windows_i686_msvc"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
-
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
-
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
-
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
-
[[package]]
name = "winnow"
version = "0.5.40"
@@ -6511,6 +5426,9 @@ name = "winnow"
version = "0.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
+dependencies = [
+ "memchr",
+]
[[package]]
name = "winnow"
@@ -6545,88 +5463,6 @@ name = "wit-bindgen"
version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
-dependencies = [
- "wit-bindgen-rust-macro",
-]
-
-[[package]]
-name = "wit-bindgen-core"
-version = "0.51.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
-dependencies = [
- "anyhow",
- "heck 0.5.0",
- "wit-parser",
-]
-
-[[package]]
-name = "wit-bindgen-rust"
-version = "0.51.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
-dependencies = [
- "anyhow",
- "heck 0.5.0",
- "indexmap 2.14.0",
- "prettyplease",
- "syn 2.0.117",
- "wasm-metadata",
- "wit-bindgen-core",
- "wit-component",
-]
-
-[[package]]
-name = "wit-bindgen-rust-macro"
-version = "0.51.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
-dependencies = [
- "anyhow",
- "prettyplease",
- "proc-macro2",
- "quote",
- "syn 2.0.117",
- "wit-bindgen-core",
- "wit-bindgen-rust",
-]
-
-[[package]]
-name = "wit-component"
-version = "0.244.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
-dependencies = [
- "anyhow",
- "bitflags 2.11.0",
- "indexmap 2.14.0",
- "log",
- "serde",
- "serde_derive",
- "serde_json",
- "wasm-encoder",
- "wasm-metadata",
- "wasmparser",
- "wit-parser",
-]
-
-[[package]]
-name = "wit-parser"
-version = "0.244.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
-dependencies = [
- "anyhow",
- "id-arena",
- "indexmap 2.14.0",
- "log",
- "semver",
- "serde",
- "serde_derive",
- "serde_json",
- "unicode-xid",
- "wasmparser",
-]
[[package]]
name = "writeable"
@@ -6636,19 +5472,18 @@ checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
[[package]]
name = "wry"
-version = "0.54.4"
+version = "0.55.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5a8135d8676225e5744de000d4dff5a082501bf7db6a1c1495034f8c314edbc"
+checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514"
dependencies = [
"base64 0.22.1",
"block2",
"cookie",
"crossbeam-channel",
"dirs 6.0.0",
- "dom_query",
+ "dom_query 0.27.0",
"dpi",
"dunce",
- "gdkx11",
"gtk",
"http",
"javascriptcore-rs",
@@ -6667,46 +5502,56 @@ dependencies = [
"sha2",
"soup3",
"tao-macros",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
"url",
"webkit2gtk",
"webkit2gtk-sys",
- "webview2-com",
+ "webview2-com 0.38.2",
"windows 0.61.3",
"windows-core 0.61.2",
"windows-version",
- "x11-dl",
]
[[package]]
-name = "x11"
-version = "2.21.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e"
-dependencies = [
- "libc",
- "pkg-config",
-]
-
-[[package]]
-name = "x11-dl"
-version = "2.21.0"
+name = "wry"
+version = "0.57.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f"
+checksum = "a819957a01b3119af85e638a38d242af76dbc87d130dca67bfd0441072e21ff0"
dependencies = [
+ "base64 0.22.1",
+ "block2",
+ "cookie",
+ "crossbeam-channel",
+ "dirs 7.0.0",
+ "dom_query 0.28.0",
+ "dpi",
+ "dunce",
+ "gtk",
+ "http",
+ "javascriptcore-rs",
+ "jni",
"libc",
+ "ndk",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+ "objc2-ui-kit",
+ "objc2-web-kit",
"once_cell",
- "pkg-config",
-]
-
-[[package]]
-name = "xattr"
-version = "1.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156"
-dependencies = [
- "libc",
- "rustix 1.1.4",
+ "percent-encoding",
+ "raw-window-handle",
+ "sha2",
+ "soup3",
+ "tao-macros",
+ "thiserror 2.0.20",
+ "url",
+ "webkit2gtk",
+ "webkit2gtk-sys",
+ "webview2-com 0.39.1",
+ "windows 0.62.2",
+ "windows-core 0.62.2",
+ "windows-version",
]
[[package]]
@@ -6741,72 +5586,20 @@ dependencies = [
"synstructure",
]
-[[package]]
-name = "zccache-core"
-version = "1.13.22"
-source = "git+https://github.com/zackees/zccache?rev=a7c84de53105ce41b2060bd9dd7730ef226e78a1#a7c84de53105ce41b2060bd9dd7730ef226e78a1"
-dependencies = [
- "crash-handler",
- "serde",
- "serde_json",
- "thiserror 2.0.18",
- "tracing",
- "zccache-platform",
-]
-
-[[package]]
-name = "zccache-fingerprint"
-version = "1.13.22"
-source = "git+https://github.com/zackees/zccache?rev=a7c84de53105ce41b2060bd9dd7730ef226e78a1#a7c84de53105ce41b2060bd9dd7730ef226e78a1"
-dependencies = [
- "fs2",
- "globset",
- "jwalk",
- "rayon",
- "serde",
- "serde_json",
- "thiserror 2.0.18",
- "tracing",
- "zccache-core",
- "zccache-hash",
-]
-
-[[package]]
-name = "zccache-hash"
-version = "1.13.22"
-source = "git+https://github.com/zackees/zccache?rev=a7c84de53105ce41b2060bd9dd7730ef226e78a1#a7c84de53105ce41b2060bd9dd7730ef226e78a1"
-dependencies = [
- "blake3",
- "memmap2",
- "serde",
-]
-
-[[package]]
-name = "zccache-platform"
-version = "1.13.22"
-source = "git+https://github.com/zackees/zccache?rev=a7c84de53105ce41b2060bd9dd7730ef226e78a1#a7c84de53105ce41b2060bd9dd7730ef226e78a1"
-dependencies = [
- "crash-handler",
- "interprocess",
- "libc",
- "tokio",
- "windows-sys 0.61.2",
-]
-
[[package]]
name = "zerocopy"
-version = "0.8.48"
+version = "0.8.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
+checksum = "d35102a9f36d089ccae9e4c6802bc118be4487b80aaffc0ab4e0cf5ce92d2873"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.48"
+version = "0.8.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
+checksum = "146c01f5ab44258da43cf276c74a2763db2ff3969c9c652c3f2de07041d0b2bc"
dependencies = [
"proc-macro2",
"quote",
@@ -6909,7 +5702,7 @@ dependencies = [
"memchr",
"pbkdf2",
"sha1",
- "thiserror 2.0.18",
+ "thiserror 2.0.20",
"time",
"xz2",
"zeroize",
diff --git a/Cargo.toml b/Cargo.toml
index b4d61727..e7d63f78 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,46 +7,21 @@ members = [
[workspace.package]
version = "2.0.20"
edition = "2021"
-rust-version = "1.85"
+rust-version = "1.95"
license = "MIT"
repository = "https://github.com/zackees/fastled-wasm"
homepage = "https://github.com/zackees/fastled-wasm"
[workspace.dependencies]
-clap = { version = "4", features = ["derive"] }
-thiserror = "2"
-notify = { version = "7", features = ["macos_fsevent"] }
-sha2 = "0.10"
-fs2 = "0.4"
-reqwest = { version = "0.12", features = ["blocking"] }
-running-process = { version = "4.0.0", default-features = false }
-zip = "2"
-tar = "0.4"
-zstd = "0.13"
-flate2 = "1"
-serde = { version = "1", features = ["derive"] }
-serde_json = "1"
-anyhow = "1"
-ctcb-core = "0.4.1"
-dirs = "5"
-strsim = "0.11"
-crossterm = "0.28"
-tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "fs", "signal"] }
-axum = "0.8"
-tower-http = { version = "0.6", features = ["fs", "cors", "set-header"] }
-tokio-stream = { version = "0.1", features = ["sync"] }
-toml = "0.8"
-tauri = { version = "2", features = ["devtools"] }
-tauri-build = { version = "2", features = [] }
-windows-sys = "0.61"
-# Parallel content-authoritative walker/hasher; remains compatible with Rust 1.85.
-zccache-fingerprint = { git = "https://github.com/zackees/zccache", rev = "a7c84de53105ce41b2060bd9dd7730ef226e78a1" }
-shell-words = "1"
-globset = "0.4"
-tree-sitter = "0.26.9"
-tree-sitter-cpp = "0.23.4"
+kernal-api = { git = "https://github.com/zackees/kernal-api.git", tag = "v0.1.6", features = ["fs", "fs-watch", "hash-sha256", "archive", "http-client", "http-server", "websocket", "event-stream", "secure-random", "text-similarity", "pty", "terminal-input", "terminal-style", "command-arguments", "command-schema", "config-toml", "source-cpp", "json", "error-context"] }
[profile.release]
debug = "line-tables-only"
split-debuginfo = "packed"
strip = "none"
+
+[profile.dev.package.kernal-api]
+codegen-units = 1
+
+[profile.test.package.kernal-api]
+codegen-units = 1
diff --git a/ci/native_viewer_smoke.py b/ci/native_viewer_smoke.py
new file mode 100644
index 00000000..246399c1
--- /dev/null
+++ b/ci/native_viewer_smoke.py
@@ -0,0 +1,127 @@
+"""Exercise shipped viewer bootstrap, HTTP logs/capture, and security teardown.
+
+Run with a built fastled binary inside an isolated native desktop (e.g. Xvfb).
+The fixture uses a real 2D canvas and a minimal ready-event source, not a WASM
+sketch or render worker. This does not replace real sketch/media/DPI validation.
+"""
+
+import argparse
+import json
+import struct
+import subprocess
+import threading
+from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
+from pathlib import Path
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.add_argument("binary", type=Path)
+ args = parser.parse_args()
+ token = "native-viewer-fixture"
+ done = threading.Event()
+ screenshots: list[bytes] = []
+ logs: list[str] = []
+ failures: list[str] = []
+
+ class Handler(BaseHTTPRequestHandler):
+ def setup(self) -> None:
+ super().setup()
+ self.connection.settimeout(5)
+
+ def log_message(self, format: str, *args: object) -> None:
+ pass
+
+ def reply(self, body: bytes = b"", status: int = 200) -> None:
+ self.send_response(status)
+ self.send_header("Content-Length", str(len(body)))
+ self.send_header("Cache-Control", "no-store")
+ self.end_headers()
+ self.wfile.write(body)
+
+ def do_GET(self) -> None:
+ if self.path == "/":
+ page = f"""
+"""
+ self.reply(page.encode())
+ elif self.path == "/test-config":
+ self.reply(json.dumps({"waitMs": 0, "intervalMs": 0, "screenshotNames": ["probe.png"]}).encode())
+ elif self.path == "/probe-done":
+ self.reply(json.dumps(done.is_set()).encode())
+ elif self.path == "/favicon.ico":
+ self.reply(status=204)
+ else:
+ failures.append(f"unexpected GET {self.path}")
+ self.reply(status=404)
+
+ def do_POST(self) -> None:
+ size = int(self.headers.get("Content-Length", "0"))
+ if not 0 <= size <= 1024 * 1024:
+ failures.append("oversize fixture request")
+ self.reply(status=413)
+ return
+ body = self.rfile.read(size)
+ if self.headers.get("Authorization") != f"Bearer {token}":
+ failures.append(f"missing authorization: {self.path}")
+ self.reply(status=403)
+ return
+ if self.path == "/viewer-log" and len(logs) < 128:
+ logs.append(body.decode())
+ elif self.path == "/viewer-screenshot?name=probe.png" and not screenshots:
+ screenshots.append(body)
+ elif self.path == "/test-done":
+ if body != b"0":
+ failures.append(f"capture failed: {body!r}")
+ done.set()
+ elif self.path != "/test-ready" and not self.path.startswith("/test-sleep?ms="):
+ failures.append(f"unexpected POST {self.path}")
+ self.reply()
+
+ server = ThreadingHTTPServer(("127.0.0.1", 0), Handler)
+ server.daemon_threads = True
+ thread = threading.Thread(target=server.serve_forever, daemon=True)
+ thread.start()
+ try:
+ result = subprocess.run(
+ [str(args.binary.resolve()), "--internal-viewer", f"http://127.0.0.1:{server.server_port}/#fastled-test-token={token}", "--viewer-inject-test-runtime"],
+ capture_output=True,
+ text=True,
+ timeout=60,
+ check=False,
+ )
+ finally:
+ server.shutdown()
+ server.server_close()
+ thread.join(timeout=5)
+ assert not failures, failures
+ assert done.is_set(), (logs, result.stderr)
+ assert "log: native-viewer-bootstrap-ok" in logs, logs
+ assert len(screenshots) == 1, logs
+ png = screenshots[0]
+ assert png.startswith(b"\x89PNG\r\n\x1a\n") and len(png) > 32
+ assert struct.unpack(">II", png[16:24]) == (32, 32)
+ assert result.returncode == 1, result
+ assert "navigation was rejected" in result.stderr, result.stderr
+ print("native viewer bootstrap, authenticated logs, 32x32 PNG capture and rejection teardown passed")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ci/safari_smoke.py b/ci/safari_smoke.py
new file mode 100644
index 00000000..42cad975
--- /dev/null
+++ b/ci/safari_smoke.py
@@ -0,0 +1,218 @@
+"""Real Safari smoke test for a compiled FastLED sketch (macOS only).
+
+Serves the compiled output with the shipped binary's headless server (which
+sends the COOP/COEP headers the pthread build needs), drives Safari through
+safaridriver's W3C WebDriver endpoint, and requires the page to render frames
+without a JavaScript error. A WebDriver screenshot is kept as an artifact.
+
+This is the Safari invariant from CLAUDE.md: Chrome-only or Node-only checks
+do not prove Safari compatibility (for example, a build that depends on JSPI
+fails here).
+"""
+
+from __future__ import annotations
+
+import argparse
+import base64
+import json
+import re
+import socket
+import subprocess
+import sys
+import time
+import urllib.error
+import urllib.request
+from pathlib import Path
+
+FRAMES_REQUIRED = 30
+
+PROBE_SCRIPT = """
+const state = window.__fastledSafariSmoke || (window.__fastledSafariSmoke = {
+ frames: 0, errors: [], errorsHooked: false, framesHooked: false
+});
+if (!state.errorsHooked) {
+ state.errorsHooked = true;
+ window.addEventListener('error', (e) => state.errors.push(String(e.message || e.error)));
+ window.addEventListener('unhandledrejection', (e) => state.errors.push(String(e.reason)));
+}
+if (!state.framesHooked && window.fastLEDEvents && typeof window.fastLEDEvents.on === 'function') {
+ state.framesHooked = true;
+ window.fastLEDEvents.on('frame:rendered', () => { state.frames += 1; });
+}
+const canvas = document.getElementById('myCanvas');
+const rect = canvas ? canvas.getBoundingClientRect() : null;
+return {
+ frames: state.frames,
+ framesHooked: state.framesHooked,
+ errors: state.errors,
+ crossOriginIsolated: self.crossOriginIsolated === true,
+ viewportWidth: window.innerWidth,
+ userAgent: navigator.userAgent,
+ canvas: rect ? {x: rect.x, y: rect.y, width: rect.width, height: rect.height,
+ dpr: window.devicePixelRatio || 1} : null,
+ text: document.body ? document.body.innerText.slice(0, 400) : ''
+};
+"""
+
+
+def free_port() -> int:
+ with socket.socket() as sock:
+ sock.bind(("127.0.0.1", 0))
+ return sock.getsockname()[1]
+
+
+def webdriver(
+ method: str, url: str, body: dict | None = None, timeout: float = 60
+) -> dict:
+ data = None if body is None else json.dumps(body).encode()
+ request = urllib.request.Request(
+ url, data=data, method=method, headers={"Content-Type": "application/json"}
+ )
+ try:
+ with urllib.request.urlopen(request, timeout=timeout) as response:
+ return json.loads(response.read() or b"{}")
+ except urllib.error.HTTPError as error:
+ raise RuntimeError(
+ f"{method} {url} -> {error.code}: {error.read().decode(errors='replace')}"
+ )
+
+
+def start_server(
+ fastled: str, serve_dir: str, log_path: Path
+) -> tuple[subprocess.Popen, str]:
+ log = log_path.open("w")
+ process = subprocess.Popen(
+ [fastled, "--internal-serve-dir-headless", serve_dir],
+ stdout=subprocess.PIPE,
+ stderr=log,
+ text=True,
+ )
+ deadline = time.monotonic() + 30
+ assert process.stdout is not None
+ while time.monotonic() < deadline:
+ line = process.stdout.readline()
+ if not line:
+ if process.poll() is not None:
+ raise RuntimeError(f"fastled server exited with {process.returncode}")
+ continue
+ log.write(line)
+ log.flush()
+ match = re.search(r"Serving .* at (http://\S+)", line)
+ if match:
+ return process, match.group(1)
+ raise RuntimeError("fastled server did not report its URL within 30 s")
+
+
+def start_safaridriver() -> tuple[subprocess.Popen, str]:
+ port = free_port()
+ process = subprocess.Popen(["safaridriver", "-p", str(port)])
+ base = f"http://127.0.0.1:{port}"
+ deadline = time.monotonic() + 30
+ while time.monotonic() < deadline:
+ try:
+ if (
+ webdriver("GET", f"{base}/status", timeout=5)
+ .get("value", {})
+ .get("ready")
+ ):
+ return process, base
+ except (OSError, RuntimeError):
+ pass
+ time.sleep(0.5)
+ raise RuntimeError("safaridriver did not become ready within 30 s")
+
+
+def lit_pixels(png: bytes, state: dict) -> tuple[int, int]:
+ from io import BytesIO
+
+ from PIL import Image
+
+ image = Image.open(BytesIO(png)).convert("RGB")
+ rect = state.get("canvas")
+ if rect and rect["width"] > 0 and rect["height"] > 0:
+ scale = image.width / max(1.0, float(state.get("viewportWidth") or image.width))
+ dpr = rect["dpr"] if abs(scale - 1.0) < 0.01 else scale
+ box = (
+ int(rect["x"] * dpr),
+ int(rect["y"] * dpr),
+ int((rect["x"] + rect["width"]) * dpr),
+ int((rect["y"] + rect["height"]) * dpr),
+ )
+ image = image.crop(box)
+ pixels = list(image.getdata())
+ return sum(1 for pixel in pixels if max(pixel) > 60), len(pixels)
+
+
+def main() -> int:
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.add_argument("--fastled", required=True)
+ parser.add_argument("--serve-dir", required=True)
+ parser.add_argument("--artifacts", required=True, type=Path)
+ parser.add_argument("--ready-timeout", type=float, default=120)
+ args = parser.parse_args()
+ args.artifacts.mkdir(parents=True, exist_ok=True)
+
+ server, page_url = start_server(
+ args.fastled, args.serve_dir, args.artifacts / "safari-server.log"
+ )
+ driver, base = start_safaridriver()
+ session = None
+ state: dict = {}
+ try:
+ created = webdriver(
+ "POST",
+ f"{base}/session",
+ {"capabilities": {"alwaysMatch": {"browserName": "safari"}}},
+ )
+ session = f"{base}/session/{created['value']['sessionId']}"
+ webdriver("POST", f"{session}/url", {"url": page_url}, timeout=120)
+ deadline = time.monotonic() + args.ready_timeout
+ while time.monotonic() < deadline:
+ state = webdriver(
+ "POST", f"{session}/execute/sync", {"script": PROBE_SCRIPT, "args": []}
+ )["value"]
+ if state["errors"] or state["frames"] >= FRAMES_REQUIRED:
+ break
+ time.sleep(0.5)
+ png = base64.b64decode(webdriver("GET", f"{session}/screenshot")["value"])
+ (args.artifacts / "safari.png").write_bytes(png)
+ lit, total = lit_pixels(png, state)
+ state["canvasLitPixels"] = f"{lit}/{total}"
+ (args.artifacts / "safari-state.json").write_text(json.dumps(state, indent=2))
+ print(f"Safari: {state['userAgent']}")
+ print(
+ f"Safari: frames={state['frames']} crossOriginIsolated={state['crossOriginIsolated']} "
+ f"canvas lit pixels={lit}/{total}"
+ )
+ if state["errors"]:
+ print(
+ "Safari page errors:\n " + "\n ".join(state["errors"]),
+ file=sys.stderr,
+ )
+ return 1
+ if not state["crossOriginIsolated"]:
+ print(
+ "Safari page is not cross-origin isolated (SharedArrayBuffer unavailable)",
+ file=sys.stderr,
+ )
+ return 1
+ if state["frames"] < FRAMES_REQUIRED:
+ print(
+ f"Safari rendered {state['frames']} frames in {args.ready_timeout:.0f} s "
+ f"(need {FRAMES_REQUIRED}); page text: {state.get('text', '')!r}",
+ file=sys.stderr,
+ )
+ return 1
+ return 0
+ finally:
+ if session:
+ try:
+ webdriver("DELETE", session, timeout=30)
+ except (OSError, RuntimeError):
+ pass
+ driver.terminate()
+ server.terminate()
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/ci/smoke_installed_wheel.sh b/ci/smoke_installed_wheel.sh
new file mode 100755
index 00000000..a85a195e
--- /dev/null
+++ b/ci/smoke_installed_wheel.sh
@@ -0,0 +1,102 @@
+#!/usr/bin/env bash
+# Installs the built wheel from dist/ into a fresh venv and runs the packaged
+# console script outside this checkout, in the shipped viewer. It exercises the
+# wheel's bundled Rust binary and frontend, rather than development fallbacks
+# such as CARGO_MANIFEST_DIR.
+#
+# Set FASTLED_SAFARI_SMOKE=1 (macOS only) to also load the compiled sketch in
+# real Safari through safaridriver while the asset origin is still running.
+set -euo pipefail
+
+SMOKE_ROOT="$RUNNER_TEMP/fastled-wheel-smoke"
+rm -rf "$SMOKE_ROOT"
+mkdir -p "$SMOKE_ROOT/home" "$SMOKE_ROOT/sketch/data" "$SMOKE_ROOT/artifacts" "$SMOKE_ROOT/asset-origin"
+uv venv "$SMOKE_ROOT/venv" --python "$UV_PYTHON"
+uv pip install --python "$SMOKE_ROOT/venv/bin/python" dist/*.whl
+test -x "$SMOKE_ROOT/venv/bin/uv"
+BASE_PYTHON_DIR="$("$SMOKE_ROOT/venv/bin/python" -c 'from pathlib import Path; import sys; print(Path(sys.executable).resolve().parent)')"
+test ! -e "$BASE_PYTHON_DIR/uv"
+cp -R "$GITHUB_WORKSPACE/tests/fixtures/wasm_vfs/." "$SMOKE_ROOT/sketch/"
+cp "$GITHUB_WORKSPACE/tests/fixtures/wasm_vfs_origin/probe.txt" "$SMOKE_ROOT/asset-origin/probe.txt"
+cat > "$SMOKE_ROOT/sketch/data/probe.txt.lnk" <<'EOF'
+http://127.0.0.1:18765/probe.txt
+sha256=2da77f7c1452125633beeeb43f366350018643c799306b4d24d8610d98f02b55
+size_bytes=15
+storage=vfs
+EOF
+cat > "$SMOKE_ROOT/asset_server.py" <<'PY'
+import http.server
+import sys
+
+class Handler(http.server.SimpleHTTPRequestHandler):
+ def end_headers(self):
+ self.send_header("Access-Control-Allow-Origin", "*")
+ self.send_header("Cross-Origin-Resource-Policy", "cross-origin")
+ super().end_headers()
+
+ def log_message(self, *_args):
+ pass
+
+handler = lambda *args, **kwargs: Handler(*args, directory=sys.argv[1], **kwargs)
+http.server.ThreadingHTTPServer(("127.0.0.1", 18765), handler).serve_forever()
+PY
+"$SMOKE_ROOT/venv/bin/python" "$SMOKE_ROOT/asset_server.py" "$SMOKE_ROOT/asset-origin" &
+ASSET_SERVER_PID=$!
+trap 'kill "$ASSET_SERVER_PID" 2>/dev/null || true' EXIT
+for _attempt in {1..20}; do
+ if curl --fail --silent http://127.0.0.1:18765/probe.txt >/dev/null; then break; fi
+ sleep 0.25
+done
+curl --fail --silent http://127.0.0.1:18765/probe.txt >/dev/null
+
+# The installed launcher must supply absolute wheel-venv uv, Python,
+# and frontend paths to the Rust binary. Deliberately omit ambient
+# uv, node, and bare python so this cannot accidentally pass by
+# resolving a developer tool from the runner image.
+cd "$SMOKE_ROOT"
+env -i \
+ HOME="$SMOKE_ROOT/home" \
+ PATH="/usr/bin:/bin:/usr/sbin:/sbin" \
+ /bin/bash -ceu '
+ for tool in uv node python; do
+ if command -v "$tool" >/dev/null 2>&1; then
+ echo "unexpected ambient $tool on restricted PATH" >&2
+ exit 1
+ fi
+ done
+ '
+env -i \
+ HOME="$SMOKE_ROOT/home" \
+ PATH="/usr/bin:/bin:/usr/sbin:/sbin" \
+ "$SMOKE_ROOT/venv/bin/fastled" "$SMOKE_ROOT/sketch" \
+ --check \
+ --test-wait-secs=2 \
+ --test-timeout-secs=240 \
+ --test-ready-timeout-secs=45 \
+ --test-screenshot="$SMOKE_ROOT/artifacts/screenmap.png" \
+ --test-log="$SMOKE_ROOT/artifacts/viewer.log"
+grep -F "Asset 'data/probe.txt' sha256 verified" "$SMOKE_ROOT/artifacts/viewer.log"
+grep -F "All 1 filesystem asset(s) loaded completely before setup()." "$SMOKE_ROOT/artifacts/viewer.log"
+"$SMOKE_ROOT/venv/bin/python" - "$SMOKE_ROOT/artifacts/screenmap.png" <<'PY'
+from pathlib import Path
+import sys
+
+image = Path(sys.argv[1]).read_bytes()
+if image[:8] != b"\x89PNG\r\n\x1a\n":
+ raise SystemExit("viewer screenshot is not a PNG")
+if image[12:16] != b"IHDR" or len(image) < 24:
+ raise SystemExit("viewer screenshot is missing its IHDR header")
+width = int.from_bytes(image[16:20], "big")
+height = int.from_bytes(image[20:24], "big")
+if width <= 0 or height <= 0:
+ raise SystemExit(f"viewer screenshot has invalid dimensions: {width}x{height}")
+PY
+
+if [ "${FASTLED_SAFARI_SMOKE:-0}" = "1" ]; then
+ # The viewer run above left the compiled sketch in sketch/fastled_js; the
+ # asset origin is still serving, so Safari loads the same program.
+ uv run --no-project --with pillow python "$GITHUB_WORKSPACE/ci/safari_smoke.py" \
+ --fastled "$SMOKE_ROOT/venv/bin/fastled" \
+ --serve-dir "$SMOKE_ROOT/sketch/fastled_js" \
+ --artifacts "$SMOKE_ROOT/artifacts"
+fi
diff --git a/crates/fastled-cli/Cargo.toml b/crates/fastled-cli/Cargo.toml
index 0019db8c..a67d73e4 100644
--- a/crates/fastled-cli/Cargo.toml
+++ b/crates/fastled-cli/Cargo.toml
@@ -10,7 +10,7 @@ description = "FastLED WASM compilation CLI"
[features]
default = ["viewer"]
-viewer = ["dep:tauri", "dep:tauri-build", "dep:gtk", "dep:webkit2gtk"]
+viewer = ["kernal-api/tauri-webview"]
[lib]
name = "fastled_cli"
@@ -21,61 +21,16 @@ name = "fastled"
path = "src/main.rs"
[dependencies]
-clap = { workspace = true }
-notify = { workspace = true }
-sha2 = { workspace = true }
-fs2 = { workspace = true }
-reqwest = { workspace = true }
-running-process = { workspace = true }
-zip = { workspace = true }
-tar = { workspace = true }
-zstd = { workspace = true }
-flate2 = { workspace = true }
-serde = { workspace = true }
-serde_json = { workspace = true }
-anyhow = { workspace = true }
-ctcb-core = { workspace = true }
-strsim = { workspace = true }
-crossterm = { workspace = true }
-tokio = { workspace = true }
-axum = { workspace = true, features = ["ws"] }
-portable-pty = "=0.9.0"
-tower-http = { workspace = true }
-tokio-stream = { workspace = true }
-dirs = { workspace = true }
-toml = { workspace = true }
-tauri = { workspace = true, optional = true }
-tempfile = "3"
-zccache-fingerprint = { workspace = true }
-shell-words = { workspace = true }
-globset = { workspace = true }
-getrandom = "0.3"
-tree-sitter = { workspace = true }
-tree-sitter-cpp = { workspace = true }
+kernal-api = { workspace = true }
+# build.rs embeds the Windows icon, version information and manifest through
+# kernal-api's build-script capability. Same source and tag as the workspace
+# dependency, but only that feature, so the build script does not compile the
+# runtime capabilities a second time.
[build-dependencies]
-indexmap = { version = "1.9.3", features = ["std"] }
-tauri-build = { workspace = true, optional = true }
-
-[target.'cfg(unix)'.dependencies]
-libc = "0.2"
-
-[target.'cfg(target_os = "linux")'.dependencies]
-# Same gtk 0.18 that tauri/tao link; used to correct GTK's font DPI before the webview exists.
-gtk = { version = "0.18", optional = true }
-# Same webkit2gtk that wry links; used to grant microphone access to the page.
-webkit2gtk = { version = "2.0", features = ["v2_40"], optional = true }
-
-[target.'cfg(windows)'.dependencies]
-windows-sys = { workspace = true, features = [
- "Win32_Foundation",
- "Win32_System_JobObjects",
- "Win32_System_Threading",
-] }
+kernal-api = { git = "https://github.com/zackees/kernal-api.git", tag = "v0.1.6", default-features = false, features = ["windows-app-resources"] }
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/fastled-{ target }{ archive-suffix }"
bin-dir = "fastled{ binary-ext }"
pkg-fmt = "zip"
-
-[dev-dependencies]
diff --git a/crates/fastled-cli/build.rs b/crates/fastled-cli/build.rs
index 1895a7c2..a4257e7c 100644
--- a/crates/fastled-cli/build.rs
+++ b/crates/fastled-cli/build.rs
@@ -1,4 +1,17 @@
+//! Embeds the Windows executable's icon, version information and application
+//! manifest. Only the binary's own build script can link these resources, so
+//! the mechanics live in kernal-api and this file only declares the product.
+
+use kernal_api::windows_resources::{embed_windows_app_resources, WindowsAppResources};
+
fn main() {
- #[cfg(feature = "viewer")]
- tauri_build::build();
+ println!("cargo:rerun-if-changed=build.rs");
+ let resources =
+ match WindowsAppResources::new("FastLED Viewer", "fastled", env!("CARGO_PKG_VERSION")) {
+ Ok(resources) => resources.with_icon("icons/icon.ico"),
+ Err(error) => panic!("fastled: invalid Windows resource metadata: {error}"),
+ };
+ if let Err(error) = embed_windows_app_resources(&resources) {
+ panic!("fastled: {error}");
+ }
}
diff --git a/crates/fastled-cli/gen/schemas/acl-manifests.json b/crates/fastled-cli/gen/schemas/acl-manifests.json
deleted file mode 100644
index 43da9ef6..00000000
--- a/crates/fastled-cli/gen/schemas/acl-manifests.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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"]},"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-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-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-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-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"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-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-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-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-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-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/crates/fastled-cli/gen/schemas/capabilities.json b/crates/fastled-cli/gen/schemas/capabilities.json
deleted file mode 100644
index 9e26dfee..00000000
--- a/crates/fastled-cli/gen/schemas/capabilities.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/crates/fastled-cli/gen/schemas/desktop-schema.json b/crates/fastled-cli/gen/schemas/desktop-schema.json
deleted file mode 100644
index 260dbe05..00000000
--- a/crates/fastled-cli/gen/schemas/desktop-schema.json
+++ /dev/null
@@ -1,2244 +0,0 @@
-{
- "$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`",
- "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`"
- },
- {
- "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 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 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-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-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_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_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-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-internal-toggle-maximize`"
- },
- {
- "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 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 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 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/crates/fastled-cli/gen/schemas/windows-schema.json b/crates/fastled-cli/gen/schemas/windows-schema.json
deleted file mode 100644
index 260dbe05..00000000
--- a/crates/fastled-cli/gen/schemas/windows-schema.json
+++ /dev/null
@@ -1,2244 +0,0 @@
-{
- "$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`",
- "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`"
- },
- {
- "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 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 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-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-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_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_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-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-internal-toggle-maximize`"
- },
- {
- "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 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 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 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/crates/fastled-cli/src/archive.rs b/crates/fastled-cli/src/archive.rs
index 5d3f1ea1..2c629498 100644
--- a/crates/fastled-cli/src/archive.rs
+++ b/crates/fastled-cli/src/archive.rs
@@ -7,11 +7,11 @@
//! * Writing the `.emscripten` config file after installation
use std::fs::{self, File};
-use std::io::{BufReader, BufWriter, Read, Write};
+use std::io::{BufWriter, Read, Write};
use std::path::{Path, PathBuf};
-use anyhow::{Context, Result};
-use sha2::{Digest, Sha256};
+use crate::error_compat::{Context, Result};
+use kernal_api::archive::{ArchiveFormat, DanglingLinks, ExtractionLimits};
// ---------------------------------------------------------------------------
// Download
@@ -19,27 +19,34 @@ use sha2::{Digest, Sha256};
/// Download a file from `url` and write it to `dest`.
///
-/// Uses a blocking reqwest client with a 120-second timeout, streaming the
+/// Uses the kernel HTTP client with a 120-second timeout, streaming the
/// response body so large archives do not need to be buffered in memory.
///
/// # Errors
/// Returns an error if the HTTP request fails, the server returns a non-2xx
/// status, or writing the destination file fails.
pub fn download(url: &str, dest: &Path) -> Result<()> {
- let client = reqwest::blocking::Client::builder()
- .timeout(std::time::Duration::from_secs(120))
- .redirect(reqwest::redirect::Policy::limited(10))
+ let runtime = kernal_api::async_engine::RuntimeBuilder::current_thread()
+ .enable_all()
.build()
- .context("failed to build HTTP client")?;
+ .context("failed to build download runtime")?;
+ let client = kernal_api::http::BlockingClient::new(
+ &runtime,
+ kernal_api::http::Limits {
+ max_redirects: 10,
+ max_body_bytes: 16 * 1024 * 1024 * 1024,
+ ..kernal_api::http::Limits::default()
+ },
+ )
+ .context("failed to build HTTP client")?;
let mut response = client
.get(url)
- .send()
.with_context(|| format!("GET {url} failed"))?;
- response
- .error_for_status_ref()
- .with_context(|| format!("server returned error for {url}"))?;
+ if !(200..300).contains(&response.status()) {
+ crate::error_compat::bail!("server returned HTTP {} for {url}", response.status());
+ }
let file = File::create(dest).with_context(|| format!("cannot create {}", dest.display()))?;
let mut writer = BufWriter::new(file);
@@ -69,28 +76,15 @@ pub fn download(url: &str, dest: &Path) -> Result<()> {
/// Compute the SHA-256 hex digest of `path`.
pub fn sha256_file(path: &Path) -> Result {
- let file =
- File::open(path).with_context(|| format!("cannot open {} for hashing", path.display()))?;
- let mut reader = BufReader::new(file);
- let mut hasher = Sha256::new();
-
- let mut buf = vec![0u8; 1024 * 1024];
- loop {
- let n = reader
- .read(&mut buf)
- .with_context(|| format!("read error hashing {}", path.display()))?;
- if n == 0 {
- break;
- }
- hasher.update(&buf[..n]);
- }
-
- Ok(format!("{:x}", hasher.finalize()))
+ // FastLED toolchain artifacts must fit within this product-level bound.
+ kernal_api::hash::sha256_file(path, 16 * 1024 * 1024 * 1024)
+ .map(|digest| digest.to_hex())
+ .with_context(|| format!("cannot hash {}", path.display()))
}
/// Return `true` when the SHA-256 digest of `path` matches `expected`.
///
-/// `expected` must be a lower-case hex string (64 characters).
+/// `expected` is a 64-character hex string, compared case-insensitively.
///
/// # Errors
/// Returns an error if the file cannot be read.
@@ -107,25 +101,25 @@ pub fn verify_sha256(path: &Path, expected: &str) -> Result {
///
/// If the archive contains a single top-level directory, its contents are
/// promoted one level up (mirrors the Python behaviour in `_extract_archive`).
+/// The caller owns an absent or empty staging directory; failures may leave
+/// partial output for the caller to clean up.
///
/// # Errors
/// Returns an error if the archive cannot be read or if any entry cannot be
/// written to `dest`.
pub fn extract_tar_zst(archive: &Path, dest: &Path) -> Result<()> {
- fs::create_dir_all(dest)
- .with_context(|| format!("cannot create destination {}", dest.display()))?;
-
- let file = File::open(archive)
- .with_context(|| format!("cannot open archive {}", archive.display()))?;
- let buf_reader = BufReader::new(file);
-
- let zstd_decoder = zstd::stream::read::Decoder::new(buf_reader)
- .context("failed to initialise zstd decoder")?;
-
- let mut tar_archive = tar::Archive::new(zstd_decoder);
- tar_archive
- .unpack(dest)
- .with_context(|| format!("failed to unpack tar archive to {}", dest.display()))?;
+ // The pinned Linux toolchain contains dangling npm links with literal
+ // backslashes. Preserve their payloads, while requiring confined targets.
+ kernal_api::archive::extract(
+ archive,
+ dest,
+ ArchiveFormat::TarZstd,
+ ExtractionLimits {
+ dangling_links: DanglingLinks::PreserveMissingLeaf,
+ ..ExtractionLimits::default()
+ },
+ )
+ .with_context(|| format!("failed to unpack tar archive to {}", dest.display()))?;
// Promote single top-level directory (mirrors Python's behaviour).
_promote_single_child(dest)?;
@@ -139,50 +133,20 @@ pub fn extract_tar_zst(archive: &Path, dest: &Path) -> Result<()> {
/// Extract a `.zip` archive to `dest`.
///
-/// Creates `dest` if it does not exist. All entries (files and directories)
-/// are extracted, preserving relative paths.
+/// Requires an absent or empty, caller-exclusive staging directory. Entries
+/// are extracted preserving relative paths; failure may leave partial output.
///
/// # Errors
/// Returns an error if the archive cannot be read or any entry cannot be
/// written.
pub fn extract_zip(archive: &Path, dest: &Path) -> Result<()> {
- fs::create_dir_all(dest)
- .with_context(|| format!("cannot create destination {}", dest.display()))?;
-
- let file = File::open(archive)
- .with_context(|| format!("cannot open zip archive {}", archive.display()))?;
- let buf_reader = BufReader::new(file);
- let mut zip = zip::ZipArchive::new(buf_reader)
- .with_context(|| format!("cannot parse zip archive {}", archive.display()))?;
-
- for i in 0..zip.len() {
- let mut entry = zip
- .by_index(i)
- .with_context(|| format!("cannot read zip entry {i}"))?;
-
- let entry_path: PathBuf = entry
- .enclosed_name()
- .with_context(|| format!("zip entry {i} has an unsafe path"))?
- .to_path_buf();
-
- let out_path = dest.join(&entry_path);
-
- if entry.is_dir() {
- fs::create_dir_all(&out_path)
- .with_context(|| format!("cannot create dir {}", out_path.display()))?;
- } else {
- if let Some(parent) = out_path.parent() {
- fs::create_dir_all(parent)
- .with_context(|| format!("cannot create parent {}", parent.display()))?;
- }
- let mut out_file = File::create(&out_path)
- .with_context(|| format!("cannot create {}", out_path.display()))?;
- std::io::copy(&mut entry, &mut out_file)
- .with_context(|| format!("cannot write {}", out_path.display()))?;
- }
- }
-
- Ok(())
+ kernal_api::archive::extract(
+ archive,
+ dest,
+ ArchiveFormat::Zip,
+ ExtractionLimits::default(),
+ )
+ .with_context(|| format!("failed to unpack zip archive to {}", dest.display()))
}
// ---------------------------------------------------------------------------
@@ -193,37 +157,20 @@ pub fn extract_zip(archive: &Path, dest: &Path) -> Result<()> {
///
/// Used to pluck the esbuild binary out of an npm-style tarball (`package/...`
/// layout) without unpacking the whole archive.
+/// The destination file must not exist; the caller owns cleanup on failure.
///
/// # Errors
/// Returns an error if the archive cannot be read or if `member` is not
/// present in the archive.
pub fn extract_member_from_tgz(archive: &Path, member: &str, dest: &Path) -> Result<()> {
- let file = File::open(archive)
- .with_context(|| format!("cannot open archive {}", archive.display()))?;
- let gz = flate2::read::GzDecoder::new(BufReader::new(file));
- let mut tar_archive = tar::Archive::new(gz);
-
- for entry in tar_archive
- .entries()
- .with_context(|| format!("cannot iterate entries of {}", archive.display()))?
- {
- let mut entry = entry.with_context(|| format!("bad entry in {}", archive.display()))?;
- let path = entry
- .path()
- .with_context(|| format!("bad entry path in {}", archive.display()))?;
- if path.to_string_lossy() == member {
- if let Some(parent) = dest.parent() {
- fs::create_dir_all(parent)
- .with_context(|| format!("cannot create parent {}", parent.display()))?;
- }
- let mut out =
- File::create(dest).with_context(|| format!("cannot create {}", dest.display()))?;
- std::io::copy(&mut entry, &mut out)
- .with_context(|| format!("cannot write {}", dest.display()))?;
- return Ok(());
- }
- }
- anyhow::bail!("member {member} not found in {}", archive.display());
+ kernal_api::archive::extract_member(
+ archive,
+ member,
+ dest,
+ ArchiveFormat::TarGzip,
+ ExtractionLimits::default(),
+ )
+ .with_context(|| format!("cannot extract {member} from {}", archive.display()))
}
// ---------------------------------------------------------------------------
@@ -243,8 +190,17 @@ pub fn extract_member_from_tgz(archive: &Path, member: &str, dest: &Path) -> Res
/// # Errors
/// Returns an error if the file cannot be written.
pub fn write_emscripten_config(install_dir: &Path, node_path: &Path) -> Result<()> {
+ write_emscripten_config_at(install_dir, install_dir, node_path)
+}
+
+/// Write configuration for its final location while it is still staged.
+pub(crate) fn write_emscripten_config_at(
+ config_dir: &Path,
+ install_dir: &Path,
+ node_path: &Path,
+) -> Result<()> {
if !node_path.is_absolute() {
- anyhow::bail!(
+ crate::error_compat::bail!(
"NODE_JS must be an absolute path, got {}",
node_path.display()
);
@@ -265,7 +221,7 @@ pub fn write_emscripten_config(install_dir: &Path, node_path: &Path) -> Result<(
path_to_forward_slash(node_path),
);
- let config_path = install_dir.join(".emscripten");
+ let config_path = config_dir.join(".emscripten");
if fs::read_to_string(&config_path).ok().as_deref() == Some(config.as_str()) {
return Ok(());
}
@@ -322,11 +278,44 @@ fn _promote_single_child(dir: &Path) -> Result<()> {
#[cfg(test)]
mod tests {
use super::*;
- use std::io::Write;
- use tempfile::TempDir;
+ use kernal_api::platform::fs::TemporaryDirectory;
+
+ fn temp_dir() -> TemporaryDirectory {
+ kernal_api::platform::fs::TemporaryDirectory::new().expect("tempdir")
+ }
- fn temp_dir() -> TempDir {
- tempfile::tempdir().expect("tempdir")
+ #[test]
+ fn download_writes_artifact_and_preserves_destination_on_http_error() {
+ for status in [200, 404] {
+ let dir = temp_dir();
+ let destination = dir.path().join("artifact.zip");
+ fs::write(&destination, b"previous artifact").unwrap();
+ let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap();
+ let url = format!("http://{}/artifact.zip", listener.local_addr().unwrap());
+ let worker = std::thread::spawn(move || {
+ let (mut socket, _) = listener.accept().unwrap();
+ socket
+ .set_read_timeout(Some(std::time::Duration::from_secs(3)))
+ .unwrap();
+ let mut request = Vec::new();
+ while !request.ends_with(b"\r\n\r\n") {
+ let mut byte = [0];
+ socket.read_exact(&mut byte).unwrap();
+ request.push(byte[0]);
+ assert!(request.len() < 4096);
+ }
+ write!(socket, "HTTP/1.1 {status} Fixture\r\nContent-Length: 8\r\nConnection: close\r\n\r\nartifact").unwrap();
+ });
+ let result = download(&url, &destination);
+ worker.join().unwrap();
+ if status == 200 {
+ result.unwrap();
+ assert_eq!(fs::read(destination).unwrap(), b"artifact");
+ } else {
+ assert!(result.is_err());
+ assert_eq!(fs::read(destination).unwrap(), b"previous artifact");
+ }
+ }
}
// ------------------------------------------------------------------
@@ -335,19 +324,9 @@ mod tests {
/// A known SHA-256 digest of the bytes `b"hello fastled"`.
///
- /// Computed via: `sha2::Sha256::digest(b"hello fastled")` rendered as hex.
+ /// Fixed fixture; generic SHA-256 known-vector tests live in kernal-api.
const HELLO_SHA256: &str = "9371e29d4390b284420993a4161cbda766dc36ce4d8396398a849d1de4d652d6";
- #[test]
- fn test_sha256_known_value() {
- // Use sha2 directly to verify the constant matches the real digest.
- let content = b"hello fastled";
- let mut h = Sha256::new();
- h.update(content);
- let actual = format!("{:x}", h.finalize());
- assert_eq!(actual, HELLO_SHA256, "HELLO_SHA256 constant is incorrect");
- }
-
#[test]
fn test_verify_sha256_correct() {
let dir = temp_dir();
@@ -355,12 +334,7 @@ mod tests {
let content = b"hello fastled";
fs::write(&file, content).unwrap();
- // Compute expected digest independently.
- let mut h = Sha256::new();
- h.update(content);
- let expected = format!("{:x}", h.finalize());
-
- let ok = verify_sha256(&file, &expected).expect("verify_sha256");
+ let ok = verify_sha256(&file, HELLO_SHA256).expect("verify_sha256");
assert!(ok, "digest should match");
}
@@ -375,68 +349,17 @@ mod tests {
}
#[test]
- fn test_sha256_file_changes_on_content_change() {
- let dir = temp_dir();
- let file = dir.path().join("test.bin");
-
- fs::write(&file, b"version one").unwrap();
- let h1 = sha256_file(&file).expect("hash1");
-
- fs::write(&file, b"version two").unwrap();
- let h2 = sha256_file(&file).expect("hash2");
-
- assert_ne!(h1, h2, "hash must differ after content change");
- }
-
- // ------------------------------------------------------------------
- // ZIP extraction
- // ------------------------------------------------------------------
-
- /// Build a minimal in-memory zip containing two files and return the bytes.
- fn make_zip(files: &[(&str, &[u8])]) -> Vec {
- let buf = std::io::Cursor::new(Vec::new());
- let mut zip = zip::ZipWriter::new(buf);
- let options = zip::write::SimpleFileOptions::default();
- for (name, content) in files {
- zip.start_file(*name, options).unwrap();
- zip.write_all(content).unwrap();
- }
- zip.finish().unwrap().into_inner()
- }
-
- #[test]
- fn test_extract_zip_basic() {
+ fn test_verify_sha256_accepts_uppercase_seal() {
let dir = temp_dir();
- let zip_path = dir.path().join("test.zip");
-
- let zip_bytes = make_zip(&[
- ("hello.txt", b"hello world"),
- ("sub/world.txt", b"sub content"),
- ]);
- fs::write(&zip_path, &zip_bytes).unwrap();
-
- let out = dir.path().join("out");
- extract_zip(&zip_path, &out).expect("extract_zip");
-
- assert_eq!(fs::read(out.join("hello.txt")).unwrap(), b"hello world");
- assert_eq!(
- fs::read(out.join("sub").join("world.txt")).unwrap(),
- b"sub content"
- );
+ let file = dir.path().join("data.bin");
+ fs::write(&file, b"hello fastled").unwrap();
+ assert!(verify_sha256(&file, &HELLO_SHA256.to_uppercase()).unwrap());
}
#[test]
- fn test_extract_zip_creates_dest() {
+ fn test_verify_sha256_missing_artifact_is_an_error() {
let dir = temp_dir();
- let zip_path = dir.path().join("test.zip");
- let zip_bytes = make_zip(&[("file.txt", b"data")]);
- fs::write(&zip_path, &zip_bytes).unwrap();
-
- // Destination does not exist yet.
- let out = dir.path().join("nested").join("dest");
- extract_zip(&zip_path, &out).expect("extract_zip");
-
- assert_eq!(fs::read(out.join("file.txt")).unwrap(), b"data");
+ assert!(verify_sha256(&dir.path().join("missing.bin"), HELLO_SHA256).is_err());
}
// ------------------------------------------------------------------
@@ -522,7 +445,7 @@ mod tests {
#[test]
fn test_write_emscripten_config_does_not_touch_unchanged_file() {
- let dir = tempfile::tempdir().unwrap();
+ let dir = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let install_dir = dir.path().join("emscripten").join("4.0.19");
fs::create_dir_all(&install_dir).unwrap();
let node = install_dir.join("managed-node");
diff --git a/crates/fastled-cli/src/cache_upgrade.rs b/crates/fastled-cli/src/cache_upgrade.rs
index f5fba56e..64f5ffc7 100644
--- a/crates/fastled-cli/src/cache_upgrade.rs
+++ b/crates/fastled-cli/src/cache_upgrade.rs
@@ -2,8 +2,7 @@ use std::fs::{self, OpenOptions};
use std::io::{self, IsTerminal};
use std::path::Path;
-use anyhow::{Context, Result};
-use fs2::FileExt;
+use crate::error_compat::{Context, Result};
use crate::path::NormalizedPath;
@@ -23,7 +22,7 @@ fn fastled_root() -> Result {
return Ok(NormalizedPath::new(root));
}
Ok(NormalizedPath::new(
- dirs::home_dir()
+ kernal_api::platform::fs::user_home_dir()
.context("cannot resolve home directory for cache upgrade cleanup")?
.join(".fastled"),
))
@@ -93,7 +92,7 @@ where
.write(true)
.open(&lock_path)
.with_context(|| format!("open cache upgrade lock {}", lock_path.display()))?;
- FileExt::lock_exclusive(&lock)
+ let _guard = kernal_api::platform::fs::lock_exclusive(&lock)
.with_context(|| format!("lock cache upgrade state {}", lock_path.display()))?;
// Another process may have completed the cleanup while this process was
@@ -184,7 +183,7 @@ mod tests {
#[test]
fn first_version_clears_only_shared_cache_and_records_breadcrumb() {
- let temp = tempfile::tempdir().unwrap();
+ let temp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let root = temp.path();
write(&root.join("cache/legacy.txt"), "stale");
write(&root.join("toolchains/keep.txt"), "toolchain");
@@ -211,7 +210,7 @@ mod tests {
#[test]
fn same_version_preserves_new_cache_and_emits_no_warning() {
- let temp = tempfile::tempdir().unwrap();
+ let temp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let root = temp.path();
write(&root.join("cache/legacy.txt"), "stale");
ensure_cache_version(root, "2.0.16").unwrap();
@@ -229,7 +228,7 @@ mod tests {
#[test]
fn changed_version_clears_cache_once_again() {
- let temp = tempfile::tempdir().unwrap();
+ let temp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let root = temp.path();
ensure_cache_version(root, "2.0.16").unwrap();
write(&root.join("cache/from-old-version.txt"), "stale");
@@ -247,7 +246,7 @@ mod tests {
#[test]
fn missing_cache_records_version_silently() {
- let temp = tempfile::tempdir().unwrap();
+ let temp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let outcome = ensure_cache_version(temp.path(), "2.0.16").unwrap();
@@ -261,7 +260,7 @@ mod tests {
#[test]
fn deletion_failure_does_not_publish_breadcrumb() {
- let temp = tempfile::tempdir().unwrap();
+ let temp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let root = temp.path();
write(&root.join("cache/legacy.txt"), "stale");
@@ -276,7 +275,7 @@ mod tests {
#[test]
fn breadcrumb_failure_does_not_publish_success() {
- let temp = tempfile::tempdir().unwrap();
+ let temp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let root = temp.path();
write(&root.join("cache/legacy.txt"), "stale");
fs::create_dir_all(breadcrumb_temp_path(root, "2.0.16")).unwrap();
@@ -289,7 +288,7 @@ mod tests {
#[test]
fn concurrent_first_runs_clear_once_after_rechecking_under_lock() {
- let temp = tempfile::tempdir().unwrap();
+ let temp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let root = temp.path().to_path_buf();
write(&root.join("cache/legacy.txt"), "stale");
let barrier = Arc::new(Barrier::new(3));
diff --git a/crates/fastled-cli/src/clangd_config.rs b/crates/fastled-cli/src/clangd_config.rs
index 7258bb04..5f5f9eb6 100644
--- a/crates/fastled-cli/src/clangd_config.rs
+++ b/crates/fastled-cli/src/clangd_config.rs
@@ -16,8 +16,9 @@
use std::path::Path;
-use anyhow::{Context, Result};
-use serde_json::json;
+use crate::error_compat::{Context, Result};
+use kernal_api::json::{self, Layout, Value as DocumentValue};
+use std::collections::BTreeMap;
use crate::install;
use crate::path::NormalizedPath;
@@ -234,21 +235,49 @@ fn write_compile_commands(inputs: &ClangdConfigInputs, paths: &ResolvedPaths) ->
.iter()
.map(|ino_file| {
let ino = display_path(ino_file);
- json!({
- "directory": paths.fastled_dir,
- "file": ino,
- "arguments": compile_arguments(inputs, paths, &ino, true, Some(&prelude)),
- })
+ DocumentValue::Object(
+ [
+ (
+ "directory".into(),
+ DocumentValue::String(paths.fastled_dir.clone()),
+ ),
+ ("file".into(), DocumentValue::String(ino.clone())),
+ (
+ "arguments".into(),
+ DocumentValue::Array(
+ compile_arguments(inputs, paths, &ino, true, Some(&prelude))
+ .into_iter()
+ .map(DocumentValue::String)
+ .collect(),
+ ),
+ ),
+ ]
+ .into(),
+ )
})
.collect::>();
- entries.push(json!({
- "directory": paths.fastled_dir,
- "file": wrapper,
- "arguments": compile_arguments(inputs, paths, &wrapper, false, None),
- }));
- install::write_json_file(
+ entries.push(DocumentValue::Object(
+ [
+ (
+ "directory".into(),
+ DocumentValue::String(paths.fastled_dir.clone()),
+ ),
+ ("file".into(), DocumentValue::String(wrapper.clone())),
+ (
+ "arguments".into(),
+ DocumentValue::Array(
+ compile_arguments(inputs, paths, &wrapper, false, None)
+ .into_iter()
+ .map(DocumentValue::String)
+ .collect(),
+ ),
+ ),
+ ]
+ .into(),
+ ));
+ write_editor_document(
&inputs.sketch_dir.join("compile_commands.json"),
- &serde_json::Value::Array(entries),
+ &DocumentValue::Array(entries),
)
}
@@ -286,47 +315,76 @@ fn write_clangd_file(inputs: &ClangdConfigInputs, paths: &ResolvedPaths) -> Resu
fn write_vscode_settings(paths: &ResolvedPaths, sketch_dir: &Path) -> Result<()> {
let settings_path = sketch_dir.join(".vscode").join("settings.json");
- let mut settings = install::read_json_file(&settings_path, json!({}));
- if !settings.is_object() {
- settings = json!({});
- }
- let object = settings.as_object_mut().expect("settings.json root object");
+ let mut object = read_editor_settings(&settings_path)?;
object.insert(
"clangd.arguments".to_string(),
- json!([
- "--compile-commands-dir=${workspaceFolder}",
- format!("--query-driver={}", paths.clangxx),
- "--background-index",
- "--header-insertion=never",
- "--completion-style=detailed",
- "--pch-storage=memory",
- ]),
+ DocumentValue::Array(
+ [
+ "--compile-commands-dir=${workspaceFolder}".into(),
+ format!("--query-driver={}", paths.clangxx),
+ "--background-index".into(),
+ "--header-insertion=never".into(),
+ "--completion-style=detailed".into(),
+ "--pch-storage=memory".into(),
+ ]
+ .into_iter()
+ .map(DocumentValue::String)
+ .collect(),
+ ),
);
object.insert(
"clangd.fallbackFlags".to_string(),
- json!([
- "-std=c++20",
- "--target=wasm32-unknown-emscripten",
- format!("-I{}", paths.fastled_src),
- format!("-I{}", paths.fastled_wasm_compiler),
- format!("-isystem{}", paths.libcxx_include),
- format!("-isystem{}", paths.sysroot_compat_include),
- "-D__EMSCRIPTEN__=1",
- ]),
+ DocumentValue::Array(
+ [
+ "-std=c++20".into(),
+ "--target=wasm32-unknown-emscripten".into(),
+ format!("-I{}", paths.fastled_src),
+ format!("-I{}", paths.fastled_wasm_compiler),
+ format!("-isystem{}", paths.libcxx_include),
+ format!("-isystem{}", paths.sysroot_compat_include),
+ "-D__EMSCRIPTEN__=1".into(),
+ ]
+ .into_iter()
+ .map(DocumentValue::String)
+ .collect(),
+ ),
);
- let associations = object
- .entry("files.associations")
- .or_insert_with(|| json!({}));
- if !associations.is_object() {
- *associations = json!({});
+ let mut associations = match object.remove("files.associations") {
+ Some(DocumentValue::Object(value)) => value,
+ _ => BTreeMap::new(),
+ };
+ associations.insert("*.ino".into(), DocumentValue::String("cpp".into()));
+ object.insert(
+ "files.associations".into(),
+ DocumentValue::Object(associations),
+ );
+
+ write_editor_document(&settings_path, &DocumentValue::Object(object))
+}
+
+// Editor policy: retain unknown object fields; missing, malformed and nonobject
+// settings start empty. Resource failures must never erase a valid settings file.
+fn read_editor_settings(path: &Path) -> Result> {
+ let Ok(text) = std::fs::read_to_string(path) else {
+ return Ok(BTreeMap::new());
+ };
+ match json::parse(text.as_bytes()) {
+ Ok(DocumentValue::Object(value)) => Ok(value),
+ Ok(_) | Err(json::Error::InvalidSyntax) => Ok(BTreeMap::new()),
+ Err(error) => {
+ Err(error).with_context(|| format!("read editor settings {}", path.display()))
+ }
}
- associations
- .as_object_mut()
- .expect("files.associations object")
- .insert("*.ino".to_string(), json!("cpp"));
+}
- install::write_json_file(&settings_path, &settings)
+fn write_editor_document(path: &Path, value: &DocumentValue) -> Result<()> {
+ let mut bytes = json::encode(value, Layout::Pretty).context("serialize editor JSON")?;
+ bytes.push(b'\n');
+ if let Some(parent) = path.parent() {
+ std::fs::create_dir_all(parent).with_context(|| format!("create {}", parent.display()))?;
+ }
+ std::fs::write(path, bytes).with_context(|| format!("write {}", path.display()))
}
/// Emit the same compile database and forced declaration prelude for the
@@ -337,23 +395,45 @@ fn write_cpptools_config(inputs: &ClangdConfigInputs, paths: &ResolvedPaths) ->
.sketch_dir
.join(".vscode")
.join("c_cpp_properties.json");
- let mut properties = install::read_json_file(&path, json!({}));
- if !properties.is_object() {
- properties = json!({});
- }
- let root = properties.as_object_mut().expect("properties root object");
+ let mut root = read_editor_settings(&path)?;
root.insert(
"configurations".to_string(),
- json!([{
- "name": "FastLED WASM",
- "compilerPath": paths.clangxx,
- "compileCommands": "${workspaceFolder}/compile_commands.json",
- "cppStandard": "c++20",
- "includePath": [paths.sketch_dir, paths.fastled_src, paths.fastled_wasm_compiler],
- "forcedInclude": [display_path(&inputs.prototype_header)],
- }]),
+ DocumentValue::Array(vec![DocumentValue::Object(
+ [
+ ("name".into(), DocumentValue::String("FastLED WASM".into())),
+ (
+ "compilerPath".into(),
+ DocumentValue::String(paths.clangxx.clone()),
+ ),
+ (
+ "compileCommands".into(),
+ DocumentValue::String("${workspaceFolder}/compile_commands.json".into()),
+ ),
+ ("cppStandard".into(), DocumentValue::String("c++20".into())),
+ (
+ "includePath".into(),
+ DocumentValue::Array(
+ [
+ paths.sketch_dir.clone(),
+ paths.fastled_src.clone(),
+ paths.fastled_wasm_compiler.clone(),
+ ]
+ .into_iter()
+ .map(DocumentValue::String)
+ .collect(),
+ ),
+ ),
+ (
+ "forcedInclude".into(),
+ DocumentValue::Array(vec![DocumentValue::String(display_path(
+ &inputs.prototype_header,
+ ))]),
+ ),
+ ]
+ .into(),
+ )]),
);
- install::write_json_file(&path, &properties)
+ write_editor_document(&path, &DocumentValue::Object(root))
}
/// Write `compile_commands.json`, `.clangd`, and `.vscode/settings.json`
@@ -380,7 +460,7 @@ pub fn run_write_clangd(dir_arg: &str) -> Result<()> {
};
let sketch_dir = crate::path::canonicalize_normalized(&sketch_dir);
if !sketch_dir.is_dir() {
- anyhow::bail!("sketch directory does not exist: {}", sketch_dir.display());
+ crate::error_compat::bail!("sketch directory does not exist: {}", sketch_dir.display());
}
let emsdk_install_dir = NormalizedPath::new(install::ensure_emscripten_installed()?);
let tools_emcc_path = emsdk_install_dir.join("emscripten").join("emcc.py");
@@ -432,9 +512,33 @@ pub fn run_write_clangd(dir_arg: &str) -> Result<()> {
#[cfg(test)]
mod tests {
use super::*;
- use serde_json::Value;
use std::fs;
+ fn field<'a>(value: &'a DocumentValue, key: &str) -> &'a DocumentValue {
+ let DocumentValue::Object(fields) = value else {
+ panic!("expected editor object")
+ };
+ fields.get(key).expect("expected editor field")
+ }
+
+ fn array(value: &DocumentValue) -> &[DocumentValue] {
+ let DocumentValue::Array(values) = value else {
+ panic!("expected editor array")
+ };
+ values
+ }
+
+ fn string(value: &DocumentValue) -> &str {
+ let DocumentValue::String(value) = value else {
+ panic!("expected editor string")
+ };
+ value
+ }
+
+ fn read_document(path: &Path) -> DocumentValue {
+ json::parse(&fs::read(path).unwrap()).unwrap()
+ }
+
fn stub_inputs(root: &Path) -> ClangdConfigInputs {
let sketch_dir = root.join("Blink");
let cache = sketch_dir.join(".build").join("wasm");
@@ -545,7 +649,7 @@ mod tests {
#[test]
fn writes_all_three_files_with_expected_contents() {
- let tmp = tempfile::tempdir().unwrap();
+ let tmp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let inputs = stub_inputs(tmp.path());
write_clangd_config(&inputs).unwrap();
@@ -554,8 +658,8 @@ mod tests {
let cc_path = inputs.sketch_dir.join("compile_commands.json");
let cc_text = fs::read_to_string(&cc_path).unwrap();
assert!(!cc_text.contains("\\\\?\\"), "no \\\\?\\ prefixes allowed");
- let cc: Value = serde_json::from_str(&cc_text).unwrap();
- let entries = cc.as_array().expect("array");
+ let cc = json::parse(cc_text.as_bytes()).unwrap();
+ let entries = array(&cc);
assert_eq!(entries.len(), 2);
let clangxx = bundled_clangxx(&crate::path::canonicalize_normalized(
@@ -563,11 +667,9 @@ mod tests {
));
assert!(clangxx.is_file(), "bundled clang++ must exist on disk");
for entry in entries {
- let args: Vec<&str> = entry["arguments"]
- .as_array()
- .unwrap()
+ let args: Vec<&str> = array(field(entry, "arguments"))
.iter()
- .map(|v| v.as_str().unwrap())
+ .map(string)
.collect();
assert_eq!(args[0], clangxx.to_string_lossy().replace('\\', "/"));
assert!(args.contains(&"--target=wasm32-unknown-emscripten"));
@@ -598,18 +700,16 @@ mod tests {
&& pair[1].ends_with("emscripten/cache/sysroot/include/compat")
}));
// directory is the FastLED checkout (build cwd).
- let directory = entry["directory"].as_str().unwrap();
+ let directory = string(field(entry, "directory"));
assert!(directory.ends_with("fastled"));
assert!(!directory.contains("\\\\?\\"));
}
// The .ino entry forces C++.
- let ino_args: Vec<&str> = entries[0]["arguments"]
- .as_array()
- .unwrap()
+ let ino_args: Vec<&str> = array(field(&entries[0], "arguments"))
.iter()
- .map(|v| v.as_str().unwrap())
+ .map(string)
.collect();
- assert!(entries[0]["file"].as_str().unwrap().ends_with("Blink.ino"));
+ assert!(string(field(&entries[0], "file")).ends_with("Blink.ino"));
assert_eq!(&ino_args[1..3], ["-x", "c++"]);
assert!(ino_args.windows(2).any(|pair| pair[0] == "-include"
&& pair[1].ends_with(".fastled/intellisense/prototypes.hpp")));
@@ -628,43 +728,33 @@ mod tests {
// .vscode/settings.json
let settings_path = inputs.sketch_dir.join(".vscode").join("settings.json");
- let settings: Value =
- serde_json::from_str(&fs::read_to_string(&settings_path).unwrap()).unwrap();
- let clangd_args: Vec<&str> = settings["clangd.arguments"]
- .as_array()
- .unwrap()
+ let settings = read_document(&settings_path);
+ let clangd_args: Vec<&str> = array(field(&settings, "clangd.arguments"))
.iter()
- .map(|v| v.as_str().unwrap())
+ .map(string)
.collect();
assert!(clangd_args.contains(&"--compile-commands-dir=${workspaceFolder}"));
assert!(clangd_args
.iter()
.any(|a| a.starts_with("--query-driver=") && a.contains("clang++")));
- assert_eq!(settings["files.associations"]["*.ino"], "cpp");
-
- let cpptools: Value = serde_json::from_str(
- &fs::read_to_string(
- inputs
- .sketch_dir
- .join(".vscode")
- .join("c_cpp_properties.json"),
- )
- .unwrap(),
- )
- .unwrap();
assert_eq!(
- cpptools["configurations"][0]["compileCommands"],
+ string(field(field(&settings, "files.associations"), "*.ino")),
+ "cpp"
+ );
+
+ let cpptools = read_document(&inputs.sketch_dir.join(".vscode/c_cpp_properties.json"));
+ let configuration = &array(field(&cpptools, "configurations"))[0];
+ assert_eq!(
+ string(field(configuration, "compileCommands")),
"${workspaceFolder}/compile_commands.json"
);
- assert!(cpptools["configurations"][0]["forcedInclude"][0]
- .as_str()
- .unwrap()
+ assert!(string(&array(field(configuration, "forcedInclude"))[0])
.ends_with(".fastled/intellisense/prototypes.hpp"));
}
#[test]
fn merges_existing_vscode_settings() {
- let tmp = tempfile::tempdir().unwrap();
+ let tmp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let inputs = stub_inputs(tmp.path());
let settings_path = inputs.sketch_dir.join(".vscode").join("settings.json");
fs::create_dir_all(settings_path.parent().unwrap()).unwrap();
@@ -676,17 +766,20 @@ mod tests {
write_clangd_config(&inputs).unwrap();
- let settings: Value =
- serde_json::from_str(&fs::read_to_string(&settings_path).unwrap()).unwrap();
- assert_eq!(settings["editor.formatOnSave"], true);
- assert_eq!(settings["files.associations"]["*.h"], "cpp");
- assert_eq!(settings["files.associations"]["*.ino"], "cpp");
- assert!(settings["clangd.arguments"].is_array());
+ let settings = read_document(&settings_path);
+ assert_eq!(
+ field(&settings, "editor.formatOnSave"),
+ &DocumentValue::Bool(true)
+ );
+ let associations = field(&settings, "files.associations");
+ assert_eq!(string(field(associations, "*.h")), "cpp");
+ assert_eq!(string(field(associations, "*.ino")), "cpp");
+ assert!(!array(field(&settings, "clangd.arguments")).is_empty());
}
#[test]
fn regenerating_is_idempotent() {
- let tmp = tempfile::tempdir().unwrap();
+ let tmp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let inputs = stub_inputs(tmp.path());
write_clangd_config(&inputs).unwrap();
let first = fs::read_to_string(inputs.sketch_dir.join("compile_commands.json")).unwrap();
@@ -695,32 +788,80 @@ mod tests {
assert_eq!(first, second);
}
+ #[test]
+ fn oversized_editor_settings_are_not_replaced() {
+ let tmp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
+ let inputs = stub_inputs(tmp.path());
+ let path = inputs.sketch_dir.join(".vscode/settings.json");
+ fs::create_dir_all(path.parent().unwrap()).unwrap();
+ let original = format!("{{\"custom\":\"{}\"}}", "x".repeat(json::MAX_INPUT_BYTES));
+ fs::write(&path, &original).unwrap();
+ assert!(write_clangd_config(&inputs).is_err());
+ assert_eq!(fs::read_to_string(path).unwrap(), original);
+ }
+
+ #[test]
+ fn editor_json_preserves_unknown_cpptools_fields_and_repairs_associations() {
+ let tmp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
+ let inputs = stub_inputs(tmp.path());
+ let vscode = inputs.sketch_dir.join(".vscode");
+ fs::create_dir_all(&vscode).unwrap();
+ fs::write(
+ vscode.join("settings.json"),
+ r#"{"files.associations":false,"custom":[null,"日本",18446744073709551615]}"#,
+ )
+ .unwrap();
+ fs::write(
+ vscode.join("c_cpp_properties.json"),
+ r#"{"version":4,"custom":{"enabled":true},"configurations":false}"#,
+ )
+ .unwrap();
+ write_clangd_config(&inputs).unwrap();
+ let text = fs::read_to_string(vscode.join("settings.json")).unwrap();
+ assert!(text.ends_with('\n'));
+ let settings = json::parse(text.as_bytes()).unwrap();
+ assert_eq!(
+ string(field(field(&settings, "files.associations"), "*.ino")),
+ "cpp"
+ );
+ let custom = array(field(&settings, "custom"));
+ assert_eq!(string(&custom[1]), "日本");
+ assert_eq!(custom[2], DocumentValue::Unsigned(u64::MAX));
+ let properties = read_document(&vscode.join("c_cpp_properties.json"));
+ assert_eq!(field(&properties, "version"), &DocumentValue::Signed(4));
+ assert_eq!(
+ field(field(&properties, "custom"), "enabled"),
+ &DocumentValue::Bool(true)
+ );
+ assert_eq!(
+ string(field(
+ &array(field(&properties, "configurations"))[0],
+ "name"
+ )),
+ "FastLED WASM"
+ );
+ }
+
#[test]
fn emits_a_forced_prelude_entry_for_every_ino_tab() {
- let tmp = tempfile::tempdir().unwrap();
+ let tmp = kernal_api::platform::fs::TemporaryDirectory::new().unwrap();
let mut inputs = stub_inputs(tmp.path());
let utility = inputs.sketch_dir.join("Utility.ino");
fs::write(&utility, "void utility() {}\n").unwrap();
inputs.ino_files.push(NormalizedPath::new(utility));
write_clangd_config(&inputs).unwrap();
- let commands: Value = serde_json::from_str(
- &fs::read_to_string(inputs.sketch_dir.join("compile_commands.json")).unwrap(),
- )
- .unwrap();
- let entries = commands.as_array().unwrap();
+ let commands = read_document(&inputs.sketch_dir.join("compile_commands.json"));
+ let entries = array(&commands);
assert_eq!(
entries.len(),
3,
"two visible tabs plus generated C++ source"
);
for entry in &entries[..2] {
- let arguments = entry["arguments"].as_array().unwrap();
+ let arguments = array(field(entry, "arguments"));
assert!(arguments.windows(2).any(|pair| {
- pair[0].as_str() == Some("-include")
- && pair[1]
- .as_str()
- .is_some_and(|value| value.ends_with("prototypes.hpp"))
+ string(&pair[0]) == "-include" && string(&pair[1]).ends_with("prototypes.hpp")
}));
}
}
diff --git a/crates/fastled-cli/src/cli.rs b/crates/fastled-cli/src/cli.rs
index 616787ed..3100f8df 100644
--- a/crates/fastled-cli/src/cli.rs
+++ b/crates/fastled-cli/src/cli.rs
@@ -1,29 +1,23 @@
-use std::path::PathBuf;
+use std::{
+ ffi::{OsStr, OsString},
+ path::PathBuf,
+};
-use clap::{Parser, Subcommand, ValueEnum};
-
-#[derive(Clone, Debug, Subcommand)]
+#[derive(Clone, Debug)]
pub(crate) enum Command {
/// Inspect and explicitly manage the installed Emscripten toolchain.
- Toolchain {
- #[command(subcommand)]
- action: ToolchainAction,
- },
+ Toolchain { action: ToolchainAction },
/// Inspect and explicitly manage cached FastLED source checkouts.
- Source {
- #[command(subcommand)]
- action: SourceAction,
- },
+ Source { action: SourceAction },
}
-#[derive(Clone, Debug, Subcommand)]
+#[derive(Clone, Debug)]
pub(crate) enum ToolchainAction {
/// Show the active package and local installation state.
Status,
/// Install the current release default without activating it.
Install {
/// Install a specific catalog package ID.
- #[arg(long)]
package_id: Option,
},
/// Health-check and activate an installed catalog package.
@@ -45,30 +39,375 @@ pub(crate) enum ToolchainAction {
}
/// Explicit management actions for the cached FastLED source checkout.
-#[derive(Clone, Debug, Subcommand)]
+#[derive(Clone, Debug)]
pub(crate) enum SourceAction {
/// Show the cached source revision, fetch time, and freshness state.
Status {
/// Cached FastLED ref to inspect.
- #[arg(long = "ref", default_value = "master")]
reference: String,
},
/// Download a fresh source checkout while preserving the old checkout on failure.
Update {
/// Cached FastLED ref to refresh.
- #[arg(long = "ref", default_value = "master")]
reference: String,
},
/// Remove one cached FastLED source checkout.
Purge {
/// Cached FastLED ref to remove.
- #[arg(long = "ref", default_value = "master")]
reference: String,
},
}
+/// Parse the standalone management trees through kernal-api. The primary
+/// build grammar remains on the staged migration path below.
+pub(crate) fn management_command_from(arguments: I) -> Result