@mindexec/cli 0.2.31 → 0.2.33

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.33",
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');
@@ -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,7 +814,12 @@ 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 })));
814
- assert.equal(emptyBody.querySelectorAll('[data-remote-fleet-empty-screen="true"]').length, 6);
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;/);
820
+ const emptyScreens = emptyBody.querySelectorAll('[data-remote-fleet-empty-screen="true"]');
821
+ assert.ok(emptyScreens.length >= 24, `expected empty monitor to fill space, got ${emptyScreens.length}`);
822
+ assert.notEqual(emptyScreens.length, 6);
815
823
  assert.ok(Array.from(emptyBody.children).map(child =>
816
824
  Object.keys(child.dataset || {}).join(',') || child.tagName).join('|').endsWith('remoteFleetStatusRail'));
817
825
  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}`;
@@ -12273,6 +12282,7 @@
12273
12282
  width: 100%;
12274
12283
  min-width: 0;
12275
12284
  min-height: 28px;
12285
+ box-sizing: border-box;
12276
12286
  padding: 4px 6px;
12277
12287
  border-radius: 7px;
12278
12288
  border: 1px solid rgba(148, 163, 184, 0.22);
@@ -12452,7 +12462,17 @@
12452
12462
  return titleActions;
12453
12463
  }
12454
12464
 
12455
- function createRemoteFleetEmptyScreens() {
12465
+ function getRemoteFleetEmptyScreenCount(nodeModel) {
12466
+ const width = Number(nodeModel?.width ?? nodeModel?.Width ?? 960);
12467
+ const height = Number(nodeModel?.height ?? nodeModel?.Height ?? 620);
12468
+ const usableWidth = Number.isFinite(width) ? Math.max(360, width - 44) : 916;
12469
+ const usableHeight = Number.isFinite(height) ? Math.max(260, height - 128) : 492;
12470
+ const columns = Math.max(3, Math.floor(usableWidth / 142));
12471
+ const rows = Math.max(3, Math.ceil(usableHeight / 88));
12472
+ return Math.max(12, Math.min(80, columns * rows));
12473
+ }
12474
+
12475
+ function createRemoteFleetEmptyScreens(nodeModel) {
12456
12476
  const shell = document.createElement('section');
12457
12477
  shell.dataset.remoteFleetEmptyScreens = 'true';
12458
12478
  shell.style.cssText = `
@@ -12460,18 +12480,20 @@
12460
12480
  min-height: 0;
12461
12481
  overflow: hidden;
12462
12482
  display: grid;
12463
- grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
12483
+ grid-template-columns: repeat(auto-fill, minmax(132px, 1fr));
12464
12484
  align-content: start;
12465
- gap: 10px;
12466
- padding: 2px 4px 6px 0;
12485
+ gap: 8px;
12486
+ box-sizing: border-box;
12487
+ padding: 2px 4px 6px 4px;
12467
12488
  `;
12468
12489
 
12469
- for (let index = 0; index < 6; index += 1) {
12490
+ const screenCount = getRemoteFleetEmptyScreenCount(nodeModel);
12491
+ for (let index = 0; index < screenCount; index += 1) {
12470
12492
  const screen = document.createElement('div');
12471
12493
  screen.dataset.remoteFleetEmptyScreen = 'true';
12472
12494
  screen.style.cssText = `
12473
12495
  aspect-ratio: 16 / 9;
12474
- min-height: 96px;
12496
+ min-height: 72px;
12475
12497
  border-radius: 8px;
12476
12498
  border: 1px solid rgba(203, 213, 225, 0.72);
12477
12499
  background: #ffffff;
@@ -14256,6 +14278,7 @@
14256
14278
  grid-template-columns: minmax(0, 1fr) minmax(230px, 270px);
14257
14279
  gap: 10px;
14258
14280
  align-items: stretch;
14281
+ box-sizing: border-box;
14259
14282
  `;
14260
14283
 
14261
14284
  const grid = document.createElement('div');
@@ -14265,10 +14288,11 @@
14265
14288
  overflow-y: auto;
14266
14289
  overflow-x: hidden;
14267
14290
  display: grid;
14268
- grid-template-columns: ${densityState === 'dense' ? 'repeat(auto-fill, minmax(118px, 1fr))' : 'repeat(auto-fill, minmax(148px, 1fr))'};
14291
+ grid-template-columns: ${densityState === 'dense' ? 'repeat(auto-fill, minmax(104px, 1fr))' : 'repeat(auto-fill, minmax(132px, 1fr))'};
14269
14292
  align-content: start;
14270
14293
  gap: 8px;
14271
- padding-right: 4px;
14294
+ box-sizing: border-box;
14295
+ padding: 0 4px;
14272
14296
  `;
14273
14297
 
14274
14298
  if (devices.length > 0) {
@@ -14397,7 +14421,7 @@
14397
14421
  if (devices.length === 0) {
14398
14422
  monitorWorkspace.style.display = 'flex';
14399
14423
  monitorWorkspace.style.flexDirection = 'column';
14400
- monitorWorkspace.appendChild(createRemoteFleetEmptyScreens());
14424
+ monitorWorkspace.appendChild(createRemoteFleetEmptyScreens(nodeModel));
14401
14425
  } else {
14402
14426
  monitorWorkspace.appendChild(grid);
14403
14427
  monitorWorkspace.appendChild(createSelectedDevicePanel(selectedDevice));
@@ -18362,7 +18386,7 @@
18362
18386
 
18363
18387
  const titleEl = card.querySelector('.template-card__title');
18364
18388
  if (titleEl) {
18365
- const nextTitle = String(prompt || 'Remote Fleet Monitor').trim() || 'Remote Fleet Monitor';
18389
+ const nextTitle = getRemoteFleetDisplayTitle(prompt);
18366
18390
  if (titleEl.textContent !== nextTitle) {
18367
18391
  titleEl.textContent = nextTitle;
18368
18392
  }
@@ -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-3BNGeO97GJzZPWJKcxft//YyUghoJWfEleoPXAWQph8=",
4
+ "hash": "sha256-1ixXLddNY0Ygx2Mjd/RaFPh9jGl9oEHlqj4pOpCbX4E=",
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.86t4hf76lb.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.rbm2nzf4zq.dll": "MindExecution.Plugins.PlanMaster.dll",
133
+ "MindExecution.Plugins.YouTube.hyxs2mkldq.dll": "MindExecution.Plugins.YouTube.dll",
134
+ "MindExecution.Shared.ji8qnyn47t.dll": "MindExecution.Shared.dll",
135
+ "MindExecution.Web.zctp83n6ki.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.86t4hf76lb.dll": "sha256-UFaJw4NLMByA3+YO8W3tin/i1LeQlBAQ+asQFEdyTdU=",
284
+ "MindExecution.Plugins.PlanMaster.rbm2nzf4zq.dll": "sha256-eU8mZRHcMoWplXIbNVkyHGB33AsFVaztOV2L5vquFNU=",
285
+ "MindExecution.Shared.ji8qnyn47t.dll": "sha256-ZaPnIVJO8NDiantYDhwJQnmlS4U+ObS7G0OhpKVr3js=",
286
+ "MindExecution.Web.zctp83n6ki.dll": "sha256-40TLNJ6w19wkuJ3VoMJoirCtYsDKX8xN6DUbdcpUvYs="
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.hyxs2mkldq.dll": "sha256-F4twkltaNvWqvwiv/c3c45+5Ke9mCRXF2KuZmZyEJas="
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-monitor-resize-gutter-v500';
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": "F+s/MBEQ",
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-/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-177f2QdWAeNbJvUOInKfZ/A6AGWzRqbge3x6ePcBDpI=",
430
- "url": "_framework/MindExecution.Plugins.Concept.faidxooqle.dll"
429
+ "hash": "sha256-UFaJw4NLMByA3+YO8W3tin/i1LeQlBAQ+asQFEdyTdU=",
430
+ "url": "_framework/MindExecution.Plugins.Concept.86t4hf76lb.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-eU8mZRHcMoWplXIbNVkyHGB33AsFVaztOV2L5vquFNU=",
438
+ "url": "_framework/MindExecution.Plugins.PlanMaster.rbm2nzf4zq.dll"
439
439
  },
440
440
  {
441
- "hash": "sha256-p4/WQZuUrLU9A/tUFh4J9I5vw15MjWZ3Tvs0v1oPbhY=",
442
- "url": "_framework/MindExecution.Plugins.YouTube.78s7dilkza.dll"
441
+ "hash": "sha256-F4twkltaNvWqvwiv/c3c45+5Ke9mCRXF2KuZmZyEJas=",
442
+ "url": "_framework/MindExecution.Plugins.YouTube.hyxs2mkldq.dll"
443
443
  },
444
444
  {
445
- "hash": "sha256-HyIJGWol5LmyLiefR4XpyKXtgpidf6Vr4pN/0hPskHA=",
446
- "url": "_framework/MindExecution.Shared.hse89ibcyq.dll"
445
+ "hash": "sha256-ZaPnIVJO8NDiantYDhwJQnmlS4U+ObS7G0OhpKVr3js=",
446
+ "url": "_framework/MindExecution.Shared.ji8qnyn47t.dll"
447
447
  },
448
448
  {
449
- "hash": "sha256-07TGezQJ2CbX3lpW2Qou4T/rJi4GFWmBv545YHiXfVk=",
450
- "url": "_framework/MindExecution.Web.p1v0ug5h4f.dll"
449
+ "hash": "sha256-40TLNJ6w19wkuJ3VoMJoirCtYsDKX8xN6DUbdcpUvYs=",
450
+ "url": "_framework/MindExecution.Web.zctp83n6ki.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-SRu2MGX/6CBfjNn95gz38blunNcnJawTGdlJ4hDcl4M=",
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-lOGF4RpHrXaOn4exrV5+uUjHN/wjxLctmtByaQ+zTTU=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: bj3XSoYW */
1
+ /* Manifest version: F+s/MBEQ */
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