@mindexec/cli 0.2.233 → 0.2.234
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 +31 -11
- 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-wheel-zoom-hotpath-v681';
|
|
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,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3619
3630
|
this._localSnapGridVisible = false;
|
|
3620
3631
|
this._lastLocalSnapGridKey = '';
|
|
3621
3632
|
this._lastLocalSnapGridTransformKey = '';
|
|
3633
|
+
this._lastLocalSnapGridOpacity = '';
|
|
3622
3634
|
this._lastSnapGridClientX = null;
|
|
3623
3635
|
this._lastSnapGridClientY = null;
|
|
3624
3636
|
this._animationIdleTimerId = null;
|
|
@@ -3738,24 +3750,28 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3738
3750
|
this._localSnapGridLayer = layer;
|
|
3739
3751
|
this._lastLocalSnapGridKey = '';
|
|
3740
3752
|
this._lastLocalSnapGridTransformKey = '';
|
|
3753
|
+
this._lastLocalSnapGridOpacity = '';
|
|
3741
3754
|
return layer;
|
|
3742
3755
|
}
|
|
3743
3756
|
|
|
3744
|
-
_setLocalSnapGridVisible(visible) {
|
|
3757
|
+
_setLocalSnapGridVisible(visible, targetOpacity = null) {
|
|
3745
3758
|
const layer = this._localSnapGridLayer;
|
|
3746
3759
|
if (!layer) {
|
|
3747
3760
|
return;
|
|
3748
3761
|
}
|
|
3749
3762
|
|
|
3750
3763
|
if (visible === true) {
|
|
3764
|
+
const opacityValue = targetOpacity == null
|
|
3765
|
+
? this._lastLocalSnapGridOpacity
|
|
3766
|
+
: String(targetOpacity);
|
|
3751
3767
|
if (this._localSnapGridVisible !== true) {
|
|
3752
3768
|
this._localSnapGridVisible = true;
|
|
3753
3769
|
if (layer.style.display !== 'block') {
|
|
3754
3770
|
layer.style.display = 'block';
|
|
3755
3771
|
}
|
|
3756
3772
|
}
|
|
3757
|
-
if (layer.style.opacity !==
|
|
3758
|
-
layer.style.opacity =
|
|
3773
|
+
if (opacityValue && layer.style.opacity !== opacityValue) {
|
|
3774
|
+
layer.style.opacity = opacityValue;
|
|
3759
3775
|
}
|
|
3760
3776
|
return;
|
|
3761
3777
|
}
|
|
@@ -3840,6 +3856,8 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3840
3856
|
|
|
3841
3857
|
if (localGridKey !== this._lastLocalSnapGridKey) {
|
|
3842
3858
|
this._lastLocalSnapGridKey = localGridKey;
|
|
3859
|
+
const opacityValue = opacity.toFixed(3);
|
|
3860
|
+
this._lastLocalSnapGridOpacity = opacityValue;
|
|
3843
3861
|
if (styleKind === 'dot') {
|
|
3844
3862
|
layer.style.backgroundImage = [
|
|
3845
3863
|
'radial-gradient(circle at 0 0, rgba(68, 78, 94, 0.34) 1px, transparent 1.55px)',
|
|
@@ -3859,7 +3877,9 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3859
3877
|
layer.style.backgroundPosition = styleKind === 'dot'
|
|
3860
3878
|
? '0 0, 0 0'
|
|
3861
3879
|
: '0 0, 0 0, 0 0, 0 0';
|
|
3862
|
-
layer.style.opacity
|
|
3880
|
+
if (layer.style.opacity !== opacityValue) {
|
|
3881
|
+
layer.style.opacity = opacityValue;
|
|
3882
|
+
}
|
|
3863
3883
|
}
|
|
3864
3884
|
|
|
3865
3885
|
const transformKey = `${Math.round(layerLeft * 2)}|${Math.round(layerTop * 2)}`;
|
|
@@ -3868,7 +3888,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3868
3888
|
layer.style.transform = `translate3d(${layerLeft.toFixed(2)}px, ${layerTop.toFixed(2)}px, 0)`;
|
|
3869
3889
|
}
|
|
3870
3890
|
|
|
3871
|
-
this._setLocalSnapGridVisible(true);
|
|
3891
|
+
this._setLocalSnapGridVisible(true, this._lastLocalSnapGridOpacity || opacity.toFixed(3));
|
|
3872
3892
|
return true;
|
|
3873
3893
|
}
|
|
3874
3894
|
|
|
@@ -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-wheel-zoom-hotpath-v681" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-wheel-zoom-hotpath-v681" />
|
|
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-wheel-zoom-hotpath-v681';
|
|
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": "FOi7IcPO",
|
|
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-HAcIKHR8GNq+hp/a1I7r69dToZn+z+Vu6zQ3zo+Sin8=",
|
|
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-nKh30c9Ax0h/31FBsTI98E174o6u1tGmWFlutqKFPeU=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|