[package] name = "parking-desktop" version = "0.0.0" description = "Parking System — desktop kiosk shell" edition = "2021" rust-version = "1.77" # Thin Tauri v2 shell. Deliberately holds NO business logic — it loads the # @parking/web SPA and lets it talk to the local Fastify server. Device/auth/ # ledger stay server-side. See wiki/decisions/desktop-shell-tauri.md. [lib] name = "parking_desktop_lib" crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] tauri-build = { version = "2", features = [] } [dependencies] tauri = { version = "2", features = [] } serde_json = "1" # Auto-update: prompt the operator, download a signed update, relaunch. tauri-plugin-updater = "2" tauri-plugin-process = "2" # HTTP client for the SPA's API/WS calls to the local Fastify server. The window # runs at tauri://localhost, which WebKitGTK treats as a secure origin — a plain # http://127.0.0.1:3000 fetch() from inside it is blocked as mixed content (a # long-standing WebKit limitation, not fixable via CSP). Routing through this # plugin sends the request via Tauri's Rust side instead of the webview's own # fetch, sidestepping the browser mixed-content check entirely. tauri-plugin-http = "2" # Same mixed-content problem as above, but for the live-feed WebSocket # (ws://127.0.0.1:3000 from the secure tauri://localhost origin) — HTTP and WS # are separate browser checks, so this needs its own plugin. tauri-plugin-websocket = "2" # Persists the operator-configured backend URL (host:port of the Fastify # server this install talks to) across restarts. Read before any API call — # see apps/web/src/lib/backend-config.ts. tauri-plugin-store = "2" [features] # Used by `tauri dev`/CLI for hot-reload of the Rust side. custom-protocol = ["tauri/custom-protocol"]