From 4b4b9fc63be06ad7cd07f67dd673098d41c4170e Mon Sep 17 00:00:00 2001 From: chahinebrini Date: Sun, 7 Jun 2026 13:39:52 +0200 Subject: [PATCH] feat(magic-win): ReBreak Magic Windows-App (Tauri) + CI-Build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tauri 2 DoH-Schutz für Windows: PowerShell-DoH-Takeover, Tamper-Service (SYSTEM, windows-service), Browser-Policies (Chromium built-in-DNS + eigenes DoH aus → OS-Resolver), 24h-Cooldown via bestehende magic/*-Endpoints. GitHub-Actions baut den x64-NSIS-Installer auf windows-latest. Co-Authored-By: Claude Opus 4.8 --- .github/workflows/build-magic-win.yml | 61 + apps/rebreak-magic-win/.gitignore | 5 + apps/rebreak-magic-win/README.md | 111 + apps/rebreak-magic-win/build-windows.ps1 | 27 + apps/rebreak-magic-win/index.html | 12 + apps/rebreak-magic-win/package.json | 26 + apps/rebreak-magic-win/src-tauri/Cargo.lock | 5051 +++++++++++++++++ apps/rebreak-magic-win/src-tauri/Cargo.toml | 28 + apps/rebreak-magic-win/src-tauri/build.rs | 3 + .../src-tauri/capabilities/default.json | 7 + .../src-tauri/gen/schemas/acl-manifests.json | 1 + .../src-tauri/gen/schemas/capabilities.json | 1 + .../src-tauri/gen/schemas/desktop-schema.json | 2292 ++++++++ .../src-tauri/gen/schemas/macOS-schema.json | 2292 ++++++++ .../src-tauri/icons/128x128.png | Bin 0 -> 8501 bytes .../src-tauri/icons/128x128@2x.png | Bin 0 -> 22587 bytes .../src-tauri/icons/32x32.png | Bin 0 -> 2082 bytes .../src-tauri/icons/icon.ico | Bin 0 -> 123763 bytes .../src-tauri/icons/icon.png | Bin 0 -> 67662 bytes .../src-tauri/icons/source.png | Bin 0 -> 222924 bytes .../src-tauri/protection-core/Cargo.toml | 8 + .../src-tauri/protection-core/src/lib.rs | 270 + .../src-tauri/service/Cargo.toml | 14 + .../src-tauri/service/src/main.rs | 201 + apps/rebreak-magic-win/src-tauri/src/api.rs | 166 + apps/rebreak-magic-win/src-tauri/src/auth.rs | 42 + .../rebreak-magic-win/src-tauri/src/device.rs | 46 + apps/rebreak-magic-win/src-tauri/src/lib.rs | 198 + apps/rebreak-magic-win/src-tauri/src/main.rs | 6 + apps/rebreak-magic-win/src-tauri/src/setup.rs | 95 + .../src-tauri/tauri.conf.json | 46 + apps/rebreak-magic-win/src/App.tsx | 49 + .../rebreak-magic-win/src/assets/app-icon.png | Bin 0 -> 6880 bytes apps/rebreak-magic-win/src/lib/ipc.ts | 23 + apps/rebreak-magic-win/src/main.tsx | 14 + apps/rebreak-magic-win/src/styles.css | 308 + apps/rebreak-magic-win/src/views/HubView.tsx | 161 + .../rebreak-magic-win/src/views/LoginView.tsx | 70 + apps/rebreak-magic-win/src/vite-env.d.ts | 1 + apps/rebreak-magic-win/tsconfig.json | 20 + apps/rebreak-magic-win/vite.config.ts | 17 + pnpm-lock.yaml | 396 +- 42 files changed, 12025 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/build-magic-win.yml create mode 100644 apps/rebreak-magic-win/.gitignore create mode 100644 apps/rebreak-magic-win/README.md create mode 100644 apps/rebreak-magic-win/build-windows.ps1 create mode 100644 apps/rebreak-magic-win/index.html create mode 100644 apps/rebreak-magic-win/package.json create mode 100644 apps/rebreak-magic-win/src-tauri/Cargo.lock create mode 100644 apps/rebreak-magic-win/src-tauri/Cargo.toml create mode 100644 apps/rebreak-magic-win/src-tauri/build.rs create mode 100644 apps/rebreak-magic-win/src-tauri/capabilities/default.json create mode 100644 apps/rebreak-magic-win/src-tauri/gen/schemas/acl-manifests.json create mode 100644 apps/rebreak-magic-win/src-tauri/gen/schemas/capabilities.json create mode 100644 apps/rebreak-magic-win/src-tauri/gen/schemas/desktop-schema.json create mode 100644 apps/rebreak-magic-win/src-tauri/gen/schemas/macOS-schema.json create mode 100644 apps/rebreak-magic-win/src-tauri/icons/128x128.png create mode 100644 apps/rebreak-magic-win/src-tauri/icons/128x128@2x.png create mode 100644 apps/rebreak-magic-win/src-tauri/icons/32x32.png create mode 100644 apps/rebreak-magic-win/src-tauri/icons/icon.ico create mode 100644 apps/rebreak-magic-win/src-tauri/icons/icon.png create mode 100644 apps/rebreak-magic-win/src-tauri/icons/source.png create mode 100644 apps/rebreak-magic-win/src-tauri/protection-core/Cargo.toml create mode 100644 apps/rebreak-magic-win/src-tauri/protection-core/src/lib.rs create mode 100644 apps/rebreak-magic-win/src-tauri/service/Cargo.toml create mode 100644 apps/rebreak-magic-win/src-tauri/service/src/main.rs create mode 100644 apps/rebreak-magic-win/src-tauri/src/api.rs create mode 100644 apps/rebreak-magic-win/src-tauri/src/auth.rs create mode 100644 apps/rebreak-magic-win/src-tauri/src/device.rs create mode 100644 apps/rebreak-magic-win/src-tauri/src/lib.rs create mode 100644 apps/rebreak-magic-win/src-tauri/src/main.rs create mode 100644 apps/rebreak-magic-win/src-tauri/src/setup.rs create mode 100644 apps/rebreak-magic-win/src-tauri/tauri.conf.json create mode 100644 apps/rebreak-magic-win/src/App.tsx create mode 100644 apps/rebreak-magic-win/src/assets/app-icon.png create mode 100644 apps/rebreak-magic-win/src/lib/ipc.ts create mode 100644 apps/rebreak-magic-win/src/main.tsx create mode 100644 apps/rebreak-magic-win/src/styles.css create mode 100644 apps/rebreak-magic-win/src/views/HubView.tsx create mode 100644 apps/rebreak-magic-win/src/views/LoginView.tsx create mode 100644 apps/rebreak-magic-win/src/vite-env.d.ts create mode 100644 apps/rebreak-magic-win/tsconfig.json create mode 100644 apps/rebreak-magic-win/vite.config.ts diff --git a/.github/workflows/build-magic-win.yml b/.github/workflows/build-magic-win.yml new file mode 100644 index 0000000..366269f --- /dev/null +++ b/.github/workflows/build-magic-win.yml @@ -0,0 +1,61 @@ +name: Build Magic Windows + +# Baut den NSIS-Installer der ReBreak-Magic-Windows-App (Tauri) auf einem +# echten Windows-Runner — vom Mac aus geht kein Cross-Compile (MSVC + WebView2). +# Artefakt: x64-Installer, herunterladbar unter Actions → Run → Artifacts. + +on: + workflow_dispatch: + push: + branches: [main] + paths: + - "apps/rebreak-magic-win/**" + - ".github/workflows/build-magic-win.yml" + +permissions: + contents: read + +concurrency: + group: build-magic-win + cancel-in-progress: true + +jobs: + build: + name: NSIS Installer (x64) + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 10 + + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - uses: dtolnay/rust-toolchain@stable + + - name: Install deps (nur Magic-Win) + run: pnpm install --filter rebreak-magic-win --no-frozen-lockfile + + - name: Build Tamper-Service (Tauri-Sidecar) + working-directory: apps/rebreak-magic-win/src-tauri + shell: pwsh + run: | + cargo build --release -p rebreak-protection-service + $triple = (rustc -vV | Select-String 'host: (.*)').Matches.Groups[1].Value + New-Item -ItemType Directory -Force -Path binaries | Out-Null + Copy-Item "target/release/rebreak-protection-service.exe" "binaries/rebreak-protection-service-$triple.exe" -Force + + - name: Build Tauri-App (Frontend + NSIS) + working-directory: apps/rebreak-magic-win + run: pnpm tauri build + + - name: Upload Installer + uses: actions/upload-artifact@v4 + with: + name: RebreakMagic-Windows-x64 + path: apps/rebreak-magic-win/src-tauri/target/release/bundle/nsis/*.exe + if-no-files-found: error diff --git a/apps/rebreak-magic-win/.gitignore b/apps/rebreak-magic-win/.gitignore new file mode 100644 index 0000000..9d68067 --- /dev/null +++ b/apps/rebreak-magic-win/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +src-tauri/target/ +src-tauri/binaries/rebreak-protection-service-* +config.json diff --git a/apps/rebreak-magic-win/README.md b/apps/rebreak-magic-win/README.md new file mode 100644 index 0000000..020e54d --- /dev/null +++ b/apps/rebreak-magic-win/README.md @@ -0,0 +1,111 @@ +# ReBreak Magic für Windows + +Windows-Companion-App für ReBreak — DNS-basierter Glücksspiel-Schutz mit +24h-Cooldown und Tamper-Protection. Das Windows-Pendant zu +`apps/rebreak-magic-mac` (gleiches Backend, gleiche `/api/magic/*`-Endpoints, +gleicher Look: Ketten-Icon, Nunito, Accent `#2E7FD4`). + +## Architektur + +``` +ReBreak Magic (Tauri 2) +├── src/ React-Frontend (Nunito, ReBreak-Look) +│ ├── views/LoginView 6-stelliger Pairing-Code (wie Mac-App) +│ └── views/HubView Schutzstatus, Aktivierung, 24h-Countdown +├── src-tauri/src/ Rust-Core — Tokens erreichen die WebView NIE +│ ├── api.rs Backend-Client (/api/magic/*) +│ ├── auth.rs Windows Credential Manager (keyring) +│ ├── device.rs Device-ID via MachineGuid +│ ├── setup.rs Elevated One-Shot (EIN UAC-Prompt) +│ └── lib.rs Tauri-Commands + UI-State +├── src-tauri/protection-core/ Geteilte DoH-Logik (App + Service) +└── src-tauri/service/ Tamper-Service (Windows-Service, SYSTEM) +``` + +### Flow + +1. **Koppeln** — User erstellt in der ReBreak-App einen 6-stelligen Code + (`POST /api/magic/pair/redeem` → `mgc_`-Session-Token → Credential Manager). + Direkt danach `POST /api/magic/register` (`platform: "windows"`) → + per-Device-DNS-Token, AdGuard-Client wird serverseitig provisioniert. +2. **Schutz aktivieren** — EIN UAC-Prompt führt ein One-Shot-PowerShell aus: + - Windows-DoH auf `https://dns.rebreak.org/dns-query/` konfigurieren + (`Add-DnsClientDohServerAddress`, Interface-DNS, `EnableAutoDoh=2`, + per-Interface `DohFlags=1`, flushdns) + - State nach `%ProgramData%\ReBreak\protection.json` + - Tamper-Service installieren + starten (`sc.exe`, `obj= LocalSystem`, + Auto-Start, Auto-Restart bei Crash) +3. **Tamper-Protection** — Service prüft alle 5 Minuten: + - DoH manipuliert → sofort wiederherstellen + - Backend offline → **fail-closed**, Schutz bleibt +4. **Deaktivierung (24h-Cooldown)** — `request-release` startet den Cooldown, + die App zeigt den Countdown. Nach 24h revoked der Backend-Cron den Token; + der Service sieht `active=false` via `GET /api/magic/status?token=` und + baut den DoH-Schutz **selbst** ab (SYSTEM, kein zweiter UAC-Prompt). + Die unelevated App kann den Schutz nicht abbauen — Deaktivierung ist + ausschließlich server-zeitgesteuert, es gibt keinen Code, den der User + sehen oder eingeben könnte. + +### Bewusste Abweichungen vom ursprünglichen Prompt-Dokument + +| Prompt | Umgesetzt | Warum | +|---|---|---| +| Electron + node-windows | **Tauri 2 + Rust-Service** | ~5 MB statt ~150 MB, sauberer SYSTEM-Service, kein Node auf dem Zielsystem | +| NextDNS pro User | **Eigene DoH-Infra** (`dns.rebreak.org`, AdGuard) | Existiert bereits inkl. Provisioning in `magic/register`; kein neuer DSGVO-Sub-Auftragsverarbeiter, keine Kosten pro User, kuratierte Liste statt generischer Gambling-Kategorie | +| Supabase Edge Functions + eigene Tabelle | **Bestehendes Nitro-Backend** | `request-release`/`cancel-release` + Cron-Invalidierung existieren bereits (Mac-App nutzt denselben Flow) | +| Code verschlüsselt in DB, App empfängt Code | **Kein Code nötig** | Deaktivierung ist server-zeitgesteuert: Token-Revoke nach 24h, Service pollt Status | + +### Backend-Änderungen (in diesem Repo, additiv) + +- `backend/server/api/magic/register.post.ts` — optionales `platform`-Feld + (`"windows"`, Default bleibt `"macos"` für die Mac-App) +- `backend/server/api/magic/status.get.ts` — **neu**: Token-Status-Polling + für den Tamper-Service (`{ active: boolean }`, Token ist das Secret) + +## Entwicklung (macOS) + +```sh +pnpm install # Repo-Root +cd apps/rebreak-magic-win +pnpm build # tsc + vite +cd src-tauri +cargo build -p rebreak-protection-service +cp target/debug/rebreak-protection-service "binaries/rebreak-protection-service-$(rustc -vV | sed -n 's/host: //p')" +cargo check --workspace && cargo test --workspace +``` + +PowerShell-Ausführung ist `#[cfg(windows)]`-frei gehalten (Commands sind +Strings) — auf macOS schlagen die `powershell.exe`-Aufrufe einfach fehl und +der Status ist `MISSING`. UI-Entwicklung geht mit `pnpm tauri dev` auch am Mac. + +## Build (Windows-Maschine) + +```powershell +pnpm install # Repo-Root +cd apps\rebreak-magic-win +.\build-windows.ps1 # Service + App + NSIS-Installer (perMachine) +``` + +Service-Debug ohne SCM: `rebreak-protection-service.exe --console` +(Log: `%ProgramData%\ReBreak\service.log`). + +Backend-Override (analog `config.example.json` der Mac-App): +`%APPDATA%\org.rebreak.magic\config.json` → `{ "backendBaseUrl": "https://staging.rebreak.org" }`. +Default ist Staging. + +## Bekannte Limitationen (v1) + +- **Browser-eigenes DoH** (Chrome/Firefox „Secure DNS") kann Windows-DoH + umgehen → Phase 2 (Browser-Policies via Registry: `DnsOverHttpsMode=off` + ist als HKLM-Policy für Chrome/Edge/Firefox setzbar — im selben elevated + One-Shot nachrüstbar). +- **IPv6-DNS** wird nicht angefasst (IPv4-DoH only, wie im Prompt). + Router-advertised IPv6-Resolver sind ein möglicher Bypass → Phase 2. +- **Lokale Windows-Admins** können den Service stoppen (`sc delete` etc.). + Wie überall bei ReBreak gilt: Friction statt absoluter Unumgehbarkeit — + die Hürde ist bewusst hoch (SYSTEM-Service, Auto-Restart, Re-Apply), aber + ein entschlossener Admin ist nicht aufhaltbar (gleiche Asymmetrie wie + Profil-Entfernung auf unsupervised iOS). +- `sc.exe stop/delete` bei der NSIS-Deinstallation ist noch nicht verdrahtet + (NSIS-Hook) — der Service deaktiviert sich aber selbst, sobald das Backend + den Token revoked. diff --git a/apps/rebreak-magic-win/build-windows.ps1 b/apps/rebreak-magic-win/build-windows.ps1 new file mode 100644 index 0000000..2847664 --- /dev/null +++ b/apps/rebreak-magic-win/build-windows.ps1 @@ -0,0 +1,27 @@ +# ReBreak Magic für Windows — Build-Script (auf einer Windows-Maschine ausführen) +# +# Voraussetzungen: +# - Rust (rustup, MSVC toolchain) +# - Node + pnpm (Repo-Root: pnpm install) +# - WebView2 Runtime (Win11: vorinstalliert) +# +# Ergebnis: NSIS-Installer unter src-tauri\target\release\bundle\nsis\ + +$ErrorActionPreference = "Stop" +Set-Location $PSScriptRoot + +# 1. Tamper-Service als Release bauen und als Tauri-Sidecar ablegen +# (externalBin erwartet Suffix mit Target-Triple) +cargo build --release -p rebreak-protection-service --manifest-path src-tauri/Cargo.toml + +$triple = (rustc -vV | Select-String "host: (.*)").Matches.Groups[1].Value +Copy-Item ` + "src-tauri/target/release/rebreak-protection-service.exe" ` + "src-tauri/binaries/rebreak-protection-service-$triple.exe" -Force + +# 2. Frontend + Tauri-App + NSIS-Installer +pnpm tauri build + +Write-Host "" +Write-Host "Fertig. Installer:" -ForegroundColor Green +Get-ChildItem "src-tauri/target/release/bundle/nsis/*.exe" | ForEach-Object { Write-Host " $($_.FullName)" } diff --git a/apps/rebreak-magic-win/index.html b/apps/rebreak-magic-win/index.html new file mode 100644 index 0000000..ac37f9a --- /dev/null +++ b/apps/rebreak-magic-win/index.html @@ -0,0 +1,12 @@ + + + + + + ReBreak Magic + + +
+ + + diff --git a/apps/rebreak-magic-win/package.json b/apps/rebreak-magic-win/package.json new file mode 100644 index 0000000..13f62d7 --- /dev/null +++ b/apps/rebreak-magic-win/package.json @@ -0,0 +1,26 @@ +{ + "name": "rebreak-magic-win", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc --noEmit && vite build", + "preview": "vite preview", + "tauri": "tauri" + }, + "dependencies": { + "@fontsource/nunito": "^5.1.0", + "@tauri-apps/api": "^2.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@tauri-apps/cli": "^2.2.0", + "@types/react": "^18.3.12", + "@types/react-dom": "^18.3.1", + "@vitejs/plugin-react": "^4.3.4", + "typescript": "^5.7.2", + "vite": "^6.0.7" + } +} diff --git a/apps/rebreak-magic-win/src-tauri/Cargo.lock b/apps/rebreak-magic-win/src-tauri/Cargo.lock new file mode 100644 index 0000000..aa6c8ae --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/Cargo.lock @@ -0,0 +1,5051 @@ +# 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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8119e4516436f5708bbc474a9d395bf12f1b5395e93a92a56e647ac3388c8610" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "bytemuck" +version = "1.25.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.13.0", + "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.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" +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 = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" +dependencies = [ + "bitflags 2.13.0", + "core-foundation 0.10.1", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.13.0", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.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", + "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.13.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.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", + "futures-sink", +] + +[[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", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[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.13.0", + "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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" +dependencies = [ + "log", + "markup5ever", +] + +[[package]] +name = "http" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0" +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.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[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.1", + "serde", + "serde_core", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "ipnet" +version = "2.12.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 = "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.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" +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.13.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "keyring" +version = "3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c" +dependencies = [ + "byteorder", + "log", + "security-framework 2.11.1", + "security-framework 3.7.0", + "windows-sys 0.60.2", + "zeroize", +] + +[[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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +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.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "muda" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47a2e3dff89cd322c66647942668faee0a2b1f88ea6cbb4d374b4a8d7e92528c" +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.13.0", + "jni-sys 0.3.1", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys 0.3.1", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.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.13.0", + "block2", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" +dependencies = [ + "bitflags 2.13.0", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.13.0", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.13.0", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-location" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags 2.13.0", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.13.0", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.13.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-location", + "objc2-core-text", + "objc2-foundation", + "objc2-quartz-core", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros", + "phf_shared", + "serde", +] + +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[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.13.0", + "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 = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "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.12+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 = "protection-core" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "quick-xml" +version = "0.39.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" +dependencies = [ + "memchr", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", +] + +[[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.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rebreak-magic-win" +version = "0.1.0" +dependencies = [ + "keyring", + "protection-core", + "reqwest 0.12.28", + "serde", + "serde_json", + "tauri", + "tauri-build", +] + +[[package]] +name = "rebreak-protection-service" +version = "0.1.0" +dependencies = [ + "protection-core", + "reqwest 0.12.28", + "serde", + "serde_json", + "windows-service", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.0", +] + +[[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.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", +] + +[[package]] +name = "reqwest" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "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 = "rustls" +version = "0.23.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "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 = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.13.0", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags 2.13.0", + "core-foundation 0.10.1", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "selectors" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +dependencies = [ + "bitflags 2.13.0", + "cssparser", + "derive_more", + "log", + "new_debug_unreachable", + "phf", + "phf_codegen", + "precomputed-hash", + "rustc-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde" +version = "1.0.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.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.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_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" +dependencies = [ + "base64 0.22.1", + "bs58", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.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 = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "bytemuck", + "js-sys", + "ndk", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "tracing", + "wasm-bindgen", + "web-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "string_cache_codegen" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1c93047acf68669466a34690ac58cca7010bd1b201e1ec86f1fd0a75d3dd4a9" +dependencies = [ + "bitflags 2.13.0", + "block2", + "core-foundation 0.10.1", + "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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "437404997acf375d85f1177afa7e11bb971f274ed6a7b83a2a3e339015f4cc28" +dependencies = [ + "anyhow", + "bytes", + "cookie", + "dirs", + "dunce", + "embed_plist", + "getrandom 0.3.4", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest 0.13.4", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.18", + "tokio", + "tray-icon", + "url", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aa1f9055fc23919a54e4e125052bed16ed04aef0487086e758fe01a67b451c7" +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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a0319528a025a38c4078e7dae2c446f4e63620ddb0659a643ede1cb38f90e9" +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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6cb4e3896c21d2f6da5b31251d2faea0153bba56ed0e970f918115dbee4924" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-runtime" +version = "2.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48222d7116c8807eaa6fe2f372e023fae125084e61e6eca6d70b7961cdf129ef" +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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b83849ee63ecb27a8e8d0fe51915ca215076914aca43f96db1179f0f415f6cd9" +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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "092379df9a707631978e6c56b1bc2401d387f01e2d4a3c123360d167bbb9aa95" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dom_query", + "dunce", + "glob", + "http", + "infer", + "json-patch", + "log", + "memchr", + "phf", + "plist", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.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 = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.52.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml" +version = "1.1.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.3", +] + +[[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.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.3", +] + +[[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.3", +] + +[[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.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "bitflags 2.13.0", + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" +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.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" +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.13.0", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", +] + +[[package]] +name = "web-sys" +version = "0.3.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +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", + "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 = "webpki-roots" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" +dependencies = [ + "rustls-pki-types", +] + +[[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 = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.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-service" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24d6bcc7f734a4091ecf8d7a64c5f7d7066f45585c1861eba06449909609c8a" +dependencies = [ + "bitflags 2.13.0", + "widestring", + "windows-sys 0.52.0", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + +[[package]] +name = "winnow" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" +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.13.0", + "indexmap 2.14.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.14.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[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/apps/rebreak-magic-win/src-tauri/Cargo.toml b/apps/rebreak-magic-win/src-tauri/Cargo.toml new file mode 100644 index 0000000..f3d064f --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/Cargo.toml @@ -0,0 +1,28 @@ +[workspace] +members = ["protection-core", "service"] + +[package] +name = "rebreak-magic-win" +version = "0.1.0" +description = "ReBreak Magic für Windows — DNS-basierter Glücksspiel-Schutz" +authors = ["Rebreak"] +edition = "2021" + +[lib] +name = "rebreak_magic_win_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = [] } +serde = { version = "1", features = ["derive"] } +serde_json = "1" +reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] } +keyring = { version = "3", features = ["windows-native", "apple-native"] } +protection-core = { path = "protection-core" } + +[profile.release] +strip = true +lto = true diff --git a/apps/rebreak-magic-win/src-tauri/build.rs b/apps/rebreak-magic-win/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/apps/rebreak-magic-win/src-tauri/capabilities/default.json b/apps/rebreak-magic-win/src-tauri/capabilities/default.json new file mode 100644 index 0000000..21d3f03 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/capabilities/default.json @@ -0,0 +1,7 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Default capability für das Hauptfenster", + "windows": ["main"], + "permissions": ["core:default"] +} diff --git a/apps/rebreak-magic-win/src-tauri/gen/schemas/acl-manifests.json b/apps/rebreak-magic-win/src-tauri/gen/schemas/acl-manifests.json new file mode 100644 index 0000000..0eebfc4 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/gen/schemas/acl-manifests.json @@ -0,0 +1 @@ +{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener","allow-supports-multiple-windows"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-supports-multiple-windows":{"identifier":"allow-supports-multiple-windows","description":"Enables the supports_multiple_windows command without any pre-configured scope.","commands":{"allow":["supports_multiple_windows"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-remove-listener":{"identifier":"deny-remove-listener","description":"Denies the remove_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_listener"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-supports-multiple-windows":{"identifier":"deny-supports-multiple-windows","description":"Denies the supports_multiple_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["supports_multiple_windows"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-icon-with-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-icon-with-as-template":{"identifier":"allow-set-icon-with-as-template","description":"Enables the set_icon_with_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_with_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-icon-with-as-template":{"identifier":"deny-set-icon-with-as-template","description":"Denies the set_icon_with_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_with_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-activity-name","allow-scene-identifier","allow-internal-toggle-maximize"]},"permissions":{"allow-activity-name":{"identifier":"allow-activity-name","description":"Enables the activity_name command without any pre-configured scope.","commands":{"allow":["activity_name"],"deny":[]}},"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-scene-identifier":{"identifier":"allow-scene-identifier","description":"Enables the scene_identifier command without any pre-configured scope.","commands":{"allow":["scene_identifier"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-focusable":{"identifier":"allow-set-focusable","description":"Enables the set_focusable command without any pre-configured scope.","commands":{"allow":["set_focusable"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-simple-fullscreen":{"identifier":"allow-set-simple-fullscreen","description":"Enables the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":["set_simple_fullscreen"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-activity-name":{"identifier":"deny-activity-name","description":"Denies the activity_name command without any pre-configured scope.","commands":{"allow":[],"deny":["activity_name"]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-scene-identifier":{"identifier":"deny-scene-identifier","description":"Denies the scene_identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["scene_identifier"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-focusable":{"identifier":"deny-set-focusable","description":"Denies the set_focusable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focusable"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-simple-fullscreen":{"identifier":"deny-set-simple-fullscreen","description":"Denies the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_simple_fullscreen"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null}} \ No newline at end of file diff --git a/apps/rebreak-magic-win/src-tauri/gen/schemas/capabilities.json b/apps/rebreak-magic-win/src-tauri/gen/schemas/capabilities.json new file mode 100644 index 0000000..11beaa3 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/gen/schemas/capabilities.json @@ -0,0 +1 @@ +{"default":{"identifier":"default","description":"Default capability für das Hauptfenster","local":true,"windows":["main"],"permissions":["core:default"]}} \ No newline at end of file diff --git a/apps/rebreak-magic-win/src-tauri/gen/schemas/desktop-schema.json b/apps/rebreak-magic-win/src-tauri/gen/schemas/desktop-schema.json new file mode 100644 index 0000000..3286645 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/gen/schemas/desktop-schema.json @@ -0,0 +1,2292 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`", + "type": "string", + "const": "core:default", + "markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`" + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`", + "type": "string", + "const": "core:app:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide", + "markdownDescription": "Enables the app_hide command without any pre-configured scope." + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show", + "markdownDescription": "Enables the app_show command without any pre-configured scope." + }, + { + "description": "Enables the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-bundle-type", + "markdownDescription": "Enables the bundle_type command without any pre-configured scope." + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon", + "markdownDescription": "Enables the default_window_icon command without any pre-configured scope." + }, + { + "description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-fetch-data-store-identifiers", + "markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Enables the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-identifier", + "markdownDescription": "Enables the identifier command without any pre-configured scope." + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name", + "markdownDescription": "Enables the name command without any pre-configured scope." + }, + { + "description": "Enables the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-register-listener", + "markdownDescription": "Enables the register_listener command without any pre-configured scope." + }, + { + "description": "Enables the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-data-store", + "markdownDescription": "Enables the remove_data_store command without any pre-configured scope." + }, + { + "description": "Enables the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-listener", + "markdownDescription": "Enables the remove_listener command without any pre-configured scope." + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme", + "markdownDescription": "Enables the set_app_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-dock-visibility", + "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Enables the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-supports-multiple-windows", + "markdownDescription": "Enables the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version", + "markdownDescription": "Enables the tauri_version command without any pre-configured scope." + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version", + "markdownDescription": "Enables the version command without any pre-configured scope." + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide", + "markdownDescription": "Denies the app_hide command without any pre-configured scope." + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show", + "markdownDescription": "Denies the app_show command without any pre-configured scope." + }, + { + "description": "Denies the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-bundle-type", + "markdownDescription": "Denies the bundle_type command without any pre-configured scope." + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon", + "markdownDescription": "Denies the default_window_icon command without any pre-configured scope." + }, + { + "description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-fetch-data-store-identifiers", + "markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Denies the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-identifier", + "markdownDescription": "Denies the identifier command without any pre-configured scope." + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name", + "markdownDescription": "Denies the name command without any pre-configured scope." + }, + { + "description": "Denies the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-register-listener", + "markdownDescription": "Denies the register_listener command without any pre-configured scope." + }, + { + "description": "Denies the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-data-store", + "markdownDescription": "Denies the remove_data_store command without any pre-configured scope." + }, + { + "description": "Denies the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-listener", + "markdownDescription": "Denies the remove_listener command without any pre-configured scope." + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme", + "markdownDescription": "Denies the set_app_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-dock-visibility", + "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Denies the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-supports-multiple-windows", + "markdownDescription": "Denies the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version", + "markdownDescription": "Denies the tauri_version command without any pre-configured scope." + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version", + "markdownDescription": "Denies the version command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`", + "type": "string", + "const": "core:event:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit", + "markdownDescription": "Enables the emit command without any pre-configured scope." + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to", + "markdownDescription": "Enables the emit_to command without any pre-configured scope." + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen", + "markdownDescription": "Enables the listen command without any pre-configured scope." + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten", + "markdownDescription": "Enables the unlisten command without any pre-configured scope." + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit", + "markdownDescription": "Denies the emit command without any pre-configured scope." + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to", + "markdownDescription": "Denies the emit_to command without any pre-configured scope." + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen", + "markdownDescription": "Denies the listen command without any pre-configured scope." + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten", + "markdownDescription": "Denies the unlisten command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`", + "type": "string", + "const": "core:image:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes", + "markdownDescription": "Enables the from_bytes command without any pre-configured scope." + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path", + "markdownDescription": "Enables the from_path command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba", + "markdownDescription": "Enables the rgba command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes", + "markdownDescription": "Denies the from_bytes command without any pre-configured scope." + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path", + "markdownDescription": "Denies the from_path command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba", + "markdownDescription": "Denies the rgba command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`", + "type": "string", + "const": "core:menu:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append", + "markdownDescription": "Enables the append command without any pre-configured scope." + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default", + "markdownDescription": "Enables the create_default command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert", + "markdownDescription": "Enables the insert command without any pre-configured scope." + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked", + "markdownDescription": "Enables the is_checked command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items", + "markdownDescription": "Enables the items command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup", + "markdownDescription": "Enables the popup command without any pre-configured scope." + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend", + "markdownDescription": "Enables the prepend command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at", + "markdownDescription": "Enables the remove_at command without any pre-configured scope." + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator", + "markdownDescription": "Enables the set_accelerator command without any pre-configured scope." + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu", + "markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp", + "markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu", + "markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp", + "markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked", + "markdownDescription": "Enables the set_checked command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text", + "markdownDescription": "Enables the set_text command without any pre-configured scope." + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text", + "markdownDescription": "Enables the text command without any pre-configured scope." + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append", + "markdownDescription": "Denies the append command without any pre-configured scope." + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default", + "markdownDescription": "Denies the create_default command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert", + "markdownDescription": "Denies the insert command without any pre-configured scope." + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked", + "markdownDescription": "Denies the is_checked command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items", + "markdownDescription": "Denies the items command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup", + "markdownDescription": "Denies the popup command without any pre-configured scope." + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend", + "markdownDescription": "Denies the prepend command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at", + "markdownDescription": "Denies the remove_at command without any pre-configured scope." + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator", + "markdownDescription": "Denies the set_accelerator command without any pre-configured scope." + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu", + "markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp", + "markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu", + "markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp", + "markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked", + "markdownDescription": "Denies the set_checked command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text", + "markdownDescription": "Denies the set_text command without any pre-configured scope." + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text", + "markdownDescription": "Denies the text command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`", + "type": "string", + "const": "core:path:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename", + "markdownDescription": "Enables the basename command without any pre-configured scope." + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname", + "markdownDescription": "Enables the dirname command without any pre-configured scope." + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname", + "markdownDescription": "Enables the extname command without any pre-configured scope." + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute", + "markdownDescription": "Enables the is_absolute command without any pre-configured scope." + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join", + "markdownDescription": "Enables the join command without any pre-configured scope." + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize", + "markdownDescription": "Enables the normalize command without any pre-configured scope." + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve", + "markdownDescription": "Enables the resolve command without any pre-configured scope." + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory", + "markdownDescription": "Enables the resolve_directory command without any pre-configured scope." + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename", + "markdownDescription": "Denies the basename command without any pre-configured scope." + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname", + "markdownDescription": "Denies the dirname command without any pre-configured scope." + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname", + "markdownDescription": "Denies the extname command without any pre-configured scope." + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute", + "markdownDescription": "Denies the is_absolute command without any pre-configured scope." + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join", + "markdownDescription": "Denies the join command without any pre-configured scope." + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize", + "markdownDescription": "Denies the normalize command without any pre-configured scope." + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve", + "markdownDescription": "Denies the resolve command without any pre-configured scope." + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory", + "markdownDescription": "Denies the resolve_directory command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`", + "type": "string", + "const": "core:resources:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`", + "type": "string", + "const": "core:tray:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id", + "markdownDescription": "Enables the get_by_id command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id", + "markdownDescription": "Enables the remove_by_id command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template", + "markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-with-as-template", + "markdownDescription": "Enables the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu", + "markdownDescription": "Enables the set_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click", + "markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path", + "markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip", + "markdownDescription": "Enables the set_tooltip command without any pre-configured scope." + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible", + "markdownDescription": "Enables the set_visible command without any pre-configured scope." + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id", + "markdownDescription": "Denies the get_by_id command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id", + "markdownDescription": "Denies the remove_by_id command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template", + "markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-with-as-template", + "markdownDescription": "Denies the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu", + "markdownDescription": "Denies the set_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click", + "markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path", + "markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip", + "markdownDescription": "Denies the set_tooltip command without any pre-configured scope." + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible", + "markdownDescription": "Denies the set_visible command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`", + "type": "string", + "const": "core:webview:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data", + "markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview", + "markdownDescription": "Enables the create_webview command without any pre-configured scope." + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window", + "markdownDescription": "Enables the create_webview_window command without any pre-configured scope." + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews", + "markdownDescription": "Enables the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools", + "markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print", + "markdownDescription": "Enables the print command without any pre-configured scope." + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent", + "markdownDescription": "Enables the reparent command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-auto-resize", + "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-background-color", + "markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus", + "markdownDescription": "Enables the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position", + "markdownDescription": "Enables the set_webview_position command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size", + "markdownDescription": "Enables the set_webview_size command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom", + "markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close", + "markdownDescription": "Enables the webview_close command without any pre-configured scope." + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide", + "markdownDescription": "Enables the webview_hide command without any pre-configured scope." + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position", + "markdownDescription": "Enables the webview_position command without any pre-configured scope." + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show", + "markdownDescription": "Enables the webview_show command without any pre-configured scope." + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size", + "markdownDescription": "Enables the webview_size command without any pre-configured scope." + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data", + "markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview", + "markdownDescription": "Denies the create_webview command without any pre-configured scope." + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window", + "markdownDescription": "Denies the create_webview_window command without any pre-configured scope." + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews", + "markdownDescription": "Denies the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools", + "markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print", + "markdownDescription": "Denies the print command without any pre-configured scope." + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent", + "markdownDescription": "Denies the reparent command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-auto-resize", + "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-background-color", + "markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus", + "markdownDescription": "Denies the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position", + "markdownDescription": "Denies the set_webview_position command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size", + "markdownDescription": "Denies the set_webview_size command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom", + "markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close", + "markdownDescription": "Denies the webview_close command without any pre-configured scope." + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide", + "markdownDescription": "Denies the webview_hide command without any pre-configured scope." + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position", + "markdownDescription": "Denies the webview_position command without any pre-configured scope." + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show", + "markdownDescription": "Denies the webview_show command without any pre-configured scope." + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size", + "markdownDescription": "Denies the webview_size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`", + "type": "string", + "const": "core:window:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`" + }, + { + "description": "Enables the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-activity-name", + "markdownDescription": "Enables the activity_name command without any pre-configured scope." + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors", + "markdownDescription": "Enables the available_monitors command without any pre-configured scope." + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center", + "markdownDescription": "Enables the center command without any pre-configured scope." + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor", + "markdownDescription": "Enables the current_monitor command without any pre-configured scope." + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position", + "markdownDescription": "Enables the cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy", + "markdownDescription": "Enables the destroy command without any pre-configured scope." + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows", + "markdownDescription": "Enables the get_all_windows command without any pre-configured scope." + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide", + "markdownDescription": "Enables the hide command without any pre-configured scope." + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position", + "markdownDescription": "Enables the inner_position command without any pre-configured scope." + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size", + "markdownDescription": "Enables the inner_size command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize", + "markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-always-on-top", + "markdownDescription": "Enables the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable", + "markdownDescription": "Enables the is_closable command without any pre-configured scope." + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated", + "markdownDescription": "Enables the is_decorated command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused", + "markdownDescription": "Enables the is_focused command without any pre-configured scope." + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen", + "markdownDescription": "Enables the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable", + "markdownDescription": "Enables the is_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized", + "markdownDescription": "Enables the is_maximized command without any pre-configured scope." + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable", + "markdownDescription": "Enables the is_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized", + "markdownDescription": "Enables the is_minimized command without any pre-configured scope." + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable", + "markdownDescription": "Enables the is_resizable command without any pre-configured scope." + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible", + "markdownDescription": "Enables the is_visible command without any pre-configured scope." + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize", + "markdownDescription": "Enables the maximize command without any pre-configured scope." + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize", + "markdownDescription": "Enables the minimize command without any pre-configured scope." + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point", + "markdownDescription": "Enables the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position", + "markdownDescription": "Enables the outer_position command without any pre-configured scope." + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size", + "markdownDescription": "Enables the outer_size command without any pre-configured scope." + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor", + "markdownDescription": "Enables the primary_monitor command without any pre-configured scope." + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention", + "markdownDescription": "Enables the request_user_attention command without any pre-configured scope." + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor", + "markdownDescription": "Enables the scale_factor command without any pre-configured scope." + }, + { + "description": "Enables the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scene-identifier", + "markdownDescription": "Enables the scene_identifier command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom", + "markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top", + "markdownDescription": "Enables the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-background-color", + "markdownDescription": "Enables the set_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-count", + "markdownDescription": "Enables the set_badge_count command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-label", + "markdownDescription": "Enables the set_badge_label command without any pre-configured scope." + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable", + "markdownDescription": "Enables the set_closable command without any pre-configured scope." + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected", + "markdownDescription": "Enables the set_content_protected command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab", + "markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon", + "markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position", + "markdownDescription": "Enables the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible", + "markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations", + "markdownDescription": "Enables the set_decorations command without any pre-configured scope." + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects", + "markdownDescription": "Enables the set_effects command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus", + "markdownDescription": "Enables the set_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focusable", + "markdownDescription": "Enables the set_focusable command without any pre-configured scope." + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen", + "markdownDescription": "Enables the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events", + "markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size", + "markdownDescription": "Enables the set_max_size command without any pre-configured scope." + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable", + "markdownDescription": "Enables the set_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size", + "markdownDescription": "Enables the set_min_size command without any pre-configured scope." + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable", + "markdownDescription": "Enables the set_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-overlay-icon", + "markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position", + "markdownDescription": "Enables the set_position command without any pre-configured scope." + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar", + "markdownDescription": "Enables the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable", + "markdownDescription": "Enables the set_resizable command without any pre-configured scope." + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow", + "markdownDescription": "Enables the set_shadow command without any pre-configured scope." + }, + { + "description": "Enables the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-simple-fullscreen", + "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size", + "markdownDescription": "Enables the set_size command without any pre-configured scope." + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints", + "markdownDescription": "Enables the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar", + "markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme", + "markdownDescription": "Enables the set_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style", + "markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces", + "markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show", + "markdownDescription": "Enables the show command without any pre-configured scope." + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging", + "markdownDescription": "Enables the start_dragging command without any pre-configured scope." + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging", + "markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme", + "markdownDescription": "Enables the theme command without any pre-configured scope." + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title", + "markdownDescription": "Enables the title command without any pre-configured scope." + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize", + "markdownDescription": "Enables the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize", + "markdownDescription": "Enables the unmaximize command without any pre-configured scope." + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize", + "markdownDescription": "Enables the unminimize command without any pre-configured scope." + }, + { + "description": "Denies the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-activity-name", + "markdownDescription": "Denies the activity_name command without any pre-configured scope." + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors", + "markdownDescription": "Denies the available_monitors command without any pre-configured scope." + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center", + "markdownDescription": "Denies the center command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor", + "markdownDescription": "Denies the current_monitor command without any pre-configured scope." + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position", + "markdownDescription": "Denies the cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy", + "markdownDescription": "Denies the destroy command without any pre-configured scope." + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows", + "markdownDescription": "Denies the get_all_windows command without any pre-configured scope." + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide", + "markdownDescription": "Denies the hide command without any pre-configured scope." + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position", + "markdownDescription": "Denies the inner_position command without any pre-configured scope." + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size", + "markdownDescription": "Denies the inner_size command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize", + "markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-always-on-top", + "markdownDescription": "Denies the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable", + "markdownDescription": "Denies the is_closable command without any pre-configured scope." + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated", + "markdownDescription": "Denies the is_decorated command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused", + "markdownDescription": "Denies the is_focused command without any pre-configured scope." + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen", + "markdownDescription": "Denies the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable", + "markdownDescription": "Denies the is_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized", + "markdownDescription": "Denies the is_maximized command without any pre-configured scope." + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable", + "markdownDescription": "Denies the is_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized", + "markdownDescription": "Denies the is_minimized command without any pre-configured scope." + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable", + "markdownDescription": "Denies the is_resizable command without any pre-configured scope." + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible", + "markdownDescription": "Denies the is_visible command without any pre-configured scope." + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize", + "markdownDescription": "Denies the maximize command without any pre-configured scope." + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize", + "markdownDescription": "Denies the minimize command without any pre-configured scope." + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point", + "markdownDescription": "Denies the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position", + "markdownDescription": "Denies the outer_position command without any pre-configured scope." + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size", + "markdownDescription": "Denies the outer_size command without any pre-configured scope." + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor", + "markdownDescription": "Denies the primary_monitor command without any pre-configured scope." + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention", + "markdownDescription": "Denies the request_user_attention command without any pre-configured scope." + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor", + "markdownDescription": "Denies the scale_factor command without any pre-configured scope." + }, + { + "description": "Denies the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scene-identifier", + "markdownDescription": "Denies the scene_identifier command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom", + "markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top", + "markdownDescription": "Denies the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-background-color", + "markdownDescription": "Denies the set_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-count", + "markdownDescription": "Denies the set_badge_count command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-label", + "markdownDescription": "Denies the set_badge_label command without any pre-configured scope." + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable", + "markdownDescription": "Denies the set_closable command without any pre-configured scope." + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected", + "markdownDescription": "Denies the set_content_protected command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab", + "markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon", + "markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position", + "markdownDescription": "Denies the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible", + "markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations", + "markdownDescription": "Denies the set_decorations command without any pre-configured scope." + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects", + "markdownDescription": "Denies the set_effects command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus", + "markdownDescription": "Denies the set_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focusable", + "markdownDescription": "Denies the set_focusable command without any pre-configured scope." + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen", + "markdownDescription": "Denies the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events", + "markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size", + "markdownDescription": "Denies the set_max_size command without any pre-configured scope." + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable", + "markdownDescription": "Denies the set_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size", + "markdownDescription": "Denies the set_min_size command without any pre-configured scope." + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable", + "markdownDescription": "Denies the set_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-overlay-icon", + "markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position", + "markdownDescription": "Denies the set_position command without any pre-configured scope." + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar", + "markdownDescription": "Denies the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable", + "markdownDescription": "Denies the set_resizable command without any pre-configured scope." + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow", + "markdownDescription": "Denies the set_shadow command without any pre-configured scope." + }, + { + "description": "Denies the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-simple-fullscreen", + "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size", + "markdownDescription": "Denies the set_size command without any pre-configured scope." + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints", + "markdownDescription": "Denies the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar", + "markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme", + "markdownDescription": "Denies the set_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style", + "markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces", + "markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show", + "markdownDescription": "Denies the show command without any pre-configured scope." + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging", + "markdownDescription": "Denies the start_dragging command without any pre-configured scope." + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging", + "markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme", + "markdownDescription": "Denies the theme command without any pre-configured scope." + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title", + "markdownDescription": "Denies the title command without any pre-configured scope." + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize", + "markdownDescription": "Denies the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize", + "markdownDescription": "Denies the unmaximize command without any pre-configured scope." + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize", + "markdownDescription": "Denies the unminimize command without any pre-configured scope." + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/apps/rebreak-magic-win/src-tauri/gen/schemas/macOS-schema.json b/apps/rebreak-magic-win/src-tauri/gen/schemas/macOS-schema.json new file mode 100644 index 0000000..3286645 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/gen/schemas/macOS-schema.json @@ -0,0 +1,2292 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`", + "type": "string", + "const": "core:default", + "markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`" + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`", + "type": "string", + "const": "core:app:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`\n- `allow-supports-multiple-windows`" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide", + "markdownDescription": "Enables the app_hide command without any pre-configured scope." + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show", + "markdownDescription": "Enables the app_show command without any pre-configured scope." + }, + { + "description": "Enables the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-bundle-type", + "markdownDescription": "Enables the bundle_type command without any pre-configured scope." + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon", + "markdownDescription": "Enables the default_window_icon command without any pre-configured scope." + }, + { + "description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-fetch-data-store-identifiers", + "markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Enables the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-identifier", + "markdownDescription": "Enables the identifier command without any pre-configured scope." + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name", + "markdownDescription": "Enables the name command without any pre-configured scope." + }, + { + "description": "Enables the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-register-listener", + "markdownDescription": "Enables the register_listener command without any pre-configured scope." + }, + { + "description": "Enables the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-data-store", + "markdownDescription": "Enables the remove_data_store command without any pre-configured scope." + }, + { + "description": "Enables the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-listener", + "markdownDescription": "Enables the remove_listener command without any pre-configured scope." + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme", + "markdownDescription": "Enables the set_app_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-dock-visibility", + "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Enables the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-supports-multiple-windows", + "markdownDescription": "Enables the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version", + "markdownDescription": "Enables the tauri_version command without any pre-configured scope." + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version", + "markdownDescription": "Enables the version command without any pre-configured scope." + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide", + "markdownDescription": "Denies the app_hide command without any pre-configured scope." + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show", + "markdownDescription": "Denies the app_show command without any pre-configured scope." + }, + { + "description": "Denies the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-bundle-type", + "markdownDescription": "Denies the bundle_type command without any pre-configured scope." + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon", + "markdownDescription": "Denies the default_window_icon command without any pre-configured scope." + }, + { + "description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-fetch-data-store-identifiers", + "markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Denies the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-identifier", + "markdownDescription": "Denies the identifier command without any pre-configured scope." + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name", + "markdownDescription": "Denies the name command without any pre-configured scope." + }, + { + "description": "Denies the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-register-listener", + "markdownDescription": "Denies the register_listener command without any pre-configured scope." + }, + { + "description": "Denies the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-data-store", + "markdownDescription": "Denies the remove_data_store command without any pre-configured scope." + }, + { + "description": "Denies the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-listener", + "markdownDescription": "Denies the remove_listener command without any pre-configured scope." + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme", + "markdownDescription": "Denies the set_app_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-dock-visibility", + "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Denies the supports_multiple_windows command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-supports-multiple-windows", + "markdownDescription": "Denies the supports_multiple_windows command without any pre-configured scope." + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version", + "markdownDescription": "Denies the tauri_version command without any pre-configured scope." + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version", + "markdownDescription": "Denies the version command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`", + "type": "string", + "const": "core:event:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit", + "markdownDescription": "Enables the emit command without any pre-configured scope." + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to", + "markdownDescription": "Enables the emit_to command without any pre-configured scope." + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen", + "markdownDescription": "Enables the listen command without any pre-configured scope." + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten", + "markdownDescription": "Enables the unlisten command without any pre-configured scope." + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit", + "markdownDescription": "Denies the emit command without any pre-configured scope." + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to", + "markdownDescription": "Denies the emit_to command without any pre-configured scope." + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen", + "markdownDescription": "Denies the listen command without any pre-configured scope." + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten", + "markdownDescription": "Denies the unlisten command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`", + "type": "string", + "const": "core:image:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes", + "markdownDescription": "Enables the from_bytes command without any pre-configured scope." + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path", + "markdownDescription": "Enables the from_path command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba", + "markdownDescription": "Enables the rgba command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes", + "markdownDescription": "Denies the from_bytes command without any pre-configured scope." + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path", + "markdownDescription": "Denies the from_path command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba", + "markdownDescription": "Denies the rgba command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`", + "type": "string", + "const": "core:menu:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append", + "markdownDescription": "Enables the append command without any pre-configured scope." + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default", + "markdownDescription": "Enables the create_default command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert", + "markdownDescription": "Enables the insert command without any pre-configured scope." + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked", + "markdownDescription": "Enables the is_checked command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items", + "markdownDescription": "Enables the items command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup", + "markdownDescription": "Enables the popup command without any pre-configured scope." + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend", + "markdownDescription": "Enables the prepend command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at", + "markdownDescription": "Enables the remove_at command without any pre-configured scope." + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator", + "markdownDescription": "Enables the set_accelerator command without any pre-configured scope." + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu", + "markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp", + "markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu", + "markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp", + "markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked", + "markdownDescription": "Enables the set_checked command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text", + "markdownDescription": "Enables the set_text command without any pre-configured scope." + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text", + "markdownDescription": "Enables the text command without any pre-configured scope." + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append", + "markdownDescription": "Denies the append command without any pre-configured scope." + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default", + "markdownDescription": "Denies the create_default command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert", + "markdownDescription": "Denies the insert command without any pre-configured scope." + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked", + "markdownDescription": "Denies the is_checked command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items", + "markdownDescription": "Denies the items command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup", + "markdownDescription": "Denies the popup command without any pre-configured scope." + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend", + "markdownDescription": "Denies the prepend command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at", + "markdownDescription": "Denies the remove_at command without any pre-configured scope." + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator", + "markdownDescription": "Denies the set_accelerator command without any pre-configured scope." + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu", + "markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp", + "markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu", + "markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp", + "markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked", + "markdownDescription": "Denies the set_checked command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text", + "markdownDescription": "Denies the set_text command without any pre-configured scope." + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text", + "markdownDescription": "Denies the text command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`", + "type": "string", + "const": "core:path:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename", + "markdownDescription": "Enables the basename command without any pre-configured scope." + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname", + "markdownDescription": "Enables the dirname command without any pre-configured scope." + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname", + "markdownDescription": "Enables the extname command without any pre-configured scope." + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute", + "markdownDescription": "Enables the is_absolute command without any pre-configured scope." + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join", + "markdownDescription": "Enables the join command without any pre-configured scope." + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize", + "markdownDescription": "Enables the normalize command without any pre-configured scope." + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve", + "markdownDescription": "Enables the resolve command without any pre-configured scope." + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory", + "markdownDescription": "Enables the resolve_directory command without any pre-configured scope." + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename", + "markdownDescription": "Denies the basename command without any pre-configured scope." + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname", + "markdownDescription": "Denies the dirname command without any pre-configured scope." + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname", + "markdownDescription": "Denies the extname command without any pre-configured scope." + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute", + "markdownDescription": "Denies the is_absolute command without any pre-configured scope." + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join", + "markdownDescription": "Denies the join command without any pre-configured scope." + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize", + "markdownDescription": "Denies the normalize command without any pre-configured scope." + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve", + "markdownDescription": "Denies the resolve command without any pre-configured scope." + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory", + "markdownDescription": "Denies the resolve_directory command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`", + "type": "string", + "const": "core:resources:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`", + "type": "string", + "const": "core:tray:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-icon-with-as-template`\n- `allow-set-show-menu-on-left-click`" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id", + "markdownDescription": "Enables the get_by_id command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id", + "markdownDescription": "Enables the remove_by_id command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template", + "markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-with-as-template", + "markdownDescription": "Enables the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu", + "markdownDescription": "Enables the set_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click", + "markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path", + "markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip", + "markdownDescription": "Enables the set_tooltip command without any pre-configured scope." + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible", + "markdownDescription": "Enables the set_visible command without any pre-configured scope." + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id", + "markdownDescription": "Denies the get_by_id command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id", + "markdownDescription": "Denies the remove_by_id command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template", + "markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_with_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-with-as-template", + "markdownDescription": "Denies the set_icon_with_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu", + "markdownDescription": "Denies the set_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click", + "markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path", + "markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip", + "markdownDescription": "Denies the set_tooltip command without any pre-configured scope." + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible", + "markdownDescription": "Denies the set_visible command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`", + "type": "string", + "const": "core:webview:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data", + "markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview", + "markdownDescription": "Enables the create_webview command without any pre-configured scope." + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window", + "markdownDescription": "Enables the create_webview_window command without any pre-configured scope." + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews", + "markdownDescription": "Enables the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools", + "markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print", + "markdownDescription": "Enables the print command without any pre-configured scope." + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent", + "markdownDescription": "Enables the reparent command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-auto-resize", + "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-background-color", + "markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus", + "markdownDescription": "Enables the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position", + "markdownDescription": "Enables the set_webview_position command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size", + "markdownDescription": "Enables the set_webview_size command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom", + "markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close", + "markdownDescription": "Enables the webview_close command without any pre-configured scope." + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide", + "markdownDescription": "Enables the webview_hide command without any pre-configured scope." + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position", + "markdownDescription": "Enables the webview_position command without any pre-configured scope." + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show", + "markdownDescription": "Enables the webview_show command without any pre-configured scope." + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size", + "markdownDescription": "Enables the webview_size command without any pre-configured scope." + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data", + "markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview", + "markdownDescription": "Denies the create_webview command without any pre-configured scope." + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window", + "markdownDescription": "Denies the create_webview_window command without any pre-configured scope." + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews", + "markdownDescription": "Denies the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools", + "markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print", + "markdownDescription": "Denies the print command without any pre-configured scope." + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent", + "markdownDescription": "Denies the reparent command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-auto-resize", + "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-background-color", + "markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus", + "markdownDescription": "Denies the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position", + "markdownDescription": "Denies the set_webview_position command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size", + "markdownDescription": "Denies the set_webview_size command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom", + "markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close", + "markdownDescription": "Denies the webview_close command without any pre-configured scope." + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide", + "markdownDescription": "Denies the webview_hide command without any pre-configured scope." + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position", + "markdownDescription": "Denies the webview_position command without any pre-configured scope." + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show", + "markdownDescription": "Denies the webview_show command without any pre-configured scope." + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size", + "markdownDescription": "Denies the webview_size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`", + "type": "string", + "const": "core:window:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-activity-name`\n- `allow-scene-identifier`\n- `allow-internal-toggle-maximize`" + }, + { + "description": "Enables the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-activity-name", + "markdownDescription": "Enables the activity_name command without any pre-configured scope." + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors", + "markdownDescription": "Enables the available_monitors command without any pre-configured scope." + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center", + "markdownDescription": "Enables the center command without any pre-configured scope." + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor", + "markdownDescription": "Enables the current_monitor command without any pre-configured scope." + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position", + "markdownDescription": "Enables the cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy", + "markdownDescription": "Enables the destroy command without any pre-configured scope." + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows", + "markdownDescription": "Enables the get_all_windows command without any pre-configured scope." + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide", + "markdownDescription": "Enables the hide command without any pre-configured scope." + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position", + "markdownDescription": "Enables the inner_position command without any pre-configured scope." + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size", + "markdownDescription": "Enables the inner_size command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize", + "markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-always-on-top", + "markdownDescription": "Enables the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable", + "markdownDescription": "Enables the is_closable command without any pre-configured scope." + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated", + "markdownDescription": "Enables the is_decorated command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused", + "markdownDescription": "Enables the is_focused command without any pre-configured scope." + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen", + "markdownDescription": "Enables the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable", + "markdownDescription": "Enables the is_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized", + "markdownDescription": "Enables the is_maximized command without any pre-configured scope." + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable", + "markdownDescription": "Enables the is_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized", + "markdownDescription": "Enables the is_minimized command without any pre-configured scope." + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable", + "markdownDescription": "Enables the is_resizable command without any pre-configured scope." + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible", + "markdownDescription": "Enables the is_visible command without any pre-configured scope." + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize", + "markdownDescription": "Enables the maximize command without any pre-configured scope." + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize", + "markdownDescription": "Enables the minimize command without any pre-configured scope." + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point", + "markdownDescription": "Enables the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position", + "markdownDescription": "Enables the outer_position command without any pre-configured scope." + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size", + "markdownDescription": "Enables the outer_size command without any pre-configured scope." + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor", + "markdownDescription": "Enables the primary_monitor command without any pre-configured scope." + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention", + "markdownDescription": "Enables the request_user_attention command without any pre-configured scope." + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor", + "markdownDescription": "Enables the scale_factor command without any pre-configured scope." + }, + { + "description": "Enables the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scene-identifier", + "markdownDescription": "Enables the scene_identifier command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom", + "markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top", + "markdownDescription": "Enables the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-background-color", + "markdownDescription": "Enables the set_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-count", + "markdownDescription": "Enables the set_badge_count command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-label", + "markdownDescription": "Enables the set_badge_label command without any pre-configured scope." + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable", + "markdownDescription": "Enables the set_closable command without any pre-configured scope." + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected", + "markdownDescription": "Enables the set_content_protected command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab", + "markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon", + "markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position", + "markdownDescription": "Enables the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible", + "markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations", + "markdownDescription": "Enables the set_decorations command without any pre-configured scope." + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects", + "markdownDescription": "Enables the set_effects command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus", + "markdownDescription": "Enables the set_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focusable", + "markdownDescription": "Enables the set_focusable command without any pre-configured scope." + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen", + "markdownDescription": "Enables the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events", + "markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size", + "markdownDescription": "Enables the set_max_size command without any pre-configured scope." + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable", + "markdownDescription": "Enables the set_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size", + "markdownDescription": "Enables the set_min_size command without any pre-configured scope." + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable", + "markdownDescription": "Enables the set_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-overlay-icon", + "markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position", + "markdownDescription": "Enables the set_position command without any pre-configured scope." + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar", + "markdownDescription": "Enables the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable", + "markdownDescription": "Enables the set_resizable command without any pre-configured scope." + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow", + "markdownDescription": "Enables the set_shadow command without any pre-configured scope." + }, + { + "description": "Enables the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-simple-fullscreen", + "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size", + "markdownDescription": "Enables the set_size command without any pre-configured scope." + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints", + "markdownDescription": "Enables the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar", + "markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme", + "markdownDescription": "Enables the set_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style", + "markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces", + "markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show", + "markdownDescription": "Enables the show command without any pre-configured scope." + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging", + "markdownDescription": "Enables the start_dragging command without any pre-configured scope." + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging", + "markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme", + "markdownDescription": "Enables the theme command without any pre-configured scope." + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title", + "markdownDescription": "Enables the title command without any pre-configured scope." + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize", + "markdownDescription": "Enables the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize", + "markdownDescription": "Enables the unmaximize command without any pre-configured scope." + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize", + "markdownDescription": "Enables the unminimize command without any pre-configured scope." + }, + { + "description": "Denies the activity_name command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-activity-name", + "markdownDescription": "Denies the activity_name command without any pre-configured scope." + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors", + "markdownDescription": "Denies the available_monitors command without any pre-configured scope." + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center", + "markdownDescription": "Denies the center command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor", + "markdownDescription": "Denies the current_monitor command without any pre-configured scope." + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position", + "markdownDescription": "Denies the cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy", + "markdownDescription": "Denies the destroy command without any pre-configured scope." + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows", + "markdownDescription": "Denies the get_all_windows command without any pre-configured scope." + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide", + "markdownDescription": "Denies the hide command without any pre-configured scope." + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position", + "markdownDescription": "Denies the inner_position command without any pre-configured scope." + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size", + "markdownDescription": "Denies the inner_size command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize", + "markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-always-on-top", + "markdownDescription": "Denies the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable", + "markdownDescription": "Denies the is_closable command without any pre-configured scope." + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated", + "markdownDescription": "Denies the is_decorated command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused", + "markdownDescription": "Denies the is_focused command without any pre-configured scope." + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen", + "markdownDescription": "Denies the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable", + "markdownDescription": "Denies the is_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized", + "markdownDescription": "Denies the is_maximized command without any pre-configured scope." + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable", + "markdownDescription": "Denies the is_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized", + "markdownDescription": "Denies the is_minimized command without any pre-configured scope." + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable", + "markdownDescription": "Denies the is_resizable command without any pre-configured scope." + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible", + "markdownDescription": "Denies the is_visible command without any pre-configured scope." + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize", + "markdownDescription": "Denies the maximize command without any pre-configured scope." + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize", + "markdownDescription": "Denies the minimize command without any pre-configured scope." + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point", + "markdownDescription": "Denies the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position", + "markdownDescription": "Denies the outer_position command without any pre-configured scope." + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size", + "markdownDescription": "Denies the outer_size command without any pre-configured scope." + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor", + "markdownDescription": "Denies the primary_monitor command without any pre-configured scope." + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention", + "markdownDescription": "Denies the request_user_attention command without any pre-configured scope." + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor", + "markdownDescription": "Denies the scale_factor command without any pre-configured scope." + }, + { + "description": "Denies the scene_identifier command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scene-identifier", + "markdownDescription": "Denies the scene_identifier command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom", + "markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top", + "markdownDescription": "Denies the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-background-color", + "markdownDescription": "Denies the set_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-count", + "markdownDescription": "Denies the set_badge_count command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-label", + "markdownDescription": "Denies the set_badge_label command without any pre-configured scope." + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable", + "markdownDescription": "Denies the set_closable command without any pre-configured scope." + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected", + "markdownDescription": "Denies the set_content_protected command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab", + "markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon", + "markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position", + "markdownDescription": "Denies the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible", + "markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations", + "markdownDescription": "Denies the set_decorations command without any pre-configured scope." + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects", + "markdownDescription": "Denies the set_effects command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus", + "markdownDescription": "Denies the set_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focusable", + "markdownDescription": "Denies the set_focusable command without any pre-configured scope." + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen", + "markdownDescription": "Denies the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events", + "markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size", + "markdownDescription": "Denies the set_max_size command without any pre-configured scope." + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable", + "markdownDescription": "Denies the set_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size", + "markdownDescription": "Denies the set_min_size command without any pre-configured scope." + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable", + "markdownDescription": "Denies the set_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-overlay-icon", + "markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position", + "markdownDescription": "Denies the set_position command without any pre-configured scope." + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar", + "markdownDescription": "Denies the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable", + "markdownDescription": "Denies the set_resizable command without any pre-configured scope." + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow", + "markdownDescription": "Denies the set_shadow command without any pre-configured scope." + }, + { + "description": "Denies the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-simple-fullscreen", + "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size", + "markdownDescription": "Denies the set_size command without any pre-configured scope." + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints", + "markdownDescription": "Denies the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar", + "markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme", + "markdownDescription": "Denies the set_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style", + "markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces", + "markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show", + "markdownDescription": "Denies the show command without any pre-configured scope." + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging", + "markdownDescription": "Denies the start_dragging command without any pre-configured scope." + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging", + "markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme", + "markdownDescription": "Denies the theme command without any pre-configured scope." + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title", + "markdownDescription": "Denies the title command without any pre-configured scope." + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize", + "markdownDescription": "Denies the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize", + "markdownDescription": "Denies the unmaximize command without any pre-configured scope." + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize", + "markdownDescription": "Denies the unminimize command without any pre-configured scope." + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/apps/rebreak-magic-win/src-tauri/icons/128x128.png b/apps/rebreak-magic-win/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..22540d571140e8f2691115bf07365d3f04960811 GIT binary patch literal 8501 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 Ns48kI)X7;z{0D15%tQbH literal 0 HcmV?d00001 diff --git a/apps/rebreak-magic-win/src-tauri/icons/128x128@2x.png b/apps/rebreak-magic-win/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf005ab8bc8415f1029f680a62dc9d156b3f8e1 GIT binary patch literal 22587 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 OI2shVde$C`xA79^TJ=F**KT?@ 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 literal 0 HcmV?d00001 diff --git a/apps/rebreak-magic-win/src-tauri/icons/32x32.png b/apps/rebreak-magic-win/src-tauri/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4d68e963575be1fcf497dcff824d8d3afdf477 GIT binary patch literal 2082 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%0AN?4_q|w* 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

oVeX#~Kg5Pb<5`Br@|p};M2EYaKO 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 literal 0 HcmV?d00001 diff --git a/apps/rebreak-magic-win/src-tauri/icons/source.png b/apps/rebreak-magic-win/src-tauri/icons/source.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9b4d7130b57f40e74be8546aadb57ff59d11e2 GIT binary patch literal 222924 zcmeFZXIN8P*ESl81rSl1(h=!ZsnVPD-n&8R9f1&fQGpFg?;uTj2}th*QKZ)Zp@ks5 zgLDWXC%E_XzRz{O^Zh!1H(Xq-wPv4d%rWk9kC8-bYbp^FQWF9I0Ady8m%0D|KK2qH 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. + pub device_id: String, +} + +impl ProtectionState { + pub fn doh_template_for(token: &str) -> String { + format!("https://{DOH_HOST}/dns-query/{token}") + } +} + +/// %ProgramData%\ReBreak — auf non-Windows (Dev) /tmp/rebreak-protection. +pub fn state_dir() -> PathBuf { + #[cfg(windows)] + { + let base = std::env::var("ProgramData").unwrap_or_else(|_| "C:\\ProgramData".into()); + PathBuf::from(base).join("ReBreak") + } + #[cfg(not(windows))] + { + PathBuf::from("/tmp/rebreak-protection") + } +} + +pub fn state_path() -> PathBuf { + state_dir().join("protection.json") +} + +pub fn load_state() -> Option { + let raw = std::fs::read_to_string(state_path()).ok()?; + serde_json::from_str(&raw).ok() +} + +// --------------------------------------------------------------------------- +// PowerShell-Runner +// --------------------------------------------------------------------------- + +/// Führt ein PowerShell-Script aus (nicht-elevated, hidden window). +/// Setup/Teardown brauchen Admin — dafür generiert die App ein One-Shot-Script +/// und startet es via `Start-Process -Verb RunAs` (ein einziger UAC-Prompt). +/// Der SYSTEM-Service ruft `ps_run` direkt auf (läuft bereits elevated). +pub fn ps_run(script: &str) -> Result { + let mut cmd = Command::new("powershell.exe"); + cmd.args([ + "-NonInteractive", + "-NoProfile", + "-ExecutionPolicy", + "Bypass", + "-Command", + script, + ]); + + // Kein Konsolen-Fenster aufpoppen lassen (CREATE_NO_WINDOW) + #[cfg(windows)] + { + use std::os::windows::process::CommandExt; + cmd.creation_flags(0x0800_0000); + } + + let out = cmd + .output() + .map_err(|e| format!("powershell.exe nicht startbar: {e}"))?; + + let stdout = String::from_utf8_lossy(&out.stdout).to_string(); + if out.status.success() { + Ok(stdout) + } else { + let stderr = String::from_utf8_lossy(&out.stderr); + Err(format!("PowerShell exit {:?}: {stderr}", out.status.code())) + } +} + +// --------------------------------------------------------------------------- +// Script-Generierung (pure Strings — cross-platform test- und reviewbar) +// --------------------------------------------------------------------------- + +/// DoH-Setup-Script (braucht Admin). Adaptiert aus dem verifizierten +/// Windows-11-Flow: DoH-Server registrieren → Interface-DNS setzen → +/// EnableAutoDoh → per-Interface DohFlags → flushdns. +pub fn apply_script(server_ip: &str, doh_template: &str) -> String { + format!( + r#"$ErrorActionPreference = "Stop" +$ip = "{server_ip}" +$template = "{doh_template}" + +# Schritt 1: ReBreak-DoH-Server als bekannten DoH-Endpoint registrieren +Remove-DnsClientDohServerAddress -ServerAddress $ip -ErrorAction Ignore +Add-DnsClientDohServerAddress ` + -ServerAddress $ip ` + -DohTemplate $template ` + -AllowFallbackToUdp $False ` + -AutoUpgrade $True + +# Schritt 2: DNS aller aktiven (non-loopback) Adapter auf ReBreak setzen +$adapters = Get-NetAdapter | Where-Object {{ $_.Status -eq "Up" -and -not $_.Virtual }} +if (-not $adapters) {{ $adapters = Get-NetAdapter | Where-Object {{ $_.Status -eq "Up" }} }} +foreach ($adapter in $adapters) {{ + Set-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex -ServerAddresses $ip + + # Schritt 4: Interface-spezifische DoH-Flags (DoH erzwingen, kein Klartext-Fallback) + $guid = $adapter.InterfaceGuid + $dohPath = "HKLM:\System\CurrentControlSet\Services\Dnscache\InterfaceSpecificParameters\$guid\DohInterfaceSettings\Doh\$ip" + New-Item -Path $dohPath -Force | Out-Null + New-ItemProperty -Path $dohPath -Name "DohFlags" -Value 1 -PropertyType QWORD -Force | Out-Null +}} + +# Schritt 3: DoH systemweit erzwingen +$regPath = "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" +Set-ItemProperty -Path $regPath -Name "EnableAutoDoh" -Value 2 -Type DWord + +# Schritt 5: Browser-Policies — Chromium (Edge/Chrome/Brave) umgehen sonst die +# System-DNS via eigenem built-in Resolver UND eigenem DoH. Beide MÜSSEN aus, +# sonst greift die DNS-Sperre im Browser nicht (empirisch verifiziert 2026-06-07). +# Test-Path-Guard statt New-Item -Force, damit bestehende Org-Policies bleiben. +function Set-ChromiumDnsPolicy($base) {{ + if (-not (Test-Path $base)) {{ New-Item -Path $base -Force | Out-Null }} + Set-ItemProperty -Path $base -Name "DnsOverHttpsMode" -Value "off" -Type String + Set-ItemProperty -Path $base -Name "BuiltInDnsClientEnabled" -Value 0 -Type DWord +}} +Set-ChromiumDnsPolicy "HKLM:\SOFTWARE\Policies\Microsoft\Edge" +Set-ChromiumDnsPolicy "HKLM:\SOFTWARE\Policies\Google\Chrome" +Set-ChromiumDnsPolicy "HKLM:\SOFTWARE\Policies\BraveSoftware\Brave" +# Firefox: eigenes DoH (TRR) aus + sperren (kein built-in-Resolver-Bypass) +$ff = "HKLM:\SOFTWARE\Policies\Mozilla\Firefox\DNSOverHTTPS" +if (-not (Test-Path $ff)) {{ New-Item -Path $ff -Force | Out-Null }} +Set-ItemProperty -Path $ff -Name "Enabled" -Value 0 -Type DWord +Set-ItemProperty -Path $ff -Name "Locked" -Value 1 -Type DWord + +Clear-DnsClientCache +"# + ) +} + +/// DoH-Teardown-Script (braucht Admin / SYSTEM). Wird NUR ausgeführt wenn +/// das Backend den Token nach abgelaufenem 24h-Cooldown revoked hat. +pub fn teardown_script(server_ip: &str) -> String { + format!( + r#"$ErrorActionPreference = "Continue" +$ip = "{server_ip}" + +Remove-DnsClientDohServerAddress -ServerAddress $ip -ErrorAction Ignore + +$adapters = Get-NetAdapter | Where-Object {{ $_.Status -eq "Up" }} +foreach ($adapter in $adapters) {{ + Set-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex -ResetServerAddresses + $guid = $adapter.InterfaceGuid + $dohPath = "HKLM:\System\CurrentControlSet\Services\Dnscache\InterfaceSpecificParameters\$guid\DohInterfaceSettings" + Remove-Item -Path $dohPath -Recurse -ErrorAction Ignore +}} + +$regPath = "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" +Remove-ItemProperty -Path $regPath -Name "EnableAutoDoh" -ErrorAction Ignore + +# Browser-Policies wieder entfernen +foreach ($base in @("HKLM:\SOFTWARE\Policies\Microsoft\Edge","HKLM:\SOFTWARE\Policies\Google\Chrome","HKLM:\SOFTWARE\Policies\BraveSoftware\Brave")) {{ + Remove-ItemProperty -Path $base -Name "DnsOverHttpsMode" -ErrorAction Ignore + Remove-ItemProperty -Path $base -Name "BuiltInDnsClientEnabled" -ErrorAction Ignore +}} +Remove-Item -Path "HKLM:\SOFTWARE\Policies\Mozilla\Firefox\DNSOverHTTPS" -Recurse -ErrorAction Ignore + +Clear-DnsClientCache +"# + ) +} + +/// Status-Check-Script (läuft unelevated): prüft DoH-Registrierung UND +/// dass mindestens ein aktiver Adapter ReBreak als DNS gesetzt hat. +/// Output: "APPLIED" | "MISSING" +pub fn check_script(server_ip: &str) -> String { + format!( + r#"$ip = "{server_ip}" +$doh = Get-DnsClientDohServerAddress -ErrorAction Ignore | Where-Object {{ $_.ServerAddress -eq $ip }} +$dns = Get-DnsClientServerAddress -AddressFamily IPv4 -ErrorAction Ignore | Where-Object {{ $_.ServerAddresses -contains $ip }} +if ($doh -and $dns) {{ Write-Output "APPLIED" }} else {{ Write-Output "MISSING" }} +"# + ) +} + +// --------------------------------------------------------------------------- +// High-Level-API (nutzt ps_run — App-Check unelevated, Service elevated) +// --------------------------------------------------------------------------- + +/// Prüft ob der DoH-Schutz aktuell greift (unelevated lesbar). +pub fn doh_is_applied(server_ip: &str) -> bool { + matches!(ps_run(&check_script(server_ip)), Ok(out) if out.trim() == "APPLIED") +} + +/// Wendet den DoH-Schutz an. Braucht Admin/SYSTEM-Kontext (Service). +pub fn apply_doh(server_ip: &str, doh_template: &str) -> Result<(), String> { + ps_run(&apply_script(server_ip, doh_template)).map(|_| ()) +} + +/// Entfernt den DoH-Schutz. Braucht Admin/SYSTEM-Kontext (Service). +pub fn teardown_doh(server_ip: &str) -> Result<(), String> { + ps_run(&teardown_script(server_ip)).map(|_| ()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn doh_template_embeds_token() { + let t = ProtectionState::doh_template_for("abc123"); + assert_eq!(t, "https://dns.rebreak.org/dns-query/abc123"); + } + + #[test] + fn scripts_contain_ip_and_template() { + let s = apply_script("1.2.3.4", "https://dns.rebreak.org/dns-query/tok"); + assert!(s.contains("1.2.3.4")); + assert!(s.contains("/dns-query/tok")); + assert!(s.contains("EnableAutoDoh")); + let t = teardown_script("1.2.3.4"); + assert!(t.contains("ResetServerAddresses")); + let c = check_script("1.2.3.4"); + assert!(c.contains("APPLIED")); + } + + #[test] + fn state_roundtrip() { + let st = ProtectionState { + dns_token: "tok".into(), + server_ip: "1.2.3.4".into(), + doh_template: "https://dns.rebreak.org/dns-query/tok".into(), + backend_url: "https://staging.rebreak.org".into(), + device_id: "win-x".into(), + }; + let json = serde_json::to_string(&st).unwrap(); + let back: ProtectionState = serde_json::from_str(&json).unwrap(); + assert_eq!(back.dns_token, "tok"); + // camelCase für Lesbarkeit im JSON-File + assert!(json.contains("dnsToken")); + } +} diff --git a/apps/rebreak-magic-win/src-tauri/service/Cargo.toml b/apps/rebreak-magic-win/src-tauri/service/Cargo.toml new file mode 100644 index 0000000..90fca3b --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/service/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "rebreak-protection-service" +version = "0.1.0" +edition = "2021" +description = "ReBreak Tamper-Protection-Service — DoH-Monitor (SYSTEM)" + +[dependencies] +protection-core = { path = "../protection-core" } +serde = { version = "1", features = ["derive"] } +serde_json = "1" +reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"] } + +[target.'cfg(windows)'.dependencies] +windows-service = "0.7" diff --git a/apps/rebreak-magic-win/src-tauri/service/src/main.rs b/apps/rebreak-magic-win/src-tauri/service/src/main.rs new file mode 100644 index 0000000..cc2f098 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/service/src/main.rs @@ -0,0 +1,201 @@ +//! ReBreak Tamper-Protection-Service (Windows-Service, läuft als SYSTEM). +//! +//! Alle 5 Minuten: +//! 1. Backend-Poll: GET /api/magic/status?token= +//! - active=true → DoH-Config prüfen, bei Manipulation sofort re-applien +//! - active=false → 24h-Release-Cooldown ist durch: Teardown + Service disablen +//! - offline → FAIL-CLOSED: Schutz bleibt, Manipulation wird trotzdem repariert +//! +//! Deaktivierung ist damit ausschließlich server-zeitgesteuert — die App +//! (unelevated) kann den Schutz nicht abbauen, der User sieht keinen Code. +//! +//! Debug: `rebreak-protection-service.exe --console` läuft im Vordergrund. + +use protection_core::{ + apply_doh, doh_is_applied, load_state, state_dir, teardown_doh, ProtectionState, + SERVICE_NAME, +}; +use std::time::Duration; + +const CHECK_INTERVAL: Duration = Duration::from_secs(5 * 60); +const STARTUP_DELAY: Duration = Duration::from_secs(20); +const HTTP_TIMEOUT: Duration = Duration::from_secs(15); + +fn log(msg: &str) { + let line = format!( + "[{}] {msg}\n", + std::time::SystemTime::now() + .duration_since(std::time::SystemTime::UNIX_EPOCH) + .map(|d| d.as_secs()) + .unwrap_or(0) + ); + let path = state_dir().join("service.log"); + if let Ok(mut f) = std::fs::OpenOptions::new().create(true).append(true).open(path) { + use std::io::Write; + let _ = f.write_all(line.as_bytes()); + } +} + +/// Backend-Status: Some(true)=aktiv, Some(false)=revoked, None=offline/Fehler. +fn poll_backend(state: &ProtectionState) -> Option { + let client = reqwest::blocking::Client::builder() + .timeout(HTTP_TIMEOUT) + .build() + .ok()?; + let url = format!( + "{}/api/magic/status?token={}", + state.backend_url.trim_end_matches('/'), + state.dns_token + ); + let res = client.get(&url).send().ok()?; + if !res.status().is_success() { + // 4xx/5xx ≠ "revoked" — nur explizites active=false zählt + return None; + } + let body: serde_json::Value = res.json().ok()?; + body.pointer("/data/active").and_then(|v| v.as_bool()) +} + +/// Ein Monitor-Durchlauf. Rückgabe true = Service soll sich beenden (released). +fn tick() -> bool { + let Some(state) = load_state() else { + log("Kein protection.json — idle."); + return false; + }; + + match poll_backend(&state) { + Some(false) => { + // Release-Cooldown abgelaufen, Token serverseitig revoked → Abbau + log("Backend: Token revoked → Teardown."); + match teardown_doh(&state.server_ip) { + Ok(()) => { + let _ = std::fs::remove_file(protection_core::state_path()); + // Autostart aus — Binary bleibt liegen bis App-Uninstall + let _ = protection_core::ps_run(&format!( + "sc.exe config {SERVICE_NAME} start= disabled" + )); + log("Teardown ok — Service deaktiviert sich."); + true + } + Err(e) => { + log(&format!("Teardown fehlgeschlagen: {e}")); + false + } + } + } + status => { + // active=true ODER offline → fail-closed: Schutz sicherstellen + if status.is_none() { + log("Backend nicht erreichbar — fail-closed, Schutz bleibt."); + } + if !doh_is_applied(&state.server_ip) { + log("Manipulation erkannt — DoH wird wiederhergestellt."); + match apply_doh(&state.server_ip, &state.doh_template) { + Ok(()) => log("DoH wiederhergestellt."), + Err(e) => log(&format!("Re-Apply fehlgeschlagen: {e}")), + } + } + false + } + } +} + +/// Monitor-Loop; `stop_check` liefert true sobald der SCM Stop signalisiert. +fn monitor_loop(stop_check: impl Fn(Duration) -> bool) { + log("Service gestartet."); + if stop_check(STARTUP_DELAY) { + return; + } + loop { + let done = tick(); + if done || stop_check(CHECK_INTERVAL) { + break; + } + } + log("Service beendet."); +} + +// --------------------------------------------------------------------------- +// Windows-Service-Boilerplate +// --------------------------------------------------------------------------- + +#[cfg(windows)] +mod win { + use super::*; + use std::ffi::OsString; + use std::sync::mpsc; + use windows_service::{ + define_windows_service, + service::{ + ServiceControl, ServiceControlAccept, ServiceExitCode, ServiceState, + ServiceStatus, ServiceType, + }, + service_control_handler::{self, ServiceControlHandlerResult}, + service_dispatcher, + }; + + define_windows_service!(ffi_service_main, service_main); + + pub fn run() -> Result<(), windows_service::Error> { + service_dispatcher::start(SERVICE_NAME, ffi_service_main) + } + + fn service_main(_args: Vec) { + if let Err(e) = run_service() { + log(&format!("Service-Fehler: {e:?}")); + } + } + + fn run_service() -> Result<(), windows_service::Error> { + let (stop_tx, stop_rx) = mpsc::channel::<()>(); + + let handler = move |control| match control { + ServiceControl::Stop | ServiceControl::Shutdown => { + let _ = stop_tx.send(()); + ServiceControlHandlerResult::NoError + } + ServiceControl::Interrogate => ServiceControlHandlerResult::NoError, + _ => ServiceControlHandlerResult::NotImplemented, + }; + let status = service_control_handler::register(SERVICE_NAME, handler)?; + + let running = |state: ServiceState| ServiceStatus { + service_type: ServiceType::OWN_PROCESS, + current_state: state, + controls_accepted: ServiceControlAccept::STOP, + exit_code: ServiceExitCode::Win32(0), + checkpoint: 0, + wait_hint: Duration::default(), + process_id: None, + }; + status.set_service_status(running(ServiceState::Running))?; + + monitor_loop(|wait| stop_rx.recv_timeout(wait).is_ok()); + + status.set_service_status(running(ServiceState::Stopped))?; + Ok(()) + } +} + +fn main() { + // --console: Vordergrund-Modus für Debugging (auch unter macOS-Dev lauffähig) + if std::env::args().any(|a| a == "--console") { + monitor_loop(|wait| { + std::thread::sleep(wait); + false + }); + return; + } + + #[cfg(windows)] + { + if let Err(e) = win::run() { + log(&format!("Dispatcher-Fehler: {e:?}")); + } + } + #[cfg(not(windows))] + { + eprintln!("rebreak-protection-service läuft nur als Windows-Service. Nutze --console für Debug."); + std::process::exit(1); + } +} diff --git a/apps/rebreak-magic-win/src-tauri/src/api.rs b/apps/rebreak-magic-win/src-tauri/src/api.rs new file mode 100644 index 0000000..4efdce5 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/src/api.rs @@ -0,0 +1,166 @@ +//! Backend-Client für /api/magic/* — alle HTTP-Calls laufen im Rust-Core. +//! Der mgc_-Session-Token erreicht die WebView nie (analog Mac-Keychain-Modell). + +use serde::Deserialize; +use serde_json::json; + +#[derive(Deserialize)] +struct Envelope { + #[allow(dead_code)] + success: bool, + data: T, +} + +#[derive(Deserialize)] +struct ErrorBody { + message: Option, +} + +#[derive(Deserialize)] +pub struct PairData { + pub token: String, +} + +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct MeData { + pub nickname: Option, + pub plan: Option, +} + +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct RegisterData { + pub dns_token: String, +} + +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct MagicDevice { + pub device_id: String, + pub release_requested_at: Option, + pub release_available_at: Option, +} + +pub struct Api { + base: String, + client: reqwest::Client, +} + +impl Api { + pub fn new(base: &str) -> Self { + Self { + base: base.trim_end_matches('/').to_string(), + client: reqwest::Client::new(), + } + } + + async fn parse( + res: reqwest::Response, + ) -> Result { + let status = res.status(); + let text = res.text().await.map_err(|e| e.to_string())?; + if !status.is_success() { + let msg = serde_json::from_str::(&text) + .ok() + .and_then(|b| b.message) + .unwrap_or_else(|| format!("HTTP {status}")); + return Err(msg); + } + serde_json::from_str::>(&text) + .map(|e| e.data) + .map_err(|e| format!("Unerwartete Server-Antwort: {e}")) + } + + /// POST /api/magic/pair/redeem — 6-stelliger Code → mgc_-Session-Token. + pub async fn redeem_pair(&self, code: &str, label: &str) -> Result { + let res = self + .client + .post(format!("{}/api/magic/pair/redeem", self.base)) + .json(&json!({ "code": code, "label": label })) + .send() + .await + .map_err(|e| format!("Keine Verbindung zum Server: {e}"))?; + Self::parse(res).await + } + + /// GET /api/magic/me — Hub-Header-Infos. + pub async fn me(&self, token: &str) -> Result { + let res = self + .client + .get(format!("{}/api/magic/me", self.base)) + .bearer_auth(token) + .send() + .await + .map_err(|e| format!("Keine Verbindung zum Server: {e}"))?; + Self::parse(res).await + } + + /// POST /api/magic/register — DNS-Token + AdGuard-Provisioning (idempotent). + pub async fn register( + &self, + token: &str, + device_id: &str, + hostname: &str, + model: &str, + os_version: &str, + ) -> Result { + let res = self + .client + .post(format!("{}/api/magic/register", self.base)) + .bearer_auth(token) + .json(&json!({ + "deviceId": device_id, + "hostname": hostname, + "model": model, + "osVersion": os_version, + "platform": "windows", + })) + .send() + .await + .map_err(|e| format!("Keine Verbindung zum Server: {e}"))?; + Self::parse(res).await + } + + /// GET /api/magic/devices — aktive Magic-Bindings des Users. + pub async fn devices(&self, token: &str) -> Result, String> { + let res = self + .client + .get(format!("{}/api/magic/devices", self.base)) + .bearer_auth(token) + .send() + .await + .map_err(|e| format!("Keine Verbindung zum Server: {e}"))?; + Self::parse(res).await + } + + /// POST /api/magic/devices/:id/request-release — startet 24h-Cooldown. + pub async fn request_release(&self, token: &str, device_id: &str) -> Result<(), String> { + let res = self + .client + .post(format!( + "{}/api/magic/devices/{device_id}/request-release", + self.base + )) + .bearer_auth(token) + .send() + .await + .map_err(|e| format!("Keine Verbindung zum Server: {e}"))?; + Self::parse::(res).await.map(|_| ()) + } + + /// POST /api/magic/devices/:id/cancel-release — bricht Cooldown ab. + pub async fn cancel_release(&self, token: &str, device_id: &str) -> Result<(), String> { + let res = self + .client + .post(format!( + "{}/api/magic/devices/{device_id}/cancel-release", + self.base + )) + .bearer_auth(token) + .send() + .await + .map_err(|e| format!("Keine Verbindung zum Server: {e}"))?; + Self::parse::(res).await.map(|_| ()) + } +} diff --git a/apps/rebreak-magic-win/src-tauri/src/auth.rs b/apps/rebreak-magic-win/src-tauri/src/auth.rs new file mode 100644 index 0000000..aaabae8 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/src/auth.rs @@ -0,0 +1,42 @@ +//! Token-Storage im Windows Credential Manager (keyring-Crate). +//! Analog zur Mac-App (Keychain): mgc_-Session-Token + DNS-Token +//! liegen NIE im Frontend/localStorage. + +use keyring::Entry; + +const SERVICE: &str = "org.rebreak.magic"; +const SESSION_KEY: &str = "session-token"; +const DNS_KEY: &str = "dns-token"; + +fn entry(key: &str) -> Result { + Entry::new(SERVICE, key).map_err(|e| format!("Credential-Store-Fehler: {e}")) +} + +pub fn save_session_token(token: &str) -> Result<(), String> { + entry(SESSION_KEY)? + .set_password(token) + .map_err(|e| format!("Token speichern fehlgeschlagen: {e}")) +} + +pub fn load_session_token() -> Option { + entry(SESSION_KEY).ok()?.get_password().ok() +} + +pub fn save_dns_token(token: &str) -> Result<(), String> { + entry(DNS_KEY)? + .set_password(token) + .map_err(|e| format!("DNS-Token speichern fehlgeschlagen: {e}")) +} + +pub fn load_dns_token() -> Option { + entry(DNS_KEY).ok()?.get_password().ok() +} + +pub fn clear_all() { + if let Ok(e) = entry(SESSION_KEY) { + let _ = e.delete_credential(); + } + if let Ok(e) = entry(DNS_KEY) { + let _ = e.delete_credential(); + } +} diff --git a/apps/rebreak-magic-win/src-tauri/src/device.rs b/apps/rebreak-magic-win/src-tauri/src/device.rs new file mode 100644 index 0000000..68ada5c --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/src/device.rs @@ -0,0 +1,46 @@ +//! Stabile Device-Identität — analog Mac-App (Hardware-UUID), +//! auf Windows via MachineGuid aus der Registry. + +#[cfg(windows)] +use protection_core::ps_run; + +/// Stabile Device-ID: "win-". +/// MachineGuid übersteht Reinstalls der App (nicht aber Windows-Neuinstall). +pub fn device_id() -> String { + #[cfg(windows)] + { + if let Ok(out) = ps_run( + "(Get-ItemProperty 'HKLM:\\SOFTWARE\\Microsoft\\Cryptography').MachineGuid", + ) { + let guid = out.trim(); + if !guid.is_empty() { + return format!("win-{guid}"); + } + } + // Fallback: Hostname-basiert (sollte praktisch nie passieren) + format!("win-{}", hostname()) + } + #[cfg(not(windows))] + { + format!("win-dev-{}", hostname()) + } +} + +pub fn hostname() -> String { + std::env::var("COMPUTERNAME") + .or_else(|_| std::env::var("HOSTNAME")) + .unwrap_or_else(|_| "Windows-PC".into()) +} + +pub fn os_version() -> String { + #[cfg(windows)] + { + ps_run("[System.Environment]::OSVersion.VersionString") + .map(|s| s.trim().to_string()) + .unwrap_or_else(|_| "Windows".into()) + } + #[cfg(not(windows))] + { + "dev".into() + } +} diff --git a/apps/rebreak-magic-win/src-tauri/src/lib.rs b/apps/rebreak-magic-win/src-tauri/src/lib.rs new file mode 100644 index 0000000..44672f1 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/src/lib.rs @@ -0,0 +1,198 @@ +//! ReBreak Magic für Windows — Tauri-Core. +//! +//! Alle Backend-Calls + Token-Handling laufen hier in Rust; die WebView +//! sieht nur den aggregierten UI-State (nie Tokens). Analog zur Mac-App +//! (rebreak-magic-mac), gleiche /api/magic/*-Endpoints. + +mod api; +mod auth; +mod device; +mod setup; + +use api::Api; +use protection_core::ProtectionState; +use serde::Serialize; +use tauri::Manager; + +const DEFAULT_BACKEND_URL: &str = "https://staging.rebreak.org"; + +#[derive(Serialize, Clone, Default)] +#[serde(rename_all = "camelCase")] +struct UiState { + backend_url: String, + logged_in: bool, + nickname: Option, + plan: Option, + device_id: String, + hostname: String, + /// Magic-Binding existiert (DNS-Token provisioniert) + registered: bool, + /// Windows-DoH zeigt aktuell auf ReBreak (lokaler Check) + protection_applied: bool, + release_requested_at: Option, + release_available_at: Option, +} + +/// Backend-URL: config.json im App-Config-Dir > Default (Staging). +/// Gleiche Semantik wie config.example.json der Mac-App. +fn backend_url(app: &tauri::AppHandle) -> String { + if let Ok(dir) = app.path().app_config_dir() { + if let Ok(raw) = std::fs::read_to_string(dir.join("config.json")) { + if let Ok(v) = serde_json::from_str::(&raw) { + if let Some(url) = v.get("backendBaseUrl").and_then(|u| u.as_str()) { + return url.trim_end_matches('/').to_string(); + } + } + } + } + DEFAULT_BACKEND_URL.into() +} + +/// Aggregiert den kompletten UI-State (ein Roundtrip fürs Frontend). +async fn build_state(app: &tauri::AppHandle) -> UiState { + let mut state = UiState { + backend_url: backend_url(app), + device_id: device::device_id(), + hostname: device::hostname(), + ..Default::default() + }; + + // Lokaler DoH-Check ist auth-unabhängig + let server_ip = protection_core::load_state() + .map(|s| s.server_ip) + .unwrap_or_else(setup::resolve_doh_ip); + state.protection_applied = protection_core::doh_is_applied(&server_ip); + + let Some(token) = auth::load_session_token() else { + return state; + }; + + let api = Api::new(&state.backend_url); + match api.me(&token).await { + Ok(me) => { + state.logged_in = true; + state.nickname = me.nickname; + state.plan = me.plan; + } + Err(_) => { + // Token abgelaufen/revoked → wie ausgeloggt behandeln + return state; + } + } + + if let Ok(devices) = api.devices(&token).await { + if let Some(mine) = devices.iter().find(|d| d.device_id == state.device_id) { + state.registered = true; + state.release_requested_at = mine.release_requested_at.clone(); + state.release_available_at = mine.release_available_at.clone(); + } + } + + state +} + +// --------------------------------------------------------------------------- +// Tauri-Commands — jedes gibt den frischen UiState zurück +// --------------------------------------------------------------------------- + +#[tauri::command] +async fn get_state(app: tauri::AppHandle) -> Result { + Ok(build_state(&app).await) +} + +/// Pairing-Code einlösen + Device registrieren (ein Schritt fürs UI). +#[tauri::command] +async fn pair_and_register(app: tauri::AppHandle, code: String) -> Result { + let code = code.trim().to_string(); + if !code.chars().all(|c| c.is_ascii_digit()) || code.len() != 6 { + return Err("Der Code besteht aus 6 Ziffern.".into()); + } + + let base = backend_url(&app); + let api = Api::new(&base); + let hostname = device::hostname(); + + let pair = api.redeem_pair(&code, &hostname).await?; + auth::save_session_token(&pair.token)?; + + let reg = api + .register( + &pair.token, + &device::device_id(), + &hostname, + "Windows-PC", + &device::os_version(), + ) + .await?; + auth::save_dns_token(®.dns_token)?; + + Ok(build_state(&app).await) +} + +/// Schutz aktivieren: EIN UAC-Prompt → DoH + State + Tamper-Service. +#[tauri::command] +async fn activate_protection(app: tauri::AppHandle) -> Result { + let dns_token = auth::load_dns_token() + .ok_or_else(|| "Kein DNS-Token — bitte zuerst koppeln.".to_string())?; + + let server_ip = setup::resolve_doh_ip(); + let state = ProtectionState { + doh_template: ProtectionState::doh_template_for(&dns_token), + dns_token, + server_ip, + backend_url: backend_url(&app), + device_id: device::device_id(), + }; + + let service_exe = setup::service_exe_path()?; + let script = setup::build_setup_script(&state, &service_exe.display().to_string()); + setup::run_elevated(&script)?; + + let ui = build_state(&app).await; + if !ui.protection_applied { + return Err("Setup lief durch, aber der DoH-Schutz ist nicht aktiv. Bitte erneut versuchen.".into()); + } + Ok(ui) +} + +/// 24h-Cooldown starten. Teardown macht NICHT die App — der SYSTEM-Service +/// pollt /api/magic/status und baut erst ab wenn das Backend revoked. +#[tauri::command] +async fn request_release(app: tauri::AppHandle) -> Result { + let token = auth::load_session_token().ok_or("Nicht eingeloggt")?; + let api = Api::new(&backend_url(&app)); + api.request_release(&token, &device::device_id()).await?; + Ok(build_state(&app).await) +} + +#[tauri::command] +async fn cancel_release(app: tauri::AppHandle) -> Result { + let token = auth::load_session_token().ok_or("Nicht eingeloggt")?; + let api = Api::new(&backend_url(&app)); + api.cancel_release(&token, &device::device_id()).await?; + Ok(build_state(&app).await) +} + +/// Logout entfernt nur die Session — Schutz + Service bleiben aktiv +/// (Deaktivierung geht ausschließlich über den 24h-Release-Flow). +#[tauri::command] +async fn logout(app: tauri::AppHandle) -> Result { + auth::clear_all(); + Ok(build_state(&app).await) +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .invoke_handler(tauri::generate_handler![ + get_state, + pair_and_register, + activate_protection, + request_release, + cancel_release, + logout, + ]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} + diff --git a/apps/rebreak-magic-win/src-tauri/src/main.rs b/apps/rebreak-magic-win/src-tauri/src/main.rs new file mode 100644 index 0000000..64c6f02 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/src/main.rs @@ -0,0 +1,6 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + rebreak_magic_win_lib::run() +} diff --git a/apps/rebreak-magic-win/src-tauri/src/setup.rs b/apps/rebreak-magic-win/src-tauri/src/setup.rs new file mode 100644 index 0000000..183af98 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/src/setup.rs @@ -0,0 +1,95 @@ +//! Elevated One-Shot-Setup: EIN UAC-Prompt erledigt alles — +//! DoH-Konfiguration, ProgramData-State, Tamper-Service-Installation. +//! Danach läuft alles silent (Service als SYSTEM, Deaktivierung server-gesteuert). + +use protection_core::{apply_script, ProtectionState, SERVICE_NAME}; +use std::net::ToSocketAddrs; +use std::path::PathBuf; + +use protection_core::{ps_run, DOH_FALLBACK_IP, DOH_HOST}; + +/// Löst die IPv4 des DoH-Hosts auf (solange DNS noch normal funktioniert). +/// Fallback auf die bekannte Hetzner-IP wenn Resolve fehlschlägt. +pub fn resolve_doh_ip() -> String { + if let Ok(addrs) = format!("{DOH_HOST}:443").to_socket_addrs() { + for addr in addrs { + if let std::net::SocketAddr::V4(v4) = addr { + return v4.ip().to_string(); + } + } + } + DOH_FALLBACK_IP.to_string() +} + +/// Pfad des Tamper-Service-Binaries (Tauri-Sidecar, liegt neben der Haupt-Exe). +pub fn service_exe_path() -> Result { + let exe = std::env::current_exe().map_err(|e| e.to_string())?; + let dir = exe + .parent() + .ok_or_else(|| "Exe-Verzeichnis nicht ermittelbar".to_string())?; + Ok(dir.join("rebreak-protection-service.exe")) +} + +/// Baut das komplette elevated Setup-Script: +/// 1. DoH anwenden 2. State nach %ProgramData%\ReBreak 3. Service installieren+starten +pub fn build_setup_script(state: &ProtectionState, service_exe: &str) -> String { + let mut script = String::new(); + + script.push_str(&apply_script(&state.server_ip, &state.doh_template)); + + let state_dir = protection_core::state_dir(); + let state_path = protection_core::state_path(); + let json = serde_json::to_string_pretty(state).unwrap_or_default(); + + script.push_str(&format!( + r#" +# Persistenter State für den Tamper-Service (SYSTEM liest das beim Polling) +New-Item -ItemType Directory -Force -Path '{state_dir}' | Out-Null +@' +{json} +'@ | Set-Content -Path '{state_path}' -Encoding UTF8 + +# Tamper-Protection-Service als SYSTEM installieren (idempotent: alte Instanz weg) +sc.exe stop {SERVICE_NAME} 2>$null | Out-Null +sc.exe delete {SERVICE_NAME} 2>$null | Out-Null +sc.exe create {SERVICE_NAME} binPath= '"{service_exe}"' start= auto obj= LocalSystem DisplayName= "ReBreak Protection" | Out-Null +sc.exe description {SERVICE_NAME} "ReBreak DNS-Schutz — Tamper-Monitor (alle 5 Minuten)" | Out-Null +sc.exe failure {SERVICE_NAME} reset= 86400 actions= restart/60000/restart/60000/restart/60000 | Out-Null +sc.exe start {SERVICE_NAME} | Out-Null + +exit 0 +"#, + state_dir = state_dir.display(), + state_path = state_path.display(), + )); + + script +} + +/// Schreibt das Script als Temp-.ps1 und startet es elevated (UAC) mit -Wait. +/// Gibt Err zurück wenn der User den UAC-Prompt abbricht oder das Script failt. +pub fn run_elevated(script: &str) -> Result<(), String> { + let tmp = std::env::temp_dir().join(format!( + "rebreak-setup-{}.ps1", + std::process::id() + )); + std::fs::write(&tmp, script).map_err(|e| format!("Temp-Script: {e}"))?; + + // Outer-PS startet Inner-PS elevated; -Wait + -PassThru für Exit-Code + let outer = format!( + r#"$p = Start-Process powershell.exe -Verb RunAs -Wait -PassThru -WindowStyle Hidden -ArgumentList @('-NonInteractive','-NoProfile','-ExecutionPolicy','Bypass','-File','{}') +exit $p.ExitCode"#, + tmp.display() + ); + + let result = ps_run(&outer); + let _ = std::fs::remove_file(&tmp); + + match result { + Ok(_) => Ok(()), + Err(e) if e.contains("canceled") || e.contains("abgebrochen") => { + Err("Administrator-Bestätigung wurde abgebrochen.".into()) + } + Err(e) => Err(format!("Setup fehlgeschlagen: {e}")), + } +} diff --git a/apps/rebreak-magic-win/src-tauri/tauri.conf.json b/apps/rebreak-magic-win/src-tauri/tauri.conf.json new file mode 100644 index 0000000..b323732 --- /dev/null +++ b/apps/rebreak-magic-win/src-tauri/tauri.conf.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "productName": "ReBreak Magic", + "version": "0.1.0", + "identifier": "org.rebreak.magic", + "build": { + "beforeDevCommand": "pnpm dev", + "devUrl": "http://localhost:1420", + "beforeBuildCommand": "pnpm build", + "frontendDist": "../dist" + }, + "app": { + "windows": [ + { + "title": "ReBreak Magic", + "width": 780, + "height": 600, + "minWidth": 720, + "minHeight": 540, + "center": true, + "resizable": true + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": ["nsis"], + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.ico", + "icons/icon.png" + ], + "externalBin": ["binaries/rebreak-protection-service"], + "windows": { + "nsis": { + "installMode": "perMachine", + "languages": ["German", "English"] + } + } + } +} diff --git a/apps/rebreak-magic-win/src/App.tsx b/apps/rebreak-magic-win/src/App.tsx new file mode 100644 index 0000000..0a06847 --- /dev/null +++ b/apps/rebreak-magic-win/src/App.tsx @@ -0,0 +1,49 @@ +import { useCallback, useEffect, useState } from "react"; +import { getState, UiState } from "./lib/ipc"; +import LoginView from "./views/LoginView"; +import HubView from "./views/HubView"; + +export default function App() { + const [state, setState] = useState(null); + const [loadError, setLoadError] = useState(null); + + const refresh = useCallback(async () => { + try { + setState(await getState()); + setLoadError(null); + } catch (e) { + setLoadError(String(e)); + } + }, []); + + useEffect(() => { + refresh(); + // Periodischer Refresh: spiegelt Server-State (z.B. Release durch Cron) + const id = setInterval(refresh, 60_000); + return () => clearInterval(id); + }, [refresh]); + + if (!state) { + return ( +

+
+ {loadError ?

{loadError}

:
} +
+
+ ); + } + + return ( +
+ {state.loggedIn ? ( + + ) : ( + + )} +
+ ReBreak Magic für Windows + {state.hostname} +
+
+ ); +} diff --git a/apps/rebreak-magic-win/src/assets/app-icon.png b/apps/rebreak-magic-win/src/assets/app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ab43b129cc2805afa3fff8d0be20c4c1b992957f GIT binary patch literal 6880 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 invoke("get_state"); +export const pairAndRegister = (code: string) => + invoke("pair_and_register", { code }); +export const activateProtection = () => invoke("activate_protection"); +export const requestRelease = () => invoke("request_release"); +export const cancelRelease = () => invoke("cancel_release"); +export const logout = () => invoke("logout"); diff --git a/apps/rebreak-magic-win/src/main.tsx b/apps/rebreak-magic-win/src/main.tsx new file mode 100644 index 0000000..f3bd665 --- /dev/null +++ b/apps/rebreak-magic-win/src/main.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App"; +import "@fontsource/nunito/400.css"; +import "@fontsource/nunito/600.css"; +import "@fontsource/nunito/700.css"; +import "@fontsource/nunito/800.css"; +import "./styles.css"; + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + , +); diff --git a/apps/rebreak-magic-win/src/styles.css b/apps/rebreak-magic-win/src/styles.css new file mode 100644 index 0000000..35f6b16 --- /dev/null +++ b/apps/rebreak-magic-win/src/styles.css @@ -0,0 +1,308 @@ +/* ReBreak Magic — Design-Tokens analog rebreak-magic-mac + rebreak-native */ +:root { + --accent: #2e7fd4; /* AccentColor der Mac-App (0.180/0.498/0.831) */ + --accent-soft: rgba(46, 127, 212, 0.08); + --navy: #1f3a5c; /* Wordmark-Navy aus dem App-Icon */ + --bg: #f5f5f7; /* windowBackgroundColor */ + --card: #ffffff; /* controlBackgroundColor */ + --text: #1c1c1e; + --text-secondary: #6e6e73; + --text-tertiary: #aeaeb2; + --green: #2e9e5b; + --red: #d4452e; + --orange: #d4882e; + --border: rgba(0, 0, 0, 0.08); + --radius: 12px; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, +body, +#root { + height: 100%; +} + +body { + font-family: "Nunito", "Segoe UI", system-ui, sans-serif; + background: var(--bg); + color: var(--text); + font-size: 14px; + -webkit-font-smoothing: antialiased; + user-select: none; + cursor: default; +} + +.app { + height: 100%; + display: flex; + flex-direction: column; +} + +/* ---------- Header (Hub) ---------- */ +.header { + display: flex; + align-items: center; + gap: 10px; + padding: 14px 20px; + background: var(--card); + border-bottom: 1px solid var(--border); +} + +.header img { + width: 28px; + height: 28px; +} + +.header .wordmark { + font-size: 17px; + font-weight: 800; + color: var(--navy); +} + +.header .spacer { + flex: 1; +} + +.plan-badge { + font-size: 11px; + font-weight: 800; + text-transform: uppercase; + letter-spacing: 0.4px; + color: var(--accent); + background: var(--accent-soft); + border-radius: 6px; + padding: 3px 8px; +} + +.nickname { + font-size: 13px; + font-weight: 600; + color: var(--text-secondary); +} + +/* ---------- Layout ---------- */ +.content { + flex: 1; + overflow-y: auto; + padding: 24px; + display: flex; + flex-direction: column; + gap: 16px; + align-items: stretch; +} + +.card { + background: var(--card); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 20px; +} + +.card h2 { + font-size: 15px; + font-weight: 700; + margin-bottom: 4px; +} + +.card .sub { + font-size: 13px; + color: var(--text-secondary); + line-height: 1.45; +} + +/* ---------- Status ---------- */ +.status-row { + display: flex; + align-items: center; + gap: 14px; +} + +.status-dot { + width: 12px; + height: 12px; + border-radius: 50%; + flex-shrink: 0; +} + +.status-dot.on { + background: var(--green); + box-shadow: 0 0 0 4px rgba(46, 158, 91, 0.15); +} + +.status-dot.off { + background: var(--text-tertiary); +} + +.status-dot.cooldown { + background: var(--orange); + box-shadow: 0 0 0 4px rgba(212, 136, 46, 0.15); +} + +/* ---------- Buttons ---------- */ +button { + font-family: inherit; + font-size: 14px; + font-weight: 700; + border: none; + border-radius: 9px; + padding: 10px 18px; + cursor: pointer; + transition: opacity 0.12s ease; +} + +button:hover { + opacity: 0.88; +} + +button:disabled { + opacity: 0.45; + cursor: default; +} + +.btn-primary { + background: var(--accent); + color: #fff; +} + +.btn-secondary { + background: var(--accent-soft); + color: var(--accent); +} + +.btn-danger-quiet { + background: transparent; + color: var(--red); + font-weight: 600; +} + +.btn-link { + background: transparent; + color: var(--text-secondary); + font-weight: 600; + font-size: 13px; + padding: 6px 10px; +} + +/* ---------- Login ---------- */ +.login { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 14px; + padding: 32px; + text-align: center; +} + +.login img { + width: 88px; + height: 88px; + margin-bottom: 4px; +} + +.login h1 { + font-size: 26px; + font-weight: 800; + color: var(--navy); +} + +.login .lead { + font-size: 14px; + color: var(--text-secondary); + max-width: 400px; + line-height: 1.5; +} + +.code-input { + font-family: inherit; + font-size: 28px; + font-weight: 800; + letter-spacing: 14px; + text-align: center; + text-indent: 14px; /* gleicht letter-spacing-Versatz aus */ + width: 260px; + padding: 12px 0; + border: 1.5px solid var(--border); + border-radius: var(--radius); + background: var(--card); + color: var(--text); + outline: none; +} + +.code-input:focus { + border-color: var(--accent); +} + +.hint { + font-size: 12px; + color: var(--text-tertiary); + max-width: 380px; + line-height: 1.5; +} + +.error { + font-size: 13px; + font-weight: 600; + color: var(--red); + max-width: 400px; +} + +/* ---------- Countdown ---------- */ +.countdown { + font-size: 34px; + font-weight: 800; + font-variant-numeric: tabular-nums; + color: var(--orange); + letter-spacing: 1px; +} + +.row { + display: flex; + align-items: center; + gap: 10px; +} + +.row.end { + justify-content: flex-end; +} + +.grow { + flex: 1; +} + +/* ---------- Footer ---------- */ +.footer { + padding: 10px 20px; + font-size: 11px; + color: var(--text-tertiary); + display: flex; + justify-content: space-between; +} + +.spin { + width: 22px; + height: 22px; + border: 2.5px solid var(--accent-soft); + border-top-color: var(--accent); + border-radius: 50%; + animation: spin 0.7s linear infinite; +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +.center-fill { + flex: 1; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/apps/rebreak-magic-win/src/views/HubView.tsx b/apps/rebreak-magic-win/src/views/HubView.tsx new file mode 100644 index 0000000..22d8699 --- /dev/null +++ b/apps/rebreak-magic-win/src/views/HubView.tsx @@ -0,0 +1,161 @@ +import { useEffect, useMemo, useState } from "react"; +import { + activateProtection, + cancelRelease, + logout, + requestRelease, + UiState, +} from "../lib/ipc"; +import appIcon from "../assets/app-icon.png"; + +interface Props { + state: UiState; + onState: (s: UiState) => void; +} + +function useCountdown(targetIso: string | null): string | null { + const target = useMemo( + () => (targetIso ? new Date(targetIso).getTime() : null), + [targetIso], + ); + const [now, setNow] = useState(Date.now()); + + useEffect(() => { + if (target === null) return; + const id = setInterval(() => setNow(Date.now()), 1000); + return () => clearInterval(id); + }, [target]); + + if (target === null) return null; + const ms = Math.max(0, target - now); + const h = Math.floor(ms / 3_600_000); + const m = Math.floor((ms % 3_600_000) / 60_000); + const s = Math.floor((ms % 60_000) / 1000); + const pad = (n: number) => String(n).padStart(2, "0"); + return `${pad(h)}:${pad(m)}:${pad(s)}`; +} + +export default function HubView({ state, onState }: Props) { + const [busy, setBusy] = useState(null); + const [error, setError] = useState(null); + const countdown = useCountdown(state.releaseAvailableAt); + + const run = async (key: string, fn: () => Promise) => { + setBusy(key); + setError(null); + try { + onState(await fn()); + } catch (e) { + setError(String(e)); + } finally { + setBusy(null); + } + }; + + const cooldownActive = state.releaseRequestedAt !== null; + + return ( + <> +
+ + ReBreak Magic +
+ {state.plan && {state.plan}} + {state.nickname && {state.nickname}} +
+ +
+ {/* ---- Schutz-Status ---- */} +
+
+
+
+

+ {cooldownActive + ? "Schutz wird aufgehoben" + : state.protectionApplied + ? "Schutz aktiv" + : "Schutz nicht aktiv"} +

+

+ {cooldownActive + ? "Der 24-Stunden-Cooldown läuft. Bis dahin bleibt der Schutz vollständig aktiv." + : state.protectionApplied + ? "Glücksspielseiten werden auf diesem PC systemweit über ReBreak-DNS blockiert." + : "Aktiviere den DNS-Schutz für diesen PC. Windows fragt dabei einmalig nach Administrator-Rechten."} +

+
+ {!state.protectionApplied && !cooldownActive && ( + + )} +
+
+ + {/* ---- Cooldown ---- */} + {cooldownActive && ( +
+

Verbleibende Zeit

+

+ Danach hebt ReBreak den Schutz auf diesem PC automatisch auf. + Du kannst es dir jederzeit anders überlegen. +

+
+ {countdown ?? "—"} +
+ +
+
+ )} + + {/* ---- Gerät ---- */} +
+

Dieses Gerät

+

+ {state.hostname} + {state.registered + ? " — mit deinem ReBreak-Konto verbunden." + : " — noch nicht registriert."} +

+
+ + {error &&

{error}

} + + {/* ---- Aktionen ---- */} +
+ {state.protectionApplied && !cooldownActive && ( + + )} + +
+
+ + ); +} diff --git a/apps/rebreak-magic-win/src/views/LoginView.tsx b/apps/rebreak-magic-win/src/views/LoginView.tsx new file mode 100644 index 0000000..9c3fffb --- /dev/null +++ b/apps/rebreak-magic-win/src/views/LoginView.tsx @@ -0,0 +1,70 @@ +import { useState } from "react"; +import { pairAndRegister, UiState } from "../lib/ipc"; +import appIcon from "../assets/app-icon.png"; + +interface Props { + onState: (s: UiState) => void; +} + +/** + * Pairing-Flow analog zur Mac-App: 6-stelliger Code aus der ReBreak-App + * (Geräte → "Computer koppeln"), kein Passwort, kein Account-Formular. + */ +export default function LoginView({ onState }: Props) { + const [code, setCode] = useState(""); + const [busy, setBusy] = useState(false); + const [error, setError] = useState(null); + + const submit = async () => { + if (code.length !== 6 || busy) return; + setBusy(true); + setError(null); + try { + onState(await pairAndRegister(code)); + } catch (e) { + setError(String(e)); + setCode(""); + } finally { + setBusy(false); + } + }; + + return ( +
+ +

ReBreak Magic

+

+ Schütze diesen Windows-PC vor Glücksspielseiten. Öffne die + ReBreak-App auf deinem Handy und erstelle unter{" "} + Geräte → Computer koppeln einen Kopplungs-Code. +

+ + setCode(e.target.value.replace(/\D/g, "").slice(0, 6))} + onKeyDown={(e) => e.key === "Enter" && submit()} + /> + + {error &&

{error}

} + + + +

+ Der Code ist 10 Minuten gültig und kann nur einmal verwendet werden. +

+
+ ); +} diff --git a/apps/rebreak-magic-win/src/vite-env.d.ts b/apps/rebreak-magic-win/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/apps/rebreak-magic-win/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/rebreak-magic-win/tsconfig.json b/apps/rebreak-magic-win/tsconfig.json new file mode 100644 index 0000000..ead86d8 --- /dev/null +++ b/apps/rebreak-magic-win/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ES2021", + "useDefineForClassFields": true, + "lib": ["ES2021", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/apps/rebreak-magic-win/vite.config.ts b/apps/rebreak-magic-win/vite.config.ts new file mode 100644 index 0000000..a753367 --- /dev/null +++ b/apps/rebreak-magic-win/vite.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +// Tauri-Dev-Setup: fester Port, kein clearScreen (Rust-Logs sichtbar lassen) +export default defineConfig({ + plugins: [react()], + clearScreen: false, + server: { + port: 1420, + strictPort: true, + }, + build: { + // WebView2 ist Chromium — moderne Targets ok + target: "chrome105", + outDir: "dist", + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61bb60d..590bba1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -121,6 +121,40 @@ importers: specifier: ^5.9.3 version: 5.9.3 + apps/rebreak-magic-win: + dependencies: + '@fontsource/nunito': + specifier: ^5.1.0 + version: 5.2.7 + '@tauri-apps/api': + specifier: ^2.2.0 + version: 2.11.0 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@tauri-apps/cli': + specifier: ^2.2.0 + version: 2.11.2 + '@types/react': + specifier: ^18.3.12 + version: 18.3.31 + '@types/react-dom': + specifier: ^18.3.1 + version: 18.3.7(@types/react@18.3.31) + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.7.0(vite@6.4.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) + typescript: + specifier: ^5.7.2 + version: 5.9.3 + vite: + specifier: ^6.0.7 + version: 6.4.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) + apps/rebreak-native: dependencies: '@config-plugins/react-native-callkeep': @@ -236,7 +270,7 @@ importers: version: 0.32.17(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0)(typescript@5.8.3) expo-router: specifier: ~6.0.23 - version: 6.0.23(@expo/metro-runtime@6.1.2)(@types/react@19.2.14)(expo-constants@18.0.13)(expo-linking@8.0.12)(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.5.1(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0) + version: 6.0.23(@expo/metro-runtime@6.1.2)(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(expo-constants@18.0.13)(expo-linking@8.0.12)(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.5.1(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0) expo-speech: specifier: ~14.0.8 version: 14.0.8(expo@54.0.34) @@ -351,7 +385,7 @@ importers: version: 7.8.0 '@prisma/client': specifier: ^7.2.0 - version: 7.8.0(prisma@7.8.0(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3))(typescript@5.9.3) + version: 7.8.0(prisma@7.8.0(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3))(typescript@5.9.3) '@supabase/supabase-js': specifier: ^2.39.7 version: 2.105.3 @@ -403,7 +437,7 @@ importers: version: 2.13.4(@electric-sql/pglite@0.4.1)(mysql2@3.15.3)(oxc-parser@0.132.0) prisma: specifier: ^7.2.0 - version: 7.8.0(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3) + version: 7.8.0(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1813,6 +1847,9 @@ packages: '@floating-ui/vue@1.1.11': resolution: {integrity: sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw==} + '@fontsource/nunito@5.2.7': + resolution: {integrity: sha512-pmtBq0H9ex9nk+RtJYEJOD9pag393iHETnl/PVKleF4i06cd0ttngK5ZCTgYb5eOqR3Xdlrjtev8m7bmgYprew==} + '@hono/node-server@1.19.11': resolution: {integrity: sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==} engines: {node: '>=18.14.1'} @@ -3263,6 +3300,9 @@ packages: '@rolldown/pluginutils@1.0.0': resolution: {integrity: sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==} + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + '@rolldown/pluginutils@1.0.0-rc.13': resolution: {integrity: sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA==} @@ -3658,6 +3698,80 @@ packages: peerDependencies: vue: ^2.7.0 || ^3.0.0 + '@tauri-apps/api@2.11.0': + resolution: {integrity: sha512-7CinYODhky9lmO23xHnUFv0Xt43fbtWMyxZcLcRBlFkcgXKuEirBvHpmtJ89YMhyeGcq20Wuc47Fa4XjyniywA==} + + '@tauri-apps/cli-darwin-arm64@2.11.2': + resolution: {integrity: sha512-+4UZzLt+eOAEQCwgd+TqKgyUJMrvx+BgdXLLaqJYmPqzP+nE6YZr/hY6CWLYGQb8jFn99jEkmC6uA3tNvamA1w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tauri-apps/cli-darwin-x64@2.11.2': + resolution: {integrity: sha512-VjYYtZUPqDMLutSfJEyxFE3Bz+DPi7c8wC3imckgvciLDZLq4qwKJxBicg0BXGhXjJsl8vKWgWRFNMPELQ+Xyg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tauri-apps/cli-linux-arm-gnueabihf@2.11.2': + resolution: {integrity: sha512-yMemD6f4i95AQriS8EazyOFzbE34yjnP16i3IOzpHGQvBoy2DjypFMFBq0NtPuITURv/cOGguRtHR5d79/9CSA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tauri-apps/cli-linux-arm64-gnu@2.11.2': + resolution: {integrity: sha512-cgI91D2wL8GSgoWwZXDqt+DwnuZCP2/bz03QAE4TrhgAKIsrB4hX26W/H1EONPUUNkqrsgeCD0wU6pcNjV/5kw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tauri-apps/cli-linux-arm64-musl@2.11.2': + resolution: {integrity: sha512-X1rm0BERqAAggtYTESSgXrS3sz4Sb/OiPiz54UqISlXW+GkR3vNIGnsy/lejNmoXGVqri3Q53BCfQiclOIyRPw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tauri-apps/cli-linux-riscv64-gnu@2.11.2': + resolution: {integrity: sha512-usbMLJbT3KtkOrBMDVeGYNM35aTHXx38SJSzTMSqqjeUIOQ+iVPjb2yAGNAE+KqmBbAx4FOFIyMeKXx2M/JKGQ==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@tauri-apps/cli-linux-x64-gnu@2.11.2': + resolution: {integrity: sha512-Ru4gwJKPG0ctVGchRGpRup4Y4lW2SSfFnrbQcyHhCliKy4g8Qz97TrUgCur4CbWyAgKxvGh3SjrkA0LDYzDGiw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tauri-apps/cli-linux-x64-musl@2.11.2': + resolution: {integrity: sha512-eUm7T6clN1MMmNSRQ9gaWsQdyehQx2Gmn5hht/QUlqZQI/qcP2OJK5dnaxqwFzCr2HdsEo9ydxaqcS1oJzMvUw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tauri-apps/cli-win32-arm64-msvc@2.11.2': + resolution: {integrity: sha512-HeeZW80jU+gVTOEX4X/hC6NVSAdDVXajwP5fxIZ/3z9WvUC7qrudX2GMTilYq6Dg0e0sk0XgsAJD1hZ5wPBXUA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tauri-apps/cli-win32-ia32-msvc@2.11.2': + resolution: {integrity: sha512-YhjQNZcXfbkCLyazSv1nPnJ9iRFE1wm6kc51FDbU10/Dk09io+6PAGMLjkxnX2GdM0qMnDmTjstY8mTDVvtKeA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@tauri-apps/cli-win32-x64-msvc@2.11.2': + resolution: {integrity: sha512-d2JchlFIpZevZVReyqhQOekJmb1UH3rhZ5VX6sH3ty9ETE0TKQavpihvoScUXfKKpW6HZC0MrFGRU0ZtD+w3gA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tauri-apps/cli@2.11.2': + resolution: {integrity: sha512-bk3HemqvGRoy+5D/dVMUQHKMYLglD0jVnMm/0iGMH6ufZ+p8r14m6BpIixwij3PBvZdvORUp1YifTD8QxVZ1Nw==} + engines: {node: '>= 10'} + hasBin: true + '@tiptap/core@3.23.1': resolution: {integrity: sha512-8YvSGiJTeU5wPuGiYIIYgyiyaaT1CAx+kJL0bju0w871OvbJJj0T/ywhcmxGXW6pOal2T8X2xt9ZqE+vib0VJw==} peerDependencies: @@ -3931,6 +4045,17 @@ packages: '@types/pg@8.20.0': resolution: {integrity: sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==} + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.31': + resolution: {integrity: sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==} + '@types/react@19.2.14': resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} @@ -4025,6 +4150,12 @@ packages: peerDependencies: vite: '*' + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@vitejs/plugin-vue-jsx@5.1.5': resolution: {integrity: sha512-jIAsvHOEtWpslLOI2MeElGFxH7M8pM83BU/Tor4RLyiwH0FM4nUW3xdvbw20EeU9wc5IspQwMq225K3CMnJEpA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -7997,6 +8128,11 @@ packages: react-devtools-core@6.1.5: resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + react-dom@19.1.0: resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} peerDependencies: @@ -8167,6 +8303,10 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -8197,6 +8337,10 @@ packages: '@types/react': optional: true + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + react@19.1.0: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} @@ -8412,6 +8556,9 @@ packages: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} @@ -9430,6 +9577,46 @@ packages: terser: optional: true + vite@6.4.3: + resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vite@7.3.3: resolution: {integrity: sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -10947,7 +11134,7 @@ snapshots: wrap-ansi: 7.0.0 ws: 8.20.0 optionalDependencies: - expo-router: 6.0.23(@expo/metro-runtime@6.1.2)(@types/react@19.2.14)(expo-constants@18.0.13)(expo-linking@8.0.12)(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.5.1(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0) + expo-router: 6.0.23(@expo/metro-runtime@6.1.2)(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(expo-constants@18.0.13)(expo-linking@8.0.12)(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.5.1(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0) react-native: 0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0) transitivePeerDependencies: - bufferutil @@ -11221,6 +11408,8 @@ snapshots: - '@vue/composition-api' - vue + '@fontsource/nunito@5.2.7': {} + '@hono/node-server@1.19.11(hono@4.12.17)': dependencies: hono: 4.12.17 @@ -12643,11 +12832,11 @@ snapshots: '@prisma/client-runtime-utils@7.8.0': {} - '@prisma/client@7.8.0(prisma@7.8.0(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3))(typescript@5.9.3)': + '@prisma/client@7.8.0(prisma@7.8.0(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3))(typescript@5.9.3)': dependencies: '@prisma/client-runtime-utils': 7.8.0 optionalDependencies: - prisma: 7.8.0(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3) + prisma: 7.8.0(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3) typescript: 5.9.3 '@prisma/config@7.8.0(magicast@0.5.2)': @@ -12721,9 +12910,9 @@ snapshots: env-paths: 3.0.0 proper-lockfile: 4.1.2 - '@prisma/studio-core@0.27.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@prisma/studio-core@0.27.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-toggle': 1.1.10(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/react': 19.2.14 chart.js: 4.5.1 react: 19.1.0 @@ -12739,16 +12928,17 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-collection@1.1.7(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.1.0)': dependencies: @@ -12762,18 +12952,18 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-dialog@1.1.15(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.3 '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) aria-hidden: 1.2.6 @@ -12782,6 +12972,7 @@ snapshots: react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.1.0)': dependencies: @@ -12789,17 +12980,18 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.3 '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.1.0)': dependencies: @@ -12807,15 +12999,16 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-focus-scope@1.1.7(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.1.0)': dependencies: @@ -12824,16 +13017,17 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-portal@1.1.9(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) - '@radix-ui/react-presence@1.1.5(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) @@ -12841,30 +13035,33 @@ snapshots: react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) - '@radix-ui/react-primitive@2.1.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) - '@radix-ui/react-roving-focus@1.1.11(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) '@radix-ui/react-slot@1.2.0(@types/react@19.2.14)(react@19.1.0)': dependencies: @@ -12880,30 +13077,32 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-tabs@1.1.13(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-tabs@1.1.13(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.3 '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) - '@radix-ui/react-toggle@1.1.10(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toggle@1.1.10(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 19.2.14 + '@types/react-dom': 18.3.7(@types/react@19.2.14) '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.1.0)': dependencies: @@ -13150,6 +13349,8 @@ snapshots: '@rolldown/pluginutils@1.0.0': {} + '@rolldown/pluginutils@1.0.0-beta.27': {} + '@rolldown/pluginutils@1.0.0-rc.13': {} '@rollup/plugin-alias@6.0.0(rollup@4.60.3)': @@ -13473,6 +13674,55 @@ snapshots: '@tanstack/virtual-core': 3.14.0 vue: 3.5.34(typescript@5.9.3) + '@tauri-apps/api@2.11.0': {} + + '@tauri-apps/cli-darwin-arm64@2.11.2': + optional: true + + '@tauri-apps/cli-darwin-x64@2.11.2': + optional: true + + '@tauri-apps/cli-linux-arm-gnueabihf@2.11.2': + optional: true + + '@tauri-apps/cli-linux-arm64-gnu@2.11.2': + optional: true + + '@tauri-apps/cli-linux-arm64-musl@2.11.2': + optional: true + + '@tauri-apps/cli-linux-riscv64-gnu@2.11.2': + optional: true + + '@tauri-apps/cli-linux-x64-gnu@2.11.2': + optional: true + + '@tauri-apps/cli-linux-x64-musl@2.11.2': + optional: true + + '@tauri-apps/cli-win32-arm64-msvc@2.11.2': + optional: true + + '@tauri-apps/cli-win32-ia32-msvc@2.11.2': + optional: true + + '@tauri-apps/cli-win32-x64-msvc@2.11.2': + optional: true + + '@tauri-apps/cli@2.11.2': + optionalDependencies: + '@tauri-apps/cli-darwin-arm64': 2.11.2 + '@tauri-apps/cli-darwin-x64': 2.11.2 + '@tauri-apps/cli-linux-arm-gnueabihf': 2.11.2 + '@tauri-apps/cli-linux-arm64-gnu': 2.11.2 + '@tauri-apps/cli-linux-arm64-musl': 2.11.2 + '@tauri-apps/cli-linux-riscv64-gnu': 2.11.2 + '@tauri-apps/cli-linux-x64-gnu': 2.11.2 + '@tauri-apps/cli-linux-x64-musl': 2.11.2 + '@tauri-apps/cli-win32-arm64-msvc': 2.11.2 + '@tauri-apps/cli-win32-ia32-msvc': 2.11.2 + '@tauri-apps/cli-win32-x64-msvc': 2.11.2 + '@tiptap/core@3.23.1(@tiptap/pm@3.23.1)': dependencies: '@tiptap/pm': 3.23.1 @@ -13769,6 +14019,22 @@ snapshots: pg-protocol: 1.13.0 pg-types: 2.2.0 + '@types/prop-types@15.7.15': {} + + '@types/react-dom@18.3.7(@types/react@18.3.31)': + dependencies: + '@types/react': 18.3.31 + + '@types/react-dom@18.3.7(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + optional: true + + '@types/react@18.3.31': + dependencies: + '@types/prop-types': 15.7.15 + csstype: 3.2.3 + '@types/react@19.2.14': dependencies: csstype: 3.2.3 @@ -13987,6 +14253,18 @@ snapshots: - uploadthing - utf-8-validate + '@vitejs/plugin-react@4.7.0(vite@6.4.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.4.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) + transitivePeerDependencies: + - supports-color + '@vitejs/plugin-vue-jsx@5.1.5(vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.34(typescript@5.9.3))': dependencies: '@babel/core': 7.29.0 @@ -15943,12 +16221,12 @@ snapshots: - supports-color - typescript - expo-router@6.0.23(@expo/metro-runtime@6.1.2)(@types/react@19.2.14)(expo-constants@18.0.13)(expo-linking@8.0.12)(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.5.1(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0): + expo-router@6.0.23(@expo/metro-runtime@6.1.2)(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(expo-constants@18.0.13)(expo-linking@8.0.12)(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.5.1(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0): dependencies: '@expo/metro-runtime': 6.1.2(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0) '@expo/schema-utils': 0.1.8 '@radix-ui/react-slot': 1.2.0(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-tabs': 1.1.13(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@react-navigation/bottom-tabs': 7.15.11(@react-navigation/native@7.2.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0) '@react-navigation/native': 7.2.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0) '@react-navigation/native-stack': 7.14.12(@react-navigation/native@7.2.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0) @@ -15974,7 +16252,7 @@ snapshots: sf-symbols-typescript: 2.2.0 shallowequal: 1.1.0 use-latest-callback: 0.2.6(react@19.1.0) - vaul: 1.1.2(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + vaul: 1.1.2(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) optionalDependencies: react-dom: 19.1.0(react@19.1.0) react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0) @@ -18648,12 +18926,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - prisma@7.8.0(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3): + prisma@7.8.0(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(magicast@0.5.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3): dependencies: '@prisma/config': 7.8.0(magicast@0.5.2) '@prisma/dev': 0.24.3(typescript@5.9.3) '@prisma/engines': 7.8.0 - '@prisma/studio-core': 0.27.3(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@prisma/studio-core': 0.27.3(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) mysql2: 3.15.3 postgres: 3.4.7 optionalDependencies: @@ -18837,6 +19115,12 @@ snapshots: - bufferutil - utf-8-validate + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + react-dom@19.1.0(react@19.1.0): dependencies: react: 19.1.0 @@ -19049,6 +19333,8 @@ snapshots: react-refresh@0.14.2: {} + react-refresh@0.17.0: {} + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.1.0): dependencies: react: 19.1.0 @@ -19076,6 +19362,10 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + react@19.1.0: {} read-cache@1.0.0: @@ -19307,6 +19597,10 @@ snapshots: sax@1.6.0: {} + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + scheduler@0.26.0: {} scule@1.3.0: {} @@ -20274,9 +20568,9 @@ snapshots: transitivePeerDependencies: - '@vue/composition-api' - vaul@1.1.2(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + vaul@1.1.2(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@radix-ui/react-dialog': 1.1.15(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: @@ -20323,7 +20617,7 @@ snapshots: debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) + vite: 6.4.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) transitivePeerDependencies: - '@types/node' - jiti @@ -20415,7 +20709,7 @@ snapshots: vite@5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.46.2): dependencies: esbuild: 0.21.5 - postcss: 8.5.14 + postcss: 8.5.15 rollup: 4.60.3 optionalDependencies: '@types/node': 22.19.17 @@ -20423,12 +20717,28 @@ snapshots: lightningcss: 1.32.0 terser: 5.46.2 + vite@6.4.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.60.3 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 22.19.17 + fsevents: 2.3.3 + jiti: 2.7.0 + lightningcss: 1.32.0 + terser: 5.46.2 + yaml: 2.8.4 + vite@7.3.3(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.14 + postcss: 8.5.15 rollup: 4.60.3 tinyglobby: 0.2.16 optionalDependencies: