feat(sidebar): show the operating Chief avatar on chat rows
Leo, 2026-11-01:
they even show chief-operated chats
Chief-operated chat rows now show the operating Chief’s existing Home avatar in the shared trailing column, like the referenced Lumi row. The avatar comes from the exact acpmux ownership tags (mux.parent, mux.children, cmux.chief.participant), including named Chiefs; a similar chat name never opts a row in. Existing unread and status marks remain beside it, and hover controls replace the avatar using the existing trailing-column path. Chiefs with no custom face keep the existing CH monogram.
Risk: this adds presentation metadata through the existing lane-to-sidebar mapping. It changes no Chief execution, permissions, persistence or ownership. Picture decoding is off the main actor, bounded to 64px, starts only when the face changes, and cancels/discards stale results when a row is reused or destroyed; no new timer or observation loop.
Validation: fleet app compile passed at 5b6e2a0ff71046688326f91db8ae8f04364b708c (78 seconds, job 04c532871fccfca9abfa55f4). SidebarChiefAvatarTests, SidebarLaneStatusTests, and AgentLanesTests all passed in fleet step 0e7c5c7462d3538cf05bbec3 at 0d5702fa; the reviewer verified that the product and test diff is identical after the notes-only base merge, so the results carry. Coverage includes authoritative ownership, named Chiefs, false matches, unread coexistence across all badge styles, hover placement, and working-spinner adjacency with backing-pixel rounding. Static prepush checks passed.
Review: Claude Opus 5.5 medium SHIP at 5b6e2a0f. Non-blocking follow-ups: #30253 (localization), #30254 (avatar observation), #30255 (persist ownership when no Chief turn survives; in that case the avatar is currently omitted).
Design: design/sidebar.md (updated by the sidebar owner); plans/cmux-next/sidebar-owner.md records this look. No private reference images are attached.
Agent session: agent session