Shared-boundary panel resizing¶
Required follow-up #3291 under #3067, extending the completed ordering delivery #3278 / #3225.
Wide review workspaces expose a vertical shared handle between split columns and horizontal handles between adjacent rows. Drag or focus a separator and use the corresponding arrow keys; Shift makes larger steps, Home/End select the usable extremes. Separators announce orientation and the first track's share. Row shares describe adjustable space after reserving minimum heights. Save layout persists the current proportions; Reset layout explicitly saves default proportions when followed by Save.
Columns retain 320px/420px minimums and switch to stacked tracks only when those columns and their shared boundary cannot fit. Resizing remains available on narrow and short screens: rows reserve 180px each, and a short workspace grows vertically to retain adjustable space. Panel contents scroll inside their tracks; saved split proportions return when the columns fit again. The same keyed panel templates stay mounted throughout resizing and fallback. The existing default-off review redesign boundary remains unchanged.
The existing reviewer/capability dictionary gains optional PanelSizes (ColumnFraction, RowFractions). Row proportions follow positions in the selected order. Old clients omitting sizes preserve stored values. Readers deployed before #3225's ignore-extra mapping must be updated before new fields are written; this does not repair an already deployed older binary. Source mode/bounds remain separate additive preferences, integrated from #3230. Floating and detached Source retain their mounted view without reserving an inline track; separators resize only the remaining adjacent panels and leave the saved Source share untouched. Returning to embedded restores the complete grid. There is no per-stage-ID schema or general grid builder.
Verification covers pointer/keyboard changes, adjacent-track minimums, stable component instances and drafts, focus, save payloads, responsive preference preservation, strict API validation, and actual Mongo reload/older-client omission. Browser acceptance remains a separate integration check; unit geometry inputs are deterministic contracts, not browser screenshots.
Study source uses the same Embedded, Floating and Separate window buttons on its own panel and in the separate source window. Embedded mode shows the controls only on the source; floating and detached modes also show them on the main review page. The floating panel measures the main navigation toolbar and stays below it, including after scrolling or banner-height changes, without overwriting the saved preferred position.