@pixelbyte-software/pixcode 1.36.2 → 1.36.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/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-Bp8mXdQd.js"></script>
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-D7WwDXvu.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/vendor-codemirror-CzYAOTxS.js">
|
|
41
41
|
<link rel="modulepreload" crossorigin href="/assets/vendor-xterm-CJZjLICi.js">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixelbyte-software/pixcode",
|
|
3
|
-
"version": "1.36.
|
|
3
|
+
"version": "1.36.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",
|
|
@@ -40,9 +40,11 @@
|
|
|
40
40
|
"typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p server/tsconfig.json",
|
|
41
41
|
"lint": "eslint src/ server/",
|
|
42
42
|
"lint:fix": "eslint src/ server/ --fix",
|
|
43
|
+
"smoke:chat-session-state": "node scripts/smoke/chat-session-state.mjs",
|
|
43
44
|
"smoke:orchestration-api": "node scripts/smoke/orchestration-api.mjs",
|
|
44
45
|
"smoke:orchestration-live": "node scripts/smoke/orchestration-live-run.mjs",
|
|
45
46
|
"smoke:provider-rest": "node scripts/smoke/provider-rest-api.mjs",
|
|
47
|
+
"smoke:update-ux": "node scripts/smoke/update-ux.mjs",
|
|
46
48
|
"start": "npm run build && npm run server",
|
|
47
49
|
"release": "./release.sh",
|
|
48
50
|
"prepublishOnly": "npm run build",
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
|
|
5
|
+
const sourcePath = 'src/components/chat/hooks/useChatSessionState.ts';
|
|
6
|
+
const source = readFileSync(sourcePath, 'utf8');
|
|
7
|
+
|
|
8
|
+
const staleStoreMessagesMemo = /const\s+storeMessages\s*=\s*useMemo\s*\([\s\S]{0,500}?sessionStore\.getMessages\(activeSessionId\)[\s\S]{0,300}?\[\s*activeSessionId\s*,\s*sessionStore\s*\]/m;
|
|
9
|
+
|
|
10
|
+
if (staleStoreMessagesMemo.test(source)) {
|
|
11
|
+
console.error([
|
|
12
|
+
'useChatSessionState keeps sessionStore.getMessages() behind a stale useMemo.',
|
|
13
|
+
'The session store can notify a render while activeSessionId/sessionStore stay the same,',
|
|
14
|
+
'so the chat pane must read store messages on each render.',
|
|
15
|
+
].join(' '));
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
console.log('chat session state store read is render-fresh');
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
|
|
5
|
+
const checks = [
|
|
6
|
+
{
|
|
7
|
+
name: 'update frequency defaults to 30 minutes',
|
|
8
|
+
file: 'src/utils/updateCheckPreferences.ts',
|
|
9
|
+
test: (source) => (
|
|
10
|
+
source.includes("export type UpdateCheckFrequency = 'off' | '30m' |")
|
|
11
|
+
&& source.includes("{ value: '30m'")
|
|
12
|
+
&& /DEFAULT_UPDATE_CHECK_PREFERENCES[\s\S]*frequency:\s*'30m'/.test(source)
|
|
13
|
+
),
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'sidebar opens the version modal when an update is detected',
|
|
17
|
+
file: 'src/components/sidebar/view/Sidebar.tsx',
|
|
18
|
+
test: (source) => (
|
|
19
|
+
source.includes('PIXCODE_UPDATE_AVAILABLE_EVENT')
|
|
20
|
+
&& source.includes('setShowVersionModal(true)')
|
|
21
|
+
&& source.includes('updateAvailable')
|
|
22
|
+
),
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'version modal supports release-notes-only opens',
|
|
26
|
+
file: 'src/components/version-upgrade/view/VersionUpgradeModal.tsx',
|
|
27
|
+
test: (source) => (
|
|
28
|
+
source.includes('isUpdateAvailable')
|
|
29
|
+
&& source.includes('versionUpdate.releaseNotesTitle')
|
|
30
|
+
&& source.includes('showUpdateActions')
|
|
31
|
+
),
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'desktop splash makes startup update work visible',
|
|
35
|
+
file: 'desktop/electron/main.cjs',
|
|
36
|
+
test: (source) => (
|
|
37
|
+
source.includes('Checking for updates before launch')
|
|
38
|
+
&& source.includes('Applying Pixcode update')
|
|
39
|
+
),
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const failures = [];
|
|
44
|
+
|
|
45
|
+
for (const check of checks) {
|
|
46
|
+
const source = readFileSync(check.file, 'utf8');
|
|
47
|
+
if (!check.test(source)) failures.push(check.name);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (failures.length > 0) {
|
|
51
|
+
console.error(`Update UX smoke failed:\n- ${failures.join('\n- ')}`);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
console.log('update UX smoke passed');
|