@mindexec/cli 0.2.338 → 0.2.340

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.338",
3
+ "version": "0.2.340",
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 = '20260621-fullres-lod-no-motion-throttle-v822';
8
+ const MINDMAP_CORE_BUILD_ID = '20260621-normal-readability-cutoff-v825';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -13,8 +13,8 @@
13
13
  // LOD thresholds (explicit bands)
14
14
  const LOD_THRESHOLDS = {
15
15
  NEAR: 4500, // ~4500: DOM overlay + CSS3D
16
- NORMAL: 12000, // 4500~12000: CSS3D only
17
- MID: 12000, // 12000~30000: instanced text lines + nodes
16
+ NORMAL: 9000, // 4500~9000: CSS3D only while text remains visually readable
17
+ MID: 9000, // 9000~30000: instanced text lines + nodes
18
18
  FAR: 30000 // 30000~: nodes only (lines hidden)
19
19
  };
20
20
 
@@ -51,7 +51,7 @@
51
51
  // ▲▲▲ [Usage] ▲▲▲
52
52
 
53
53
  // Procedural line rendering settings
54
- const LOD_RENDERER_BUILD_ID = '20260621-fullres-lod-no-motion-throttle-v822';
54
+ const LOD_RENDERER_BUILD_ID = '20260621-normal-readability-cutoff-v825';
55
55
  const DirtyKind = Object.freeze({
56
56
  ResidentFullRebuild: 'resident-full-rebuild',
57
57
  ResidentPatch: 'resident-patch',
@@ -63,15 +63,15 @@
63
63
  BoardStructure: 'board-structure',
64
64
  Unknown: 'unknown'
65
65
  });
66
- const MAX_LINE_SAMPLES = 64; // Keep MID silhouettes readable without rebuilding hundreds of samples per node.
66
+ const MAX_LINE_SAMPLES = 512; // Preserve full-height MID silhouettes for tall notes, CSV tables, and dense markdown blocks.
67
67
  const LINE_HEIGHT_PX = 21; // Match note textarea 14px * 1.5 line-height
68
68
  const LINE_PADDING_PX = 16; // Padding to match node layout
69
69
  const LOD_TEXT_LINE_HALF_THICKNESS_SCREEN_PX = 0.68; // Normalize MID line stroke by screen pixels, not world units.
70
70
  const LOD_NODE_BORDER_THICKNESS_SCREEN_PX = 1.25; // Keep MID/FAR resident node borders visually identical across bands and DPR/OS scaling.
71
71
  const LOD_SELECTED_IMAGE_BORDER_THICKNESS_SCREEN_PX = 2.7; // Selected image cards keep a thicker but screen-space-stable outline.
72
- const LOD_TEXT_LINE_OPACITY = 0.32; // Blend MID text silhouettes softly instead of lightening the line color.
73
- const LOD_NODE_BORDER_OPACITY_MID = 0.28; // Softer resident MID card edge; keeps the linework from feeling printed on top.
74
- const LOD_NODE_BORDER_OPACITY_FAR = 0.36; // FAR keeps a little more edge definition for distant navigation.
72
+ const LOD_TEXT_LINE_OPACITY = 1.0; // Keep MID text silhouettes at the original visual strength.
73
+ const LOD_NODE_BORDER_OPACITY_MID = 0.95; // Keep resident MID card edges dark instead of fading to thin gray after motion settles.
74
+ const LOD_NODE_BORDER_OPACITY_FAR = 0.95; // FAR uses the same strong edge so pan/idle handoff does not change border tone.
75
75
  const LINE_DISABLE_THRESHOLD = 20000; // Disable line rendering above this instance count (Increased from 8500)
76
76
  const POST_LOAD_LINE_RESTORE_DELAY_MS = 350; // Let the board settle before rebuilding expensive MID/FAR line silhouettes.
77
77
  const POST_LOAD_LINE_RESTORE_NODE_THRESHOLD = 300; // Small boards can restore lines immediately without a visible spike.
@@ -82,7 +82,7 @@
82
82
  const LOD_PAN_SORT_INTERVAL_MS = 48; // Keep newly exposed nodes prioritized while panning.
83
83
  const LOD_PAN_SORT_MOVE_FACTOR = 0.02;
84
84
  const USE_CONTENT_DRIVEN_LOD_LINES = true; // Use real text silhouettes in MID while keeping the work bounded.
85
- const LOD_LINE_TEXT_SAMPLE_CHARS = 6000; // Keep content-driven silhouettes bounded so idle rebuilds do not rescan huge documents.
85
+ const LOD_LINE_TEXT_SAMPLE_CHARS = 24000; // Preserve richer long-form text silhouettes; quality loss at 6k makes CSV/notes look empty.
86
86
  const FORCE_RESIDENT_INSTANCES_IN_MID_FAR = true; // MID/FAR keeps one resident draw-call and only rebuilds on real node mutations.
87
87
  const RESIDENT_FULL_REBUILD_ALLOWLIST = new Set([
88
88
  'board-load',
@@ -1841,7 +1841,7 @@
1841
1841
  const nodeMaterial = new THREE.ShaderMaterial({
1842
1842
  uniforms: {
1843
1843
  uBaseColor: { value: new THREE.Color(0xffffff) },
1844
- uDefaultBorderColor: { value: new THREE.Color(0xd1d5db) },
1844
+ uDefaultBorderColor: { value: new THREE.Color(0x1f2937) },
1845
1845
  uShowAgentBadge: { value: 0.0 },
1846
1846
  uShowFarInsetBorder: { value: 0.0 },
1847
1847
  uNodeBorderThicknessPx: { value: LOD_NODE_BORDER_THICKNESS_SCREEN_PX },
@@ -2220,7 +2220,7 @@
2220
2220
  }
2221
2221
 
2222
2222
  if (alpha < 0.01) discard;
2223
- gl_FragColor = vec4(vec3(0.34, 0.36, 0.41), alpha);
2223
+ gl_FragColor = vec4(vec3(0.4, 0.4, 0.4), alpha);
2224
2224
  }
2225
2225
  `,
2226
2226
  transparent: true,
@@ -3191,10 +3191,18 @@
3191
3191
  }
3192
3192
 
3193
3193
  const normalizedReason = String(reason || 'unknown');
3194
+ const nodeCountRebuildAllowed =
3195
+ normalizedReason.startsWith('node-count ') &&
3196
+ this._module?.isPanning !== true &&
3197
+ this._module?.isZooming !== true &&
3198
+ this._module?.isDraggingNode !== true &&
3199
+ this._module?.isDraggingMultipleNodes !== true &&
3200
+ this._module?.isResizing !== true;
3194
3201
  const allowed =
3195
3202
  this._residentBuildPhase === 'board-load' ||
3196
3203
  this._residentBuildPhase === 'initial-build' ||
3197
- RESIDENT_FULL_REBUILD_ALLOWLIST.has(normalizedReason);
3204
+ RESIDENT_FULL_REBUILD_ALLOWLIST.has(normalizedReason) ||
3205
+ nodeCountRebuildAllowed;
3198
3206
 
3199
3207
  if (!allowed) {
3200
3208
  this._logBlockedResidentFullRebuild(normalizedReason, this._module, lodBand);
@@ -265,15 +265,15 @@
265
265
  const cameraZ = Number(module?.camera?.position?.z || 0);
266
266
  const thresholds = globalThis.LODRenderer?.LOD_THRESHOLDS || {
267
267
  NEAR: 4500,
268
- NORMAL: 12000,
269
- MID: 12000,
268
+ NORMAL: 9000,
269
+ MID: 9000,
270
270
  FAR: 30000
271
271
  };
272
272
 
273
273
  if (cameraZ >= Number(thresholds.FAR || 25000)) {
274
274
  return 'FAR';
275
275
  }
276
- if (cameraZ >= Number(thresholds.MID || thresholds.NORMAL || 12000)) {
276
+ if (cameraZ >= Number(thresholds.MID || thresholds.NORMAL || 9000)) {
277
277
  return 'MID';
278
278
  }
279
279
  if (cameraZ >= Number(thresholds.NORMAL || thresholds.NEAR || 4500)) {
@@ -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=20260621-fullres-lod-no-motion-throttle-v822" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-fullres-lod-no-motion-throttle-v822" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260621-normal-readability-cutoff-v825" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-normal-readability-cutoff-v825" />
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 = '20260621-fullres-lod-no-motion-throttle-v822';
582
+ const scriptVersion = '20260621-normal-readability-cutoff-v825';
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": "WeVEVHk3",
2
+ "version": "WeFFAlEU",
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-LOfXR93RxNzg9DNFDYZTgd9mjDYJ8eAWR6cyAi9fN/0=",
81
+ "hash": "sha256-/ccymFvp6cF25PGd1xsiK4k3VZPMzG5e5q2KrFOn+QA=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -114,7 +114,7 @@
114
114
  "url": "_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js"
115
115
  },
116
116
  {
117
- "hash": "sha256-5F9mmMafjt8xKi0mGVEHhwqMttbPCzDd//aW+cW8Pm4=",
117
+ "hash": "sha256-WJaYSsYDWMFBdg7iVndNCiyUz1A7c6Jc6fX9X5kaqYQ=",
118
118
  "url": "_content/MindExecution.Shared/js/mind-map-lod-renderer.js"
119
119
  },
120
120
  {
@@ -154,7 +154,7 @@
154
154
  "url": "_content/MindExecution.Shared/js/mind-map-text-lod-system.js"
155
155
  },
156
156
  {
157
- "hash": "sha256-GSc+L9nnGTom3Ay1vGtzi4arj627Ej7slawLaOc0TAE=",
157
+ "hash": "sha256-gJ9UUM2mKVxinytFoxOtO25SkeXdlgUJZrc6bL4I2Dg=",
158
158
  "url": "_content/MindExecution.Shared/js/mind-map-text-overlay-v2.js"
159
159
  },
160
160
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-T8JJlMtnIp0O4CTKQwNsV1gn2gLF869CITLB/4n4MrY=",
837
+ "hash": "sha256-FS0EECJHnfTUWGbvhcO3NrFhOiEUxUEJbQr5JypnCP4=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: WeVEVHk3 */
1
+ /* Manifest version: WeFFAlEU */
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