@mindexec/cli 0.2.244 → 0.2.246

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.244",
3
+ "version": "0.2.246",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -126,6 +126,9 @@
126
126
  if (!themeObject || typeof themeObject.animate !== 'function') {
127
127
  return false;
128
128
  }
129
+ if (themeObject.userData?.localSnapGrid === true) {
130
+ return false;
131
+ }
129
132
 
130
133
  const mode = getThemeAnimationMode(themeName, themeObject);
131
134
  if (mode === THEME_ANIMATION_MODE.Continuous) {
@@ -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 = '20260620-edge-draft-hotpath-v691';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-local-grid-zoom-freeze-v693';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -502,6 +502,34 @@
502
502
  return true;
503
503
  }
504
504
 
505
+ function shouldFreezeWebglSurfaceForZoom(module) {
506
+ return !!(
507
+ module?.isZooming === true &&
508
+ module?.useAnimation60Fps !== true &&
509
+ module?._lastWebglRenderedCameraState
510
+ );
511
+ }
512
+
513
+ function markWebglSurfaceFrozenForZoom(module, mode) {
514
+ if (!module) {
515
+ return false;
516
+ }
517
+
518
+ module._clearWebglCanvasCameraTransform?.();
519
+ module._webglCameraMotionDeferred = true;
520
+ module._themeCameraMotionDeferred = true;
521
+ module._lastWebglRenderInfo = {
522
+ calls: 0,
523
+ triangles: 0,
524
+ points: 0,
525
+ lines: 0,
526
+ skipped: true,
527
+ webglSurfaceFrozenForZoom: true,
528
+ [mode || 'uaZoomFrozenWebgl']: true
529
+ };
530
+ return true;
531
+ }
532
+
505
533
  function deferContinuousThemeForCameraMotion(module) {
506
534
  if (!isContinuousBackgroundTheme(module)) {
507
535
  return false;
@@ -1624,6 +1652,8 @@
1624
1652
  webglCanvasCameraTransform: usedWebglCanvasCameraTransform === true,
1625
1653
  uaUltraEarlyCameraOnly: true
1626
1654
  };
1655
+ } else if (shouldFreezeWebglSurfaceForZoom(module) === true) {
1656
+ markWebglSurfaceFrozenForZoom(module, 'uaUltraEarlyCameraOnly');
1627
1657
  } else {
1628
1658
  module._clearWebglCanvasCameraTransform?.();
1629
1659
  module.renderer.render(module.scene, module.camera);
@@ -1844,6 +1874,8 @@
1844
1874
  webglCanvasCameraTransform: usedWebglCanvasCameraTransform === true,
1845
1875
  uaUltraResidentCameraOnly: true
1846
1876
  };
1877
+ } else if (shouldFreezeWebglSurfaceForZoom(module) === true) {
1878
+ markWebglSurfaceFrozenForZoom(module, 'uaUltraResidentCameraOnly');
1847
1879
  } else {
1848
1880
  module._clearWebglCanvasCameraTransform?.();
1849
1881
  module.renderer.render(module.scene, module.camera);
@@ -6575,18 +6607,22 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6575
6607
  uaVisualOnlyMotion: true
6576
6608
  };
6577
6609
  } else {
6578
- this._clearWebglCanvasCameraTransform();
6579
- this.renderer.render(this.scene, this.camera);
6580
- this._recordWebglRenderedCameraState();
6581
- const renderInfo = this.renderer?.info?.render || null;
6582
- this._lastWebglRenderInfo = renderInfo ? {
6583
- calls: Number(renderInfo.calls || 0),
6584
- triangles: Number(renderInfo.triangles || 0),
6585
- points: Number(renderInfo.points || 0),
6586
- lines: Number(renderInfo.lines || 0),
6587
- uaVisualOnlyMotion: true,
6588
- webglCanvasCameraBootstrap: true
6589
- } : null;
6610
+ if (shouldFreezeWebglSurfaceForZoom(this) === true) {
6611
+ markWebglSurfaceFrozenForZoom(this, 'uaVisualOnlyMotion');
6612
+ } else {
6613
+ this._clearWebglCanvasCameraTransform();
6614
+ this.renderer.render(this.scene, this.camera);
6615
+ this._recordWebglRenderedCameraState();
6616
+ const renderInfo = this.renderer?.info?.render || null;
6617
+ this._lastWebglRenderInfo = renderInfo ? {
6618
+ calls: Number(renderInfo.calls || 0),
6619
+ triangles: Number(renderInfo.triangles || 0),
6620
+ points: Number(renderInfo.points || 0),
6621
+ lines: Number(renderInfo.lines || 0),
6622
+ uaVisualOnlyMotion: true,
6623
+ webglCanvasCameraBootstrap: true
6624
+ } : null;
6625
+ }
6590
6626
  }
6591
6627
  }
6592
6628
  this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformImmediate);
@@ -6742,18 +6778,22 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6742
6778
  uaStationaryVisualMotion: true
6743
6779
  };
6744
6780
  } else {
6745
- this._clearWebglCanvasCameraTransform();
6746
- this.renderer.render(this.scene, this.camera);
6747
- this._recordWebglRenderedCameraState();
6748
- const renderInfo = this.renderer?.info?.render || null;
6749
- this._lastWebglRenderInfo = renderInfo ? {
6750
- calls: Number(renderInfo.calls || 0),
6751
- triangles: Number(renderInfo.triangles || 0),
6752
- points: Number(renderInfo.points || 0),
6753
- lines: Number(renderInfo.lines || 0),
6754
- uaStationaryVisualMotion: true,
6755
- webglCanvasCameraBootstrap: true
6756
- } : null;
6781
+ if (shouldFreezeWebglSurfaceForZoom(this) === true) {
6782
+ markWebglSurfaceFrozenForZoom(this, 'uaStationaryVisualMotion');
6783
+ } else {
6784
+ this._clearWebglCanvasCameraTransform();
6785
+ this.renderer.render(this.scene, this.camera);
6786
+ this._recordWebglRenderedCameraState();
6787
+ const renderInfo = this.renderer?.info?.render || null;
6788
+ this._lastWebglRenderInfo = renderInfo ? {
6789
+ calls: Number(renderInfo.calls || 0),
6790
+ triangles: Number(renderInfo.triangles || 0),
6791
+ points: Number(renderInfo.points || 0),
6792
+ lines: Number(renderInfo.lines || 0),
6793
+ uaStationaryVisualMotion: true,
6794
+ webglCanvasCameraBootstrap: true
6795
+ } : null;
6796
+ }
6757
6797
  }
6758
6798
  }
6759
6799
  this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformStationary);
@@ -6923,18 +6963,22 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6923
6963
  uaResidentVisualOnlyMotion: true
6924
6964
  };
6925
6965
  } else {
6926
- this._clearWebglCanvasCameraTransform();
6927
- this.renderer.render(this.scene, this.camera);
6928
- this._recordWebglRenderedCameraState();
6929
- const renderInfo = this.renderer?.info?.render || null;
6930
- this._lastWebglRenderInfo = renderInfo ? {
6931
- calls: Number(renderInfo.calls || 0),
6932
- triangles: Number(renderInfo.triangles || 0),
6933
- points: Number(renderInfo.points || 0),
6934
- lines: Number(renderInfo.lines || 0),
6935
- uaResidentVisualOnlyMotion: true,
6936
- webglCanvasCameraBootstrap: true
6937
- } : null;
6966
+ if (shouldFreezeWebglSurfaceForZoom(this) === true) {
6967
+ markWebglSurfaceFrozenForZoom(this, 'uaResidentVisualOnlyMotion');
6968
+ } else {
6969
+ this._clearWebglCanvasCameraTransform();
6970
+ this.renderer.render(this.scene, this.camera);
6971
+ this._recordWebglRenderedCameraState();
6972
+ const renderInfo = this.renderer?.info?.render || null;
6973
+ this._lastWebglRenderInfo = renderInfo ? {
6974
+ calls: Number(renderInfo.calls || 0),
6975
+ triangles: Number(renderInfo.triangles || 0),
6976
+ points: Number(renderInfo.points || 0),
6977
+ lines: Number(renderInfo.lines || 0),
6978
+ uaResidentVisualOnlyMotion: true,
6979
+ webglCanvasCameraBootstrap: true
6980
+ } : null;
6981
+ }
6938
6982
  }
6939
6983
  }
6940
6984
  }
@@ -7141,32 +7185,36 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7141
7185
  uaEarlyCameraOnly: true
7142
7186
  };
7143
7187
  } else if (this.renderer && this.scene && this.camera) {
7144
- let hiddenEarlyCameraMotionThemeObject = null;
7145
- this._clearWebglCanvasCameraTransform();
7146
- if (this._isMotionGridThemeEnabled() === true &&
7147
- this.currentThemeObject &&
7148
- this.currentThemeObject.visible !== false) {
7149
- hiddenEarlyCameraMotionThemeObject = this.currentThemeObject;
7150
- hiddenEarlyCameraMotionThemeObject.visible = false;
7151
- }
7152
- try {
7153
- this.renderer.render(this.scene, this.camera);
7154
- } finally {
7155
- if (hiddenEarlyCameraMotionThemeObject) {
7156
- hiddenEarlyCameraMotionThemeObject.visible = true;
7188
+ if (shouldFreezeWebglSurfaceForZoom(this) === true) {
7189
+ markWebglSurfaceFrozenForZoom(this, 'uaEarlyCameraOnly');
7190
+ } else {
7191
+ let hiddenEarlyCameraMotionThemeObject = null;
7192
+ this._clearWebglCanvasCameraTransform();
7193
+ if (this._isMotionGridThemeEnabled() === true &&
7194
+ this.currentThemeObject &&
7195
+ this.currentThemeObject.visible !== false) {
7196
+ hiddenEarlyCameraMotionThemeObject = this.currentThemeObject;
7197
+ hiddenEarlyCameraMotionThemeObject.visible = false;
7198
+ }
7199
+ try {
7200
+ this.renderer.render(this.scene, this.camera);
7201
+ } finally {
7202
+ if (hiddenEarlyCameraMotionThemeObject) {
7203
+ hiddenEarlyCameraMotionThemeObject.visible = true;
7204
+ }
7157
7205
  }
7206
+ this._recordWebglRenderedCameraState();
7207
+ const renderInfo = this.renderer?.info?.render || null;
7208
+ this._lastWebglRenderInfo = renderInfo ? {
7209
+ calls: Number(renderInfo.calls || 0),
7210
+ triangles: Number(renderInfo.triangles || 0),
7211
+ points: Number(renderInfo.points || 0),
7212
+ lines: Number(renderInfo.lines || 0),
7213
+ backgroundThemeHidden: hiddenEarlyCameraMotionThemeObject ? true : undefined,
7214
+ uaEarlyCameraOnly: true,
7215
+ webglCanvasCameraBootstrap: true
7216
+ } : null;
7158
7217
  }
7159
- this._recordWebglRenderedCameraState();
7160
- const renderInfo = this.renderer?.info?.render || null;
7161
- this._lastWebglRenderInfo = renderInfo ? {
7162
- calls: Number(renderInfo.calls || 0),
7163
- triangles: Number(renderInfo.triangles || 0),
7164
- points: Number(renderInfo.points || 0),
7165
- lines: Number(renderInfo.lines || 0),
7166
- backgroundThemeHidden: hiddenEarlyCameraMotionThemeObject ? true : undefined,
7167
- uaEarlyCameraOnly: true,
7168
- webglCanvasCameraBootstrap: true
7169
- } : null;
7170
7218
  } else {
7171
7219
  this._lastWebglRenderInfo = {
7172
7220
  calls: 0,
@@ -8000,33 +8048,40 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
8000
8048
  webglCanvasCameraTransform: true
8001
8049
  };
8002
8050
  } else {
8003
- this._clearWebglCanvasCameraTransform();
8004
- if (shouldHideBackgroundThemeDuringCameraNavigation) {
8005
- hiddenCameraMotionThemeObject = this.currentThemeObject;
8006
- hiddenCameraMotionThemeObject.visible = false;
8007
- }
8008
- try {
8009
- this.renderer.render(this.scene, this.camera);
8010
- } finally {
8011
- if (hiddenCameraMotionThemeObject) {
8012
- hiddenCameraMotionThemeObject.visible = true;
8051
+ if (shouldFreezeWebglSurfaceForZoom(this) === true) {
8052
+ markWebglSurfaceFrozenForZoom(this, 'normalWebglRender');
8053
+ } else {
8054
+ this._clearWebglCanvasCameraTransform();
8055
+ if (shouldHideBackgroundThemeDuringCameraNavigation) {
8056
+ hiddenCameraMotionThemeObject = this.currentThemeObject;
8057
+ hiddenCameraMotionThemeObject.visible = false;
8013
8058
  }
8059
+ try {
8060
+ this.renderer.render(this.scene, this.camera);
8061
+ } finally {
8062
+ if (hiddenCameraMotionThemeObject) {
8063
+ hiddenCameraMotionThemeObject.visible = true;
8064
+ }
8065
+ }
8066
+ this._recordWebglRenderedCameraState();
8067
+ const renderInfo = this.renderer?.info?.render || null;
8068
+ this._lastWebglRenderInfo = renderInfo ? {
8069
+ calls: Number(renderInfo.calls || 0),
8070
+ triangles: Number(renderInfo.triangles || 0),
8071
+ points: Number(renderInfo.points || 0),
8072
+ lines: Number(renderInfo.lines || 0),
8073
+ backgroundThemeHidden: hiddenCameraMotionThemeObject ? true : undefined
8074
+ } : null;
8014
8075
  }
8015
- this._recordWebglRenderedCameraState();
8016
- const renderInfo = this.renderer?.info?.render || null;
8017
- this._lastWebglRenderInfo = renderInfo ? {
8018
- calls: Number(renderInfo.calls || 0),
8019
- triangles: Number(renderInfo.triangles || 0),
8020
- points: Number(renderInfo.points || 0),
8021
- lines: Number(renderInfo.lines || 0),
8022
- backgroundThemeHidden: hiddenCameraMotionThemeObject ? true : undefined
8023
- } : null;
8024
8076
  }
8025
8077
  } else if (isWebglRenderEnabled) {
8026
8078
  if (isPureCss3dCameraMotionFrame === true) {
8027
8079
  this._webglCameraMotionDeferred = true;
8028
8080
  }
8081
+ const shouldFreezeWebglCanvasTransformForZoom =
8082
+ shouldFreezeWebglSurfaceForZoom(this) === true;
8029
8083
  if (isCameraNavigationOnlyInteractiveFrame === true &&
8084
+ shouldFreezeWebglCanvasTransformForZoom !== true &&
8030
8085
  canUseWebglCanvasTransformForCameraMotion(this) === true) {
8031
8086
  usedWebglCanvasCameraTransform = this._applyWebglCanvasCameraTransform() === true;
8032
8087
  } else {
@@ -8038,7 +8093,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
8038
8093
  points: 0,
8039
8094
  lines: 0,
8040
8095
  skipped: true,
8041
- webglCanvasCameraTransform: usedWebglCanvasCameraTransform || undefined
8096
+ webglCanvasCameraTransform: usedWebglCanvasCameraTransform || undefined,
8097
+ webglSurfaceFrozenForZoom: shouldFreezeWebglCanvasTransformForZoom || undefined
8042
8098
  };
8043
8099
  } else if (isBoardLoading) {
8044
8100
  this._clearWebglCanvasCameraTransform();
@@ -8048,7 +8104,16 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
8048
8104
  isCameraNavigationOnlyInteractiveFrame === true) {
8049
8105
  this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransform);
8050
8106
  }
8051
- this._syncLocalSnapGridLayer(true);
8107
+ const shouldUseLocalSnapGridPositionOnly = !!(
8108
+ isCameraNavigationOnlyInteractiveFrame === true &&
8109
+ this._localSnapGridLayer?.isConnected &&
8110
+ this._lastLocalSnapGridKey
8111
+ );
8112
+ if (shouldUseLocalSnapGridPositionOnly === true) {
8113
+ this._syncLocalSnapGridPositionOnly(true);
8114
+ } else {
8115
+ this._syncLocalSnapGridLayer(true);
8116
+ }
8052
8117
  if (shouldRenderWebglFrame === true &&
8053
8118
  this._motionGridVisible === true &&
8054
8119
  isPureCss3dCameraMotionFrame !== true &&
@@ -7,8 +7,8 @@
7
7
  <title>MindExec | Business Execution OS for solo builders</title>
8
8
  <meta name="description" content="MindExec is an AI business execution OS for solo builders who want to turn notes, research, assets, and repeatable execution Skills into revenue-producing work." />
9
9
  <base href="/" />
10
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-edge-draft-hotpath-v691" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-edge-draft-hotpath-v691" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-local-grid-zoom-freeze-v693" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-local-grid-zoom-freeze-v693" />
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 = '20260620-edge-draft-hotpath-v691';
582
+ const scriptVersion = '20260620-local-grid-zoom-freeze-v693';
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": "fJoK+M0h",
2
+ "version": "PSSgwA1s",
3
3
  "assets": [
4
4
  {
5
5
  "hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
@@ -58,7 +58,7 @@
58
58
  "url": "_content/MindExecution.Shared/js/agent-visualization.js"
59
59
  },
60
60
  {
61
- "hash": "sha256-esAVUETb0T9V8y/I4Ub8UpN2trCCyTgunOGhh/cTyfQ=",
61
+ "hash": "sha256-CrDccRF6gyngXofsjyROr6ziZabOdswoaK6ajTJtl88=",
62
62
  "url": "_content/MindExecution.Shared/js/background-themes.js"
63
63
  },
64
64
  {
@@ -78,7 +78,7 @@
78
78
  "url": "_content/MindExecution.Shared/js/marked.min.js"
79
79
  },
80
80
  {
81
- "hash": "sha256-4GnNtXCHOwiljYWXdYyXtaXoNTn2FPBztgn2zOiCcS4=",
81
+ "hash": "sha256-2VOJlDpOgcTf1p2dRUBMhGDKnDr2dJM8z1vfEfncsnw=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-t+t4ehH0KGi1ZELstZE+3pCfhOymLjyoCbi+TS6WjQA=",
837
+ "hash": "sha256-duvN1R3Fhi71Zy8YB9nx1HZAvMvAPnAECjpy28oOBi0=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: fJoK+M0h */
1
+ /* Manifest version: PSSgwA1s */
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