@mindexec/cli 0.2.250 → 0.2.252
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 +50 -14
- package/wwwroot/_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js +37 -5
- 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-local-grid-
|
|
8
|
+
const MINDMAP_CORE_BUILD_ID = '20260620-wheel-zoom-local-grid-v699';
|
|
9
9
|
const CanvasPhase = Object.freeze({
|
|
10
10
|
Booting: 'booting',
|
|
11
11
|
BoardFileLoading: 'board-file-loading',
|
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
const CAMERA_MOTION_WEBGL_CANVAS_TRANSFORM_ENABLED = true;
|
|
115
115
|
const CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX = 0.25;
|
|
116
116
|
const CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET = 0.0005;
|
|
117
|
+
const CSS3D_FLAT_CAMERA_MOTION_ENABLED = true;
|
|
117
118
|
const CAMERA_STATIONARY_INTERACTION_FRAME_DELAY_MS = 48;
|
|
118
119
|
const CAMERA_ZOOM_END_DELAY_MS = 150;
|
|
119
120
|
const CAMERA_MOTION_GLOBAL_STYLE_CLASS_ENABLED = false;
|
|
@@ -491,10 +492,10 @@
|
|
|
491
492
|
}
|
|
492
493
|
|
|
493
494
|
// Static backgrounds can move as a single viewport surface. Continuous
|
|
494
|
-
// particle themes keep real animation
|
|
495
|
-
//
|
|
496
|
-
//
|
|
497
|
-
//
|
|
495
|
+
// particle themes keep real animation during non-zoom camera motion only
|
|
496
|
+
// when the user explicitly asks for 60fps animation; active wheel zoom
|
|
497
|
+
// freezes the WebGL surface separately so raw wheel cadence cannot be
|
|
498
|
+
// dominated by background rendering.
|
|
498
499
|
if (isContinuousBackgroundTheme(module) === true) {
|
|
499
500
|
return module?.useAnimation60Fps !== true;
|
|
500
501
|
}
|
|
@@ -505,11 +506,46 @@
|
|
|
505
506
|
function shouldFreezeWebglSurfaceForZoom(module) {
|
|
506
507
|
return !!(
|
|
507
508
|
module?.isZooming === true &&
|
|
508
|
-
module?.useAnimation60Fps !== true &&
|
|
509
509
|
module?._lastWebglRenderedCameraState
|
|
510
510
|
);
|
|
511
511
|
}
|
|
512
512
|
|
|
513
|
+
function renderCss3dCameraForCameraNavigation(module, reason = 'camera-navigation') {
|
|
514
|
+
const renderer = module?.cssRenderer || null;
|
|
515
|
+
const camera = module?.camera || null;
|
|
516
|
+
if (!renderer || !camera) {
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
const renderDebugFlags = module.renderDebugFlags || getRenderDebugFlagsSnapshot();
|
|
521
|
+
if (renderDebugFlags.enableCss3d === false) {
|
|
522
|
+
return false;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
if (CSS3D_FLAT_CAMERA_MOTION_ENABLED === true &&
|
|
526
|
+
renderDebugFlags.enableFlatCss3dCameraMotion !== false &&
|
|
527
|
+
typeof renderer.renderFlatCamera === 'function') {
|
|
528
|
+
const usedFlatCamera = renderer.renderFlatCamera(camera, {
|
|
529
|
+
translateBucketPx: CAMERA_MOTION_WEBGL_TRANSFORM_TRANSLATE_BUCKET_PX,
|
|
530
|
+
scaleBucket: CAMERA_MOTION_WEBGL_TRANSFORM_SCALE_BUCKET
|
|
531
|
+
});
|
|
532
|
+
if (usedFlatCamera === true) {
|
|
533
|
+
module._lastCss3dCameraMotionMode = 'flat';
|
|
534
|
+
module._lastCss3dCameraMotionReason = reason;
|
|
535
|
+
return true;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
if (typeof renderer.renderCamera === 'function') {
|
|
540
|
+
renderer.renderCamera(camera);
|
|
541
|
+
module._lastCss3dCameraMotionMode = 'matrix3d';
|
|
542
|
+
module._lastCss3dCameraMotionReason = reason;
|
|
543
|
+
return true;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
return false;
|
|
547
|
+
}
|
|
548
|
+
|
|
513
549
|
function markWebglSurfaceFrozenForZoom(module, mode) {
|
|
514
550
|
if (!module) {
|
|
515
551
|
return false;
|
|
@@ -1675,7 +1711,7 @@
|
|
|
1675
1711
|
|
|
1676
1712
|
module._syncMotionGridLayerForCameraNavigation?.(usedWebglCanvasCameraTransform);
|
|
1677
1713
|
module._syncLocalSnapGridPositionOnly?.(true);
|
|
1678
|
-
|
|
1714
|
+
renderCss3dCameraForCameraNavigation(module, 'ua-ultra-camera-only');
|
|
1679
1715
|
|
|
1680
1716
|
syncBusinessAutomationEdgesForCameraNavigation(module);
|
|
1681
1717
|
|
|
@@ -1898,7 +1934,7 @@
|
|
|
1898
1934
|
module._syncMotionGridLayerForCameraNavigation?.(usedWebglCanvasCameraTransform);
|
|
1899
1935
|
module._syncLocalSnapGridPositionOnly?.(true);
|
|
1900
1936
|
if (canRenderCss3dCamera === true) {
|
|
1901
|
-
|
|
1937
|
+
renderCss3dCameraForCameraNavigation(module, 'ua-ultra-resident-camera-only');
|
|
1902
1938
|
}
|
|
1903
1939
|
|
|
1904
1940
|
syncBusinessAutomationEdgesForCameraNavigation(module);
|
|
@@ -3947,7 +3983,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3947
3983
|
layer.style.willChange = 'transform, opacity';
|
|
3948
3984
|
layer.style.transform = 'translate3d(0, 0, 0)';
|
|
3949
3985
|
layer.style.transition = 'opacity 90ms linear';
|
|
3950
|
-
const mask = 'radial-gradient(circle at center, rgba(0,0,0,0.
|
|
3986
|
+
const mask = 'radial-gradient(circle at center, rgba(0,0,0,1) 0%, rgba(0,0,0,0.9) 28%, rgba(0,0,0,0.52) 50%, rgba(0,0,0,0.18) 70%, rgba(0,0,0,0.04) 86%, transparent 100%)';
|
|
3951
3987
|
layer.style.maskImage = mask;
|
|
3952
3988
|
layer.style.webkitMaskImage = mask;
|
|
3953
3989
|
|
|
@@ -6642,7 +6678,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
6642
6678
|
this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformImmediate);
|
|
6643
6679
|
this._syncLocalSnapGridPositionOnly(true);
|
|
6644
6680
|
|
|
6645
|
-
|
|
6681
|
+
renderCss3dCameraForCameraNavigation(this, 'ua-visual-only-motion');
|
|
6646
6682
|
const shouldSyncPassiveOverlayTransformDuringMotion =
|
|
6647
6683
|
isPassiveDomOverlayRuntimeEnabled === true;
|
|
6648
6684
|
if (shouldSyncPassiveOverlayTransformDuringMotion &&
|
|
@@ -6817,7 +6853,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
6817
6853
|
this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformStationary);
|
|
6818
6854
|
this._syncLocalSnapGridPositionOnly(true);
|
|
6819
6855
|
if (this.cssRenderer && typeof this.cssRenderer.renderCamera === 'function') {
|
|
6820
|
-
|
|
6856
|
+
renderCss3dCameraForCameraNavigation(this, 'ua-stationary-visual-motion');
|
|
6821
6857
|
}
|
|
6822
6858
|
syncBusinessAutomationEdgesForCameraNavigation(this, { allowDraftRender: true });
|
|
6823
6859
|
|
|
@@ -7007,7 +7043,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
7007
7043
|
|
|
7008
7044
|
this._syncLocalSnapGridPositionOnly(true);
|
|
7009
7045
|
if (shouldRenderCss3dInLodForUaResidentCameraOnly === true) {
|
|
7010
|
-
|
|
7046
|
+
renderCss3dCameraForCameraNavigation(this, 'ua-resident-visual-only-motion');
|
|
7011
7047
|
}
|
|
7012
7048
|
syncBusinessAutomationEdgesForCameraNavigation(this, { allowDraftRender: true });
|
|
7013
7049
|
_profileSection('uaResidentVisualOnlyMotion');
|
|
@@ -7253,7 +7289,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
7253
7289
|
}
|
|
7254
7290
|
|
|
7255
7291
|
this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransformEarly);
|
|
7256
|
-
|
|
7292
|
+
renderCss3dCameraForCameraNavigation(this, 'ua-early-camera-only');
|
|
7257
7293
|
_profileSection('uaEarlyCameraOnly');
|
|
7258
7294
|
|
|
7259
7295
|
const frameEnd = performance.now();
|
|
@@ -8180,7 +8216,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
8180
8216
|
if (canUseCss3dCameraFastPath) {
|
|
8181
8217
|
this._syncMotionGridLayerForCameraNavigation(usedWebglCanvasCameraTransform);
|
|
8182
8218
|
recordCameraMotionFastPathStatus(this, 'hit', 'css3d-camera-fast');
|
|
8183
|
-
|
|
8219
|
+
renderCss3dCameraForCameraNavigation(this, 'css3d-camera-fast');
|
|
8184
8220
|
}
|
|
8185
8221
|
_profileSection('css3dCamera');
|
|
8186
8222
|
// ▲▲▲ [FIX] ▲▲▲
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
function CSS3DRenderer(){
|
|
34
|
-
var _width, _height; var _widthHalf, _heightHalf; var cache = { camera:{ fov:0, style:'' }, objects: new WeakMap() };
|
|
35
|
-
var domElement = document.createElement('div'); domElement.style.overflow = 'hidden'; this.domElement = domElement;
|
|
36
|
-
var cameraElement = document.createElement('div'); cameraElement.style.webkitTransformStyle = cameraElement.style.transformStyle = 'preserve-3d'; cameraElement.style.pointerEvents = 'none'; domElement.appendChild(cameraElement);
|
|
33
|
+
function CSS3DRenderer(){
|
|
34
|
+
var _width, _height; var _widthHalf, _heightHalf; var cache = { camera:{ fov:0, style:'' }, objects: new WeakMap() };
|
|
35
|
+
var domElement = document.createElement('div'); domElement.style.overflow = 'hidden'; this.domElement = domElement;
|
|
36
|
+
var cameraElement = document.createElement('div'); cameraElement.style.webkitTransformStyle = cameraElement.style.transformStyle = 'preserve-3d'; cameraElement.style.pointerEvents = 'none'; cameraElement.style.webkitTransformOrigin = cameraElement.style.transformOrigin = '0 0'; domElement.appendChild(cameraElement);
|
|
37
37
|
|
|
38
38
|
this.getSize = function(){ return { width:_width, height:_height }; };
|
|
39
39
|
this.getCameraElement = function(){ return cameraElement; };
|
|
@@ -42,9 +42,41 @@
|
|
|
42
42
|
function getObjectCSSMatrix(matrix){ var e=matrix.elements; var m='matrix3d('+epsilon(e[0])+','+epsilon(e[1])+','+epsilon(e[2])+','+epsilon(e[3])+','+epsilon(-e[4])+','+epsilon(-e[5])+','+epsilon(-e[6])+','+epsilon(-e[7])+','+epsilon(e[8])+','+epsilon(e[9])+','+epsilon(e[10])+','+epsilon(e[11])+','+epsilon(e[12])+','+epsilon(e[13])+','+epsilon(e[14])+','+epsilon(e[15])+')'; return m; }
|
|
43
43
|
function renderObject(object, scene, camera, cameraCSSMatrix){ if (object.isCSS3DObject){ var style=getObjectCSSMatrix(object.matrixWorld); var display=object.visible ? '' : 'none'; var element=object.element; var cached=cache.objects.get(object); if (cached===undefined || cached.style!==style){ element.style.webkitTransform=element.style.transform=style; } if (cached===undefined || cached.display!==display){ element.style.display=display; } if (cached===undefined || cached.style!==style || cached.display!==display){ cache.objects.set(object, { style, display }); } if (element.parentNode !== cameraElement){ cameraElement.appendChild(element); } } for (var i=0,l=object.children.length;i<l;i++){ renderObject(object.children[i], scene, camera, cameraCSSMatrix); } }
|
|
44
44
|
function renderCameraOnly(renderer, camera){ var fov=camera.projectionMatrix.elements[5]*_heightHalf; if (cache.camera.fov!==fov){ renderer.domElement.style.webkitPerspective=renderer.domElement.style.perspective=fov+'px'; cache.camera.fov=fov; } if (camera.parent===null && camera.matrixWorldNeedsUpdate===true) camera.updateMatrixWorld(); var cameraCSSMatrix='translateZ('+fov+'px)'+getCameraCSSMatrix(camera.matrixWorldInverse); var style=cameraCSSMatrix+'translate('+_widthHalf+'px,'+_heightHalf+'px)'; if (cache.camera.style!==style){ cameraElement.style.webkitTransform=cameraElement.style.transform=style; cache.camera.style=style; } return cameraCSSMatrix; }
|
|
45
|
+
function renderFlatCameraOnly(renderer, camera, options){
|
|
46
|
+
if (!camera || !_width || !_height || !camera.isPerspectiveCamera) return false;
|
|
47
|
+
var position = camera.position || {};
|
|
48
|
+
var rotation = camera.rotation || {};
|
|
49
|
+
var cameraZ = Math.max(1, Number(position.z || 1));
|
|
50
|
+
var cameraX = Number(position.x || 0);
|
|
51
|
+
var cameraY = Number(position.y || 0);
|
|
52
|
+
var fov = Number(camera.fov || 45);
|
|
53
|
+
if (!Number.isFinite(cameraX) || !Number.isFinite(cameraY) || !Number.isFinite(cameraZ) || !Number.isFinite(fov)) return false;
|
|
54
|
+
if (Math.abs(Number(rotation.x || 0)) > 1e-5 || Math.abs(Number(rotation.y || 0)) > 1e-5 || Math.abs(Number(rotation.z || 0)) > 1e-5) return false;
|
|
55
|
+
var vfov = fov * Math.PI / 180;
|
|
56
|
+
var viewHeight = 2 * Math.tan(vfov / 2) * cameraZ;
|
|
57
|
+
var scale = _height / Math.max(1, viewHeight);
|
|
58
|
+
var translateX = _widthHalf - cameraX * scale;
|
|
59
|
+
var translateY = _heightHalf + cameraY * scale;
|
|
60
|
+
var translateBucket = Math.max(0.001, Number(options && options.translateBucketPx || 0.25));
|
|
61
|
+
var scaleBucket = Math.max(0.000001, Number(options && options.scaleBucket || 0.0005));
|
|
62
|
+
var tx = Math.round(translateX / translateBucket) * translateBucket;
|
|
63
|
+
var ty = Math.round(translateY / translateBucket) * translateBucket;
|
|
64
|
+
var s = Math.round(scale / scaleBucket) * scaleBucket;
|
|
65
|
+
var style = 'flat|'+Math.round(_width)+'|'+Math.round(_height)+'|'+Math.round(tx / translateBucket)+'|'+Math.round(ty / translateBucket)+'|'+Math.round(s / scaleBucket);
|
|
66
|
+
if (cache.camera.fov !== 0){
|
|
67
|
+
renderer.domElement.style.webkitPerspective = renderer.domElement.style.perspective = '';
|
|
68
|
+
cache.camera.fov = 0;
|
|
69
|
+
}
|
|
70
|
+
if (cache.camera.style !== style){
|
|
71
|
+
cameraElement.style.webkitTransform = cameraElement.style.transform = 'translate3d('+tx.toFixed(3)+'px,'+ty.toFixed(3)+'px,0) scale('+s.toFixed(6)+','+(-s).toFixed(6)+')';
|
|
72
|
+
cache.camera.style = style;
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
45
76
|
this.renderCamera = function(camera){ renderCameraOnly(this, camera); };
|
|
77
|
+
this.renderFlatCamera = function(camera, options){ return renderFlatCameraOnly(this, camera, options); };
|
|
46
78
|
this.render = function(scene, camera){ if (scene.autoUpdate===true) scene.updateMatrixWorld(); var cameraCSSMatrix=renderCameraOnly(this, camera); renderObject(scene, scene, camera, cameraCSSMatrix); };
|
|
47
|
-
}
|
|
79
|
+
}
|
|
48
80
|
|
|
49
81
|
window.CSS3DObject = CSS3DObject; window.CSS3DSprite = CSS3DSprite; window.CSS3DRenderer = CSS3DRenderer;
|
|
50
82
|
})();
|
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-local-grid-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-local-grid-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-wheel-zoom-local-grid-v699" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-wheel-zoom-local-grid-v699" />
|
|
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-local-grid-
|
|
582
|
+
const scriptVersion = '20260620-wheel-zoom-local-grid-v699';
|
|
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": "Ed1ZH6Ns",
|
|
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-1D8Eo9F7fkHRMUBj3KFHIEc327cNvsZX6Au7KTxoq54=",
|
|
82
82
|
"url": "_content/MindExecution.Shared/js/mind-map-core.js"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
"url": "_content/MindExecution.Shared/js/plan-master.js"
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
|
-
"hash": "sha256-
|
|
185
|
+
"hash": "sha256-zZ6nh8fh4HnO5rV//tfE4WB119Ez9Gjg26P7k0idcIE=",
|
|
186
186
|
"url": "_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js"
|
|
187
187
|
},
|
|
188
188
|
{
|
|
@@ -834,7 +834,7 @@
|
|
|
834
834
|
"url": "image-manifest.json"
|
|
835
835
|
},
|
|
836
836
|
{
|
|
837
|
-
"hash": "sha256-
|
|
837
|
+
"hash": "sha256-j7gWJiJRGm1VqT1AKNT1x23gyK8zzDo86AYXFi9ZJUY=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|