@mindexec/cli 0.2.281 → 0.2.283

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.281",
3
+ "version": "0.2.283",
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-v729';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-css3d-flat-wheel-v731';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -1424,6 +1424,14 @@
1424
1424
  }
1425
1425
 
1426
1426
  const previous = module._cameraMotionFastPathStatus || null;
1427
+ if (!details &&
1428
+ previous &&
1429
+ previous.status === status &&
1430
+ previous.reason === reason) {
1431
+ previous.count = Number(previous.count || 0) + 1;
1432
+ return;
1433
+ }
1434
+
1427
1435
  const normalizedStatus = String(status || '').trim() || 'unknown';
1428
1436
  const normalizedReason = String(reason || '').trim() || normalizedStatus;
1429
1437
  if (previous &&
@@ -4756,14 +4764,16 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4756
4764
  }
4757
4765
  }
4758
4766
 
4759
- requestWheelZoomDirectSettle(delayMs = CAMERA_ZOOM_END_DELAY_MS + 18) {
4767
+ requestWheelZoomDirectSettle(delayMs = CAMERA_ZOOM_END_DELAY_MS + 18, nowMs = 0) {
4760
4768
  const safeDelayMs = Math.max(
4761
4769
  16,
4762
4770
  Math.floor(Number(delayMs) || (CAMERA_ZOOM_END_DELAY_MS + 18))
4763
4771
  );
4764
- const now = typeof performance !== 'undefined' && typeof performance.now === 'function'
4765
- ? performance.now()
4766
- : Date.now();
4772
+ const now = Number(nowMs || 0) > 0
4773
+ ? Number(nowMs)
4774
+ : (typeof performance !== 'undefined' && typeof performance.now === 'function'
4775
+ ? performance.now()
4776
+ : Date.now());
4767
4777
  this._wheelZoomDirectSettleDueAt = now + safeDelayMs;
4768
4778
 
4769
4779
  if (this._wheelZoomDirectSettleTimer) {
@@ -7671,13 +7681,17 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7671
7681
  const shouldFreezeContinuousThemeForWheelZoom =
7672
7682
  this.isZooming === true &&
7673
7683
  isContinuousTheme === true;
7684
+ const shouldBlockContinuousThemeDuringCameraNavigation =
7685
+ isContinuousTheme === true &&
7686
+ isCameraNavigationOnlyInteractiveFrame === true;
7674
7687
  const allowContinuousThemeAnimationThisFrame =
7675
7688
  shouldFreezeContinuousThemeForWheelZoom === true
7676
7689
  ? false
7677
7690
  : shouldPauseThemeForCameraNavigation === true
7678
7691
  ? false
7692
+ : shouldBlockContinuousThemeDuringCameraNavigation === true
7693
+ ? false
7679
7694
  : (isContinuousTheme !== true ||
7680
- (isContinuousTheme === true && isCameraNavigationOnlyInteractiveFrame === true) ||
7681
7695
  (isInteractiveFrame === true && !isCameraNavigationOnlyInteractiveFrame) ||
7682
7696
  (shouldUpdate === true && !isCameraNavigationOnlyInteractiveFrame) ||
7683
7697
  hasNonCameraNavigationForcedUpdate === true ||
@@ -7686,7 +7700,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
7686
7700
  shouldUseAnimationLowFpsFrame === true ||
7687
7701
  this._forceThemeAnimationFrame === true);
7688
7702
  if (shouldFreezeContinuousThemeForWheelZoom === true ||
7689
- shouldPauseThemeForCameraNavigation === true) {
7703
+ shouldPauseThemeForCameraNavigation === true ||
7704
+ shouldBlockContinuousThemeDuringCameraNavigation === true) {
7690
7705
  deferContinuousThemeForCameraMotion(this);
7691
7706
  }
7692
7707
  const isMenuOverlayUiEnabled = !isBoardLoading && renderDebugFlags.enableMenuOverlayUi !== false;
@@ -6057,12 +6057,24 @@ window.MindMapInteractions = (function () {
6057
6057
  : Date.now();
6058
6058
  }
6059
6059
 
6060
- function markCanvasWheelActivity(module, now = 0) {
6060
+ function markCanvasWheelActivity(module, now = 0, options = {}) {
6061
6061
  if (!module) {
6062
6062
  return 0;
6063
6063
  }
6064
6064
 
6065
6065
  const wheelNow = Number(now || 0) > 0 ? Number(now) : getWheelTimestamp();
6066
+ const throttleMs = Math.max(0, Number(options?.throttleMs || 0));
6067
+ const previousWheelAt = Math.max(
6068
+ 0,
6069
+ Number(module._lastCanvasWheelAt || 0),
6070
+ Number(window.__mindMapLastCanvasWheelAt || 0)
6071
+ );
6072
+ if (throttleMs > 0 &&
6073
+ previousWheelAt > 0 &&
6074
+ wheelNow - previousWheelAt < throttleMs) {
6075
+ return previousWheelAt;
6076
+ }
6077
+
6066
6078
  module._lastCanvasWheelAt = wheelNow;
6067
6079
  window.__mindMapLastCanvasWheelAt = wheelNow;
6068
6080
  return wheelNow;
@@ -6107,6 +6119,7 @@ window.MindMapInteractions = (function () {
6107
6119
  const TRACKPAD_PIXEL_DELTA_MAX = 32;
6108
6120
  const GESTURE_SCALE_EPSILON = 0.001;
6109
6121
  const GESTURE_SCALE_TO_WHEEL_DELTA = 240;
6122
+ const WHEEL_ACTIVITY_BURST_INTERVAL_MS = 120;
6110
6123
 
6111
6124
  function normalizeWheelDelta(e, axis) {
6112
6125
  let delta = Number(e?.[axis] || 0);
@@ -6348,8 +6361,9 @@ window.MindMapInteractions = (function () {
6348
6361
  return;
6349
6362
  }
6350
6363
 
6351
- markCanvasWheelActivity(module);
6352
- performCameraZoomBuffered(module, accumulatedDeltaY, clientX, clientY);
6364
+ const wheelNow = getWheelTimestamp();
6365
+ markCanvasWheelActivity(module, wheelNow, { throttleMs: WHEEL_ACTIVITY_BURST_INTERVAL_MS });
6366
+ performCameraZoomBuffered(module, accumulatedDeltaY, clientX, clientY, { inputTime: wheelNow });
6353
6367
  });
6354
6368
  }
6355
6369
 
@@ -6388,7 +6402,9 @@ window.MindMapInteractions = (function () {
6388
6402
  }
6389
6403
  }
6390
6404
  // ▼▼▼ [Fix] 휠 입력 시간 기록 (줌 종료 타이밍 계산용) ▼▼▼
6391
- module._zoomInputTime = performance.now();
6405
+ module._zoomInputTime = Number(options?.inputTime || 0) > 0
6406
+ ? Number(options.inputTime)
6407
+ : performance.now();
6392
6408
  // ▲▲▲ [Fix] ▲▲▲
6393
6409
  // Reset zoom fallback flag on new input
6394
6410
  // ▲▲▲ [Perf] ▲▲▲
@@ -6438,7 +6454,7 @@ window.MindMapInteractions = (function () {
6438
6454
  const presentedDirectly = module.presentWheelZoomCameraFrame?.(clientX, clientY, true) === true;
6439
6455
  const settleScheduled =
6440
6456
  presentedDirectly === true &&
6441
- module.requestWheelZoomDirectSettle?.() === true;
6457
+ module.requestWheelZoomDirectSettle?.(undefined, module._zoomInputTime) === true;
6442
6458
  if (settleScheduled !== true) {
6443
6459
  const settleFrames = 2;
6444
6460
  module._forceUpdateFrames = Math.max(Number(module._forceUpdateFrames || 0), settleFrames);
@@ -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-v729" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v729" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-css3d-flat-wheel-v731" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v731" />
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-v729';
582
+ const scriptVersion = '20260620-css3d-flat-wheel-v731';
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": "6L8fWX1q",
2
+ "version": "hV5hamHN",
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-cjhRYpmu58HR+N45I0bWwSy3lIbqe+Mw7yC9ULFf4H0=",
81
+ "hash": "sha256-JzXDAj5thGJpvSPDh6Pe3dizqG01fojiDAuaiY+ulmg=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -106,7 +106,7 @@
106
106
  "url": "_content/MindExecution.Shared/js/mind-map-glow-shader.js"
107
107
  },
108
108
  {
109
- "hash": "sha256-Fm0Y3C3H0pz9NZ0DGC1N+RlukwP3Sc3Wf+Hkir4F/og=",
109
+ "hash": "sha256-AmkV3no3WRkpMZ4GO+XHpIMuWgixgiTmZjuR1FpgTA8=",
110
110
  "url": "_content/MindExecution.Shared/js/mind-map-interactions.js"
111
111
  },
112
112
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-LGqxxx236TFsCt+hXEb0FqBxoMIFDas+knxlvHjllJ8=",
837
+ "hash": "sha256-b2TEM8jlq0aogj2pig/HynB2pXu6FnaqOuL3OwcjSaw=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 6L8fWX1q */
1
+ /* Manifest version: hV5hamHN */
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