fix: keep full-height frames off the primary buffer during the alt-screen hop - #128
Conversation
There was a problem hiding this comment.
Caution
Changes requested ❌ — 1 issue
Reviewed ab0311f in 8 minutes, 20 seconds.
- Reviewed
1commit with26lines of code in1file - Ran
1review agent producing1comment where1was posted - This pipeline runs no gatekeeper, so findings are posted as written.
- View full details on ellipsis.dev
This review was created by . You can tag
@ellipsis in this pull request.
| // (and any earlier transcript) a screenful up into scrollback — exactly the | ||
| // rows the chat's scrollback view promises to leave in place. So the frames | ||
| // in the hop gap render nothing, same as the chat's own gap below. | ||
| const fullFrameHopGap = !altScreenOn |
There was a problem hiding this comment.
The hop gap is missing on the other primary→alt transition: ctrl+r's transcript browser still paints a full-height frame on the primary buffer. ConnectApp calls useAltScreen(windowed) at src/ui/ConnectApp.tsx:315 and throws the settled flag away, so the frame where windowed flips true commits with minHeight={rows - bottomSlack} (src/ui/ConnectApp.tsx:1526) and the <Static> transcript withheld — before the 1049h write.
In a chat whose transcript reaches the bottom of the terminal, pressing ctrl+r paints a screenful-tall frame at the cursor, scrolling the flushed transcript rows up; 1049h then saves the already-damaged primary buffer, so esc restores the shifted history. Same failure this PR fixes for the picker, reached by a different key.
Important
Prevents full-height UI frames from rendering during the alternate screen transition in
SessionsApp, which would cause them to paint on the primary buffer and shift the shell's scrollback history upward.fullFrameHopGapreturns early with an empty box instead of rendering the navigation picker or other full-height screens.This description was created by
for ab0311f. It will automatically update as commits are pushed.