@oh-my-pi/pi-tui 12.12.1 → 12.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +3 -3
  2. package/src/tui.ts +4 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oh-my-pi/pi-tui",
3
- "version": "12.12.1",
3
+ "version": "12.12.3",
4
4
  "description": "Terminal User Interface library with differential rendering for efficient text-based applications",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -52,8 +52,8 @@
52
52
  "bun": ">=1.3.7"
53
53
  },
54
54
  "dependencies": {
55
- "@oh-my-pi/pi-natives": "12.12.1",
56
- "@oh-my-pi/pi-utils": "12.12.1",
55
+ "@oh-my-pi/pi-natives": "12.12.3",
56
+ "@oh-my-pi/pi-utils": "12.12.3",
57
57
  "@types/mime-types": "^3.0.1",
58
58
  "chalk": "^5.6.2",
59
59
  "marked": "^17.0.2",
package/src/tui.ts CHANGED
@@ -218,6 +218,7 @@ export class TUI extends Container {
218
218
  #maxLinesRendered = 0; // Track terminal's working area (max lines ever rendered)
219
219
  #previousViewportTop = 0; // Track previous viewport top for resize-aware cursor moves
220
220
  #fullRedrawCount = 0;
221
+ #clearScrollbackOnNextFullRender = false;
221
222
  #stopped = false;
222
223
 
223
224
  // Overlay stack for modal components rendered on top of base content
@@ -430,6 +431,7 @@ export class TUI extends Container {
430
431
  this.#hardwareCursorRow = 0;
431
432
  this.#maxLinesRendered = 0;
432
433
  this.#previousViewportTop = 0;
434
+ this.#clearScrollbackOnNextFullRender = true;
433
435
  }
434
436
  if (this.#renderRequested) return;
435
437
  this.#renderRequested = true;
@@ -880,7 +882,7 @@ export class TUI extends Container {
880
882
  const fullRender = (clear: boolean): void => {
881
883
  this.#fullRedrawCount += 1;
882
884
  let buffer = "\x1b[?2026h"; // Begin synchronized output
883
- if (clear) buffer += "\x1b[3J\x1b[2J\x1b[H"; // Clear scrollback, screen, and home
885
+ if (clear) buffer += this.#clearScrollbackOnNextFullRender ? "\x1b[3J\x1b[2J\x1b[H" : "\x1b[2J\x1b[H"; // Clear viewport (and optionally scrollback), then home
884
886
  for (let i = 0; i < newLines.length; i++) {
885
887
  if (i > 0) buffer += "\r\n";
886
888
  buffer += newLines[i];
@@ -898,6 +900,7 @@ export class TUI extends Container {
898
900
  } else {
899
901
  this.#maxLinesRendered = Math.max(this.#maxLinesRendered, newLines.length);
900
902
  }
903
+ this.#clearScrollbackOnNextFullRender = false;
901
904
  this.#previousViewportTop = Math.max(0, this.#maxLinesRendered - height);
902
905
  this.#previousLines = newLines;
903
906
  this.#previousWidth = width;