RULE 01
The chat is constant; the stage is conditional.
The stage appears only when the agent has produced something worth a pane.
From: ChatGPT's file panel; Claude Code's tool panes.MINDER · AI CHAT DESIGN SYSTEM
A conversation that stays put, and a stage of panes that opens only when there is something to show.
01
Threads left, chat middle, stage right. Panes open on demand and travel with their thread.
RULE 01
The stage appears only when the agent has produced something worth a pane.
From: ChatGPT's file panel; Claude Code's tool panes.RULE 02
Clicking a card focuses its pane, or opens one. The transcript stays the index.
From: Claude's artefact cards.RULE 03
Tabs hold one kind of thing. A new kind opens a new pane, never a modal.
From: Claude Code's tabbed panes; ChatGPT's multi-file tabs.RULE 04
Title or tabs left; share, more, open out, maximise, close right — always in that order.
From: Claude Code's pane headers; Canvas's version arrows.RULE 05
Split right adds a column, split down stacks. Two by two is the ceiling.
From: Claude Code's stage.RULE 06
Mode, effort, tools and attachments live in the composer bar, not a header.
From: ChatGPT's access modes; Claude Code's permission modes.RULE 07
Every regeneration is a new version, never an edit in place.
From: Canvas's version arrows and Show changes.RULE 08
Below 760 px the stage moves under the chat; on a phone it becomes a sheet.
From: Ours — neither app documents it.RULE 09
From 1040 px a rail that collapses to icons; below that the title becomes the switcher.
From: ChatGPT and Claude's sidebars; Notion AI's narrow-panel menu.RULE 10
Before the first turn: who you are talking to, how fresh the data is, one signal worth acting on, and a few starters shaped to the workspace. The composer stays at the bottom, where it will be for the rest of the conversation.
From: Codex's contextual suggestion above the composer; Claude Code's greeting and context chips; Gemini's Recent and Suggested lists.02
Before the first turn: who you are talking to, how fresh the data is, and where to start.
composed · empty-state + composerData as of 08:10 · 4 sources
composed · empty-state + composerNothing is connected yet.
03
One list, three homes. Dots mark threads that need you: blue running, amber awaiting approval, red failed.
composed · button + popover + dropdown-menucomposed · popovercomposed · popover + dropdown-menu04
One header for every pane, plus the three non-content states.
composed · tabs + button + dropdown-menu + tooltipone pane · split · a ground panecomposed · marker + skeletoncomposed · alert + buttoncomposed · banner + version pager05
Chips say what the agent can see. The bar carries attachments, mode, effort, dictation and send. Type / for tools.
composed · input-group + dropdown-menu + popover + kbd06
What a turn looks like once a real conversation is in it: how one is set apart from the next, the rhythm a long answer reads on, and the four kinds of thing an answer can carry.
the person is a bubble · the assistant is not42rem measure · 0.85rem / 1.65 · headings and bullets inside the turnlink · file · source · output — four rules, not four variantsmotion-safe:animate-message-in07
The primitives above, with their variants.
components/message08
When the agent needs a decision it cannot infer. No vendored primitive — composed.
composed · field + radio-group + progressThis shapes how it ranks the next actions.