refactor(dashboard): delete redundant company-status line + arbitrary animation cap

Two subtractions surfaced by the fresh Jony+Jobs pass on the Dashboard:

- The "Company status line" at the top of the dashboard showed three
  counters: `{activeAgents} agents active · {activeTasks} tasks in
  progress · {completed} completed`. The 4-card MetricsGrid directly
  below it already rendered the same agent count and active-tasks
  count as its primary tiles. Seeing the same number in vertical
  succession is the cheapest way to tell users "we weren't sure
  what to show." Deleted the whole status-line block + the companyName
  prop + the now-unused caller wiring in OperationsSections.

- The Active Work list rendered a `animate-ping` halo on the first
  two running runs (`i < 2`) and skipped it for the rest. Arbitrary —
  either the ping is a meaningful "I'm active" signal for every
  running run, or it is decoration. Dropped the ping entirely; the
  solid green dot on the robot icon is already enough to say
  "running," and losing the double-layered animation lets the
  dashboard feel calm instead of twitchy.

Dead i18n keys removed alongside (zh + en):
  dash.agentActive / dash.agentsActive / dash.taskInProgress /
  dash.tasksInProgress / dash.completedCount.

Typecheck clean.
This commit is contained in:
ZacharyZhang-NY committed 2026-04-17 21:18:42 -04:00
1 parent 50685b952c
commit c7057d0fd2
4 files changed
+1 -36

No files matched your search

@@ -30,7 +30,6 @@ import { ChartSection } from "./ChartSection";
import { AttentionRow, Eyebrow } from "../ui";
export interface DashboardProps {
companyName?: string;
companyId?: string;
agents: AgentRecord[];
tasks: TaskRecord[];
@@ -46,7 +45,7 @@ export interface DashboardProps {
export function Dashboard(props: DashboardProps) {
const t = useT();
const { companyName, companyId, agents, tasks, runs, approvals, activity, costs, messages = [], onNavigate } = props;
const { companyId, agents, tasks, runs, approvals, activity, costs, messages = [], onNavigate } = props;
const agentMap = useMemo(() => new Map(agents.map((a) => [a.id, a])), [agents]);
const taskMap = useMemo(() => new Map(tasks.map((t) => [t.id, t])), [tasks]);
@@ -78,26 +77,6 @@ export function Dashboard(props: DashboardProps) {
return (
<div className="space-y-6">
{/* Company status line */}
{companyName ? (
<div>
<h2 className="text-[28px] font-bold tracking-[-0.02em] text-foreground">{companyName}</h2>
<div className="mt-2 flex items-center gap-3 text-[13px] tracking-[0.005em] text-muted-foreground">
<span className="flex items-center gap-1.5">
<span className="h-1.5 w-1.5 rounded-full bg-success" />
{activeAgents.length} {activeAgents.length === 1 ? t("dash.agentActive") : t("dash.agentsActive")}
</span>
<span className="h-3 w-px bg-[color:var(--border)]" />
<span className="flex items-center gap-1.5">
<span className="h-1.5 w-1.5 rounded-full bg-primary" />
{activeTasks.length} {activeTasks.length === 1 ? t("dash.taskInProgress") : t("dash.tasksInProgress")}
</span>
<span className="h-3 w-px bg-[color:var(--border)]" />
<span>{tasks.filter((tk) => tk.status === "done").length} {t("dash.completedCount")}</span>
</div>
</div>
) : null}
{/* Conditional banners */}
<RecoveryBanner />
<BudgetAlertBanner agents={agents} onNavigate={onNavigate} companyId={companyId} />
@@ -219,9 +198,6 @@ export function Dashboard(props: DashboardProps) {
<Robot size={16} className="text-success" />
{run.status === "running" ? (
<span className="absolute -right-0.5 -top-0.5 h-2 w-2">
{i < 2 ? (
<span className="absolute inline-flex h-full w-full animate-ping rounded-full bg-success opacity-40" style={{ willChange: "transform" }} />
) : null}
<span className="relative inline-flex h-1.5 w-1.5 rounded-full bg-success" />
</span>
) : null}