Open
Conversation
4d7db9b to
ab910d2
Compare
Move split-footer stdout interception to a renderer-local queue and flush pending output before switching to passthrough, so footer routing no longer depends on shared console capture. Centralize clamped split geometry, mode transitions, resize, and test renderer setup.
Add a CliRendererConfig option, clearOnShutdown. When clearOnShutdown is false, it skips region-clearing sequences.
Batch captured split-footer commits into a single synchronized render frame and keep frame boundaries explicit with begin/finalize flags so we stop re-toggling sync/cursor state per chunk. Restore bounded DECSTBM only when pinned so appended output scrolls the upper pane instead of overwriting footer rows, and add regression coverage plus demo stress controls to lock the behavior in.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Split-footer mode on main flushes captured stdout in TypeScript
before the native frame, producing a two-phase clear/repaint
flicker. The capture queue is coupled to the global console
singleton, so footer routing reacts to console writes even in
passthrough mode. And a bunch of TODO since this was mostly
a proof of concept.
Move split-footer ownership into native. A new SplitScrollback
model tracks published rows and tail column; the footer settles
downward as scrollback grows and pins at the bottom boundary.
Captured stdout and a new writeToScrollback() API both produce
OptimizedBuffer snapshots that the native side emits as styled
ANSI in one atomic output buffer alongside the footer repaint.
Centralize geometry clamping so footerHeight > terminalHeight
cannot produce negative renderOffset. Flush pending output
before resize, suspend, mode transitions, and destroy. Detect
the real cursor row at startup via CPR so the footer starts at
the actual position rather than row 1.