@mindexec/cli 0.2.233 → 0.2.235
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 +42 -12
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +4 -16
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +4 -4
- 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 = '20260620-
|
|
8
|
+
const MINDMAP_CORE_BUILD_ID = '20260620-zoom-grid-style-freeze-v682';
|
|
9
9
|
const CanvasPhase = Object.freeze({
|
|
10
10
|
Booting: 'booting',
|
|
11
11
|
BoardFileLoading: 'board-file-loading',
|
|
@@ -346,7 +346,10 @@
|
|
|
346
346
|
}
|
|
347
347
|
|
|
348
348
|
module._lastCursorDomPositionKey = positionKey;
|
|
349
|
-
|
|
349
|
+
if (module._lastCursorDomVisible !== visible) {
|
|
350
|
+
module._lastCursorDomVisible = visible;
|
|
351
|
+
element.style.display = visible ? 'block' : 'none';
|
|
352
|
+
}
|
|
350
353
|
if (visible) {
|
|
351
354
|
element.style.transform = `translate3d(${x.toFixed(2)}px, ${y.toFixed(2)}px, 0)`;
|
|
352
355
|
}
|
|
@@ -842,7 +845,10 @@
|
|
|
842
845
|
if (cachedWidth > 0 && cachedHeight > 0) {
|
|
843
846
|
return {
|
|
844
847
|
width: cachedWidth,
|
|
845
|
-
height: cachedHeight
|
|
848
|
+
height: cachedHeight,
|
|
849
|
+
left: Number(module?._lastViewportLeft || 0),
|
|
850
|
+
top: Number(module?._lastViewportTop || 0),
|
|
851
|
+
dpr: Math.max(1, Number(module?._lastViewportDpr || window.devicePixelRatio || 1))
|
|
846
852
|
};
|
|
847
853
|
}
|
|
848
854
|
|
|
@@ -851,13 +857,19 @@
|
|
|
851
857
|
if (cachedContainerWidth > 0 && cachedContainerHeight > 0) {
|
|
852
858
|
return {
|
|
853
859
|
width: cachedContainerWidth,
|
|
854
|
-
height: cachedContainerHeight
|
|
860
|
+
height: cachedContainerHeight,
|
|
861
|
+
left: Number(module?._lastViewportLeft || 0),
|
|
862
|
+
top: Number(module?._lastViewportTop || 0),
|
|
863
|
+
dpr: Math.max(1, Number(module?._lastViewportDpr || window.devicePixelRatio || 1))
|
|
855
864
|
};
|
|
856
865
|
}
|
|
857
866
|
|
|
858
867
|
return {
|
|
859
868
|
width: Math.max(1, Number(module?.container?.clientWidth || 0)),
|
|
860
|
-
height: Math.max(1, Number(module?.container?.clientHeight || 0))
|
|
869
|
+
height: Math.max(1, Number(module?.container?.clientHeight || 0)),
|
|
870
|
+
left: 0,
|
|
871
|
+
top: 0,
|
|
872
|
+
dpr: Math.max(1, Number(window.devicePixelRatio || 1))
|
|
861
873
|
};
|
|
862
874
|
}
|
|
863
875
|
|
|
@@ -3533,7 +3545,6 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3533
3545
|
|
|
3534
3546
|
// ▼▼▼ [Perf] Flag to track zoom state for CSS3D optimization ▼▼▼
|
|
3535
3547
|
this.isZooming = false;
|
|
3536
|
-
this._zoomEndTimer = null;
|
|
3537
3548
|
// ▲▲▲ [Perf] ▲▲▲
|
|
3538
3549
|
|
|
3539
3550
|
// ▼▼▼ [Core addition] Multi-selection and spatial grid initialization ▼▼▼
|
|
@@ -3619,6 +3630,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3619
3630
|
this._localSnapGridVisible = false;
|
|
3620
3631
|
this._lastLocalSnapGridKey = '';
|
|
3621
3632
|
this._lastLocalSnapGridTransformKey = '';
|
|
3633
|
+
this._lastLocalSnapGridOpacity = '';
|
|
3634
|
+
this._localSnapGridStyleDeferredForZoom = false;
|
|
3622
3635
|
this._lastSnapGridClientX = null;
|
|
3623
3636
|
this._lastSnapGridClientY = null;
|
|
3624
3637
|
this._animationIdleTimerId = null;
|
|
@@ -3738,24 +3751,29 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3738
3751
|
this._localSnapGridLayer = layer;
|
|
3739
3752
|
this._lastLocalSnapGridKey = '';
|
|
3740
3753
|
this._lastLocalSnapGridTransformKey = '';
|
|
3754
|
+
this._lastLocalSnapGridOpacity = '';
|
|
3755
|
+
this._localSnapGridStyleDeferredForZoom = false;
|
|
3741
3756
|
return layer;
|
|
3742
3757
|
}
|
|
3743
3758
|
|
|
3744
|
-
_setLocalSnapGridVisible(visible) {
|
|
3759
|
+
_setLocalSnapGridVisible(visible, targetOpacity = null) {
|
|
3745
3760
|
const layer = this._localSnapGridLayer;
|
|
3746
3761
|
if (!layer) {
|
|
3747
3762
|
return;
|
|
3748
3763
|
}
|
|
3749
3764
|
|
|
3750
3765
|
if (visible === true) {
|
|
3766
|
+
const opacityValue = targetOpacity == null
|
|
3767
|
+
? this._lastLocalSnapGridOpacity
|
|
3768
|
+
: String(targetOpacity);
|
|
3751
3769
|
if (this._localSnapGridVisible !== true) {
|
|
3752
3770
|
this._localSnapGridVisible = true;
|
|
3753
3771
|
if (layer.style.display !== 'block') {
|
|
3754
3772
|
layer.style.display = 'block';
|
|
3755
3773
|
}
|
|
3756
3774
|
}
|
|
3757
|
-
if (layer.style.opacity !==
|
|
3758
|
-
layer.style.opacity =
|
|
3775
|
+
if (opacityValue && layer.style.opacity !== opacityValue) {
|
|
3776
|
+
layer.style.opacity = opacityValue;
|
|
3759
3777
|
}
|
|
3760
3778
|
return;
|
|
3761
3779
|
}
|
|
@@ -3765,6 +3783,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3765
3783
|
}
|
|
3766
3784
|
|
|
3767
3785
|
this._localSnapGridVisible = false;
|
|
3786
|
+
this._localSnapGridStyleDeferredForZoom = false;
|
|
3768
3787
|
if (layer.style.opacity !== '0') {
|
|
3769
3788
|
layer.style.opacity = '0';
|
|
3770
3789
|
}
|
|
@@ -3837,9 +3856,16 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3837
3856
|
Math.round(majorStepPx * 100),
|
|
3838
3857
|
Math.round(opacity * 100)
|
|
3839
3858
|
].join('|');
|
|
3859
|
+
const shouldDeferLocalGridStyleForZoom =
|
|
3860
|
+
this.isZooming === true &&
|
|
3861
|
+
!!this._lastLocalSnapGridKey;
|
|
3840
3862
|
|
|
3841
|
-
if (localGridKey !== this._lastLocalSnapGridKey
|
|
3863
|
+
if (localGridKey !== this._lastLocalSnapGridKey &&
|
|
3864
|
+
shouldDeferLocalGridStyleForZoom !== true) {
|
|
3865
|
+
this._localSnapGridStyleDeferredForZoom = false;
|
|
3842
3866
|
this._lastLocalSnapGridKey = localGridKey;
|
|
3867
|
+
const opacityValue = opacity.toFixed(3);
|
|
3868
|
+
this._lastLocalSnapGridOpacity = opacityValue;
|
|
3843
3869
|
if (styleKind === 'dot') {
|
|
3844
3870
|
layer.style.backgroundImage = [
|
|
3845
3871
|
'radial-gradient(circle at 0 0, rgba(68, 78, 94, 0.34) 1px, transparent 1.55px)',
|
|
@@ -3859,7 +3885,11 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3859
3885
|
layer.style.backgroundPosition = styleKind === 'dot'
|
|
3860
3886
|
? '0 0, 0 0'
|
|
3861
3887
|
: '0 0, 0 0, 0 0, 0 0';
|
|
3862
|
-
layer.style.opacity
|
|
3888
|
+
if (layer.style.opacity !== opacityValue) {
|
|
3889
|
+
layer.style.opacity = opacityValue;
|
|
3890
|
+
}
|
|
3891
|
+
} else if (shouldDeferLocalGridStyleForZoom === true) {
|
|
3892
|
+
this._localSnapGridStyleDeferredForZoom = true;
|
|
3863
3893
|
}
|
|
3864
3894
|
|
|
3865
3895
|
const transformKey = `${Math.round(layerLeft * 2)}|${Math.round(layerTop * 2)}`;
|
|
@@ -3868,7 +3898,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3868
3898
|
layer.style.transform = `translate3d(${layerLeft.toFixed(2)}px, ${layerTop.toFixed(2)}px, 0)`;
|
|
3869
3899
|
}
|
|
3870
3900
|
|
|
3871
|
-
this._setLocalSnapGridVisible(true);
|
|
3901
|
+
this._setLocalSnapGridVisible(true, this._lastLocalSnapGridOpacity || opacity.toFixed(3));
|
|
3872
3902
|
return true;
|
|
3873
3903
|
}
|
|
3874
3904
|
|
|
@@ -6200,10 +6200,6 @@ window.MindMapInteractions = (function () {
|
|
|
6200
6200
|
module.isZooming = false;
|
|
6201
6201
|
clearZoomMotionChrome(module);
|
|
6202
6202
|
clearMotionWillChangeEnable(module, { disableIfIdle: true });
|
|
6203
|
-
if (module._zoomEndTimer) {
|
|
6204
|
-
clearTimeout(module._zoomEndTimer);
|
|
6205
|
-
module._zoomEndTimer = null;
|
|
6206
|
-
}
|
|
6207
6203
|
}
|
|
6208
6204
|
|
|
6209
6205
|
function applyTrackpadPanDelta(module, deltaX, deltaY) {
|
|
@@ -6348,7 +6344,6 @@ window.MindMapInteractions = (function () {
|
|
|
6348
6344
|
module._zoomInputTime = performance.now();
|
|
6349
6345
|
// ▲▲▲ [Fix] ▲▲▲
|
|
6350
6346
|
// Reset zoom fallback flag on new input
|
|
6351
|
-
module._zoomFallbackExpired = false;
|
|
6352
6347
|
// ▲▲▲ [Perf] ▲▲▲
|
|
6353
6348
|
|
|
6354
6349
|
const viewportMetrics = getCachedViewportMetrics(module);
|
|
@@ -6400,15 +6395,6 @@ window.MindMapInteractions = (function () {
|
|
|
6400
6395
|
|
|
6401
6396
|
// ▼▼▼ [Perf] 줌 종료 감지 및 CSS3D 업데이트 타이머 ▼▼▼
|
|
6402
6397
|
// 기존 타이머 취소 (연속 스크롤 감지)
|
|
6403
|
-
if (module._zoomEndTimer) {
|
|
6404
|
-
clearTimeout(module._zoomEndTimer);
|
|
6405
|
-
}
|
|
6406
|
-
|
|
6407
|
-
// Fallback timer - main detection is in animate() loop when camera stops
|
|
6408
|
-
module._zoomEndTimer = setTimeout(() => {
|
|
6409
|
-
if (!module.isZooming) return; // Already handled by animate() loop
|
|
6410
|
-
module._zoomFallbackExpired = true;
|
|
6411
|
-
}, 150);
|
|
6412
6398
|
// ▲▲▲ [Perf] ▲▲▲
|
|
6413
6399
|
|
|
6414
6400
|
if (WHEEL_PERF_DEBUG) {
|
|
@@ -6703,13 +6689,15 @@ window.MindMapInteractions = (function () {
|
|
|
6703
6689
|
return;
|
|
6704
6690
|
}
|
|
6705
6691
|
|
|
6706
|
-
notifyMindCanvasSurfaceInteraction('wheel');
|
|
6707
|
-
|
|
6708
6692
|
const wheelNow = typeof performance !== 'undefined' && typeof performance.now === 'function'
|
|
6709
6693
|
? performance.now()
|
|
6710
6694
|
: Date.now();
|
|
6711
6695
|
module._lastCanvasWheelAt = wheelNow;
|
|
6712
6696
|
window.__mindMapLastCanvasWheelAt = wheelNow;
|
|
6697
|
+
if ((wheelNow - Number(module._lastWheelSurfaceInteractionNotifyAt || 0)) >= 650) {
|
|
6698
|
+
module._lastWheelSurfaceInteractionNotifyAt = wheelNow;
|
|
6699
|
+
notifyMindCanvasSurfaceInteraction('wheel');
|
|
6700
|
+
}
|
|
6713
6701
|
|
|
6714
6702
|
if (WHEEL_DEBUG) {
|
|
6715
6703
|
if (!module._wheelDebug) {
|
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=20260620-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-zoom-grid-style-freeze-v682" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-zoom-grid-style-freeze-v682" />
|
|
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-
|
|
582
|
+
const scriptVersion = '20260620-zoom-grid-style-freeze-v682';
|
|
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": "Bb7gNuNW",
|
|
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-f21NTYhVmQcqoeMozAXBeF/XGDlYcx+EQE8RyuJVaSE=",
|
|
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-
|
|
109
|
+
"hash": "sha256-glU8Qi29dTeN+P17xuF+Nno5MLoR88v44leP9LrLAgw=",
|
|
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-
|
|
837
|
+
"hash": "sha256-Bf3v8t4sqye7cFE8ehvHN/FdvilUpZdu7Pg/xI5fAmc=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|