Files
flowmaster-mission-control-…/README.md
T
canvas-bot 58026b2486
build-and-publish / test (pull_request) Has been cancelled
build-and-publish / image (pull_request) Has been cancelled
feat(canvas): strip demo data, EA2 is the only source
- Remove src/data/synthetic.ts + its test (AR refund, HCM onboarding,
  GL close, Service Ops blueprints were hand-modelled fakes).
- Remove DataMode='snapshot'; the store now boots straight into live
  EA2 with no fallback. EA2 errors surface as toasts, not fake data.
- Topbar / Settings / CommandBar wording: 'SNAPSHOT'/'LIVE' becomes
  the unambiguous 'EA2' badge. No more user-facing mode switch.
- package.json name flowmaster-mission-control-demo → flowmaster-canvas.
- README rewritten — no longer calls the product a demo.
- store.test: drop the two tests that relied on synthetic scenarios
  always being present; add one asserting an EA2-empty response leaves
  the store cleanly empty (no error-stuck state).

All 23 vitest tests pass. tsc + vite build green. Bundle dropped
from ~238 kB gz → ~234 kB gz.
2026-06-15 01:08:28 +04:00

2.1 KiB

FlowMaster — Canvas

Live at https://canvas.flow-master.ai · operations cockpit for every process the company runs.

Canvas is the FlowMaster operator surface. Industrial-blueprint doctrine: paper canvas, navy frame, amber accent, 1px hairlines, square edges, monospace operational density. People, Finance, Procurement, and IT in one frame.

What it is

  • React 19 single-page app (Vite + ReactFlow + cmdk + framer-motion + zustand + dagre).
  • Connected directly to EA2 in the browser via the API client at src/lib/api.ts. There is one data source: live EA2. No bundled snapshot, no synthetic blueprints.
  • Scenes: Landing, Mission Control, Run History, Process Studio, Hubs, Agent, Settings, Login, SSO callback.
  • Agent scene has a chat surface with per-tenant local memory (src/lib/agentMemory.ts) and three intents: navigate, retain a fact, start a process draft.
  • Hubs surface departmental lenses (People, Finance, Procurement, IT).
  • Three view-as personas (CEO, Head of People, Head of IT) re-sign in under the persona's email so the operator UI reflects the seat.

Run, test, build

pnpm install

# dev (with backend proxy for live mode)
pnpm dev                                # → http://127.0.0.1:5173

# tests
pnpm test                               # vitest

# build
pnpm build                              # tsc + vite, single chunk ~234 KB gz

Deploy

Deployment is tracked in FM06/flowmaster-ops, overlay manifests/overlays/demo/:

  • mc-deployment.yaml — replicated nginx Deployment
  • mc-service.yaml — ClusterIP service on port 80
  • mc-ingress.yaml — Traefik ingress at canvas.flow-master.ai with cert-manager DNS-01 cert

nginx in the image reverse-proxies /api/* to https://demo.flow-master.ai so the SPA is same-origin (no CORS).

pnpm build
docker buildx build --platform linux/amd64 \
  -f Dockerfile.runtime \
  -t gitea.flow-master.ai/shad/mission-control-demo:sha-<git> \
  --load .
docker push gitea.flow-master.ai/shad/mission-control-demo:sha-<git>
# Then bump the image pin in manifests/overlays/demo/mc-deployment.yaml.