From 46ae8051d484785c3d16711e6fb2d385b8e815e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Mon, 24 Aug 2026 17:19:24 +0000 Subject: [PATCH] the spawned list collapses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit a commander firing once an hour has spawned a hundred children by the weekend, and every id was rendered as a chip in a wrapping grid 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. collapsed by default, one row: SPAWNED 12, plus how many are still running and the cost caveat. click to see the ids. local state rather than the URL — a disclosure is not a selection, nothing addresses it and it should not survive navigating away. `n running` is on the collapsed row deliberately. it is the difference between "twelve happened" and "one is happening", which is the only part worth interrupting the transcript for. Co-Authored-By: Claude Opus 5 Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043 --- .../src/apps/CommandHQ/CommandHqDetail.tsx | 30 ++++++++++++++++--- .../officerdev/src/locales/de-DE.json | 3 ++ .../officerdev/src/locales/en-GB.json | 3 ++ .../officerdev/src/locales/es-ES.json | 3 ++ .../officerdev/src/locales/fr-FR.json | 3 ++ .../officerdev/src/locales/pt-PT.json | 3 ++ .../officerdev/src/locales/sv-SE.json | 3 ++ 7 files changed, 44 insertions(+), 4 deletions(-) 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) => (