@mindexec/cli 0.2.316 → 0.2.317
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 +1 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +1 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +62 -7
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +30 -2
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +5 -5
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -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-
|
|
8
|
+
const MINDMAP_CORE_BUILD_ID = '20260621-lod-exclusive-v800';
|
|
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 = '20260621-
|
|
54
|
+
const LOD_RENDERER_BUILD_ID = '20260621-lod-exclusive-v800';
|
|
55
55
|
const DirtyKind = Object.freeze({
|
|
56
56
|
ResidentFullRebuild: 'resident-full-rebuild',
|
|
57
57
|
ResidentPatch: 'resident-patch',
|
|
@@ -704,6 +704,10 @@
|
|
|
704
704
|
return false;
|
|
705
705
|
}
|
|
706
706
|
|
|
707
|
+
if (isLivePortalCssLodModel(entry?.model)) {
|
|
708
|
+
return false;
|
|
709
|
+
}
|
|
710
|
+
|
|
707
711
|
const isVisible = entry?.isVisibleInFrustum === true;
|
|
708
712
|
if (!isVisible) {
|
|
709
713
|
return false;
|
|
@@ -723,6 +727,10 @@
|
|
|
723
727
|
return false;
|
|
724
728
|
}
|
|
725
729
|
|
|
730
|
+
if (isLivePortalCssLodModel(entry?.model)) {
|
|
731
|
+
return false;
|
|
732
|
+
}
|
|
733
|
+
|
|
726
734
|
const isTextLike = isTextLikeModel(entry?.model);
|
|
727
735
|
if (!isTextLike) {
|
|
728
736
|
return false;
|
|
@@ -2717,6 +2725,44 @@
|
|
|
2717
2725
|
|
|
2718
2726
|
this._startFullResHandoff(previousBand || this._fullResHandoffPreviousBand || 'MID', 'pending-css', this._fullResPanHandoffMaxMs);
|
|
2719
2727
|
}
|
|
2728
|
+
|
|
2729
|
+
_collectResidentModeCss3dCleanupIds(nodeObjectsById) {
|
|
2730
|
+
const ids = new Set();
|
|
2731
|
+
if (!nodeObjectsById?.forEach) {
|
|
2732
|
+
return ids;
|
|
2733
|
+
}
|
|
2734
|
+
|
|
2735
|
+
nodeObjectsById.forEach((entry, key) => {
|
|
2736
|
+
if (!entry?.cssObject || isLivePortalCssLodModel(entry?.model)) {
|
|
2737
|
+
return;
|
|
2738
|
+
}
|
|
2739
|
+
|
|
2740
|
+
const element = entry.cssObject.element || null;
|
|
2741
|
+
const isAttached = !!entry.cssObject.parent;
|
|
2742
|
+
const isDisplayed = !!element &&
|
|
2743
|
+
element.style.display !== 'none' &&
|
|
2744
|
+
element.style.visibility !== 'hidden' &&
|
|
2745
|
+
element.style.opacity !== '0';
|
|
2746
|
+
const isVisible = entry.cssObject.visible === true || isAttached || isDisplayed;
|
|
2747
|
+
if (!isVisible) {
|
|
2748
|
+
return;
|
|
2749
|
+
}
|
|
2750
|
+
|
|
2751
|
+
const nodeId = String(
|
|
2752
|
+
entry.model?.id ||
|
|
2753
|
+
entry.model?.Id ||
|
|
2754
|
+
entry.glObject?.userData?.nodeId ||
|
|
2755
|
+
entry.cssObject?.userData?.nodeId ||
|
|
2756
|
+
key ||
|
|
2757
|
+
''
|
|
2758
|
+
).trim();
|
|
2759
|
+
if (nodeId) {
|
|
2760
|
+
ids.add(nodeId);
|
|
2761
|
+
}
|
|
2762
|
+
});
|
|
2763
|
+
|
|
2764
|
+
return ids;
|
|
2765
|
+
}
|
|
2720
2766
|
// ▲▲▲ [New] ▲▲▲
|
|
2721
2767
|
|
|
2722
2768
|
// ═══════════════════════════════════════════════════════════════════════
|
|
@@ -5886,6 +5932,10 @@
|
|
|
5886
5932
|
for (const nodeId of this._css3dQueuedMap.keys()) {
|
|
5887
5933
|
cssIdsToHide.add(nodeId);
|
|
5888
5934
|
}
|
|
5935
|
+
const currentNodeMap = this._module?.nodeObjectsById;
|
|
5936
|
+
for (const nodeId of this._collectResidentModeCss3dCleanupIds(currentNodeMap)) {
|
|
5937
|
+
cssIdsToHide.add(nodeId);
|
|
5938
|
+
}
|
|
5889
5939
|
this._clearCss3dQueue();
|
|
5890
5940
|
this._clearCss3dPrewarmQueue();
|
|
5891
5941
|
this._css3dProcessing = false;
|
|
@@ -5894,7 +5944,6 @@
|
|
|
5894
5944
|
|
|
5895
5945
|
// Hide only CSS3D nodes that were actually on-screen; the LOD cleanup queue
|
|
5896
5946
|
// catches any stale off-screen DOM without blocking the wheel transition.
|
|
5897
|
-
const currentNodeMap = this._module?.nodeObjectsById;
|
|
5898
5947
|
const visibleIds = this._getNearVisibleIds(module);
|
|
5899
5948
|
const prioritizedWarm = currentNodeMap && visibleIds
|
|
5900
5949
|
? this._getNearVisiblePriority(visibleIds, currentNodeMap, camera)
|
|
@@ -5908,6 +5957,7 @@
|
|
|
5908
5957
|
const entry = currentNodeMap.get(nodeId);
|
|
5909
5958
|
if (!entry) continue;
|
|
5910
5959
|
const model = entry.model;
|
|
5960
|
+
const isLivePortalCss = isLivePortalCssLodModel(model);
|
|
5911
5961
|
const shouldKeepConsoleProxy = false;
|
|
5912
5962
|
if (entry.cssObject?.element) {
|
|
5913
5963
|
this._hideAgentConsoleLodProxy(entry);
|
|
@@ -5917,21 +5967,24 @@
|
|
|
5917
5967
|
isCssMediaFallbackModel(model) &&
|
|
5918
5968
|
this._syncCssMediaLodFallback(entry, this._module);
|
|
5919
5969
|
|
|
5920
|
-
if (!
|
|
5970
|
+
if (!isLivePortalCss &&
|
|
5971
|
+
!shouldKeepConsoleProxy &&
|
|
5921
5972
|
!shouldKeepCssMediaFallback &&
|
|
5922
5973
|
entry.cssObject &&
|
|
5923
5974
|
(entry.cssObject.visible || (entry.cssObject.element && entry.cssObject.element.style.display !== 'none'))) {
|
|
5924
5975
|
this._hideNodeCss3d(entry);
|
|
5925
5976
|
}
|
|
5926
5977
|
|
|
5927
|
-
|
|
5978
|
+
if (!isLivePortalCss) {
|
|
5979
|
+
entry.currentType = 'GL';
|
|
5980
|
+
}
|
|
5928
5981
|
|
|
5929
5982
|
// Text-like nodes: hide GL body (InstancedMesh renders them)
|
|
5930
5983
|
const isTextLike = isTextLikeModel(model);
|
|
5931
5984
|
const contentType = getNodeContentType(model);
|
|
5932
5985
|
const isImage = isImageLodProxyModel(model);
|
|
5933
5986
|
const isNodeSelected = isNodeSelectedForLod(nodeId, multiSelectedIds, selectedNodeId);
|
|
5934
|
-
if (isTextLike && entry.glObject) {
|
|
5987
|
+
if (!isLivePortalCss && isTextLike && entry.glObject) {
|
|
5935
5988
|
this._hideTextLodFullVisual(entry);
|
|
5936
5989
|
} else if (isImage) {
|
|
5937
5990
|
if (shouldKeepCssMediaFallback) {
|
|
@@ -6240,6 +6293,7 @@
|
|
|
6240
6293
|
if (!entry) continue;
|
|
6241
6294
|
|
|
6242
6295
|
const model = entry.model;
|
|
6296
|
+
const isLivePortalCss = isLivePortalCssLodModel(model);
|
|
6243
6297
|
const isTextLike = isTextLikeModel(model);
|
|
6244
6298
|
const contentType = getNodeContentType(model);
|
|
6245
6299
|
const isImage = isImageLodProxyModel(model);
|
|
@@ -6251,7 +6305,8 @@
|
|
|
6251
6305
|
this._syncCssMediaLodFallback(entry, module);
|
|
6252
6306
|
|
|
6253
6307
|
// 1. Ensure CSS3D is hidden
|
|
6254
|
-
if (!
|
|
6308
|
+
if (!isLivePortalCss &&
|
|
6309
|
+
!shouldKeepConsoleProxy &&
|
|
6255
6310
|
!shouldKeepCssMediaFallback &&
|
|
6256
6311
|
entry.cssObject &&
|
|
6257
6312
|
(entry.cssObject.visible || (entry.cssObject.element && entry.cssObject.element.style.display !== 'none'))) {
|
|
@@ -6260,7 +6315,7 @@
|
|
|
6260
6315
|
}
|
|
6261
6316
|
|
|
6262
6317
|
// 2. Ensure GL Body is hidden for text-like nodes (rendered via InstancedMesh)
|
|
6263
|
-
if (isTextLike && entry.glObject) {
|
|
6318
|
+
if (!isLivePortalCss && isTextLike && entry.glObject) {
|
|
6264
6319
|
this._hideTextLodFullVisual(entry);
|
|
6265
6320
|
} else if (isImage) {
|
|
6266
6321
|
const isNodeSelected = isNodeSelectedForLod(nodeId, multiSelectedIds, selectedNodeId);
|
|
@@ -50,6 +50,34 @@
|
|
|
50
50
|
|| semanticType === REMOTE_FLEET_DEVICE_SEMANTIC_TYPE;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
function shouldAttachCss3dOnCreate(module, nodeModel) {
|
|
54
|
+
const lodRenderer = module?.lodRenderer || null;
|
|
55
|
+
if (!lodRenderer) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (isTemplateLauncherNodeModel(nodeModel)) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (lodRenderer.isInLODMode === true) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (lodRenderer.isInLODMode === false) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const cameraZ = Number(module?.camera?.position?.z ?? module?.targetZ ?? 0);
|
|
72
|
+
const thresholds = window.LODRenderer?.LOD_THRESHOLDS || null;
|
|
73
|
+
const midThreshold = Number(thresholds?.MID ?? window.LODRenderer?.LOD_THRESHOLD_NEAR ?? 4500);
|
|
74
|
+
if (Number.isFinite(cameraZ) && Number.isFinite(midThreshold) && cameraZ >= midThreshold) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
|
|
53
81
|
function getNodeMetadata(nodeModel) {
|
|
54
82
|
return nodeModel?.metadata || nodeModel?.Metadata || null;
|
|
55
83
|
}
|
|
@@ -2677,7 +2705,7 @@
|
|
|
2677
2705
|
tailMesh: glObject?.getObjectByName?.('tail') || null
|
|
2678
2706
|
// ▲▲▲ [Optimization] ▲▲▲
|
|
2679
2707
|
};
|
|
2680
|
-
const
|
|
2708
|
+
const shouldAttachCssOnCreate = shouldAttachCss3dOnCreate(module, nodeModel);
|
|
2681
2709
|
|
|
2682
2710
|
// Rich cards use CSS3D in NEAR/NORMAL so wrapper glow/selection stays consistent.
|
|
2683
2711
|
if (nodeModel.contentType === 'note' || nodeModel.contentType === 'memo' || nodeModel.contentType === 'text' || nodeModel.contentType === 'markdown' || nodeModel.contentType === 'code' || nodeModel.contentType === 'image' || nodeModel.contentType === 'video' || nodeModel.contentType === 'embed' || isTemplateLauncherNode) {
|
|
@@ -2699,7 +2727,7 @@
|
|
|
2699
2727
|
const glPos = glObject.position;
|
|
2700
2728
|
// [FIX] Parallax issue fix: Set Z to match glObject (was + 0.2)
|
|
2701
2729
|
nodeEntry.cssObject.position.set(glPos.x, glPos.y, glPos.z);
|
|
2702
|
-
const shouldAttachCss =
|
|
2730
|
+
const shouldAttachCss = shouldAttachCssOnCreate;
|
|
2703
2731
|
if (shouldAttachCss) {
|
|
2704
2732
|
(module.cssScene || module.scene).add(nodeEntry.cssObject);
|
|
2705
2733
|
window.MindMapCss3DManager?.markCssParentRepairNeeded?.(module, nodeModel.id);
|
package/wwwroot/index.html
CHANGED
|
@@ -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-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260621-lod-exclusive-v800" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-lod-exclusive-v800" />
|
|
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-
|
|
582
|
+
const scriptVersion = '20260621-lod-exclusive-v800';
|
|
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": "
|
|
2
|
+
"version": "oFe06nuY",
|
|
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-
|
|
81
|
+
"hash": "sha256-kRsyfuOJh4F1DMqO7UEaR8JC0rYX0XBU956hNAaClgc=",
|
|
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-
|
|
117
|
+
"hash": "sha256-MyAJA8eoHTu39zvVUPc1C0VoGJmZ1MRUCYP38yQT4PU=",
|
|
118
118
|
"url": "_content/MindExecution.Shared/js/mind-map-lod-renderer.js"
|
|
119
119
|
},
|
|
120
120
|
{
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"url": "_content/MindExecution.Shared/js/mind-map-node-search-worker.js"
|
|
135
135
|
},
|
|
136
136
|
{
|
|
137
|
-
"hash": "sha256-
|
|
137
|
+
"hash": "sha256-a7+COeA9L0WsbWhip+nHpv3alTeroB4ihM5VHFFEICE=",
|
|
138
138
|
"url": "_content/MindExecution.Shared/js/mind-map-nodes.js"
|
|
139
139
|
},
|
|
140
140
|
{
|
|
@@ -834,7 +834,7 @@
|
|
|
834
834
|
"url": "image-manifest.json"
|
|
835
835
|
},
|
|
836
836
|
{
|
|
837
|
-
"hash": "sha256-
|
|
837
|
+
"hash": "sha256-FxDaoGOzdh/4+K/+uj/V7ZbD6MiU5kUM95lgINsadpA=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|