feat(tabs): draw every lineage family, emphasize the selected tab's

Drawing only the selected tab's family hid every other connection until you
clicked into one. All families are drawn again (still as routed trees); the
selected tab's families (what it spawned, and the family it was spawned into)
get .lineage-family--focus: 2.5px instead of 1.5px, full opacity instead of
0.75, a larger end dot, and drawn last so nothing covers them.

Lanes follow strip order (cycling through CodemanLineage.MAX_LANES, 3), never
the selection, so a family's lines never move when you click a tab.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer
2026-10-07 01:35:42 +02:00
parent 09daf0fe49
commit 107e87e457
10 changed files with 154 additions and 85 deletions
+5 -4
View File
@@ -86,10 +86,11 @@ scrolled into view. It is not reordered to the front, so the `Alt+N` numbering s
### Lineage lines
When one session spawns another (an agent starting a worker through the API), selecting
either tab draws its family: lines from the parent to each child, in the parent's colour,
routed through the gaps between tab rows so they never cover a tab or the terminal. A dashed
branch means that child is working. It is how a fan-out of eight workers stays readable.
When one session spawns another (an agent starting a worker through the API), Codeman draws
lines from the parent to each child, in the parent's colour, routed through the gaps between
tab rows so they never cover a tab or the terminal. Every family is always shown; selecting
a tab draws its own family thicker and brighter. A dashed branch means that child is
working. It is how a fan-out of eight workers stays readable.
While any tab has spawned another, the strip keeps a little extra room between rows for the
lines, so switching tabs never changes the header height.