You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As a person running several coding-agent sessions, I want XMD to present their Grid itself, so I can view structured conversations, use an XMD REPL, and host native terminal applications without installing or configuring an external multiplexer.
The same document can use the tmux provider or an XMD-owned provider without changing its Grid, panes, titles, roles, issues, or session identities.
Current gap
The first #717 provider uses tmux. That is useful for configuring and arranging terminal work, but presentation, focus, and terminal cells belong to an external process.
Bombshell TTY supplies zero-I/O cell rendering and input parsing for structured XMD views. It does not allocate PTYs, emulate the terminal seen by a native child, provide job control, or own process teardown. XMD therefore cannot claim that Bombshell alone replaces tmux for a shell or provider-native Agent TUI.
Contract
XMD supplies a first-party provider for the @executablemd/grid contract. Like tmux, it is available to xmd run only. Provider selection is host configuration; the authored document does not name tmux or the XMD provider.
The provider owns the visible composite, authored row-major layout, pane regions, titles, focus, input routing, resize, startup, settlement, close, and enclosing-terminal restoration. Role and current issue remain ordinary props used to derive pane titles; they never become pane or Agent identity.
The provider distinguishes structured XMD content from native terminal content:
@bomb.sh/tty supplies structured layout, input parsing, scrolling, resize handling, and changed-cell output. It is not the PTY allocator, child terminal emulator, process owner, session store, Agent transport, or multiplexer lifecycle.
For a native pane, the selected #801 boundary owns the PTY, terminal emulation, input bytes, child job control, and teardown. Terminal pixels never become Agent conversation evidence or session authority.
Tail, REPL, and native panes retain their separate sources and lifecycles. Grid does not merge their stores, share their watchers or ACP connections, infer that two views are the same session, or acquire their authority. Focus determines which cell receives user input; it grants no durable or Agent-session authority.
Startup remains atomic: the visible Grid appears only after every required pane endpoint is ready. Panes settle independently and preserve visible final status until the reader closes the Grid. Close stops new input, completes every pane and provider finalizer, restores the enclosing terminal, and only then lets the document continue.
Tmux remains a valid alternative run provider. It is not removed, used for Workflow, or made responsible for session-file observation or ACP interaction. Provider choice changes presentation, not authored Grid meaning, session identity, retained history, authority, or teardown guarantees.
Acceptance
One document runs unchanged with tmux and XMD providers and produces the same Grid structure, titles, authored pane identities, and lifecycle outcomes.
Role and current-issue prop changes update exact pane titles without changing pane or Agent identity.
Tail, linear REPL, ordinary output, native Agent TUI, and shell panes use their respective structured or PTY boundaries.
Tail navigation never becomes conversational input, and REPL input reaches only the ACP session referenced by the executing XMD block.
Keyboard focus routes native bytes only to the selected owned PTY; wrong-pane and post-close input reach no child.
Bombshell is used for layout, structured content, viewport, and input parsing without being treated as the native terminal emulator.
Resize and relayout preserve authored row-major order, entry identity, pane identity, and session identity.
Partial startup presents no Grid; post-attach pane failure remains contained until close.
Reader close, parent cancellation, terminal loss, provider failure, and pane-finalizer failure retain the accepted Grid/Pane outcome precedence and complete teardown.
No tmux executable, socket, configuration, server, or process is required or observed by the XMD provider.
The supported runtime and host envelope is stated explicitly; unsupported hosts refuse before pane work begins.
Controlled source and deno compile journeys use signals rather than elapsed-time success and include wrong-pane input, duplicate authority, and leaked-resource negative controls.
Story
As a person running several coding-agent sessions, I want XMD to present their Grid itself, so I can view structured conversations, use an XMD REPL, and host native terminal applications without installing or configuring an external multiplexer.
Example
The authored document remains provider-neutral:
The same document can use the tmux provider or an XMD-owned provider without changing its Grid, panes, titles, roles, issues, or session identities.
Current gap
The first #717 provider uses tmux. That is useful for configuring and arranging terminal work, but presentation, focus, and terminal cells belong to an external process.
Bombshell TTY supplies zero-I/O cell rendering and input parsing for structured XMD views. It does not allocate PTYs, emulate the terminal seen by a native child, provide job control, or own process teardown. XMD therefore cannot claim that Bombshell alone replaces tmux for a shell or provider-native Agent TUI.
Contract
XMD supplies a first-party provider for the
@executablemd/gridcontract. Like tmux, it is available toxmd runonly. Provider selection is host configuration; the authored document does not name tmux or the XMD provider.The provider owns the visible composite, authored row-major layout, pane regions, titles, focus, input routing, resize, startup, settlement, close, and enclosing-terminal restoration. Role and current issue remain ordinary props used to derive pane titles; they never become pane or Agent identity.
The provider distinguishes structured XMD content from native terminal content:
<Session.Launch>or shell runs through an XMD-owned PTY and terminal emulator accepted from Test native TUI hosting with an XMD-owned PTY and terminal emulator #801.@bomb.sh/ttysupplies structured layout, input parsing, scrolling, resize handling, and changed-cell output. It is not the PTY allocator, child terminal emulator, process owner, session store, Agent transport, or multiplexer lifecycle.For a native pane, the selected #801 boundary owns the PTY, terminal emulation, input bytes, child job control, and teardown. Terminal pixels never become Agent conversation evidence or session authority.
Tail, REPL, and native panes retain their separate sources and lifecycles. Grid does not merge their stores, share their watchers or ACP connections, infer that two views are the same session, or acquire their authority. Focus determines which cell receives user input; it grants no durable or Agent-session authority.
Startup remains atomic: the visible Grid appears only after every required pane endpoint is ready. Panes settle independently and preserve visible final status until the reader closes the Grid. Close stops new input, completes every pane and provider finalizer, restores the enclosing terminal, and only then lets the document continue.
Tmux remains a valid alternative run provider. It is not removed, used for Workflow, or made responsible for session-file observation or ACP interaction. Provider choice changes presentation, not authored Grid meaning, session identity, retained history, authority, or teardown guarantees.
Acceptance
deno compilejourneys use signals rather than elapsed-time success and include wrong-pane input, duplicate authority, and leaked-resource negative controls.Relationships
<Grid>and<Pane>#781 for the stable<Grid>and<Pane>provider contract.<Session.Tail>andxmd tail#782 for structured Tail cells.Out of scope