feat(desktop): a sidebar plan hangs its card beside its row: its agents and pull requests at a glance

Merged
DA
8d ago
+156-31

The last part of Dean's ask ("We can also add more information in a hover element on a plan in the sidebar"), as a follow-up to #2068 now that #2049's Tooltip card prop has landed.

What changes

  • The card on each row: each sidebar plan row is wrapped in Tooltip with card={<PlanCard …/>}, so resting on a row hangs the plan's card. It has the same wait, warm spell, and dismissal as every hint and #2049's agent tab card. The card shows:

    • the plan's name in full, how long ago it was updated, and its repository
    • up to three agents, each with the harness mark #2067 wired in (working ring / alert), its ModelLabel, and "Working… 2m 8s" / "Done 3m" / "Failed 1h"
    • up to three PRs, each with "#128 · title", coloured +/−, and Draft/Merged/Closed
    • "and N more" under each list when it was capped

    Everything comes from the plan list row (#2068), so nothing is fetched on hover.

  • New cardBeside option on Tooltip: it hangs the card past the control's end, level with the control's top and held inside the window, instead of under it. A card under a sidebar row would cover the rows beneath it; beside it, it opens over the work column, the way Conductor and Linear hang theirs. The agent tab card (#2049) is unchanged.

Tests

  • tooltip.test.ts: a card with cardBeside stands past the control's end, level with its top, and is held inside the window near the bottom edge.
  • desktop-sidebar.test.ts: resting on a plan row hangs its card beside the row; the card describes the row and lists its PR line.

Screenshots

The real renderer in headless Chrome: a fixture sidebar with the row hovered through the real Tooltip.

LightDark
lightdark

Mac verification

CI could not verify the Mac UI, and ./scripts/verify.sh was not run: this was built on a Linux cloud VM, and CI builds nothing for the Mac. LUKE-159 is the manual Mac pass. ./scripts/check.sh exits 0.

🤖 Generated with Claude Code