72 lines
1.8 KiB
Markdown
72 lines
1.8 KiB
Markdown
# WebUI Sync Workflow
|
|||
|
|
|
||
|
|
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.
|
||
|
|
|
||
|
|
`desktop` consumes the shared WebUI build output. It must not copy, fork, or
|
||
|
|
vendor `webui/src`.
|
||
|
|
|
||
|
|
## 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
|
||
|
|
```
|
||
|
|
|
||
|
|
The host loads `http://127.0.0.1:5173` in development, so React changes hot
|
||
|
|
reload. Main/preload changes still require restarting `dev:app`.
|
||
|
|
|
||
|
|
## 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
|
||
|
|
```
|
||
|
|
|
||
|
|
`electron-builder` packages `nanobot/web/dist` as `Resources/nanobot-webui`.
|
||
|
|
|
||
|
|
## Checklist
|
||
|
|
|
||
|
|
- WebUI source remains host-neutral: it may branch on generic runtime
|
||
|
|
capabilities, but it must not import Electron or desktop source files.
|
||
|
|
|
||
|
|
```sh
|
||
|
|
rg -n "from ['\\\"]electron|desktop/src|nanobotDesktop" webui/src
|
||
|
|
```
|
||
|
|
|
||
|
|
This command should print nothing.
|
||
|
|
|
||
|
|
- Native host behavior is implemented in `desktop/src`.
|
||
|
|
- 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.
|
||
|
|
- Do not copy React components from `webui/src` into this folder.
|
||
|
|
- Do not commit bundled runtimes, DMGs, or `node_modules`.
|