split-panels · git:20260918.edf328f · 2026-09-18 · sha256 01121fcbfe999e7c
split-panels git:20260918.edf328fA
Immutable. This exact content is served forever at /api/v1/blob/01121fcbfe999e7c.
--- description: Tile-opened dock panels stay inside that split pane alwaysApply: true --- # Split panels stay in the tile A terminal, browser, files, or git panel opened from a tiled conversation's header (or its shortcut while tiled) lands in **that tile's** dock. It is never a window-level column or row beside the whole conversation grid. - Tile open → `usePaneDock` for that session. Window open (before split, or the undivided window menu) → `useDock`. - Do not "fix" an empty title strip by moving the panel out of the tile. The tile title bar lives in the conversation slot only; the panel keeps its own header and grip. - After split, a tile panel stays draggable **inside that tile**. A panel that was already on the window dock stays on the window dock and stays draggable there. - **Compute room before insert or move.** `placePanel` / `viableDrops` ask whether the tile's pixel span still clears every floor. A landing that would crush the conversation is refused; the pane opens in a new window instead. Drag preview treats a non-viable `at` as no drop. - Browser, terminal, files, git and the other panels can leave for a real window from their header, and restore to the remembered dock slot. Restore stays on that tile's dock. If the tile is gone, the floating window stays; it does not jump onto the window dock. - E2E must keep both assertions: in-tile (`windowLevel === 0`, nested inside `[data-ly-split-pane]`) and no split chrome overlapping that panel. Also: a 2×2 tile that opens a second panel must not produce a conversation sliver.