@mindexec/cli 0.2.259 → 0.2.260

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.259",
3
+ "version": "0.2.260",
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-v707';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-css3d-flat-wheel-v708';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -513,6 +513,10 @@
513
513
  );
514
514
  }
515
515
 
516
+ function isLocalSnapGridOnlyTheme(module) {
517
+ return module?.currentThemeObject?.userData?.localSnapGrid === true;
518
+ }
519
+
516
520
  function renderCss3dCameraForCameraNavigation(module, reason = 'camera-navigation') {
517
521
  const renderer = module?.cssRenderer || null;
518
522
  const camera = module?.camera || null;
@@ -557,6 +561,12 @@
557
561
  module._clearWebglCanvasCameraTransform?.();
558
562
  module._webglCameraMotionDeferred = true;
559
563
  module._themeCameraMotionDeferred = true;
564
+ const frozenMode = mode || 'uaZoomFrozenWebgl';
565
+ if (module._lastWebglSurfaceFrozenForZoomKey === frozenMode &&
566
+ module._lastWebglRenderInfo?.webglSurfaceFrozenForZoom === true) {
567
+ return true;
568
+ }
569
+ module._lastWebglSurfaceFrozenForZoomKey = frozenMode;
560
570
  module._lastWebglRenderInfo = {
561
571
  calls: 0,
562
572
  triangles: 0,
@@ -564,7 +574,7 @@
564
574
  lines: 0,
565
575
  skipped: true,
566
576
  webglSurfaceFrozenForZoom: true,
567
- [mode || 'uaZoomFrozenWebgl']: true
577
+ [frozenMode]: true
568
578
  };
569
579
  return true;
570
580
  }
@@ -3890,6 +3900,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3890
3900
  this._lastAnimationLoopDelayMs = 0;
3891
3901
  this._lastAnimationWakeReason = '';
3892
3902
  this._wheelZoomDirectSettleTimer = null;
3903
+ this._wheelZoomDirectSettleDueAt = 0;
3893
3904
  // ▲▲▲ [Optimization] ▲▲▲
3894
3905
 
3895
3906
  // ▼▼▼ [State] Loading flag (hide nodes during board load) ▼▼▼
@@ -4545,22 +4556,47 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4545
4556
  16,
4546
4557
  Math.floor(Number(delayMs) || (CAMERA_ZOOM_END_DELAY_MS + 18))
4547
4558
  );
4548
- this.clearWheelZoomDirectSettle();
4549
- this._wheelZoomDirectSettleTimer = setTimeout(() => {
4550
- this._wheelZoomDirectSettleTimer = null;
4551
- if (this.isZooming !== true) {
4552
- return;
4553
- }
4554
- if (this._animationLoopRunning === true) {
4555
- this.requestAnimationWake('wheel-zoom-direct-finalize');
4556
- } else {
4557
- this.animate();
4558
- }
4559
- }, safeDelayMs);
4559
+ const now = typeof performance !== 'undefined' && typeof performance.now === 'function'
4560
+ ? performance.now()
4561
+ : Date.now();
4562
+ this._wheelZoomDirectSettleDueAt = now + safeDelayMs;
4563
+
4564
+ if (this._wheelZoomDirectSettleTimer) {
4565
+ return true;
4566
+ }
4567
+
4568
+ const scheduleSettleWake = (waitMs) => {
4569
+ this._wheelZoomDirectSettleTimer = setTimeout(() => {
4570
+ this._wheelZoomDirectSettleTimer = null;
4571
+ if (this.isZooming !== true) {
4572
+ this._wheelZoomDirectSettleDueAt = 0;
4573
+ return;
4574
+ }
4575
+
4576
+ const timerNow = typeof performance !== 'undefined' && typeof performance.now === 'function'
4577
+ ? performance.now()
4578
+ : Date.now();
4579
+ const remainingMs = Number(this._wheelZoomDirectSettleDueAt || 0) - timerNow;
4580
+ if (remainingMs > 8) {
4581
+ scheduleSettleWake(Math.max(16, Math.min(80, remainingMs)));
4582
+ return;
4583
+ }
4584
+
4585
+ this._wheelZoomDirectSettleDueAt = 0;
4586
+ if (this._animationLoopRunning === true) {
4587
+ this.requestAnimationWake('wheel-zoom-direct-finalize');
4588
+ } else {
4589
+ this.animate();
4590
+ }
4591
+ }, Math.max(16, Math.floor(Number(waitMs) || safeDelayMs)));
4592
+ };
4593
+
4594
+ scheduleSettleWake(safeDelayMs);
4560
4595
  return true;
4561
4596
  }
4562
4597
 
4563
4598
  clearWheelZoomDirectSettle() {
4599
+ this._wheelZoomDirectSettleDueAt = 0;
4564
4600
  if (!this._wheelZoomDirectSettleTimer) {
4565
4601
  return false;
4566
4602
  }
@@ -6837,6 +6873,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6837
6873
  if (shouldFreezeWebglCanvasForImmediateZoom !== true &&
6838
6874
  !canReuseWebglCanvasForImmediateMotion &&
6839
6875
  renderDebugFlags.enableThemeAnimation !== false &&
6876
+ isLocalSnapGridOnlyTheme(this) !== true &&
6840
6877
  this.currentThemeObject &&
6841
6878
  typeof this.currentThemeObject.animate === 'function') {
6842
6879
  const themeRunner = window.MindMapThemes?.runAnimationIfNeeded;
@@ -7012,6 +7049,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7012
7049
  if (shouldFreezeWebglCanvasForStationaryZoom !== true &&
7013
7050
  !canReuseWebglCanvasForStationaryMotion &&
7014
7051
  renderDebugFlags.enableThemeAnimation !== false &&
7052
+ isLocalSnapGridOnlyTheme(this) !== true &&
7015
7053
  this.currentThemeObject &&
7016
7054
  typeof this.currentThemeObject.animate === 'function') {
7017
7055
  const themeRunner = window.MindMapThemes?.runAnimationIfNeeded;
@@ -7202,6 +7240,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7202
7240
  if (shouldFreezeWebglCanvasForResidentZoom !== true &&
7203
7241
  !canReuseWebglCanvasForResidentMotion &&
7204
7242
  renderDebugFlags.enableThemeAnimation !== false &&
7243
+ isLocalSnapGridOnlyTheme(this) !== true &&
7205
7244
  this.currentThemeObject &&
7206
7245
  typeof this.currentThemeObject.animate === 'function') {
7207
7246
  const themeRunner = window.MindMapThemes?.runAnimationIfNeeded;
@@ -8237,6 +8276,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
8237
8276
  let themeAnimatedThisFrame = false;
8238
8277
  if (allowContinuousThemeAnimationThisFrame === true &&
8239
8278
  (isThemeAnimationEnabled || shouldForceGpuParticleAnimation) &&
8279
+ isLocalSnapGridOnlyTheme(this) !== true &&
8240
8280
  this.currentThemeObject &&
8241
8281
  typeof this.currentThemeObject.animate === 'function') {
8242
8282
  const forceThemeCameraUpdate =
@@ -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-v707" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v707" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-css3d-flat-wheel-v708" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v708" />
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-v707';
582
+ const scriptVersion = '20260620-css3d-flat-wheel-v708';
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": "7Mz0t211",
2
+ "version": "4mKj1mKm",
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-Wh72NYCd8llyQcb9S1nu14LVriY/M65RGbAJV9Ewecg=",
81
+ "hash": "sha256-VlEtNj0oIkvIkgTr1/NcqEQGkNS9SuFKDXsdwxd1nDs=",
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-KjaPdEv6u95UkcfvQokggiqL/Q7CuMbn9BoghYBReYQ=",
837
+ "hash": "sha256-VL0U4RpYqj0SZ1628QiRWigygszwi/VJUJg1YRqrCvA=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 7Mz0t211 */
1
+ /* Manifest version: 4mKj1mKm */
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