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