@mindexec/cli 0.2.31 → 0.2.32

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.31",
3
+ "version": "0.2.32",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -463,7 +463,7 @@ function createRemoteFleetTemplateShell(document, focusDeviceId = '') {
463
463
  icon.setAttribute('class', 'template-card__icon template-card__icon--remote-fleet');
464
464
  const titleWrap = document.createElement('div');
465
465
  titleWrap.setAttribute('class', 'template-card__title-block');
466
- titleWrap.textContent = 'Remote Fleet Monitor';
466
+ titleWrap.textContent = 'Multi Desktop Monitor';
467
467
  header.appendChild(icon);
468
468
  header.appendChild(titleWrap);
469
469
  const bodyView = document.createElement('div');
@@ -811,7 +811,9 @@ try {
811
811
  const { nodeShell: emptyShell, bodyView: emptyBody } = createRemoteFleetTemplateShell(document);
812
812
  document.body.appendChild(emptyShell);
813
813
  manager.renderRemoteFleetMonitorForTest(emptyBody, buildMonitorNode([], hub.getStatus({ includeSecrets: true })));
814
- assert.equal(emptyBody.querySelectorAll('[data-remote-fleet-empty-screen="true"]').length, 6);
814
+ const emptyScreens = emptyBody.querySelectorAll('[data-remote-fleet-empty-screen="true"]');
815
+ assert.ok(emptyScreens.length >= 24, `expected empty monitor to fill space, got ${emptyScreens.length}`);
816
+ assert.notEqual(emptyScreens.length, 6);
815
817
  assert.ok(Array.from(emptyBody.children).map(child =>
816
818
  Object.keys(child.dataset || {}).join(',') || child.tagName).join('|').endsWith('remoteFleetStatusRail'));
817
819
  assert.equal(emptyBody.textContent.includes('No devices connected yet.'), false);
@@ -29,6 +29,8 @@
29
29
  let _cssImageDisplayPumpScheduled = false;
30
30
  const CSS_VIDEO_PROXY_MAX_DEVICE_PIXEL_RATIO = 2;
31
31
  const VIDEO_PLAYBACK_INTENT_METADATA_KEY = 'VideoPlaybackIntent';
32
+ const REMOTE_FLEET_DISPLAY_NAME = 'Multi Desktop Monitor';
33
+ const REMOTE_FLEET_LEGACY_DISPLAY_NAME = 'Remote Fleet Monitor';
32
34
  const _cssVideoProxyStateByVideo = new WeakMap();
33
35
  // ▲▲▲ [Perf] ▲▲▲
34
36
 
@@ -11737,11 +11739,18 @@
11737
11739
  return container;
11738
11740
  }
11739
11741
 
11742
+ function getRemoteFleetDisplayTitle(value) {
11743
+ const title = String(value ?? '').trim();
11744
+ if (!title || title === REMOTE_FLEET_LEGACY_DISPLAY_NAME) {
11745
+ return REMOTE_FLEET_DISPLAY_NAME;
11746
+ }
11747
+ return title;
11748
+ }
11749
+
11740
11750
  function createRemoteFleetTemplateNodeElement(nodeModel) {
11741
11751
  const width = Number(nodeModel.width ?? nodeModel.Width ?? 960);
11742
11752
  const height = Number(nodeModel.height ?? nodeModel.Height ?? 620);
11743
- const title = String(nodeModel.prompt ?? nodeModel.Prompt ?? 'Remote Fleet Monitor').trim()
11744
- || 'Remote Fleet Monitor';
11753
+ const title = getRemoteFleetDisplayTitle(nodeModel.prompt ?? nodeModel.Prompt);
11745
11754
 
11746
11755
  const container = document.createElement('div');
11747
11756
  container.id = `node-${nodeModel.id}`;
@@ -12452,7 +12461,17 @@
12452
12461
  return titleActions;
12453
12462
  }
12454
12463
 
12455
- function createRemoteFleetEmptyScreens() {
12464
+ function getRemoteFleetEmptyScreenCount(nodeModel) {
12465
+ const width = Number(nodeModel?.width ?? nodeModel?.Width ?? 960);
12466
+ const height = Number(nodeModel?.height ?? nodeModel?.Height ?? 620);
12467
+ const usableWidth = Number.isFinite(width) ? Math.max(360, width - 44) : 916;
12468
+ const usableHeight = Number.isFinite(height) ? Math.max(260, height - 128) : 492;
12469
+ const columns = Math.max(3, Math.floor(usableWidth / 142));
12470
+ const rows = Math.max(3, Math.ceil(usableHeight / 88));
12471
+ return Math.max(12, Math.min(80, columns * rows));
12472
+ }
12473
+
12474
+ function createRemoteFleetEmptyScreens(nodeModel) {
12456
12475
  const shell = document.createElement('section');
12457
12476
  shell.dataset.remoteFleetEmptyScreens = 'true';
12458
12477
  shell.style.cssText = `
@@ -12460,18 +12479,19 @@
12460
12479
  min-height: 0;
12461
12480
  overflow: hidden;
12462
12481
  display: grid;
12463
- grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
12482
+ grid-template-columns: repeat(auto-fill, minmax(132px, 1fr));
12464
12483
  align-content: start;
12465
- gap: 10px;
12484
+ gap: 8px;
12466
12485
  padding: 2px 4px 6px 0;
12467
12486
  `;
12468
12487
 
12469
- for (let index = 0; index < 6; index += 1) {
12488
+ const screenCount = getRemoteFleetEmptyScreenCount(nodeModel);
12489
+ for (let index = 0; index < screenCount; index += 1) {
12470
12490
  const screen = document.createElement('div');
12471
12491
  screen.dataset.remoteFleetEmptyScreen = 'true';
12472
12492
  screen.style.cssText = `
12473
12493
  aspect-ratio: 16 / 9;
12474
- min-height: 96px;
12494
+ min-height: 72px;
12475
12495
  border-radius: 8px;
12476
12496
  border: 1px solid rgba(203, 213, 225, 0.72);
12477
12497
  background: #ffffff;
@@ -14265,7 +14285,7 @@
14265
14285
  overflow-y: auto;
14266
14286
  overflow-x: hidden;
14267
14287
  display: grid;
14268
- grid-template-columns: ${densityState === 'dense' ? 'repeat(auto-fill, minmax(118px, 1fr))' : 'repeat(auto-fill, minmax(148px, 1fr))'};
14288
+ grid-template-columns: ${densityState === 'dense' ? 'repeat(auto-fill, minmax(104px, 1fr))' : 'repeat(auto-fill, minmax(132px, 1fr))'};
14269
14289
  align-content: start;
14270
14290
  gap: 8px;
14271
14291
  padding-right: 4px;
@@ -14397,7 +14417,7 @@
14397
14417
  if (devices.length === 0) {
14398
14418
  monitorWorkspace.style.display = 'flex';
14399
14419
  monitorWorkspace.style.flexDirection = 'column';
14400
- monitorWorkspace.appendChild(createRemoteFleetEmptyScreens());
14420
+ monitorWorkspace.appendChild(createRemoteFleetEmptyScreens(nodeModel));
14401
14421
  } else {
14402
14422
  monitorWorkspace.appendChild(grid);
14403
14423
  monitorWorkspace.appendChild(createSelectedDevicePanel(selectedDevice));
@@ -18362,7 +18382,7 @@
18362
18382
 
18363
18383
  const titleEl = card.querySelector('.template-card__title');
18364
18384
  if (titleEl) {
18365
- const nextTitle = String(prompt || 'Remote Fleet Monitor').trim() || 'Remote Fleet Monitor';
18385
+ const nextTitle = getRemoteFleetDisplayTitle(prompt);
18366
18386
  if (titleEl.textContent !== nextTitle) {
18367
18387
  titleEl.textContent = nextTitle;
18368
18388
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "mainAssemblyName": "MindExecution.Web",
3
3
  "resources": {
4
- "hash": "sha256-3BNGeO97GJzZPWJKcxft//YyUghoJWfEleoPXAWQph8=",
4
+ "hash": "sha256-k0iqwLZMNziqsO0cna4ZkRaImvlJnFEHmg2NH2KplKs=",
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.faidxooqle.dll": "MindExecution.Plugins.Concept.dll",
130
+ "MindExecution.Plugins.Concept.jb7kys86wq.dll": "MindExecution.Plugins.Concept.dll",
131
131
  "MindExecution.Plugins.Directory.y74f55e8x3.dll": "MindExecution.Plugins.Directory.dll",
132
- "MindExecution.Plugins.PlanMaster.xfcd3pwd7p.dll": "MindExecution.Plugins.PlanMaster.dll",
133
- "MindExecution.Plugins.YouTube.78s7dilkza.dll": "MindExecution.Plugins.YouTube.dll",
134
- "MindExecution.Shared.hse89ibcyq.dll": "MindExecution.Shared.dll",
135
- "MindExecution.Web.p1v0ug5h4f.dll": "MindExecution.Web.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",
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.faidxooqle.dll": "sha256-177f2QdWAeNbJvUOInKfZ/A6AGWzRqbge3x6ePcBDpI=",
284
- "MindExecution.Plugins.PlanMaster.xfcd3pwd7p.dll": "sha256-PaeGgCgIzD09cq0h3SywgwHpIOkmyZ9bV3ArDCOWbpo=",
285
- "MindExecution.Shared.hse89ibcyq.dll": "sha256-HyIJGWol5LmyLiefR4XpyKXtgpidf6Vr4pN/0hPskHA=",
286
- "MindExecution.Web.p1v0ug5h4f.dll": "sha256-07TGezQJ2CbX3lpW2Qou4T/rJi4GFWmBv545YHiXfVk="
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="
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.78s7dilkza.dll": "sha256-p4/WQZuUrLU9A/tUFh4J9I5vw15MjWZ3Tvs0v1oPbhY="
292
+ "MindExecution.Plugins.YouTube.qw5tai5je1.dll": "sha256-KqXA6wxRyvgZXWtZmDf4aptpBt37K0TtiH0LttCAKmI="
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-remote-status-footer-v498';
561
+ const scriptVersion = '20260613-multi-desktop-monitor-v499';
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": "bj3XSoYW",
2
+ "version": "tG2C/jje",
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-wA7GDKMviFGPIS+XIFaOKL57XgwYI5rm8uCzK3lbJ4Q=",
89
+ "hash": "sha256-/3RTpwOFzdkfkEfmvqSHMfcR/+BZVFrwffhPrpdJdb4=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -426,28 +426,28 @@
426
426
  "url": "_framework/MindExecution.Plugins.Business.s35og5uz44.dll"
427
427
  },
428
428
  {
429
- "hash": "sha256-177f2QdWAeNbJvUOInKfZ/A6AGWzRqbge3x6ePcBDpI=",
430
- "url": "_framework/MindExecution.Plugins.Concept.faidxooqle.dll"
429
+ "hash": "sha256-D7QlSmcoOaxtP9JEvAPlsJKObz56kmlgXKLZ+Jroa7Y=",
430
+ "url": "_framework/MindExecution.Plugins.Concept.jb7kys86wq.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-PaeGgCgIzD09cq0h3SywgwHpIOkmyZ9bV3ArDCOWbpo=",
438
- "url": "_framework/MindExecution.Plugins.PlanMaster.xfcd3pwd7p.dll"
437
+ "hash": "sha256-0TYlX0adXCQWn+HTgjv0rrn5T5/TThIl7JLkhaRliRM=",
438
+ "url": "_framework/MindExecution.Plugins.PlanMaster.1obf2n1hl7.dll"
439
439
  },
440
440
  {
441
- "hash": "sha256-p4/WQZuUrLU9A/tUFh4J9I5vw15MjWZ3Tvs0v1oPbhY=",
442
- "url": "_framework/MindExecution.Plugins.YouTube.78s7dilkza.dll"
441
+ "hash": "sha256-KqXA6wxRyvgZXWtZmDf4aptpBt37K0TtiH0LttCAKmI=",
442
+ "url": "_framework/MindExecution.Plugins.YouTube.qw5tai5je1.dll"
443
443
  },
444
444
  {
445
- "hash": "sha256-HyIJGWol5LmyLiefR4XpyKXtgpidf6Vr4pN/0hPskHA=",
446
- "url": "_framework/MindExecution.Shared.hse89ibcyq.dll"
445
+ "hash": "sha256-jtZ/ZCA2BLYFna83H2CZO0vKybYTnJKYttby/VcP66g=",
446
+ "url": "_framework/MindExecution.Shared.2z6d6fd998.dll"
447
447
  },
448
448
  {
449
- "hash": "sha256-07TGezQJ2CbX3lpW2Qou4T/rJi4GFWmBv545YHiXfVk=",
450
- "url": "_framework/MindExecution.Web.p1v0ug5h4f.dll"
449
+ "hash": "sha256-29k55hju6eiouNWKYR3UZ/EwgTKKByFUbBe7ZLKSMdk=",
450
+ "url": "_framework/MindExecution.Web.9nijd135cw.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-c2H0026f7tTv+gbbQCZt1/VMd200vEuF95yAiIZ1ydU=",
773
+ "hash": "sha256-ppYCYMNULSQ3/L8P0hM5zTUHdhy8QpSuQqWy9yYzkGo=",
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-DnjQ0S/JwJSnNvxVlB8B3VSxBcrtCmulbGRdjQZqsLg=",
837
+ "hash": "sha256-O/ZlL+rS51HA/+gIrVJrCdCRZH7WHsv7/YutBtsU7hY=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: bj3XSoYW */
1
+ /* Manifest version: tG2C/jje */
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