4runr-os 2.0.39 → 2.0.41
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/dist/ui/v5/debug/debugCommands.d.ts +20 -0
- package/dist/ui/v5/debug/debugCommands.d.ts.map +1 -0
- package/dist/ui/v5/debug/debugCommands.js +104 -0
- package/dist/ui/v5/debug/debugCommands.js.map +1 -0
- package/dist/ui/v5/guardrails/stdoutGuard.d.ts +23 -0
- package/dist/ui/v5/guardrails/stdoutGuard.d.ts.map +1 -0
- package/dist/ui/v5/guardrails/stdoutGuard.js +94 -0
- package/dist/ui/v5/guardrails/stdoutGuard.js.map +1 -0
- package/dist/ui/v5/guardrails/terminalRestore.d.ts +17 -0
- package/dist/ui/v5/guardrails/terminalRestore.d.ts.map +1 -0
- package/dist/ui/v5/guardrails/terminalRestore.js +47 -0
- package/dist/ui/v5/guardrails/terminalRestore.js.map +1 -0
- package/dist/ui/v5/index.d.ts +13 -3
- package/dist/ui/v5/index.d.ts.map +1 -1
- package/dist/ui/v5/index.js +48 -39
- package/dist/ui/v5/index.js.map +1 -1
- package/dist/ui/v5/kernel/kernel.d.ts +80 -0
- package/dist/ui/v5/kernel/kernel.d.ts.map +1 -0
- package/dist/ui/v5/kernel/kernel.js +283 -0
- package/dist/ui/v5/kernel/kernel.js.map +1 -0
- package/dist/ui/v5/layout/clampRect.d.ts +22 -0
- package/dist/ui/v5/layout/clampRect.d.ts.map +1 -0
- package/dist/ui/v5/layout/clampRect.js +40 -0
- package/dist/ui/v5/layout/clampRect.js.map +1 -0
- package/dist/ui/v5/layout/layoutEngine.d.ts +16 -0
- package/dist/ui/v5/layout/layoutEngine.d.ts.map +1 -0
- package/dist/ui/v5/layout/layoutEngine.js +99 -0
- package/dist/ui/v5/layout/layoutEngine.js.map +1 -0
- package/dist/ui/v5/resize/resizeController.d.ts +62 -0
- package/dist/ui/v5/resize/resizeController.d.ts.map +1 -0
- package/dist/ui/v5/resize/resizeController.js +133 -0
- package/dist/ui/v5/resize/resizeController.js.map +1 -0
- package/dist/ui/v5/viewport/getViewport.d.ts +19 -0
- package/dist/ui/v5/viewport/getViewport.d.ts.map +1 -0
- package/dist/ui/v5/viewport/getViewport.js +98 -0
- package/dist/ui/v5/viewport/getViewport.js.map +1 -0
- package/dist/ui/v5/viewport.js +2 -2
- package/dist/ui/v5/viewport.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V5 Atomic Resize Controller
|
|
3
|
+
*
|
|
4
|
+
* Debounced resize handling with atomic rebuild strategy.
|
|
5
|
+
*
|
|
6
|
+
* Strategy: rebuild children on resize (remove/destroy all, recreate fresh)
|
|
7
|
+
* This avoids "ghost borders" and duplicated panels.
|
|
8
|
+
*/
|
|
9
|
+
import { getViewport } from '../viewport/getViewport.js';
|
|
10
|
+
export class ResizeController {
|
|
11
|
+
screen;
|
|
12
|
+
kernel;
|
|
13
|
+
timer = null;
|
|
14
|
+
layoutVersion = 0;
|
|
15
|
+
lastCommitted = { cols: 0, rows: 0 };
|
|
16
|
+
pending = { cols: 0, rows: 0 };
|
|
17
|
+
burstCount = 0;
|
|
18
|
+
lastResizeTs = 0;
|
|
19
|
+
lastSource = '';
|
|
20
|
+
constructor(screen, kernel) {
|
|
21
|
+
this.screen = screen;
|
|
22
|
+
this.kernel = kernel;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Start listening to resize events
|
|
26
|
+
*/
|
|
27
|
+
start() {
|
|
28
|
+
// Listen to screen resize
|
|
29
|
+
this.screen.on('resize', () => {
|
|
30
|
+
this.onResizeEvent('screen');
|
|
31
|
+
});
|
|
32
|
+
// Listen to process.stdout resize (Windows can be weird)
|
|
33
|
+
if (process.stdout.on) {
|
|
34
|
+
process.stdout.on('resize', () => {
|
|
35
|
+
this.onResizeEvent('stdout');
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Stop listening to resize events
|
|
41
|
+
*/
|
|
42
|
+
stop() {
|
|
43
|
+
if (this.timer) {
|
|
44
|
+
clearTimeout(this.timer);
|
|
45
|
+
this.timer = null;
|
|
46
|
+
}
|
|
47
|
+
// Remove listeners
|
|
48
|
+
if (typeof this.screen.removeAllListeners === 'function') {
|
|
49
|
+
this.screen.removeAllListeners('resize');
|
|
50
|
+
}
|
|
51
|
+
if (process.stdout && typeof process.stdout.removeAllListeners === 'function') {
|
|
52
|
+
process.stdout.removeAllListeners('resize');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get current layout version
|
|
57
|
+
*/
|
|
58
|
+
getLayoutVersion() {
|
|
59
|
+
return this.layoutVersion;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get last committed size
|
|
63
|
+
*/
|
|
64
|
+
getLastCommitted() {
|
|
65
|
+
return { ...this.lastCommitted };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get burst count
|
|
69
|
+
*/
|
|
70
|
+
getBurstCount() {
|
|
71
|
+
return this.burstCount;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get last resize timestamp
|
|
75
|
+
*/
|
|
76
|
+
getLastResizeTs() {
|
|
77
|
+
return this.lastResizeTs;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get last resize source
|
|
81
|
+
*/
|
|
82
|
+
getLastSource() {
|
|
83
|
+
return this.lastSource;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Handle resize event (debounced)
|
|
87
|
+
*/
|
|
88
|
+
onResizeEvent(source) {
|
|
89
|
+
const vp = getViewport(this.screen);
|
|
90
|
+
this.pending = { cols: vp.cols, rows: vp.rows };
|
|
91
|
+
this.burstCount++;
|
|
92
|
+
this.lastResizeTs = Date.now();
|
|
93
|
+
if (this.timer) {
|
|
94
|
+
clearTimeout(this.timer);
|
|
95
|
+
}
|
|
96
|
+
// Debounce: 120-180ms (use 150ms)
|
|
97
|
+
this.timer = setTimeout(() => {
|
|
98
|
+
this.commitResize(source);
|
|
99
|
+
}, 150);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Commit resize (atomic)
|
|
103
|
+
*/
|
|
104
|
+
commitResize(source) {
|
|
105
|
+
this.timer = null;
|
|
106
|
+
const vp = getViewport(this.screen);
|
|
107
|
+
const cols = vp.cols;
|
|
108
|
+
const rows = vp.rows;
|
|
109
|
+
// Ignore bogus zero sizes
|
|
110
|
+
if (!cols || !rows) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
// Ignore duplicate commits
|
|
114
|
+
if (cols === this.lastCommitted.cols && rows === this.lastCommitted.rows) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
this.lastCommitted = { cols, rows };
|
|
118
|
+
this.lastSource = source;
|
|
119
|
+
this.layoutVersion++;
|
|
120
|
+
const myVersion = this.layoutVersion;
|
|
121
|
+
const myBurstCount = this.burstCount;
|
|
122
|
+
// Reset burst count after commit
|
|
123
|
+
this.burstCount = 0;
|
|
124
|
+
this.kernel.rebuild({
|
|
125
|
+
cols,
|
|
126
|
+
rows,
|
|
127
|
+
version: myVersion,
|
|
128
|
+
source,
|
|
129
|
+
burstCount: myBurstCount,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=resizeController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizeController.js","sourceRoot":"","sources":["../../../../src/ui/v5/resize/resizeController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V5 Viewport Detection
|
|
3
|
+
*
|
|
4
|
+
* Returns safe viewport dimensions with proper browser terminal detection.
|
|
5
|
+
*/
|
|
6
|
+
export type Viewport = {
|
|
7
|
+
cols: number;
|
|
8
|
+
rows: number;
|
|
9
|
+
safeCols: number;
|
|
10
|
+
safeRows: number;
|
|
11
|
+
marginRight: number;
|
|
12
|
+
marginBottom: number;
|
|
13
|
+
isBrowserTerminal: boolean;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Get viewport dimensions
|
|
17
|
+
*/
|
|
18
|
+
export declare function getViewport(screen: any): Viewport;
|
|
19
|
+
//# sourceMappingURL=getViewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getViewport.d.ts","sourceRoot":"","sources":["../../../../src/ui/v5/viewport/getViewport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAsCF;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,QAAQ,CAiEjD"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V5 Viewport Detection
|
|
3
|
+
*
|
|
4
|
+
* Returns safe viewport dimensions with proper browser terminal detection.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Detect if running in browser terminal (AWS web console, etc.)
|
|
8
|
+
*/
|
|
9
|
+
function detectBrowserTerminal(screen) {
|
|
10
|
+
// Forced flag
|
|
11
|
+
if (process.env.TUI_BROWSER === '1') {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
// Heuristic 1: SSH_CONNECTION present AND TERM=xterm (common in AWS web console)
|
|
15
|
+
if (process.env.SSH_CONNECTION && (process.env.TERM || '').toLowerCase().includes('xterm')) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
// Heuristic 2: TERM_PROGRAM missing + unusually large cols
|
|
19
|
+
if (!process.env.TERM_PROGRAM) {
|
|
20
|
+
const cols = screen?.program?.cols || screen?.width || process.stdout.columns || 80;
|
|
21
|
+
if (cols > 120) {
|
|
22
|
+
// Large terminal without TERM_PROGRAM suggests browser
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Heuristic 3: AWS-specific env vars
|
|
27
|
+
if (process.env.AWS_REGION ||
|
|
28
|
+
process.env.CLOUDSHELL ||
|
|
29
|
+
process.env.AWS_EXECUTION_ENV ||
|
|
30
|
+
process.env.EC2_INSTANCE_ID) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get viewport dimensions
|
|
37
|
+
*/
|
|
38
|
+
export function getViewport(screen) {
|
|
39
|
+
// Get raw dimensions
|
|
40
|
+
const program = screen?.program;
|
|
41
|
+
let cols;
|
|
42
|
+
let rows;
|
|
43
|
+
if (program && typeof program.cols === 'number' && program.cols > 0) {
|
|
44
|
+
cols = program.cols;
|
|
45
|
+
rows = program.rows;
|
|
46
|
+
}
|
|
47
|
+
else if (typeof screen.width === 'number' && typeof screen.height === 'number' && screen.width > 0 && screen.height > 0) {
|
|
48
|
+
cols = screen.width;
|
|
49
|
+
rows = screen.height;
|
|
50
|
+
}
|
|
51
|
+
else if (typeof screen.cols === 'number' && typeof screen.rows === 'number') {
|
|
52
|
+
cols = screen.cols;
|
|
53
|
+
rows = screen.rows;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
cols = process.stdout.columns || 80;
|
|
57
|
+
rows = process.stdout.rows || 24;
|
|
58
|
+
}
|
|
59
|
+
// Detect browser terminal
|
|
60
|
+
const isBrowserTerminal = detectBrowserTerminal(screen);
|
|
61
|
+
// Determine margins
|
|
62
|
+
let marginRight = 0;
|
|
63
|
+
let marginBottom = 0;
|
|
64
|
+
if (isBrowserTerminal) {
|
|
65
|
+
// Start with browser defaults
|
|
66
|
+
marginRight = 3;
|
|
67
|
+
marginBottom = 2;
|
|
68
|
+
}
|
|
69
|
+
// Allow override
|
|
70
|
+
if (process.env.TUI_SAFE_MARGIN_RIGHT) {
|
|
71
|
+
marginRight = Number(process.env.TUI_SAFE_MARGIN_RIGHT);
|
|
72
|
+
}
|
|
73
|
+
if (process.env.TUI_SAFE_MARGIN_BOTTOM) {
|
|
74
|
+
marginBottom = Number(process.env.TUI_SAFE_MARGIN_BOTTOM);
|
|
75
|
+
}
|
|
76
|
+
// Compute safe dimensions
|
|
77
|
+
let safeCols = cols - marginRight;
|
|
78
|
+
let safeRows = rows - marginBottom;
|
|
79
|
+
// Clamp minimums (fail into narrow mode if too small)
|
|
80
|
+
const MIN_SAFE_COLS = 40;
|
|
81
|
+
const MIN_SAFE_ROWS = 15;
|
|
82
|
+
if (safeCols < MIN_SAFE_COLS) {
|
|
83
|
+
safeCols = MIN_SAFE_COLS;
|
|
84
|
+
}
|
|
85
|
+
if (safeRows < MIN_SAFE_ROWS) {
|
|
86
|
+
safeRows = MIN_SAFE_ROWS;
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
cols,
|
|
90
|
+
rows,
|
|
91
|
+
safeCols,
|
|
92
|
+
safeRows,
|
|
93
|
+
marginRight,
|
|
94
|
+
marginBottom,
|
|
95
|
+
isBrowserTerminal,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=getViewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getViewport.js","sourceRoot":"","sources":["../../../../src/ui/v5/viewport/getViewport.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/v5/viewport.js
CHANGED
|
@@ -50,8 +50,8 @@ export function computeViewport(screen) {
|
|
|
50
50
|
!!process.env.EC2_INSTANCE_ID ||
|
|
51
51
|
(process.env.TERM || '').toLowerCase().includes('xterm'); // weak but ok as fallback
|
|
52
52
|
// Defaults - AWS web terminals need more margin to prevent scrollbar
|
|
53
|
-
// Increased
|
|
54
|
-
let marginRight = isBrowserLikely ?
|
|
53
|
+
// Increased to 10 based on testing (horizontal scrollbar still appears with 3-9)
|
|
54
|
+
let marginRight = isBrowserLikely ? 10 : 1;
|
|
55
55
|
let marginBottom = isBrowserLikely ? 2 : 1;
|
|
56
56
|
// Override knobs (must exist)
|
|
57
57
|
if (process.env.TUI_SAFE_MARGIN_RIGHT) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../../../src/ui/v5/viewport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH;;GAEG;AACH,SAAS,KAAK,CAAC,CAAS,EAAE,GAAW;IACnC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAW;IACzC,sDAAsD;IACtD,MAAM,OAAO,GAAI,MAAc,EAAE,OAAO,CAAC;IACzC,IAAI,OAAe,CAAC;IACpB,IAAI,OAAe,CAAC;IAEpB,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACpE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QACvB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IACzB,CAAC;SAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1H,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;QACvB,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAQ,MAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAQ,MAAc,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChG,OAAO,GAAI,MAAc,CAAC,IAAI,CAAC;QAC/B,OAAO,GAAI,MAAc,CAAC,IAAI,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,oDAAoD;IACpD,MAAM,eAAe,GACnB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU;QACxB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU;QACxB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC/B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe;QAC7B,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B;IAEtF,qEAAqE;IACrE,
|
|
1
|
+
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../../../src/ui/v5/viewport.ts"],"names":[],"mappings":"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"}
|