From f5751683a5e89225f9223e7da0817b239cbc4d74 Mon Sep 17 00:00:00 2001 From: "Orca (ecs-claude)" Date: Thu, 20 Aug 2026 21:48:29 +0800 Subject: [PATCH 1/2] feat(console): wider drag-resize budget for the two-column split MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Brett: wants more adjustment budget for the left/right columns. Widened splitPane.ts's clamp range from 280–900px to 220–1200px. Added a 360px floor on `.drilldown-main` (styles.css) so dragging the side toward the new 1200px max can't crush the left column unreadable, and raised `.drilldown-side`'s vw-relative backstop from 70vw to 85vw to match (it's a safety net for window sizes the px bounds don't anticipate, not the primary limit — was already narrower than the old 900px max on anything under ~1285px wide). ## Verification - `tsc --noEmit` — clean - `vitest run` — 97/97 passing (splitPane.test.ts asserts against the exported MIN_WIDTH/MAX_WIDTH constants, not hard-coded numbers, so it covers the new range automatically) - `vite build` — clean - Playwright: dragged to both extremes on a 1600px window — side bottoms out at exactly 220px, tops out at exactly 1200px with `.drilldown-main` correctly held to its 360px floor rather than being squeezed further. 🤖 Generated by Orca ('ecs-claude'). --- console/src/splitPane.ts | 7 +++++-- console/src/styles.css | 10 +++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/console/src/splitPane.ts b/console/src/splitPane.ts index e5985f9..d119110 100644 --- a/console/src/splitPane.ts +++ b/console/src/splitPane.ts @@ -4,8 +4,11 @@ // (same split as theme.ts/theme toggle). const STORAGE_KEY = "oab-studio.drilldown-side-width"; -export const MIN_WIDTH = 280; -export const MAX_WIDTH = 900; +// Brett: wanted more adjustment budget than 280–900 — widened both ends. +// `.drilldown-main` gets its own 360px floor (styles.css) so the left column +// can't get crushed unreadable when the side is dragged near MAX_WIDTH. +export const MIN_WIDTH = 220; +export const MAX_WIDTH = 1200; export const DEFAULT_WIDTH = 420; // Pure: clamp a candidate side-column width (px) into the allowed range. diff --git a/console/src/styles.css b/console/src/styles.css index d184f82..df395ad 100644 --- a/console/src/styles.css +++ b/console/src/styles.css @@ -209,7 +209,9 @@ body { } .drilldown-main { flex: 1 1 0; - min-width: 0; + /* A floor so dragging .drilldown-side toward MAX_WIDTH (splitPane.ts) + can't crush this column unreadable. */ + min-width: 360px; display: flex; flex-direction: column; } @@ -258,8 +260,10 @@ body { } .drilldown-side { flex: 0 0 var(--drilldown-side-w, 420px); - min-width: 280px; - max-width: 70vw; + /* Mirrors splitPane.ts's MIN_WIDTH/MAX_WIDTH — a vw-relative backstop for + window sizes those px bounds don't anticipate, not the primary limit. */ + min-width: 220px; + max-width: 85vw; display: flex; flex-direction: column; gap: 12px; From 2bca651579e0c6d1cc06af9fd35904d069811a39 Mon Sep 17 00:00:00 2001 From: "Orca (ecs-claude)" Date: Thu, 20 Aug 2026 23:56:27 +0800 Subject: [PATCH 2/2] feat(console): draggable height for the Fleets/chat row above the editor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Brett: also wants to scale the size of the top/bottom (the drilldown row vs. whatever's below it — today just the fleets.toml/agents.toml editor). New `rowResize.ts`, same pure-clamp/persist + DOM-wiring split as `splitPane.ts` (the left/right column version) but for height: drag `#row-resizer` up/down to shrink/grow `.drilldown-row`, persisted to localStorage, clamped 160–2000px. The row has two modes now: - Normal (editor closed): unchanged — auto-fills to the window's bottom edge via `syncDrilldownHeight`'s `min-height`, no resizer shown (nothing below to divide space against). - Split (editor open): `.drilldown-row.is-split` swaps `min-height` for a fixed `height` + `overflow-y: auto`, so it can be dragged shorter than its content (which then scrolls inside the row) as well as taller. `openEditor`/`closeEditor` (main.ts) toggle the class, show/hide the resizer, and apply/restore the right height — `initRowResize`'s `onChange` hook re-runs `syncEditorHeight` on every drag tick so the editor reflows live instead of only after the drag ends. ## Verification - `tsc --noEmit` — clean - `vitest run` — 102/102 passing (5 new: rowResize.test.ts, mirrors splitPane.test.ts) - `vite build` — clean - Playwright: confirmed the resizer is hidden/row auto-fills before the editor opens; opening shows the resizer and switches to the 360px default split height; dragging +150px grows the row and the editor's own fill height shrinks to match live; closing restores full auto-fill and hides the resizer again. 🤖 Generated by Orca ('ecs-claude'). --- console/index.html | 5 +++ console/src/main.ts | 42 ++++++++++++++++---- console/src/rowResize.test.ts | 26 ++++++++++++ console/src/rowResize.ts | 74 +++++++++++++++++++++++++++++++++++ console/src/styles.css | 36 +++++++++++++++++ 5 files changed, 176 insertions(+), 7 deletions(-) create mode 100644 console/src/rowResize.test.ts create mode 100644 console/src/rowResize.ts diff --git a/console/index.html b/console/index.html index 5274b90..f3321b1 100644 --- a/console/index.html +++ b/console/index.html @@ -164,6 +164,11 @@ + +