@mindexec/cli 0.2.277 → 0.2.279

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.277",
3
+ "version": "0.2.279",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -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-css3d-flat-wheel-v725';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-css3d-flat-wheel-v727';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -768,6 +768,26 @@
768
768
  return true;
769
769
  }
770
770
 
771
+ function deferWebglBootstrapForCameraMotion(module, mode) {
772
+ if (!module) {
773
+ return false;
774
+ }
775
+
776
+ module._clearWebglCanvasCameraTransform?.();
777
+ module._webglCameraMotionDeferred = true;
778
+ const normalizedMode = String(mode || 'cameraMotion');
779
+ module._lastWebglRenderInfo = {
780
+ calls: 0,
781
+ triangles: 0,
782
+ points: 0,
783
+ lines: 0,
784
+ skipped: true,
785
+ webglCanvasCameraBootstrapDeferred: true,
786
+ [normalizedMode]: true
787
+ };
788
+ return true;
789
+ }
790
+
771
791
  const RENDER_DEBUG_STORAGE_KEY = 'mindmap.renderDebug.flags';
772
792
  const RENDER_DEBUG_FLAGS_SCHEMA_VERSION = 2;
773
793
  const DEFAULT_RENDER_DEBUG_FLAGS = Object.freeze({
@@ -1783,6 +1803,8 @@
1783
1803
  };
1784
1804
  } else if (shouldFreezeWebglCanvasForZoom === true) {
1785
1805
  markWebglSurfaceFrozenForZoom(module, 'uaUltraEarlyCameraOnly');
1806
+ } else if (module.isZooming === true) {
1807
+ deferWebglBootstrapForCameraMotion(module, 'uaUltraEarlyCameraOnly');
1786
1808
  } else {
1787
1809
  module._clearWebglCanvasCameraTransform?.();
1788
1810
  module.renderer.render(module.scene, module.camera);
@@ -2007,6 +2029,8 @@
2007
2029
  };
2008
2030
  } else if (shouldFreezeWebglSurfaceForZoom(module) === true) {
2009
2031
  markWebglSurfaceFrozenForZoom(module, 'uaUltraResidentCameraOnly');
2032
+ } else if (module.isZooming === true) {
2033
+ deferWebglBootstrapForCameraMotion(module, 'uaUltraResidentCameraOnly');
2010
2034
  } else {
2011
2035
  module._clearWebglCanvasCameraTransform?.();
2012
2036
  module.renderer.render(module.scene, module.camera);
@@ -4693,7 +4717,13 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4693
4717
  return;
4694
4718
  }
4695
4719
 
4696
- this._lastAnimationWakeReason = String(reason || 'runtime-wake');
4720
+ const wakeReason = String(reason || 'runtime-wake');
4721
+ if (this._shouldSuppressAnimationWakeDuringDirectWheelZoom(wakeReason) === true) {
4722
+ this._lastSuppressedDirectWheelZoomWakeReason = wakeReason;
4723
+ return;
4724
+ }
4725
+
4726
+ this._lastAnimationWakeReason = wakeReason;
4697
4727
  if (this._animationIdleTimerId) {
4698
4728
  clearTimeout(this._animationIdleTimerId);
4699
4729
  this._animationIdleTimerId = null;
@@ -4735,6 +4765,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4735
4765
  }
4736
4766
 
4737
4767
  this._wheelZoomDirectSettleDueAt = 0;
4768
+ this._directWheelZoomPausedAnimationLoop = false;
4738
4769
  if (this._animationLoopRunning === true) {
4739
4770
  this.requestAnimationWake('wheel-zoom-direct-finalize');
4740
4771
  } else {
@@ -4749,6 +4780,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4749
4780
 
4750
4781
  clearWheelZoomDirectSettle() {
4751
4782
  this._wheelZoomDirectSettleDueAt = 0;
4783
+ this._directWheelZoomPausedAnimationLoop = false;
4752
4784
  if (!this._wheelZoomDirectSettleTimer) {
4753
4785
  return false;
4754
4786
  }
@@ -4803,6 +4835,21 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4803
4835
  return paused;
4804
4836
  }
4805
4837
 
4838
+ _shouldSuppressAnimationWakeDuringDirectWheelZoom(reason = 'runtime-wake') {
4839
+ if (this._directWheelZoomPausedAnimationLoop !== true ||
4840
+ this.isZooming !== true ||
4841
+ reason === 'wheel-zoom-direct-finalize') {
4842
+ return false;
4843
+ }
4844
+
4845
+ const forceUpdateFrames = Math.max(0, Number(this._forceUpdateFrames || 0));
4846
+ const cameraNavigationForceFrames = Math.max(0, Number(this._cameraNavigationForceFrames || 0));
4847
+ const hasNonCameraNavigationForcedUpdate =
4848
+ forceUpdateFrames > 0 &&
4849
+ cameraNavigationForceFrames < forceUpdateFrames;
4850
+ return hasNonCameraNavigationForcedUpdate !== true;
4851
+ }
4852
+
4806
4853
  getCurrentBoardId() {
4807
4854
  return window.mindMap?.activeBoardId || _currentBoardId || null;
4808
4855
  }
@@ -5634,18 +5681,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5634
5681
  } else if (shouldFreezeWebglCanvasForZoom === true) {
5635
5682
  markWebglSurfaceFrozenForZoom(this, 'uaWheelZoomDirect');
5636
5683
  } else {
5637
- this._clearWebglCanvasCameraTransform?.();
5638
- this.renderer.render(this.scene, this.camera);
5639
- this._recordWebglRenderedCameraState?.();
5640
- const renderInfo = this.renderer?.info?.render || null;
5641
- this._lastWebglRenderInfo = renderInfo ? {
5642
- calls: Number(renderInfo.calls || 0),
5643
- triangles: Number(renderInfo.triangles || 0),
5644
- points: Number(renderInfo.points || 0),
5645
- lines: Number(renderInfo.lines || 0),
5646
- uaWheelZoomDirect: true,
5647
- webglCanvasCameraBootstrap: true
5648
- } : null;
5684
+ deferWebglBootstrapForCameraMotion(this, 'uaWheelZoomDirect');
5649
5685
  }
5650
5686
  }
5651
5687
 
@@ -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-css3d-flat-wheel-v725" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v725" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-css3d-flat-wheel-v727" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v727" />
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-css3d-flat-wheel-v725';
582
+ const scriptVersion = '20260620-css3d-flat-wheel-v727';
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": "qrcjbhVc",
2
+ "version": "+of3eWGB",
3
3
  "assets": [
4
4
  {
5
5
  "hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
@@ -78,7 +78,7 @@
78
78
  "url": "_content/MindExecution.Shared/js/marked.min.js"
79
79
  },
80
80
  {
81
- "hash": "sha256-9wk9HRzFhcFl7vQoTpmWG/vSOofY4hWKZGd7qM6RCxM=",
81
+ "hash": "sha256-a5GoVAXr9o8emnkh3zlfVxKpMB6zbgA7krlyr5Zu2ns=",
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-A2j7NM+qgucZs5QarrELv3W2bQsI1yktdAlEOlZNczA=",
837
+ "hash": "sha256-wIaDM3o/iRJKNttGSxk6ipjQXlARd1UwOCE8688cDcg=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: qrcjbhVc */
1
+ /* Manifest version: +of3eWGB */
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