Files
fusion/packages/dashboard/app/components/command-center/AgentActivityPanel.css
gsxdsm aac090d0c3 FN-8866: add Command Center agent activity timeline
Add a Command Center live agent activity log with historical navigation.

- Stream and paginate organization-wide agent activity with timeline filters.
- Link activity rows to agent details and task views while reusing feed presentation.
- Add localized copy, documentation, a minor changeset, and coverage for live and scroll-back behavior.

Files changed:
 .changeset/fn-8866-agent-activity-surfaces.md      |   7 +
 docs/dashboard-guide.md                            |   1 +
 packages/dashboard/app/App.tsx                     |  12 ++
 packages/dashboard/app/components/ActivityFeed.tsx |  77 ++++----
 packages/dashboard/app/components/AgentsView.tsx   |  13 +-
 .../__tests__/AgentsView.focus-agent.test.tsx      |  59 ++++++
 .../command-center/AgentActivityPanel.css          |  98 +++++++++
 .../command-center/AgentActivityPanel.tsx          |  99 ++++++++++
 .../components/command-center/CommandCenter.tsx    |   9 +
 .../__tests__/AgentActivityPanel.mobile.test.ts    |  15 ++
 .../AgentActivityPanel.sse-integration.test.tsx    |  96 +++++++++
 .../__tests__/AgentActivityPanel.test.tsx          | 121 ++++++++++++
 .../__tests__/CommandCenter.test.tsx               |  27 ++-
 .../__tests__/agentActivityCursor.test.ts          |  47 +++++
 .../__tests__/useAgentActivity.test.tsx            |  14 ++
 .../command-center/agentActivityCursor.ts          |  75 +++++++
 .../command-center/agentActivityPresentation.tsx   |   8 +
 .../components/command-center/useAgentActivity.ts  | 218 +++++++++++++++++++++
 .../app/components/dashboard/MainContent.tsx       |  19 ++
 .../MainContent.agent-activity-navigation.test.tsx | 127 ++++++++++++
 .../dashboard/app/components/dashboard/types.ts    |   3 +
 packages/i18n/locales/en/app.json                  |  30 ++-
 packages/i18n/locales/es/app.json                  |  30 ++-
 packages/i18n/locales/fr/app.json                  |  30 ++-
 packages/i18n/locales/ko/app.json                  |  30 ++-
 packages/i18n/locales/pt-BR/app.json               |  30 ++-
 packages/i18n/locales/zh-CN/app.json               |  30 ++-
 packages/i18n/locales/zh-TW/app.json               |  30 ++-
 28 files changed, 1312 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-8866

Fusion-Task-Lineage: 817ae76e-52c6-4221-8642-df757e773627

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 20:19:52 -07:00

99 lines
2.0 KiB
CSS

/*
FNXC:CommandCenterAgentActivity 2026-08-10-01:54:
The activity panel keeps live and timeline controls touch-usable at desktop and mobile widths with existing design tokens. Timeline rows are manual windows, so this stylesheet deliberately adds no nested scroll owner.
*/
.cc-agent-activity {
display: grid;
gap: var(--space-3);
min-inline-size: 0;
}
.cc-agent-activity-mode,
.cc-agent-activity-filters,
.cc-agent-activity-target {
display: flex;
align-items: center;
gap: var(--space-2);
min-inline-size: 0;
}
.cc-agent-activity-filters {
flex-wrap: wrap;
}
.cc-agent-activity-filters .input {
flex: 1 1 auto;
min-inline-size: 0;
}
.cc-agent-activity-range-note,
.cc-agent-activity-end,
.cc-agent-activity-copy small {
color: var(--text-muted);
font-size: var(--font-size-xs);
}
.cc-agent-activity-list {
display: grid;
gap: var(--space-2);
}
.cc-agent-activity-row {
display: flex;
align-items: center;
gap: var(--space-2);
min-inline-size: 0;
padding: var(--space-2);
border: 0;
border-radius: var(--radius-sm);
background: transparent;
color: inherit;
text-align: left;
}
button.cc-agent-activity-row {
cursor: pointer;
transition: background var(--transition-fast);
}
button.cc-agent-activity-row:hover,
button.cc-agent-activity-row:focus-visible {
background: color-mix(in srgb, var(--surface-2) 80%, transparent);
}
.cc-agent-activity-copy {
display: grid;
gap: var(--space-1);
min-inline-size: 0;
overflow-wrap: anywhere;
}
.cc-agent-activity-target .cc-agent-activity-row {
flex: 1 1 auto;
}
@media (max-width: 768px) {
.cc-agent-activity-mode,
.cc-agent-activity-filters,
.cc-agent-activity-target {
align-items: stretch;
flex-direction: column;
}
.cc-agent-activity-mode .btn,
.cc-agent-activity-filters .input,
.cc-agent-activity-target .btn {
inline-size: 100%;
}
.cc-agent-activity-row {
align-items: flex-start;
}
}
@media (max-height: 480px) and (max-width: 768px) {
.cc-agent-activity {
gap: var(--space-2);
}
}