// Activity — chronological feed of everything that happened recently across // all projects, sessions, cron, and tools. Day-grouped, filterable. const ACTIVITY_GROUPS = [ { day: 'Today', items: [ { time: '09:42', icon: 'message-square', tone: 'accent', title: 'Sera — chat session resumed', sub: 'Forge · 14 turns · refactored CronRunner', proj: 'sera' }, { time: '09:30', icon: 'clock', tone: 'green', title: 'incident-triage ran', sub: 'cron · ok in 4.2s · 0 issues created', proj: '—' }, { time: '09:00', icon: 'clock', tone: 'green', title: 'daily-summary ran', sub: 'cron · ok in 36s · posted to #standup', proj: '—' }, { time: '08:42', icon: 'git-pull-request', tone: 'blue', title: 'PR #284 opened', sub: 'sera · "Switch to AbortController for cron timeouts"', proj: 'sera' }, { time: '08:14', icon: 'shield', tone: 'amber', title: 'Approval: execute git push origin main', sub: 'sera · approved by Aurora · 3.2s wait', proj: 'sera' }, ]}, { day: 'Yesterday', items: [ { time: '17:22', icon: 'check-circle', tone: 'green', title: 'release-notes generated', sub: 'cron · ok in 1m 03s · draft saved', proj: '—' }, { time: '15:08', icon: 'plug', tone: 'accent', title: 'MCP server connected — Figma', sub: '6 tools, 2 prompts available', proj: '—' }, { time: '14:31', icon: 'message-square', tone: 'accent', title: 'Hermes — onboarding draft', sub: '8 turns · drafted welcome email', proj: 'hermes' }, { time: '11:02', icon: 'alert-triangle', tone: 'red', title: 'Tool denied — rm -rf node_modules', sub: 'sera · matched deny rule "rm -rf"', proj: 'sera' }, { time: '09:00', icon: 'clock', tone: 'green', title: 'daily-summary ran', sub: 'cron · ok in 41s', proj: '—' }, ]}, { day: 'Mon, Apr 21', items: [ { time: '16:48', icon: 'user-plus', tone: 'accent', title: 'New personality — Atlas', sub: 'Created by Aurora · long-form writing model', proj: '—' }, { time: '14:00', icon: 'database', tone: 'blue', title: 'Postgres (prod, ro) reconfigured', sub: 'switched to read replica', proj: '—' }, { time: '09:00', icon: 'clock', tone: 'red', title: 'daily-summary failed', sub: 'cron · github 502 bad gateway · retried ok at 09:14', proj: '—' }, ]}, ]; const ACT_TONES = { accent: { bg: 'var(--accent-tint)', fg: 'var(--accent)' }, green: { bg: 'var(--green-100)', fg: 'var(--green-600)' }, blue: { bg: 'var(--blue-100)', fg: 'var(--blue-500)' }, amber: { bg: 'var(--orange-100)', fg: 'var(--orange-500)' }, red: { bg: 'var(--red-100)', fg: 'var(--red-500)' }, }; function Activity() { const [filter, setFilter] = React.useState('all'); React.useEffect(() => { requestAnimationFrame(() => window.lucide && window.lucide.createIcons()); }); return (