Repository navigation
ghostty-next: a clear of rows (ED, DECALN) breaks the soft wrap across the cleared rows' edges - #30012
Conversation
… into the cleared screen (red; E2 class) Review of #29775: clearRows resets the cleared rows, but the scrollback row above the screen kept wrap=true. After ED 2 (or DECALN) and a wider resize, reflow joined that row and the new text on row 0 into one line ("abcdeXY"). Red at pin 84a225487 (fleet step e3b896d45e34435553a6e67a on a probe branch with the same tests).
…s the cleared rows' edges Pins GhosttyNextKit xcframework-34e73ba8ba7cb8da0115caeb780065e3a12f2f62-apple-v6 (checksum 32cb09bb... from its SHA256SUMS) and moves the gitlink and the notices with it. ghostty-next 84a225487..34e73ba8b on release/cmux-9ce9b7d0-e2 is the second part of fork PR #68 only: clearRows reset the cleared rows, but the row above the range kept wrap=true (a scrollback row for ED 2 and DECALN) and the row below kept wrap_continuation=true (the cursor row after ED 1). It now breaks both edges after a full clear; a protected clear keeps its row flags. Red: vt_ed2_breaks_the_wrap_from_scrollback_into_the_cleared_screen and vt_decaln_breaks_the_wrap_from_scrollback_into_the_filled_screen fail on 1602522 (pin 84a225487: "abcdeXY" after a resize). Fork red: run 41251885912 (3 of 3 clearRows Zig tests fail without the fix). Fork green: PR #68 run 41251888717, broad run 41254020927 (2297 of 2297 libghostty-vt tests) and the release run 41255186701, which published this kit.
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by Shipped in:
|
|
Review (Opus 5.5 review subagent): SHIP at efcaaf4 Independent review subagent (read-only). It checked the clearRows edge breaks for every caller (ED 2 including the alt screen and after scrollClear, ED 0, ED 1, DECALN), the defer order and pin validity, the cases where bl is null or the last row and the protected clear, the cost (a compressed history page is restored only when row 0 truly continued it), the Zig and Rust test traces, and the URL and checksum (sha256sum -c of the release assets). It also checked that every doc ID is on release/cmux-9ce9b7d0-e2. Fleet evidence on this PR's exact commits: |
|
Found 9 test failures on Blacksmith runners: Failures
|
…aks the soft wrap across the cleared rows' edges (port of #30012) Port 8bcebcc of feat PR #30012 (squash 41744d2). The pin is resolved for this line: ghostty-next release/cmux-ef6ce279-e2 at d94ab9a53 (this line's previous pin 7f8d846b2 plus only fork PR #68 part 2, the same commits as feat's 84a225487..34e73ba8b), GhosttyNextKit xcframework-d94ab9a530c4104bec04bced642fafe3ce100235-apple-v6. PR #30118. Port review: Review (Opus 5.5 review subagent): SHIP at 8bcebcc. Red on this line: step a3bae98bf88bf0ee72f38f83 (both vt_clear_rows_wrap_edges tests fail on this line's pin 7f8d846b2). Green: step 047498fb482df20f1a097868 (45 of 45 vt_ tests on the port head). Journey r3-e2-reattach (kit c370e63) passed 3 of 3 on port build 87d7a64e572cc9b809efd7e9 (cmux19 04:33Z, 04:35Z, cmux24 04:38Z).
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Summary
clearRows(ED 0, 1 and 2, DECALN) reset the cleared rows. But the row above the range keptwrap=true(a scrollback row for ED 2 and DECALN), and the row below keptwrap_continuation=true(the cursor row after ED 1). After a wider resize, reflow then joined the scrollback row and the new text into one line, for example "abcdeXY".clearRowsbreaks the soft wrap across both edges of the range. A protected clear keeps its row flags. ThebreakWrapAbovecomment that said "every clear clears both" is corrected.xcframework-34e73ba8ba7cb8da0115caeb780065e3a12f2f62-apple-v6, onrelease/cmux-9ce9b7d0-e2. That release is 84a225487 (the ghostty-next: the wrap edge break reads a compressed history row only when the pair was joined #29775 pin) plus only this change. The gitlink, the notices anddocs/ghostty-fork.md(release-branch commit IDs) move with it.Testing
Red first. The focused command is
cmux-ci run --class light --script scripts/ci/cmux-tui-rust-check.sh --arg test --arg breaks_the_wrap_from_scrollback --ref SHA.vt_clear_rows_wrap_edges.rsfail. Fleet step 0f6924a3ee8f463e83dca258 ran on the same commit on its first branch.vt_tests pass.Observed / Not run
32cb09bbc69510a099df9206a460cc8e7f2aba41a1a5489de98f185da07154a4, which is the checksum in Package.swift.Changelog