@mindexec/cli 0.2.302 → 0.2.303
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/css/mind-map-overrides.css +0 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +40 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +1 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +106 -1
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +6 -6
- 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-render-
|
|
8
|
+
const MINDMAP_CORE_BUILD_ID = '20260621-render-surface-v764';
|
|
9
9
|
const CanvasPhase = Object.freeze({
|
|
10
10
|
Booting: 'booting',
|
|
11
11
|
BoardFileLoading: 'board-file-loading',
|
|
@@ -3106,6 +3106,38 @@
|
|
|
3106
3106
|
]);
|
|
3107
3107
|
}
|
|
3108
3108
|
|
|
3109
|
+
function collectNodeFrameDebugVisibleGlRenderables(entry) {
|
|
3110
|
+
const root = entry?.glObject || null;
|
|
3111
|
+
if (!root?.traverse) {
|
|
3112
|
+
return [];
|
|
3113
|
+
}
|
|
3114
|
+
|
|
3115
|
+
const renderables = [];
|
|
3116
|
+
root.traverse(child => {
|
|
3117
|
+
if (!child || child === root || child.visible === false) return;
|
|
3118
|
+
|
|
3119
|
+
const isRenderable =
|
|
3120
|
+
child.isMesh === true ||
|
|
3121
|
+
child.isLine === true ||
|
|
3122
|
+
child.isLineSegments === true ||
|
|
3123
|
+
child.isSprite === true ||
|
|
3124
|
+
child.isPoints === true;
|
|
3125
|
+
if (!isRenderable) return;
|
|
3126
|
+
|
|
3127
|
+
if (child === entry?.glowMesh || String(child.name || '') === 'glow') {
|
|
3128
|
+
return;
|
|
3129
|
+
}
|
|
3130
|
+
|
|
3131
|
+
renderables.push({
|
|
3132
|
+
name: String(child.name || child.type || 'renderable'),
|
|
3133
|
+
type: String(child.type || ''),
|
|
3134
|
+
renderOrder: Number(child.renderOrder || 0)
|
|
3135
|
+
});
|
|
3136
|
+
});
|
|
3137
|
+
|
|
3138
|
+
return renderables;
|
|
3139
|
+
}
|
|
3140
|
+
|
|
3109
3141
|
function getNodeFrameDebugOverlayRects(module, nodeId) {
|
|
3110
3142
|
const normalizedId = normalizeNodeFrameDebugId(nodeId);
|
|
3111
3143
|
const cards = module?._textOverlayV2State?.cards || null;
|
|
@@ -3205,6 +3237,7 @@
|
|
|
3205
3237
|
const mediaContentRect = mediaLayout.contentRect;
|
|
3206
3238
|
const mediaGutterRects = Array.isArray(mediaLayout.gutterRects) ? mediaLayout.gutterRects : [];
|
|
3207
3239
|
const overlayRects = getNodeFrameDebugOverlayRects(module, nodeId);
|
|
3240
|
+
const visibleGlRenderables = collectNodeFrameDebugVisibleGlRenderables(entry);
|
|
3208
3241
|
const unionRect = unionNodeFrameDebugRects([
|
|
3209
3242
|
modelRect,
|
|
3210
3243
|
bodyRect,
|
|
@@ -3257,6 +3290,12 @@
|
|
|
3257
3290
|
&& wrapperElement?.style?.display !== 'none',
|
|
3258
3291
|
glVisible: entry.glObject ? entry.glObject.visible !== false : false,
|
|
3259
3292
|
bodyVisible: entry.bodyMesh ? entry.bodyMesh.visible !== false : false,
|
|
3293
|
+
cssVisibleWithGlRenderableOverlap: entry.currentType === 'CSS'
|
|
3294
|
+
&& entry.cssObject?.visible !== false
|
|
3295
|
+
&& wrapperElement?.style?.display !== 'none'
|
|
3296
|
+
&& visibleGlRenderables.length > 0,
|
|
3297
|
+
visibleGlRenderableCount: visibleGlRenderables.length,
|
|
3298
|
+
visibleGlRenderableNames: visibleGlRenderables.slice(0, 8).map(item => item.name),
|
|
3260
3299
|
cssZIndex: String(wrapperElement?.style?.zIndex || ''),
|
|
3261
3300
|
glRenderOrder: Number(entry.bodyMesh?.renderOrder ?? entry.glObject?.renderOrder ?? 0)
|
|
3262
3301
|
});
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
const CSS_IMAGE_PROMOTION_BUDGET_MS = 4;
|
|
16
16
|
const CSS_IMAGE_BLOB_CACHE_LIMIT = 160;
|
|
17
17
|
const CSS_IMAGE_DISPLAY_MAX_CONCURRENCY = 8;
|
|
18
|
-
const CSS3D_TEXT_NODE_RESOLUTION_SCALE =
|
|
18
|
+
const CSS3D_TEXT_NODE_RESOLUTION_SCALE = 3.0;
|
|
19
19
|
const CSS3D_MEDIA_NODE_RESOLUTION_SCALE = 1.0;
|
|
20
20
|
const LOOPBACK_ASSET_URL_REGEX = /^http:\/\/(?:127(?:\.\d{1,3}){3}|localhost|\[::1\])(?::\d+)?\/assets\//i;
|
|
21
21
|
let _cssImagePreviewHoldUntil = 0;
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
// ▲▲▲ [Usage] ▲▲▲
|
|
52
52
|
|
|
53
53
|
// Procedural line rendering settings
|
|
54
|
-
const LOD_RENDERER_BUILD_ID = '20260621-render-
|
|
54
|
+
const LOD_RENDERER_BUILD_ID = '20260621-render-surface-v764';
|
|
55
55
|
const DirtyKind = Object.freeze({
|
|
56
56
|
ResidentFullRebuild: 'resident-full-rebuild',
|
|
57
57
|
ResidentPatch: 'resident-patch',
|
|
@@ -2758,6 +2758,97 @@
|
|
|
2758
2758
|
// glow는 mind-map-core.js에서 카메라 거리 기반으로 관리
|
|
2759
2759
|
}
|
|
2760
2760
|
|
|
2761
|
+
_isCssModePreservedGlRenderable(entry, child) {
|
|
2762
|
+
if (!child) return false;
|
|
2763
|
+
if (child === entry?.glowMesh || String(child.name || '') === 'glow') {
|
|
2764
|
+
return true;
|
|
2765
|
+
}
|
|
2766
|
+
|
|
2767
|
+
return child.userData?.mindCanvasPreserveInCssMode === true;
|
|
2768
|
+
}
|
|
2769
|
+
|
|
2770
|
+
_setCssModeGlRenderablesHidden(entry, hidden, options = {}) {
|
|
2771
|
+
if (!entry?.glObject) return 0;
|
|
2772
|
+
|
|
2773
|
+
this._ensureNodePartCache(entry);
|
|
2774
|
+
|
|
2775
|
+
const preserveBody = options?.preserveBody === true;
|
|
2776
|
+
const markerKey = 'mindCanvasCssModeHidden';
|
|
2777
|
+
let changedCount = 0;
|
|
2778
|
+
|
|
2779
|
+
entry.glObject.traverse?.(child => {
|
|
2780
|
+
if (!child || child === entry.glObject) return;
|
|
2781
|
+
|
|
2782
|
+
const isRenderable =
|
|
2783
|
+
child.isMesh === true ||
|
|
2784
|
+
child.isLine === true ||
|
|
2785
|
+
child.isLineSegments === true ||
|
|
2786
|
+
child.isSprite === true ||
|
|
2787
|
+
child.isPoints === true;
|
|
2788
|
+
if (!isRenderable) return;
|
|
2789
|
+
|
|
2790
|
+
child.userData ||= {};
|
|
2791
|
+
|
|
2792
|
+
if (child === entry.bodyMesh && preserveBody) {
|
|
2793
|
+
if (hidden === true) {
|
|
2794
|
+
if (child.userData[markerKey] === true) {
|
|
2795
|
+
delete child.userData[markerKey];
|
|
2796
|
+
}
|
|
2797
|
+
if (child.visible !== true) {
|
|
2798
|
+
child.visible = true;
|
|
2799
|
+
changedCount++;
|
|
2800
|
+
}
|
|
2801
|
+
}
|
|
2802
|
+
return;
|
|
2803
|
+
}
|
|
2804
|
+
|
|
2805
|
+
if (this._isCssModePreservedGlRenderable(entry, child)) {
|
|
2806
|
+
return;
|
|
2807
|
+
}
|
|
2808
|
+
|
|
2809
|
+
if (hidden === true) {
|
|
2810
|
+
if (child.visible !== false) {
|
|
2811
|
+
child.userData[markerKey] = true;
|
|
2812
|
+
child.visible = false;
|
|
2813
|
+
changedCount++;
|
|
2814
|
+
}
|
|
2815
|
+
return;
|
|
2816
|
+
}
|
|
2817
|
+
|
|
2818
|
+
if (child.userData[markerKey] === true) {
|
|
2819
|
+
delete child.userData[markerKey];
|
|
2820
|
+
if (child.visible !== true) {
|
|
2821
|
+
child.visible = true;
|
|
2822
|
+
changedCount++;
|
|
2823
|
+
}
|
|
2824
|
+
}
|
|
2825
|
+
});
|
|
2826
|
+
|
|
2827
|
+
return changedCount;
|
|
2828
|
+
}
|
|
2829
|
+
|
|
2830
|
+
_restoreCssModeGlRenderables(entry) {
|
|
2831
|
+
this._setCssModeGlRenderablesHidden(entry, false);
|
|
2832
|
+
}
|
|
2833
|
+
|
|
2834
|
+
_hideGlBodyOnly(entry, options = {}) {
|
|
2835
|
+
if (!entry?.glObject) return;
|
|
2836
|
+
|
|
2837
|
+
this._ensureNodePartCache(entry);
|
|
2838
|
+
this._setCssModeGlRenderablesHidden(entry, true, options);
|
|
2839
|
+
|
|
2840
|
+
if (ENABLE_WEBGL_GLOW !== true) {
|
|
2841
|
+
entry.glObject.visible = false;
|
|
2842
|
+
return;
|
|
2843
|
+
}
|
|
2844
|
+
|
|
2845
|
+
entry.glObject.visible = true;
|
|
2846
|
+
const body = entry.bodyMesh || null;
|
|
2847
|
+
const tail = entry.tailMesh || null;
|
|
2848
|
+
if (body && options?.preserveBody !== true) body.visible = false;
|
|
2849
|
+
if (tail) tail.visible = false;
|
|
2850
|
+
}
|
|
2851
|
+
|
|
2761
2852
|
_restoreFullResMotionOptimizedNode(entry, lodBand = this._currentLodBand) {
|
|
2762
2853
|
if (!entry?.glObject) return;
|
|
2763
2854
|
|
|
@@ -4764,6 +4855,17 @@
|
|
|
4764
4855
|
child.scale?.setScalar?.(1.0);
|
|
4765
4856
|
}
|
|
4766
4857
|
});
|
|
4858
|
+
{
|
|
4859
|
+
const isImageNode = getNodeContentType(model) === 'image';
|
|
4860
|
+
const preserveImageBody =
|
|
4861
|
+
isImageNode &&
|
|
4862
|
+
entry.bodyMesh?.visible === true &&
|
|
4863
|
+
entry.model?._showImageBodyInCssMode === true;
|
|
4864
|
+
this._hideGlBodyOnly(entry, { preserveBody: preserveImageBody });
|
|
4865
|
+
if (isImageNode) {
|
|
4866
|
+
this._setImageMidDecorationVisibility(entry, false);
|
|
4867
|
+
}
|
|
4868
|
+
}
|
|
4767
4869
|
}
|
|
4768
4870
|
// ▲▲▲ [Fix] ▲▲▲
|
|
4769
4871
|
|
|
@@ -4812,6 +4914,7 @@
|
|
|
4812
4914
|
// Near 모드(LOD Off)일 때만 GL Body를 복구합니다.
|
|
4813
4915
|
if (entry.glObject && (!this.isInLODMode || entry.model?.contentType === 'image' || shouldForceMediaGlFallback)) {
|
|
4814
4916
|
this._ensureNodePartCache(entry);
|
|
4917
|
+
this._restoreCssModeGlRenderables(entry);
|
|
4815
4918
|
entry.glObject.visible = true;
|
|
4816
4919
|
const body = entry.bodyMesh || null;
|
|
4817
4920
|
const tail = entry.tailMesh || null;
|
|
@@ -4909,6 +5012,7 @@
|
|
|
4909
5012
|
child.visible = false;
|
|
4910
5013
|
}
|
|
4911
5014
|
});
|
|
5015
|
+
this._hideGlBodyOnly(entry);
|
|
4912
5016
|
}
|
|
4913
5017
|
}
|
|
4914
5018
|
|
|
@@ -9526,6 +9630,7 @@
|
|
|
9526
9630
|
|
|
9527
9631
|
if (entry.glObject) {
|
|
9528
9632
|
this._ensureNodePartCache(entry);
|
|
9633
|
+
this._restoreCssModeGlRenderables(entry);
|
|
9529
9634
|
entry.glObject.visible = true;
|
|
9530
9635
|
const body = entry.bodyMesh || null;
|
|
9531
9636
|
const tail = entry.tailMesh || null;
|
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-render-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-render-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260621-render-surface-v764" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-render-surface-v764" />
|
|
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-render-
|
|
582
|
+
const scriptVersion = '20260621-render-surface-v764';
|
|
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": "ruCzPCdj",
|
|
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-
|
|
45
|
+
"hash": "sha256-fBZF6kWiDPt1sGCsO142TDnkhyhEpqsEyhsor/tlD7s=",
|
|
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-
|
|
81
|
+
"hash": "sha256-HKwYME1RgiPDf9/sqJM9cACT6oNp0T289ABb6yhj2Do=",
|
|
82
82
|
"url": "_content/MindExecution.Shared/js/mind-map-core.js"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"url": "_content/MindExecution.Shared/js/mind-map-core.js.backup"
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
|
-
"hash": "sha256-
|
|
89
|
+
"hash": "sha256-NIcvifXg16PDsJNbK9ML9ulTLc1AythfZn++dITG33s=",
|
|
90
90
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -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-rfWvg1M/ej67E8jHQnhft3J1kl+26xCAih2xbhjdMFk=",
|
|
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-
|
|
837
|
+
"hash": "sha256-uCxwMt+KFk4zlQHx+qaZ17q6j5sRS3XOFt7RqN1OkG8=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|