- Toolbar moved to top-10 (below macOS system buttons)
- Lucide icons for all buttons (Tasks, Proc, Edges, Play/Pause, Zoom, Pin, Close)
- Toggle buttons show active state with highlight background
- Team name + alive indicator uses team color from config
- Grouped buttons in glass panels with backdrop-blur
- Removed raw text-only buttons (was: "−", "⊡", "+", "⊞ Pin", "✕")
- Name and role combined: "jack · developer" (was two separate lines)
- Removes overlap between role text and column headers
- Kanban zone offsetY 60→70 for extra clearance
- Removed unused drawSublabel function
- Member/lead nodes show robohash avatar image clipped to circle inside hex
- Async image loading with cache (fallback to first letter while loading)
- avatarUrl field added to GraphNode type + adapter passes agentAvatarUrl()
- Column headers now centered over pill center (was offset by half pill width)
- Column headers centered horizontally over pill area (not column edge)
- Member/lead nodes show first letter of name inside hexagon as avatar
(bold, sized proportionally to node radius, colored in member color)
- Lead gets slightly smaller font (0.6r vs 0.7r) to fit context ring
- Empty columns no longer reserve space — only non-empty columns render
- Active columns are packed tightly next to each other
- Each column gets a header label (Todo, In Progress, Done, Review, Approved)
with status color and subtle underline
- Columns centered under owner node
1. Member spawn animation: rotating dashed ring for 'spawning' status,
pulsing hex outline for 'waiting' status
2. Edge flash: active edges pulse brighter (0.1-0.5 alpha) with glow
shadow when particles travel along them
3. Smooth task positioning: tasks LERP to target position (0.15 factor)
instead of teleporting when kanban column changes
4. Comment flight particles: when a member adds a comment to a task,
a purple particle with speech bubble flies from member to task node