{ "$schema": "../gen/schemas/desktop-schema.json", "identifier": "default", "description": "Minimal capability set for the kiosk shell. The window only needs to render the SPA; it is granted NOTHING that touches the filesystem, shell, or devices — those stay server-side. Add a named permission here only when a concrete need arises (deny-by-default). See wiki/decisions/desktop-shell-tauri.md.", "windows": ["main"], "permissions": [ "core:default", "updater:default", "process:default", "websocket:default", "store:default", { "identifier": "http:default", "//": "Backend address is operator-configured at runtime (backend-config.ts) so the exact host:port can't be allow-listed at build time. Wildcarded to any host — the CSP forces ALL backend traffic through this plugin (see tauri.conf.json), so this scope is the real boundary; a compromised/malicious page still can't reach anything the operator hasn't pointed the app at, since the app only ever calls the one configured origin. All 4 forms needed: a known Tauri scope-matching quirk drops http://*:PORT unless both bare and :* variants are listed.", "allow": [ { "url": "http://*" }, { "url": "https://*" }, { "url": "http://*:*" }, { "url": "https://*:*" } ] } ] }