@mindexec/cli 0.2.163 → 0.2.164

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.163",
3
+ "version": "0.2.164",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -14046,6 +14046,33 @@
14046
14046
  : 0;
14047
14047
  }
14048
14048
 
14049
+ function primeRemoteFleetRenderedFrameSurfaces(bodyView, reason = 'render') {
14050
+ if (!bodyView) {
14051
+ return 0;
14052
+ }
14053
+
14054
+ const nodeId = getRemoteFleetBodyNodeId(bodyView);
14055
+ const session = bodyView._remoteFleetBinaryFrameSession
14056
+ || (nodeId ? remoteFleetBinaryFrameSessions.get(nodeId) : null)
14057
+ || null;
14058
+ const primedFrames = applyRemoteFleetBinaryFrameCacheToBody(bodyView, session);
14059
+ if (primedFrames > 0) {
14060
+ bodyView._remoteFleetLastBinaryFrameAt = getRemoteFleetFrameNow();
14061
+ if (reason === 'ws-start') {
14062
+ window.RuntimeTrace?.emit?.('remote.frame.wsCachePrimed', {
14063
+ nodeId,
14064
+ count: primedFrames
14065
+ });
14066
+ }
14067
+ window.RuntimeTrace?.emit?.('remote.frame.surfaceCachePrimed', {
14068
+ nodeId,
14069
+ count: primedFrames,
14070
+ reason: String(reason || 'render')
14071
+ });
14072
+ }
14073
+ return primedFrames;
14074
+ }
14075
+
14049
14076
  function getRemoteFleetBodyNodeId(bodyView) {
14050
14077
  return String(
14051
14078
  bodyView?.dataset?.nodeId
@@ -14566,14 +14593,7 @@
14566
14593
  mode: String(options.mode || 'remote-fast')
14567
14594
  };
14568
14595
  bodyView._remoteFleetBinaryFrameSession = session;
14569
- const primedFrames = applyRemoteFleetBinaryFrameCacheToBody(bodyView, session);
14570
- if (primedFrames > 0) {
14571
- bodyView._remoteFleetLastBinaryFrameAt = getRemoteFleetFrameNow();
14572
- window.RuntimeTrace?.emit?.('remote.frame.wsCachePrimed', {
14573
- nodeId,
14574
- count: primedFrames
14575
- });
14576
- }
14596
+ primeRemoteFleetRenderedFrameSurfaces(bodyView, 'ws-start');
14577
14597
  openRemoteFleetBinaryFrameSocket(session).catch(() => undefined);
14578
14598
  return true;
14579
14599
  }
@@ -14820,7 +14840,14 @@
14820
14840
  image.alt = frame.kind === 'live' ? 'Live screen' : 'Remote screen';
14821
14841
  image.loading = frame.kind === 'thumbnail' ? 'lazy' : 'eager';
14822
14842
  image.decoding = 'async';
14823
- image.style.cssText = 'width:100%;height:100%;object-fit:cover;display:block;';
14843
+ image.style.cssText = `
14844
+ position: absolute;
14845
+ inset: 0;
14846
+ width: 100%;
14847
+ height: 100%;
14848
+ object-fit: cover;
14849
+ display: none;
14850
+ `;
14824
14851
  if (typeof preview?.insertBefore === 'function') {
14825
14852
  preview.insertBefore(image, preview.firstChild || null);
14826
14853
  } else {
@@ -18229,6 +18256,7 @@
18229
18256
  const previewSource = hasLiveFrame
18230
18257
  ? getRemoteFleetFrameSource(device, 'live')
18231
18258
  : getRemoteFleetFrameSource(device, 'thumbnail');
18259
+ const hasPreviewSource = isRemoteFleetFrameSource(previewSource);
18232
18260
  const isDetail = mode === 'detail';
18233
18261
 
18234
18262
  const preview = document.createElement('div');
@@ -18245,12 +18273,13 @@
18245
18273
  aspect-ratio: 16 / 9;
18246
18274
  overflow: hidden;
18247
18275
  border-radius: 0;
18248
- background: ${(hasLiveFrame || hasThumbnail) ? 'linear-gradient(135deg, #0f172a 0%, #1e293b 100%)' : '#ffffff'};
18276
+ background: ${hasPreviewSource ? 'linear-gradient(135deg, #0f172a 0%, #1e293b 100%)' : '#ffffff'};
18249
18277
  border: 1px solid rgba(148, 163, 184, ${isDetail ? '0.34' : '0.24'});
18250
18278
  box-shadow: none;
18251
18279
  `;
18280
+ ensureRemoteFleetFrameCanvas(preview);
18252
18281
 
18253
- if (hasLiveFrame || hasThumbnail) {
18282
+ if ((hasLiveFrame || hasThumbnail) && hasPreviewSource) {
18254
18283
  const image = document.createElement('img');
18255
18284
  image.dataset.remoteFleetFrameImage = 'true';
18256
18285
  image.dataset.remoteFleetFrameKind = hasLiveFrame ? 'live' : 'thumbnail';
@@ -18921,6 +18950,8 @@
18921
18950
  scheduleRemoteFleetTaskFollow();
18922
18951
  }
18923
18952
 
18953
+ primeRemoteFleetRenderedFrameSurfaces(bodyView, 'monitor-render');
18954
+
18924
18955
  sendVisibleButton.addEventListener('click', async event => {
18925
18956
  event.preventDefault();
18926
18957
  event.stopPropagation();
@@ -7,8 +7,8 @@
7
7
  <title>MindExec | Run your ideas as AI task graphs</title>
8
8
  <meta name="description" content="MindExec is an AI execution canvas for solo builders, researchers, developers, and creators. Start with free browser tools, then move serious work into saved MindCanvas projects." />
9
9
  <base href="/" />
10
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260617-smart-managed-ai-provider-v594" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-smart-managed-ai-provider-v594" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260617-mdm-css3d-frame-v595" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-mdm-css3d-frame-v595" />
12
12
  <!-- ?쇄뼹??Font Awesome (local) ?쇄뼹??-->
13
13
  <link rel="stylesheet" href="_content/MindExecution.Shared/lib/font-awesome/css/all.min.css" />
14
14
  <!-- ?꿎뼯??-->
@@ -579,7 +579,7 @@
579
579
  }
580
580
 
581
581
  const base = '_content/MindExecution.Shared/js/';
582
- const scriptVersion = '20260617-smart-managed-ai-provider-v594';
582
+ const scriptVersion = '20260617-mdm-css3d-frame-v595';
583
583
  const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
584
584
  console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
585
585
  const criticalScripts = [
@@ -1,5 +1,5 @@
1
1
  self.assetsManifest = {
2
- "version": "0GKxFZhB",
2
+ "version": "eKb1dZVH",
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-5NeWmkeG5tE20WMmpOO59SkGuCFv+yk/h6kOeYeOmJA=",
89
+ "hash": "sha256-tVOXwWraF08ndMMJrGJhC6xbwLyBxzNsmLbDDcWNh60=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-/Ws+j7NCsAaRO5sbCiC2iKq64N9cAUPlERjtIR5wWlA=",
837
+ "hash": "sha256-GvBsY/r4ImlQfWqoXQmfjnNBl7zvIg8QOJyoBBRGNCY=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 0GKxFZhB */
1
+ /* Manifest version: eKb1dZVH */
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