fix(agent-pane): keep unnamed child identities readable
When a child session has no meaningful short name or title, the summary row used the opaque optchat-* session id as its identity. That makes concurrent Chief work hard to scan and violates the transcript identity contract. The row now keeps the raw id for routing and diagnostics but uses the existing localized Subagent label for display when the id is the only name.
This also carries the already-local, sighted-user presence improvement from the first commit: participant faces expose their existing name on hover without changing the stack or screen-reader aggregate label.
Also: a running subagent's Stop shows only on its row's hover or focus, so a group no longer repeats a lit Stop on every row.
“Can Chief start bounded child work, expose which agent is working, waiting or failed, open the real chat on its owning daemon/host, and return a tangible result without polluting the user's workspace?”
MODE-04 evidence is in the ready-to-post artifact hq5457-ux03-mode04.md; the broker had no posting login when I attempted the HQ comment. The source trace is code-only: SubsessionStore.subsessionRows preserves sessionId for ownership, and SubagentStatusList now localizes only the display fallback. Native owner routing remains unchanged.
Tests:
cd webviews && bun test src/agent-session/acpmux/subagents/subsessions.test.ts(7 passed)cd webviews && bun test src/agent-session/acpmux/multiplayer/Faces.test.tsx(5 passed before this branch's second commit)git diff --checkpasses
Before/after synthetic captures for the changed unnamed-child summary row are embedded below. The landing lane must view these after images; they show the user-visible identity change from an opaque optchat-* id to the localized Subagent label.
| Before (dark) | After (dark) |
|---|---|
![]() | ![]() |
| Before (light) | After (light) |
|---|---|
![]() | ![]() |
Independent review viewed all four row after images and the presence after images. Before/after synthetic captures for the presence portion (the face stack is unchanged; the name is available on hover) are embedded below.
| Before (dark) | After (dark) |
|---|---|
![]() | ![]() |
| Before (light) | After (light) |
|---|---|
![]() | ![]() |
Follow-up: the exact incoming _acpmux/message {sessionId, sender, text, at, messageId, reportTo?} event shape can feed the same identity seam when it lands.
Agent session: agent session







