Home

boring / v2

publicBoring-Software-Inc/v2
Overview Code History Branches Pull requestsIssuesInsights Campfire Docs
main
HomeOverview Code PRsIssues

feat(web): /events → /activity — the live decision feed

4 months ago

c958bee
Authored
grim7/12/2026, 11:23:11 AM
each row is a normalized event joined to the run it triggered:
- run present ⇒ verdict chip (blocked/passed/sent to review) + leading fail
  reason, row links to /runs/$runId
- in flight ⇒ 'evaluating…' that resolves in place when the run completes
- no run ⇒ dimmed row with the reason (push/comment/installation/exempt)
- eventServices.listActivity joins events→runs + first failing rule one-liner
- live: worker NOTIFYs a 'runs' channel on process-event completion + resume;
  api SSE forwards a 'run' event; web resolves the row in cache (no polling,
  no second row)
- client-side filter chips: all/blocked/sent to review/passed/no run
- route + nav renamed; listActivity integration-tested
checks green: biome, typecheck, boundaries, 196 tests.

Parent8bc4843

21 files changed
  • DECISIONS.md+29−0
  • all-summaries.md+11−0
  • apps/api/src/routes/stream.ts+19−1
  • apps/web/src/components/activity/activity-page.tsx+112−0
  • apps/web/src/components/activity/activity-row.tsx+170−0
  • apps/web/src/components/{events => activity}/live-indicator.tsx+0−0
  • apps/web/src/components/events/event-row.tsx+0−78
  • apps/web/src/components/events/events-page.tsx
+0
−63
  • apps/web/src/components/layouts/dashboard-topbar.tsx+1−1
  • apps/web/src/components/layouts/mobile-footer.tsx+1−1
  • apps/web/src/lib/activity.functions.ts+37−0
  • apps/web/src/lib/activity.query.ts+99−0
  • apps/web/src/lib/events.functions.ts+0−27
  • apps/web/src/lib/events.query.ts+0−55
  • apps/web/src/lib/run-access.test.ts+1−1
  • apps/web/src/routes/activity.tsx+18−0
  • apps/web/src/routes/events.tsx+0−18
  • apps/worker/src/jobs/process-event.ts+4−0
  • apps/worker/src/jobs/resume-run.ts+3−0
  • packages/db/src/services/activity.integration.test.ts+116−0
  • packages/db/src/services/events.ts+90−1