Repaint sidebar after child scrolls the host scroll region
Codex (Ratatui) emits an 8x RI burst on startup right after setting DECSTBM. RI at the top of the scroll region scrolls the region down, and DECSTBM only constrains rows -- so the scroll spans every column and drags the right-rail session-tree entries down with the main pane. The chrome cache then hid the clobber because the computed sidebar frame was unchanged. The viewport renderer now flags any chunk containing RI / IND / NEL / SU / SD / IL / DL and OnPTYOut drops the sidebar cache when the flag is set, so the next drawSidebar repaints over the drift. Adds unit tests for the new flag and a harness regression scenario (sidebar_survives_ri_scroll) that fails without the fix.
This commit is contained in:
15
CHANGELOG.md
15
CHANGELOG.md
@@ -45,6 +45,12 @@ loosely follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
extra row of viewport.
|
||||
|
||||
### Fixed
|
||||
- Child processes spawned by an orchestrator are now killed when the
|
||||
orchestrator dies, recursively through the tree. Applies whether the
|
||||
parent was closed via MCP, Ctrl-C'd by the user, or exited on its
|
||||
own — `reapChild` cascades a SIGTERM (escalating to SIGKILL after 2s)
|
||||
to every direct child, and each descendant's own reap fires the same
|
||||
cascade so the kill flows through arbitrary depth.
|
||||
- Killed agents no longer linger in the command palette. Agent
|
||||
entries that aren't running are filtered out of the switch list;
|
||||
session-persistent commands (which can be restarted) stay visible.
|
||||
@@ -85,6 +91,15 @@ loosely follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
cell, so any child write to that column (or `clearViewport`'s ECH)
|
||||
would erase it. The viewport is now one column narrower so the
|
||||
border has a dedicated column.
|
||||
- Sidebar session-tree entries no longer get pushed downward when an
|
||||
agent emits a scroll burst on startup. Codex (Ratatui) issues 8× RI
|
||||
(`\x1bM`) right after setting its scroll region, which scrolls the
|
||||
region down across every column — dragging the right-rail entries
|
||||
with it. The chrome cache then hid the clobber because the computed
|
||||
frame still matched. The viewport renderer now flags any chunk that
|
||||
contains a scroll-triggering escape (RI / IND / NEL / SU / SD / IL /
|
||||
DL) and `OnPTYOut` drops the sidebar cache when the flag is set, so
|
||||
the next `drawSidebar` repaints over the drift.
|
||||
|
||||
## Conventions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user