Chinese specification and interactive prototype
Each layout occupies one top-level tab. Its serializable n-ary tree contains row and column splits with normalized weights and pane leaves referencing existing tabs. Existing two-pane groups migrate to row splits with their saved ratio. Content appears once within a layout.
The canvas has no persistent layout toolbar. Right-click a pane header to access presets, split actions, equalization and saved layouts. Dragging and keyboard shortcuts remain available directly.
Drag a tab or pane header to a pane edge to split it. The central 40% replaces its content and returns the previous content to the strip. The outer six pixels split the entire canvas. Drag a pane back to the strip to detach it; desktop transfers retain layout metadata. Closing a pane returns its content to the strip without closing the session.
Presets include single, two columns, two rows, main plus two, and grids of four, nine and sixteen. Existing contents populate presets in reading order; overflow returns to the strip. Empty panes offer available tabs. Layouts can be named and saved locally.
Drag separators to resize, double-click to equalize adjacent siblings, or use arrow keys on a focused separator. Command/Control + Backslash splits right; adding Shift splits below. Command/Control + Shift + Enter toggles zoom. Command/Control + W closes the focused pane in a multi-pane layout. Alt + Command/Control + arrow moves spatial focus.
Recursive geometry calculation feeds stable content hosts. Tree edits and zoom do not reparent content components. Zoom hides sibling panes. Tiny panes show their title and type with a zoom action. Native web views report individual bounds. During dragging, undersized presentation or beyond the eight-visible-view allowance, they show captured images. Selecting a paused view gives it priority. Hidden native views remain alive; this is not process termination.
The existing window tab payload stores each group's canvas tree, focus and zoom. Missing content references become empty panes. Cross-window payload validation bounds tree depth, node count, and serialized size independently of the normal layout editor. Resources attachment continues to use its existing backend ownership operation.
The tree, store actions, canvas controls, drop presentation, snapshot presentation and persistence are implemented in source. TypeScript compilation succeeds. Live App acceptance is distinct from source compilation.
Dragging a pane into the top tab strip shows the same blue rounded drop preview as canvas docking. The cue follows the actual tab-strip bounds and disappears when leaving or cancelling; releasing inside those bounds returns the pane to a standalone tab.