SIGN IN SIGN UP

feat(web): make the workspace the unit of the list and of the session view

The unfiltered list grouped by status, which is the wrong axis once terminals
are in it: on this host it put wT's agent and wT's build terminal twenty rows
apart, and left the three workspaces holding no agent at all reachable only
through a chip. Group by workspace instead -- herdr's own unit of work, a
worktree for a git one -- with the asking space first. That ordering is why the
grouped view drops the "Needs you" hoist: the hoist exists because a status list
buries the blocked card, and a hoist over a list whose first group is the one
asking would render it twice. The hoist that survives in the drilled-in view is
now scoped to the filter; unfiltered, drilling into `api` put billing's blocked
agent on top of the space you had just chosen.

spaceGroups buckets the panes first and uses the hierarchy only to name and order
the buckets, so a pane in a space `workspace list` never reported gets a group of
its own. Every other view renders a pane it cannot place; grouping is the only
one that can lose one by omission, and a live check against the real relay
confirms all 30 panes render exactly once.

Grouping then exposed what the cards were called: four reading `herdr` under a
heading reading `herdr`, because `project` is one string per workspace by
construction. paneLabel falls through to the pane id when the name equals the
heading and only then, so `relay`, `Files` and `kv-tool-v2` survive; a shell
card's meta line drops the id once it has become the card's name.

In the session view, a strip of the open pane's neighbours, split into tabmates
and the rest of the workspace. Measured: at most 3 tabmates and 5 panes in a
space, so a strip is the whole control -- 32px, 3.8% of a 390x844 screen, and
absent for the 3 of 10 agent panes with nothing beside them and for every pane
when HERDR_SHELL_PANES is off. In normal flow, so the history and search panels
cover it and positionHistoryPanel is untouched; rebuilt from every snapshot, so
a terminal appearing next door needs no reopen.

Relay and protocol untouched, so none of the other five clients move.
N
Nick007 committed
f276fe1f69bc63a48f3f425e411991d90764ddce
Parent: ebdf8cc