The UI was previously a Vue 3 SPA served via a Vite dev server on :1420.
This had two problems:
- Building from source required Node, npm, and the Tauri CLI
- Running required starting a Vite dev server alongside the binary
Replace with a single self-contained dist/index.html using vanilla JS
and the Tauri 2 withGlobalTauri IPC global. No build step, no npm, no
dev server — the binary loads the static file directly.
Changes:
- dist/index.html: full Robin UI (chat, events, debug tabs) in ~750 LOC
- Chat tab: streaming LLM responses via robin:chat-token events
- Events tab: live matched system events with severity badges
- Debug tab: migration config, Ollama status probe, notif level picker
- Onboarding form shown on first run (calls complete_onboarding IPC)
- All user/LLM text via textContent/DOM construction, no innerHTML
- Markdown renderer (fenced code, inline code) built from DOM nodes
- tauri.conf.json: add withGlobalTauri: true, remove devUrl and Node hooks
- tauri.conf.json: update CSP to allow inline scripts (desktop app)
- manage.sh: remove Vite dev server auto-start and kill logic
- manage.sh: build/dev now use cargo directly, add bundle command for
full .deb/.rpm/.AppImage (still requires Tauri CLI)
- .gitignore: track dist/index.html, only ignore dist/assets/ (Vite output)
51 lines
1.2 KiB
JSON
51 lines
1.2 KiB
JSON
{
|
|
"$schema": "https://schema.tauri.app/config/2",
|
|
"productName": "Robin",
|
|
"version": "0.1.0",
|
|
"identifier": "tech.circuitforge.robin",
|
|
"build": {
|
|
"frontendDist": "../dist"
|
|
},
|
|
"app": {
|
|
"withGlobalTauri": true,
|
|
"windows": [
|
|
{
|
|
"label": "chat",
|
|
"title": "Robin",
|
|
"width": 420,
|
|
"height": 600,
|
|
"resizable": true,
|
|
"fullscreen": false,
|
|
"visible": false,
|
|
"decorations": true,
|
|
"alwaysOnTop": false,
|
|
"skipTaskbar": true
|
|
}
|
|
],
|
|
"trayIcon": {
|
|
"id": "robin-tray",
|
|
"iconPath": "icons/32x32.png",
|
|
"iconAsTemplate": false,
|
|
"menuOnLeftClick": false,
|
|
"tooltip": "Robin"
|
|
},
|
|
"security": {
|
|
"csp": "default-src 'self' tauri: asset: ipc:; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; connect-src ipc: http://ipc.localhost asset: http://localhost:*"
|
|
}
|
|
},
|
|
"bundle": {
|
|
"active": true,
|
|
"targets": ["deb", "rpm", "appimage"],
|
|
"resources": {
|
|
"patterns/*": "patterns/"
|
|
},
|
|
"icon": [
|
|
"icons/32x32.png",
|
|
"icons/128x128.png",
|
|
"icons/128x128@2x.png",
|
|
"icons/icon.icns",
|
|
"icons/icon.ico"
|
|
],
|
|
"linux": {}
|
|
}
|
|
}
|