@mindexec/cli 0.2.271 → 0.2.273

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.271",
3
+ "version": "0.2.273",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -1481,7 +1481,7 @@ html.mindcanvas-platform-apple .css3d-resolution-wrapper.is-automation-relation-
1481
1481
  transform-origin: 0 0;
1482
1482
  -webkit-font-smoothing: antialiased;
1483
1483
  -moz-osx-font-smoothing: grayscale;
1484
- text-rendering: optimizeLegibility;
1484
+ text-rendering: auto;
1485
1485
  contain: layout style paint;
1486
1486
  }
1487
1487
 
@@ -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-v719';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-css3d-flat-wheel-v721';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -494,15 +494,9 @@
494
494
  return false;
495
495
  }
496
496
 
497
- // Static backgrounds can move as a single viewport surface. Continuous
498
- // particle themes keep real animation during non-zoom camera motion only
499
- // when the user explicitly asks for 60fps animation; active wheel zoom
500
- // freezes the WebGL surface separately so raw wheel cadence cannot be
501
- // dominated by background rendering.
502
- if (isContinuousBackgroundTheme(module) === true) {
503
- return module?.useAnimation60Fps !== true;
504
- }
505
-
497
+ // Camera navigation owns responsiveness. Continuous particle themes
498
+ // may animate while idle, but pan/wheel/camera motion should move the
499
+ // last WebGL surface like a viewport instead of re-simulating the theme.
506
500
  return true;
507
501
  }
508
502
 
@@ -514,6 +508,41 @@
514
508
  return module?.currentThemeObject?.userData?.localSnapGrid === true;
515
509
  }
516
510
 
511
+ function hasPassiveOverlaySelectionSurface(module) {
512
+ const selectionNodeId = module?._textOverlayV2State?.selectionNodeId;
513
+ const selectableTextOverlayNodeId = module?._selectableTextOverlayNodeId;
514
+ return !!(
515
+ (typeof selectionNodeId === 'string' ? selectionNodeId.length > 0 : selectionNodeId) ||
516
+ (typeof selectableTextOverlayNodeId === 'string' ? selectableTextOverlayNodeId.length > 0 : selectableTextOverlayNodeId)
517
+ );
518
+ }
519
+
520
+ function hasPassiveOverlayMotionWork(module) {
521
+ return PASSIVE_DOM_OVERLAY_RUNTIME_ENABLED === true ||
522
+ hasPassiveOverlaySelectionSurface(module) === true;
523
+ }
524
+
525
+ function deferPassiveOverlayForCameraMotion(module, nowMs = 0, delayMs = PASSIVE_OVERLAY_IDLE_DELAY_MS) {
526
+ if (!module || hasPassiveOverlayMotionWork(module) !== true) {
527
+ return false;
528
+ }
529
+
530
+ const baseTime = Number(nowMs || 0) || (typeof performance !== 'undefined' && typeof performance.now === 'function'
531
+ ? performance.now()
532
+ : Date.now());
533
+ module._passiveOverlayResumeAt = Math.max(
534
+ Number(module._passiveOverlayResumeAt || 0),
535
+ baseTime + delayMs
536
+ );
537
+
538
+ if (module._overlayDirty === true ||
539
+ hasPassiveOverlaySelectionSurface(module) === true) {
540
+ module._deferPassiveOverlayRefresh = true;
541
+ }
542
+
543
+ return true;
544
+ }
545
+
517
546
  function renderCss3dCameraForCameraNavigation(module, reason = 'camera-navigation') {
518
547
  const renderer = module?.cssRenderer || null;
519
548
  const camera = module?.camera || null;
@@ -1483,10 +1512,7 @@
1483
1512
 
1484
1513
  module._viewSyncMotionActive = true;
1485
1514
  module._cameraMovingThisFrame = false;
1486
- module._passiveOverlayResumeAt = Math.max(
1487
- Number(module._passiveOverlayResumeAt || 0),
1488
- frameStart + PASSIVE_OVERLAY_IDLE_DELAY_MS
1489
- );
1515
+ deferPassiveOverlayForCameraMotion(module, frameStart);
1490
1516
 
1491
1517
  const forceUpdateFrames = Math.max(0, Number(module._forceUpdateFrames || 0));
1492
1518
  const cameraNavigationForceFrames = Math.max(0, Number(module._cameraNavigationForceFrames || 0));
@@ -1518,12 +1544,6 @@
1518
1544
  module._css3dVisualChangedSinceLastRender === true) {
1519
1545
  module._css3dVisualDeferredForMotion = true;
1520
1546
  }
1521
- if (module._overlayDirty === true ||
1522
- String(module._textOverlayV2State?.selectionNodeId || '').trim() ||
1523
- String(module._selectableTextOverlayNodeId || '').trim()) {
1524
- module._deferPassiveOverlayRefresh = true;
1525
- }
1526
-
1527
1547
  if (hasForcedUpdate) {
1528
1548
  module._forceUpdateFrames = Math.max(0, forceUpdateFrames - 1);
1529
1549
  if (cameraNavigationForceFrames > 0) {
@@ -1700,11 +1720,7 @@
1700
1720
  module._preserveVisibleSetThisFrame = true;
1701
1721
  module._lastVisibilityCullingSkipReason = 'ua-ultra-camera-only';
1702
1722
  recordCameraMotionFastPathStatus(module, 'hit', 'ua-ultra-camera-only');
1703
- if (module._overlayDirty === true ||
1704
- String(module._textOverlayV2State?.selectionNodeId || '').trim() ||
1705
- String(module._selectableTextOverlayNodeId || '').trim()) {
1706
- module._deferPassiveOverlayRefresh = true;
1707
- }
1723
+ deferPassiveOverlayForCameraMotion(module, frameStart);
1708
1724
 
1709
1725
  if (shouldSyncMindCanvasPerfClasses()) {
1710
1726
  const visibleNodeCount = Number(module._visibleIds?.size || module._prevVisibleIds?.size || 0);
@@ -1928,11 +1944,7 @@
1928
1944
  module._preserveVisibleSetThisFrame = true;
1929
1945
  module._lastVisibilityCullingSkipReason = 'ua-ultra-resident-camera-only';
1930
1946
  recordCameraMotionFastPathStatus(module, 'hit', 'ua-ultra-resident-camera-only');
1931
- if (module._overlayDirty === true ||
1932
- String(module._textOverlayV2State?.selectionNodeId || '').trim() ||
1933
- String(module._selectableTextOverlayNodeId || '').trim()) {
1934
- module._deferPassiveOverlayRefresh = true;
1935
- }
1947
+ deferPassiveOverlayForCameraMotion(module, frameStart);
1936
1948
 
1937
1949
  if (shouldSyncMindCanvasPerfClasses()) {
1938
1950
  const visibleNodeCount = Number(module._visibleIds?.size || module._prevVisibleIds?.size || 0);
@@ -4042,9 +4054,9 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4042
4054
  layer.style.overflow = 'hidden';
4043
4055
  layer.style.clipPath = 'circle(500px at 500px 500px)';
4044
4056
  layer.style.contain = 'strict';
4045
- layer.style.willChange = 'transform, opacity';
4057
+ layer.style.willChange = 'transform';
4046
4058
  layer.style.transform = 'translate3d(0, 0, 0)';
4047
- layer.style.transition = 'opacity 90ms linear';
4059
+ layer.style.transition = 'none';
4048
4060
 
4049
4061
  const cssElement = this.cssRenderer?.domElement;
4050
4062
  if (cssElement?.parentNode === this.container) {
@@ -5396,7 +5408,9 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5396
5408
  const desiredDpr = this._getDesiredPixelRatio(interactive);
5397
5409
  if (interactive) {
5398
5410
  // Drop DPR immediately while panning/zooming; restore it only after motion settles.
5399
- this._scheduleDeferredRendererPixelRatioApply();
5411
+ if (!this._deferredDprTimer) {
5412
+ this._scheduleDeferredRendererPixelRatioApply();
5413
+ }
5400
5414
  if (this._currentDpr !== null && this._currentDpr <= desiredDpr + 0.001) {
5401
5415
  return;
5402
5416
  }
@@ -5554,15 +5568,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5554
5568
  this._fullResVisibilityReconcilePending = true;
5555
5569
  }
5556
5570
  this._preserveVisibleSetThisFrame = true;
5557
- this._passiveOverlayResumeAt = Math.max(
5558
- Number(this._passiveOverlayResumeAt || 0),
5559
- (typeof performance !== 'undefined' && typeof performance.now === 'function' ? performance.now() : Date.now()) + PASSIVE_OVERLAY_IDLE_DELAY_MS
5560
- );
5561
- if (this._overlayDirty === true ||
5562
- String(this._textOverlayV2State?.selectionNodeId || '').trim() ||
5563
- String(this._selectableTextOverlayNodeId || '').trim()) {
5564
- this._deferPassiveOverlayRefresh = true;
5565
- }
5571
+ deferPassiveOverlayForCameraMotion(this);
5566
5572
 
5567
5573
  if (snapGridPointAlreadySet !== true &&
5568
5574
  Number.isFinite(Number(clientX)) &&
@@ -6676,7 +6682,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6676
6682
  (this.isPanning === true || isRecentPanInput) && this.isZooming !== true
6677
6683
  ? PASSIVE_OVERLAY_PAN_IDLE_DELAY_MS
6678
6684
  : PASSIVE_OVERLAY_IDLE_DELAY_MS;
6679
- this._passiveOverlayResumeAt = frameStart + overlayResumeDelayMs;
6685
+ deferPassiveOverlayForCameraMotion(this, frameStart, overlayResumeDelayMs);
6680
6686
  }
6681
6687
  const zoomEndedThisFrame = wasZoomingLastFrame && !this.isZooming;
6682
6688
  const panEndedThisFrame = wasPanningLastFrame && !this.isPanning;
@@ -332,7 +332,7 @@
332
332
  letter-spacing: normal;
333
333
  -webkit-font-smoothing: antialiased;
334
334
  -moz-osx-font-smoothing: grayscale;
335
- text-rendering: optimizeLegibility;
335
+ text-rendering: auto;
336
336
  }
337
337
  .markdown-body h1 { font-size: 1.8em; font-weight: bold; margin-top: 1em; margin-bottom: 0.5em; border-bottom: 1px solid #eaecef; padding-bottom: 0.3em; }
338
338
  .markdown-body h2 { font-size: 1.4em; font-weight: bold; margin-top: 1em; margin-bottom: 0.5em; border-bottom: 1px solid #eaecef; padding-bottom: 0.3em; }
@@ -708,9 +708,12 @@
708
708
  .map-node {
709
709
  -webkit-font-smoothing: antialiased !important;
710
710
  -moz-osx-font-smoothing: grayscale !important;
711
- text-rendering: optimizeLegibility !important;
711
+ text-rendering: auto !important;
712
712
  backface-visibility: hidden !important;
713
713
  -webkit-backface-visibility: hidden !important;
714
+ transition: none !important;
715
+ -webkit-transition: none !important;
716
+ will-change: auto !important;
714
717
  cursor: grab;
715
718
  }
716
719
 
@@ -1081,7 +1084,7 @@
1081
1084
  transform-origin: 0 0;
1082
1085
  -webkit-font-smoothing: antialiased;
1083
1086
  -moz-osx-font-smoothing: grayscale;
1084
- text-rendering: optimizeLegibility;
1087
+ text-rendering: auto;
1085
1088
  backface-visibility: hidden;
1086
1089
  -webkit-backface-visibility: hidden;
1087
1090
  }
@@ -1140,7 +1143,7 @@
1140
1143
  transform-origin: 0 0;
1141
1144
  -webkit-font-smoothing: antialiased;
1142
1145
  -moz-osx-font-smoothing: grayscale;
1143
- text-rendering: optimizeLegibility;
1146
+ text-rendering: auto;
1144
1147
  backface-visibility: hidden;
1145
1148
  -webkit-backface-visibility: hidden;
1146
1149
  }
@@ -5686,7 +5689,7 @@
5686
5689
  box-sizing: border-box;
5687
5690
  overflow-y: auto;
5688
5691
  -webkit-font-smoothing: antialiased;
5689
- text-rendering: optimizeLegibility;
5692
+ text-rendering: auto;
5690
5693
  white-space: pre-wrap;
5691
5694
  overflow-wrap: break-word;
5692
5695
  pointer-events: auto;
@@ -20070,7 +20073,7 @@
20070
20073
  white-space: pre-wrap;
20071
20074
  overflow-wrap: break-word;
20072
20075
  -webkit-font-smoothing: antialiased;
20073
- text-rendering: optimizeLegibility;
20076
+ text-rendering: auto;
20074
20077
  `;
20075
20078
 
20076
20079
  shell.appendChild(header);
@@ -7389,7 +7389,7 @@ window.MindMapInteractions = (function () {
7389
7389
  box-sizing: border-box; /* User Request */
7390
7390
  overflow-y: auto; /* User Request */
7391
7391
  -webkit-font-smoothing: antialiased;
7392
- text-rendering: optimizeLegibility;
7392
+ text-rendering: auto;
7393
7393
  white-space: pre-wrap;
7394
7394
  overflow-wrap: break-word;
7395
7395
  `;
@@ -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-v719" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v719" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-css3d-flat-wheel-v721" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v721" />
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-v719';
582
+ const scriptVersion = '20260620-css3d-flat-wheel-v721';
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": "HbEMpqDj",
2
+ "version": "o4neVAwV",
3
3
  "assets": [
4
4
  {
5
5
  "hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
@@ -42,7 +42,7 @@
42
42
  "url": "_content/MindExecution.Shared/css/app.css"
43
43
  },
44
44
  {
45
- "hash": "sha256-+g9Cfs6qqYnJ6Ouz/Ngv/mH55lhd3LWKBAgpI6GT0Rg=",
45
+ "hash": "sha256-IsoaitVgDvGMpqVgxyFAW22yVRgrOb0iXaxNi3Sa6s4=",
46
46
  "url": "_content/MindExecution.Shared/css/mind-map-overrides.css"
47
47
  },
48
48
  {
@@ -78,7 +78,7 @@
78
78
  "url": "_content/MindExecution.Shared/js/marked.min.js"
79
79
  },
80
80
  {
81
- "hash": "sha256-pqgIWpUz6vTGCp3lE2eggiI30LkkJEe2bnEgUAHQqnI=",
81
+ "hash": "sha256-P1BWGBXjOUibEDrwx0hQ5l0WgegU7VV8/DIib3bw++Y=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -86,7 +86,7 @@
86
86
  "url": "_content/MindExecution.Shared/js/mind-map-core.js.backup"
87
87
  },
88
88
  {
89
- "hash": "sha256-fcU6DmUUw/iLoW3TWn1UKW9+2+Vfqa2O1QDRg9Az2JE=",
89
+ "hash": "sha256-1vOfr6NJpXOlWCDh3qIFXLoUAT3+WR6nAkd32NhHE2c=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -106,7 +106,7 @@
106
106
  "url": "_content/MindExecution.Shared/js/mind-map-glow-shader.js"
107
107
  },
108
108
  {
109
- "hash": "sha256-JQA4jBklYiBR+NrSTcmyMNFG396DJB04AKiwJHXVeBU=",
109
+ "hash": "sha256-AlbbLd6JWDnJYXVds8eReO2OYyjzsjXYFn36UYz0ZxI=",
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-aLa9QYcCCEMlUbiccQn+feYoFv4B1hNGLZh3cWsW6MU=",
837
+ "hash": "sha256-a+4c2TI1A0UnV155SAvgW6psiYnLVcJ6Ozi78O+ViP4=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: HbEMpqDj */
1
+ /* Manifest version: o4neVAwV */
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