@mindexec/cli 0.2.238 → 0.2.240
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 +21 -6
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +39 -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-local-grid-v687';
|
|
9
9
|
const CanvasPhase = Object.freeze({
|
|
10
10
|
Booting: 'booting',
|
|
11
11
|
BoardFileLoading: 'board-file-loading',
|
|
@@ -112,6 +112,8 @@
|
|
|
112
112
|
const CAMERA_MOTION_PARTIAL_FRAME_SKIP_ENABLED = false;
|
|
113
113
|
const CAMERA_MOTION_VISUAL_ONLY_FAST_PATH_ENABLED = true;
|
|
114
114
|
const CAMERA_MOTION_WEBGL_CANVAS_TRANSFORM_ENABLED = true;
|
|
115
|
+
const CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX = 0.25;
|
|
116
|
+
const CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET = 0.0005;
|
|
115
117
|
const CAMERA_STATIONARY_INTERACTION_FRAME_DELAY_MS = 48;
|
|
116
118
|
const CAMERA_ZOOM_END_DELAY_MS = 150;
|
|
117
119
|
const CAMERA_MOTION_GLOBAL_STYLE_CLASS_ENABLED = false;
|
|
@@ -3897,7 +3899,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3897
3899
|
layer.style.willChange = 'transform, opacity';
|
|
3898
3900
|
layer.style.transform = 'translate3d(0, 0, 0)';
|
|
3899
3901
|
layer.style.transition = 'opacity 90ms linear';
|
|
3900
|
-
const mask = 'radial-gradient(circle at center, rgba(0,0,0,0.96) 0%, rgba(0,0,0,0.
|
|
3902
|
+
const mask = 'radial-gradient(circle at center, rgba(0,0,0,0.96) 0%, rgba(0,0,0,0.82) 34%, rgba(0,0,0,0.38) 62%, rgba(0,0,0,0.10) 80%, transparent 100%)';
|
|
3901
3903
|
layer.style.maskImage = mask;
|
|
3902
3904
|
layer.style.webkitMaskImage = mask;
|
|
3903
3905
|
|
|
@@ -5042,19 +5044,32 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
5042
5044
|
const currentY = Number(camera.position?.y || 0);
|
|
5043
5045
|
const translateX = (Number(last.x || 0) - currentX) * pxPerWorld;
|
|
5044
5046
|
const translateY = (currentY - Number(last.y || 0)) * pxPerWorld;
|
|
5047
|
+
const isCameraMotion =
|
|
5048
|
+
this.isPanning === true ||
|
|
5049
|
+
this.isZooming === true ||
|
|
5050
|
+
this._cameraMovingThisFrame === true;
|
|
5051
|
+
const translateBucket = isCameraMotion
|
|
5052
|
+
? CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX
|
|
5053
|
+
: 0.01;
|
|
5054
|
+
const scaleBucket = isCameraMotion
|
|
5055
|
+
? CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET
|
|
5056
|
+
: 0.0001;
|
|
5057
|
+
const transformTranslateX = Math.round(translateX / translateBucket) * translateBucket;
|
|
5058
|
+
const transformTranslateY = Math.round(translateY / translateBucket) * translateBucket;
|
|
5059
|
+
const transformScale = Math.round(scale / scaleBucket) * scaleBucket;
|
|
5045
5060
|
const transformKey = [
|
|
5046
5061
|
Math.round(width),
|
|
5047
5062
|
Math.round(height),
|
|
5048
|
-
Math.round(
|
|
5049
|
-
Math.round(
|
|
5050
|
-
Math.round(
|
|
5063
|
+
Math.round(transformTranslateX / translateBucket),
|
|
5064
|
+
Math.round(transformTranslateY / translateBucket),
|
|
5065
|
+
Math.round(transformScale / scaleBucket)
|
|
5051
5066
|
].join('|');
|
|
5052
5067
|
|
|
5053
5068
|
if (transformKey !== this._lastWebglCanvasMotionTransformKey) {
|
|
5054
5069
|
this._lastWebglCanvasMotionTransformKey = transformKey;
|
|
5055
5070
|
element.style.transformOrigin = '50% 50%';
|
|
5056
5071
|
element.style.willChange = 'transform';
|
|
5057
|
-
element.style.transform = `translate3d(${
|
|
5072
|
+
element.style.transform = `translate3d(${transformTranslateX.toFixed(3)}px, ${transformTranslateY.toFixed(3)}px, 0) scale(${transformScale.toFixed(5)})`;
|
|
5058
5073
|
}
|
|
5059
5074
|
|
|
5060
5075
|
this._webglCanvasMotionTransformActive = true;
|
|
@@ -6666,15 +6666,49 @@ window.MindMapInteractions = (function () {
|
|
|
6666
6666
|
}
|
|
6667
6667
|
|
|
6668
6668
|
function onWheel(module, e) {
|
|
6669
|
+
const wheelNow = typeof performance !== 'undefined' && typeof performance.now === 'function'
|
|
6670
|
+
? performance.now()
|
|
6671
|
+
: Date.now();
|
|
6672
|
+
const shouldRouteWheelToZoom =
|
|
6673
|
+
isSyntheticTrackpadPinchGesture(module, e) ||
|
|
6674
|
+
shouldZoomFromWheelEvent(module, e);
|
|
6675
|
+
|
|
6676
|
+
if (shouldRouteWheelToZoom) {
|
|
6677
|
+
module._lastCanvasWheelAt = wheelNow;
|
|
6678
|
+
window.__mindMapLastCanvasWheelAt = wheelNow;
|
|
6679
|
+
if ((wheelNow - Number(module._lastWheelSurfaceInteractionNotifyAt || 0)) >= 650) {
|
|
6680
|
+
module._lastWheelSurfaceInteractionNotifyAt = wheelNow;
|
|
6681
|
+
notifyMindCanvasSurfaceInteraction('wheel');
|
|
6682
|
+
}
|
|
6683
|
+
|
|
6684
|
+
if (WHEEL_DEBUG) {
|
|
6685
|
+
if (!module._wheelDebug) {
|
|
6686
|
+
module._wheelDebug = { count: 0, lastLog: 0 };
|
|
6687
|
+
}
|
|
6688
|
+
module._wheelDebug.count++;
|
|
6689
|
+
if (wheelNow - module._wheelDebug.lastLog > 1000) {
|
|
6690
|
+
console.log(`[Wheel Debug] Events in last second: ${module._wheelDebug.count}, deltaY: ${e.deltaY.toFixed(1)}`);
|
|
6691
|
+
module._wheelDebug.count = 0;
|
|
6692
|
+
module._wheelDebug.lastLog = wheelNow;
|
|
6693
|
+
}
|
|
6694
|
+
}
|
|
6695
|
+
|
|
6696
|
+
// Zoom-mode wheel/pinch owns the canvas immediately. Do not probe
|
|
6697
|
+
// mounted embeds here; that can query DOM subtrees on every wheel tick.
|
|
6698
|
+
if (shouldBlockWheelAndGestureInteractions(module, e)) {
|
|
6699
|
+
return;
|
|
6700
|
+
}
|
|
6701
|
+
|
|
6702
|
+
routeWheelEventToZoom(module, e);
|
|
6703
|
+
return;
|
|
6704
|
+
}
|
|
6705
|
+
|
|
6669
6706
|
if (e?.__mindMapBypassMountedEmbedOwner !== true &&
|
|
6670
6707
|
shouldLetMountedEmbedOwnEvent(module, e.target, e)) {
|
|
6671
6708
|
e.stopPropagation();
|
|
6672
6709
|
return;
|
|
6673
6710
|
}
|
|
6674
6711
|
|
|
6675
|
-
const wheelNow = typeof performance !== 'undefined' && typeof performance.now === 'function'
|
|
6676
|
-
? performance.now()
|
|
6677
|
-
: Date.now();
|
|
6678
6712
|
module._lastCanvasWheelAt = wheelNow;
|
|
6679
6713
|
window.__mindMapLastCanvasWheelAt = wheelNow;
|
|
6680
6714
|
if ((wheelNow - Number(module._lastWheelSurfaceInteractionNotifyAt || 0)) >= 650) {
|
|
@@ -6687,11 +6721,10 @@ window.MindMapInteractions = (function () {
|
|
|
6687
6721
|
module._wheelDebug = { count: 0, lastLog: 0 };
|
|
6688
6722
|
}
|
|
6689
6723
|
module._wheelDebug.count++;
|
|
6690
|
-
|
|
6691
|
-
if (now - module._wheelDebug.lastLog > 1000) {
|
|
6724
|
+
if (wheelNow - module._wheelDebug.lastLog > 1000) {
|
|
6692
6725
|
console.log(`[Wheel Debug] Events in last second: ${module._wheelDebug.count}, deltaY: ${e.deltaY.toFixed(1)}`);
|
|
6693
6726
|
module._wheelDebug.count = 0;
|
|
6694
|
-
module._wheelDebug.lastLog =
|
|
6727
|
+
module._wheelDebug.lastLog = wheelNow;
|
|
6695
6728
|
}
|
|
6696
6729
|
}
|
|
6697
6730
|
|
|
@@ -6701,11 +6734,6 @@ window.MindMapInteractions = (function () {
|
|
|
6701
6734
|
return;
|
|
6702
6735
|
}
|
|
6703
6736
|
|
|
6704
|
-
if (isSyntheticTrackpadPinchGesture(module, e)) {
|
|
6705
|
-
routeWheelEventToZoom(module, e);
|
|
6706
|
-
return;
|
|
6707
|
-
}
|
|
6708
|
-
|
|
6709
6737
|
// On Windows/Linux, only clear two-axis trackpad gestures bypass the
|
|
6710
6738
|
// wheel-mode toggle. Vertical-only wheel input should still respect the
|
|
6711
6739
|
// selected mode so high-resolution mouse wheels do not get stuck in the
|
|
@@ -6720,11 +6748,6 @@ window.MindMapInteractions = (function () {
|
|
|
6720
6748
|
return;
|
|
6721
6749
|
}
|
|
6722
6750
|
|
|
6723
|
-
if (shouldZoomFromWheelEvent(module, e)) {
|
|
6724
|
-
routeWheelEventToZoom(module, e);
|
|
6725
|
-
return;
|
|
6726
|
-
}
|
|
6727
|
-
|
|
6728
6751
|
if (tryHandleScrollableWheelEvent(module, e)) {
|
|
6729
6752
|
return;
|
|
6730
6753
|
}
|
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-local-grid-v687" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-wheel-local-grid-v687" />
|
|
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-local-grid-v687';
|
|
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": "I0AXIJjK",
|
|
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-8p7OvkuyBw73fQofCagjgfFiJjChW3CNNjVXLPnB4gI=",
|
|
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-CNFAbroIc1sRloZZTfPr2wr6PWnPsklh0E6wdI6VFM8=",
|
|
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-nh71RuG23un6F40UEbFST44+bBlneJzI8Iq89UahHPQ=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|