@mindexec/cli 0.2.266 → 0.2.268

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.266",
3
+ "version": "0.2.268",
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-v714';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-css3d-flat-wheel-v716';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -4014,9 +4014,11 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4014
4014
  return this._localSnapGridLayer;
4015
4015
  }
4016
4016
 
4017
- const layer = document.createElement('div');
4017
+ const layer = document.createElement('canvas');
4018
4018
  layer.className = 'mindcanvas-local-snap-grid-layer';
4019
4019
  layer.setAttribute('aria-hidden', 'true');
4020
+ layer.width = LOCAL_SNAP_GRID_DIAMETER_PX;
4021
+ layer.height = LOCAL_SNAP_GRID_DIAMETER_PX;
4020
4022
  layer.style.position = 'absolute';
4021
4023
  layer.style.left = '0';
4022
4024
  layer.style.top = '0';
@@ -4026,7 +4028,6 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4026
4028
  layer.style.pointerEvents = 'none';
4027
4029
  layer.style.display = 'none';
4028
4030
  layer.style.opacity = '0';
4029
- layer.style.backgroundRepeat = 'repeat';
4030
4031
  layer.style.backgroundColor = 'transparent';
4031
4032
  layer.style.borderRadius = '50%';
4032
4033
  layer.style.overflow = 'hidden';
@@ -4035,9 +4036,6 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4035
4036
  layer.style.willChange = 'transform, opacity';
4036
4037
  layer.style.transform = 'translate3d(0, 0, 0)';
4037
4038
  layer.style.transition = 'opacity 90ms linear';
4038
- const mask = 'radial-gradient(circle at center, rgba(0,0,0,0.98) 0%, rgba(0,0,0,0.82) 34%, rgba(0,0,0,0.38) 56%, rgba(0,0,0,0.11) 74%, rgba(0,0,0,0.025) 88%, transparent 100%)';
4039
- layer.style.maskImage = mask;
4040
- layer.style.webkitMaskImage = mask;
4041
4039
 
4042
4040
  const cssElement = this.cssRenderer?.domElement;
4043
4041
  if (cssElement?.parentNode === this.container) {
@@ -4059,6 +4057,83 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4059
4057
  return themeName === 'SpatialGrid2D' ? 'dot' : 'line';
4060
4058
  }
4061
4059
 
4060
+ _drawLocalSnapGridBitmap(canvas, styleKind, smallStepPx, majorStepPx) {
4061
+ if (!canvas || typeof canvas.getContext !== 'function') {
4062
+ return false;
4063
+ }
4064
+
4065
+ const ctx = canvas.getContext('2d', { alpha: true });
4066
+ if (!ctx) {
4067
+ return false;
4068
+ }
4069
+
4070
+ const size = LOCAL_SNAP_GRID_DIAMETER_PX;
4071
+ const center = LOCAL_SNAP_GRID_RADIUS_PX;
4072
+ if (canvas.width !== size) {
4073
+ canvas.width = size;
4074
+ }
4075
+ if (canvas.height !== size) {
4076
+ canvas.height = size;
4077
+ }
4078
+
4079
+ const smallStep = Math.max(LOCAL_SNAP_GRID_MIN_STEP_PX, Number(smallStepPx) || LOCAL_SNAP_GRID_DEFAULT_STEP_PX);
4080
+ const majorStep = Math.max(smallStep, Number(majorStepPx) || LOCAL_SNAP_GRID_DEFAULT_MAJOR_STEP_PX);
4081
+ ctx.clearRect(0, 0, size, size);
4082
+
4083
+ if (styleKind === 'dot') {
4084
+ ctx.fillStyle = 'rgba(58, 69, 88, 0.46)';
4085
+ const dotRadius = 1.15;
4086
+ for (let y = 0; y <= size; y += smallStep) {
4087
+ for (let x = 0; x <= size; x += smallStep) {
4088
+ ctx.beginPath();
4089
+ ctx.arc(x, y, dotRadius, 0, Math.PI * 2);
4090
+ ctx.fill();
4091
+ }
4092
+ }
4093
+
4094
+ ctx.fillStyle = 'rgba(15, 23, 42, 0.62)';
4095
+ const majorDotRadius = 1.85;
4096
+ for (let y = 0; y <= size; y += majorStep) {
4097
+ for (let x = 0; x <= size; x += majorStep) {
4098
+ ctx.beginPath();
4099
+ ctx.arc(x, y, majorDotRadius, 0, Math.PI * 2);
4100
+ ctx.fill();
4101
+ }
4102
+ }
4103
+ } else {
4104
+ const drawLines = (step, color, width) => {
4105
+ ctx.strokeStyle = color;
4106
+ ctx.lineWidth = width;
4107
+ ctx.beginPath();
4108
+ for (let x = 0.5; x <= size; x += step) {
4109
+ ctx.moveTo(x, 0);
4110
+ ctx.lineTo(x, size);
4111
+ }
4112
+ for (let y = 0.5; y <= size; y += step) {
4113
+ ctx.moveTo(0, y);
4114
+ ctx.lineTo(size, y);
4115
+ }
4116
+ ctx.stroke();
4117
+ };
4118
+
4119
+ drawLines(smallStep, 'rgba(51, 65, 85, 0.24)', 1);
4120
+ drawLines(majorStep, 'rgba(15, 23, 42, 0.42)', 1);
4121
+ }
4122
+
4123
+ ctx.globalCompositeOperation = 'destination-in';
4124
+ const fade = ctx.createRadialGradient(center, center, center * 0.18, center, center, center);
4125
+ fade.addColorStop(0, 'rgba(0,0,0,1)');
4126
+ fade.addColorStop(0.34, 'rgba(0,0,0,0.92)');
4127
+ fade.addColorStop(0.56, 'rgba(0,0,0,0.48)');
4128
+ fade.addColorStop(0.74, 'rgba(0,0,0,0.14)');
4129
+ fade.addColorStop(0.88, 'rgba(0,0,0,0.035)');
4130
+ fade.addColorStop(1, 'rgba(0,0,0,0)');
4131
+ ctx.fillStyle = fade;
4132
+ ctx.fillRect(0, 0, size, size);
4133
+ ctx.globalCompositeOperation = 'source-over';
4134
+ return true;
4135
+ }
4136
+
4062
4137
  _applyLocalSnapGridStyle(layer, styleKind, smallStepPx, majorStepPx, opacity, keyPrefix = 'style') {
4063
4138
  if (!layer) {
4064
4139
  return false;
@@ -4086,23 +4161,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4086
4161
  this._lastLocalSnapGridKey = localGridKey;
4087
4162
  const opacityValue = safeOpacity.toFixed(3);
4088
4163
  this._lastLocalSnapGridOpacity = opacityValue;
4089
- if (safeStyleKind === 'dot') {
4090
- layer.style.backgroundImage = [
4091
- 'radial-gradient(circle at 0 0, rgba(58, 69, 88, 0.28) 1px, transparent 1.45px)',
4092
- 'radial-gradient(circle at 0 0, rgba(30, 41, 59, 0.4) 1.6px, transparent 2.05px)'
4093
- ].join(', ');
4094
- layer.style.backgroundSize = `${safeSmallStep.toFixed(3)}px ${safeSmallStep.toFixed(3)}px, ${safeMajorStep.toFixed(3)}px ${safeMajorStep.toFixed(3)}px`;
4095
- layer.style.backgroundPosition = '0 0, 0 0';
4096
- } else {
4097
- layer.style.backgroundImage = [
4098
- 'linear-gradient(to right, rgba(51, 65, 85, 0.16) 1px, transparent 1px)',
4099
- 'linear-gradient(to bottom, rgba(51, 65, 85, 0.16) 1px, transparent 1px)',
4100
- 'linear-gradient(to right, rgba(15, 23, 42, 0.28) 1px, transparent 1px)',
4101
- 'linear-gradient(to bottom, rgba(15, 23, 42, 0.28) 1px, transparent 1px)'
4102
- ].join(', ');
4103
- layer.style.backgroundSize = `${safeSmallStep.toFixed(3)}px ${safeSmallStep.toFixed(3)}px, ${safeSmallStep.toFixed(3)}px ${safeSmallStep.toFixed(3)}px, ${safeMajorStep.toFixed(3)}px ${safeMajorStep.toFixed(3)}px, ${safeMajorStep.toFixed(3)}px ${safeMajorStep.toFixed(3)}px`;
4104
- layer.style.backgroundPosition = '0 0, 0 0, 0 0, 0 0';
4105
- }
4164
+ this._drawLocalSnapGridBitmap(layer, safeStyleKind, safeSmallStep, safeMajorStep);
4106
4165
  if (layer.style.opacity !== opacityValue) {
4107
4166
  layer.style.opacity = opacityValue;
4108
4167
  }
@@ -5496,7 +5555,9 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5496
5555
  this._deferPassiveOverlayRefresh = true;
5497
5556
  }
5498
5557
 
5499
- if (Number.isFinite(Number(clientX)) && Number.isFinite(Number(clientY))) {
5558
+ if (options?.snapGridPointAlreadySet !== true &&
5559
+ Number.isFinite(Number(clientX)) &&
5560
+ Number.isFinite(Number(clientY))) {
5500
5561
  this.setLocalSnapGridClientPoint?.(Number(clientX), Number(clientY));
5501
5562
  }
5502
5563
 
@@ -8610,14 +8671,20 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
8610
8671
  // ▲▲▲ [FIX] ▲▲▲
8611
8672
  _profileSection('css3dRender');
8612
8673
 
8613
- const hasBusinessAutomationEdgeLayer = !!(
8614
- this._businessAutomationEdgeVisualLayer?.isConnected ||
8615
- this._businessAutomationEdgeLayer?.isConnected
8616
- );
8617
8674
  const hasBusinessAutomationConnectionDraft =
8618
8675
  this._businessAutomationConnectionDraftActive === true;
8676
+ const hasBusinessAutomationEdgeRenderActive =
8677
+ this._businessAutomationEdgeRenderActive === true;
8678
+ const hasBusinessAutomationEdgeLayer = !!(
8679
+ (hasBusinessAutomationEdgeRenderActive === true || hasBusinessAutomationConnectionDraft === true) &&
8680
+ (
8681
+ this._businessAutomationEdgeVisualLayer?.isConnected ||
8682
+ this._businessAutomationEdgeLayer?.isConnected
8683
+ )
8684
+ );
8619
8685
  const shouldTransformBusinessAutomationEdgesForCameraMotion =
8620
8686
  hasBusinessAutomationEdgeLayer &&
8687
+ hasBusinessAutomationEdgeRenderActive === true &&
8621
8688
  hasBusinessAutomationConnectionDraft !== true &&
8622
8689
  window.MindMapCss3DManager?.syncBusinessAutomationEdgesForCameraMotion &&
8623
8690
  (this.isPanning === true || this.isZooming === true || isCameraMoving === true) &&
@@ -8629,6 +8696,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
8629
8696
  const shouldThrottleBusinessAutomationEdgesForCameraMotion = shouldTransformBusinessAutomationEdgesForCameraMotion === true;
8630
8697
  const shouldDeferBusinessAutomationEdgesForCameraMotion = !!(
8631
8698
  hasBusinessAutomationEdgeLayer &&
8699
+ hasBusinessAutomationEdgeRenderActive === true &&
8632
8700
  hasBusinessAutomationConnectionDraft !== true &&
8633
8701
  shouldThrottleBusinessAutomationEdgesForCameraMotion !== true &&
8634
8702
  (this.isPanning === true || this.isZooming === true || isCameraMoving === true) &&
@@ -6416,7 +6416,8 @@ window.MindMapInteractions = (function () {
6416
6416
  module.targetY = newY;
6417
6417
  const presentedDirectly = module.presentWheelZoomCameraFrame?.(clientX, clientY, {
6418
6418
  reason: 'wheel-zoom-direct',
6419
- coalescedWheelEvents: Number(options.coalescedWheelEvents || 0)
6419
+ coalescedWheelEvents: Number(options.coalescedWheelEvents || 0),
6420
+ snapGridPointAlreadySet: true
6420
6421
  }) === true;
6421
6422
  const settleScheduled =
6422
6423
  presentedDirectly === 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-css3d-flat-wheel-v714" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v714" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-css3d-flat-wheel-v716" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v716" />
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-v714';
582
+ const scriptVersion = '20260620-css3d-flat-wheel-v716';
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": "a3DPzEOX",
2
+ "version": "gmOk+Y7z",
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-4pZaMyRaOb3TVVbVif7uhCJB3buD9FVjpRUeuOlS9Xs=",
81
+ "hash": "sha256-7adaswT3I1+WzOFDuj90ryAR5a2GA8B301DE2abkCEA=",
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-TLgqElMhXUaNKNxPc2h8SJhr/YhkvBFS7U8kwf7AVZw=",
109
+ "hash": "sha256-tosOpXqyXDFBnjyuaucNqryVdR3s6BdWEWUuRpeCzgM=",
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-KH2KTc9h4v4RyVIa88L9OqOFsr/WXRYslyp7T0obPF4=",
837
+ "hash": "sha256-aNFeVdCPX6Gcltu4HVLXLS++OW8/uLfYj9LO2Zs8c84=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: a3DPzEOX */
1
+ /* Manifest version: gmOk+Y7z */
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