A list of your live shells, in the panel and beside the window

Featurekamo-internal
Shipped
September 3, 2026 at 9:41 PM UTC
Author
Kamo
Commit
ad27ee5

Terminals joins the Interaction Center to the right of Sales Scripts, gated on a provisioned dev machine — the same gate as the Linux Desktop nav option, read off the same resolver, so the tab cannot answer differently from the icon inches away from it. Not rendered at all without one, as Sales Scripts is: a member should not learn that other people have shells on a build machine from a tab they can never open. A maximized terminal now gets the same left navigator the chat windows get, and it shows THAT SAME LIST — one hook, one pane component, rendered in both places, for the reason toolSections is shared by the nav and the launchpad: two copies would disagree the moment one of them ended a session. `chatSwitcher: boolean` becomes `navigator: 'chat' | 'terminal'`. One field naming which navigator, rather than a flag per kind, so a tool asking for both is not expressible and nobody has to remember where the precedence lives. Rows open, rename and end. Ending is two steps, because it takes the shell and whatever is running in it with no undo, and the confirm is the row itself rather than a dialog so it cannot be dismissed onto the wrong terminal. Renaming is inline; the stored title comes back from the server and is rendered from there, because the agent trims, strips control characters and truncates. Reopening a terminal RAISES its window instead of stacking a second one onto the same shell: the id travels as `sessionGuid`, which the tool-windows store already dedupes on for any non-chat tool. That is why the prop is named that. A host restart needs no special handling and gets none — the list is the tmux server's sessions, so a reboot empties it by itself. What the list does distinguish is "you have no terminals" from "nobody could tell you", because those look identical in an empty list and mean opposite things: one invites you to open one, the other says not to bother yet. The window is the chat footprint (460x690) as asked — it sits in the same dock row, and a window a different size from its neighbours packs the row badly. 415 test files / 5220 tests, tsc and the production build all clean; the three API routes appear in the build manifest. Dictionary pushed first (f747461f) and verified against a fresh clone the way CI does it.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing