dogfood v2.2.12: port of #29609, a scroll region scroll breaks the soft wrap across its edges (E2)

Merged
LA
5d ago
+67-6

Summary

  • Port of #29609 (feat squash b2ec1ee1b6d) to the dogfood line, by cherry-pick. No force push.
  • This line pins ghostty-next ef6ce279a (9ce9b7d08 plus "fitGrid returns null when no whole cell fits after padding"). A plain pin to feat's 8444cc1eb would drop that commit. So the pin is fork branch release/cmux-ef6ce279-e2 = ef6ce279a plus only the commits of feat's 9ce9b7d08..8444cc1eb. git diff 8444cc1eb 3a82309b9 shows only src/Surface.zig, which is this line's own commit.
  • GhosttyNextKit xcframework-3a82309b9309ce9a0dde48fa63e85869c7aa2657-apple-v6 (sha256 340e4bee...4eb5, release run 41250275372). The patch unit tests in that run include the new Zig tests.

Testing

  • Red on this line: journey r3-e2-reattach (kit c370e63cead) failed in 3 of 3 valid rounds on dogfood build 4b3bd8a20dc17d9054221533 (cmux21 22:00Z, 22:02Z, 22:04Z) at the replay compare.
  • Green: the journey on a build of this head. Results are in a comment below.

Observed / Not run

  • Observed: the red rounds above and the fork release run.
  • Not run yet: the journey on this head's build, and the Rust replay test on this head.

Changelog

  • Fixed: a terminal row under a scroll region no longer moves to the right after cmux reattaches to its session.

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Ports the scroll region wrap fix (#29609) to the dogfood v2.2.12 line. Previously, scrolling inside a DECSTBM region broke the soft wrap across the region edge, and the attach replay drew the row under the region 43 or 163 columns to the right; now the wrap and wrap_continuation flags are cleared on both sides of a full-width region scroll, and the unwrap formatter no longer carries trailing blank cells into a wrap_continuation row after a line break. The row under the region stays in its column when cmux reattaches to its session.

Notes

  • Pins ghostty-next to fork branch release/cmux-ef6ce279-e2 (the prior pin plus only the feat's commits), keeping the fitGrid null fix; notices and docs/ghostty-fork.md are updated.
  • The new Rust test vt_replay_keeps_a_stale_wrap_continuation_row_in_its_column reproduces the bug: it failed on the old kit (3 of 3 journey rounds) and passes at this head.