This commit is contained in:
@@ -14,6 +14,11 @@ process requires Execute; layout-only changes require Configure. Launch intents
|
||||
refer to a user shell or an approved harness profile and working directory, not
|
||||
arbitrary executable arguments or secret values.
|
||||
|
||||
Detaching and reattaching an existing pane are layout-only Configure operations.
|
||||
Detached pane definitions remain outside the layout tree so reattachment does
|
||||
not imply a new launch. Terminating either an attached or detached session
|
||||
remains an Execute operation. See decision 0010.
|
||||
|
||||
This reducer is not an authorization bypass. The future IPC layer authenticates
|
||||
the caller and supplies its granted capability; the reducer rechecks it before
|
||||
mutation. Durable audit events record request and object identities, never
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
# 0010: Removing a panel detaches its session before termination
|
||||
|
||||
Status: accepted for implementation.
|
||||
|
||||
A workspace panel is a view attachment, not the lifetime owner of a PTY, agent,
|
||||
browser, or remote session. The normal remove action is therefore **Detach
|
||||
panel**. It removes the panel from the visible layout, keeps its stable pane and
|
||||
session identities, preserves output and decision state, and exposes the item in
|
||||
a Detached sessions tray. Reattaching it is a Configure-capability operation and
|
||||
must not launch a second process.
|
||||
|
||||
Termination is a separate Execute-capability operation. It is presented as
|
||||
**Terminate session**, never as an ambiguous close icon, and will require a
|
||||
confirmation that names the process, target machine, and any dirty or waiting
|
||||
state. Detaching the selected panel chooses its next attached sibling, falling
|
||||
back to the previous sibling. A workspace retains at least one attached panel.
|
||||
|
||||
The add affordance has two product paths: quick activation creates the user's
|
||||
default panel beside the selection, while its menu offers Terminal, Browser,
|
||||
Markdown, Review, and Reattach running session. The deterministic UI spike uses
|
||||
six fixed fixtures, starts with five attached, and reattaches the first detached
|
||||
fixture when Add panel is activated. That fixture limit is test scaffolding, not
|
||||
a product limit.
|
||||
|
||||
The typed command plane retains detached pane definitions separately from the
|
||||
layout tree. `ClosePane(Detach)` moves a definition into that registry,
|
||||
`AttachPane` restores it without a launch intent, and `ClosePane(Terminate)`
|
||||
requires Execute authority whether the pane is attached or detached. The future
|
||||
runtime registry remains the process owner throughout these layout transitions.
|
||||
|
||||
This interaction vocabulary was informed by behavior study of cmux at
|
||||
`fc36aea87e3b4152637597443d7aa7c22e4ec9f8` and Orca at
|
||||
`02a7742406a5a84fb372d6255d5a4367421990bd`. cmux is GPL-3.0-or-later and was
|
||||
used only to study workspace/split shortcuts and close-versus-detached process
|
||||
behavior. Orca is MIT-licensed and was used to study worktree-first navigation,
|
||||
durable terminal state, and mixed surface density. No implementation code or
|
||||
visual asset was copied from either project.
|
||||
Reference in New Issue
Block a user