All checks were successful
ci / gate (push) Successful in 9m16s
Running the shell for the first time showed a blank white window and no error anywhere: Vite's dev page injects an inline React Refresh preamble, the production CSP forbids inline scripts, and every component module then throws on `$RefreshReg$` before React mounts. `tauri.conf.json` now carries a `devCsp` for the dev server's origin; the production CSP is unchanged. `WALLET_DATA_DIR` relocates wallets, settings and profile overrides together, so a dev run lives in a throwaway directory instead of the real app data; `WALLET_KEYSTORE_DIR` still moves only the wallets, for sharing them with quantus-cli in place. Verified end to end against the local dev node by driving the webview through WebKitGTK's remote inspector (`script/webview-inspect.py`, kept with the reason in CLAUDE.md): the lock screen lists both dev accounts; unlocking crystal_alice shows 99,957.786510548 DEV at block 1832, 100 from final, with the status bar on ws://127.0.0.1:9944 at spec 152; the block number advances on its own; a settings change lands in settings.json; the idle rule locks the UI without a click after the configured minute and the Rust log says so; the Lock button locks; the console shows nothing but Vite connecting. GNOME refuses D-Bus screenshots and ImageMagick captures WebKit's GPU surface as flat grey, so the DOM was the evidence. Refs #25 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ftBXYuba8ARhQeF74oUgW