Repository navigation
Labs: split-pane agent workspace - #42
Closed
sean-brydon wants to merge 6 commits into
Closed
sean-brydon wants to merge 6 commits into
sean-brydon wants to merge 6 commits into
Conversation
…h the rest in a strip Settings › Labs › Layout › Workspaces trades the sidebar for live panes you arrange, tmux or Zellij style: named workspaces as tabs across the top (⌘1–9), up to four agent panes from any project or box side by side, a grid or zoomed (⌘⇧↵), and every other agent in a strip along the bottom, the ones that need you first. Click, ⌥-click or drag one in; ⌘E finds any agent or worktree; ⌘⌥⇧ and an arrow swaps panes. Opening an agent any other way (a notification, ⌘K, a new task) brings it into the workspace in front. Each workspace is one tab of the existing pane machinery, so panes keep their ids and nothing remounts. The sidebar stays the default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…and four panes tile as a grid From the critique: the strip's label opens a tray of every box, project, worktree and agent (the sidebar's tree, on demand, offline boxes said so); needs-you chips stay pinned at its start and idle agents fold into one; four panes default to two over two; the focused pane's ring is clear; a workspace tab counts only who needs you and shows its number; Review and Automations are labelled; an empty workspace shows its gestures and keys. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eeps "ready" in sight The tray has a title and a count of who needs you and who works, boxes lead it (offline ones last), it fades where it scrolls, and its foot says how to bring an agent in. "N ready" sits outside the strip's scroll; a narrow window's other panes read "Here", dashed; the status bar leaves the agent counts to the strip and tabs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… waited longest A needs-you chip's hover card says what the agent asks and answers a permission there (Deny, Allow once). ⌘J brings in the agent that has waited longest. Panes without the keyboard hide their chat controls, the focused one has a clear ring, and the status bar names the focused pane's worktree. The strip shows whole chips and counts the rest in "+N more"; the tray folds each project to a line of counts. "In Main" marks a narrow window's other panes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ask card says how to bring it in Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Collaborator
Author
|
Stashed: not going ahead with this layout for now. The branch stays for later. |
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Labs › Layout › Workspaces: the window becomes a workspace of live agent panes you arrange, like tmux or Zellij for agents. It is not a board: every pane is a live chat or terminal. The sidebar stays the default, and nothing changes unless you pick this layout.
What it is
How it's built
lib/workspaces.ts, with guest panes for other worktrees). Panes keep their ids, so moving agents in and out never remounts anything.lib/deck.tskeeps each workspace's name, tab and arrangement (berth.decks).tile()inlib/layout.tsis pure and unit-tested.WsTab.zoomed, honoured byPaneLayersetSessionOpenerinopenSessionparkPanesessiondrag source intab-dragcomponents/deck/. It uses coss-ui and theme tokens only, with no new dependencies.layout: "sidebar" | "workspace"(Labs), also?layout=workspace.Scores (1–10)
A critic subagent scored each round, and I fixed what it found between rounds. R1 and R2 came from the same critic; R3 and R4 each came from a fresh one, so R4 is the independent final.
Why the remaining axes are under 8. It's mostly the shape of the idea.
Worth taking whatever layout wins: ⌘J to whoever has waited longest, and answering a permission from a hover card.
Checks
go vet ./...andgo test -race ./...: pass (internal/boxpasses alone; it timed out once at 10m while builds competed for CPU).cargo check: pass.tsc -p e2epasses.docs-sitebuild: pass.e2e/workspace-layout.spec.ts(4 tests; passes 3× repeated). It covers two agents side by side, focus and zoom, a worktree from the strip, ⌘E and the tray, a new task into a new pane, a second workspace, ⌘J, the ask card and Settings. Related specs (workspace, keyboard, drop, compare, chat) also pass: 38 tests.Draft, for review alongside the other layout experiments; not for merging as is.
🤖 Generated with Claude Code