From c9d5470950e16149294ab12c5e355d3fc2ff0a9d Mon Sep 17 00:00:00 2001 From: lashman Date: Sun, 22 Mar 2026 05:56:55 +0200 Subject: [PATCH] tauri shell, window controls, permissions --- src-tauri/Cargo.lock | 4674 +++++++++++++++++ src-tauri/Cargo.toml | 21 + src-tauri/build.rs | 3 + src-tauri/capabilities/default.json | 20 + src-tauri/gen/schemas/acl-manifests.json | 1 + src-tauri/gen/schemas/capabilities.json | 1 + src-tauri/gen/schemas/desktop-schema.json | 2508 +++++++++ src-tauri/gen/schemas/windows-schema.json | 2508 +++++++++ src-tauri/icons/128x128.png | Bin 0 -> 1455 bytes src-tauri/icons/128x128@2x.png | Bin 0 -> 2821 bytes src-tauri/icons/32x32.png | Bin 0 -> 407 bytes src-tauri/icons/64x64.png | Bin 0 -> 707 bytes src-tauri/icons/Square107x107Logo.png | Bin 0 -> 1186 bytes src-tauri/icons/Square142x142Logo.png | Bin 0 -> 1579 bytes src-tauri/icons/Square150x150Logo.png | Bin 0 -> 1688 bytes src-tauri/icons/Square284x284Logo.png | Bin 0 -> 3145 bytes src-tauri/icons/Square30x30Logo.png | Bin 0 -> 388 bytes src-tauri/icons/Square310x310Logo.png | Bin 0 -> 3348 bytes src-tauri/icons/Square44x44Logo.png | Bin 0 -> 526 bytes src-tauri/icons/Square71x71Logo.png | Bin 0 -> 807 bytes src-tauri/icons/Square89x89Logo.png | Bin 0 -> 986 bytes src-tauri/icons/StoreLogo.png | Bin 0 -> 609 bytes .../android/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1023 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 1725 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 767 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 0 -> 994 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 1235 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 753 bytes .../android/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2082 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 2375 bytes .../mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 1390 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3397 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 3530 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 2135 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4537 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 4806 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 2615 bytes .../android/values/ic_launcher_background.xml | 4 + src-tauri/icons/icon.icns | Bin 0 -> 35758 bytes src-tauri/icons/icon.ico | Bin 0 -> 5718 bytes src-tauri/icons/icon.png | Bin 0 -> 5942 bytes src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 0 -> 295 bytes src-tauri/icons/ios/AppIcon-20x20@2x-1.png | Bin 0 -> 539 bytes src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 0 -> 539 bytes src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 0 -> 706 bytes src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 0 -> 413 bytes src-tauri/icons/ios/AppIcon-29x29@2x-1.png | Bin 0 -> 733 bytes src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 0 -> 733 bytes src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 0 -> 992 bytes src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 0 -> 539 bytes src-tauri/icons/ios/AppIcon-40x40@2x-1.png | Bin 0 -> 949 bytes src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 0 -> 949 bytes src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 0 -> 1379 bytes src-tauri/icons/ios/AppIcon-512@2x.png | Bin 0 -> 13787 bytes src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 0 -> 1379 bytes src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 0 -> 2018 bytes src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 0 -> 845 bytes src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 0 -> 1714 bytes src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png | Bin 0 -> 1872 bytes src-tauri/src/lib.rs | 67 + src-tauri/src/main.rs | 5 + src-tauri/tauri.conf.json | 48 + 63 files changed, 9865 insertions(+) create mode 100644 src-tauri/Cargo.lock create mode 100644 src-tauri/Cargo.toml create mode 100644 src-tauri/build.rs create mode 100644 src-tauri/capabilities/default.json create mode 100644 src-tauri/gen/schemas/acl-manifests.json create mode 100644 src-tauri/gen/schemas/capabilities.json create mode 100644 src-tauri/gen/schemas/desktop-schema.json create mode 100644 src-tauri/gen/schemas/windows-schema.json create mode 100644 src-tauri/icons/128x128.png create mode 100644 src-tauri/icons/128x128@2x.png create mode 100644 src-tauri/icons/32x32.png create mode 100644 src-tauri/icons/64x64.png create mode 100644 src-tauri/icons/Square107x107Logo.png create mode 100644 src-tauri/icons/Square142x142Logo.png create mode 100644 src-tauri/icons/Square150x150Logo.png create mode 100644 src-tauri/icons/Square284x284Logo.png create mode 100644 src-tauri/icons/Square30x30Logo.png create mode 100644 src-tauri/icons/Square310x310Logo.png create mode 100644 src-tauri/icons/Square44x44Logo.png create mode 100644 src-tauri/icons/Square71x71Logo.png create mode 100644 src-tauri/icons/Square89x89Logo.png create mode 100644 src-tauri/icons/StoreLogo.png create mode 100644 src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/values/ic_launcher_background.xml create mode 100644 src-tauri/icons/icon.icns create mode 100644 src-tauri/icons/icon.ico create mode 100644 src-tauri/icons/icon.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x-1.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x-1.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x-1.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-512@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-60x60@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-60x60@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-76x76@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-76x76@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png create mode 100644 src-tauri/src/lib.rs create mode 100644 src-tauri/src/main.rs create mode 100644 src-tauri/tauri.conf.json diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock new file mode 100644 index 0000000..767e125 --- /dev/null +++ b/src-tauri/Cargo.lock @@ -0,0 +1,4674 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + +[[package]] +name = "brotli" +version = "8.0.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 = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.11.1", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "cargo_toml" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +dependencies = [ + "serde", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "cc" +version = "1.2.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" +dependencies = [ + "bitflags 2.11.1", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.11.1", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf 0.13.1", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "ctor" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" +dependencies = [ + "ctor-proc-macro", + "dtor", +] + +[[package]] +name = "ctor-proc-macro" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dbus" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73" +dependencies = [ + "libc", + "libdbus-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.11.1", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dlopen2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dom_query" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" +dependencies = [ + "bit-set", + "cssparser", + "foldhash 0.2.0", + "html5ever", + "precomputed-hash", + "selectors", + "tendril", +] + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dtor" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" +dependencies = [ + "dtor-proc-macro", +] + +[[package]] +name = "dtor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "embed-resource" +version = "3.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31a88c8d26de40ed18fe748c547845aa39de1db3afd958f8cb91579f3644bcb" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 1.1.2+spec-1.1.0", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.11.1", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" +dependencies = [ + "log", + "markup5ever", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" +dependencies = [ + "byteorder", + "png 0.17.16", +] + +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.0", + "serde", + "serde_core", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jellyfin-client" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-store", + "tauri-plugin-window-state", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "js-sys" +version = "0.3.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1840c94c045fbcf8ba2812c95db44499f7c64910a912551aaaa541decebcacf" +dependencies = [ + "cfg-if", + "futures-util", + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.11.1", + "serde", + "unicode-segmentation", +] + +[[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.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "libdbus-sys" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +dependencies = [ + "libc", +] + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "markup5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" +dependencies = [ + "log", + "tendril", + "web_atoms", +] + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "muda" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae8844f63b5b118e334e205585b8c5c17b984121dbdb179d44aeb087ffad3cb" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "once_cell", + "png 0.18.1", + "serde", + "thiserror 2.0.18", + "windows-sys 0.61.2", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.11.1", + "jni-sys 0.3.1", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys 0.3.1", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "num-conv" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.11.1", + "block2", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" +dependencies = [ + "bitflags 2.11.1", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.11.1", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.11.1", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-location" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags 2.11.1", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.1", + "block2", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.11.1", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.11.1", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.11.1", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-location", + "objc2-core-text", + "objc2-foundation", + "objc2-quartz-core", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" +dependencies = [ + "bitflags 2.11.1", + "block2", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.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", + "serde", +] + +[[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.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +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.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", +] + +[[package]] +name = "phf_macros" +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", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plist" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "092791278e026273c1b65bbdcfbba3a300f2994c896bd01ab01da613c29c46f1" +dependencies = [ + "base64 0.22.1", + "indexmap 2.14.0", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.11.1", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.11+spec-1.1.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.39.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721da970c312655cde9b4ffe0547f20a8494866a4af5ff51f18b7c633d0c870b" +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.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.11.1", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "reqwest" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "rustc-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.117", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +dependencies = [ + "bitflags 2.11.1", + "cssparser", + "derive_more", + "log", + "new_debug_unreachable", + "phf 0.13.1", + "phf_codegen", + "precomputed-hash", + "rustc-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_with" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05839ce67618e14a09b286535c0d9c94e85ef25469b0e13cb4f844e5593eb19" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2ebbe86054f9b45bc3881e865683ccfaccce97b9b4cb53f3039d67f355a334" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "servo_arc" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simd-adler32" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "bytemuck", + "js-sys", + "ndk", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "tracing", + "wasm-bindgen", + "web-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.13.1", + "precomputed-hash", +] + +[[package]] +name = "string_cache_codegen" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.35.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33f7f9e486ade65fcf1e45c440f9236c904f5c1002cdc7fc6ae582777345ce4" +dependencies = [ + "bitflags 2.11.1", + "block2", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dbus", + "dispatch2", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "libc", + "log", + "ndk", + "ndk-sys", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "once_cell", + "parking_lot", + "percent-encoding", + "raw-window-handle", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d059f2527558d9dba6f186dec4772610e1aecfd3f94002397613e7e648752b66" +dependencies = [ + "anyhow", + "bytes", + "cookie", + "dirs", + "dunce", + "embed_plist", + "getrandom 0.3.4", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.18", + "tokio", + "tray-icon", + "url", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be9aa8c59a894f76c29a002501c589de5eb4987a5913d62a6e0a47f320901988" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars 0.8.22", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e4e8230d565106aa19dfbaa01a7ed01abf78047fe0577a83377224bd1bf20e" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png 0.17.16", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.117", + "tauri-utils", + "thiserror 2.0.18", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc8de2cddbbc33dbdf4c84f170121886595efdbcc9cb4b3d76342b79d082cedc" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8d5f58bfd0cdcfdbc0a68dc08b354eea2afc551b421de91b07b69e0dd769d57" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri-utils", + "walkdir", +] + +[[package]] +name = "tauri-plugin-store" +version = "2.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c72dda16786eb4a3f903e43a17b64d8d78dc0f00fe2aa4b757c28f617a8630b" +dependencies = [ + "dunce", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "tauri-plugin-window-state" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73736611e14142408d15353e21e3cca2f12a3cfb523ad0ce85999b6d2ef1a704" +dependencies = [ + "bitflags 2.11.1", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", +] + +[[package]] +name = "tauri-runtime" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e42bbcb76237351fbaa02f08d808c537dc12eb5a6eabbf3e517b50056334d95" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2", + "objc2-ui-kit", + "objc2-web-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webview2-com", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cadb13dad0c681e1e0a2c49ae488f0e2906ded3d57e7a0017f4aaf46e387117" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55f61d2bf7188fbcf2b0ed095b67a6bc498f713c939314bb19eb700118a573b7" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dom_query", + "dunce", + "glob", + "http", + "infer", + "json-patch", + "log", + "memchr", + "phf 0.11.3", + "plist", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.18", + "toml 1.1.2+spec-1.1.0", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6" +dependencies = [ + "dunce", + "embed-resource", + "toml 1.1.2+spec-1.1.0", +] + +[[package]] +name = "tendril" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4790fc369d5a530f4b544b094e31388b9b3a37c0f4652ade4505945f5660d24" +dependencies = [ + "new_debug_unreachable", + "utf-8", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.52.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "110a78583f19d5cdb2c5ccf321d1290344e71313c6c37d43520d386027d18386" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml" +version = "1.1.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.2", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.14.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.25.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.2", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow 1.0.2", +] + +[[package]] +name = "toml_writer" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28f0d049ccfaa566e14e9663d304d8577427b368cb4710a20528690287a738b" +dependencies = [ + "bitflags 2.11.1", + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15edbb0d80583e85ee8df283410038e17314df5cba30da2087a54a85216c0773" +dependencies = [ + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "once_cell", + "png 0.18.1", + "serde", + "thiserror 2.0.18", + "windows-sys 0.61.2", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +dependencies = [ + "getrandom 0.4.2", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "version-compare" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.3+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +dependencies = [ + "wit-bindgen 0.57.1", +] + +[[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 0.51.0", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df52b6d9b87e0c74c9edfa1eb2d9bf85e5d63515474513aa50fa181b3c4f5db1" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af934872acec734c2d80e6617bbb5ff4f12b052dd8e6332b0817bce889516084" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b1041f495fb322e64aca85f5756b2172e35cd459376e67f2a6c9dffcedb103" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dcd0ff20416988a18ac686d4d4d0f6aae9ebf08a389ff5d29012b05af2a1b41" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49757b3c82ebf16c57d69365a142940b384176c24df52a087fb748e2085359ea" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", +] + +[[package]] +name = "web-sys" +version = "0.3.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eadbac71025cd7b0834f20d1fe8472e8495821b4e9801eb0a60bd1f19827602" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web_atoms" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7cff6eef815df1834fd250e3a2ff436044d82a9f1bc1980ca1dbdf07effc538" +dependencies = [ + "phf 0.13.1", + "phf_codegen", + "string_cache", + "string_cache_codegen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core 0.61.2", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "webview2-com-sys" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" +dependencies = [ + "thiserror 2.0.18", + "windows", + "windows-core 0.61.2", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + +[[package]] +name = "winnow" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[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.1", + "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" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "wry" +version = "0.55.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514" +dependencies = [ + "base64 0.22.1", + "block2", + "cookie", + "crossbeam-channel", + "dirs", + "dom_query", + "dpi", + "dunce", + "gdkx11", + "gtk", + "http", + "javascriptcore-rs", + "jni", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml new file mode 100644 index 0000000..dbe4f50 --- /dev/null +++ b/src-tauri/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "jellyfin-client" +version = "0.1.0" +edition = "2021" + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +# `devtools` keeps the WebView2 inspector available in release builds +# (F12 / right-click -> Inspect). Adds a few MB to the binary but is +# essential while we're still verifying production behaviour. +tauri = { version = "2", features = ["devtools"] } +tauri-plugin-store = "2" +tauri-plugin-window-state = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" + +[lib] +name = "jellyfin_client_lib" +crate-type = ["lib", "cdylib", "staticlib"] diff --git a/src-tauri/build.rs b/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json new file mode 100644 index 0000000..40983af --- /dev/null +++ b/src-tauri/capabilities/default.json @@ -0,0 +1,20 @@ +{ + "identifier": "default", + "description": "Capability for the main window", + "windows": ["main"], + "permissions": [ + "core:default", + "core:webview:allow-set-webview-zoom", + "core:window:allow-minimize", + "core:window:allow-maximize", + "core:window:allow-unmaximize", + "core:window:allow-toggle-maximize", + "core:window:allow-close", + "core:window:allow-is-maximized", + "core:window:allow-start-dragging", + "core:event:allow-listen", + "core:event:allow-unlisten", + "store:default", + "window-state:default" + ] +} diff --git a/src-tauri/gen/schemas/acl-manifests.json b/src-tauri/gen/schemas/acl-manifests.json new file mode 100644 index 0000000..2abb06f --- /dev/null +++ b/src-tauri/gen/schemas/acl-manifests.json @@ -0,0 +1 @@ +{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener","allow-supports-multiple-windows"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-supports-multiple-windows":{"identifier":"allow-supports-multiple-windows","description":"Enables the supports_multiple_windows command without any pre-configured scope.","commands":{"allow":["supports_multiple_windows"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-remove-listener":{"identifier":"deny-remove-listener","description":"Denies the remove_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_listener"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-supports-multiple-windows":{"identifier":"deny-supports-multiple-windows","description":"Denies the supports_multiple_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["supports_multiple_windows"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-icon-with-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-icon-with-as-template":{"identifier":"allow-set-icon-with-as-template","description":"Enables the set_icon_with_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_with_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-icon-with-as-template":{"identifier":"deny-set-icon-with-as-template","description":"Denies the set_icon_with_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_with_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-activity-name","allow-scene-identifier","allow-internal-toggle-maximize"]},"permissions":{"allow-activity-name":{"identifier":"allow-activity-name","description":"Enables the activity_name command without any pre-configured scope.","commands":{"allow":["activity_name"],"deny":[]}},"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-scene-identifier":{"identifier":"allow-scene-identifier","description":"Enables the scene_identifier command without any pre-configured scope.","commands":{"allow":["scene_identifier"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-focusable":{"identifier":"allow-set-focusable","description":"Enables the set_focusable command without any pre-configured scope.","commands":{"allow":["set_focusable"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-simple-fullscreen":{"identifier":"allow-set-simple-fullscreen","description":"Enables the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":["set_simple_fullscreen"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-activity-name":{"identifier":"deny-activity-name","description":"Denies the activity_name command without any pre-configured scope.","commands":{"allow":[],"deny":["activity_name"]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-scene-identifier":{"identifier":"deny-scene-identifier","description":"Denies the scene_identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["scene_identifier"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-focusable":{"identifier":"deny-set-focusable","description":"Denies the set_focusable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focusable"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-simple-fullscreen":{"identifier":"deny-set-simple-fullscreen","description":"Denies the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_simple_fullscreen"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"store":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n","permissions":["allow-load","allow-get-store","allow-set","allow-get","allow-has","allow-delete","allow-clear","allow-reset","allow-keys","allow-values","allow-entries","allow-length","allow-reload","allow-save"]},"permissions":{"allow-clear":{"identifier":"allow-clear","description":"Enables the clear command without any pre-configured scope.","commands":{"allow":["clear"],"deny":[]}},"allow-delete":{"identifier":"allow-delete","description":"Enables the delete command without any pre-configured scope.","commands":{"allow":["delete"],"deny":[]}},"allow-entries":{"identifier":"allow-entries","description":"Enables the entries command without any pre-configured scope.","commands":{"allow":["entries"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-get-store":{"identifier":"allow-get-store","description":"Enables the get_store command without any pre-configured scope.","commands":{"allow":["get_store"],"deny":[]}},"allow-has":{"identifier":"allow-has","description":"Enables the has command without any pre-configured scope.","commands":{"allow":["has"],"deny":[]}},"allow-keys":{"identifier":"allow-keys","description":"Enables the keys command without any pre-configured scope.","commands":{"allow":["keys"],"deny":[]}},"allow-length":{"identifier":"allow-length","description":"Enables the length command without any pre-configured scope.","commands":{"allow":["length"],"deny":[]}},"allow-load":{"identifier":"allow-load","description":"Enables the load command without any pre-configured scope.","commands":{"allow":["load"],"deny":[]}},"allow-reload":{"identifier":"allow-reload","description":"Enables the reload command without any pre-configured scope.","commands":{"allow":["reload"],"deny":[]}},"allow-reset":{"identifier":"allow-reset","description":"Enables the reset command without any pre-configured scope.","commands":{"allow":["reset"],"deny":[]}},"allow-save":{"identifier":"allow-save","description":"Enables the save command without any pre-configured scope.","commands":{"allow":["save"],"deny":[]}},"allow-set":{"identifier":"allow-set","description":"Enables the set command without any pre-configured scope.","commands":{"allow":["set"],"deny":[]}},"allow-values":{"identifier":"allow-values","description":"Enables the values command without any pre-configured scope.","commands":{"allow":["values"],"deny":[]}},"deny-clear":{"identifier":"deny-clear","description":"Denies the clear command without any pre-configured scope.","commands":{"allow":[],"deny":["clear"]}},"deny-delete":{"identifier":"deny-delete","description":"Denies the delete command without any pre-configured scope.","commands":{"allow":[],"deny":["delete"]}},"deny-entries":{"identifier":"deny-entries","description":"Denies the entries command without any pre-configured scope.","commands":{"allow":[],"deny":["entries"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-get-store":{"identifier":"deny-get-store","description":"Denies the get_store command without any pre-configured scope.","commands":{"allow":[],"deny":["get_store"]}},"deny-has":{"identifier":"deny-has","description":"Denies the has command without any pre-configured scope.","commands":{"allow":[],"deny":["has"]}},"deny-keys":{"identifier":"deny-keys","description":"Denies the keys command without any pre-configured scope.","commands":{"allow":[],"deny":["keys"]}},"deny-length":{"identifier":"deny-length","description":"Denies the length command without any pre-configured scope.","commands":{"allow":[],"deny":["length"]}},"deny-load":{"identifier":"deny-load","description":"Denies the load command without any pre-configured scope.","commands":{"allow":[],"deny":["load"]}},"deny-reload":{"identifier":"deny-reload","description":"Denies the reload command without any pre-configured scope.","commands":{"allow":[],"deny":["reload"]}},"deny-reset":{"identifier":"deny-reset","description":"Denies the reset command without any pre-configured scope.","commands":{"allow":[],"deny":["reset"]}},"deny-save":{"identifier":"deny-save","description":"Denies the save command without any pre-configured scope.","commands":{"allow":[],"deny":["save"]}},"deny-set":{"identifier":"deny-set","description":"Denies the set command without any pre-configured scope.","commands":{"allow":[],"deny":["set"]}},"deny-values":{"identifier":"deny-values","description":"Denies the values command without any pre-configured scope.","commands":{"allow":[],"deny":["values"]}}},"permission_sets":{},"global_scope_schema":null},"window-state":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n","permissions":["allow-filename","allow-restore-state","allow-save-window-state"]},"permissions":{"allow-filename":{"identifier":"allow-filename","description":"Enables the filename command without any pre-configured scope.","commands":{"allow":["filename"],"deny":[]}},"allow-restore-state":{"identifier":"allow-restore-state","description":"Enables the restore_state command without any pre-configured scope.","commands":{"allow":["restore_state"],"deny":[]}},"allow-save-window-state":{"identifier":"allow-save-window-state","description":"Enables the save_window_state command without any pre-configured scope.","commands":{"allow":["save_window_state"],"deny":[]}},"deny-filename":{"identifier":"deny-filename","description":"Denies the filename command without any pre-configured scope.","commands":{"allow":[],"deny":["filename"]}},"deny-restore-state":{"identifier":"deny-restore-state","description":"Denies the restore_state command without any pre-configured scope.","commands":{"allow":[],"deny":["restore_state"]}},"deny-save-window-state":{"identifier":"deny-save-window-state","description":"Denies the save_window_state command without any pre-configured scope.","commands":{"allow":[],"deny":["save_window_state"]}}},"permission_sets":{},"global_scope_schema":null}} \ No newline at end of file diff --git a/src-tauri/gen/schemas/capabilities.json b/src-tauri/gen/schemas/capabilities.json new file mode 100644 index 0000000..527d3b7 --- /dev/null +++ b/src-tauri/gen/schemas/capabilities.json @@ -0,0 +1 @@ +{"default":{"identifier":"default","description":"Capability for the main window","local":true,"windows":["main"],"permissions":["core:default","core:webview:allow-set-webview-zoom","core:window:allow-minimize","core:window:allow-maximize","core:window:allow-unmaximize","core:window:allow-toggle-maximize","core:window:allow-close","core:window:allow-is-maximized","core:window:allow-start-dragging","core:event:allow-listen","core:event:allow-unlisten","store:default","window-state:default"]}} \ No newline at end of file diff --git a/src-tauri/gen/schemas/desktop-schema.json b/src-tauri/gen/schemas/desktop-schema.json new file mode 100644 index 0000000..edf29ca --- /dev/null +++ b/src-tauri/gen/schemas/desktop-schema.json @@ -0,0 +1,2508 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`", + "type": "string", + "const": "core:default", + "markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`" + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`", + "type": "string", + "const": "core:app:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide", + "markdownDescription": "Enables the app_hide command without any pre-configured scope." + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show", + "markdownDescription": "Enables the app_show command without any pre-configured scope." + }, + { + "description": "Enables the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-bundle-type", + "markdownDescription": "Enables the bundle_type command without any pre-configured scope." + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon", + "markdownDescription": "Enables the default_window_icon command without any pre-configured scope." + }, + { + "description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-fetch-data-store-identifiers", + "markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Enables the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-identifier", + "markdownDescription": "Enables the identifier command without any pre-configured scope." + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name", + "markdownDescription": "Enables the name command without any pre-configured scope." + }, + { + "description": "Enables the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-register-listener", + "markdownDescription": "Enables the register_listener command without any pre-configured scope." + }, + { + "description": "Enables the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-data-store", + "markdownDescription": "Enables the remove_data_store command without any pre-configured scope." + }, + { + "description": "Enables the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-listener", + "markdownDescription": "Enables the remove_listener command without any pre-configured scope." + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme", + "markdownDescription": "Enables the set_app_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-dock-visibility", + "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Enables the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-supports-multiple-windows", + "markdownDescription": "Enables the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version", + "markdownDescription": "Enables the tauri_version command without any pre-configured scope." + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version", + "markdownDescription": "Enables the version command without any pre-configured scope." + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide", + "markdownDescription": "Denies the app_hide command without any pre-configured scope." + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show", + "markdownDescription": "Denies the app_show command without any pre-configured scope." + }, + { + "description": "Denies the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-bundle-type", + "markdownDescription": "Denies the bundle_type command without any pre-configured scope." + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon", + "markdownDescription": "Denies the default_window_icon command without any pre-configured scope." + }, + { + "description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-fetch-data-store-identifiers", + "markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Denies the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-identifier", + "markdownDescription": "Denies the identifier command without any pre-configured scope." + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name", + "markdownDescription": "Denies the name command without any pre-configured scope." + }, + { + "description": "Denies the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-register-listener", + "markdownDescription": "Denies the register_listener command without any pre-configured scope." + }, + { + "description": "Denies the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-data-store", + "markdownDescription": "Denies the remove_data_store command without any pre-configured scope." + }, + { + "description": "Denies the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-listener", + "markdownDescription": "Denies the remove_listener command without any pre-configured scope." + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme", + "markdownDescription": "Denies the set_app_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-dock-visibility", + "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Denies the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-supports-multiple-windows", + "markdownDescription": "Denies the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version", + "markdownDescription": "Denies the tauri_version command without any pre-configured scope." + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version", + "markdownDescription": "Denies the version command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`", + "type": "string", + "const": "core:event:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit", + "markdownDescription": "Enables the emit command without any pre-configured scope." + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to", + "markdownDescription": "Enables the emit_to command without any pre-configured scope." + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen", + "markdownDescription": "Enables the listen command without any pre-configured scope." + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten", + "markdownDescription": "Enables the unlisten command without any pre-configured scope." + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit", + "markdownDescription": "Denies the emit command without any pre-configured scope." + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to", + "markdownDescription": "Denies the emit_to command without any pre-configured scope." + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen", + "markdownDescription": "Denies the listen command without any pre-configured scope." + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten", + "markdownDescription": "Denies the unlisten command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`", + "type": "string", + "const": "core:image:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes", + "markdownDescription": "Enables the from_bytes command without any pre-configured scope." + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path", + "markdownDescription": "Enables the from_path command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba", + "markdownDescription": "Enables the rgba command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes", + "markdownDescription": "Denies the from_bytes command without any pre-configured scope." + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path", + "markdownDescription": "Denies the from_path command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba", + "markdownDescription": "Denies the rgba command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`", + "type": "string", + "const": "core:menu:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append", + "markdownDescription": "Enables the append command without any pre-configured scope." + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default", + "markdownDescription": "Enables the create_default command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert", + "markdownDescription": "Enables the insert command without any pre-configured scope." + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked", + "markdownDescription": "Enables the is_checked command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items", + "markdownDescription": "Enables the items command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup", + "markdownDescription": "Enables the popup command without any pre-configured scope." + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend", + "markdownDescription": "Enables the prepend command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at", + "markdownDescription": "Enables the remove_at command without any pre-configured scope." + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator", + "markdownDescription": "Enables the set_accelerator command without any pre-configured scope." + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu", + "markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp", + "markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu", + "markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp", + "markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked", + "markdownDescription": "Enables the set_checked command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text", + "markdownDescription": "Enables the set_text command without any pre-configured scope." + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text", + "markdownDescription": "Enables the text command without any pre-configured scope." + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append", + "markdownDescription": "Denies the append command without any pre-configured scope." + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default", + "markdownDescription": "Denies the create_default command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert", + "markdownDescription": "Denies the insert command without any pre-configured scope." + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked", + "markdownDescription": "Denies the is_checked command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items", + "markdownDescription": "Denies the items command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup", + "markdownDescription": "Denies the popup command without any pre-configured scope." + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend", + "markdownDescription": "Denies the prepend command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at", + "markdownDescription": "Denies the remove_at command without any pre-configured scope." + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator", + "markdownDescription": "Denies the set_accelerator command without any pre-configured scope." + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu", + "markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp", + "markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu", + "markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp", + "markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked", + "markdownDescription": "Denies the set_checked command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text", + "markdownDescription": "Denies the set_text command without any pre-configured scope." + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text", + "markdownDescription": "Denies the text command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`", + "type": "string", + "const": "core:path:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename", + "markdownDescription": "Enables the basename command without any pre-configured scope." + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname", + "markdownDescription": "Enables the dirname command without any pre-configured scope." + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname", + "markdownDescription": "Enables the extname command without any pre-configured scope." + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute", + "markdownDescription": "Enables the is_absolute command without any pre-configured scope." + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join", + "markdownDescription": "Enables the join command without any pre-configured scope." + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize", + "markdownDescription": "Enables the normalize command without any pre-configured scope." + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve", + "markdownDescription": "Enables the resolve command without any pre-configured scope." + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory", + "markdownDescription": "Enables the resolve_directory command without any pre-configured scope." + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename", + "markdownDescription": "Denies the basename command without any pre-configured scope." + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname", + "markdownDescription": "Denies the dirname command without any pre-configured scope." + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname", + "markdownDescription": "Denies the extname command without any pre-configured scope." + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute", + "markdownDescription": "Denies the is_absolute command without any pre-configured scope." + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join", + "markdownDescription": "Denies the join command without any pre-configured scope." + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize", + "markdownDescription": "Denies the normalize command without any pre-configured scope." + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve", + "markdownDescription": "Denies the resolve command without any pre-configured scope." + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory", + "markdownDescription": "Denies the resolve_directory command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`", + "type": "string", + "const": "core:resources:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`", + "type": "string", + "const": "core:tray:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id", + "markdownDescription": "Enables the get_by_id command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id", + "markdownDescription": "Enables the remove_by_id command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template", + "markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-with-as-template", + "markdownDescription": "Enables the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu", + "markdownDescription": "Enables the set_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click", + "markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path", + "markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip", + "markdownDescription": "Enables the set_tooltip command without any pre-configured scope." + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible", + "markdownDescription": "Enables the set_visible command without any pre-configured scope." + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id", + "markdownDescription": "Denies the get_by_id command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id", + "markdownDescription": "Denies the remove_by_id command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template", + "markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-with-as-template", + "markdownDescription": "Denies the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu", + "markdownDescription": "Denies the set_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click", + "markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path", + "markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip", + "markdownDescription": "Denies the set_tooltip command without any pre-configured scope." + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible", + "markdownDescription": "Denies the set_visible command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`", + "type": "string", + "const": "core:webview:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data", + "markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview", + "markdownDescription": "Enables the create_webview command without any pre-configured scope." + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window", + "markdownDescription": "Enables the create_webview_window command without any pre-configured scope." + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews", + "markdownDescription": "Enables the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools", + "markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print", + "markdownDescription": "Enables the print command without any pre-configured scope." + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent", + "markdownDescription": "Enables the reparent command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-auto-resize", + "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-background-color", + "markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus", + "markdownDescription": "Enables the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position", + "markdownDescription": "Enables the set_webview_position command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size", + "markdownDescription": "Enables the set_webview_size command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom", + "markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close", + "markdownDescription": "Enables the webview_close command without any pre-configured scope." + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide", + "markdownDescription": "Enables the webview_hide command without any pre-configured scope." + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position", + "markdownDescription": "Enables the webview_position command without any pre-configured scope." + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show", + "markdownDescription": "Enables the webview_show command without any pre-configured scope." + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size", + "markdownDescription": "Enables the webview_size command without any pre-configured scope." + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data", + "markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview", + "markdownDescription": "Denies the create_webview command without any pre-configured scope." + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window", + "markdownDescription": "Denies the create_webview_window command without any pre-configured scope." + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews", + "markdownDescription": "Denies the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools", + "markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print", + "markdownDescription": "Denies the print command without any pre-configured scope." + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent", + "markdownDescription": "Denies the reparent command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-auto-resize", + "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-background-color", + "markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus", + "markdownDescription": "Denies the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position", + "markdownDescription": "Denies the set_webview_position command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size", + "markdownDescription": "Denies the set_webview_size command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom", + "markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close", + "markdownDescription": "Denies the webview_close command without any pre-configured scope." + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide", + "markdownDescription": "Denies the webview_hide command without any pre-configured scope." + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position", + "markdownDescription": "Denies the webview_position command without any pre-configured scope." + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show", + "markdownDescription": "Denies the webview_show command without any pre-configured scope." + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size", + "markdownDescription": "Denies the webview_size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`", + "type": "string", + "const": "core:window:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`" + }, + { + "description": "Enables the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-activity-name", + "markdownDescription": "Enables the activity_name command without any pre-configured scope." + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors", + "markdownDescription": "Enables the available_monitors command without any pre-configured scope." + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center", + "markdownDescription": "Enables the center command without any pre-configured scope." + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor", + "markdownDescription": "Enables the current_monitor command without any pre-configured scope." + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position", + "markdownDescription": "Enables the cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy", + "markdownDescription": "Enables the destroy command without any pre-configured scope." + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows", + "markdownDescription": "Enables the get_all_windows command without any pre-configured scope." + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide", + "markdownDescription": "Enables the hide command without any pre-configured scope." + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position", + "markdownDescription": "Enables the inner_position command without any pre-configured scope." + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size", + "markdownDescription": "Enables the inner_size command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize", + "markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-always-on-top", + "markdownDescription": "Enables the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable", + "markdownDescription": "Enables the is_closable command without any pre-configured scope." + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated", + "markdownDescription": "Enables the is_decorated command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused", + "markdownDescription": "Enables the is_focused command without any pre-configured scope." + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen", + "markdownDescription": "Enables the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable", + "markdownDescription": "Enables the is_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized", + "markdownDescription": "Enables the is_maximized command without any pre-configured scope." + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable", + "markdownDescription": "Enables the is_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized", + "markdownDescription": "Enables the is_minimized command without any pre-configured scope." + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable", + "markdownDescription": "Enables the is_resizable command without any pre-configured scope." + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible", + "markdownDescription": "Enables the is_visible command without any pre-configured scope." + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize", + "markdownDescription": "Enables the maximize command without any pre-configured scope." + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize", + "markdownDescription": "Enables the minimize command without any pre-configured scope." + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point", + "markdownDescription": "Enables the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position", + "markdownDescription": "Enables the outer_position command without any pre-configured scope." + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size", + "markdownDescription": "Enables the outer_size command without any pre-configured scope." + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor", + "markdownDescription": "Enables the primary_monitor command without any pre-configured scope." + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention", + "markdownDescription": "Enables the request_user_attention command without any pre-configured scope." + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor", + "markdownDescription": "Enables the scale_factor command without any pre-configured scope." + }, + { + "description": "Enables the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scene-identifier", + "markdownDescription": "Enables the scene_identifier command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom", + "markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top", + "markdownDescription": "Enables the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-background-color", + "markdownDescription": "Enables the set_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-count", + "markdownDescription": "Enables the set_badge_count command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-label", + "markdownDescription": "Enables the set_badge_label command without any pre-configured scope." + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable", + "markdownDescription": "Enables the set_closable command without any pre-configured scope." + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected", + "markdownDescription": "Enables the set_content_protected command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab", + "markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon", + "markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position", + "markdownDescription": "Enables the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible", + "markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations", + "markdownDescription": "Enables the set_decorations command without any pre-configured scope." + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects", + "markdownDescription": "Enables the set_effects command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus", + "markdownDescription": "Enables the set_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focusable", + "markdownDescription": "Enables the set_focusable command without any pre-configured scope." + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen", + "markdownDescription": "Enables the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events", + "markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size", + "markdownDescription": "Enables the set_max_size command without any pre-configured scope." + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable", + "markdownDescription": "Enables the set_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size", + "markdownDescription": "Enables the set_min_size command without any pre-configured scope." + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable", + "markdownDescription": "Enables the set_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-overlay-icon", + "markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position", + "markdownDescription": "Enables the set_position command without any pre-configured scope." + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar", + "markdownDescription": "Enables the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable", + "markdownDescription": "Enables the set_resizable command without any pre-configured scope." + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow", + "markdownDescription": "Enables the set_shadow command without any pre-configured scope." + }, + { + "description": "Enables the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-simple-fullscreen", + "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size", + "markdownDescription": "Enables the set_size command without any pre-configured scope." + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints", + "markdownDescription": "Enables the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar", + "markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme", + "markdownDescription": "Enables the set_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style", + "markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces", + "markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show", + "markdownDescription": "Enables the show command without any pre-configured scope." + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging", + "markdownDescription": "Enables the start_dragging command without any pre-configured scope." + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging", + "markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme", + "markdownDescription": "Enables the theme command without any pre-configured scope." + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title", + "markdownDescription": "Enables the title command without any pre-configured scope." + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize", + "markdownDescription": "Enables the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize", + "markdownDescription": "Enables the unmaximize command without any pre-configured scope." + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize", + "markdownDescription": "Enables the unminimize command without any pre-configured scope." + }, + { + "description": "Denies the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-activity-name", + "markdownDescription": "Denies the activity_name command without any pre-configured scope." + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors", + "markdownDescription": "Denies the available_monitors command without any pre-configured scope." + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center", + "markdownDescription": "Denies the center command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor", + "markdownDescription": "Denies the current_monitor command without any pre-configured scope." + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position", + "markdownDescription": "Denies the cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy", + "markdownDescription": "Denies the destroy command without any pre-configured scope." + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows", + "markdownDescription": "Denies the get_all_windows command without any pre-configured scope." + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide", + "markdownDescription": "Denies the hide command without any pre-configured scope." + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position", + "markdownDescription": "Denies the inner_position command without any pre-configured scope." + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size", + "markdownDescription": "Denies the inner_size command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize", + "markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-always-on-top", + "markdownDescription": "Denies the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable", + "markdownDescription": "Denies the is_closable command without any pre-configured scope." + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated", + "markdownDescription": "Denies the is_decorated command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused", + "markdownDescription": "Denies the is_focused command without any pre-configured scope." + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen", + "markdownDescription": "Denies the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable", + "markdownDescription": "Denies the is_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized", + "markdownDescription": "Denies the is_maximized command without any pre-configured scope." + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable", + "markdownDescription": "Denies the is_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized", + "markdownDescription": "Denies the is_minimized command without any pre-configured scope." + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable", + "markdownDescription": "Denies the is_resizable command without any pre-configured scope." + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible", + "markdownDescription": "Denies the is_visible command without any pre-configured scope." + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize", + "markdownDescription": "Denies the maximize command without any pre-configured scope." + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize", + "markdownDescription": "Denies the minimize command without any pre-configured scope." + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point", + "markdownDescription": "Denies the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position", + "markdownDescription": "Denies the outer_position command without any pre-configured scope." + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size", + "markdownDescription": "Denies the outer_size command without any pre-configured scope." + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor", + "markdownDescription": "Denies the primary_monitor command without any pre-configured scope." + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention", + "markdownDescription": "Denies the request_user_attention command without any pre-configured scope." + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor", + "markdownDescription": "Denies the scale_factor command without any pre-configured scope." + }, + { + "description": "Denies the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scene-identifier", + "markdownDescription": "Denies the scene_identifier command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom", + "markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top", + "markdownDescription": "Denies the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-background-color", + "markdownDescription": "Denies the set_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-count", + "markdownDescription": "Denies the set_badge_count command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-label", + "markdownDescription": "Denies the set_badge_label command without any pre-configured scope." + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable", + "markdownDescription": "Denies the set_closable command without any pre-configured scope." + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected", + "markdownDescription": "Denies the set_content_protected command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab", + "markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon", + "markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position", + "markdownDescription": "Denies the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible", + "markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations", + "markdownDescription": "Denies the set_decorations command without any pre-configured scope." + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects", + "markdownDescription": "Denies the set_effects command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus", + "markdownDescription": "Denies the set_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focusable", + "markdownDescription": "Denies the set_focusable command without any pre-configured scope." + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen", + "markdownDescription": "Denies the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events", + "markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size", + "markdownDescription": "Denies the set_max_size command without any pre-configured scope." + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable", + "markdownDescription": "Denies the set_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size", + "markdownDescription": "Denies the set_min_size command without any pre-configured scope." + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable", + "markdownDescription": "Denies the set_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-overlay-icon", + "markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position", + "markdownDescription": "Denies the set_position command without any pre-configured scope." + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar", + "markdownDescription": "Denies the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable", + "markdownDescription": "Denies the set_resizable command without any pre-configured scope." + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow", + "markdownDescription": "Denies the set_shadow command without any pre-configured scope." + }, + { + "description": "Denies the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-simple-fullscreen", + "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size", + "markdownDescription": "Denies the set_size command without any pre-configured scope." + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints", + "markdownDescription": "Denies the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar", + "markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme", + "markdownDescription": "Denies the set_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style", + "markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces", + "markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show", + "markdownDescription": "Denies the show command without any pre-configured scope." + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging", + "markdownDescription": "Denies the start_dragging command without any pre-configured scope." + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging", + "markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme", + "markdownDescription": "Denies the theme command without any pre-configured scope." + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title", + "markdownDescription": "Denies the title command without any pre-configured scope." + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize", + "markdownDescription": "Denies the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize", + "markdownDescription": "Denies the unmaximize command without any pre-configured scope." + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize", + "markdownDescription": "Denies the unminimize command without any pre-configured scope." + }, + { + "description": "This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-load`\n- `allow-get-store`\n- `allow-set`\n- `allow-get`\n- `allow-has`\n- `allow-delete`\n- `allow-clear`\n- `allow-reset`\n- `allow-keys`\n- `allow-values`\n- `allow-entries`\n- `allow-length`\n- `allow-reload`\n- `allow-save`", + "type": "string", + "const": "store:default", + "markdownDescription": "This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-load`\n- `allow-get-store`\n- `allow-set`\n- `allow-get`\n- `allow-has`\n- `allow-delete`\n- `allow-clear`\n- `allow-reset`\n- `allow-keys`\n- `allow-values`\n- `allow-entries`\n- `allow-length`\n- `allow-reload`\n- `allow-save`" + }, + { + "description": "Enables the clear command without any pre-configured scope.", + "type": "string", + "const": "store:allow-clear", + "markdownDescription": "Enables the clear command without any pre-configured scope." + }, + { + "description": "Enables the delete command without any pre-configured scope.", + "type": "string", + "const": "store:allow-delete", + "markdownDescription": "Enables the delete command without any pre-configured scope." + }, + { + "description": "Enables the entries command without any pre-configured scope.", + "type": "string", + "const": "store:allow-entries", + "markdownDescription": "Enables the entries command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "store:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the get_store command without any pre-configured scope.", + "type": "string", + "const": "store:allow-get-store", + "markdownDescription": "Enables the get_store command without any pre-configured scope." + }, + { + "description": "Enables the has command without any pre-configured scope.", + "type": "string", + "const": "store:allow-has", + "markdownDescription": "Enables the has command without any pre-configured scope." + }, + { + "description": "Enables the keys command without any pre-configured scope.", + "type": "string", + "const": "store:allow-keys", + "markdownDescription": "Enables the keys command without any pre-configured scope." + }, + { + "description": "Enables the length command without any pre-configured scope.", + "type": "string", + "const": "store:allow-length", + "markdownDescription": "Enables the length command without any pre-configured scope." + }, + { + "description": "Enables the load command without any pre-configured scope.", + "type": "string", + "const": "store:allow-load", + "markdownDescription": "Enables the load command without any pre-configured scope." + }, + { + "description": "Enables the reload command without any pre-configured scope.", + "type": "string", + "const": "store:allow-reload", + "markdownDescription": "Enables the reload command without any pre-configured scope." + }, + { + "description": "Enables the reset command without any pre-configured scope.", + "type": "string", + "const": "store:allow-reset", + "markdownDescription": "Enables the reset command without any pre-configured scope." + }, + { + "description": "Enables the save command without any pre-configured scope.", + "type": "string", + "const": "store:allow-save", + "markdownDescription": "Enables the save command without any pre-configured scope." + }, + { + "description": "Enables the set command without any pre-configured scope.", + "type": "string", + "const": "store:allow-set", + "markdownDescription": "Enables the set command without any pre-configured scope." + }, + { + "description": "Enables the values command without any pre-configured scope.", + "type": "string", + "const": "store:allow-values", + "markdownDescription": "Enables the values command without any pre-configured scope." + }, + { + "description": "Denies the clear command without any pre-configured scope.", + "type": "string", + "const": "store:deny-clear", + "markdownDescription": "Denies the clear command without any pre-configured scope." + }, + { + "description": "Denies the delete command without any pre-configured scope.", + "type": "string", + "const": "store:deny-delete", + "markdownDescription": "Denies the delete command without any pre-configured scope." + }, + { + "description": "Denies the entries command without any pre-configured scope.", + "type": "string", + "const": "store:deny-entries", + "markdownDescription": "Denies the entries command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "store:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the get_store command without any pre-configured scope.", + "type": "string", + "const": "store:deny-get-store", + "markdownDescription": "Denies the get_store command without any pre-configured scope." + }, + { + "description": "Denies the has command without any pre-configured scope.", + "type": "string", + "const": "store:deny-has", + "markdownDescription": "Denies the has command without any pre-configured scope." + }, + { + "description": "Denies the keys command without any pre-configured scope.", + "type": "string", + "const": "store:deny-keys", + "markdownDescription": "Denies the keys command without any pre-configured scope." + }, + { + "description": "Denies the length command without any pre-configured scope.", + "type": "string", + "const": "store:deny-length", + "markdownDescription": "Denies the length command without any pre-configured scope." + }, + { + "description": "Denies the load command without any pre-configured scope.", + "type": "string", + "const": "store:deny-load", + "markdownDescription": "Denies the load command without any pre-configured scope." + }, + { + "description": "Denies the reload command without any pre-configured scope.", + "type": "string", + "const": "store:deny-reload", + "markdownDescription": "Denies the reload command without any pre-configured scope." + }, + { + "description": "Denies the reset command without any pre-configured scope.", + "type": "string", + "const": "store:deny-reset", + "markdownDescription": "Denies the reset command without any pre-configured scope." + }, + { + "description": "Denies the save command without any pre-configured scope.", + "type": "string", + "const": "store:deny-save", + "markdownDescription": "Denies the save command without any pre-configured scope." + }, + { + "description": "Denies the set command without any pre-configured scope.", + "type": "string", + "const": "store:deny-set", + "markdownDescription": "Denies the set command without any pre-configured scope." + }, + { + "description": "Denies the values command without any pre-configured scope.", + "type": "string", + "const": "store:deny-values", + "markdownDescription": "Denies the values command without any pre-configured scope." + }, + { + "description": "This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-filename`\n- `allow-restore-state`\n- `allow-save-window-state`", + "type": "string", + "const": "window-state:default", + "markdownDescription": "This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-filename`\n- `allow-restore-state`\n- `allow-save-window-state`" + }, + { + "description": "Enables the filename command without any pre-configured scope.", + "type": "string", + "const": "window-state:allow-filename", + "markdownDescription": "Enables the filename command without any pre-configured scope." + }, + { + "description": "Enables the restore_state command without any pre-configured scope.", + "type": "string", + "const": "window-state:allow-restore-state", + "markdownDescription": "Enables the restore_state command without any pre-configured scope." + }, + { + "description": "Enables the save_window_state command without any pre-configured scope.", + "type": "string", + "const": "window-state:allow-save-window-state", + "markdownDescription": "Enables the save_window_state command without any pre-configured scope." + }, + { + "description": "Denies the filename command without any pre-configured scope.", + "type": "string", + "const": "window-state:deny-filename", + "markdownDescription": "Denies the filename command without any pre-configured scope." + }, + { + "description": "Denies the restore_state command without any pre-configured scope.", + "type": "string", + "const": "window-state:deny-restore-state", + "markdownDescription": "Denies the restore_state command without any pre-configured scope." + }, + { + "description": "Denies the save_window_state command without any pre-configured scope.", + "type": "string", + "const": "window-state:deny-save-window-state", + "markdownDescription": "Denies the save_window_state command without any pre-configured scope." + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/src-tauri/gen/schemas/windows-schema.json b/src-tauri/gen/schemas/windows-schema.json new file mode 100644 index 0000000..edf29ca --- /dev/null +++ b/src-tauri/gen/schemas/windows-schema.json @@ -0,0 +1,2508 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`", + "type": "string", + "const": "core:default", + "markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`" + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`", + "type": "string", + "const": "core:app:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide", + "markdownDescription": "Enables the app_hide command without any pre-configured scope." + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show", + "markdownDescription": "Enables the app_show command without any pre-configured scope." + }, + { + "description": "Enables the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-bundle-type", + "markdownDescription": "Enables the bundle_type command without any pre-configured scope." + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon", + "markdownDescription": "Enables the default_window_icon command without any pre-configured scope." + }, + { + "description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-fetch-data-store-identifiers", + "markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Enables the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-identifier", + "markdownDescription": "Enables the identifier command without any pre-configured scope." + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name", + "markdownDescription": "Enables the name command without any pre-configured scope." + }, + { + "description": "Enables the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-register-listener", + "markdownDescription": "Enables the register_listener command without any pre-configured scope." + }, + { + "description": "Enables the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-data-store", + "markdownDescription": "Enables the remove_data_store command without any pre-configured scope." + }, + { + "description": "Enables the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-listener", + "markdownDescription": "Enables the remove_listener command without any pre-configured scope." + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme", + "markdownDescription": "Enables the set_app_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-dock-visibility", + "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Enables the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-supports-multiple-windows", + "markdownDescription": "Enables the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version", + "markdownDescription": "Enables the tauri_version command without any pre-configured scope." + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version", + "markdownDescription": "Enables the version command without any pre-configured scope." + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide", + "markdownDescription": "Denies the app_hide command without any pre-configured scope." + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show", + "markdownDescription": "Denies the app_show command without any pre-configured scope." + }, + { + "description": "Denies the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-bundle-type", + "markdownDescription": "Denies the bundle_type command without any pre-configured scope." + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon", + "markdownDescription": "Denies the default_window_icon command without any pre-configured scope." + }, + { + "description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-fetch-data-store-identifiers", + "markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Denies the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-identifier", + "markdownDescription": "Denies the identifier command without any pre-configured scope." + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name", + "markdownDescription": "Denies the name command without any pre-configured scope." + }, + { + "description": "Denies the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-register-listener", + "markdownDescription": "Denies the register_listener command without any pre-configured scope." + }, + { + "description": "Denies the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-data-store", + "markdownDescription": "Denies the remove_data_store command without any pre-configured scope." + }, + { + "description": "Denies the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-listener", + "markdownDescription": "Denies the remove_listener command without any pre-configured scope." + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme", + "markdownDescription": "Denies the set_app_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-dock-visibility", + "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Denies the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-supports-multiple-windows", + "markdownDescription": "Denies the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version", + "markdownDescription": "Denies the tauri_version command without any pre-configured scope." + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version", + "markdownDescription": "Denies the version command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`", + "type": "string", + "const": "core:event:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit", + "markdownDescription": "Enables the emit command without any pre-configured scope." + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to", + "markdownDescription": "Enables the emit_to command without any pre-configured scope." + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen", + "markdownDescription": "Enables the listen command without any pre-configured scope." + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten", + "markdownDescription": "Enables the unlisten command without any pre-configured scope." + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit", + "markdownDescription": "Denies the emit command without any pre-configured scope." + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to", + "markdownDescription": "Denies the emit_to command without any pre-configured scope." + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen", + "markdownDescription": "Denies the listen command without any pre-configured scope." + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten", + "markdownDescription": "Denies the unlisten command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`", + "type": "string", + "const": "core:image:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes", + "markdownDescription": "Enables the from_bytes command without any pre-configured scope." + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path", + "markdownDescription": "Enables the from_path command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba", + "markdownDescription": "Enables the rgba command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes", + "markdownDescription": "Denies the from_bytes command without any pre-configured scope." + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path", + "markdownDescription": "Denies the from_path command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba", + "markdownDescription": "Denies the rgba command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`", + "type": "string", + "const": "core:menu:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append", + "markdownDescription": "Enables the append command without any pre-configured scope." + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default", + "markdownDescription": "Enables the create_default command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert", + "markdownDescription": "Enables the insert command without any pre-configured scope." + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked", + "markdownDescription": "Enables the is_checked command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items", + "markdownDescription": "Enables the items command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup", + "markdownDescription": "Enables the popup command without any pre-configured scope." + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend", + "markdownDescription": "Enables the prepend command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at", + "markdownDescription": "Enables the remove_at command without any pre-configured scope." + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator", + "markdownDescription": "Enables the set_accelerator command without any pre-configured scope." + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu", + "markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp", + "markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu", + "markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp", + "markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked", + "markdownDescription": "Enables the set_checked command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text", + "markdownDescription": "Enables the set_text command without any pre-configured scope." + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text", + "markdownDescription": "Enables the text command without any pre-configured scope." + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append", + "markdownDescription": "Denies the append command without any pre-configured scope." + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default", + "markdownDescription": "Denies the create_default command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert", + "markdownDescription": "Denies the insert command without any pre-configured scope." + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked", + "markdownDescription": "Denies the is_checked command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items", + "markdownDescription": "Denies the items command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup", + "markdownDescription": "Denies the popup command without any pre-configured scope." + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend", + "markdownDescription": "Denies the prepend command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at", + "markdownDescription": "Denies the remove_at command without any pre-configured scope." + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator", + "markdownDescription": "Denies the set_accelerator command without any pre-configured scope." + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu", + "markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp", + "markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu", + "markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp", + "markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked", + "markdownDescription": "Denies the set_checked command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text", + "markdownDescription": "Denies the set_text command without any pre-configured scope." + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text", + "markdownDescription": "Denies the text command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`", + "type": "string", + "const": "core:path:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename", + "markdownDescription": "Enables the basename command without any pre-configured scope." + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname", + "markdownDescription": "Enables the dirname command without any pre-configured scope." + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname", + "markdownDescription": "Enables the extname command without any pre-configured scope." + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute", + "markdownDescription": "Enables the is_absolute command without any pre-configured scope." + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join", + "markdownDescription": "Enables the join command without any pre-configured scope." + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize", + "markdownDescription": "Enables the normalize command without any pre-configured scope." + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve", + "markdownDescription": "Enables the resolve command without any pre-configured scope." + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory", + "markdownDescription": "Enables the resolve_directory command without any pre-configured scope." + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename", + "markdownDescription": "Denies the basename command without any pre-configured scope." + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname", + "markdownDescription": "Denies the dirname command without any pre-configured scope." + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname", + "markdownDescription": "Denies the extname command without any pre-configured scope." + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute", + "markdownDescription": "Denies the is_absolute command without any pre-configured scope." + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join", + "markdownDescription": "Denies the join command without any pre-configured scope." + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize", + "markdownDescription": "Denies the normalize command without any pre-configured scope." + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve", + "markdownDescription": "Denies the resolve command without any pre-configured scope." + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory", + "markdownDescription": "Denies the resolve_directory command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`", + "type": "string", + "const": "core:resources:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`", + "type": "string", + "const": "core:tray:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id", + "markdownDescription": "Enables the get_by_id command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id", + "markdownDescription": "Enables the remove_by_id command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template", + "markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-with-as-template", + "markdownDescription": "Enables the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu", + "markdownDescription": "Enables the set_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click", + "markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path", + "markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip", + "markdownDescription": "Enables the set_tooltip command without any pre-configured scope." + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible", + "markdownDescription": "Enables the set_visible command without any pre-configured scope." + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id", + "markdownDescription": "Denies the get_by_id command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id", + "markdownDescription": "Denies the remove_by_id command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template", + "markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-with-as-template", + "markdownDescription": "Denies the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu", + "markdownDescription": "Denies the set_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click", + "markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path", + "markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip", + "markdownDescription": "Denies the set_tooltip command without any pre-configured scope." + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible", + "markdownDescription": "Denies the set_visible command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`", + "type": "string", + "const": "core:webview:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data", + "markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview", + "markdownDescription": "Enables the create_webview command without any pre-configured scope." + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window", + "markdownDescription": "Enables the create_webview_window command without any pre-configured scope." + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews", + "markdownDescription": "Enables the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools", + "markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print", + "markdownDescription": "Enables the print command without any pre-configured scope." + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent", + "markdownDescription": "Enables the reparent command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-auto-resize", + "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-background-color", + "markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus", + "markdownDescription": "Enables the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position", + "markdownDescription": "Enables the set_webview_position command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size", + "markdownDescription": "Enables the set_webview_size command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom", + "markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close", + "markdownDescription": "Enables the webview_close command without any pre-configured scope." + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide", + "markdownDescription": "Enables the webview_hide command without any pre-configured scope." + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position", + "markdownDescription": "Enables the webview_position command without any pre-configured scope." + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show", + "markdownDescription": "Enables the webview_show command without any pre-configured scope." + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size", + "markdownDescription": "Enables the webview_size command without any pre-configured scope." + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data", + "markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview", + "markdownDescription": "Denies the create_webview command without any pre-configured scope." + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window", + "markdownDescription": "Denies the create_webview_window command without any pre-configured scope." + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews", + "markdownDescription": "Denies the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools", + "markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print", + "markdownDescription": "Denies the print command without any pre-configured scope." + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent", + "markdownDescription": "Denies the reparent command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-auto-resize", + "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-background-color", + "markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus", + "markdownDescription": "Denies the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position", + "markdownDescription": "Denies the set_webview_position command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size", + "markdownDescription": "Denies the set_webview_size command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom", + "markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close", + "markdownDescription": "Denies the webview_close command without any pre-configured scope." + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide", + "markdownDescription": "Denies the webview_hide command without any pre-configured scope." + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position", + "markdownDescription": "Denies the webview_position command without any pre-configured scope." + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show", + "markdownDescription": "Denies the webview_show command without any pre-configured scope." + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size", + "markdownDescription": "Denies the webview_size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`", + "type": "string", + "const": "core:window:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`" + }, + { + "description": "Enables the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-activity-name", + "markdownDescription": "Enables the activity_name command without any pre-configured scope." + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors", + "markdownDescription": "Enables the available_monitors command without any pre-configured scope." + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center", + "markdownDescription": "Enables the center command without any pre-configured scope." + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor", + "markdownDescription": "Enables the current_monitor command without any pre-configured scope." + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position", + "markdownDescription": "Enables the cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy", + "markdownDescription": "Enables the destroy command without any pre-configured scope." + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows", + "markdownDescription": "Enables the get_all_windows command without any pre-configured scope." + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide", + "markdownDescription": "Enables the hide command without any pre-configured scope." + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position", + "markdownDescription": "Enables the inner_position command without any pre-configured scope." + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size", + "markdownDescription": "Enables the inner_size command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize", + "markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-always-on-top", + "markdownDescription": "Enables the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable", + "markdownDescription": "Enables the is_closable command without any pre-configured scope." + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated", + "markdownDescription": "Enables the is_decorated command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused", + "markdownDescription": "Enables the is_focused command without any pre-configured scope." + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen", + "markdownDescription": "Enables the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable", + "markdownDescription": "Enables the is_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized", + "markdownDescription": "Enables the is_maximized command without any pre-configured scope." + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable", + "markdownDescription": "Enables the is_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized", + "markdownDescription": "Enables the is_minimized command without any pre-configured scope." + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable", + "markdownDescription": "Enables the is_resizable command without any pre-configured scope." + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible", + "markdownDescription": "Enables the is_visible command without any pre-configured scope." + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize", + "markdownDescription": "Enables the maximize command without any pre-configured scope." + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize", + "markdownDescription": "Enables the minimize command without any pre-configured scope." + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point", + "markdownDescription": "Enables the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position", + "markdownDescription": "Enables the outer_position command without any pre-configured scope." + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size", + "markdownDescription": "Enables the outer_size command without any pre-configured scope." + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor", + "markdownDescription": "Enables the primary_monitor command without any pre-configured scope." + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention", + "markdownDescription": "Enables the request_user_attention command without any pre-configured scope." + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor", + "markdownDescription": "Enables the scale_factor command without any pre-configured scope." + }, + { + "description": "Enables the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scene-identifier", + "markdownDescription": "Enables the scene_identifier command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom", + "markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top", + "markdownDescription": "Enables the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-background-color", + "markdownDescription": "Enables the set_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-count", + "markdownDescription": "Enables the set_badge_count command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-label", + "markdownDescription": "Enables the set_badge_label command without any pre-configured scope." + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable", + "markdownDescription": "Enables the set_closable command without any pre-configured scope." + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected", + "markdownDescription": "Enables the set_content_protected command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab", + "markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon", + "markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position", + "markdownDescription": "Enables the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible", + "markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations", + "markdownDescription": "Enables the set_decorations command without any pre-configured scope." + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects", + "markdownDescription": "Enables the set_effects command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus", + "markdownDescription": "Enables the set_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focusable", + "markdownDescription": "Enables the set_focusable command without any pre-configured scope." + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen", + "markdownDescription": "Enables the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events", + "markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size", + "markdownDescription": "Enables the set_max_size command without any pre-configured scope." + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable", + "markdownDescription": "Enables the set_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size", + "markdownDescription": "Enables the set_min_size command without any pre-configured scope." + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable", + "markdownDescription": "Enables the set_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-overlay-icon", + "markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position", + "markdownDescription": "Enables the set_position command without any pre-configured scope." + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar", + "markdownDescription": "Enables the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable", + "markdownDescription": "Enables the set_resizable command without any pre-configured scope." + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow", + "markdownDescription": "Enables the set_shadow command without any pre-configured scope." + }, + { + "description": "Enables the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-simple-fullscreen", + "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size", + "markdownDescription": "Enables the set_size command without any pre-configured scope." + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints", + "markdownDescription": "Enables the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar", + "markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme", + "markdownDescription": "Enables the set_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style", + "markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces", + "markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show", + "markdownDescription": "Enables the show command without any pre-configured scope." + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging", + "markdownDescription": "Enables the start_dragging command without any pre-configured scope." + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging", + "markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme", + "markdownDescription": "Enables the theme command without any pre-configured scope." + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title", + "markdownDescription": "Enables the title command without any pre-configured scope." + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize", + "markdownDescription": "Enables the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize", + "markdownDescription": "Enables the unmaximize command without any pre-configured scope." + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize", + "markdownDescription": "Enables the unminimize command without any pre-configured scope." + }, + { + "description": "Denies the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-activity-name", + "markdownDescription": "Denies the activity_name command without any pre-configured scope." + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors", + "markdownDescription": "Denies the available_monitors command without any pre-configured scope." + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center", + "markdownDescription": "Denies the center command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor", + "markdownDescription": "Denies the current_monitor command without any pre-configured scope." + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position", + "markdownDescription": "Denies the cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy", + "markdownDescription": "Denies the destroy command without any pre-configured scope." + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows", + "markdownDescription": "Denies the get_all_windows command without any pre-configured scope." + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide", + "markdownDescription": "Denies the hide command without any pre-configured scope." + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position", + "markdownDescription": "Denies the inner_position command without any pre-configured scope." + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size", + "markdownDescription": "Denies the inner_size command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize", + "markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-always-on-top", + "markdownDescription": "Denies the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable", + "markdownDescription": "Denies the is_closable command without any pre-configured scope." + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated", + "markdownDescription": "Denies the is_decorated command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused", + "markdownDescription": "Denies the is_focused command without any pre-configured scope." + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen", + "markdownDescription": "Denies the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable", + "markdownDescription": "Denies the is_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized", + "markdownDescription": "Denies the is_maximized command without any pre-configured scope." + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable", + "markdownDescription": "Denies the is_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized", + "markdownDescription": "Denies the is_minimized command without any pre-configured scope." + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable", + "markdownDescription": "Denies the is_resizable command without any pre-configured scope." + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible", + "markdownDescription": "Denies the is_visible command without any pre-configured scope." + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize", + "markdownDescription": "Denies the maximize command without any pre-configured scope." + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize", + "markdownDescription": "Denies the minimize command without any pre-configured scope." + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point", + "markdownDescription": "Denies the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position", + "markdownDescription": "Denies the outer_position command without any pre-configured scope." + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size", + "markdownDescription": "Denies the outer_size command without any pre-configured scope." + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor", + "markdownDescription": "Denies the primary_monitor command without any pre-configured scope." + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention", + "markdownDescription": "Denies the request_user_attention command without any pre-configured scope." + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor", + "markdownDescription": "Denies the scale_factor command without any pre-configured scope." + }, + { + "description": "Denies the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scene-identifier", + "markdownDescription": "Denies the scene_identifier command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom", + "markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top", + "markdownDescription": "Denies the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-background-color", + "markdownDescription": "Denies the set_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-count", + "markdownDescription": "Denies the set_badge_count command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-label", + "markdownDescription": "Denies the set_badge_label command without any pre-configured scope." + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable", + "markdownDescription": "Denies the set_closable command without any pre-configured scope." + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected", + "markdownDescription": "Denies the set_content_protected command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab", + "markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon", + "markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position", + "markdownDescription": "Denies the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible", + "markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations", + "markdownDescription": "Denies the set_decorations command without any pre-configured scope." + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects", + "markdownDescription": "Denies the set_effects command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus", + "markdownDescription": "Denies the set_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focusable", + "markdownDescription": "Denies the set_focusable command without any pre-configured scope." + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen", + "markdownDescription": "Denies the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events", + "markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size", + "markdownDescription": "Denies the set_max_size command without any pre-configured scope." + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable", + "markdownDescription": "Denies the set_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size", + "markdownDescription": "Denies the set_min_size command without any pre-configured scope." + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable", + "markdownDescription": "Denies the set_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-overlay-icon", + "markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position", + "markdownDescription": "Denies the set_position command without any pre-configured scope." + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar", + "markdownDescription": "Denies the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable", + "markdownDescription": "Denies the set_resizable command without any pre-configured scope." + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow", + "markdownDescription": "Denies the set_shadow command without any pre-configured scope." + }, + { + "description": "Denies the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-simple-fullscreen", + "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size", + "markdownDescription": "Denies the set_size command without any pre-configured scope." + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints", + "markdownDescription": "Denies the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar", + "markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme", + "markdownDescription": "Denies the set_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style", + "markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces", + "markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show", + "markdownDescription": "Denies the show command without any pre-configured scope." + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging", + "markdownDescription": "Denies the start_dragging command without any pre-configured scope." + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging", + "markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme", + "markdownDescription": "Denies the theme command without any pre-configured scope." + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title", + "markdownDescription": "Denies the title command without any pre-configured scope." + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize", + "markdownDescription": "Denies the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize", + "markdownDescription": "Denies the unmaximize command without any pre-configured scope." + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize", + "markdownDescription": "Denies the unminimize command without any pre-configured scope." + }, + { + "description": "This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-load`\n- `allow-get-store`\n- `allow-set`\n- `allow-get`\n- `allow-has`\n- `allow-delete`\n- `allow-clear`\n- `allow-reset`\n- `allow-keys`\n- `allow-values`\n- `allow-entries`\n- `allow-length`\n- `allow-reload`\n- `allow-save`", + "type": "string", + "const": "store:default", + "markdownDescription": "This permission set configures what kind of\noperations are available from the store plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-load`\n- `allow-get-store`\n- `allow-set`\n- `allow-get`\n- `allow-has`\n- `allow-delete`\n- `allow-clear`\n- `allow-reset`\n- `allow-keys`\n- `allow-values`\n- `allow-entries`\n- `allow-length`\n- `allow-reload`\n- `allow-save`" + }, + { + "description": "Enables the clear command without any pre-configured scope.", + "type": "string", + "const": "store:allow-clear", + "markdownDescription": "Enables the clear command without any pre-configured scope." + }, + { + "description": "Enables the delete command without any pre-configured scope.", + "type": "string", + "const": "store:allow-delete", + "markdownDescription": "Enables the delete command without any pre-configured scope." + }, + { + "description": "Enables the entries command without any pre-configured scope.", + "type": "string", + "const": "store:allow-entries", + "markdownDescription": "Enables the entries command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "store:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the get_store command without any pre-configured scope.", + "type": "string", + "const": "store:allow-get-store", + "markdownDescription": "Enables the get_store command without any pre-configured scope." + }, + { + "description": "Enables the has command without any pre-configured scope.", + "type": "string", + "const": "store:allow-has", + "markdownDescription": "Enables the has command without any pre-configured scope." + }, + { + "description": "Enables the keys command without any pre-configured scope.", + "type": "string", + "const": "store:allow-keys", + "markdownDescription": "Enables the keys command without any pre-configured scope." + }, + { + "description": "Enables the length command without any pre-configured scope.", + "type": "string", + "const": "store:allow-length", + "markdownDescription": "Enables the length command without any pre-configured scope." + }, + { + "description": "Enables the load command without any pre-configured scope.", + "type": "string", + "const": "store:allow-load", + "markdownDescription": "Enables the load command without any pre-configured scope." + }, + { + "description": "Enables the reload command without any pre-configured scope.", + "type": "string", + "const": "store:allow-reload", + "markdownDescription": "Enables the reload command without any pre-configured scope." + }, + { + "description": "Enables the reset command without any pre-configured scope.", + "type": "string", + "const": "store:allow-reset", + "markdownDescription": "Enables the reset command without any pre-configured scope." + }, + { + "description": "Enables the save command without any pre-configured scope.", + "type": "string", + "const": "store:allow-save", + "markdownDescription": "Enables the save command without any pre-configured scope." + }, + { + "description": "Enables the set command without any pre-configured scope.", + "type": "string", + "const": "store:allow-set", + "markdownDescription": "Enables the set command without any pre-configured scope." + }, + { + "description": "Enables the values command without any pre-configured scope.", + "type": "string", + "const": "store:allow-values", + "markdownDescription": "Enables the values command without any pre-configured scope." + }, + { + "description": "Denies the clear command without any pre-configured scope.", + "type": "string", + "const": "store:deny-clear", + "markdownDescription": "Denies the clear command without any pre-configured scope." + }, + { + "description": "Denies the delete command without any pre-configured scope.", + "type": "string", + "const": "store:deny-delete", + "markdownDescription": "Denies the delete command without any pre-configured scope." + }, + { + "description": "Denies the entries command without any pre-configured scope.", + "type": "string", + "const": "store:deny-entries", + "markdownDescription": "Denies the entries command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "store:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the get_store command without any pre-configured scope.", + "type": "string", + "const": "store:deny-get-store", + "markdownDescription": "Denies the get_store command without any pre-configured scope." + }, + { + "description": "Denies the has command without any pre-configured scope.", + "type": "string", + "const": "store:deny-has", + "markdownDescription": "Denies the has command without any pre-configured scope." + }, + { + "description": "Denies the keys command without any pre-configured scope.", + "type": "string", + "const": "store:deny-keys", + "markdownDescription": "Denies the keys command without any pre-configured scope." + }, + { + "description": "Denies the length command without any pre-configured scope.", + "type": "string", + "const": "store:deny-length", + "markdownDescription": "Denies the length command without any pre-configured scope." + }, + { + "description": "Denies the load command without any pre-configured scope.", + "type": "string", + "const": "store:deny-load", + "markdownDescription": "Denies the load command without any pre-configured scope." + }, + { + "description": "Denies the reload command without any pre-configured scope.", + "type": "string", + "const": "store:deny-reload", + "markdownDescription": "Denies the reload command without any pre-configured scope." + }, + { + "description": "Denies the reset command without any pre-configured scope.", + "type": "string", + "const": "store:deny-reset", + "markdownDescription": "Denies the reset command without any pre-configured scope." + }, + { + "description": "Denies the save command without any pre-configured scope.", + "type": "string", + "const": "store:deny-save", + "markdownDescription": "Denies the save command without any pre-configured scope." + }, + { + "description": "Denies the set command without any pre-configured scope.", + "type": "string", + "const": "store:deny-set", + "markdownDescription": "Denies the set command without any pre-configured scope." + }, + { + "description": "Denies the values command without any pre-configured scope.", + "type": "string", + "const": "store:deny-values", + "markdownDescription": "Denies the values command without any pre-configured scope." + }, + { + "description": "This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-filename`\n- `allow-restore-state`\n- `allow-save-window-state`", + "type": "string", + "const": "window-state:default", + "markdownDescription": "This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n\n#### This default permission set includes:\n\n- `allow-filename`\n- `allow-restore-state`\n- `allow-save-window-state`" + }, + { + "description": "Enables the filename command without any pre-configured scope.", + "type": "string", + "const": "window-state:allow-filename", + "markdownDescription": "Enables the filename command without any pre-configured scope." + }, + { + "description": "Enables the restore_state command without any pre-configured scope.", + "type": "string", + "const": "window-state:allow-restore-state", + "markdownDescription": "Enables the restore_state command without any pre-configured scope." + }, + { + "description": "Enables the save_window_state command without any pre-configured scope.", + "type": "string", + "const": "window-state:allow-save-window-state", + "markdownDescription": "Enables the save_window_state command without any pre-configured scope." + }, + { + "description": "Denies the filename command without any pre-configured scope.", + "type": "string", + "const": "window-state:deny-filename", + "markdownDescription": "Denies the filename command without any pre-configured scope." + }, + { + "description": "Denies the restore_state command without any pre-configured scope.", + "type": "string", + "const": "window-state:deny-restore-state", + "markdownDescription": "Denies the restore_state command without any pre-configured scope." + }, + { + "description": "Denies the save_window_state command without any pre-configured scope.", + "type": "string", + "const": "window-state:deny-save-window-state", + "markdownDescription": "Denies the save_window_state command without any pre-configured scope." + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..8eaa1751e495fa5593c7f67e3e21a1e40c5b91e3 GIT binary patch literal 1455 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..b3591c12cb77d06ecef7760bc541dfb778e93117 GIT binary patch literal 407 zcmV;I0cie-P)ENJ77iFreH7-lCNy^6c z0Scxr(g05r&Opd}A?Lhvx%a-S;v4*t-UY)3$Re%H`g#06g>lM zp%##*vC`Re=5wWf@)&HToPZi4vg;+!Mfk36t4!!a5{Rg;3MJc+2DVg4MkxYrpOR!k zdj~k)WeEZvQvtnm76K$VAUy<)fJVT-7N8W(_r0Ei)0_OWsZZIvu2n3+-1@w@yaEs7 zlz9A-?;n^eG^E*3|8?zr4+))XLJ}y9-|FA1LI& zvKv#sc=IVO3t~5lHlC&qGy?u;DP~OMU5YVL2sD((k3mwLj8~q;rkL2Y`a4ql=WZNWMsX0Mk%`;+6^m zMI>lkB+wdCr1B0sImQ1jHjYp(@$S6JcUqtB{dRZecJC&S3HsG2l-by2X08EL1-Oiv z5Pfm?+9skFS@Z5rz0)4sa-4BX_LaLx1TRFfVY7K2h!lXs##{uVEdm$dkr>o*5bAg9 zo#t2oVx9;Mcr0erOZDS81t0|TJ=2_9JsSy>m@ia`x}On2wGeX8~~sI6u>pm zryqp%?exO*`;OHSpa2wr0#E=7KmjNK1)u;FfC5ke3P1tOFo1)@WW8T0@l@^a7d-&5 zzHQuQNB{WoBJlS4bO7dWdH`V1yy*Dk{C0m%u5JpL%e=Vs`0zAHw!cR8;cNO_rRV{G z`5WnT&)(1wgxwb5 z8ox3Cx)x9X3P1rU00p1`6o3Ly01Dt*$hZ$?_Yv;L!uzrx&<=P2v<-n;p}H6E4uENf z3&1pu)XfmnZgA$E=U&Z_BeB6uzk`W=&Z~ItZHgu&OcYM)GtpTUX>V6p>gc4X(Er}Y zQ1xi)t;NqqVa3A6M10G)VJ|&DS~{D0FCYzaFjb!dqj(Wdqvpp}k7KZW-j$X~b(K3T pyVeh9+bnw(E5iT)002ovPDHLkV1j%%Nk;$x literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square107x107Logo.png b/src-tauri/icons/Square107x107Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d5a3328107c30594a49f177354bb19ed9f10b3ad GIT binary patch literal 1186 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 Sz`DMC902;1E2`;aP}*O_SsS+i literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..300bff6cb363379961fe76df04df9c0f894a0fac GIT binary patch literal 3145 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b7dc09734cf45e18e157b07f9dcf7add40d1c0a2 GIT binary patch literal 388 zcmV-~0ek+5P)WDQS%U}m5XfVwfm$cT7=@CGo!z`$G<5EBwhE45-m z1SDW0hc5xOYXxx;$}e4HofUsRJC5%HeCa8%_RVA+5s3-J_*Jndz-e8~{#-jvbB{g- ziCqS>OF}G4lz=J3tcC6Lh7XBtelWW(8#)emkuL;-Y|j_8SYolSj%hMt9iBzU417jA zw&2YGQo84I)G{VkhYzT-l$l==TFdAxT*qN4 id+x^6v6Z1L^?d@rW_G2V#3RrE0000NIoIjUz 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 Mb+W1Z!RP1y0_gyAU;qFB literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a5cd77a9d69ee9081b373face46487bb337a8cfe GIT binary patch literal 526 zcmV+p0`dKcP)J}s9VLsIJhf*fTp0MBCalVtfPyff(};K zwnCk}*SnOI)PjpaFL=*%mkZ&Shc~(Bcr*B-*Gg_m3RwhW3E(;Wff%R}QB6ou9WOPX z;%gM2G^)-Hn0*)`1~mo2pD4Bu27nuZQ&G2gFj5q_Uc016B806tzPYfW*WOFT*$C0Y znx&6N7%p8NLoB8<4Cx~UB5Px#07*qoM6N<$g2oT^cK`qY literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5872eec2e62bb16e5fc9601ee73cc92f7bc9a05f GIT binary patch literal 807 zcmV+?1K9kDP)ljQ5C`zPmn@}9ZkIT-_`c#~Dz38TUw#3h(lHGNNUr~TLokMni{1G^9w^++A%s-%(Td+scDmWvt z|A|Q~%6OO>loNHw6zO2*_|)45%wV>NCFIwFzx$``-WRZp#wE!u

26yf+qy{hs_ zfD?TISXIP)3lx#J8de^KIA-QBt>nQFAHV@lig20-OnZmn*H@Q`%2y=YIC}>~FW-k( zQ16YZHAXU1!;AX4iW3V`|bGSn}^}`IBHh4qWhbuz8gm9{^4MO zeLQZKQ#y0v2KM3&2fv5^~oz0)SmN%NvRK8 z5&)(ytxRmL$+_!>T}d7$Q5-Wk19a9{uMjx1ts|!P(O`Dz;$0G2)CGK&C^N^wy%lhP0~`c!fCC)h00%h00S<67A4-Hi zf*~BnC2x8=fP$i))bo^H%xQok@=3jhnx`CaBEq;R(R;qr lf}q=*zQ8lrG1I!e{RQ-h2D-_wMwkEq002ovPDHLkV1gm6h?xKY literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7dfbacf383f40c1435f9ae06c8470998d090cbae GIT binary patch literal 986 zcmV<0110>4P)vVWFH5 zrHOc&Nz(M+hpR$TWum$;mF=dzaj8(RcD#3oxLKFo$7bU!AxCr{SgfVtLcQD*a?MFk z6T8oW8ys^+S8TDD%*d{EjeM|{S`d+CFm^bunHPuW8!H_n@0U`JIYxQVbxmCw$u|mr zerf?Y(&CZ#{6dgxPHGvzy+a>3sYTy%p%*!3_dSrJi6!=pql=++Qn;HAXrhZwd0Waw z%}JUPA=99V@DgaIy$4P@cZ_VN9}8fKp*nN(a5OV&aqPAEa)POu14WFrncQpwwK(?L zoU?>^1{ASA+ejzQ$D_)=KGPUWfFbs=JPzc45Fi5?$bHY&Ztxd7*CzzXQDkl<82R%m zkWnrWAOjfzGLV6c02#%FvF3fY zwc~xwe``u8pA{hY8il?4f&&(({68bv>gPYtOa_nC&0TJDfP(*?90GDj@yZB?9E9L~ zuZ{w_wJb~q)axHa>zl#*z1<8x0GSB^a?7Y23I5xYH%zPVxMf7^@AqF>#}`V!Tp6&D z%=@KeUk`ijE7Q$l`*)j+Ui4-mI>OtX8LuBUF_K&HB(P+(9*p+Dng@3TvkSkxyeE;& z2xc?kGnR9WoEj2yiuVSsz|ZEIM3^UsO}jkkPD;n=j9egkIwu1QJP;Q?-#M_kwO%(< zw5=WUCYf*kusRo>%?RC|8vI-DfkgJZyVIG4!fI*3vx}HY3E=?|0%RZq838ho5g-E@ z$Ow>u3}ghzKt_N}ef|1Lcn=H|=lgy4EbRmXi8$ZYDb<9w+5rW{`PSLG8Oc-zMXYa~ zEn7C(6;Q+%^|cPWaS3gMBbH&jt-fC40J4h^iK8BSuBV#0BrD8>w}MACh=n#r3*WOX z%d~8a=BR6N@yuE{ZK1=$kH8Z_nJ|v0`}3VyeQlaUm4sy;RDTV;He6`rLsxa`2D%}* zq5%$EI{OS9x`-(|md}ySLs+;ST+*XLBRcRe(zbc!+@* zXcAFVX?6HytABp`IgJl4>)Grd(z^t%A=aWshSkpUR=+<5VqDOqPmBw&LUbxHuR<6K zofwe*E)Y3br3glu;ebYU`yhhKDGi}N21t@po~F?kSS-a0t0|394VFtoms3(D8@7Wm z*h?V^B6^Vs5ZU*#$#6t8H;~>h!jH>n{B#*udCc~KoV0*XpQA6L${R-It%Z&xCbb-h z192b@#DO>v2QrUS;;dizdq}|t;(aQt#MF`3drAQQ{$4Kv2iuchwjF;GZYdp8kPyP? z%%6VlUs#e_FY}X7$F0bLR+rG}P0nA-b37ecFEYM$qu}2k5%!NMNTG4Jj5gO|>`2*T z6rSBG{J}JYne*Wt$9vT}s&Y{1|4TnJXDK~<5b_&~Gke70xw zxq!Hx-GMj|2jV~+hy!^5G1HY|#@7U(oGJn}Vf~Gjw00<{hW&p$sD?5PD#UbXts4@% zVF=D6X{egq@wP3zmu?5KhX*Uu%aOr?XBCXZYGMwXYHm)5A&d=aW?~$NnCjQUc*~Qt vMVO8PnNlL+M-RPEm?bt?oushuYCO9J@DjY&eC4iX00000NkvXXu0mjf%ZCYs literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml b/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..2ffbf24 --- /dev/null +++ b/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f58f873379b7d4777831801c5b63cb1280d51ba4 GIT binary patch literal 1023 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 Q&j0`b07*qoM6N<$f+@Yx>Hq)$ literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..1f997728cbcb7b7558bec48559fa349c6832f62a GIT binary patch literal 1235 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 M07*qoM6N<$g1C*``~Uy| literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..842c73c35bc9a889f9467d6db43e1fb2d3cf0da6 GIT binary patch literal 2375 zcmZvedpHyNAIH@+w~a0?%N(MgbeLsC5tdv`#hh|^ZtDPdB30Mn|##oAXw8- zQ$8)Vk6A|=z+zQt0o^(pe>Fc z;~lE(Y~(F0;xD`j%_qvH>g6&EQzupJIsWou(?a9Iv>#=Ab#IC9%@RdCXa>JC<*6AZ zXpv}5!C3Cke$DH0Uo!MSX(8Zx1t{&sK}qJFs-i+Ap{-EeGHg-&=g#6zw?s?opJUm`dFYk?^_XDJ$T!)ugk}XS!0B~ep@=&)dsGccwa;xI zs28*C@=(Bc3CJ}5PLE*7GtMy-b1?pS!e?B!Y3l{012U~qkp2$S@7;2dyEK^Awy`^+ znR#*IzQ1BWgUuCKiI%c!AQ(I5{p+-lPJkUbdPtM8q}(-iu=r}4KJ zU1AVP2g8oz9KO~C()VR>kYijoINOQ-7K9DY^hB9}+DC5tQeJRl1<%W8wX7q4{a7}n(W){JKl|P3A8$G|unKJ@_s=h+>I|PY zDS0_7@jxxZDQ*pclvIf(z}&`hu{=%Ov)apJZS@5)1l7$)+}KxdaF3#$d9w5E7gk4G zuCJ19U+f8C%*!h6vGYRZBMB0HIZw}IVFewkDAqHWE%^O1ZDo7dH-e>~-rI zZl1#x77k%wjF@1BUfm3H3?$1pLNgK$)ePzb$N@v|yox-g?=t5EdtCris zS6E{ISFBG{1la=(5DIHYOhj*&BONS|O?R?j`*!^yZ_tE+Uc)gx@(jyphCmrCBk`34 zd%FVjKRLj|daFV~koxF6W@;iO!zon{7H9F=T!{1bB!T;E%N`hfQWN`|s(tu;$h-A4 zKMhdv$qQXDbSbo;+{z|#IU7Z#T_O6!MwwD`(lO=%=l|hG?3(J|6?0|!_a2vr?3Me9 z%f1+k3Bxum@l=hxj&m6?BMd+&<*7#lQNisY3nSewIW5U!BzbD8SJALERHQ^zNjm0d z-*zv5jZEIlA%W%7!%s7DapQ5igDUk)nWMSu5*IpO=*_K%&IOjZY@wJscijs^tLg)n zAIb9taOyeSmr=TKGYXP-2_sYDuZ6Hon*8^c!C0diu_Eede3LE@`j()9hZGeF8C%Fd zWsBe>uwrJ=LZ%O3D{}AFuFO@}s5;ovjTbpanMGR_nF5qPFyLa^2qLf!AtyI;Ukk{E z!+{LfQ@=|l8iG$;uogymvmZSoG;3Q`S{dYe>JK8o*2_b7NdHU>AIjd*4@(bIg?Bm0U2V#~&eAWY! zPI>+}BR@9kzit2j{{By_{w4W7DfOKxW(kpyhw)FX?I3fPk|7=_JJ8X_J|r?R&{p?d z_Dfp1nQkX={StzF)>{m62m_K`J3LT#C+JyYUxL!wbU+%El-P};>pP&6RV6N2dRkP~ zXD5xT=|doxCdd*Da|Oe6aySorMbBf8$4puv>7q_k{asMQafJ#j!L{ewZp9hkFf4kY zW50Q4Yb{g8-azYu8b0}?Y*}*LtS1=wY6S2OfQsIH2P*5EH(2b z1a|yI-R#(w*`LqeJ!Q%It| zzOfU0Z#s)^EEmga@V7Swusb`5*G$v;b17qc+ppN3;mz0HY`#uQyxf{tB!1Hi`--itu2Dr%S{8py(8IWS#H8g-%U%+xZhxp7E+F!4|n;13U>TNN2DX2 zYVL*A%obN+o_$O%iB`55HJ5dZo-os+ee+>Cu1Yx3l^3d3^?r3-rTw@+=gjBQwGWcY NuU>whrS9mYzX3$mgEasE literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..e4273ff9efa5dd8ca1e8cd32bda138d7e36c1535 GIT binary patch literal 1390 zcmV-!1(EuRP)ssDl-cXcHQLKmfruEdqA zf(Rn`6T1*yXd?aqiNba}pi(<$JNzjVWpfQYO)7D7y?%SdP<47EEf8HT`z zCBhK+utZpbANIZtfe-5qmf(k-k0tnF=Vb_dSV^)3KkR%h!4ErcOYpJ{mp=kM z-9WWwB33S}Re*=@0q#2BQZGTCt0H2wew7v_;L=aPYwsA040wyrykcnuc>5KHyAOI| zT$|#-fAs=el%QKxi4kjG*H5zXNh%v25o1s;Od6U7SurQ8pE?QB?_w_fuuM6_dI2BA zV)p=Ae`~#f9>C&UN)Y8IpbXIiV)X!8e|x-u9>5?>0ytue0o4EY#Q}N%C5QxYkN^_E zK>|nsqS!NQwyx(%U#L40(9+>*zhp&LSFRh(&U^4DMjh@L^<^dvMOLo%-q)Z#B@eA8 zAjCtM0=%aTod3|^{jUvvUjQyI`m&Pco518D;LRzAI}gauuFLnP(QTBlv=qf`Up1GT zC*csAl@%bZV3?Qx`jQk^&Hm-fOcd0T+~Jia;EzRva#u5$`uCPsf$wI8n9>$t%b&YT zo*T#0QnoKCQNYLcxwNuPLCp%Tx&`!We*;&Syhqg6_+(&f+2NleS9-mkfXtF6$9&mh zjGhq9aWx9;@PG$D1IpDbydt`<(lk47Fx2PcfEHjW@O?eNf)Mn@4?u5SS)vkHk?V&g zZVdIgXv0G^9-wk_{}Jy2^_Hq2?(GLYn*q+eXE3*5aA==M6k)z6LB)zZsC%)6fhzg#tV@F>vV3taz43UbBr zwJ5j0+$c{fM{7dL$>R>g{hnaMG;{}76m(W3!#VY&!_@aCl@_;2?|bBKKb;0X`NnwP z6=JOX+(2(*`MK)-${O&{q!Qrc$ZFEQJp#EsvP?mK{FuYD54aS-F54U@2KPv;5D6L* z`57K=2H(~K`b|k+Uw+JC;x_+p#Rz_s1SsgQKj(0K!aoCSCPBegZLeh2&(%$`Q}KcM z%!|O&CmdGS3s9Wf&Y^&gi-n&%UBwgkIxH>MZ9#GyxxC9hbxRaCWG}$TAn?ZX4zHf9 zrj^o360h}Rr@SEaYf05@^?;A34c@wFFf-@BtGD=Utw;$NldNd!QQ(>T9Bv=-X{Sn2 zOyF53!J zH)1iTp|KwKTcpFC=m8AElps)s!krsI56Ht>5WS#vr>4*Y^0FFAFKEq~LAD5OK=OR3 zDQw#aP)^U%b> z7QI(v>>V@=d&q<}G+X3GnR%F(Eqb@o*ym%|NiVD+*-q-+8{>Vmn`)m>)KL7v# literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d02279ade428a581de57838a34835339ca73ff8 GIT binary patch literal 3397 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae788b4746b5176735fede5e7b09ba52ebdec70 GIT binary patch literal 3530 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 N002ovPDHLkV1hXV2T=e3 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f52f35141a80af081795b6c11a2777536c1fceaa GIT binary patch literal 4537 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..ea00e1851ec68491ffc087a28bdbb7074b0a2adc GIT binary patch literal 4806 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/values/ic_launcher_background.xml b/src-tauri/icons/android/values/ic_launcher_background.xml new file mode 100644 index 0000000..ea9c223 --- /dev/null +++ b/src-tauri/icons/android/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #fff + \ No newline at end of file diff --git a/src-tauri/icons/icon.icns b/src-tauri/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..c5761d913bc4af2abf02a5264e36c86de9fea946 GIT binary patch literal 35758 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/icon.ico b/src-tauri/icons/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..aaf2ba4cd44b46b6579af5aa330d8cf9a361f040 GIT binary patch literal 5718 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 nts5ES0zAQ1Vl#y2iRZWs{n0({=oGoXsQ6z literal 0 HcmV?d00001 diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e6767b7f63a3b8ce1147fbf79970b805a03e3b7c GIT binary patch literal 5942 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 tW-)<^ZBR)Ib}7)w zI#j3*N(%~BYo(-W<-C_#lSl`#wK*i;=|V2y!}r~fckd*|1qS6WH{s=G4+^(YfVV8v zMGbCfYVU_e-zYdbrcAF$8Spi84%z4|6d&VYrKHv%$b%7(oIV{8;qLcG>gU)G9QBMH zX^<43(K%t@P@LuAa8hg1+}R4VI;@q1O!;IOB=ssnKv40?%B1)FwWxehxH~2ih%7!9 z#RkM>=P!P`yiMUEU1~2)FbF72EWiYZJ583_IaNRhg%7a}Xam}SHed|_b80CWYH8MY zi)XcVfb_Q?E`}*|&Qa)DAP`G_+euOa04lQX*g;%RDN`A9dg+xd3UQaBw|8Uwa6>4E zVJ29FQ`(p{fWtusy?*kQ6zrU6XE0Nr)ey5T#Hh6y2Gau--1P!%%rofoR}VrPgS z!JJ4DEwu_L<{2%_I#^9oYVRaApbhw+0Vzl>Ca!%hMzOLfs*sKHva7JwEo7q(e+VRZ zw{T%bCS=o+1$k(T2sIWti^f#WX0R6Q8IKYXoJ0nV#aKi)cEGYLRyMV3h~g8emt&vT d5Cp?&)CXP5p&B zI#j3*N(%~BYo(-W<-C_#lSl`#wK*i;=|V2y!}r~fckd*|1qS6WH{s=G4+^(YfVV8v zMGbCfYVU_e-zYdbrcAF$8Spi84%z4|6d&VYrKHv%$b%7(oIV{8;qLcG>gU)G9QBMH zX^<43(K%t@P@LuAa8hg1+}R4VI;@q1O!;IOB=ssnKv40?%B1)FwWxehxH~2ih%7!9 z#RkM>=P!P`yiMUEU1~2)FbF72EWiYZJ583_IaNRhg%7a}Xam}SHed|_b80CWYH8MY zi)XcVfb_Q?E`}*|&Qa)DAP`G_+euOa04lQX*g;%RDN`A9dg+xd3UQaBw|8Uwa6>4E zVJ29FQ`(p{fWtusy?*kQ6zrU6XE0Nr)ey5T#Hh6y2Gau--1P!%%rofoR}VrPgS z!JJ4DEwu_L<{2%_I#^9oYVRaApbhw+0Vzl>Ca!%hMzOLfs*sKHva7JwEo7q(e+VRZ zw{T%bCS=o+1$k(T2sIWti^f#WX0R6Q8IKYXoJ0nV#aKi)cEGYLRyMV3h~g8emt&vT d5Cp?&)CXP5p&B3G90&04JFfAts8xs#)^?G>M2V9OFla)eQW|da;S`&3M5mp#XB}Nk$ z80sRzfDx8LNz_=y+G_EH=lzacDPF7AZG(Zjvw!) zVSbv&&(Cvc<%ACPL+^;gh+RN?EK&D$q86B-#n};Tl(O(++QM;koV5dO@28mV~*cy4N0Y%GosZ^_3^eSGUsI%a5h* z*Rl40VivQ|5ulhKW<;RC_PESo278yxqQKQVI|qs3^Af{@k}J$$1~Zt!3}!Hc8O&e? zGnm0mjpp?Za(RK5OG51mPhJ};UM_N1kcMcvy{R*Qcv3k>wgO4~2w+}LQR^b{;sAMWvF4=L*p4MH}O zk)*_>Ug^(c_}ZDq+Vf&BJjZ$p-rFwm=!V3p?tl1lP6MOK&87@Xp0#v!p3MpSjGVE? zI z6WLrh@o3dY*SRU7Ql-g4rkcxmszVDRtc6-~j{dES*MNhx0Pv5XpI0(o2QxN oG`YIfFDgRzQoJESXXASL1!ei^R&R|*VE_OC07*qoM6N<$f^7$5pa1{> literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-29x29@1x.png b/src-tauri/icons/ios/AppIcon-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe03170896f5d4dcf5e116362247473e3f9f46b1 GIT binary patch literal 413 zcmV;O0b>4%P)N$}6n2F?j|FBKG$J7CwOXCR&Qx`vh9WAhueh(+CyLfA;ccMUBPPIA1fn35pzCnvWn^_ zj)FuI*?ib z((Z6YtnWN6*MP%w!cl?#=AL}bPE#)53P7;}tnY{4T6+$kZKO3hm5^?&s-N-~UQP_y z^VC2kFxbQg-DTcCDFBKV6TnnV>Hm8Ll6Ip!jiCQi#*Ulqk(g(Vb0ch0!m}oqcgUDq z<_OP{RzIG~=?C-r!Vw(^ z4@D2=sI3ZmY1p8MY11D;)@(b@i*4*Cn^M7%-SK@PzlPbshxeT~v$Jn(se}M|D|xui zB;3z4s4UE4tvrt~s-^t^TD$uZ%bZ7S-wD|9Okh7z54!Fyq5NSCD|6#OrG!YSHG%k% zA++}n!-{n^2mMiei_)thc#CfkW!ZZMkT^b$UCE=3pal8t*}3RNahvG&oSCe_TAOyI zNE!o4QY^$oY&Fo;cVjZ@b`4CZiiy~&)~zhh%dbxc&5CB7h4)@~3ERy-H5YQj!tR$D zSn5r}aH(KQyRtYZOb7MKj7+CZw6Fl&neyks z>_MqO*}4qMpbW~O49cJk%AgF&pbQ!yOXr_2e;3Go5@ts9y(4h*p-`W{+onev?=y2B zBOcLI5cT~T-tmpaDj#nC@YLenEs+kTO@tlO8CxOQsi{cm5@3#oN_xpif| z3J`B=-lsPO+`TSw`I!EvB3i6lKbKM#uAfe598=`~m9&HM5|BX|ltCGkK^c@m88mFN zT6SlQUjo{RerZurukoNA8CAc#|D^E+RjN8$SX817yUSerDmE2NSX6`Fad_BRPGTcQ zYvYHY0c&CsBDUIA3KiNX2JZ=@EUZ|FY4Z?4ZO@2m&wI{J84+1xAeO+x1K4sLgvztk zOO-_~iKs=9#w6Kw+v6apKj5P(m#L`NTg}5O&5E!_kLF35LMXd7JK*yZSV#X7v+<;o P00000NkvXXu0mjf?Lk~{ literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x.png b/src-tauri/icons/ios/AppIcon-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a9a0cf1ecdf9bcb812c05a2f3f0a97b0c46fc2 GIT binary patch literal 733 zcmV<30wVp1P)(^ z4@D2=sI3ZmY1p8MY11D;)@(b@i*4*Cn^M7%-SK@PzlPbshxeT~v$Jn(se}M|D|xui zB;3z4s4UE4tvrt~s-^t^TD$uZ%bZ7S-wD|9Okh7z54!Fyq5NSCD|6#OrG!YSHG%k% zA++}n!-{n^2mMiei_)thc#CfkW!ZZMkT^b$UCE=3pal8t*}3RNahvG&oSCe_TAOyI zNE!o4QY^$oY&Fo;cVjZ@b`4CZiiy~&)~zhh%dbxc&5CB7h4)@~3ERy-H5YQj!tR$D zSn5r}aH(KQyRtYZOb7MKj7+CZw6Fl&neyks z>_MqO*}4qMpbW~O49cJk%AgF&pbQ!yOXr_2e;3Go5@ts9y(4h*p-`W{+onev?=y2B zBOcLI5cT~T-tmpaDj#nC@YLenEs+kTO@tlO8CxOQsi{cm5@3#oN_xpif| z3J`B=-lsPO+`TSw`I!EvB3i6lKbKM#uAfe598=`~m9&HM5|BX|ltCGkK^c@m88mFN zT6SlQUjo{RerZurukoNA8CAc#|D^E+RjN8$SX817yUSerDmE2NSX6`Fad_BRPGTcQ zYvYHY0c&CsBDUIA3KiNX2JZ=@EUZ|FY4Z?4ZO@2m&wI{J84+1xAeO+x1K4sLgvztk zOO-_~iKs=9#w6Kw+v6apKj5P(m#L`NTg}5O&5E!_kLF35LMXd7JK*yZSV#X7v+<;o P00000NkvXXu0mjf?Lk~{ literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-29x29@3x.png b/src-tauri/icons/ios/AppIcon-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..854858d18a94f7fa97861f67f61c9db2fc1034fb GIT binary patch literal 992 zcmV<610Vc}P)u#KjB8iA^TymfyA*$Zo8!{ut7?r9+3a61&E#JZ=3vdUWZ z;WF&EN2h7&doSd4#**ct+!I}Yvy=r@!AYqD>K7u z6g#fL4K84f&@mu$@0-KzLBXB-)FQCmGA7IOBSFs)u5b9R1QsLPL(tRWAL&xG5o4>D zFBQoCv2FnlIdP zCRJ_`u|4R8ZK@TNX%)a-ABKq+m|@$l3Oeo**ovuzE3W183e}Yh1xqjL88^|rdZG00 zWQ^p!m623`*^Ez8PKTfL1{XSSU}wOOe8+gEEpXzI9b5>j+>~@}An9=l7j6*X0vEUl zaDfY41h~KjE&^QOBESVMa1r2caOBjyQd}%IA?%9EHM4Tlb{v9&31L?`y`TaglxafP zRpwbUDYgRiT?50O?5f(iv`=w&}$0%Ba0acrSu1^Zzal>Oz z0z-TNYd}^zhHq!G7uAw&cQtx%0%1RPB(=du%50v8=x+sFv1(KOqE7Ogd)I_rgvPFb7q8VlHm(_zJZr`` z)J{MSqVhgA^T0JJ;Q^ntZh9(D?%)9v^!wxbX%k%C3SBGUQ`%Ujr~U%m#A_wFnfq=4 O0000 zI#j3*N(%~BYo(-W<-C_#lSl`#wK*i;=|V2y!}r~fckd*|1qS6WH{s=G4+^(YfVV8v zMGbCfYVU_e-zYdbrcAF$8Spi84%z4|6d&VYrKHv%$b%7(oIV{8;qLcG>gU)G9QBMH zX^<43(K%t@P@LuAa8hg1+}R4VI;@q1O!;IOB=ssnKv40?%B1)FwWxehxH~2ih%7!9 z#RkM>=P!P`yiMUEU1~2)FbF72EWiYZJ583_IaNRhg%7a}Xam}SHed|_b80CWYH8MY zi)XcVfb_Q?E`}*|&Qa)DAP`G_+euOa04lQX*g;%RDN`A9dg+xd3UQaBw|8Uwa6>4E zVJ29FQ`(p{fWtusy?*kQ6zrU6XE0Nr)ey5T#Hh6y2Gau--1P!%%rofoR}VrPgS z!JJ4DEwu_L<{2%_I#^9oYVRaApbhw+0Vzl>Ca!%hMzOLfs*sKHva7JwEo7q(e+VRZ zw{T%bCS=o+1$k(T2sIWti^f#WX0R6Q8IKYXoJ0nV#aKi)cEGYLRyMV3h~g8emt&vT d5Cp?&)CXP5p&B#?-)lozJL^grHenx0v%tz6WeME^c z*^1%{avW|U$1$%tflCuFC^Xn&KXGXk?W!f$$!^+Nd(pVS@Nfskf<6N4IF5UDqcKC^ z>_7`Get86AI+SX2qx*E5D548C)H4^!AXTN@A zR#z52@rbGW4q1pqa_ipa?{#)-NvEk%+AjjndE`H%&?p>zg_c(^fz0hD^MBrp3c zR9CIeb-ehtO2k=OAT|>q5I`UVLLdYJ2!ucggg^j+5D0+~2(qK76-Th0Wj6XWcd96H z!GuZJox(LkfjQWnQg)yjg?CKC?v!M;TGfSlFz*S_CD~o_ShM`lO$f=8zs{01RJj1- zk7uXkO6(hkvjK|A_R8ItN5$H~y0XJXu7)1SGf1kdwVMfCC%N3?#ax(c=xUBqYf5L7 zK@PvWA!A=3BO3Lx?!GIs;>=x<^==G*0gDqL`tYlg1A4kJR#;Zd>OHU{|FHu*XX?Fqx^>o9%; Xf6Py6ju{(J00000NkvXXu0mjf72&b; literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-40x40@2x.png b/src-tauri/icons/ios/AppIcon-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1545e9746198ef07582c712bf6be6bb51aaa6f1d GIT binary patch literal 949 zcmV;m14{gfP)#?-)lozJL^grHenx0v%tz6WeME^c z*^1%{avW|U$1$%tflCuFC^Xn&KXGXk?W!f$$!^+Nd(pVS@Nfskf<6N4IF5UDqcKC^ z>_7`Get86AI+SX2qx*E5D548C)H4^!AXTN@A zR#z52@rbGW4q1pqa_ipa?{#)-NvEk%+AjjndE`H%&?p>zg_c(^fz0hD^MBrp3c zR9CIeb-ehtO2k=OAT|>q5I`UVLLdYJ2!ucggg^j+5D0+~2(qK76-Th0Wj6XWcd96H z!GuZJox(LkfjQWnQg)yjg?CKC?v!M;TGfSlFz*S_CD~o_ShM`lO$f=8zs{01RJj1- zk7uXkO6(hkvjK|A_R8ItN5$H~y0XJXu7)1SGf1kdwVMfCC%N3?#ax(c=xUBqYf5L7 zK@PvWA!A=3BO3Lx?!GIs;>=x<^==G*0gDqL`tYlg1A4kJR#;Zd>OHU{|FHu*XX?Fqx^>o9%; Xf6Py6ju{(J00000NkvXXu0mjf72&b; literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-40x40@3x.png b/src-tauri/icons/ios/AppIcon-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d92d7b742357992677eadd350928159d455f3a GIT binary patch literal 1379 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-76x76@1x.png b/src-tauri/icons/ios/AppIcon-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a9f012239a81170b3ca93562763d6848f77c75 GIT binary patch literal 845 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 PathBuf { + std::env::current_exe() + .ok() + .and_then(|p| p.parent().map(|p| p.to_path_buf())) + .unwrap_or_else(|| std::env::current_dir().unwrap_or_default()) +} + +/// Configure all the env vars Tauri + WebView2 + the OS read when +/// resolving "where do I put my data" so EVERYTHING lands in a single +/// `./data/` folder next to the EXE - no AppData, no registry, no +/// hidden state. Has to run BEFORE the Tauri builder constructs the +/// webview, since WebView2 reads `WEBVIEW2_USER_DATA_FOLDER` only at +/// startup. +fn redirect_data_to_portable_folder() { + let root = exe_dir().join("data"); + let _ = std::fs::create_dir_all(&root); + + let appdata = root.join("appdata"); + let local_appdata = root.join("localappdata"); + let webview2 = root.join("webview2"); + let cache = root.join("cache"); + let temp = root.join("temp"); + + for d in [&appdata, &local_appdata, &webview2, &cache, &temp] { + let _ = std::fs::create_dir_all(d); + } + + // Tauri's path resolver uses the `dirs` crate under the hood, which + // reads APPDATA / LOCALAPPDATA on Windows. Redirecting these + // catches every plugin that calls `app.path().app_config_dir()`, + // `app_data_dir()`, `app_local_data_dir()`, etc. - including + // tauri-plugin-store and tauri-plugin-window-state. + std::env::set_var("APPDATA", &appdata); + std::env::set_var("LOCALAPPDATA", &local_appdata); + + // WebView2's own user data folder. This is where localStorage, + // IndexedDB, cookies, the HTTP cache, and the GPU shader cache go. + // Almost all our persisted state (zustand-persist stores) lives + // here, so this is the most important one to redirect. + std::env::set_var("WEBVIEW2_USER_DATA_FOLDER", &webview2); + + // TEMP / TMP redirection so any temporary files (rare, but Tauri's + // file dialog plugin uses these) don't leak to %TEMP%. + std::env::set_var("TEMP", &temp); + std::env::set_var("TMP", &temp); + + // XDG variants for Linux portability if we ever ship there. + std::env::set_var("XDG_DATA_HOME", &local_appdata); + std::env::set_var("XDG_CONFIG_HOME", &appdata); + std::env::set_var("XDG_CACHE_HOME", &cache); +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + redirect_data_to_portable_folder(); + + tauri::Builder::default() + .plugin(tauri_plugin_store::Builder::default().build()) + .plugin(tauri_plugin_window_state::Builder::default().build()) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs new file mode 100644 index 0000000..3e4b62f --- /dev/null +++ b/src-tauri/src/main.rs @@ -0,0 +1,5 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + jellyfin_client_lib::run() +} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json new file mode 100644 index 0000000..dcea499 --- /dev/null +++ b/src-tauri/tauri.conf.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://raw.githubusercontent.com/nicegram/nicegram-ios/refs/heads/nicegram/Tauri/tooling/cli/schema.json", + "productName": "Jellyfin", + "version": "0.1.0", + "identifier": "com.jellyfin.desktop", + "build": { + "beforeDevCommand": "npm run dev", + "devUrl": "http://localhost:5173", + "beforeBuildCommand": "npm run build", + "frontendDist": "../dist" + }, + "app": { + "windows": [ + { + "title": "Jellyfin", + "width": 1280, + "height": 720, + "minWidth": 800, + "minHeight": 500, + "center": true, + "decorations": false, + "resizable": true, + "transparent": false, + "additionalBrowserArgs": "--autoplay-policy=no-user-gesture-required --disable-features=AutoplayIgnoreWebAudio,BlockInsecurePrivateNetworkRequests --allow-running-insecure-content" + } + ], + "security": { + "csp": "default-src 'self' tauri: asset: https://tauri.localhost; connect-src * data: blob:; img-src * data: blob:; media-src * data: blob:; frame-src 'self' https://www.youtube-nocookie.com https://www.youtube.com; child-src 'self' blob: https://www.youtube-nocookie.com https://www.youtube.com; script-src 'self' tauri: asset: https://tauri.localhost 'unsafe-inline'; style-src 'self' tauri: asset: https://tauri.localhost https://fonts.bunny.net 'unsafe-inline'; font-src 'self' https://fonts.bunny.net data:; worker-src 'self' blob:; object-src 'none'; base-uri 'self'; form-action 'none'; frame-ancestors 'none';" + } + }, + "bundle": { + "active": false, + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "windows": { + "webviewInstallMode": { + "type": "downloadBootstrapper" + } + } + }, + "plugins": {} +}