@mindexec/cli 0.2.297 → 0.2.298

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.297",
3
+ "version": "0.2.298",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -95,6 +95,22 @@ body.mind-map-scroll-locked {
95
95
  transform: translateZ(0);
96
96
  }
97
97
 
98
+ .css3d-resolution-wrapper > .map-node,
99
+ .css3d-resolution-wrapper > .map-node-bubble,
100
+ .css3d-resolution-wrapper > .map-node-note,
101
+ .css3d-resolution-wrapper > .map-node-memo,
102
+ .css3d-resolution-wrapper > .map-node-file,
103
+ .css3d-resolution-wrapper > .map-node-image,
104
+ .css3d-resolution-wrapper > .map-node-code {
105
+ contain: layout style !important;
106
+ content-visibility: visible !important;
107
+ contain-intrinsic-size: auto !important;
108
+ transform: none !important;
109
+ will-change: auto !important;
110
+ -webkit-backface-visibility: visible !important;
111
+ backface-visibility: visible !important;
112
+ }
113
+
98
114
  .css3d-resolution-wrapper.node-type-image img,
99
115
  .css3d-resolution-wrapper.node-type-video video,
100
116
  .css3d-resolution-wrapper.node-type-embed iframe,
@@ -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-resident-schema-noop-v755';
8
+ const MINDMAP_CORE_BUILD_ID = '20260620-fullres-handoff-aa-v756';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -51,7 +51,7 @@
51
51
  // ▲▲▲ [Usage] ▲▲▲
52
52
 
53
53
  // Procedural line rendering settings
54
- const LOD_RENDERER_BUILD_ID = '20260620-ua-resident-schema-noop-v755';
54
+ const LOD_RENDERER_BUILD_ID = '20260620-fullres-handoff-aa-v756';
55
55
  const DirtyKind = Object.freeze({
56
56
  ResidentFullRebuild: 'resident-full-rebuild',
57
57
  ResidentPatch: 'resident-patch',
@@ -943,6 +943,7 @@
943
943
  this._fullResHandoffMinCoverage = 0.92;
944
944
  this._fullResHandoffMaxMs = 1400;
945
945
  this._fullResPanHandoffMaxMs = 1200;
946
+ this._fullResHandoffHardMaxMs = 2600;
946
947
  this._tmpWorldPos = new THREE.Vector3();
947
948
  this._tmpWorldQuat = new THREE.Quaternion();
948
949
  this._tmpWorldScale = new THREE.Vector3();
@@ -2560,6 +2561,12 @@
2560
2561
  return;
2561
2562
  }
2562
2563
 
2564
+ emitMindCanvasTrace('lod.fullResHandoff.finish', this._module, {
2565
+ reason: String(reason || 'unknown'),
2566
+ build: LOD_RENDERER_BUILD_ID,
2567
+ previousBand: this._fullResHandoffPreviousBand || null,
2568
+ ageMs: Math.max(0, performance.now() - Number(this._fullResHandoffStartedAt || performance.now()))
2569
+ });
2563
2570
  this._fullResHandoffActive = false;
2564
2571
  this._fullResHandoffStartedAt = 0;
2565
2572
  this._fullResHandoffUntil = 0;
@@ -2582,11 +2589,13 @@
2582
2589
  let visibleCssCount = 0;
2583
2590
  let pendingCssCount = 0;
2584
2591
  let pendingImageCssCount = 0;
2592
+ let pendingNonImageCssCount = 0;
2585
2593
  for (const nodeId of visibleIds) {
2586
2594
  const entry = nodeObjectsById.get(nodeId);
2587
2595
  if (!entry || !supportsCss3dNodeModel(entry.model)) continue;
2588
2596
 
2589
2597
  eligibleCount++;
2598
+ const contentType = getNodeContentType(entry.model);
2590
2599
  const element = entry.cssObject?.element;
2591
2600
  const cssVisible =
2592
2601
  this._nearCssVisibleIds.has(nodeId) &&
@@ -2595,13 +2604,15 @@
2595
2604
  element.style.display !== 'none';
2596
2605
  if (!cssVisible) {
2597
2606
  pendingCssCount++;
2598
- if (getNodeContentType(entry.model) === 'image') {
2607
+ if (contentType === 'image') {
2599
2608
  pendingImageCssCount++;
2609
+ } else {
2610
+ pendingNonImageCssCount++;
2600
2611
  }
2601
2612
  continue;
2602
2613
  }
2603
2614
 
2604
- if (getNodeContentType(entry.model) === 'image') {
2615
+ if (contentType === 'image') {
2605
2616
  if (this._isCssImageReady(entry)) {
2606
2617
  visibleCssCount++;
2607
2618
  } else {
@@ -2623,15 +2634,30 @@
2623
2634
  this._css3dProcessing !== true &&
2624
2635
  this._nearEntryBoostFrames <= 0;
2625
2636
  const hasPendingCss = pendingCssCount > 0;
2626
- const timedOut = performance.now() >= this._fullResHandoffUntil;
2637
+ const now = performance.now();
2638
+ const timedOut = now >= this._fullResHandoffUntil;
2639
+ const handoffAgeMs = Math.max(0, now - Number(this._fullResHandoffStartedAt || now));
2640
+ const hardTimedOut = handoffAgeMs >= this._fullResHandoffHardMaxMs;
2627
2641
  const hasPendingImageCss = pendingImageCssCount > 0;
2628
- const coverageReady = coverage >= this._fullResHandoffMinCoverage && !hasPendingImageCss;
2642
+ const hasPendingNonImageCss = pendingNonImageCssCount > 0;
2643
+ const coverageReady = coverage >= this._fullResHandoffMinCoverage && !hasPendingNonImageCss;
2629
2644
  const idleReady = queueIdle && !hasPendingCss && !hasPendingImageCss;
2630
-
2631
- if (coverageReady || idleReady) {
2632
- this._finishFullResHandoff(idleReady ? 'queue-idle-all-css-visible' : 'coverage');
2645
+ const imageOnlyTimeoutReady = timedOut &&
2646
+ hasPendingImageCss &&
2647
+ !hasPendingNonImageCss &&
2648
+ visibleCssCount > 0;
2649
+ const hardTimeoutReady = hardTimedOut &&
2650
+ (coverage >= 0.5 || visibleCssCount > 0 || queueIdle);
2651
+
2652
+ if (coverageReady || idleReady || imageOnlyTimeoutReady || hardTimeoutReady) {
2653
+ this._finishFullResHandoff(
2654
+ idleReady ? 'queue-idle-all-css-visible' :
2655
+ imageOnlyTimeoutReady ? 'timeout-image-css' :
2656
+ hardTimeoutReady ? 'hard-timeout' :
2657
+ 'coverage'
2658
+ );
2633
2659
  } else {
2634
- if (timedOut && hasPendingCss) {
2660
+ if (timedOut && hasPendingCss && !hardTimedOut) {
2635
2661
  this._fullResHandoffUntil = Math.max(
2636
2662
  Number(this._fullResHandoffUntil || 0),
2637
2663
  performance.now() + this._fullResPanHandoffMaxMs
@@ -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-resident-schema-noop-v755" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-ua-resident-schema-noop-v755" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-fullres-handoff-aa-v756" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-fullres-handoff-aa-v756" />
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-resident-schema-noop-v755';
582
+ const scriptVersion = '20260620-fullres-handoff-aa-v756';
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": "YH25K8sb",
2
+ "version": "hjUfORzu",
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-zsNb+3FjEoGDJ9DgMdmdUDcqtZZutCCxWLOD11C0c00=",
45
+ "hash": "sha256-0hG8T14JPmgbOP1xbPzWCQEhkDC3SXrqlx8HoJM9e3s=",
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-nLoLyFnrQWw0WNrmyJYptH4WuiklwW9teJaA5OTkMHQ=",
81
+ "hash": "sha256-+7nR5UKQCHuP9metel5kUUQH3ymykf+dYJaI+h9qHao=",
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-M7N27m0+FOdOLRnYz1TG80HZArq4myZjBcTXBQ8awV0=",
117
+ "hash": "sha256-kmCskZhRIl7SKSFNOyOeWYPFe7pQihKx+ckVRPs++fA=",
118
118
  "url": "_content/MindExecution.Shared/js/mind-map-lod-renderer.js"
119
119
  },
120
120
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-fMClm7fwJVb8a6qwDJy0W2Yz2LFw6C1nkl0dZWgNEoA=",
837
+ "hash": "sha256-dXqSHxd8CnNzgsM5/6qkUJu1w+EwxOOcmwpMN+dTU5c=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: YH25K8sb */
1
+ /* Manifest version: hjUfORzu */
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