fix(split): Pane B and its PTY never disagree about size (#464)

- Font size, family and weight changes refit Pane B AND tell its PTY.
  They used to reflow the xterm only, leaving the CLI wrapping at the old
  column count, the garbled-redraw class #464 fixed for the primary pane.
- The resize frame reports the size the xterm actually holds, with no
  40x10 floor (the divider's 20% clamp leaves about 28 columns), skips
  an unchanged size, and is always re-sent on a fresh socket so it
  re-registers as a desktop viewer.
- The server's {t:'zc'} geometry report is handled: a different column
  count is adopted, rows stay local, using the primary pane's own
  reconcilePtyGeometry verdict.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer
2026-10-06 10:07:40 +02:00
parent 0ec17633ba
commit a54ad81684
4 changed files with 171 additions and 29 deletions
+3 -3
View File
@@ -5735,7 +5735,7 @@ Object.assign(CodemanApp.prototype, {
this._predictiveEcho?.refreshFont();
this._forEachTile?.((tile) => {
tile.terminal.options.fontSize = size;
tile.localFit();
tile.fit(); // a font change is a size change: tell its PTY too (#464)
});
},
@@ -5764,7 +5764,7 @@ Object.assign(CodemanApp.prototype, {
this._predictiveEcho?.refreshFont();
this._forEachTile?.((tile) => {
tile.terminal.options.fontFamily = resolved;
tile.localFit();
tile.fit(); // a font change is a size change: tell its PTY too (#464)
});
},
@@ -5820,7 +5820,7 @@ Object.assign(CodemanApp.prototype, {
this._forEachTile?.((tile) => {
tile.terminal.options.fontWeight = fontWeight;
tile.terminal.options.fontWeightBold = fontWeightBold;
tile.localFit();
tile.fit(); // a font change is a size change: tell its PTY too (#464)
});
},