@pixelbyte-software/pixcode 1.53.26 → 1.53.28
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/assets/{index-blc6pTTl.js → index-BBDYzJ7B.js} +156 -163
- package/dist/index.html +1 -1
- package/dist-server/server/index.js +22 -9
- package/dist-server/server/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/smoke/backend-resource-bounds.mjs +15 -6
- package/server/index.js +22 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixelbyte-software/pixcode",
|
|
3
|
-
"version": "1.53.
|
|
3
|
+
"version": "1.53.28",
|
|
4
4
|
"description": "Self-hosted AI coding agent control room for Claude Code, Cursor CLI, OpenAI Codex, Gemini CLI, Qwen Code, and OpenCode with chat, files, shell, Git, orchestration, API keys, Telegram, MCP, plugins, themes, and desktop/server deployment.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist-server/server/index.js",
|
|
@@ -29,6 +29,14 @@ const checks = [
|
|
|
29
29
|
source.includes('fs.createReadStream'),
|
|
30
30
|
message: 'Backend watchers/file tree scans must be bounded and must not broadcast full project trees.',
|
|
31
31
|
},
|
|
32
|
+
{
|
|
33
|
+
path: 'server/index.js',
|
|
34
|
+
assert: (source) =>
|
|
35
|
+
source.includes('function resizeTerminalPty') &&
|
|
36
|
+
source.includes("resizeTerminalPty(shellProcess, data.cols, data.rows, 'reconnect resize')") &&
|
|
37
|
+
source.includes('resizeTerminalPty(activePty, data.cols, data.rows)'),
|
|
38
|
+
message: 'Shell reconnect must resize existing PTYs with the latest browser rows and columns.',
|
|
39
|
+
},
|
|
32
40
|
{
|
|
33
41
|
path: 'server/routes/git.js',
|
|
34
42
|
assert: (source) =>
|
|
@@ -87,10 +95,11 @@ const checks = [
|
|
|
87
95
|
path: 'src/components/shell/utils/terminalFit.ts',
|
|
88
96
|
assert: (source) =>
|
|
89
97
|
source.includes('getBoundingClientRect()') &&
|
|
98
|
+
source.includes('measureCellFromDom') &&
|
|
90
99
|
source.includes('proposeDimensionsFromContainer') &&
|
|
91
100
|
source.includes('right-cli:') &&
|
|
92
101
|
source.includes('terminal.resize(nextCols, nextRows)') &&
|
|
93
|
-
source.includes('terminal.options.fontSize = nextFontSize'),
|
|
102
|
+
!source.includes('terminal.options.fontSize = nextFontSize'),
|
|
94
103
|
message: 'Terminal fit utility must use real container geometry for the right CLI panel.',
|
|
95
104
|
},
|
|
96
105
|
{
|
|
@@ -100,12 +109,12 @@ const checks = [
|
|
|
100
109
|
source.includes('display: flex') &&
|
|
101
110
|
source.includes('max-width: 100%') &&
|
|
102
111
|
source.includes('.pixcode-shell-terminal .xterm-viewport') &&
|
|
103
|
-
source.includes('.pixcode-shell-terminal--right-cli .xterm-rows
|
|
104
|
-
source.includes('white-space: pre-wrap !important') &&
|
|
105
|
-
source.includes('overflow-wrap: anywhere !important') &&
|
|
106
|
-
source.includes('word-break: break-word !important') &&
|
|
112
|
+
source.includes('.pixcode-shell-terminal--right-cli .xterm-rows') &&
|
|
113
|
+
!source.includes('white-space: pre-wrap !important') &&
|
|
114
|
+
!source.includes('overflow-wrap: anywhere !important') &&
|
|
115
|
+
!source.includes('word-break: break-word !important') &&
|
|
107
116
|
!source.includes('.pixcode-shell-terminal .xterm-rows > div'),
|
|
108
|
-
message: 'Terminal styles must preserve
|
|
117
|
+
message: 'Terminal styles must preserve xterm row semantics and avoid CSS wrapping terminal rows.',
|
|
109
118
|
},
|
|
110
119
|
{
|
|
111
120
|
path: 'src/components/vscode-workbench/view/VSCodeWorkbench.tsx',
|
package/server/index.js
CHANGED
|
@@ -1458,6 +1458,26 @@ function writeTerminalInputChunks(ptyProcess, data) {
|
|
|
1458
1458
|
return true;
|
|
1459
1459
|
}
|
|
1460
1460
|
|
|
1461
|
+
function resizeTerminalPty(ptyProcess, cols, rows, context = 'resize') {
|
|
1462
|
+
if (!ptyProcess || typeof ptyProcess.resize !== 'function') return false;
|
|
1463
|
+
const nextCols = Number.parseInt(cols, 10);
|
|
1464
|
+
const nextRows = Number.parseInt(rows, 10);
|
|
1465
|
+
if (!Number.isFinite(nextCols) || !Number.isFinite(nextRows) || nextCols < 2 || nextRows < 1) {
|
|
1466
|
+
return false;
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
try {
|
|
1470
|
+
ptyProcess.resize(nextCols, nextRows);
|
|
1471
|
+
return true;
|
|
1472
|
+
} catch (error) {
|
|
1473
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
1474
|
+
if (!/already exited/i.test(message)) {
|
|
1475
|
+
console.warn(`Terminal ${context} failed:`, message);
|
|
1476
|
+
}
|
|
1477
|
+
return false;
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1461
1481
|
function readPtyTarget(value) {
|
|
1462
1482
|
return typeof value === 'string' && value.trim() ? value.trim() : null;
|
|
1463
1483
|
}
|
|
@@ -4074,6 +4094,7 @@ function handleShellConnection(ws, request) {
|
|
|
4074
4094
|
} else {
|
|
4075
4095
|
console.log('♻️ Reconnecting to existing PTY session:', ptySessionKey);
|
|
4076
4096
|
shellProcess = existingSession.pty;
|
|
4097
|
+
resizeTerminalPty(shellProcess, data.cols, data.rows, 'reconnect resize');
|
|
4077
4098
|
|
|
4078
4099
|
clearTimeout(existingSession.timeoutId);
|
|
4079
4100
|
|
|
@@ -4411,14 +4432,7 @@ function handleShellConnection(ws, request) {
|
|
|
4411
4432
|
const session = ptySessionKey ? ptySessionsMap.get(ptySessionKey) : null;
|
|
4412
4433
|
const activePty = session?.pty || shellProcess;
|
|
4413
4434
|
if (activePty && typeof activePty.resize === 'function' && session?.lifecycleState !== 'completed' && session?.lifecycleState !== 'failed') {
|
|
4414
|
-
|
|
4415
|
-
activePty.resize(data.cols, data.rows);
|
|
4416
|
-
} catch (error) {
|
|
4417
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
4418
|
-
if (!/already exited/i.test(message)) {
|
|
4419
|
-
console.warn('Terminal resize failed:', message);
|
|
4420
|
-
}
|
|
4421
|
-
}
|
|
4435
|
+
resizeTerminalPty(activePty, data.cols, data.rows);
|
|
4422
4436
|
}
|
|
4423
4437
|
}
|
|
4424
4438
|
} catch (error) {
|