Session 9 — Portal Live Chat + Pipeline Colors + Calendar

What was built

  • Portal Live Chat (TB-15a) — WebSocket real-time messaging via FastAPI native Starlette WebSocket
    • Backend: chat-service (ConnectionManager, SQLite, presence tracking, typing indicators)
    • Frontend: useChat.ts hook (auto-reconnect, WS token auth), Messages.tsx
    • Added to all role sidebars in Layout.tsx
  • Pipeline indicator per-status colors — 8 distinct colors replacing 3-state system (Intake warm tan through Closed dark ink)
  • Status color swap system-wide — Field Complete=purple, Ready for Cert=teal, Certified=gold
  • Calendar color inversion — branch color = left stripe, status color = background (was opposite)
  • Calendar inspection detail pipeline indicator added to InspectionPanel
  • Customer number required for JES branches — server-side validation in intake.py and portal_intake_requests.py

Services touched