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)