Files
fusion/packages
gsxdsm 20cc24038b fix(tui): partial fixes for resize / wrong-height layout
Several layered defenses against the layout occasionally rendering
at the wrong height (header pushed off-screen, content too tall).
Still not fully resolved — flag for further debug — but this
combination materially reduces frequency, especially under tmux/ssh.

* Enter alt-screen on start (\x1b[?1049h), leave on stop. Gives the
  TUI a dedicated fullscreen surface that doesn't share scrollback,
  so frames taller than the viewport clip cleanly instead of
  scrolling the header into shell history.
* Controller subscribes to process.stdout 'resize' and calls
  inkInstance.clear() — resets log-update's previous-frame line
  count so the next render isn't skewed by a stale clear region.
* App-level resize listener bumps a state counter and the root Box
  uses key={`${cols}x${rows}`} so React unmounts and remounts the
  whole tree on dimension change, bypassing any Yoga layout cache.
* Root Box gets explicit width={cols} + overflow="hidden" so
  overflow gets clipped instead of pushing siblings out.
* StatusBar: Text children now wrap="truncate-end" with
  flexShrink={0} on the outer Box. Default wrap="wrap" was letting
  long hotkey+URL strings wrap to 2 rows, throwing the row budget
  off by 1 — the proximate cause of the 151x46 wedge.
* MainHeader outer Box: flexShrink={0} + overflow="hidden" as
  belt-and-suspenders.
* Settings + Utilities side-by-side now match heights: UtilitiesPanel
  uses flexGrow={1} (was flexShrink={0}), so cross-axis stretch
  applies equally.
* StatusModeGrid receives rows as a prop again (single source of
  truth from App's render, instead of each child reading its own
  useStdout snapshot).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 01:07:59 -07:00
..
2026-04-25 00:42:43 -07:00