@mindexec/cli 0.2.32 → 0.2.34

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.32",
3
+ "version": "0.2.34",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -702,13 +702,16 @@ try {
702
702
  assert.equal(bodyView.querySelector('[data-remote-fleet-match-count="true"]'), null);
703
703
  assert.equal(bodyView.querySelector('[data-remote-fleet-search="true"]'), null);
704
704
  assert.equal(bodyView.querySelectorAll('select').length, 0);
705
- assert.ok(bodyView.querySelector('[data-remote-fleet-device-grid="true"]'));
705
+ const deviceGrid = bodyView.querySelector('[data-remote-fleet-device-grid="true"]');
706
+ assert.ok(deviceGrid);
707
+ assert.match(deviceGrid.style.cssText, /padding:\s*0 4px;/);
706
708
  const statusFooter = bodyView.querySelector('[data-remote-fleet-status-rail="true"]');
707
709
  assert.ok(statusFooter);
708
710
  const bodyChildOrder = Array.from(bodyView.children).map(child =>
709
711
  Object.keys(child.dataset || {}).join(',') || child.tagName).join('|');
710
712
  assert.ok(bodyChildOrder.endsWith('remoteFleetStatusRail'), bodyChildOrder);
711
713
  assert.ok(statusFooter.style.cssText.includes('flex-direction: row'));
714
+ assert.match(statusFooter.style.cssText, /box-sizing:\s*border-box;/);
712
715
  assert.equal(statusFooter.querySelectorAll('[data-remote-fleet-status-item]').length, 4);
713
716
  const initialDetailPanel = bodyView.querySelector('[data-remote-fleet-detail-panel="true"]');
714
717
  assert.equal(initialDetailPanel?.dataset.deviceId, focusedDevice.DeviceId);
@@ -811,6 +814,9 @@ try {
811
814
  const { nodeShell: emptyShell, bodyView: emptyBody } = createRemoteFleetTemplateShell(document);
812
815
  document.body.appendChild(emptyShell);
813
816
  manager.renderRemoteFleetMonitorForTest(emptyBody, buildMonitorNode([], hub.getStatus({ includeSecrets: true })));
817
+ const emptyScreenShell = emptyBody.querySelector('[data-remote-fleet-empty-screens="true"]');
818
+ assert.ok(emptyScreenShell);
819
+ assert.match(emptyScreenShell.style.cssText, /padding:\s*2px 4px 6px 4px;/);
814
820
  const emptyScreens = emptyBody.querySelectorAll('[data-remote-fleet-empty-screen="true"]');
815
821
  assert.ok(emptyScreens.length >= 24, `expected empty monitor to fill space, got ${emptyScreens.length}`);
816
822
  assert.notEqual(emptyScreens.length, 6);
@@ -12282,6 +12282,7 @@
12282
12282
  width: 100%;
12283
12283
  min-width: 0;
12284
12284
  min-height: 28px;
12285
+ box-sizing: border-box;
12285
12286
  padding: 4px 6px;
12286
12287
  border-radius: 7px;
12287
12288
  border: 1px solid rgba(148, 163, 184, 0.22);
@@ -12482,7 +12483,8 @@
12482
12483
  grid-template-columns: repeat(auto-fill, minmax(132px, 1fr));
12483
12484
  align-content: start;
12484
12485
  gap: 8px;
12485
- padding: 2px 4px 6px 0;
12486
+ box-sizing: border-box;
12487
+ padding: 2px 4px 6px 4px;
12486
12488
  `;
12487
12489
 
12488
12490
  const screenCount = getRemoteFleetEmptyScreenCount(nodeModel);
@@ -14276,6 +14278,7 @@
14276
14278
  grid-template-columns: minmax(0, 1fr) minmax(230px, 270px);
14277
14279
  gap: 10px;
14278
14280
  align-items: stretch;
14281
+ box-sizing: border-box;
14279
14282
  `;
14280
14283
 
14281
14284
  const grid = document.createElement('div');
@@ -14288,7 +14291,8 @@
14288
14291
  grid-template-columns: ${densityState === 'dense' ? 'repeat(auto-fill, minmax(104px, 1fr))' : 'repeat(auto-fill, minmax(132px, 1fr))'};
14289
14292
  align-content: start;
14290
14293
  gap: 8px;
14291
- padding-right: 4px;
14294
+ box-sizing: border-box;
14295
+ padding: 0 4px;
14292
14296
  `;
14293
14297
 
14294
14298
  if (devices.length > 0) {
@@ -11,10 +11,47 @@
11
11
  const scrollUpdateThrottleTimers = new Map();
12
12
  const lastScrollCall = new Map();
13
13
  const resizeThrottleTimers = new Map(); // [New] throttle for texture updates during resize
14
- const lastResizeUpdateCall = new Map(); // [New] last resize-update timestamp
15
- const THROTTLE_INTERVAL = 16; // 16ms -> ~60fps
16
- const RESIZE_HANDLE_SIZE = 16;
14
+ const lastResizeUpdateCall = new Map(); // [New] last resize-update timestamp
15
+ const THROTTLE_INTERVAL = 16; // 16ms -> ~60fps
16
+ const RESIZE_HANDLE_SIZE = 16;
17
17
  const ENABLE_WEBGL_GLOW = false;
18
+ const DEFAULT_MIN_NODE_WIDTH = 200;
19
+ const DEFAULT_MIN_NODE_HEIGHT = 100;
20
+ const REMOTE_FLEET_SEMANTIC_TYPE = 'RemoteFleetMonitor';
21
+ const REMOTE_FLEET_MONITOR_MIN_WIDTH = 520;
22
+ const REMOTE_FLEET_MONITOR_MIN_HEIGHT = 320;
23
+
24
+ function getNodeMetadata(nodeModel) {
25
+ return nodeModel?.metadata || nodeModel?.Metadata || null;
26
+ }
27
+
28
+ function isRemoteFleetMonitorNodeModel(nodeModel) {
29
+ const metadata = getNodeMetadata(nodeModel);
30
+ return String(metadata?.SemanticType || metadata?.semanticType || '').trim() === REMOTE_FLEET_SEMANTIC_TYPE;
31
+ }
32
+
33
+ function clampRemoteFleetResizeDimensions(
34
+ nodeModel,
35
+ width,
36
+ height,
37
+ fallbackMinWidth = DEFAULT_MIN_NODE_WIDTH,
38
+ fallbackMinHeight = DEFAULT_MIN_NODE_HEIGHT) {
39
+ const minWidth = isRemoteFleetMonitorNodeModel(nodeModel)
40
+ ? REMOTE_FLEET_MONITOR_MIN_WIDTH
41
+ : fallbackMinWidth;
42
+ const minHeight = isRemoteFleetMonitorNodeModel(nodeModel)
43
+ ? REMOTE_FLEET_MONITOR_MIN_HEIGHT
44
+ : fallbackMinHeight;
45
+
46
+ const numericWidth = Number(width);
47
+ const numericHeight = Number(height);
48
+
49
+ return {
50
+ width: Number.isFinite(numericWidth) ? Math.max(minWidth, numericWidth) : minWidth,
51
+ height: Number.isFinite(numericHeight) ? Math.max(minHeight, numericHeight) : minHeight
52
+ };
53
+ }
54
+
18
55
  function isDocumentHidden() {
19
56
  return typeof document !== 'undefined' && document.visibilityState === 'hidden';
20
57
  }
@@ -996,13 +1033,11 @@
996
1033
  // ▲▲▲ [Changed] ▲▲▲
997
1034
 
998
1035
  function doResizing(module, currentX, currentY) {
999
- if (!module.isResizing || !module.resizeNodeObject) return;
1000
- // ▼▼▼ [Changed] Cap max node size: X=2000, Y=4000 ▼▼▼
1001
- const MAX_NODE_WIDTH = 2000;
1002
- const MAX_NODE_HEIGHT = 4000;
1003
- const MIN_WIDTH = 200;
1004
- const MIN_HEIGHT = 100;
1005
- // ▲▲▲ [Changed] ▲▲▲
1036
+ if (!module.isResizing || !module.resizeNodeObject) return;
1037
+ // ▼▼▼ [Changed] Cap max node size: X=2000, Y=4000 ▼▼▼
1038
+ const MAX_NODE_WIDTH = 2000;
1039
+ const MAX_NODE_HEIGHT = 4000;
1040
+ // ▲▲▲ [Changed] ▲▲▲
1006
1041
 
1007
1042
  const vfov = (module.camera.fov * Math.PI) / 180;
1008
1043
  const viewHeight = 2 * Math.tan(vfov / 2) * module.camera.position.z;
@@ -1092,9 +1127,10 @@
1092
1127
  break;
1093
1128
  }
1094
1129
 
1095
- // Clamp size
1096
- let clampedWidth = Math.min(MAX_NODE_WIDTH, Math.max(MIN_WIDTH, finalWidth));
1097
- let clampedHeight = Math.min(MAX_NODE_HEIGHT, Math.max(MIN_HEIGHT, finalHeight));
1130
+ // Clamp size
1131
+ const minClampedSize = clampRemoteFleetResizeDimensions(nodeEntry.model, finalWidth, finalHeight);
1132
+ let clampedWidth = Math.min(MAX_NODE_WIDTH, minClampedSize.width);
1133
+ let clampedHeight = Math.min(MAX_NODE_HEIGHT, minClampedSize.height);
1098
1134
 
1099
1135
  // ▼▼▼ [Image Resize Fix] Remove specific Ratio Preservation for now (Treat as normal nodes) ▼▼▼
1100
1136
  // Normal nodes Logic (apply to all)
@@ -1697,13 +1733,19 @@
1697
1733
 
1698
1734
  // Respect global snap toggle. Resize itself stays free-form while dragging;
1699
1735
  // snapping is applied only at the end when enabled.
1700
- if (module.gridSnapEnabled !== false) {
1701
- const GRID_SIZE = module.GRID_SIZE || 10;
1702
- nodeEntry.model.width = Math.round(nodeEntry.model.width / GRID_SIZE) * GRID_SIZE;
1703
- nodeEntry.model.height = Math.round(nodeEntry.model.height / GRID_SIZE) * GRID_SIZE;
1704
- finalPosX = Math.round(currentPosX / GRID_SIZE) * GRID_SIZE;
1705
- finalPosY = Math.round(currentPosY / GRID_SIZE) * GRID_SIZE;
1706
- }
1736
+ if (module.gridSnapEnabled !== false) {
1737
+ const GRID_SIZE = module.GRID_SIZE || 10;
1738
+ nodeEntry.model.width = Math.round(nodeEntry.model.width / GRID_SIZE) * GRID_SIZE;
1739
+ nodeEntry.model.height = Math.round(nodeEntry.model.height / GRID_SIZE) * GRID_SIZE;
1740
+ finalPosX = Math.round(currentPosX / GRID_SIZE) * GRID_SIZE;
1741
+ finalPosY = Math.round(currentPosY / GRID_SIZE) * GRID_SIZE;
1742
+ }
1743
+ const finalClampedSize = clampRemoteFleetResizeDimensions(
1744
+ nodeEntry.model,
1745
+ nodeEntry.model.width,
1746
+ nodeEntry.model.height);
1747
+ nodeEntry.model.width = finalClampedSize.width;
1748
+ nodeEntry.model.height = finalClampedSize.height;
1707
1749
 
1708
1750
  if (nodeEntry.glObject) {
1709
1751
  nodeEntry.glObject.position.x = finalPosX;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "mainAssemblyName": "MindExecution.Web",
3
3
  "resources": {
4
- "hash": "sha256-k0iqwLZMNziqsO0cna4ZkRaImvlJnFEHmg2NH2KplKs=",
4
+ "hash": "sha256-BYZ6lq4kaGZiBuNgV8QOEaSvnGnTnR6IWt+xgFnK1Uo=",
5
5
  "fingerprinting": {
6
6
  "Google.Protobuf.9h59ukbel7.dll": "Google.Protobuf.dll",
7
7
  "Markdig.d1j7v41cl1.dll": "Markdig.dll",
@@ -127,12 +127,12 @@
127
127
  "MindExecution.Kernel.z56elxihok.dll": "MindExecution.Kernel.dll",
128
128
  "MindExecution.Plugins.Admin.p5cs4ap87v.dll": "MindExecution.Plugins.Admin.dll",
129
129
  "MindExecution.Plugins.Business.s35og5uz44.dll": "MindExecution.Plugins.Business.dll",
130
- "MindExecution.Plugins.Concept.jb7kys86wq.dll": "MindExecution.Plugins.Concept.dll",
130
+ "MindExecution.Plugins.Concept.x5x3iqtkgo.dll": "MindExecution.Plugins.Concept.dll",
131
131
  "MindExecution.Plugins.Directory.y74f55e8x3.dll": "MindExecution.Plugins.Directory.dll",
132
- "MindExecution.Plugins.PlanMaster.1obf2n1hl7.dll": "MindExecution.Plugins.PlanMaster.dll",
133
- "MindExecution.Plugins.YouTube.qw5tai5je1.dll": "MindExecution.Plugins.YouTube.dll",
134
- "MindExecution.Shared.2z6d6fd998.dll": "MindExecution.Shared.dll",
135
- "MindExecution.Web.9nijd135cw.dll": "MindExecution.Web.dll",
132
+ "MindExecution.Plugins.PlanMaster.07cy04zurx.dll": "MindExecution.Plugins.PlanMaster.dll",
133
+ "MindExecution.Plugins.YouTube.mo7avv377y.dll": "MindExecution.Plugins.YouTube.dll",
134
+ "MindExecution.Shared.w3ubr90yg5.dll": "MindExecution.Shared.dll",
135
+ "MindExecution.Web.gb9zhx3dxx.dll": "MindExecution.Web.dll",
136
136
  "dotnet.js": "dotnet.js",
137
137
  "dotnet.native.qc8g39g30v.js": "dotnet.native.js",
138
138
  "dotnet.native.boem75ye5i.wasm": "dotnet.native.wasm",
@@ -280,16 +280,16 @@
280
280
  "netstandard.yvr3prsx0x.dll": "sha256-EksNn8Luo4bOWqJ6X7dIe9qG9oOqwOVzjH2xYyMNi+E=",
281
281
  "MindExecution.Core.6rfnfdndxq.dll": "sha256-giL4rreoKsQoQ5gkLusNx7oL3w1l2UH52TYY1KBoIfQ=",
282
282
  "MindExecution.Kernel.z56elxihok.dll": "sha256-STATJelRGcW9SDGgsw6YmQi6tkQje52dy4lyT3QU4qs=",
283
- "MindExecution.Plugins.Concept.jb7kys86wq.dll": "sha256-D7QlSmcoOaxtP9JEvAPlsJKObz56kmlgXKLZ+Jroa7Y=",
284
- "MindExecution.Plugins.PlanMaster.1obf2n1hl7.dll": "sha256-0TYlX0adXCQWn+HTgjv0rrn5T5/TThIl7JLkhaRliRM=",
285
- "MindExecution.Shared.2z6d6fd998.dll": "sha256-jtZ/ZCA2BLYFna83H2CZO0vKybYTnJKYttby/VcP66g=",
286
- "MindExecution.Web.9nijd135cw.dll": "sha256-29k55hju6eiouNWKYR3UZ/EwgTKKByFUbBe7ZLKSMdk="
283
+ "MindExecution.Plugins.Concept.x5x3iqtkgo.dll": "sha256-W2sphwkE/PScgPxfhzdsuwUgBG4m6EToyForJunayqQ=",
284
+ "MindExecution.Plugins.PlanMaster.07cy04zurx.dll": "sha256-xE2DMm9nMLryeUMWyggO2CK0pPVr6u4DX5O7peqY5i8=",
285
+ "MindExecution.Shared.w3ubr90yg5.dll": "sha256-1FM7ozYE55PPnsn4iIzgkecaZW2XK6a1gtDDBwBmzxU=",
286
+ "MindExecution.Web.gb9zhx3dxx.dll": "sha256-FKGY1FZsLuObtQZsUd1wjYWkgXdweiIA0XXdYyXsAO8="
287
287
  },
288
288
  "lazyAssembly": {
289
289
  "MindExecution.Plugins.Admin.p5cs4ap87v.dll": "sha256-jahiJxaiE8hwMyRcg6rZGo4WBhBGFyAHYhOqlKjawWg=",
290
290
  "MindExecution.Plugins.Business.s35og5uz44.dll": "sha256-KOyk9eC6E/Gyfz2uWucHQmAayMQbShhLTqEymZFleh4=",
291
291
  "MindExecution.Plugins.Directory.y74f55e8x3.dll": "sha256-4gMuhIPLiX31U+jwhDT83rSPqZINONadmW+cvujfq1g=",
292
- "MindExecution.Plugins.YouTube.qw5tai5je1.dll": "sha256-KqXA6wxRyvgZXWtZmDf4aptpBt37K0TtiH0LttCAKmI="
292
+ "MindExecution.Plugins.YouTube.mo7avv377y.dll": "sha256-ZpDbryAxdS02pyVHJx55sGhN5cC7F/T6UkS0OGMY8og="
293
293
  }
294
294
  },
295
295
  "cacheBootResources": true,
@@ -558,7 +558,7 @@
558
558
  }
559
559
 
560
560
  const base = '_content/MindExecution.Shared/js/';
561
- const scriptVersion = '20260613-multi-desktop-monitor-v499';
561
+ const scriptVersion = '20260613-i18n-flow-sidebar-v501';
562
562
  const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
563
563
  console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
564
564
  const criticalScripts = [
@@ -1,5 +1,5 @@
1
1
  self.assetsManifest = {
2
- "version": "tG2C/jje",
2
+ "version": "a6DcFZSG",
3
3
  "assets": [
4
4
  {
5
5
  "hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
@@ -86,7 +86,7 @@
86
86
  "url": "_content/MindExecution.Shared/js/mind-map-core.js.backup"
87
87
  },
88
88
  {
89
- "hash": "sha256-/3RTpwOFzdkfkEfmvqSHMfcR/+BZVFrwffhPrpdJdb4=",
89
+ "hash": "sha256-/VP1+0Z3MTxJrQo63/wR5hjAPOWOmaYePO4K5qQ1pjg=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -146,7 +146,7 @@
146
146
  "url": "_content/MindExecution.Shared/js/mind-map-object-manager.js.backup"
147
147
  },
148
148
  {
149
- "hash": "sha256-DYZK8gIcx+qM6Dex6QDlzkfUo/8KfHzpyl2Gmz7cBZw=",
149
+ "hash": "sha256-qoG82XBRkzLFD9Fm/Rmr0k6P+IWL4ZxUyTY4EIfc1hM=",
150
150
  "url": "_content/MindExecution.Shared/js/mind-map-pipeline.js"
151
151
  },
152
152
  {
@@ -426,28 +426,28 @@
426
426
  "url": "_framework/MindExecution.Plugins.Business.s35og5uz44.dll"
427
427
  },
428
428
  {
429
- "hash": "sha256-D7QlSmcoOaxtP9JEvAPlsJKObz56kmlgXKLZ+Jroa7Y=",
430
- "url": "_framework/MindExecution.Plugins.Concept.jb7kys86wq.dll"
429
+ "hash": "sha256-W2sphwkE/PScgPxfhzdsuwUgBG4m6EToyForJunayqQ=",
430
+ "url": "_framework/MindExecution.Plugins.Concept.x5x3iqtkgo.dll"
431
431
  },
432
432
  {
433
433
  "hash": "sha256-4gMuhIPLiX31U+jwhDT83rSPqZINONadmW+cvujfq1g=",
434
434
  "url": "_framework/MindExecution.Plugins.Directory.y74f55e8x3.dll"
435
435
  },
436
436
  {
437
- "hash": "sha256-0TYlX0adXCQWn+HTgjv0rrn5T5/TThIl7JLkhaRliRM=",
438
- "url": "_framework/MindExecution.Plugins.PlanMaster.1obf2n1hl7.dll"
437
+ "hash": "sha256-xE2DMm9nMLryeUMWyggO2CK0pPVr6u4DX5O7peqY5i8=",
438
+ "url": "_framework/MindExecution.Plugins.PlanMaster.07cy04zurx.dll"
439
439
  },
440
440
  {
441
- "hash": "sha256-KqXA6wxRyvgZXWtZmDf4aptpBt37K0TtiH0LttCAKmI=",
442
- "url": "_framework/MindExecution.Plugins.YouTube.qw5tai5je1.dll"
441
+ "hash": "sha256-ZpDbryAxdS02pyVHJx55sGhN5cC7F/T6UkS0OGMY8og=",
442
+ "url": "_framework/MindExecution.Plugins.YouTube.mo7avv377y.dll"
443
443
  },
444
444
  {
445
- "hash": "sha256-jtZ/ZCA2BLYFna83H2CZO0vKybYTnJKYttby/VcP66g=",
446
- "url": "_framework/MindExecution.Shared.2z6d6fd998.dll"
445
+ "hash": "sha256-1FM7ozYE55PPnsn4iIzgkecaZW2XK6a1gtDDBwBmzxU=",
446
+ "url": "_framework/MindExecution.Shared.w3ubr90yg5.dll"
447
447
  },
448
448
  {
449
- "hash": "sha256-29k55hju6eiouNWKYR3UZ/EwgTKKByFUbBe7ZLKSMdk=",
450
- "url": "_framework/MindExecution.Web.9nijd135cw.dll"
449
+ "hash": "sha256-FKGY1FZsLuObtQZsUd1wjYWkgXdweiIA0XXdYyXsAO8=",
450
+ "url": "_framework/MindExecution.Web.gb9zhx3dxx.dll"
451
451
  },
452
452
  {
453
453
  "hash": "sha256-IsZJ91/OW+fHzNqIgEc7Y072ns8z9dGritiSyvR9Wgc=",
@@ -770,7 +770,7 @@
770
770
  "url": "_framework/Websocket.Client.vapounvmnl.dll"
771
771
  },
772
772
  {
773
- "hash": "sha256-ppYCYMNULSQ3/L8P0hM5zTUHdhy8QpSuQqWy9yYzkGo=",
773
+ "hash": "sha256-iDVAyNFMUrizurCQlUmm0OdM+lYmXrc09Mbv9wy9JsI=",
774
774
  "url": "_framework/blazor.boot.json"
775
775
  },
776
776
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-O/ZlL+rS51HA/+gIrVJrCdCRZH7WHsv7/YutBtsU7hY=",
837
+ "hash": "sha256-oZkwNCYhht6lhLG1Xa7GyN3vtMh2Fso+mvK8DLRZgrs=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: tG2C/jje */
1
+ /* Manifest version: a6DcFZSG */
2
2
  // Hosted deployments should prefer the network over stale offline caches.
3
3
  // This service worker immediately clears old Blazor offline caches and unregisters itself.
4
4