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
+6 -5
View File
@@ -24,13 +24,14 @@ eight workers looks like a stalled terminal for several minutes.
## Session lineage lines
Select a tab and the tab strip draws lines from it to every tab it spawned, and to the tab
that spawned it (with its siblings). That covers the other direction of fan-out: not
subagents inside one session, but whole sessions started by an agent through the API.
The tab strip draws lines from every tab to the tabs it spawned. That covers the other
direction of fan-out: not subagents inside one session, but whole sessions started by an
agent through the API.
The lines form one tree per spawning tab, in that tab's colour, and run only through the
gaps between tab rows, so they never cover a tab name or the terminal. A dashed branch
means that child is working. Tabs with no lineage draw nothing.
gaps between tab rows, so they never cover a tab name or the terminal. Select a tab and its
family (the tabs it spawned, or its parent and siblings) is drawn thicker and brighter. A
dashed branch means that child is working.
Desktop only, on by default, and toggled in **App Settings → Appearance**. Lines are skipped
for tabs scrolled out of view.