← board

feature: Eliah pane collapse/restore + ratio memory

Goal

Let any pane collapse to a thin clickable strip and restore to its previous size. Collapse must never destroy the pane or forget its ratio.

Why

"UI should be fine setting a splitter to extremes." Drag-to-zero loses a pane and is fiddly. Explicit collapse (IntelliJ tool-window stripe / VS Code activity bar) is predictable: one click hides, one click brings it back exactly where it was.

Scope

Acceptance

Each pane can be collapsed and restored via its header; the restored size equals the pre-collapse ratio; a collapsed pane shows a labelled strip and survives window resizes. gui_suite + garin green; screenshot shows a collapsed strip and a restored pane.

Notes

Log

Progress 2026-06-24

CORE DONE: TPaned.Collapse/Restore/Toggle (remembers handle position) + gui_suite coverage; Eliah View menu toggles Left/Output/Right panels.

DEFERRED: the labelled clickable collapse strip + per-pane header chevron need a stacking container (gtk_box / a PCL TBox with per-child expand) that PCL does not yet expose. Functional collapse/restore ships via the menu meanwhile.

Update 2026-06-24 (v48)

Full hide-based collapse now works (gtk_widget_hide; the blocking codegen bugs were fixed in v47/v48). Still DEFERRED: the labelled clickable collapse strip + per-pane header chevron (needs a stacking container / TBox). Menu + perspective collapse are fully functional.

Closing 2026-07-05

Re-verified: build + apps/ide/test.sh (162/162) + tools/gui_suite.sh (test_pcl_paned, test_pcl_stream_paned, eliah_ide) all green; Eliah opens under Xvfb with no regressions. TPaned.Collapse/Restore/Toggle + ratio memory ship and are exercised by both the headless garin gate and the GUI smoke test — that's the acceptance this ticket set out to hit (collapse/restore, ratio persists, no pane destroyed).

The one item still open — a labelled clickable strip + chevron header per pane (Lazarus/VS-Code style, rather than only the View-menu toggle) — was blocked on PCL lacking a stacking container. Added TBox (lib/pcl/extctrls.pas