You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 1e136bf
Browse filesBrowse the repository at this point in the historyBrowse files
"reason": "Align bounded regular-mode projections with emitted row identities and preserve native history across folding, footer shrink, redraw and resize.",
182
-
"behaviorImpact": "Native scrollback retains emitted snapshots and pre-launch shell history. Automatic folding and footer updates preserve scrolling; unmatched projections archive the visible body and start a labelled snapshot. Resize retains pending rows, forced redraw retains physical state, and historical image resources survive viewport repaints. Transient overlays use a separate terminal buffer and return to main on close or stop, preserving main geometry across resize."
183
+
"reason": "Align bounded regular-mode projections with emitted row identities and preserve native history across folding, footer shrink, redraw and resize. Diff isolated overlay frames and align short conversations at welcome rows. Preserve admitted row identity and observe deferred or inactive main-buffer resizes.",
184
+
"behaviorImpact": "Native scrollback retains emitted snapshots and pre-launch shell history. Automatic folding and footer updates preserve scrolling; unmatched projections archive the visible body and start a labelled snapshot. Resize retains pending rows, forced redraw retains physical state, and historical image resources survive viewport repaints. Transient overlays use a separate terminal buffer and return to main on close or stop, preserving main geometry across resize. Unchanged overlays emit no frame bytes; text changes repaint only affected rows. Background welcome and footer updates retain short-conversation history without replaying the banner or warnings. First submission does not replay existing output. Every physical resize is retained through backpressure and fullscreen ownership; short frames that still fit avoid a snapshot marker."
"reason": "Expose bounded row anchors, source-block retention and the transcript/footer boundary for regular-mode output snapshots.",
200
-
"behaviorImpact": "Regular renderers can distinguish projection eviction from retained-block presentation changes."
203
+
"reason": "Expose bounded row anchors, source-block retention and the transcript/footer boundary for regular-mode output snapshots. Distinguish prelude anchors and expose physical cursor hiding to cached renderers. Publish layout padding and physical resize observations for inactive main state.",
204
+
"behaviorImpact": "Regular renderers can distinguish projection eviction from retained-block presentation changes. Prelude rows cannot mask transcript replacement; nested overlays and coalesced cursor preference changes restore cursor visibility. Owners observe physical geometry before render scheduling, and row anchors can ignore only layout-owned leading padding."
Copy file name to clipboardExpand all lines: packages/tui/src/tui/engine/LOCAL_CHANGES.md
+20Lines changed: 20 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -215,3 +215,23 @@ Remove `L024` when the selected Pi baseline natively matches legacy-terminal `Ct
215
215
- Evidence: engine and application regressions verify host scroll position, unique emitted rows, Todo completion, grouped reads and long-turn/turn-window eviction, contiguous tables, transient panels, cursor placement, bounded caches, oversized footers, resize bursts, image-resource lifetime, forced refresh, and mode-state restore under xterm and an ED 2 clear-to-scrollback model.
216
216
- Boundary: old native rows retain their historical text and wrapping. Explicit resume-start clearing is unchanged. Native remote-host and cross-platform acceptance remain separate from local emulator verification.
217
217
- Removal condition: the selected upstream engine supports immutable native output with bounded anchored live projections.
218
+
219
+
220
+
## L046: Avoid idle overlay output and short-conversation replay
221
+
222
+
- Product contract: unchanged isolated overlays emit no frame bytes. Changed text rows repaint in place; cursor-only movement still updates IME position. Short conversations retain native scroll position when background connection/account status or footer height changes while the welcome occupies history.
223
+
- Minimal difference: MainScreen caches one normalized overlay frame and its physical cursor visibility. Entry, exit, forced refresh, restore and each geometry transition invalidate the cache; image changes retain full-frame repaint. Base cursor-hiding control paths update the visibility cache so nested panels and coalesced preference changes restore the cursor.
224
+
- Short conversations: ChatLayout publishes welcome row anchors in document mode. With block metadata, prelude anchors have no block identity and are excluded from transcript-replacement detection. Shared welcome rows cannot hide a new session or projection eviction. The existing immutable-history alignment and body/footer padding apply before the first transcript row reaches native history.
225
+
- Evidence: `tui-scrollback-stability.test.ts` covers idle/one-row overlay output, physical cursor changes, force refresh, resize roundtrips, close/reopen, short-conversation background state and footer changes, unique warning emission, and real transcript replacement. Independent emulator checks cover account notice height changes, image fallback and lifecycle boundaries.
226
+
- Boundary: retained native welcome rows keep their emitted status; the current visible welcome and footer render current state. This does not change content-review decisions, runtime warning events or native-host guarantees.
## L047: Preserve output identity and deferred main-buffer geometry
231
+
232
+
- Product contract: admitting an optimistic user message keeps its emitted history identity, including long prompts. Consecutive resizes preserve every output row even while writes are held or the fullscreen renderer owns the terminal. Switching modes snapshots main state after any final resize flush.
233
+
- Minimal difference: MainScreen tracks physical geometry separately from the last rendered frame and exposes the same resize calculation for an inactive saved main state. The base renderer forwards physical resize events to its owner before scheduling frames. Reflow that still fits on screen repaints in place; only potentially scrolled reflow needs an archived snapshot. Row alignment ignores declared layout padding and recognizes retained row identities when a source block id changes.
234
+
- Product integration: the transcript keeps canonical store ids while carrying an optional emitted-row identity across admission. ChatLayout publishes its outer padding. The interactive renderer observes inactive main-buffer resizes and captures state after stop has flushed pending output.
235
+
- Evidence: actual application submission tests cover three terminal sizes and a 120-line prompt. Scrollback tests cover five held-output resize sequences, three fullscreen resize sequences and a mode switch with a pending resized frame. Existing IME tests assert cursor position at synchronized frame boundaries after short-document width changes; overlay reflow tests retain overflowed history.
236
+
- Boundary: resize tracking models the existing local emulator host behavior. Native remote-host and cross-platform acceptance remain separate; genuinely unalignable history still starts a labelled snapshot.
237
+
- Removal condition: upstream retains emitted row identity through admission and tracks physical main-buffer geometry across deferred frames and renderer ownership changes.
0 commit comments