@pixelbyte-software/pixcode 1.50.0 → 1.50.2
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/index.html
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
|
|
36
36
|
<!-- Prevent zoom on iOS -->
|
|
37
37
|
<meta name="format-detection" content="telephone=no" />
|
|
38
|
-
<script type="module" crossorigin src="/assets/index-
|
|
38
|
+
<script type="module" crossorigin src="/assets/index-cXJ8K8Bi.js"></script>
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-DB6V5Fl1.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/vendor-codemirror-CIYNS698.js">
|
|
41
41
|
<link rel="modulepreload" crossorigin href="/assets/vendor-xterm-C7tpxJl7.js">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixelbyte-software/pixcode",
|
|
3
|
-
"version": "1.50.
|
|
3
|
+
"version": "1.50.2",
|
|
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",
|
|
@@ -132,6 +132,21 @@ assert.match(
|
|
|
132
132
|
/permissionOverrideRef/,
|
|
133
133
|
'Shell websocket init should read launch-scoped permission overrides.',
|
|
134
134
|
);
|
|
135
|
+
assert.match(
|
|
136
|
+
shellConnection,
|
|
137
|
+
/normalizeStartupInput\(input: string, provider: LLMProvider\)/,
|
|
138
|
+
'Startup input normalization should be provider-aware.',
|
|
139
|
+
);
|
|
140
|
+
assert.match(
|
|
141
|
+
shellConnection,
|
|
142
|
+
/provider === 'codex' \? '\\n' : '\\r'/,
|
|
143
|
+
'Codex startup input should submit with LF because CR can leave /init typed but unsubmitted in Codex TUI.',
|
|
144
|
+
);
|
|
145
|
+
assert.doesNotMatch(
|
|
146
|
+
workbench,
|
|
147
|
+
/hermesCliLaunch\.startupInput \? `\$\{hermesCliLaunch\.startupInput\}\\r` : null/,
|
|
148
|
+
'Workbench should not pre-append CR before provider-aware startup input normalization.',
|
|
149
|
+
);
|
|
135
150
|
assert.match(
|
|
136
151
|
shellView,
|
|
137
152
|
/permissionOverride/,
|
|
@@ -63,11 +63,16 @@ assert.match(workbench, /WORKBENCH_CLI_STATE_STORAGE_KEY/, 'CLI terminal should
|
|
|
63
63
|
assert.match(workbench, /function WorkbenchBottomTerminal/, 'Terminal activity should render as a bottom plain-shell panel.');
|
|
64
64
|
assert.match(workbench, /BOTTOM_TERMINAL_MIN_HEIGHT/, 'Bottom terminal should support height resizing.');
|
|
65
65
|
assert.match(workbench, /isBottomTerminalMinimized/, 'Bottom terminal should support minimizing without closing.');
|
|
66
|
+
assert.match(workbench, /bottomTerminalProject/, 'Bottom terminal should stay bound to the project it was opened for.');
|
|
67
|
+
assert.match(workbench, /setBottomTerminalProject/, 'Opening a bottom terminal should capture its project instead of following workspace selection changes.');
|
|
68
|
+
assert.match(workbench, /terminalProject = bottomTerminalProject \?\? selectedProject/, 'Workbench should render bottom terminals against their captured project binding.');
|
|
66
69
|
assert.match(workbench, /isPlainShell/, 'Bottom terminal should open the selected project folder without starting the selected AI CLI.');
|
|
67
70
|
assert.doesNotMatch(workbench, /HERMES_AGENT_START_COMMAND/, 'Hermes Agent should not launch from the bottom terminal through a server-side sentinel.');
|
|
68
71
|
assert.doesNotMatch(workbench, /HermesApiChatPanel|HermesTerminalTranscript/, 'Hermes Agent should use the real PTY terminal UI, not a custom REST chat transcript.');
|
|
69
72
|
assert.doesNotMatch(workbench, /REST POST \/|transport=|response=|gateway=http/, 'Hermes terminal UI must not expose REST debug internals to the user.');
|
|
70
|
-
assert.match(workbench, /
|
|
73
|
+
assert.match(workbench, /HERMES_DEFAULT_COMMAND = 'hermes --yolo'/, 'Hermes Agent bottom panel should launch the actual `hermes` CLI in a bypass-enabled PTY.');
|
|
74
|
+
assert.match(workbench, /HERMES_HISTORY_COMMAND = 'hermes sessions'/, 'Hermes terminal should expose the native Hermes sessions/history command.');
|
|
75
|
+
assert.match(workbench, /onOpenHistory=\{openHermesHistory\}/, 'Hermes terminal header should wire its history button to the native Hermes sessions command.');
|
|
71
76
|
assert.match(workbench, /Pixcode MCP Live/, 'Hermes terminal should show a user-facing Pixcode MCP live badge.');
|
|
72
77
|
assert.doesNotMatch(workbench, /ml-auto border-blue-500\/40 bg-blue-500\/10/, 'Hermes REST panel must not use right-aligned chat bubbles.');
|
|
73
78
|
assert.match(workbench, /terminal-launches\/stream/, 'Hermes CLI launch requests should arrive through an EventSource stream.');
|
|
@@ -88,7 +93,7 @@ assert.doesNotMatch(workbench, /suspendAutoConnect/, 'Right CLI provider starts
|
|
|
88
93
|
assert.match(serverIndex, /\/api\/shell\/sessions\/terminate/, 'Backend should expose an authenticated endpoint to terminate cached provider PTYs immediately.');
|
|
89
94
|
assert.match(serverIndex, /isPlainShell && !initialCommand/, 'Backend should spawn an interactive plain shell when no terminal command is provided.');
|
|
90
95
|
assert.doesNotMatch(serverIndex, /pixcode:hermes:start/, 'Backend should not need a Hermes terminal sentinel for the workbench Hermes panel.');
|
|
91
|
-
assert.
|
|
96
|
+
assert.match(serverIndex, /buildHermesCliCommand/, 'Backend should configure Pixcode MCP before launching the resolved Hermes command.');
|
|
92
97
|
assert.match(serverIndex, /configure-pixcode-mcp\.mjs/, 'Hermes PTY launches should configure Pixcode MCP before starting the CLI.');
|
|
93
98
|
assert.match(serverIndex, /resolveHermesMcpBaseUrl/, 'Hermes MCP should use the local Pixcode API base URL from the host process.');
|
|
94
99
|
assert.doesNotMatch(hermesInstallJobs, /iex \(irm https:\/\/raw\.githubusercontent\.com\/NousResearch\/hermes-agent\/main\/scripts\/install\.ps1\)/, 'Windows Hermes install should avoid the old inline iex pattern.');
|
|
@@ -282,6 +282,12 @@ for (const token of ['BOTTOM_TERMINAL_MIN_HEIGHT', 'isBottomTerminalMinimized',
|
|
|
282
282
|
assert.match(workbench, new RegExp(token), `Workbench should include ${token}.`);
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
+
assert.match(
|
|
286
|
+
workbench,
|
|
287
|
+
/bottomTerminalProject/,
|
|
288
|
+
'Bottom terminal should keep its original project while workspace tabs change.',
|
|
289
|
+
);
|
|
290
|
+
|
|
285
291
|
assert.match(
|
|
286
292
|
workbench,
|
|
287
293
|
/isPlainShell/,
|
|
@@ -294,10 +300,22 @@ assert.doesNotMatch(
|
|
|
294
300
|
'Hermes Agent should not launch through the bottom terminal with a server-side command sentinel.',
|
|
295
301
|
);
|
|
296
302
|
|
|
297
|
-
assert.
|
|
303
|
+
assert.doesNotMatch(
|
|
298
304
|
workbench,
|
|
299
305
|
/HermesApiChatPanel/,
|
|
300
|
-
'Hermes Agent should use the
|
|
306
|
+
'Hermes Agent should use the real PTY terminal UI instead of the removed REST chat panel.',
|
|
307
|
+
);
|
|
308
|
+
|
|
309
|
+
assert.match(
|
|
310
|
+
workbench,
|
|
311
|
+
/HERMES_DEFAULT_COMMAND = 'hermes --yolo'/,
|
|
312
|
+
'Hermes Agent should launch the Hermes CLI directly in bypass mode.',
|
|
313
|
+
);
|
|
314
|
+
|
|
315
|
+
assert.match(
|
|
316
|
+
workbench,
|
|
317
|
+
/HERMES_HISTORY_COMMAND = 'hermes sessions'/,
|
|
318
|
+
'Hermes Agent should expose native Hermes session history from the bottom terminal.',
|
|
301
319
|
);
|
|
302
320
|
|
|
303
321
|
assert.doesNotMatch(
|