@pixelbyte-software/pixcode 1.48.1 → 1.48.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/dist/assets/index-CqqruMJK.css +32 -0
- package/dist/assets/{index-rGiqd0D-.js → index-CzFGzjCx.js} +188 -188
- package/dist/assets/vendor-xterm-C7tpxJl7.js +9 -0
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/scripts/smoke/pixcode-workbench-1-48.mjs +13 -0
- package/scripts/smoke/vscode-workbench-polish.mjs +101 -0
- package/dist/assets/index-By2TVdoL.css +0 -32
- package/dist/assets/vendor-xterm-CJZjLICi.js +0 -66
package/dist/index.html
CHANGED
|
@@ -35,11 +35,11 @@
|
|
|
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-CzFGzjCx.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
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-xterm-
|
|
42
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
41
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-xterm-C7tpxJl7.js">
|
|
42
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CqqruMJK.css">
|
|
43
43
|
</head>
|
|
44
44
|
<body>
|
|
45
45
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixelbyte-software/pixcode",
|
|
3
|
-
"version": "1.48.
|
|
3
|
+
"version": "1.48.3",
|
|
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",
|
|
@@ -17,6 +17,8 @@ const app = read('src/App.tsx');
|
|
|
17
17
|
const orchestration = read('src/components/orchestration/OrchestrationPage.tsx');
|
|
18
18
|
const serverIndex = read('server/index.js');
|
|
19
19
|
const hermesRoutes = read('server/modules/orchestration/hermes/hermes.routes.ts');
|
|
20
|
+
const shellTerminal = read('src/components/shell/hooks/useShellTerminal.ts');
|
|
21
|
+
const gitPanelHeader = read('src/components/git-panel/view/GitPanelHeader.tsx');
|
|
20
22
|
|
|
21
23
|
assert.match(
|
|
22
24
|
preferenceHook,
|
|
@@ -32,13 +34,24 @@ assert.doesNotMatch(appearanceTab, /workbenchLayout|WorkbenchLayoutPreference|on
|
|
|
32
34
|
|
|
33
35
|
assert.match(workbench, /useState<ActivityPanel>\('projects'\)/, 'Workbench should open on the Projects panel.');
|
|
34
36
|
assert.match(workbench, /WorkbenchWorkspaceTabs|WORKBENCH_WORKSPACE_TABS_STORAGE_KEY/, 'Workbench should expose persistent top workspace tabs.');
|
|
37
|
+
assert.match(workbench, /WorkspaceTabContextMenu/, 'Workbench workspace tabs should use right-click actions.');
|
|
38
|
+
assert.doesNotMatch(workbench, /\.\.\.currentTabs\.filter\(\(tab\) => tab\.id !== tabId\)/, 'Workspace selection should not reorder tabs.');
|
|
35
39
|
assert.match(workbench, /openEditorTabs|activeEditorPath/, 'Workbench editor should keep a Monaco-style tab set.');
|
|
36
40
|
assert.doesNotMatch(workbench, /<ChatInterface/, 'Right workbench panel should not render the chat composer.');
|
|
37
41
|
assert.match(workbench, /WorkbenchCliPanel/, 'Right workbench panel should render the CLI terminal panel.');
|
|
42
|
+
assert.match(workbench, /setIsTerminalOpen\(true\)/, 'CLI picker should give way to a full-height terminal after the user starts a provider.');
|
|
43
|
+
assert.match(workbench, /onClose=\{\(\) => setIsTerminalOpen\(false\)\}/, 'Closing the workbench terminal should return to the CLI picker.');
|
|
44
|
+
assert.match(workbench, /WorkbenchCliPanelToolbar/, 'CLI terminal should keep history and new-session actions visible.');
|
|
45
|
+
assert.match(workbench, /startNewCliSession/, 'CLI terminal should support starting a fresh provider session from the right pane.');
|
|
46
|
+
assert.doesNotMatch(shellTerminal, /new WebglAddon\(\)/, 'Workbench terminal should use the stable xterm renderer.');
|
|
47
|
+
assert.match(workbench, /setActivityPanel\('explorer'\)/, 'Selecting a project should return the side panel to Explorer.');
|
|
48
|
+
assert.match(gitPanelHeader, /compact/, 'Workbench Source Control should have compact icon-only controls.');
|
|
38
49
|
assert.doesNotMatch(workbench, /TaskMasterPanel|useTaskMaster|useTasksSettings|tabs\.tasks/, 'Workbench should not expose TaskMaster.');
|
|
39
50
|
|
|
40
51
|
assert.match(fileTreeData, /pixcode:file-tree-refresh/, 'File tree data should listen for websocket-backed file refresh events.');
|
|
41
52
|
assert.match(appContent, /pixcode:file-tree-refresh/, 'AppContent should bridge project websocket updates into file-tree refresh events.');
|
|
53
|
+
assert.match(read('src/components/file-tree/view/FileTree.tsx'), /loading && files\.length === 0/, 'File tree refresh should keep the current tree visible after the initial load.');
|
|
54
|
+
assert.match(read('src/components/file-tree/view/FileTree.tsx'), /liveChangedFilePaths/, 'File tree should highlight websocket-backed file changes without a manual refresh.');
|
|
42
55
|
|
|
43
56
|
assert.doesNotMatch(app, /TaskMasterProvider/, 'App should not wrap the product UI in TaskMasterProvider.');
|
|
44
57
|
assert.doesNotMatch(settingsSidebar, /id: 'tasks'/, 'Settings sidebar should not show a Tasks tab.');
|
|
@@ -12,6 +12,10 @@ const chatComposer = read('src/components/chat/view/subcomponents/ChatComposer.t
|
|
|
12
12
|
const workerSlots = read('src/components/chat/view/subcomponents/WorkerSlotsControl.tsx');
|
|
13
13
|
const wizard = read('src/components/project-creation-wizard/ProjectCreationWizard.tsx');
|
|
14
14
|
const sidebar = read('src/components/sidebar/view/Sidebar.tsx');
|
|
15
|
+
const shellTerminal = read('src/components/shell/hooks/useShellTerminal.ts');
|
|
16
|
+
const gitPanel = read('src/components/git-panel/view/GitPanel.tsx');
|
|
17
|
+
const gitPanelHeader = read('src/components/git-panel/view/GitPanelHeader.tsx');
|
|
18
|
+
const gitViewTabs = read('src/components/git-panel/view/GitViewTabs.tsx');
|
|
15
19
|
|
|
16
20
|
assert.match(
|
|
17
21
|
workbench,
|
|
@@ -59,6 +63,45 @@ assert.match(
|
|
|
59
63
|
'Workbench should render Chrome-style workspace tabs directly under the menu bar.',
|
|
60
64
|
);
|
|
61
65
|
|
|
66
|
+
assert.doesNotMatch(
|
|
67
|
+
workbench,
|
|
68
|
+
/\.\.\.currentTabs\.filter\(\(tab\) => tab\.id !== tabId\)/,
|
|
69
|
+
'Selecting an existing workspace tab must preserve tab order instead of moving it to the end.',
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
assert.match(
|
|
73
|
+
workbench,
|
|
74
|
+
/function WorkspaceTabContextMenu/,
|
|
75
|
+
'Workspace tabs should expose their actions through a right-click context menu.',
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
assert.match(
|
|
79
|
+
workbench,
|
|
80
|
+
/onContextMenu=\{\(event\) => openWorkspaceContextMenu\(event, tab\)\}/,
|
|
81
|
+
'Workspace tab actions should open from right-click on the tab.',
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
const workspaceTabsSource = workbench.slice(
|
|
85
|
+
workbench.indexOf('function WorkbenchWorkspaceTabs'),
|
|
86
|
+
workbench.indexOf('function EditorTabContextMenu'),
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
assert.doesNotMatch(
|
|
90
|
+
workspaceTabsSource,
|
|
91
|
+
/MoreHorizontal/,
|
|
92
|
+
'Workspace tabs should not render a three-dot action button.',
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
for (const token of ['closeOtherWorkspaces', 'closeAllWorkspaces']) {
|
|
96
|
+
assert.match(workbench, new RegExp(token), `Workspace tab context menu should support ${token}.`);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
assert.match(
|
|
100
|
+
workspaceTabsSource,
|
|
101
|
+
/self-center/,
|
|
102
|
+
'Workspace add button should be vertically centered in the tab strip.',
|
|
103
|
+
);
|
|
104
|
+
|
|
62
105
|
assert.match(
|
|
63
106
|
workbench,
|
|
64
107
|
/WORKBENCH_WORKSPACE_TABS_STORAGE_KEY/,
|
|
@@ -105,12 +148,48 @@ assert.match(
|
|
|
105
148
|
'Right CLI terminal should auto-connect when the selected provider can run.',
|
|
106
149
|
);
|
|
107
150
|
|
|
151
|
+
assert.match(
|
|
152
|
+
workbench,
|
|
153
|
+
/setIsTerminalOpen\(true\)/,
|
|
154
|
+
'Right CLI panel should switch from picker mode into a full-height terminal after Start.',
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
assert.match(
|
|
158
|
+
workbench,
|
|
159
|
+
/onClose=\{\(\) => setIsTerminalOpen\(false\)\}/,
|
|
160
|
+
'Right CLI terminal close button should return to the picker instead of leaving a dead reconnect overlay.',
|
|
161
|
+
);
|
|
162
|
+
|
|
108
163
|
assert.match(
|
|
109
164
|
workbench,
|
|
110
165
|
/function WorkbenchSessionHistory/,
|
|
111
166
|
'CLI history should be integrated as a polished project-scoped panel.',
|
|
112
167
|
);
|
|
113
168
|
|
|
169
|
+
assert.match(
|
|
170
|
+
workbench,
|
|
171
|
+
/terminalSession/,
|
|
172
|
+
'Right CLI panel should track whether the terminal is running a new session or a selected history session.',
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
assert.match(
|
|
176
|
+
workbench,
|
|
177
|
+
/startNewCliSession/,
|
|
178
|
+
'Right CLI panel should expose a one-click new CLI session action.',
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
assert.match(
|
|
182
|
+
workbench,
|
|
183
|
+
/function WorkbenchCliPanelToolbar/,
|
|
184
|
+
'Right CLI terminal should keep compact History and New Session actions visible while the terminal is open.',
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
assert.match(
|
|
188
|
+
workbench,
|
|
189
|
+
/onNewSession=\{startNewCliSession\}/,
|
|
190
|
+
'Right CLI terminal toolbar should wire the plus button to a new CLI session.',
|
|
191
|
+
);
|
|
192
|
+
|
|
114
193
|
assert.doesNotMatch(
|
|
115
194
|
workbench,
|
|
116
195
|
/return <Sidebar \{\.\.\.sidebarProps\} isMobile=\{false\} \/>/,
|
|
@@ -158,6 +237,28 @@ assert.match(
|
|
|
158
237
|
'Projects activity should stay selected while the center chat tab is active.',
|
|
159
238
|
);
|
|
160
239
|
|
|
240
|
+
assert.match(
|
|
241
|
+
workbench,
|
|
242
|
+
/setActivityPanel\('explorer'\)/,
|
|
243
|
+
'Selecting a project from Projects should switch the left pane back to Explorer.',
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
assert.match(
|
|
247
|
+
workbench,
|
|
248
|
+
/<GitPanel selectedProject=\{selectedProject\} isMobile=\{false\} compact onFileOpen=\{handleFileOpen\}/,
|
|
249
|
+
'Source Control should render in compact icon-first mode inside the VS Code workbench side panel.',
|
|
250
|
+
);
|
|
251
|
+
|
|
252
|
+
assert.match(gitPanel, /compact = false/, 'GitPanel should accept a compact prop.');
|
|
253
|
+
assert.match(gitPanelHeader, /compact/, 'GitPanelHeader should receive compact mode for narrow panes.');
|
|
254
|
+
assert.match(gitViewTabs, /compact/, 'GitViewTabs should render compact icon-only tabs.');
|
|
255
|
+
|
|
256
|
+
assert.doesNotMatch(
|
|
257
|
+
shellTerminal,
|
|
258
|
+
/new WebglAddon\(\)/,
|
|
259
|
+
'Shell terminal should avoid the WebGL renderer that can leave stale glyph trails with OpenCode output.',
|
|
260
|
+
);
|
|
261
|
+
|
|
161
262
|
assert.match(chatInterface, /compactComposer\?: boolean/, 'ChatInterface should expose compactComposer for narrow workbench panes.');
|
|
162
263
|
assert.match(chatComposer, /compact\?: boolean/, 'ChatComposer should expose a compact prop.');
|
|
163
264
|
assert.match(chatComposer, /flex-wrap/, 'ChatComposer footer should wrap controls in narrow panes.');
|