diff --git a/src/workspaces/officerdev/src/apps/CommandHQ/CommandHqDetail.tsx b/src/workspaces/officerdev/src/apps/CommandHQ/CommandHqDetail.tsx index 88f0fb7c..b1b56a27 100644 --- a/src/workspaces/officerdev/src/apps/CommandHQ/CommandHqDetail.tsx +++ b/src/workspaces/officerdev/src/apps/CommandHQ/CommandHqDetail.tsx @@ -1,7 +1,7 @@ import { useEffect, useRef, useState } from 'react'; import { useQueryClient } from '@tanstack/react-query'; import { Link, useNavigate, useParams, useSearchParams } from 'react-router'; -import { Check, FolderOpen, Radar, Trash2, Unplug, X } from 'lucide-react'; +import { Check, ChevronRight, FolderOpen, Radar, Trash2, Unplug, X } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { toast } from '@/components/ui/sonner'; import { EditableTitle } from '@/components/EditableTitle'; @@ -431,13 +431,35 @@ function NewCommander({ const SpawnedChildren = ({ sessionId }: { sessionId: string }) => { const { t, tUi } = useTranslation(); const { children, totalUsd, unknownCost } = useCommandHqChildren(sessionId); + /* + Collapsed by default, and this is the whole point of the component being a disclosure at all. + + A commander that fires once an hour has spawned a hundred children by the weekend, and the ids were + rendered as a wrapping grid of chips above the transcript — so the longer a commander worked, the more + of the screen its own history took from the conversation you came to read. + + Local state rather than the URL: this is a disclosure, not a selection. Nothing addresses it, nobody + links to it, and it should not survive navigating away. + */ + const [open, setOpen] = useState(false); if (!children.length) return null; + // Worth seeing without expanding — it is the difference between "twelve happened" and "one is happening". + const running = children.filter((c) => !c.finishedAt).length; + return (
-
+
-
+ +
{children.map((c) => (