@mindexec/cli 0.2.259 → 0.2.261
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/server.js +1 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +54 -14
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +1 -58
- 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
package/server.js
CHANGED
|
@@ -32,7 +32,7 @@ const { normalizePort, releaseBridgePort } = portGuard;
|
|
|
32
32
|
const app = express();
|
|
33
33
|
const PORT = normalizePort(process.env.BRIDGE_PORT);
|
|
34
34
|
const BRIDGE_ROOT = path.dirname(fileURLToPath(import.meta.url));
|
|
35
|
-
const PACKAGE_INFO = JSON.parse(readFileSync(path.join(BRIDGE_ROOT, 'package.json'), 'utf8'));
|
|
35
|
+
const PACKAGE_INFO = JSON.parse(readFileSync(path.join(BRIDGE_ROOT, 'package.json'), 'utf8').replace(/^\uFEFF/, ''));
|
|
36
36
|
const BRIDGE_PACKAGE_NAME = String(PACKAGE_INFO.name || '@mindexec/cli');
|
|
37
37
|
const BRIDGE_VERSION = String(PACKAGE_INFO.version || '0.1.0');
|
|
38
38
|
const REMOTE_HUB_IDENTITY_FILE_PREFIX = 'remote-hub-identity';
|
|
@@ -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-css3d-flat-wheel-
|
|
8
|
+
const MINDMAP_CORE_BUILD_ID = '20260620-css3d-flat-wheel-v709';
|
|
9
9
|
const CanvasPhase = Object.freeze({
|
|
10
10
|
Booting: 'booting',
|
|
11
11
|
BoardFileLoading: 'board-file-loading',
|
|
@@ -513,6 +513,10 @@
|
|
|
513
513
|
);
|
|
514
514
|
}
|
|
515
515
|
|
|
516
|
+
function isLocalSnapGridOnlyTheme(module) {
|
|
517
|
+
return module?.currentThemeObject?.userData?.localSnapGrid === true;
|
|
518
|
+
}
|
|
519
|
+
|
|
516
520
|
function renderCss3dCameraForCameraNavigation(module, reason = 'camera-navigation') {
|
|
517
521
|
const renderer = module?.cssRenderer || null;
|
|
518
522
|
const camera = module?.camera || null;
|
|
@@ -557,6 +561,12 @@
|
|
|
557
561
|
module._clearWebglCanvasCameraTransform?.();
|
|
558
562
|
module._webglCameraMotionDeferred = true;
|
|
559
563
|
module._themeCameraMotionDeferred = true;
|
|
564
|
+
const frozenMode = mode || 'uaZoomFrozenWebgl';
|
|
565
|
+
if (module._lastWebglSurfaceFrozenForZoomKey === frozenMode &&
|
|
566
|
+
module._lastWebglRenderInfo?.webglSurfaceFrozenForZoom === true) {
|
|
567
|
+
return true;
|
|
568
|
+
}
|
|
569
|
+
module._lastWebglSurfaceFrozenForZoomKey = frozenMode;
|
|
560
570
|
module._lastWebglRenderInfo = {
|
|
561
571
|
calls: 0,
|
|
562
572
|
triangles: 0,
|
|
@@ -564,7 +574,7 @@
|
|
|
564
574
|
lines: 0,
|
|
565
575
|
skipped: true,
|
|
566
576
|
webglSurfaceFrozenForZoom: true,
|
|
567
|
-
[
|
|
577
|
+
[frozenMode]: true
|
|
568
578
|
};
|
|
569
579
|
return true;
|
|
570
580
|
}
|
|
@@ -3890,6 +3900,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
3890
3900
|
this._lastAnimationLoopDelayMs = 0;
|
|
3891
3901
|
this._lastAnimationWakeReason = '';
|
|
3892
3902
|
this._wheelZoomDirectSettleTimer = null;
|
|
3903
|
+
this._wheelZoomDirectSettleDueAt = 0;
|
|
3893
3904
|
// ▲▲▲ [Optimization] ▲▲▲
|
|
3894
3905
|
|
|
3895
3906
|
// ▼▼▼ [State] Loading flag (hide nodes during board load) ▼▼▼
|
|
@@ -4545,22 +4556,47 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
4545
4556
|
16,
|
|
4546
4557
|
Math.floor(Number(delayMs) || (CAMERA_ZOOM_END_DELAY_MS + 18))
|
|
4547
4558
|
);
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4559
|
+
const now = typeof performance !== 'undefined' && typeof performance.now === 'function'
|
|
4560
|
+
? performance.now()
|
|
4561
|
+
: Date.now();
|
|
4562
|
+
this._wheelZoomDirectSettleDueAt = now + safeDelayMs;
|
|
4563
|
+
|
|
4564
|
+
if (this._wheelZoomDirectSettleTimer) {
|
|
4565
|
+
return true;
|
|
4566
|
+
}
|
|
4567
|
+
|
|
4568
|
+
const scheduleSettleWake = (waitMs) => {
|
|
4569
|
+
this._wheelZoomDirectSettleTimer = setTimeout(() => {
|
|
4570
|
+
this._wheelZoomDirectSettleTimer = null;
|
|
4571
|
+
if (this.isZooming !== true) {
|
|
4572
|
+
this._wheelZoomDirectSettleDueAt = 0;
|
|
4573
|
+
return;
|
|
4574
|
+
}
|
|
4575
|
+
|
|
4576
|
+
const timerNow = typeof performance !== 'undefined' && typeof performance.now === 'function'
|
|
4577
|
+
? performance.now()
|
|
4578
|
+
: Date.now();
|
|
4579
|
+
const remainingMs = Number(this._wheelZoomDirectSettleDueAt || 0) - timerNow;
|
|
4580
|
+
if (remainingMs > 8) {
|
|
4581
|
+
scheduleSettleWake(Math.max(16, Math.min(80, remainingMs)));
|
|
4582
|
+
return;
|
|
4583
|
+
}
|
|
4584
|
+
|
|
4585
|
+
this._wheelZoomDirectSettleDueAt = 0;
|
|
4586
|
+
if (this._animationLoopRunning === true) {
|
|
4587
|
+
this.requestAnimationWake('wheel-zoom-direct-finalize');
|
|
4588
|
+
} else {
|
|
4589
|
+
this.animate();
|
|
4590
|
+
}
|
|
4591
|
+
}, Math.max(16, Math.floor(Number(waitMs) || safeDelayMs)));
|
|
4592
|
+
};
|
|
4593
|
+
|
|
4594
|
+
scheduleSettleWake(safeDelayMs);
|
|
4560
4595
|
return true;
|
|
4561
4596
|
}
|
|
4562
4597
|
|
|
4563
4598
|
clearWheelZoomDirectSettle() {
|
|
4599
|
+
this._wheelZoomDirectSettleDueAt = 0;
|
|
4564
4600
|
if (!this._wheelZoomDirectSettleTimer) {
|
|
4565
4601
|
return false;
|
|
4566
4602
|
}
|
|
@@ -6837,6 +6873,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
6837
6873
|
if (shouldFreezeWebglCanvasForImmediateZoom !== true &&
|
|
6838
6874
|
!canReuseWebglCanvasForImmediateMotion &&
|
|
6839
6875
|
renderDebugFlags.enableThemeAnimation !== false &&
|
|
6876
|
+
isLocalSnapGridOnlyTheme(this) !== true &&
|
|
6840
6877
|
this.currentThemeObject &&
|
|
6841
6878
|
typeof this.currentThemeObject.animate === 'function') {
|
|
6842
6879
|
const themeRunner = window.MindMapThemes?.runAnimationIfNeeded;
|
|
@@ -7012,6 +7049,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
7012
7049
|
if (shouldFreezeWebglCanvasForStationaryZoom !== true &&
|
|
7013
7050
|
!canReuseWebglCanvasForStationaryMotion &&
|
|
7014
7051
|
renderDebugFlags.enableThemeAnimation !== false &&
|
|
7052
|
+
isLocalSnapGridOnlyTheme(this) !== true &&
|
|
7015
7053
|
this.currentThemeObject &&
|
|
7016
7054
|
typeof this.currentThemeObject.animate === 'function') {
|
|
7017
7055
|
const themeRunner = window.MindMapThemes?.runAnimationIfNeeded;
|
|
@@ -7202,6 +7240,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
7202
7240
|
if (shouldFreezeWebglCanvasForResidentZoom !== true &&
|
|
7203
7241
|
!canReuseWebglCanvasForResidentMotion &&
|
|
7204
7242
|
renderDebugFlags.enableThemeAnimation !== false &&
|
|
7243
|
+
isLocalSnapGridOnlyTheme(this) !== true &&
|
|
7205
7244
|
this.currentThemeObject &&
|
|
7206
7245
|
typeof this.currentThemeObject.animate === 'function') {
|
|
7207
7246
|
const themeRunner = window.MindMapThemes?.runAnimationIfNeeded;
|
|
@@ -8237,6 +8276,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
|
|
|
8237
8276
|
let themeAnimatedThisFrame = false;
|
|
8238
8277
|
if (allowContinuousThemeAnimationThisFrame === true &&
|
|
8239
8278
|
(isThemeAnimationEnabled || shouldForceGpuParticleAnimation) &&
|
|
8279
|
+
isLocalSnapGridOnlyTheme(this) !== true &&
|
|
8240
8280
|
this.currentThemeObject &&
|
|
8241
8281
|
typeof this.currentThemeObject.animate === 'function') {
|
|
8242
8282
|
const forceThemeCameraUpdate =
|
|
@@ -6032,11 +6032,9 @@ window.MindMapInteractions = (function () {
|
|
|
6032
6032
|
if (!wheelBuffers.has(module)) {
|
|
6033
6033
|
wheelBuffers.set(module, {
|
|
6034
6034
|
deltaY: 0, // 누적된 deltaY
|
|
6035
|
-
notchDeltaY: 0, // 일반 마우스 휠용 계단식 zoom 누적값
|
|
6036
6035
|
lastClientX: 0, // 마지막 마우스 X 위치
|
|
6037
6036
|
lastClientY: 0, // 마지막 마우스 Y 위치
|
|
6038
6037
|
pending: false, // rAF 대기 중 여부
|
|
6039
|
-
notchPending: false, // 계단식 zoom rAF 대기 중 여부
|
|
6040
6038
|
frameId: null, // rAF ID
|
|
6041
6039
|
eventCount: 0
|
|
6042
6040
|
});
|
|
@@ -6079,9 +6077,6 @@ window.MindMapInteractions = (function () {
|
|
|
6079
6077
|
const WHEEL_ZOOM_MAX_STEP = 0.42;
|
|
6080
6078
|
const WHEEL_ZOOM_TRACKPAD_DELTA = 24;
|
|
6081
6079
|
const WHEEL_ZOOM_TRACKPAD_BOOST = 1.3;
|
|
6082
|
-
const WHEEL_ZOOM_NOTCH_DELTA = 90;
|
|
6083
|
-
const WHEEL_ZOOM_NOTCH_STEP = 0.24;
|
|
6084
|
-
const WHEEL_ZOOM_MAX_NOTCHES_PER_FRAME = 2;
|
|
6085
6080
|
const TRACKPAD_PAN_SENSITIVITY = 0.0014;
|
|
6086
6081
|
const TRACKPAD_PIXEL_DELTA_MAX = 32;
|
|
6087
6082
|
const GESTURE_SCALE_EPSILON = 0.001;
|
|
@@ -6337,53 +6332,6 @@ window.MindMapInteractions = (function () {
|
|
|
6337
6332
|
});
|
|
6338
6333
|
}
|
|
6339
6334
|
|
|
6340
|
-
function flushSteppedWheelZoomBuffer(module, wheelBuffer) {
|
|
6341
|
-
const nextAbsDelta = Math.abs(Number(wheelBuffer?.notchDeltaY || 0));
|
|
6342
|
-
if (nextAbsDelta < WHEEL_ZOOM_NOTCH_DELTA) {
|
|
6343
|
-
return;
|
|
6344
|
-
}
|
|
6345
|
-
|
|
6346
|
-
const direction = Math.sign(wheelBuffer.notchDeltaY);
|
|
6347
|
-
const notchCount = Math.min(
|
|
6348
|
-
WHEEL_ZOOM_MAX_NOTCHES_PER_FRAME,
|
|
6349
|
-
Math.max(1, Math.floor(nextAbsDelta / WHEEL_ZOOM_NOTCH_DELTA))
|
|
6350
|
-
);
|
|
6351
|
-
wheelBuffer.notchDeltaY -= direction * notchCount * WHEEL_ZOOM_NOTCH_DELTA;
|
|
6352
|
-
|
|
6353
|
-
performCameraZoomBuffered(
|
|
6354
|
-
module,
|
|
6355
|
-
direction * notchCount * WHEEL_ZOOM_NOTCH_DELTA,
|
|
6356
|
-
wheelBuffer.lastClientX,
|
|
6357
|
-
wheelBuffer.lastClientY,
|
|
6358
|
-
{
|
|
6359
|
-
fixedZoomStep: direction * notchCount * WHEEL_ZOOM_NOTCH_STEP,
|
|
6360
|
-
coalescedWheelEvents: notchCount
|
|
6361
|
-
}
|
|
6362
|
-
);
|
|
6363
|
-
|
|
6364
|
-
if (Math.abs(Number(wheelBuffer.notchDeltaY || 0)) >= WHEEL_ZOOM_NOTCH_DELTA) {
|
|
6365
|
-
scheduleWheelZoomFrame(module, wheelBuffer, () => flushSteppedWheelZoomBuffer(module, wheelBuffer));
|
|
6366
|
-
}
|
|
6367
|
-
}
|
|
6368
|
-
|
|
6369
|
-
function bufferSteppedWheelZoomEvent(module, e, analysis = null) {
|
|
6370
|
-
const wheelBuffer = getWheelBuffer(module);
|
|
6371
|
-
const normalizedDeltaY = Number((analysis || getWheelEventAnalysis(module, e)).deltaY || 0);
|
|
6372
|
-
const notchDeltaY = e?.deltaMode === 0
|
|
6373
|
-
? normalizedDeltaY
|
|
6374
|
-
: Math.sign(normalizedDeltaY) * WHEEL_ZOOM_NOTCH_DELTA;
|
|
6375
|
-
wheelBuffer.notchDeltaY += notchDeltaY;
|
|
6376
|
-
wheelBuffer.lastClientX = e.clientX;
|
|
6377
|
-
wheelBuffer.lastClientY = e.clientY;
|
|
6378
|
-
|
|
6379
|
-
const absDelta = Math.abs(wheelBuffer.notchDeltaY);
|
|
6380
|
-
if (absDelta < WHEEL_ZOOM_NOTCH_DELTA) {
|
|
6381
|
-
return;
|
|
6382
|
-
}
|
|
6383
|
-
|
|
6384
|
-
scheduleWheelZoomFrame(module, wheelBuffer, () => flushSteppedWheelZoomBuffer(module, wheelBuffer));
|
|
6385
|
-
}
|
|
6386
|
-
|
|
6387
6335
|
/**
|
|
6388
6336
|
* 버퍼된 휠 데이터로 카메라 줌 수행
|
|
6389
6337
|
* - 기존 performCameraZoom과 동일하지만 event 객체 대신 누적된 값 사용
|
|
@@ -6537,12 +6485,7 @@ window.MindMapInteractions = (function () {
|
|
|
6537
6485
|
e.preventDefault();
|
|
6538
6486
|
e.stopPropagation();
|
|
6539
6487
|
const wheelAnalysis = analysis || getWheelEventAnalysis(module, e);
|
|
6540
|
-
|
|
6541
|
-
bufferWheelEvent(module, e, wheelAnalysis);
|
|
6542
|
-
return;
|
|
6543
|
-
}
|
|
6544
|
-
|
|
6545
|
-
bufferSteppedWheelZoomEvent(module, e, wheelAnalysis);
|
|
6488
|
+
bufferWheelEvent(module, e, wheelAnalysis);
|
|
6546
6489
|
}
|
|
6547
6490
|
|
|
6548
6491
|
function isWheelZoomControlSwapEnabled(module) {
|
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-css3d-flat-wheel-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260620-css3d-flat-wheel-v709" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-flat-wheel-v709" />
|
|
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-css3d-flat-wheel-
|
|
582
|
+
const scriptVersion = '20260620-css3d-flat-wheel-v709';
|
|
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": "P7DpPAPV",
|
|
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-VSQqDmF8gC2cMS0IsTTnuFnQm8pss2rfKyko6CQONxo=",
|
|
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-o5V0YYMPabf5eB2Z/rGiGB4Ggv3HEaLsCXSq0xY4dPQ=",
|
|
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-+h/HcEGj8IvVKAVF9Qvoc9X2Tz/MYZW2L+hu3fvyKPM=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|