Review feedback from the live 3384 install, fixed at the root:
- COLORS: the new stylesheet used var(--dsw-alias-accent) in 17 places — a
token the DSH theme does NOT define, so every declaration was dropped
(older files only survived because they carry fallbacks); container edges
used border-l1 (4% black, invisible). Accent now rides
--dsw-alias-state-business-primary, container edges --dsw-alias-border-l4.
- CLICKS: the canvas called setPointerCapture on pointerdown, which
retargets the derived click to the container and killed every node (and
ⓘ) interaction; jsdom cannot see this, a real browser can. Capture is
gone and panning only starts from the background.
- LAYOUT: fit gave up silently at zero container size and never retried,
centered only horizontally, and capped at 100% while a five-child level
scaled to 35%. Now: ResizeObserver + first non-zero fit, both axes
centered, a 0.78 readability floor, and layoutTasksGraphForWidth picks
the flattest sibling arrangement that still meets that floor.
- CARDS: title (one line) + mono meta + live line only; display title,
team role, full model id and latest text moved into the ⓘ popover.
- PANEL: metrics follow the approved 360x660 mockup (132x46 cards, 112 row
stride), explicit line-heights, user-select:none, horizontal control
cluster with a labelled mode button, always-visible team board strip.
- Tokens for two new popover headings across all 20 dictionaries.
Tests: 3 new page-interaction specs (click after background pointerdown,
node gestures never pan, team board visible without a click) and a
rewritten 9-case layout suite (band wrap, row reservation, width solver,
reserved live row). Full suite 1400 passed / 133 files.
The Subagent page becomes the Tasks page per the approved Variant-D design:
- tasks-model.ts feeds BOTH modes from one pre-order node list: graph
canvas (TasksGraph: layered nodes over bezier edges, drag-pan,
wheel-zoom-to-cursor, phase frames, bottom-right control cluster) and
the classic tree (TasksTree: keyboard navigable) — the view toggle and
fold toggle stay reachable in both modes.
- Workflow runs (workflows.list) hang under their origin agent; member
agents re-parent under the run node, missing ones synthesize from run
data; completed leaf agents fold into per-parent aggregate nodes
(click or cluster toggle to expand/re-collapse).
- Agent Teams (experimental): roster enriches nodes; a header chip opens
the shared task board popover with basic CAS operations (complete /
reopen / delete / reassign / create / edit); no experimental layer →
the whole block hides (structural degradation).
- Background jobs move into a bottom drawer that auto-collapses at 8+
agents (manual toggle wins); job output opens as an anchored popover
(event replay, never the model's cursor); two-click kill preserved.
- Live activity lines render as glyph + tool + args (tool-icons map onto
host primitive icons).
- Node click jumps to the transcript; ⓘ opens the detail popover;
popovers follow the selection-popup dismissal contract (Escape /
outside click / anchor off-screen via IntersectionObserver).
- tasksViewMode pref (graph default) with a select row in settings;
58 new copy keys across zh/en/ja + 18 third-language dictionaries;
dead CSS from the old tree/dock pruned.
- Tests: 6 new page-interaction specs (auto-collapse, both-mode toggle,
jump, fold, popover); jobs-view suite re-pointed at the popover;
prefs/builtins/smoke lock tests updated for the new pref.