2026-06-06 19:49:33 +08:00
# WebUI Sync Workflow
2026-06-10 00:36:22 +08:00
This workflow is for contributors keeping the desktop app and browser WebUI in sync. Users should experience them as one product surface: desktop adds a native host and local engine lifecycle, while chat, settings, apps, skills, and workspace UI still come from the shared WebUI.
2026-06-06 19:49:33 +08:00
2026-06-10 00:36:22 +08:00
`desktop` consumes the shared WebUI build output. It must not copy, fork, or vendor `webui/src` .
2026-06-06 19:49:33 +08:00
## Development
Run the WebUI dev server:
```sh
cd desktop
bun run dev:webui
```
Run the native host in another terminal:
```sh
cd desktop
bun run dev:app
```
2026-06-10 00:36:22 +08:00
The host loads `http://127.0.0.1:5173` in development, so React changes hot reload. Main/preload changes still require restarting `dev:app` .
2026-06-06 19:49:33 +08:00
## Release Build
1. Build the shared WebUI:
```sh
bun run build --prefix webui
` ``
2. Prepare the bundled Python engine:
` ``sh
cd desktop
NANOBOT_DESKTOP_ARCH=arm64 bun run prepare-engine
` ``
3. Build the app:
` ``sh
bun run make:mac:arm64
bun run make:mac:x64
` ``
2026-06-10 00:36:22 +08:00
` electron-builder` packages ` nanobot/web/dist` as ` Resources/nanobot-webui`.
2026-06-06 19:49:33 +08:00
## Checklist
2026-06-10 00:36:22 +08:00
- WebUI source remains host-neutral: it may branch on generic runtime capabilities, but it must not import Electron or desktop source files.
2026-06-06 19:49:33 +08:00
` ``sh
rg -n "from ['\\\"]electron|desktop/src|nanobotDesktop" webui/src
` ``
This command should print nothing.
- Native host behavior is implemented in ` desktop/src`.
2026-06-10 00:36:22 +08:00
- Provider, model, credential, and login setup stay in shared WebUI settings. Do not duplicate those flows in Electron-owned HTML.
- Shared UI behavior is implemented in ` webui/src` through ` window.nanobotHost` and generic runtime capability checks.
2026-06-06 19:49:33 +08:00
- Do not copy React components from ` webui/src` into this folder.
- Do not commit bundled runtimes, DMGs, or ` node_modules`.