mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-29 18:46:59 +00:00
Pop-out was one flag and one position for the whole window, and every keep-alive-mounted tab re-clamped that position against its own rect and wrote it back. So floating the composer in one pane floated it in every pane, and N surfaces raced for one value with the last writer winning — a drag in one tab was lost in the next. State is now keyed by layout group, the scope users actually mean: tabs in a zone share a float, a split zone beside them keeps its own. Within a zone the stored position is intent, and each surface derives what it renders through the pure clampPopoutPosition against its own rect. Re-placing is gated on pane visibility so a live drag can't force a reflow in every background tab, and runs pre-paint so a revealed tab never shows a stale frame. Storage is written on release rather than per drag frame, dead zones are pruned against the live tree, and the pre-zone value seeds one first read so an existing float survives the upgrade without leaking into zones split later. |
||
|---|---|---|
| .. | ||
| bootstrap-installer | ||
| desktop | ||
| shared | ||