@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.
- package/package.json +3 -3
- 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.
|
|
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.
|
|
56
|
-
"@oh-my-pi/pi-utils": "12.12.
|
|
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,
|
|
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;
|