mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-09 13:21:42 +00:00
Two resize fixes for a steadier TUI under aggressive terminal resizing. 1. Drag-resize flicker (useMainApp): `cols` was synced to `stdout.columns` synchronously on every 'resize' event. Each distinct width remounts the visible transcript rows (they're keyed on cols so yoga re-measures off live geometry), so a drag — which fires a burst of resize events — turned into a per-tick remount storm that flickers and stutters. Throttle the sync with a leading+trailing edge: the first event reflows immediately (stays responsive), the rest collapse to at most one reflow per RESIZE_COALESCE_MS (~30fps), and the trailing edge always applies the final width so the settled layout is exact. 2. Resize-burst heal coverage (#18449): the existing ink-resize test only exercised a single same-dimension event. Add two regressions that drive a rapid resize *burst* (wobbling dims that settle back to the start, and an isolated same-dimension event with no tree change) and assert the renderer converges to a clean erased repaint — screen erased, then content repainted after — rather than a partial diff over drifted cells. This also relaxes the pre-existing single-event assertion, which hard-coded the exact bytes `ESC[2J ESC[H`; the heal legitimately interposes `ESC[3J` (erase scrollback) on some recovery paths, so all three tests now assert the semantic invariant instead of a byte run. |
||
|---|---|---|
| .. | ||
| __tests__ | ||
| app | ||
| components | ||
| config | ||
| content | ||
| domain | ||
| hooks | ||
| lib | ||
| protocol | ||
| types | ||
| app.tsx | ||
| banner.ts | ||
| entry.tsx | ||
| gatewayClient.ts | ||
| gatewayTypes.ts | ||
| theme.ts | ||
| types.ts | ||