# activity-feed ## Intent Shows the **active project** and a **live feed** of what happened — both user and Claude actions. It makes the coordination state visible (AGENT.md §8.2): the same active project and events Claude reads over MCP (`get_active_project`, `get_activity`), so the user can watch the two stay in sync. Groundwork for the graceful project handoff (§8.3). ## Public surface - **Tag:** `` - **Attributes/properties:** none. - **Fetches (initial):** `GET /api/active-project`, `GET /api/activity`. - **Subscribes:** `EventSource('/events')` — SSE stream; listens for `activity` events (auto-reconnects if the stream drops). Closed on disconnect. - **Renders:** active project (basename, full path on hover) + newest-first list of events, each with an actor badge (user/claude/system), a humanized kind, the repo, optional detail, and a timestamp. ## History - 2026-09-20: created — slice 3; live active-project + activity view over SSE. - 2026-09-20: also update the active-project display on `switch-completed` events (slice 4 handoff), not only `active-project-changed`. ## Notes / gotchas - All server-derived text is escaped before insertion (repo paths, details, kinds) — treat as untrusted (§1.1). - Uses shared design tokens for colors/radii — no hardcoded hex. - The feed is capped client-side at 200 events to mirror the server ring buffer; it does not paginate history.