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