- Teleport canvas to body: layout <main> z-10 stacking context let the fixed site header (z-40) cover the canvas toolbar - defer setPointerCapture until the 3px drag threshold: immediate capture retargets click/dblclick to the stage, which silently broke note editing - commitNote no longer early-returns on the editing flag (event-ordering could drop typed text); sync node.text back to the non-controlled contenteditable on undo/redo restores - contenteditable only while editing: single click used to focus and allow raw typing outside edit mode, swallowing Delete-key handling
ai-gateway frontend
Vue 3 + Vite admin console for the ai-gateway backend. This replaces the old
single-file static/admin.html.
Develop
npm install
npm run dev # http://localhost:5173
The dev server proxies /admin, /health, /generated, /v1 to the backend.
Start the backend separately:
# from repo root
python app.py # http://0.0.0.0:6060
If the backend runs elsewhere, set VITE_BACKEND before npm run dev:
VITE_BACKEND=http://192.168.1.10:6060 npm run dev
Build
npm run build # outputs static assets to ./dist
npm run preview # serve the production build locally
When hosting dist/ on a different origin than the API, set VITE_API_BASE
(e.g. VITE_API_BASE=http://api-host:6060) at build time, and add that frontend
origin to the backend's CORS_ORIGINS env var.