@mindexec/cli 0.2.455 → 0.2.457
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/package.json +77 -77
- package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
- package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
- package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
- package/scripts/remote-fleet-render-smoke.mjs +24 -46
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +4 -4
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +253 -261
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +1326 -1323
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-render-plan.js +25 -6
- package/wwwroot/_framework/{MindExecution.Core.3y861y22o4.dll → MindExecution.Core.speado072l.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Kernel.182clfthnx.dll → MindExecution.Kernel.mjy31ssdac.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Admin.ghxhrm0vf5.dll → MindExecution.Plugins.Admin.vbjjmdaao2.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Business.doimlros51.dll → MindExecution.Plugins.Business.0cr5jc6wqe.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.hp54u7s3y5.dll → MindExecution.Plugins.Concept.m7p666e0jd.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Directory.wjfnb1nk3b.dll → MindExecution.Plugins.Directory.kmdtirnljl.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.447psj7gxo.dll → MindExecution.Plugins.PlanMaster.m1pfeozacj.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.7f551zknhn.dll → MindExecution.Plugins.YouTube.nvsc9q4s6b.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.aftyr3f4lo.dll → MindExecution.Shared.9jaznballd.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Web.tkj3z0fg8f.dll → MindExecution.Web.k5jxwawryl.dll} +0 -0
- package/wwwroot/_framework/blazor.boot.json +21 -21
- package/wwwroot/index.html +1 -1
- package/wwwroot/service-worker-assets.js +27 -27
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindexec/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.457",
|
|
4
4
|
"description": "MindExec local runtime and bridge CLI",
|
|
5
5
|
"main": "server.js",
|
|
6
6
|
"type": "module",
|
|
@@ -16,24 +16,24 @@
|
|
|
16
16
|
"codex-runtime.js",
|
|
17
17
|
"codex-model-catalog.js",
|
|
18
18
|
"port-guard.cjs",
|
|
19
|
-
"remote-fast/",
|
|
20
|
-
"wwwroot/",
|
|
21
|
-
"electron/",
|
|
22
|
-
"scripts/",
|
|
19
|
+
"remote-fast/",
|
|
20
|
+
"wwwroot/",
|
|
21
|
+
"electron/",
|
|
22
|
+
"scripts/",
|
|
23
23
|
"tree-sitter-grammars/",
|
|
24
24
|
"README.md"
|
|
25
25
|
],
|
|
26
|
-
"scripts": {
|
|
27
|
-
"start": "node launch-bridge.cjs",
|
|
28
|
-
"dev": "node launch-bridge.cjs --watch",
|
|
29
|
-
"desktop:start": "electron electron/main.cjs",
|
|
30
|
-
"desktop:build:win": "electron-builder --win --x64 --publish never",
|
|
31
|
-
"test:desktop": "node electron/source-smoke.mjs",
|
|
32
|
-
"test:desktop:win": "node electron/windows-package-smoke.mjs",
|
|
33
|
-
"test:syntax": "node --check server.js && node --check remote-hub.js && node --check lzo1x.js && node --check mode4-atlas.js && node --check mode4-atlas-worker.js && node --check codex-runtime.js && node --check codex-model-catalog.js && node --check launch-bridge.cjs && node --check port-guard.cjs && node --check electron/main.cjs && node --check electron/source-smoke.mjs && node --check electron/windows-package-smoke.mjs && node --check scripts/setup-tree-sitter-grammars.mjs && node --check scripts/npm-fresh-install-smoke.mjs && node --check scripts/auth-session-smoke.mjs && node --check scripts/codex-model-catalog-smoke.mjs && node --check scripts/codex-sdk-runtime-smoke.mjs && node --check scripts/remote-hub-smoke.mjs && node --check scripts/remote-hub-scale-smoke.mjs && node --check scripts/remote-fleet-render-smoke.mjs && node --check scripts/remote-http-smoke.mjs && node --check scripts/remote-frame-ws-smoke.mjs && node --check scripts/remote-input-ws-smoke.mjs && node --check scripts/remote-agent-ws-smoke.mjs && node --check scripts/remote-agent-managed-smoke.mjs && node --check scripts/remote-registry-follower-smoke.mjs && node --check scripts/remote-agent-package-smoke.mjs && node --check scripts/remote-fast-live-rate-smoke.mjs && node --check scripts/remote-fast-mdm-browser-smoke.mjs",
|
|
34
|
-
"test:codex-sdk": "node scripts/codex-sdk-runtime-smoke.mjs",
|
|
35
|
-
"test:codex-sdk:live": "node scripts/codex-sdk-runtime-smoke.mjs --live",
|
|
36
|
-
"test:codex-sdk:live-tools": "node scripts/codex-sdk-runtime-smoke.mjs --live-tools",
|
|
26
|
+
"scripts": {
|
|
27
|
+
"start": "node launch-bridge.cjs",
|
|
28
|
+
"dev": "node launch-bridge.cjs --watch",
|
|
29
|
+
"desktop:start": "electron electron/main.cjs",
|
|
30
|
+
"desktop:build:win": "electron-builder --win --x64 --publish never",
|
|
31
|
+
"test:desktop": "node electron/source-smoke.mjs",
|
|
32
|
+
"test:desktop:win": "node electron/windows-package-smoke.mjs",
|
|
33
|
+
"test:syntax": "node --check server.js && node --check remote-hub.js && node --check lzo1x.js && node --check mode4-atlas.js && node --check mode4-atlas-worker.js && node --check codex-runtime.js && node --check codex-model-catalog.js && node --check launch-bridge.cjs && node --check port-guard.cjs && node --check electron/main.cjs && node --check electron/source-smoke.mjs && node --check electron/windows-package-smoke.mjs && node --check scripts/setup-tree-sitter-grammars.mjs && node --check scripts/npm-fresh-install-smoke.mjs && node --check scripts/auth-session-smoke.mjs && node --check scripts/codex-model-catalog-smoke.mjs && node --check scripts/codex-sdk-runtime-smoke.mjs && node --check scripts/remote-hub-smoke.mjs && node --check scripts/remote-hub-scale-smoke.mjs && node --check scripts/remote-fleet-render-smoke.mjs && node --check scripts/remote-http-smoke.mjs && node --check scripts/remote-frame-ws-smoke.mjs && node --check scripts/remote-input-ws-smoke.mjs && node --check scripts/remote-agent-ws-smoke.mjs && node --check scripts/remote-agent-managed-smoke.mjs && node --check scripts/remote-registry-follower-smoke.mjs && node --check scripts/remote-agent-package-smoke.mjs && node --check scripts/remote-fast-live-rate-smoke.mjs && node --check scripts/remote-fast-mdm-browser-smoke.mjs",
|
|
34
|
+
"test:codex-sdk": "node scripts/codex-sdk-runtime-smoke.mjs",
|
|
35
|
+
"test:codex-sdk:live": "node scripts/codex-sdk-runtime-smoke.mjs --live",
|
|
36
|
+
"test:codex-sdk:live-tools": "node scripts/codex-sdk-runtime-smoke.mjs --live-tools",
|
|
37
37
|
"test:codex-model-catalog": "node scripts/codex-model-catalog-smoke.mjs",
|
|
38
38
|
"test:codex-model-catalog:live": "node scripts/codex-model-catalog-smoke.mjs --live",
|
|
39
39
|
"test:auth": "node scripts/auth-session-smoke.mjs",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"local",
|
|
62
62
|
"ai"
|
|
63
63
|
],
|
|
64
|
-
"author": "lovecrdm77",
|
|
64
|
+
"author": "lovecrdm77",
|
|
65
65
|
"license": "MIT",
|
|
66
66
|
"publishConfig": {
|
|
67
67
|
"access": "public"
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
73
|
"@ffmpeg-installer/ffmpeg": "^1.1.0",
|
|
74
|
-
"@mindexec/remote": "^0.1.18",
|
|
74
|
+
"@mindexec/remote": "^0.1.18",
|
|
75
75
|
"@openai/codex-sdk": "^0.144.1",
|
|
76
76
|
"chokidar": "^3.6.0",
|
|
77
77
|
"cors": "^2.8.5",
|
|
@@ -90,62 +90,62 @@
|
|
|
90
90
|
"mindexec": "launch-bridge.cjs",
|
|
91
91
|
"mind-bridge": "launch-bridge.cjs"
|
|
92
92
|
},
|
|
93
|
-
"devDependencies": {
|
|
94
|
-
"electron": "43.2.0",
|
|
95
|
-
"electron-builder": "26.15.3",
|
|
96
|
-
"tree-sitter-wasms": "^0.1.13"
|
|
97
|
-
},
|
|
98
|
-
"build": {
|
|
99
|
-
"appId": "com.mindexec.desktop",
|
|
100
|
-
"productName": "MindExec",
|
|
101
|
-
"copyright": "Copyright © 2026 lovecrdm77",
|
|
102
|
-
"asar": false,
|
|
103
|
-
"extraMetadata": {
|
|
104
|
-
"main": "electron/main.cjs"
|
|
105
|
-
},
|
|
106
|
-
"directories": {
|
|
107
|
-
"output": "../artifacts/electron"
|
|
108
|
-
},
|
|
109
|
-
"files": [
|
|
110
|
-
"*.js",
|
|
111
|
-
"*.cjs",
|
|
112
|
-
"*.json",
|
|
113
|
-
"electron/main.cjs",
|
|
114
|
-
"remote-fast/**/*",
|
|
115
|
-
"scripts/**/*",
|
|
116
|
-
"tree-sitter-grammars/**/*",
|
|
117
|
-
"wwwroot/**/*",
|
|
118
|
-
"node_modules/**/*"
|
|
119
|
-
],
|
|
120
|
-
"win": {
|
|
121
|
-
"icon": "../MindExecution.Web/wwwroot/app-icon-1024.png",
|
|
122
|
-
"executableName": "MindExec",
|
|
123
|
-
"target": [
|
|
124
|
-
{
|
|
125
|
-
"target": "nsis",
|
|
126
|
-
"arch": [
|
|
127
|
-
"x64"
|
|
128
|
-
]
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
"target": "portable",
|
|
132
|
-
"arch": [
|
|
133
|
-
"x64"
|
|
134
|
-
]
|
|
135
|
-
}
|
|
136
|
-
]
|
|
137
|
-
},
|
|
138
|
-
"nsis": {
|
|
139
|
-
"artifactName": "MindExec-Setup-${version}-${arch}.${ext}",
|
|
140
|
-
"oneClick": false,
|
|
141
|
-
"perMachine": false,
|
|
142
|
-
"allowToChangeInstallationDirectory": true,
|
|
143
|
-
"createDesktopShortcut": true,
|
|
144
|
-
"createStartMenuShortcut": true,
|
|
145
|
-
"shortcutName": "MindExec"
|
|
146
|
-
},
|
|
147
|
-
"portable": {
|
|
148
|
-
"artifactName": "MindExec-Portable-${version}-${arch}.${ext}"
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
93
|
+
"devDependencies": {
|
|
94
|
+
"electron": "43.2.0",
|
|
95
|
+
"electron-builder": "26.15.3",
|
|
96
|
+
"tree-sitter-wasms": "^0.1.13"
|
|
97
|
+
},
|
|
98
|
+
"build": {
|
|
99
|
+
"appId": "com.mindexec.desktop",
|
|
100
|
+
"productName": "MindExec",
|
|
101
|
+
"copyright": "Copyright © 2026 lovecrdm77",
|
|
102
|
+
"asar": false,
|
|
103
|
+
"extraMetadata": {
|
|
104
|
+
"main": "electron/main.cjs"
|
|
105
|
+
},
|
|
106
|
+
"directories": {
|
|
107
|
+
"output": "../artifacts/electron"
|
|
108
|
+
},
|
|
109
|
+
"files": [
|
|
110
|
+
"*.js",
|
|
111
|
+
"*.cjs",
|
|
112
|
+
"*.json",
|
|
113
|
+
"electron/main.cjs",
|
|
114
|
+
"remote-fast/**/*",
|
|
115
|
+
"scripts/**/*",
|
|
116
|
+
"tree-sitter-grammars/**/*",
|
|
117
|
+
"wwwroot/**/*",
|
|
118
|
+
"node_modules/**/*"
|
|
119
|
+
],
|
|
120
|
+
"win": {
|
|
121
|
+
"icon": "../MindExecution.Web/wwwroot/app-icon-1024.png",
|
|
122
|
+
"executableName": "MindExec",
|
|
123
|
+
"target": [
|
|
124
|
+
{
|
|
125
|
+
"target": "nsis",
|
|
126
|
+
"arch": [
|
|
127
|
+
"x64"
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"target": "portable",
|
|
132
|
+
"arch": [
|
|
133
|
+
"x64"
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
"nsis": {
|
|
139
|
+
"artifactName": "MindExec-Setup-${version}-${arch}.${ext}",
|
|
140
|
+
"oneClick": false,
|
|
141
|
+
"perMachine": false,
|
|
142
|
+
"allowToChangeInstallationDirectory": true,
|
|
143
|
+
"createDesktopShortcut": true,
|
|
144
|
+
"createStartMenuShortcut": true,
|
|
145
|
+
"shortcutName": "MindExec"
|
|
146
|
+
},
|
|
147
|
+
"portable": {
|
|
148
|
+
"artifactName": "MindExec-Portable-${version}-${arch}.${ext}"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -950,9 +950,11 @@ try {
|
|
|
950
950
|
|
|
951
951
|
let cards = bodyView.querySelectorAll('article[data-device-id]');
|
|
952
952
|
assert.equal(cards.length, connectedCount);
|
|
953
|
-
assert.
|
|
954
|
-
assert.
|
|
955
|
-
assert.equal(bodyView.querySelectorAll('select').length,
|
|
953
|
+
assert.ok(bodyView.querySelector('[data-remote-fleet-match-count="true"]'));
|
|
954
|
+
assert.ok(bodyView.querySelector('[data-remote-fleet-search="true"]'));
|
|
955
|
+
assert.equal(bodyView.querySelectorAll('select').length, 4);
|
|
956
|
+
assert.ok(bodyView.querySelector('[data-remote-fleet-task-composer="visible"]'));
|
|
957
|
+
assert.ok(bodyView.querySelector('[data-remote-fleet-task-input="true"]'));
|
|
956
958
|
const deviceGrid = bodyView.querySelector('[data-remote-fleet-device-grid="true"]');
|
|
957
959
|
assert.ok(deviceGrid);
|
|
958
960
|
assert.match(deviceGrid.style.cssText, /padding:\s*0 4px;/);
|
|
@@ -1206,7 +1208,7 @@ try {
|
|
|
1206
1208
|
call.methodName === 'AddRemoteFleetDeviceNodeFromJs'
|
|
1207
1209
|
&& call.args[0] === 'remote-fleet-render-smoke'
|
|
1208
1210
|
&& call.args[1] === patchTarget.DeviceId);
|
|
1209
|
-
assert.ok(addControlNodeCall, 'double-clicking
|
|
1211
|
+
assert.ok(addControlNodeCall, 'double-clicking a screen tile should create a remote workstation canvas node');
|
|
1210
1212
|
|
|
1211
1213
|
const alternateDevice = devices.find(device =>
|
|
1212
1214
|
device.Connected === true
|
|
@@ -1222,10 +1224,10 @@ try {
|
|
|
1222
1224
|
assert.equal(selectedAfterClick?.querySelector('[data-remote-fleet-selected-indicator="true"]'), null);
|
|
1223
1225
|
const livePanel = bodyView.querySelector('[data-remote-fleet-live-panel="true"]');
|
|
1224
1226
|
assert.equal(livePanel, null);
|
|
1225
|
-
assert.
|
|
1226
|
-
assert.
|
|
1227
|
-
assert.
|
|
1228
|
-
assert.
|
|
1227
|
+
assert.ok(bodyView.querySelector('[data-remote-fleet-action="task-visible"]'));
|
|
1228
|
+
assert.ok(bodyView.querySelector('[data-remote-fleet-action="task-connected"]'));
|
|
1229
|
+
assert.ok(bodyView.querySelector('[data-remote-fleet-task-input="true"]'));
|
|
1230
|
+
assert.ok(bodyView.querySelector('[data-remote-fleet-ai-toggle="true"]'));
|
|
1229
1231
|
assert.equal(bodyView.textContent.includes('all devices, no paging'), false);
|
|
1230
1232
|
assert.equal(bodyView.textContent.includes('Host: Inactive'), false);
|
|
1231
1233
|
assert.equal(bodyView.textContent.includes('No screen'), false);
|
|
@@ -1276,14 +1278,14 @@ try {
|
|
|
1276
1278
|
assert.equal(bodyView.querySelector('[data-remote-fleet-action="copy-command"]'), null);
|
|
1277
1279
|
assert.equal(bodyView.querySelector('[data-remote-fleet-action="refresh"]'), null);
|
|
1278
1280
|
assert.equal(bodyView.querySelector('[data-remote-fleet-auto-toggle="true"]'), null);
|
|
1279
|
-
assert.equal(bodyView.textContent.includes('synthetic-render-ai'),
|
|
1280
|
-
assert.equal(bodyView.textContent.includes('Task timed out waiting for the agent response.'),
|
|
1281
|
+
assert.equal(bodyView.textContent.includes('synthetic-render-ai'), true);
|
|
1282
|
+
assert.equal(bodyView.textContent.includes('Task timed out waiting for the agent response.'), true);
|
|
1281
1283
|
const batchSummary = bodyView.querySelector('[data-remote-fleet-task-batch="true"]');
|
|
1282
|
-
assert.
|
|
1284
|
+
assert.ok(batchSummary);
|
|
1283
1285
|
const batchHistory = bodyView.querySelector('[data-remote-fleet-task-history="true"]');
|
|
1284
|
-
assert.
|
|
1286
|
+
assert.ok(batchHistory);
|
|
1285
1287
|
const resultPanel = bodyView.querySelector('[data-remote-fleet-task-results="true"]');
|
|
1286
|
-
assert.
|
|
1288
|
+
assert.ok(resultPanel);
|
|
1287
1289
|
assert.ok(devices.some(device => /^synthetic-response-/.test(device.LatestTaskResultResponseId)));
|
|
1288
1290
|
await wait(20);
|
|
1289
1291
|
const liveStartCalls = dotNetCalls
|
|
@@ -1302,7 +1304,7 @@ try {
|
|
|
1302
1304
|
assert.ok(diagnostics.fetchCalls.some(call => call.url.includes('/api/status?remoteFrames=ws')));
|
|
1303
1305
|
assert.ok(diagnostics.webSocketConnections.length >= 1, 'expected MDM render to open Mode 4 Atlas WebSocket');
|
|
1304
1306
|
assert.ok(atlasConfigure, 'expected MDM render to configure the Mode 4 Atlas WebSocket');
|
|
1305
|
-
assert.equal(atlasConfigure.fps,
|
|
1307
|
+
assert.equal(atlasConfigure.fps, 2);
|
|
1306
1308
|
assert.equal(atlasConfigure.width, 1920);
|
|
1307
1309
|
assert.equal(atlasConfigure.height, 1080);
|
|
1308
1310
|
assert.equal(atlasConfigure.tileWidth, 320);
|
|
@@ -1318,7 +1320,7 @@ try {
|
|
|
1318
1320
|
const feedback = bodyView.querySelector('[data-remote-fleet-task-feedback="true"]');
|
|
1319
1321
|
assert.ok(feedback);
|
|
1320
1322
|
|
|
1321
|
-
assert.
|
|
1323
|
+
assert.ok(bodyView.querySelector('[data-remote-fleet-ai-toggle="true"]'));
|
|
1322
1324
|
assert.equal(dotNetCalls.some(call =>
|
|
1323
1325
|
call.methodName === 'DispatchRemoteFleetTaskBatchFromJs'
|
|
1324
1326
|
|| call.methodName === 'DispatchRemoteFleetTaskFromJs'), false);
|
|
@@ -1409,12 +1411,12 @@ try {
|
|
|
1409
1411
|
&& message.type === 'subscribe'
|
|
1410
1412
|
&& message.nodeId === 'remote-device-render-smoke'
|
|
1411
1413
|
&& message.autoStartLive === true
|
|
1412
|
-
&& message.fps ===
|
|
1413
|
-
&& message.mode === '
|
|
1414
|
-
&& message.streamPurpose === '
|
|
1414
|
+
&& message.fps === 2
|
|
1415
|
+
&& message.mode === 'mode2-lzo'
|
|
1416
|
+
&& message.streamPurpose === 'wall'
|
|
1415
1417
|
&& Array.isArray(message.deviceIds)
|
|
1416
1418
|
&& message.deviceIds.includes(focusedDevice.DeviceId));
|
|
1417
|
-
assert.ok(deviceControlSubscribe, '
|
|
1419
|
+
assert.ok(deviceControlSubscribe, 'Remote workstation should subscribe to a 2fps view-only observation stream');
|
|
1418
1420
|
const deviceControlWs = diagnostics.webSocketConnections
|
|
1419
1421
|
.filter(ws => ws.url.includes('/api/remote/frames/ws'))
|
|
1420
1422
|
.at(-1);
|
|
@@ -1469,36 +1471,12 @@ try {
|
|
|
1469
1471
|
});
|
|
1470
1472
|
await wait(50);
|
|
1471
1473
|
const inputWsSends = diagnostics.webSocketSends
|
|
1472
|
-
.filter(send => send.url.includes('/api/remote/input/ws'))
|
|
1473
|
-
|
|
1474
|
-
try {
|
|
1475
|
-
return JSON.parse(send.payload);
|
|
1476
|
-
} catch {
|
|
1477
|
-
return null;
|
|
1478
|
-
}
|
|
1479
|
-
})
|
|
1480
|
-
.filter(Boolean);
|
|
1481
|
-
assert.ok(inputWsSends.length >= 3, 'RemoteFleetDevice node should send pointer and keyboard input over the input WebSocket');
|
|
1482
|
-
const pointerDown = inputWsSends.find(message => message.input?.type === 'pointerDown');
|
|
1483
|
-
const keyDown = inputWsSends.find(message => message.input?.type === 'keyDown');
|
|
1484
|
-
const keyUp = inputWsSends.find(message => message.input?.type === 'keyUp');
|
|
1485
|
-
assert.ok(pointerDown);
|
|
1486
|
-
assert.ok(keyDown);
|
|
1487
|
-
assert.ok(keyUp);
|
|
1488
|
-
assert.equal(pointerDown.nodeId, 'remote-device-render-smoke');
|
|
1489
|
-
assert.equal(pointerDown.deviceId, focusedDevice.DeviceId);
|
|
1490
|
-
assert.equal(pointerDown.input.button, 'left');
|
|
1491
|
-
assert.ok(pointerDown.input.controlLeaseId);
|
|
1492
|
-
assert.ok(pointerDown.input.normalizedX >= 0 && pointerDown.input.normalizedX <= 1);
|
|
1493
|
-
assert.ok(pointerDown.input.normalizedY >= 0 && pointerDown.input.normalizedY <= 1);
|
|
1494
|
-
assert.equal(keyDown.input.key, 'A');
|
|
1495
|
-
assert.equal(keyDown.input.code, 'KeyA');
|
|
1496
|
-
assert.equal(keyUp.input.key, 'A');
|
|
1497
|
-
assert.equal(keyUp.input.code, 'KeyA');
|
|
1474
|
+
.filter(send => send.url.includes('/api/remote/input/ws'));
|
|
1475
|
+
assert.equal(inputWsSends.length, 0, 'Remote workstation must remain view-only and send no pointer or keyboard input');
|
|
1498
1476
|
assert.equal(
|
|
1499
1477
|
dotNetCalls.filter(call => call.methodName === 'SendRemoteFleetInputFromJs').length,
|
|
1500
1478
|
0,
|
|
1501
|
-
'
|
|
1479
|
+
'View-only workstation must not use the DotNet input fallback');
|
|
1502
1480
|
assert.ok(deviceBody.querySelector('[data-remote-fleet-action="refresh-device"]'));
|
|
1503
1481
|
assert.ok(deviceBody.querySelector('[data-remote-fleet-action="task-device"]'));
|
|
1504
1482
|
assert.ok(deviceBody.textContent.includes('Task timed out waiting for the agent response.'));
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
const DEBUG = false;
|
|
6
6
|
const FPS_DEBUG = false;
|
|
7
7
|
const FRAME_PERF_DEBUG = false;
|
|
8
|
-
const MINDMAP_CORE_BUILD_ID = '
|
|
8
|
+
const MINDMAP_CORE_BUILD_ID = '20260801-wheel-dpr-stable-v866';
|
|
9
9
|
const CanvasPhase = Object.freeze({
|
|
10
10
|
Booting: 'booting',
|
|
11
11
|
BoardFileLoading: 'board-file-loading',
|
|
@@ -6597,13 +6597,13 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
6597
6597
|
this._preserveVisibleSetThisFrame = true;
|
|
6598
6598
|
}
|
|
6599
6599
|
// ?�▲??[Perf] ?�▲?? _profileSection('pipelineVisibilityPlan');
|
|
6600
|
-
const
|
|
6601
|
-
window.MindMapRenderPlan?.
|
|
6600
|
+
const shouldUseInteractiveCameraDpr =
|
|
6601
|
+
window.MindMapRenderPlan?.shouldUseInteractiveRendererDpr?.(this, {
|
|
6602
6602
|
isCameraMoving
|
|
6603
6603
|
}) === true;
|
|
6604
6604
|
const shouldUseInteractiveDpr =
|
|
6605
6605
|
isNodeInteracting === true ||
|
|
6606
|
-
|
|
6606
|
+
shouldUseInteractiveCameraDpr ||
|
|
6607
6607
|
this.isWindowResizing === true;
|
|
6608
6608
|
this._applyRendererPixelRatio(shouldUseInteractiveDpr);
|
|
6609
6609
|
_profileSection('pipelinePixelRatio');
|