Phase 2 follow-up.
The dashboard description in apps/web/components/dashboard/dashboard-page.tsx mentions incidents but no actual incident metrics or recent-incident list are rendered. Operators have to navigate to /incidents to see anything.
Scope
- New card section on the dashboard:
- Metrics row: open / investigating / contained-or-resolved / critical-active counts. Reuse
saasIncidentMetrics (the same source the incidents-list page uses).
- Recent incidents list: latest 5 incidents by
last_activity_at with severity, status, assignee, and a deep-link.
- Pending response actions widget: latest 3-5 response actions still in
PROPOSED/APPROVED with action kind, target, and a link to the incident.
- Skeleton states matching the rest of the dashboard.
- Empty states explain how to open the first incident.
Acceptance
- Lighthouse-comparable load: incident metrics fetched in parallel with the existing metrics call (no waterfall).
- Empty / loading / error states all rendered.
- Tenant isolation honored (already enforced server side).
Phase 2 follow-up.
The dashboard description in
apps/web/components/dashboard/dashboard-page.tsxmentions incidents but no actual incident metrics or recent-incident list are rendered. Operators have to navigate to/incidentsto see anything.Scope
saasIncidentMetrics(the same source the incidents-list page uses).last_activity_atwith severity, status, assignee, and a deep-link.PROPOSED/APPROVEDwith action kind, target, and a link to the incident.Acceptance