@mindexec/cli 0.2.231 → 0.2.232

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.231",
3
+ "version": "0.2.232",
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-local-snap-grid-v678';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-local-snap-grid-v679';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -107,6 +107,8 @@
107
107
  const LOCAL_SNAP_GRID_DIAMETER_PX = LOCAL_SNAP_GRID_RADIUS_PX * 2;
108
108
  const LOCAL_SNAP_GRID_MIN_STEP_PX = 8;
109
109
  const LOCAL_SNAP_GRID_MAX_STEP_PX = 56;
110
+ const LOCAL_SNAP_GRID_STEP_BUCKET_PX = 2;
111
+ const LOCAL_SNAP_GRID_OPACITY_BUCKET = 0.04;
110
112
  const CAMERA_MOTION_PARTIAL_FRAME_SKIP_ENABLED = false;
111
113
  const CAMERA_MOTION_VISUAL_ONLY_FAST_PATH_ENABLED = true;
112
114
  const CAMERA_MOTION_WEBGL_CANVAS_TRANSFORM_ENABLED = true;
@@ -3797,29 +3799,29 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3797
3799
  const viewHeight = 2 * Math.tan(vfov / 2) * cameraZ;
3798
3800
  const pxPerWorld = height / Math.max(1, viewHeight);
3799
3801
  const worldGrid = Math.max(1, Number(this.GRID_SIZE || 10));
3800
- const smallStepPx = Math.max(
3802
+ const rawSmallStepPx = Math.max(
3801
3803
  LOCAL_SNAP_GRID_MIN_STEP_PX,
3802
3804
  Math.min(LOCAL_SNAP_GRID_MAX_STEP_PX, worldGrid * pxPerWorld)
3803
3805
  );
3806
+ const smallStepPx = Math.max(
3807
+ LOCAL_SNAP_GRID_MIN_STEP_PX,
3808
+ Math.min(
3809
+ LOCAL_SNAP_GRID_MAX_STEP_PX,
3810
+ Math.round(rawSmallStepPx / LOCAL_SNAP_GRID_STEP_BUCKET_PX) * LOCAL_SNAP_GRID_STEP_BUCKET_PX
3811
+ )
3812
+ );
3804
3813
  const majorStepPx = smallStepPx * 10;
3805
- const originX = width / 2 - Number(camera.position?.x || 0) * pxPerWorld;
3806
- const originY = height / 2 + Number(camera.position?.y || 0) * pxPerWorld;
3807
- const positiveModulo = (value, size) => ((value % size) + size) % size;
3808
- const smallOffsetX = positiveModulo(originX - layerLeft, smallStepPx);
3809
- const smallOffsetY = positiveModulo(originY - layerTop, smallStepPx);
3810
- const majorOffsetX = positiveModulo(originX - layerLeft, majorStepPx);
3811
- const majorOffsetY = positiveModulo(originY - layerTop, majorStepPx);
3812
3814
  const themeName = String(this.currentThemeName || '').trim();
3813
3815
  const styleKind = themeName === 'SpatialGrid2D' ? 'dot' : 'line';
3814
- const opacity = Math.max(0.34, Math.min(0.82, cameraZ <= 1800 ? 0.72 : 0.72 - ((cameraZ - 1800) / 36000)));
3816
+ const rawOpacity = Math.max(0.34, Math.min(0.82, cameraZ <= 1800 ? 0.72 : 0.72 - ((cameraZ - 1800) / 36000)));
3817
+ const opacity = Math.max(
3818
+ 0.34,
3819
+ Math.min(0.82, Math.round(rawOpacity / LOCAL_SNAP_GRID_OPACITY_BUCKET) * LOCAL_SNAP_GRID_OPACITY_BUCKET)
3820
+ );
3815
3821
  const localGridKey = [
3816
3822
  styleKind,
3817
3823
  Math.round(smallStepPx * 100),
3818
3824
  Math.round(majorStepPx * 100),
3819
- Math.round(smallOffsetX * 100),
3820
- Math.round(smallOffsetY * 100),
3821
- Math.round(majorOffsetX * 100),
3822
- Math.round(majorOffsetY * 100),
3823
3825
  Math.round(opacity * 100)
3824
3826
  ].join('|');
3825
3827
 
@@ -3842,8 +3844,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3842
3844
  ? `${smallStepPx.toFixed(3)}px ${smallStepPx.toFixed(3)}px, ${majorStepPx.toFixed(3)}px ${majorStepPx.toFixed(3)}px`
3843
3845
  : `${smallStepPx.toFixed(3)}px ${smallStepPx.toFixed(3)}px, ${smallStepPx.toFixed(3)}px ${smallStepPx.toFixed(3)}px, ${majorStepPx.toFixed(3)}px ${majorStepPx.toFixed(3)}px, ${majorStepPx.toFixed(3)}px ${majorStepPx.toFixed(3)}px`;
3844
3846
  layer.style.backgroundPosition = styleKind === 'dot'
3845
- ? `${smallOffsetX.toFixed(3)}px ${smallOffsetY.toFixed(3)}px, ${majorOffsetX.toFixed(3)}px ${majorOffsetY.toFixed(3)}px`
3846
- : `${smallOffsetX.toFixed(3)}px 0, 0 ${smallOffsetY.toFixed(3)}px, ${majorOffsetX.toFixed(3)}px 0, 0 ${majorOffsetY.toFixed(3)}px`;
3847
+ ? '0 0, 0 0'
3848
+ : '0 0, 0 0, 0 0, 0 0';
3847
3849
  layer.style.opacity = opacity.toFixed(3);
3848
3850
  }
3849
3851
 
@@ -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-local-snap-grid-v678" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-local-snap-grid-v678" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-local-snap-grid-v679" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-local-snap-grid-v679" />
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-local-snap-grid-v678';
582
+ const scriptVersion = '20260620-local-snap-grid-v679';
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": "0fNd45RW",
2
+ "version": "ICqoIb6t",
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-cgRnT3AuM8Mw82hw1iBUqvEjFE3RPDTdFRA0hTl2MRw=",
81
+ "hash": "sha256-SJbkOw5njRyQJ+hWZvh77QpYXbjgsQAkgsp2E7eIrjc=",
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-CkeAh51//UYmSeCRJEi3nfSHsdn1/1M6oxHS4TrYXss=",
837
+ "hash": "sha256-vbtZ+Y2ONRk+P+CZYjw5DVWq8HXgqNBPqGjMIGw14zs=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 0fNd45RW */
1
+ /* Manifest version: ICqoIb6t */
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