4runr-os 2.0.35 → 2.0.37
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/collectors/collector_feed.d.ts.map +1 -1
- package/dist/collectors/collector_feed.js +6 -1
- package/dist/collectors/collector_feed.js.map +1 -1
- package/dist/core/commandExecutor.d.ts +56 -0
- package/dist/core/commandExecutor.d.ts.map +1 -0
- package/dist/core/commandExecutor.js +161 -0
- package/dist/core/commandExecutor.js.map +1 -0
- package/dist/core/commandRegistry.d.ts +72 -0
- package/dist/core/commandRegistry.d.ts.map +1 -0
- package/dist/core/commandRegistry.js +53 -0
- package/dist/core/commandRegistry.js.map +1 -0
- package/dist/core/commands/size.d.ts +23 -0
- package/dist/core/commands/size.d.ts.map +1 -0
- package/dist/core/commands/size.js +211 -0
- package/dist/core/commands/size.js.map +1 -0
- package/dist/core/eventBus.d.ts +29 -14
- package/dist/core/eventBus.d.ts.map +1 -1
- package/dist/core/eventBus.js +56 -23
- package/dist/core/eventBus.js.map +1 -1
- package/dist/core/opEvent.d.ts +16 -0
- package/dist/core/opEvent.d.ts.map +1 -0
- package/dist/core/opEvent.js +8 -0
- package/dist/core/opEvent.js.map +1 -0
- package/dist/index.js +19 -3
- package/dist/index.js.map +1 -1
- package/dist/ui/v3/commands/commandEngine.js +16 -2
- package/dist/ui/v3/commands/commandEngine.js.map +1 -1
- package/dist/ui/v3/index.js +32 -11
- package/dist/ui/v3/index.js.map +1 -1
- package/dist/ui/v3/ui/layout/phase1Layout.d.ts.map +1 -1
- package/dist/ui/v3/ui/layout/phase1Layout.js +3 -2
- package/dist/ui/v3/ui/layout/phase1Layout.js.map +1 -1
- package/dist/ui/v4/engine/renderFrame.d.ts +47 -0
- package/dist/ui/v4/engine/renderFrame.d.ts.map +1 -0
- package/dist/ui/v4/engine/renderFrame.js +653 -0
- package/dist/ui/v4/engine/renderFrame.js.map +1 -0
- package/dist/ui/v4/engine/resizeController.d.ts +48 -0
- package/dist/ui/v4/engine/resizeController.d.ts.map +1 -0
- package/dist/ui/v4/engine/resizeController.js +285 -0
- package/dist/ui/v4/engine/resizeController.js.map +1 -0
- package/dist/ui/v4/engine/safeViewport.d.ts +47 -0
- package/dist/ui/v4/engine/safeViewport.d.ts.map +1 -0
- package/dist/ui/v4/engine/safeViewport.js +123 -0
- package/dist/ui/v4/engine/safeViewport.js.map +1 -0
- package/dist/ui/v4/engine/terminalProfile.d.ts +56 -0
- package/dist/ui/v4/engine/terminalProfile.d.ts.map +1 -0
- package/dist/ui/v4/engine/terminalProfile.js +115 -0
- package/dist/ui/v4/engine/terminalProfile.js.map +1 -0
- package/dist/ui/v4/index.d.ts +28 -0
- package/dist/ui/v4/index.d.ts.map +1 -0
- package/dist/ui/v4/index.js +993 -0
- package/dist/ui/v4/index.js.map +1 -0
- package/dist/ui/v4/layout/layoutEngine.d.ts +62 -0
- package/dist/ui/v4/layout/layoutEngine.d.ts.map +1 -0
- package/dist/ui/v4/layout/layoutEngine.js +294 -0
- package/dist/ui/v4/layout/layoutEngine.js.map +1 -0
- package/dist/ui/v4/runtime/keepAlive.d.ts +21 -0
- package/dist/ui/v4/runtime/keepAlive.d.ts.map +1 -0
- package/dist/ui/v4/runtime/keepAlive.js +149 -0
- package/dist/ui/v4/runtime/keepAlive.js.map +1 -0
- package/dist/ui/v4/runtime/logger.d.ts +35 -0
- package/dist/ui/v4/runtime/logger.d.ts.map +1 -0
- package/dist/ui/v4/runtime/logger.js +109 -0
- package/dist/ui/v4/runtime/logger.js.map +1 -0
- package/dist/ui/v5/index.d.ts +24 -0
- package/dist/ui/v5/index.d.ts.map +1 -0
- package/dist/ui/v5/index.js +123 -0
- package/dist/ui/v5/index.js.map +1 -0
- package/dist/ui/v5/runtime/keepAlive.d.ts +37 -0
- package/dist/ui/v5/runtime/keepAlive.d.ts.map +1 -0
- package/dist/ui/v5/runtime/keepAlive.js +122 -0
- package/dist/ui/v5/runtime/keepAlive.js.map +1 -0
- package/dist/ui/v5/runtime/restoreTerminal.d.ts +34 -0
- package/dist/ui/v5/runtime/restoreTerminal.d.ts.map +1 -0
- package/dist/ui/v5/runtime/restoreTerminal.js +100 -0
- package/dist/ui/v5/runtime/restoreTerminal.js.map +1 -0
- package/dist/ui/v5/runtime/stdoutGuard.d.ts +42 -0
- package/dist/ui/v5/runtime/stdoutGuard.d.ts.map +1 -0
- package/dist/ui/v5/runtime/stdoutGuard.js +154 -0
- package/dist/ui/v5/runtime/stdoutGuard.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderFrame.js","sourceRoot":"","sources":["../../../../src/ui/v4/engine/renderFrame.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V4 Atomic Resize Controller
|
|
3
|
+
*
|
|
4
|
+
* ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
|
|
5
|
+
* DO NOT MODIFY. Development moved to V5.
|
|
6
|
+
* See FROZEN.md in v4 directory.
|
|
7
|
+
*
|
|
8
|
+
* Turns chaotic resize events into stable commit points.
|
|
9
|
+
*
|
|
10
|
+
* Rules:
|
|
11
|
+
* - Debounce resize bursts
|
|
12
|
+
* - Verify stability (double-check dimensions)
|
|
13
|
+
* - Atomic redraw (teardown + rebuild OR hard clear + full redraw)
|
|
14
|
+
* - Always restore focus after commit
|
|
15
|
+
* - Lock during commit to prevent concurrent operations
|
|
16
|
+
*/
|
|
17
|
+
export type TerminalSize = {
|
|
18
|
+
cols: number;
|
|
19
|
+
rows: number;
|
|
20
|
+
};
|
|
21
|
+
export type ResizeCallback = (size: TerminalSize) => Promise<void> | void;
|
|
22
|
+
/**
|
|
23
|
+
* Single source of truth for terminal dimensions
|
|
24
|
+
*
|
|
25
|
+
* NOTE: For layout calculations, use getSafeViewport() instead (Rule 1)
|
|
26
|
+
* This function is kept for backward compatibility and resize detection.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getTerminalSize(screen?: any): TerminalSize;
|
|
29
|
+
/**
|
|
30
|
+
* Initialize resize controller
|
|
31
|
+
*/
|
|
32
|
+
export declare function initResizeController(screen: any, callback: ResizeCallback): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get resize stats
|
|
35
|
+
*/
|
|
36
|
+
export declare function getResizeStats(): {
|
|
37
|
+
eventCount: number;
|
|
38
|
+
commitCount: number;
|
|
39
|
+
droppedEventCount: number;
|
|
40
|
+
lastResizeAt: number | null;
|
|
41
|
+
lastCommittedSize: TerminalSize | null;
|
|
42
|
+
isCommitting: boolean;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Destroy resize controller
|
|
46
|
+
*/
|
|
47
|
+
export declare function destroyResizeController(): void;
|
|
48
|
+
//# sourceMappingURL=resizeController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizeController.d.ts","sourceRoot":"","sources":["../../../../src/ui/v4/engine/resizeController.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,YAAY,CA8B1D;AAyOD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAMhF;AAED;;GAEG;AACH,wBAAgB,cAAc;gBA5Dd,MAAM;iBACL,MAAM;uBACA,MAAM;kBACX,MAAM,GAAG,IAAI;uBACR,YAAY,GAAG,IAAI;kBACxB,OAAO;EAgExB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V4 Atomic Resize Controller
|
|
3
|
+
*
|
|
4
|
+
* ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
|
|
5
|
+
* DO NOT MODIFY. Development moved to V5.
|
|
6
|
+
* See FROZEN.md in v4 directory.
|
|
7
|
+
*
|
|
8
|
+
* Turns chaotic resize events into stable commit points.
|
|
9
|
+
*
|
|
10
|
+
* Rules:
|
|
11
|
+
* - Debounce resize bursts
|
|
12
|
+
* - Verify stability (double-check dimensions)
|
|
13
|
+
* - Atomic redraw (teardown + rebuild OR hard clear + full redraw)
|
|
14
|
+
* - Always restore focus after commit
|
|
15
|
+
* - Lock during commit to prevent concurrent operations
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Step 1: Debug helper - uses tuiDebug (stderr/file, gated by TUI_DEBUG=1)
|
|
19
|
+
*/
|
|
20
|
+
import { tuiDebug as dbg, tuiError } from '../runtime/logger.js';
|
|
21
|
+
/**
|
|
22
|
+
* Single source of truth for terminal dimensions
|
|
23
|
+
*
|
|
24
|
+
* NOTE: For layout calculations, use getSafeViewport() instead (Rule 1)
|
|
25
|
+
* This function is kept for backward compatibility and resize detection.
|
|
26
|
+
*/
|
|
27
|
+
export function getTerminalSize(screen) {
|
|
28
|
+
// Priority 1: screen.program.cols/rows (most accurate for blessed)
|
|
29
|
+
if (screen?.program?.cols && screen?.program?.rows) {
|
|
30
|
+
return {
|
|
31
|
+
cols: screen.program.cols,
|
|
32
|
+
rows: screen.program.rows,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// Priority 2: screen.width/height (blessed fallback)
|
|
36
|
+
if (screen?.width && screen?.height) {
|
|
37
|
+
return {
|
|
38
|
+
cols: screen.width,
|
|
39
|
+
rows: screen.height,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Priority 3: process.stdout.columns/rows (Node.js fallback)
|
|
43
|
+
if (process.stdout.columns && process.stdout.rows) {
|
|
44
|
+
return {
|
|
45
|
+
cols: process.stdout.columns,
|
|
46
|
+
rows: process.stdout.rows,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// Default fallback
|
|
50
|
+
return {
|
|
51
|
+
cols: 80,
|
|
52
|
+
rows: 24,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resize Controller State
|
|
57
|
+
*/
|
|
58
|
+
class ResizeController {
|
|
59
|
+
debounceTimer = null;
|
|
60
|
+
isCommitting = false; // Lock during commit
|
|
61
|
+
lastCommittedSize = null;
|
|
62
|
+
pendingSize = null;
|
|
63
|
+
commitCallback = null;
|
|
64
|
+
screen = null;
|
|
65
|
+
// Stats (for debugging)
|
|
66
|
+
eventCount = 0;
|
|
67
|
+
commitCount = 0;
|
|
68
|
+
droppedEventCount = 0;
|
|
69
|
+
lastResizeAt = null;
|
|
70
|
+
DEBOUNCE_MS = 120;
|
|
71
|
+
/**
|
|
72
|
+
* Initialize resize controller
|
|
73
|
+
*/
|
|
74
|
+
init(screen, callback) {
|
|
75
|
+
this.screen = screen;
|
|
76
|
+
this.commitCallback = callback;
|
|
77
|
+
// Bind to all resize sources
|
|
78
|
+
if (screen && typeof screen.on === 'function') {
|
|
79
|
+
screen.on('resize', () => this.handleResizeEvent('screen'));
|
|
80
|
+
}
|
|
81
|
+
if (typeof process.stdout.on === 'function') {
|
|
82
|
+
process.stdout.on('resize', () => this.handleResizeEvent('stdout'));
|
|
83
|
+
}
|
|
84
|
+
if (typeof process.on === 'function') {
|
|
85
|
+
process.on('SIGWINCH', () => this.handleResizeEvent('SIGWINCH'));
|
|
86
|
+
}
|
|
87
|
+
if (screen?.program && typeof screen.program.on === 'function') {
|
|
88
|
+
screen.program.on('resize', () => this.handleResizeEvent('program'));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Handle resize event
|
|
93
|
+
*/
|
|
94
|
+
handleResizeEvent(source) {
|
|
95
|
+
this.eventCount++;
|
|
96
|
+
this.lastResizeAt = Date.now();
|
|
97
|
+
// If commit is in progress, schedule another commit after current one finishes
|
|
98
|
+
if (this.isCommitting) {
|
|
99
|
+
this.droppedEventCount++;
|
|
100
|
+
// Schedule a new commit after current one (will be handled by debounce)
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// Get current size
|
|
104
|
+
const currentSize = getTerminalSize(this.screen);
|
|
105
|
+
// If same as last committed, ignore
|
|
106
|
+
if (this.lastCommittedSize &&
|
|
107
|
+
this.lastCommittedSize.cols === currentSize.cols &&
|
|
108
|
+
this.lastCommittedSize.rows === currentSize.rows) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
// Store pending size
|
|
112
|
+
this.pendingSize = currentSize;
|
|
113
|
+
// Cancel existing debounce timer
|
|
114
|
+
if (this.debounceTimer) {
|
|
115
|
+
clearTimeout(this.debounceTimer);
|
|
116
|
+
this.debounceTimer = null;
|
|
117
|
+
}
|
|
118
|
+
// Schedule debounced commit
|
|
119
|
+
this.debounceTimer = setTimeout(() => {
|
|
120
|
+
this.debounceTimer = null;
|
|
121
|
+
this.commitResize();
|
|
122
|
+
}, this.DEBOUNCE_MS);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Commit resize (atomic operation with stable size verification)
|
|
126
|
+
*
|
|
127
|
+
* Fullscreen toggles can report intermediate sizes.
|
|
128
|
+
* Use a double-read with 50ms wait (up to 2 cycles) to ensure stability.
|
|
129
|
+
*/
|
|
130
|
+
async commitResize(cycle = 0) {
|
|
131
|
+
if (!this.pendingSize || !this.commitCallback || this.isCommitting) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
// Set lock
|
|
135
|
+
this.isCommitting = true;
|
|
136
|
+
try {
|
|
137
|
+
// Step 1: Read dimensions at commit time
|
|
138
|
+
const size1 = getTerminalSize(this.screen);
|
|
139
|
+
// Step 2: Wait 50ms (let terminal/blessed stabilize)
|
|
140
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
141
|
+
// Step 3: Read dimensions again
|
|
142
|
+
const size2 = getTerminalSize(this.screen);
|
|
143
|
+
// Step 4: Verify stability (only commit if unchanged)
|
|
144
|
+
if (size1.cols !== size2.cols || size1.rows !== size2.rows) {
|
|
145
|
+
// Dimensions changed during verification
|
|
146
|
+
if (cycle < 2) {
|
|
147
|
+
// Try one more cycle (up to 2 cycles total)
|
|
148
|
+
this.pendingSize = size2;
|
|
149
|
+
this.isCommitting = false; // Release lock for retry
|
|
150
|
+
setTimeout(() => this.commitResize(cycle + 1), 50);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// After 2 cycles, use the latest size
|
|
155
|
+
this.pendingSize = size2;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Step 5: Use the stable dimensions
|
|
159
|
+
const stableSize = size1;
|
|
160
|
+
// Step 6: Only commit if different from last committed
|
|
161
|
+
if (this.lastCommittedSize &&
|
|
162
|
+
this.lastCommittedSize.cols === stableSize.cols &&
|
|
163
|
+
this.lastCommittedSize.rows === stableSize.rows) {
|
|
164
|
+
// No change, skip commit
|
|
165
|
+
this.pendingSize = null;
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
// Step 7: Atomic commit (callback handles teardown + rebuild)
|
|
169
|
+
// A) Render Guard: catch errors to prevent black screen
|
|
170
|
+
try {
|
|
171
|
+
await this.commitCallback(stableSize);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
// Render failed - display error to user (don't leave black screen)
|
|
175
|
+
// A) Log to stderr only (never stdout)
|
|
176
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
177
|
+
const viewport = getTerminalSize(this.screen);
|
|
178
|
+
dbg('RENDER ERROR:', errorMsg);
|
|
179
|
+
dbg(`Last safe viewport: ${viewport.cols}x${viewport.rows}`);
|
|
180
|
+
dbg('Press Ctrl+C to exit');
|
|
181
|
+
// Also try to show on screen if possible
|
|
182
|
+
const program = this.screen.program;
|
|
183
|
+
if (program && typeof program.write === 'function') {
|
|
184
|
+
try {
|
|
185
|
+
program.write('\r\n\x1b[31m[V4 RENDER ERROR]\x1b[0m\r\n');
|
|
186
|
+
program.write(`Error: ${errorMsg}\r\n`);
|
|
187
|
+
program.write(`Last safe viewport: ${viewport.cols}x${viewport.rows}\r\n`);
|
|
188
|
+
program.write(`Press Ctrl+C to exit\r\n`);
|
|
189
|
+
program.flush();
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Ignore if write fails
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Don't update committed size on error - allow retry
|
|
196
|
+
throw error;
|
|
197
|
+
}
|
|
198
|
+
// Step 8: Update last committed size
|
|
199
|
+
this.lastCommittedSize = stableSize;
|
|
200
|
+
this.commitCount++;
|
|
201
|
+
this.pendingSize = null;
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
// Log error but don't break resize system
|
|
205
|
+
if (process.env.DEBUG_NO_TUI === '1') {
|
|
206
|
+
tuiError('[ResizeController] Commit error:', error);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
// Release lock
|
|
211
|
+
this.isCommitting = false;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get resize stats (for debugging)
|
|
216
|
+
*/
|
|
217
|
+
getStats() {
|
|
218
|
+
return {
|
|
219
|
+
eventCount: this.eventCount,
|
|
220
|
+
commitCount: this.commitCount,
|
|
221
|
+
droppedEventCount: this.droppedEventCount,
|
|
222
|
+
lastResizeAt: this.lastResizeAt,
|
|
223
|
+
lastCommittedSize: this.lastCommittedSize,
|
|
224
|
+
isCommitting: this.isCommitting,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Force immediate commit (for testing)
|
|
229
|
+
*/
|
|
230
|
+
async forceCommit() {
|
|
231
|
+
if (this.debounceTimer) {
|
|
232
|
+
clearTimeout(this.debounceTimer);
|
|
233
|
+
this.debounceTimer = null;
|
|
234
|
+
}
|
|
235
|
+
await this.commitResize();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Cleanup (remove listeners)
|
|
239
|
+
*/
|
|
240
|
+
destroy() {
|
|
241
|
+
if (this.debounceTimer) {
|
|
242
|
+
clearTimeout(this.debounceTimer);
|
|
243
|
+
this.debounceTimer = null;
|
|
244
|
+
}
|
|
245
|
+
this.screen = null;
|
|
246
|
+
this.commitCallback = null;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Global resize controller instance
|
|
251
|
+
*/
|
|
252
|
+
let resizeController = null;
|
|
253
|
+
/**
|
|
254
|
+
* Initialize resize controller
|
|
255
|
+
*/
|
|
256
|
+
export function initResizeController(screen, callback) {
|
|
257
|
+
if (resizeController) {
|
|
258
|
+
resizeController.destroy();
|
|
259
|
+
}
|
|
260
|
+
resizeController = new ResizeController();
|
|
261
|
+
resizeController.init(screen, callback);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get resize stats
|
|
265
|
+
*/
|
|
266
|
+
export function getResizeStats() {
|
|
267
|
+
return resizeController?.getStats() || {
|
|
268
|
+
eventCount: 0,
|
|
269
|
+
commitCount: 0,
|
|
270
|
+
droppedEventCount: 0,
|
|
271
|
+
lastResizeAt: null,
|
|
272
|
+
lastCommittedSize: null,
|
|
273
|
+
isCommitting: false,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Destroy resize controller
|
|
278
|
+
*/
|
|
279
|
+
export function destroyResizeController() {
|
|
280
|
+
if (resizeController) {
|
|
281
|
+
resizeController.destroy();
|
|
282
|
+
resizeController = null;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=resizeController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizeController.js","sourceRoot":"","sources":["../../../../src/ui/v4/engine/resizeController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
|
|
3
|
+
* DO NOT MODIFY. Development moved to V5.
|
|
4
|
+
* See FROZEN.md in v4 directory.
|
|
5
|
+
*
|
|
6
|
+
* Safe Viewport - "Forever Fix" for CloudShell Horizontal Scrollbar
|
|
7
|
+
*
|
|
8
|
+
* HARD INVARIANT: No widget may draw at x >= safeCols
|
|
9
|
+
*
|
|
10
|
+
* Deliverable 1: Safe Viewport Contract
|
|
11
|
+
* - Browser/CloudShell detection
|
|
12
|
+
* - Environment variable overrides
|
|
13
|
+
* - Minimum clamping
|
|
14
|
+
* - Comprehensive debug info
|
|
15
|
+
*/
|
|
16
|
+
import type { Widgets } from 'neo-blessed';
|
|
17
|
+
export interface SafeViewport {
|
|
18
|
+
cols: number;
|
|
19
|
+
rows: number;
|
|
20
|
+
rawCols: number;
|
|
21
|
+
rawRows: number;
|
|
22
|
+
screenCols: number;
|
|
23
|
+
stdoutCols: number;
|
|
24
|
+
envCols: number;
|
|
25
|
+
isBrowserTerminal: boolean;
|
|
26
|
+
platform: string;
|
|
27
|
+
term: string;
|
|
28
|
+
rightMargin: number;
|
|
29
|
+
bottomMargin: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get safe viewport dimensions from screen
|
|
33
|
+
*
|
|
34
|
+
* Deliverable 1: Safe Viewport Contract
|
|
35
|
+
*
|
|
36
|
+
* Rules:
|
|
37
|
+
* - safeCols = min(screen.cols, stdout.cols, env.COLUMNS) - RIGHT_MARGIN
|
|
38
|
+
* - safeRows = min(screen.rows, stdout.rows, env.LINES) - BOTTOM_MARGIN
|
|
39
|
+
* - Clamp: safeCols >= 60, safeRows >= 20 (if smaller, narrow mode will handle)
|
|
40
|
+
*
|
|
41
|
+
* Margins:
|
|
42
|
+
* - Default: RIGHT_MARGIN=1, BOTTOM_MARGIN=1
|
|
43
|
+
* - Browser terminals: RIGHT_MARGIN=2, BOTTOM_MARGIN=1
|
|
44
|
+
* - Override via env: TUI_SAFE_RIGHT_MARGIN, TUI_SAFE_BOTTOM_MARGIN
|
|
45
|
+
*/
|
|
46
|
+
export declare function getSafeViewport(screen: Widgets.Screen): SafeViewport;
|
|
47
|
+
//# sourceMappingURL=safeViewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safeViewport.d.ts","sourceRoot":"","sources":["../../../../src/ui/v4/engine/safeViewport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAoED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,YAAY,CAsCpE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
|
|
3
|
+
* DO NOT MODIFY. Development moved to V5.
|
|
4
|
+
* See FROZEN.md in v4 directory.
|
|
5
|
+
*
|
|
6
|
+
* Safe Viewport - "Forever Fix" for CloudShell Horizontal Scrollbar
|
|
7
|
+
*
|
|
8
|
+
* HARD INVARIANT: No widget may draw at x >= safeCols
|
|
9
|
+
*
|
|
10
|
+
* Deliverable 1: Safe Viewport Contract
|
|
11
|
+
* - Browser/CloudShell detection
|
|
12
|
+
* - Environment variable overrides
|
|
13
|
+
* - Minimum clamping
|
|
14
|
+
* - Comprehensive debug info
|
|
15
|
+
*/
|
|
16
|
+
import * as os from 'os';
|
|
17
|
+
/**
|
|
18
|
+
* Detect if running in browser terminal (CloudShell/xterm.js)
|
|
19
|
+
*
|
|
20
|
+
* Heuristics:
|
|
21
|
+
* - AWS_EXECUTION_ENV indicates CloudShell
|
|
22
|
+
* - TERM_PROGRAM undefined + stdout.cols == screen.cols (web terminals often match)
|
|
23
|
+
* - TUI_BROWSER_SAFE=1 env var (manual override)
|
|
24
|
+
*/
|
|
25
|
+
function detectBrowserTerminal(screen) {
|
|
26
|
+
// Manual override
|
|
27
|
+
if (process.env.TUI_BROWSER_SAFE === '1') {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
// AWS CloudShell detection
|
|
31
|
+
if (process.env.AWS_EXECUTION_ENV) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
// Heuristic: web terminals often have TERM_PROGRAM undefined
|
|
35
|
+
// and stdout.cols matches screen.cols exactly
|
|
36
|
+
const screenCols = screen.cols || screen.width || screen.program?.cols || 80;
|
|
37
|
+
const stdoutCols = process.stdout.columns;
|
|
38
|
+
if (!process.env.TERM_PROGRAM && stdoutCols && stdoutCols === screenCols) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get effective terminal dimensions (minimum of all sources)
|
|
45
|
+
*
|
|
46
|
+
* CloudShell often reports different widths in different sources.
|
|
47
|
+
* We take the minimum to be safe.
|
|
48
|
+
*/
|
|
49
|
+
function getEffectiveColsRows(screen) {
|
|
50
|
+
// Get all column sources
|
|
51
|
+
const screenCols = screen.cols || screen.width || screen.program?.cols || 80;
|
|
52
|
+
const stdoutCols = process.stdout.columns ?? Infinity;
|
|
53
|
+
const envCols = Number(process.env.COLUMNS) || Infinity;
|
|
54
|
+
// Get all row sources
|
|
55
|
+
const screenRows = screen.rows || screen.height || screen.program?.rows || 24;
|
|
56
|
+
const stdoutRows = process.stdout.rows ?? Infinity;
|
|
57
|
+
const envRows = Number(process.env.LINES) || Infinity;
|
|
58
|
+
// Take minimum of all sources (CloudShell safety)
|
|
59
|
+
const effectiveCols = Math.min(screenCols, stdoutCols, envCols);
|
|
60
|
+
const effectiveRows = Math.min(screenRows, stdoutRows, envRows);
|
|
61
|
+
return {
|
|
62
|
+
cols: effectiveCols,
|
|
63
|
+
rows: effectiveRows,
|
|
64
|
+
details: {
|
|
65
|
+
screenCols,
|
|
66
|
+
stdoutCols,
|
|
67
|
+
envCols,
|
|
68
|
+
screenRows,
|
|
69
|
+
stdoutRows,
|
|
70
|
+
envRows,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get safe viewport dimensions from screen
|
|
76
|
+
*
|
|
77
|
+
* Deliverable 1: Safe Viewport Contract
|
|
78
|
+
*
|
|
79
|
+
* Rules:
|
|
80
|
+
* - safeCols = min(screen.cols, stdout.cols, env.COLUMNS) - RIGHT_MARGIN
|
|
81
|
+
* - safeRows = min(screen.rows, stdout.rows, env.LINES) - BOTTOM_MARGIN
|
|
82
|
+
* - Clamp: safeCols >= 60, safeRows >= 20 (if smaller, narrow mode will handle)
|
|
83
|
+
*
|
|
84
|
+
* Margins:
|
|
85
|
+
* - Default: RIGHT_MARGIN=1, BOTTOM_MARGIN=1
|
|
86
|
+
* - Browser terminals: RIGHT_MARGIN=2, BOTTOM_MARGIN=1
|
|
87
|
+
* - Override via env: TUI_SAFE_RIGHT_MARGIN, TUI_SAFE_BOTTOM_MARGIN
|
|
88
|
+
*/
|
|
89
|
+
export function getSafeViewport(screen) {
|
|
90
|
+
// Detect browser terminal
|
|
91
|
+
const isBrowserTerminal = detectBrowserTerminal(screen);
|
|
92
|
+
// Get effective dimensions (minimum of all sources)
|
|
93
|
+
const { cols: effectiveCols, rows: effectiveRows, details } = getEffectiveColsRows(screen);
|
|
94
|
+
// Determine margins
|
|
95
|
+
// D) CloudShell-specific safety margins - increase to 2 for browser terminals
|
|
96
|
+
// Env var overrides take precedence
|
|
97
|
+
const rightMargin = process.env.TUI_SAFE_RIGHT_MARGIN
|
|
98
|
+
? Number(process.env.TUI_SAFE_RIGHT_MARGIN)
|
|
99
|
+
: (isBrowserTerminal ? 3 : 1); // Browser terminals (CloudShell) need margin=3 to prevent scrollbar
|
|
100
|
+
const bottomMargin = process.env.TUI_SAFE_BOTTOM_MARGIN
|
|
101
|
+
? Number(process.env.TUI_SAFE_BOTTOM_MARGIN)
|
|
102
|
+
: (isBrowserTerminal ? 2 : 1); // D) Increase bottom margin to 2 for CloudShell
|
|
103
|
+
// Apply margins (HARD INVARIANT: treat last column as "radioactive")
|
|
104
|
+
// A) Use safe terminal size helper: safeCols = Math.max(1, effectiveCols - rightMargin)
|
|
105
|
+
// But also enforce minimum of 60 for usability
|
|
106
|
+
const safeCols = Math.max(60, Math.max(1, effectiveCols - rightMargin));
|
|
107
|
+
const safeRows = Math.max(20, effectiveRows - bottomMargin);
|
|
108
|
+
return {
|
|
109
|
+
cols: safeCols,
|
|
110
|
+
rows: safeRows,
|
|
111
|
+
rawCols: effectiveCols,
|
|
112
|
+
rawRows: effectiveRows,
|
|
113
|
+
screenCols: details.screenCols,
|
|
114
|
+
stdoutCols: details.stdoutCols === Infinity ? 0 : details.stdoutCols,
|
|
115
|
+
envCols: details.envCols === Infinity ? 0 : details.envCols,
|
|
116
|
+
isBrowserTerminal,
|
|
117
|
+
platform: os.platform(),
|
|
118
|
+
term: process.env.TERM || 'unknown',
|
|
119
|
+
rightMargin,
|
|
120
|
+
bottomMargin,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=safeViewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safeViewport.js","sourceRoot":"","sources":["../../../../src/ui/v4/engine/safeViewport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
|
|
3
|
+
* DO NOT MODIFY. Development moved to V5.
|
|
4
|
+
* See FROZEN.md in v4 directory.
|
|
5
|
+
*
|
|
6
|
+
* Terminal Profile - Detects terminal capabilities and safe mode
|
|
7
|
+
*
|
|
8
|
+
* Safe mode is enabled when:
|
|
9
|
+
* - Terminal doesn't support Unicode
|
|
10
|
+
* - Terminal has very limited capabilities
|
|
11
|
+
* - Running in constrained environments (CI, etc.)
|
|
12
|
+
*/
|
|
13
|
+
import type { Widgets } from 'neo-blessed';
|
|
14
|
+
export interface TerminalProfile {
|
|
15
|
+
isSafeMode: boolean;
|
|
16
|
+
safeCols: number;
|
|
17
|
+
safeRows: number;
|
|
18
|
+
supportsUnicode: boolean;
|
|
19
|
+
supportsBorders: boolean;
|
|
20
|
+
platform: string;
|
|
21
|
+
term: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get safe terminal dimensions
|
|
25
|
+
*
|
|
26
|
+
* safeCols = Math.max(1, screen.cols - 1)
|
|
27
|
+
* safeRows = screen.rows
|
|
28
|
+
*/
|
|
29
|
+
export declare function getSafeTerminalSize(screen: Widgets.Screen | {
|
|
30
|
+
cols: number;
|
|
31
|
+
rows: number;
|
|
32
|
+
}): {
|
|
33
|
+
cols: number;
|
|
34
|
+
rows: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Get terminal profile
|
|
38
|
+
*/
|
|
39
|
+
export declare function getTerminalProfile(screen: Widgets.Screen): TerminalProfile;
|
|
40
|
+
/**
|
|
41
|
+
* Get ASCII border characters (for safe mode)
|
|
42
|
+
*/
|
|
43
|
+
export declare function getBorderChars(useAscii: boolean): {
|
|
44
|
+
horizontal: string;
|
|
45
|
+
vertical: string;
|
|
46
|
+
topLeft: string;
|
|
47
|
+
topRight: string;
|
|
48
|
+
bottomLeft: string;
|
|
49
|
+
bottomRight: string;
|
|
50
|
+
leftT: string;
|
|
51
|
+
rightT: string;
|
|
52
|
+
topT: string;
|
|
53
|
+
bottomT: string;
|
|
54
|
+
cross: string;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=terminalProfile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminalProfile.d.ts","sourceRoot":"","sources":["../../../../src/ui/v4/engine/terminalProfile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAS3H;AA2CD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,eAAe,CAiB1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CA+BA"}
|