feat: add right-side activity panel for agent status

- Create ActivityPanel component showing per-agent status with
  activity dots, agent names, and contextual status labels
- Add detailPanel slot to AppShell layout (right aside, w-64)
- Move agent activity display from inline ChatPane card to the
  dedicated side panel
- Remove activity prop and inline panel from ChatPane
- Panel appears when a session is selected, hidden on WelcomePane

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Kaya
2026-03-21 18:34:05 +01:00
co-authored by Copilot
parent 867f2932df
commit 9138aa8819
4 changed files with 94 additions and 47 deletions
+10 -1
View File
@@ -1,6 +1,7 @@
import { useEffect, useMemo, useState } from 'react';
import { AppShell } from '@renderer/components/AppShell';
import { ActivityPanel } from '@renderer/components/ActivityPanel';
import { ChatPane } from '@renderer/components/ChatPane';
import { NewSessionModal } from '@renderer/components/NewSessionModal';
import { SettingsPanel } from '@renderer/components/SettingsPanel';
@@ -117,6 +118,7 @@ export default function App() {
// Determine main content
let content: React.ReactNode;
let detailPanel: React.ReactNode | undefined;
if (error) {
content = (
<div className="flex h-full items-center justify-center px-8">
@@ -129,13 +131,19 @@ export default function App() {
} else if (selectedSession && patternForSession && projectForSession) {
content = (
<ChatPane
activity={activityForSession}
onSend={(c) => api.sendSessionMessage({ sessionId: selectedSession.id, content: c })}
pattern={patternForSession}
project={projectForSession}
session={selectedSession}
/>
);
detailPanel = (
<ActivityPanel
activity={activityForSession}
pattern={patternForSession}
session={selectedSession}
/>
);
} else {
content = (
<WelcomePane
@@ -166,6 +174,7 @@ export default function App() {
<>
<AppShell
content={content}
detailPanel={detailPanel}
overlay={overlay}
sidebar={
<Sidebar