- Cap Redis stream retention at 100,000 messages (down from 10,000,000) in
src/config/index.ts and .env.example to prevent unbounded memory growth.
- In src/services/api/handlers.ts, update getSystemMetrics to resolve stream
queue depths using consumer group lag and in-flight pending entries (via
XINFO GROUPS) instead of raw XLEN. This prevents acknowledged and delivered
notifications from persisting as ghost backlog in the dashboard.
- Retain XLEN measurement for DEAD_LETTER queue where messages persist until
replayed or deleted.
- Adjust dashboard capacity scaling to 100,000 items in AnalyticsPage.tsx and
update backpressure warning threshold to 80,000 in DashboardHeader.tsx.
- Ensure 0-depth queues render empty (0% width) in the backlog gauge meter.
- Update queue test expectations in tests/queue.test.ts and add unit tests
verifying consumer group lag resolution in tests/api-admin.test.ts.
- migrate dashboard from Next.js to Vite SPA with React Router
- install standard shadcn/ui components using shadcn CLI
- use standard shadcn theme with default CSS variables
- handle optional project scoping in system metrics and health handlers
- update admin-static service to serve Vite dist and proxy dev server