Files
openclaw/apps/linux/src-tauri/tauri.conf.json
Peter Steinberger b363d5a293 feat(linux): canvas UI via CLI-node + Tauri app IPC bridge (#107633)
* feat(linux): canvas via CLI-node + Tauri app IPC bridge

* refactor: extract gateway helper modules

* build(linux-canvas): register plugin package in lockfile

* fix(linux-canvas): move canvas advertise test out of core, regen docs/protocol/deadcode

* fix(gateway): break node-catalog/registry import cycle via leaf normalize module; add canvas glossary term

* style: oxfmt invoke.ts and runtime.ts after buildNodeEventParams extraction

* fix(linux): load Canvas WebView via dedicated data_directory context

Wry's Linux/WebKitGTK incognito mode discards Tauri's registered
WebContext (wry webkitgtk/mod.rs), so the Canvas window got a fresh
ephemeral context without the openclaw-canvas:// scheme handler — the
bundled A2UI page never committed (stayed about:blank) and every A2UI
command timed out. Use an isolated cache-backed data_directory instead,
which keeps the protocol handler while still isolating Canvas storage
from the dashboard window.

* fix(linux): keep Canvas WebView ephemeral via incognito + data_directory

Autoreview flagged that a dedicated data_directory alone persists Canvas
browser state (cookies, localStorage, IndexedDB, service workers) across
restarts, so an agent that navigates Canvas to a site could leak an
authenticated session into a later session. iOS uses a non-persistent
store; Linux should match.

Add .incognito(true) alongside .data_directory(): the distinct directory
gives Tauri a fresh WebContext key so it still attaches the
openclaw-canvas:// protocol closure, and incognito makes Wry swap in a
fresh *ephemeral* context carrying those protocols. Live-verified on a
Wayland/WebKitGTK box: the bundled page still loads
(location.href=openclaw-canvas://localhost/index.html, openclawA2UI
present, A2UI renders) and the canvas-webview dir holds no persistent
cookie/storage files.
2026-07-14 16:05:14 -07:00

66 lines
1.8 KiB
JSON

{
"$schema": "https://schema.tauri.app/config/2",
"productName": "OpenClaw",
"version": "0.1.0",
"identifier": "ai.openclaw.linux",
"build": {
"frontendDist": "../ui"
},
"app": {
"withGlobalTauri": true,
"windows": [
{
"label": "main",
"title": "OpenClaw",
"url": "index.html",
"width": 1080,
"height": 720,
"minWidth": 720,
"minHeight": 520,
"center": true,
"visible": true
}
],
"security": {
"csp": "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src ipc: http://ipc.localhost",
"capabilities": [
{
"identifier": "local-companion",
"description": "Local setup screens can invoke app commands and receive installer progress.",
"local": true,
"windows": ["main"],
"permissions": [
"allow-bootstrap",
"allow-gateway-action",
"allow-install-cli",
"core:event:allow-listen",
"core:event:allow-unlisten"
]
},
{
"identifier": "canvas-renderer",
"description": "The bundled Canvas renderer can relay A2UI actions.",
"local": true,
"windows": ["canvas"],
"permissions": ["allow-canvas-a2ui-action"]
}
]
}
},
"bundle": {
"active": true,
"category": "Utility",
"shortDescription": "OpenClaw Linux companion",
"longDescription": "Installs OpenClaw, manages the local Gateway service, and hosts the Control UI.",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.png"
],
"resources": {
"../../../scripts/install-cli.sh": "install-cli.sh"
}
}
}