When the graph can't load, the UI shows one generic line — No graph data. Check GBRAIN_MCP_URL / GBRAIN_TOKEN. (src/components/App.tsx) — and /api/graph returns a 502 couldn't reach the brain (src/app/api/graph/route.ts). These three cases should read differently:
- Backend unreachable (bad/missing
GBRAIN_MCP_URL, network) → "Can't reach gbrain at …"
- Auth failed (401/403 from gbrain) → "gbrain rejected the credentials"
- Reachable but empty (no pages yet) → "This brain has no linked pages yet"
Acceptance
- The graph tab renders a tailored message per case, plus a Retry button.
- No behavior change when the graph loads normally.
Pointers
src/app/api/graph/route.ts (surface the upstream status), src/components/App.tsx (the empty/error branch).
When the graph can't load, the UI shows one generic line —
No graph data. Check GBRAIN_MCP_URL / GBRAIN_TOKEN.(src/components/App.tsx) — and/api/graphreturns a 502couldn't reach the brain(src/app/api/graph/route.ts). These three cases should read differently:GBRAIN_MCP_URL, network) → "Can't reach gbrain at …"Acceptance
Pointers
src/app/api/graph/route.ts(surface the upstream status),src/components/App.tsx(the empty/error branch).