A floating panel is not a mounted SessionThe official renderer, Session-scoped slots, provide bundle, input routing, questions, approvals, drafts, and lifecycle must move together.
Split three state owners.
Unique Session membership and stable left-to-right order.
Keyboard, composer, commands, paste, and singular interaction authority.
Effect-owned admission limit. Never implicit pane eviction.
Bind panes by identity, not late focus.
Session id
→explicit targetprovide info
→per-id bundleslot subtree
→per-id scopedispose
last ownerCompatibility begins after capacity one.
Preserve current selection, staging, SessionProvider, and plugin assumptions.
Negotiate multiplicity before rendering existing Session-scoped plugins twice.
Six protocol gates.
- 01Focus never mounts, unmounts, or reorders panes.
- 02Every pane reads the bundle for its explicit Session id.
- 03Opening at capacity never evicts implicitly.
- 04Closing presentation never mutates durable Session state.
- 05Async interactions retain their originating Session identity.
- 06Unknown protocols and unverified plugins fail closed to one pane.
Primary evidence.
Make the second pane a real Session.
The canonical guide defines transition semantics, capacity holders, explicit providers, slot multiplicity, interaction authority, persistence, failure routing, and twenty-two acceptance cases.
Read the complete design guide