@mindexec/cli 0.2.257 → 0.2.258

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.257",
3
+ "version": "0.2.258",
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-ua-wheel-zoom-direct-settle-v704';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-local-grid-wheel-zoom-v705';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -109,6 +109,9 @@
109
109
  const LOCAL_SNAP_GRID_MAX_STEP_PX = 56;
110
110
  const LOCAL_SNAP_GRID_STEP_BUCKET_PX = 2;
111
111
  const LOCAL_SNAP_GRID_OPACITY_BUCKET = 0.04;
112
+ const LOCAL_SNAP_GRID_DEFAULT_STEP_PX = 24;
113
+ const LOCAL_SNAP_GRID_DEFAULT_MAJOR_STEP_PX = 240;
114
+ const LOCAL_SNAP_GRID_DEFAULT_OPACITY = 0.42;
112
115
  const CAMERA_MOTION_PARTIAL_FRAME_SKIP_ENABLED = false;
113
116
  const CAMERA_MOTION_VISUAL_ONLY_FAST_PATH_ENABLED = true;
114
117
  const CAMERA_MOTION_WEBGL_CANVAS_TRANSFORM_ENABLED = true;
@@ -3979,11 +3982,13 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
3979
3982
  layer.style.backgroundRepeat = 'repeat';
3980
3983
  layer.style.backgroundColor = 'transparent';
3981
3984
  layer.style.borderRadius = '50%';
3985
+ layer.style.overflow = 'hidden';
3986
+ layer.style.clipPath = 'circle(500px at 500px 500px)';
3982
3987
  layer.style.contain = 'strict';
3983
3988
  layer.style.willChange = 'transform, opacity';
3984
3989
  layer.style.transform = 'translate3d(0, 0, 0)';
3985
3990
  layer.style.transition = 'opacity 90ms linear';
3986
- const mask = 'radial-gradient(circle at center, rgba(0,0,0,1) 0%, rgba(0,0,0,0.9) 28%, rgba(0,0,0,0.52) 50%, rgba(0,0,0,0.18) 70%, rgba(0,0,0,0.04) 86%, transparent 100%)';
3991
+ 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%)';
3987
3992
  layer.style.maskImage = mask;
3988
3993
  layer.style.webkitMaskImage = mask;
3989
3994
 
@@ -4002,6 +4007,83 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4002
4007
  return layer;
4003
4008
  }
4004
4009
 
4010
+ _getLocalSnapGridStyleKind() {
4011
+ const themeName = String(this.currentThemeName || '').trim();
4012
+ return themeName === 'SpatialGrid2D' ? 'dot' : 'line';
4013
+ }
4014
+
4015
+ _applyLocalSnapGridStyle(layer, styleKind, smallStepPx, majorStepPx, opacity, keyPrefix = 'style') {
4016
+ if (!layer) {
4017
+ return false;
4018
+ }
4019
+
4020
+ const safeStyleKind = styleKind === 'dot' ? 'dot' : 'line';
4021
+ const safeSmallStep = Math.max(
4022
+ LOCAL_SNAP_GRID_MIN_STEP_PX,
4023
+ Math.min(LOCAL_SNAP_GRID_MAX_STEP_PX, Number(smallStepPx) || LOCAL_SNAP_GRID_DEFAULT_STEP_PX)
4024
+ );
4025
+ const safeMajorStep = Math.max(safeSmallStep, Number(majorStepPx) || LOCAL_SNAP_GRID_DEFAULT_MAJOR_STEP_PX);
4026
+ const safeOpacity = Math.max(0.2, Math.min(0.56, Number(opacity) || LOCAL_SNAP_GRID_DEFAULT_OPACITY));
4027
+ const localGridKey = [
4028
+ keyPrefix,
4029
+ safeStyleKind,
4030
+ Math.round(safeSmallStep * 100),
4031
+ Math.round(safeMajorStep * 100),
4032
+ Math.round(safeOpacity * 100)
4033
+ ].join('|');
4034
+
4035
+ if (localGridKey === this._lastLocalSnapGridKey) {
4036
+ return false;
4037
+ }
4038
+
4039
+ this._lastLocalSnapGridKey = localGridKey;
4040
+ const opacityValue = safeOpacity.toFixed(3);
4041
+ this._lastLocalSnapGridOpacity = opacityValue;
4042
+ if (safeStyleKind === 'dot') {
4043
+ layer.style.backgroundImage = [
4044
+ 'radial-gradient(circle at 0 0, rgba(58, 69, 88, 0.28) 1px, transparent 1.45px)',
4045
+ 'radial-gradient(circle at 0 0, rgba(30, 41, 59, 0.4) 1.6px, transparent 2.05px)'
4046
+ ].join(', ');
4047
+ layer.style.backgroundSize = `${safeSmallStep.toFixed(3)}px ${safeSmallStep.toFixed(3)}px, ${safeMajorStep.toFixed(3)}px ${safeMajorStep.toFixed(3)}px`;
4048
+ layer.style.backgroundPosition = '0 0, 0 0';
4049
+ } else {
4050
+ layer.style.backgroundImage = [
4051
+ 'linear-gradient(to right, rgba(51, 65, 85, 0.16) 1px, transparent 1px)',
4052
+ 'linear-gradient(to bottom, rgba(51, 65, 85, 0.16) 1px, transparent 1px)',
4053
+ 'linear-gradient(to right, rgba(15, 23, 42, 0.28) 1px, transparent 1px)',
4054
+ 'linear-gradient(to bottom, rgba(15, 23, 42, 0.28) 1px, transparent 1px)'
4055
+ ].join(', ');
4056
+ 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`;
4057
+ layer.style.backgroundPosition = '0 0, 0 0, 0 0, 0 0';
4058
+ }
4059
+ if (layer.style.opacity !== opacityValue) {
4060
+ layer.style.opacity = opacityValue;
4061
+ }
4062
+ return true;
4063
+ }
4064
+
4065
+ _ensureLocalSnapGridBaseStyle(layer = null) {
4066
+ const targetLayer = layer || this._ensureLocalSnapGridLayer();
4067
+ if (!targetLayer) {
4068
+ return false;
4069
+ }
4070
+
4071
+ if (this._lastLocalSnapGridKey) {
4072
+ return true;
4073
+ }
4074
+
4075
+ this._applyLocalSnapGridStyle(
4076
+ targetLayer,
4077
+ this._getLocalSnapGridStyleKind(),
4078
+ LOCAL_SNAP_GRID_DEFAULT_STEP_PX,
4079
+ LOCAL_SNAP_GRID_DEFAULT_MAJOR_STEP_PX,
4080
+ LOCAL_SNAP_GRID_DEFAULT_OPACITY,
4081
+ 'base'
4082
+ );
4083
+ this._localSnapGridStyleDeferredForZoom = true;
4084
+ return true;
4085
+ }
4086
+
4005
4087
  _setLocalSnapGridVisible(visible, targetOpacity = null) {
4006
4088
  const layer = this._localSnapGridLayer;
4007
4089
  if (!layer) {
@@ -4100,51 +4182,19 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4100
4182
  )
4101
4183
  );
4102
4184
  const majorStepPx = smallStepPx * 10;
4103
- const themeName = String(this.currentThemeName || '').trim();
4104
- const styleKind = themeName === 'SpatialGrid2D' ? 'dot' : 'line';
4105
- const rawOpacity = Math.max(0.34, Math.min(0.82, cameraZ <= 1800 ? 0.72 : 0.72 - ((cameraZ - 1800) / 36000)));
4185
+ const styleKind = this._getLocalSnapGridStyleKind();
4186
+ const rawOpacity = Math.max(0.24, Math.min(0.54, cameraZ <= 1800 ? 0.48 : 0.48 - ((cameraZ - 1800) / 36000)));
4106
4187
  const opacity = Math.max(
4107
- 0.34,
4108
- Math.min(0.82, Math.round(rawOpacity / LOCAL_SNAP_GRID_OPACITY_BUCKET) * LOCAL_SNAP_GRID_OPACITY_BUCKET)
4188
+ 0.24,
4189
+ Math.min(0.54, Math.round(rawOpacity / LOCAL_SNAP_GRID_OPACITY_BUCKET) * LOCAL_SNAP_GRID_OPACITY_BUCKET)
4109
4190
  );
4110
- const localGridKey = [
4111
- styleKind,
4112
- Math.round(smallStepPx * 100),
4113
- Math.round(majorStepPx * 100),
4114
- Math.round(opacity * 100)
4115
- ].join('|');
4116
4191
  const shouldDeferLocalGridStyleForZoom =
4117
4192
  this.isZooming === true &&
4118
4193
  !!this._lastLocalSnapGridKey;
4119
4194
 
4120
- if (localGridKey !== this._lastLocalSnapGridKey &&
4121
- shouldDeferLocalGridStyleForZoom !== true) {
4195
+ if (shouldDeferLocalGridStyleForZoom !== true) {
4122
4196
  this._localSnapGridStyleDeferredForZoom = false;
4123
- this._lastLocalSnapGridKey = localGridKey;
4124
- const opacityValue = opacity.toFixed(3);
4125
- this._lastLocalSnapGridOpacity = opacityValue;
4126
- if (styleKind === 'dot') {
4127
- layer.style.backgroundImage = [
4128
- 'radial-gradient(circle at 0 0, rgba(68, 78, 94, 0.34) 1px, transparent 1.55px)',
4129
- 'radial-gradient(circle at 0 0, rgba(44, 55, 74, 0.5) 1.7px, transparent 2.2px)'
4130
- ].join(', ');
4131
- } else {
4132
- layer.style.backgroundImage = [
4133
- 'linear-gradient(to right, rgba(70, 82, 100, 0.22) 1px, transparent 1px)',
4134
- 'linear-gradient(to bottom, rgba(70, 82, 100, 0.22) 1px, transparent 1px)',
4135
- 'linear-gradient(to right, rgba(42, 55, 75, 0.36) 1px, transparent 1px)',
4136
- 'linear-gradient(to bottom, rgba(42, 55, 75, 0.36) 1px, transparent 1px)'
4137
- ].join(', ');
4138
- }
4139
- layer.style.backgroundSize = styleKind === 'dot'
4140
- ? `${smallStepPx.toFixed(3)}px ${smallStepPx.toFixed(3)}px, ${majorStepPx.toFixed(3)}px ${majorStepPx.toFixed(3)}px`
4141
- : `${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`;
4142
- layer.style.backgroundPosition = styleKind === 'dot'
4143
- ? '0 0, 0 0'
4144
- : '0 0, 0 0, 0 0, 0 0';
4145
- if (layer.style.opacity !== opacityValue) {
4146
- layer.style.opacity = opacityValue;
4147
- }
4197
+ this._applyLocalSnapGridStyle(layer, styleKind, smallStepPx, majorStepPx, opacity);
4148
4198
  } else if (shouldDeferLocalGridStyleForZoom === true) {
4149
4199
  this._localSnapGridStyleDeferredForZoom = true;
4150
4200
  }
@@ -4171,7 +4221,15 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4171
4221
  }
4172
4222
 
4173
4223
  if (!this._localSnapGridLayer?.isConnected || !this._lastLocalSnapGridKey) {
4174
- return this._syncLocalSnapGridLayer(visible);
4224
+ const layer = this._ensureLocalSnapGridLayer();
4225
+ if (!layer) {
4226
+ return false;
4227
+ }
4228
+ if (this.isZooming === true) {
4229
+ this._ensureLocalSnapGridBaseStyle(layer);
4230
+ } else {
4231
+ return this._syncLocalSnapGridLayer(visible);
4232
+ }
4175
4233
  }
4176
4234
 
4177
4235
  const layer = this._localSnapGridLayer;
@@ -6407,8 +6407,12 @@ window.MindMapInteractions = (function () {
6407
6407
  // ▼▼▼ [Perf] 줌 시작 시 isZooming 플래그 설정 및 will-change 활성화 ▼▼▼
6408
6408
  if (!module.isZooming) {
6409
6409
  module.isZooming = true;
6410
- scheduleZoomMotionChrome(module);
6411
- scheduleMotionWillChangeEnable(module);
6410
+ if (MOTION_DOM_FANOUT_ENABLED === true) {
6411
+ scheduleZoomMotionChrome(module);
6412
+ }
6413
+ if (module.renderDebugFlags?.enableCss3dWillChange === true) {
6414
+ scheduleMotionWillChangeEnable(module);
6415
+ }
6412
6416
  }
6413
6417
  // ▼▼▼ [Fix] 휠 입력 시간 기록 (줌 종료 타이밍 계산용) ▼▼▼
6414
6418
  module._zoomInputTime = performance.now();
@@ -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-ua-wheel-zoom-direct-settle-v704" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-ua-wheel-zoom-direct-settle-v704" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-local-grid-wheel-zoom-v705" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-local-grid-wheel-zoom-v705" />
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-ua-wheel-zoom-direct-settle-v704';
582
+ const scriptVersion = '20260620-local-grid-wheel-zoom-v705';
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": "sp0zMNR0",
2
+ "version": "iiECfCDe",
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-+tbg0oVHg45w3EqRroBtWvPm/O8xkG20ZhpQpNXUhPo=",
81
+ "hash": "sha256-ZD4BuG/qNa9B6cje0Prf1T9lWdnLv3azcQDqcu4LWF4=",
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-7s3ZFEQXCE1cX+sTQ033CroYRxtD5lQ5Y+FGG9NpjEU=",
109
+ "hash": "sha256-oHhdP4cltwUivQrUKDEMENUIE3cKk29F/IEk2Rg3JPM=",
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-M5iNp7FBVtopYOq0HzZUPgt+JDG+igkEAF8V6A3h2nY=",
837
+ "hash": "sha256-cT/4dyrhG2eQz7HKOf4fcBIn4qhPlMHdbA4tqQymjOQ=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: sp0zMNR0 */
1
+ /* Manifest version: iiECfCDe */
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